move around - flatter.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 17 Aug 2008 07:44:18 +0000 (07:44 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 17 Aug 2008 07:44:18 +0000 (07:44 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@35497 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

296 files changed:
.cvsignore [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYING-PLAIN [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
Doxyfile [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NEWS [new file with mode: 0644]
README.in [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.in [new file with mode: 0644]
debian/.cvsignore [new file with mode: 0644]
debian/changelog.in [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/ecore_config.1 [new file with mode: 0644]
debian/libecore-bin.install [new file with mode: 0644]
debian/libecore-con0.install [new file with mode: 0644]
debian/libecore-config0.install [new file with mode: 0644]
debian/libecore-dev.install [new file with mode: 0644]
debian/libecore-evas0.install [new file with mode: 0644]
debian/libecore-fb0.install [new file with mode: 0644]
debian/libecore-file0.install [new file with mode: 0644]
debian/libecore-imf-evas0.install [new file with mode: 0644]
debian/libecore-imf0.install [new file with mode: 0644]
debian/libecore-ipc0.install [new file with mode: 0644]
debian/libecore-job0.install [new file with mode: 0644]
debian/libecore-txt0.install [new file with mode: 0644]
debian/libecore-x0.install [new file with mode: 0644]
debian/libecore0.install [new file with mode: 0644]
debian/rules [new file with mode: 0644]
doc/.cvsignore [new file with mode: 0644]
doc/e.css [new file with mode: 0644]
doc/ecore.css [new file with mode: 0644]
doc/foot.html [new file with mode: 0644]
doc/head.html [new file with mode: 0644]
doc/img/_.gif [new file with mode: 0644]
doc/img/b.png [new file with mode: 0644]
doc/img/ecore.png [new file with mode: 0644]
doc/img/ecore.xcf [new file with mode: 0644]
doc/img/ecore_big.eps [new file with mode: 0644]
doc/img/ecore_big.png [new file with mode: 0644]
doc/img/ecore_mini.png [new file with mode: 0644]
doc/img/ecore_small.png [new file with mode: 0644]
doc/img/hilite.png [new file with mode: 0644]
doc/img/n.gif [new file with mode: 0644]
doc/img/n.png [new file with mode: 0644]
doc/img/prog_flow.png [new file with mode: 0644]
doc/img/t.gif [new file with mode: 0644]
doc/img/t.png [new file with mode: 0644]
doc/img/tl.gif [new file with mode: 0644]
doc/img/tl.png [new file with mode: 0644]
ecore-con.pc.in [new file with mode: 0644]
ecore-config.pc.in [new file with mode: 0644]
ecore-dbus.pc.in [new file with mode: 0644]
ecore-desktop.pc.in [new file with mode: 0644]
ecore-directfb.pc.in [new file with mode: 0644]
ecore-evas.pc.in [new file with mode: 0644]
ecore-fb.pc.in [new file with mode: 0644]
ecore-file.pc.in [new file with mode: 0644]
ecore-imf-evas.pc.in [new file with mode: 0644]
ecore-imf.pc.in [new file with mode: 0644]
ecore-ipc.pc.in [new file with mode: 0644]
ecore-job.pc.in [new file with mode: 0644]
ecore-sdl.pc.in [new file with mode: 0644]
ecore-txt.pc.in [new file with mode: 0644]
ecore-win32.pc.in [new file with mode: 0644]
ecore-wince.pc.in [new file with mode: 0644]
ecore-x.pc.in [new file with mode: 0644]
ecore.c.in [new file with mode: 0644]
ecore.pc.in [new file with mode: 0644]
ecore.spec.in [new file with mode: 0644]
ecore.supp [new file with mode: 0644]
gendoc [new file with mode: 0755]
m4/ac_abstract_socket.m4 [new file with mode: 0644]
m4/ac_attribute.m4 [new file with mode: 0644]
m4/check_x_extension.m4 [new file with mode: 0644]
m4/ecore_check_module.m4 [new file with mode: 0644]
src/.cvsignore [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/bin/.cvsignore [new file with mode: 0644]
src/bin/Makefile.am [new file with mode: 0644]
src/bin/ecore_config.c [new file with mode: 0644]
src/lib/.cvsignore [new file with mode: 0644]
src/lib/Makefile.am [new file with mode: 0644]
src/lib/ecore/.cvsignore [new file with mode: 0644]
src/lib/ecore/Ecore.h [new file with mode: 0644]
src/lib/ecore/Ecore_Data.h [new file with mode: 0644]
src/lib/ecore/Ecore_Str.h [new file with mode: 0644]
src/lib/ecore/Makefile.am [new file with mode: 0644]
src/lib/ecore/ecore.c [new file with mode: 0644]
src/lib/ecore/ecore_anim.c [new file with mode: 0644]
src/lib/ecore/ecore_app.c [new file with mode: 0644]
src/lib/ecore/ecore_events.c [new file with mode: 0644]
src/lib/ecore/ecore_exe.c [new file with mode: 0644]
src/lib/ecore/ecore_hash.c [new file with mode: 0644]
src/lib/ecore/ecore_idle_enterer.c [new file with mode: 0644]
src/lib/ecore/ecore_idle_exiter.c [new file with mode: 0644]
src/lib/ecore/ecore_idler.c [new file with mode: 0644]
src/lib/ecore/ecore_list.c [new file with mode: 0644]
src/lib/ecore/ecore_main.c [new file with mode: 0644]
src/lib/ecore/ecore_path.c [new file with mode: 0644]
src/lib/ecore/ecore_plugin.c [new file with mode: 0644]
src/lib/ecore/ecore_poll.c [new file with mode: 0644]
src/lib/ecore/ecore_private.h [new file with mode: 0644]
src/lib/ecore/ecore_sheap.c [new file with mode: 0644]
src/lib/ecore/ecore_signal.c [new file with mode: 0644]
src/lib/ecore/ecore_str.c [new file with mode: 0644]
src/lib/ecore/ecore_strbuf.c [new file with mode: 0644]
src/lib/ecore/ecore_strings.c [new file with mode: 0644]
src/lib/ecore/ecore_time.c [new file with mode: 0644]
src/lib/ecore/ecore_timer.c [new file with mode: 0644]
src/lib/ecore/ecore_tree.c [new file with mode: 0644]
src/lib/ecore/ecore_value.c [new file with mode: 0644]
src/lib/ecore_con/.cvsignore [new file with mode: 0644]
src/lib/ecore_con/Ecore_Con.h [new file with mode: 0644]
src/lib/ecore_con/Makefile.am [new file with mode: 0644]
src/lib/ecore_con/ecore_con.c [new file with mode: 0644]
src/lib/ecore_con/ecore_con_dns.c [new file with mode: 0644]
src/lib/ecore_con/ecore_con_private.h [new file with mode: 0644]
src/lib/ecore_con/ecore_con_url.c [new file with mode: 0644]
src/lib/ecore_config/.cvsignore [new file with mode: 0644]
src/lib/ecore_config/Ecore_Config.h [new file with mode: 0644]
src/lib/ecore_config/Makefile.am [new file with mode: 0644]
src/lib/ecore_config/ecore_config.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_db.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_extra.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_ipc.h [new file with mode: 0644]
src/lib/ecore_config/ecore_config_ipc_ecore.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_ipc_main.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_private.h [new file with mode: 0644]
src/lib/ecore_config/ecore_config_storage.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_util.c [new file with mode: 0644]
src/lib/ecore_config/ecore_config_util.h [new file with mode: 0644]
src/lib/ecore_desktop/.cvsignore [new file with mode: 0644]
src/lib/ecore_desktop/Ecore_Desktop.h [new file with mode: 0644]
src/lib/ecore_desktop/Makefile.am [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop.c [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_icon.c [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_menu.c [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_paths.c [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_private.h [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_tree.c [new file with mode: 0644]
src/lib/ecore_desktop/ecore_desktop_xmlame.c [new file with mode: 0644]
src/lib/ecore_directfb/.cvsignore [new file with mode: 0644]
src/lib/ecore_directfb/Ecore_DirectFB.h [new file with mode: 0644]
src/lib/ecore_directfb/Makefile.am [new file with mode: 0644]
src/lib/ecore_directfb/ecore_directfb.c [new file with mode: 0644]
src/lib/ecore_directfb/ecore_directfb_keys.h [new file with mode: 0644]
src/lib/ecore_directfb/ecore_directfb_private.h [new file with mode: 0644]
src/lib/ecore_evas/.cvsignore [new file with mode: 0644]
src/lib/ecore_evas/Ecore_Evas.h [new file with mode: 0644]
src/lib/ecore_evas/Makefile.am [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_buffer.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_directfb.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_fb.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_private.h [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_sdl.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_win32.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_wince.c [new file with mode: 0644]
src/lib/ecore_evas/ecore_evas_x.c [new file with mode: 0644]
src/lib/ecore_fb/.cvsignore [new file with mode: 0644]
src/lib/ecore_fb/Ecore_Fb.h [new file with mode: 0644]
src/lib/ecore_fb/Makefile.am [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb.c [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_kbd.c [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_keytable.h [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_li.c [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_private.h [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_ps2.c [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_ts.c [new file with mode: 0644]
src/lib/ecore_fb/ecore_fb_vt.c [new file with mode: 0644]
src/lib/ecore_file/.cvsignore [new file with mode: 0644]
src/lib/ecore_file/Ecore_File.h [new file with mode: 0644]
src/lib/ecore_file/Makefile.am [new file with mode: 0644]
src/lib/ecore_file/ecore_file.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_download.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_monitor.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_monitor_inotify.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_monitor_poll.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_path.c [new file with mode: 0644]
src/lib/ecore_file/ecore_file_private.h [new file with mode: 0644]
src/lib/ecore_file/ecore_file_utils.c [new file with mode: 0644]
src/lib/ecore_imf/.cvsignore [new file with mode: 0644]
src/lib/ecore_imf/Ecore_IMF.h [new file with mode: 0644]
src/lib/ecore_imf/Makefile.am [new file with mode: 0644]
src/lib/ecore_imf/ecore_imf.c [new file with mode: 0644]
src/lib/ecore_imf/ecore_imf_context.c [new file with mode: 0644]
src/lib/ecore_imf/ecore_imf_module.c [new file with mode: 0644]
src/lib/ecore_imf/ecore_imf_private.h [new file with mode: 0644]
src/lib/ecore_imf_evas/.cvsignore [new file with mode: 0644]
src/lib/ecore_imf_evas/Ecore_IMF_Evas.h [new file with mode: 0644]
src/lib/ecore_imf_evas/Makefile.am [new file with mode: 0644]
src/lib/ecore_imf_evas/ecore_imf_evas.c [new file with mode: 0644]
src/lib/ecore_ipc/.cvsignore [new file with mode: 0644]
src/lib/ecore_ipc/Ecore_Ipc.h [new file with mode: 0644]
src/lib/ecore_ipc/Makefile.am [new file with mode: 0644]
src/lib/ecore_ipc/ecore_ipc.c [new file with mode: 0644]
src/lib/ecore_ipc/ecore_ipc_private.h [new file with mode: 0644]
src/lib/ecore_job/.cvsignore [new file with mode: 0644]
src/lib/ecore_job/Ecore_Job.h [new file with mode: 0644]
src/lib/ecore_job/Makefile.am [new file with mode: 0644]
src/lib/ecore_job/ecore_job.c [new file with mode: 0644]
src/lib/ecore_job/ecore_job_private.h [new file with mode: 0644]
src/lib/ecore_sdl/.cvsignore [new file with mode: 0644]
src/lib/ecore_sdl/Ecore_Sdl.h [new file with mode: 0644]
src/lib/ecore_sdl/Ecore_Sdl_Keys.h [new file with mode: 0644]
src/lib/ecore_sdl/Makefile.am [new file with mode: 0644]
src/lib/ecore_sdl/ecore_sdl.c [new file with mode: 0644]
src/lib/ecore_txt/.cvsignore [new file with mode: 0644]
src/lib/ecore_txt/Ecore_Txt.h [new file with mode: 0644]
src/lib/ecore_txt/Makefile.am [new file with mode: 0644]
src/lib/ecore_txt/ecore_txt.c [new file with mode: 0644]
src/lib/ecore_txt/ecore_txt_private.h [new file with mode: 0644]
src/lib/ecore_win32/.cvsignore [new file with mode: 0644]
src/lib/ecore_win32/Ecore_Win32.h [new file with mode: 0644]
src/lib/ecore_win32/Makefile.am [new file with mode: 0644]
src/lib/ecore_win32/ecore_win32.c [new file with mode: 0644]
src/lib/ecore_win32/ecore_win32_cursor.c [new file with mode: 0644]
src/lib/ecore_win32/ecore_win32_event.c [new file with mode: 0644]
src/lib/ecore_win32/ecore_win32_private.h [new file with mode: 0644]
src/lib/ecore_win32/ecore_win32_window.c [new file with mode: 0644]
src/lib/ecore_wince/.cvsignore [new file with mode: 0644]
src/lib/ecore_wince/Ecore_WinCE.h [new file with mode: 0644]
src/lib/ecore_wince/Makefile.am [new file with mode: 0644]
src/lib/ecore_wince/ecore_wince.c [new file with mode: 0644]
src/lib/ecore_wince/ecore_wince_event.c [new file with mode: 0644]
src/lib/ecore_wince/ecore_wince_private.h [new file with mode: 0644]
src/lib/ecore_wince/ecore_wince_window.c [new file with mode: 0644]
src/lib/ecore_x/.cvsignore [new file with mode: 0644]
src/lib/ecore_x/Ecore_X.h [new file with mode: 0644]
src/lib/ecore_x/Ecore_X_Atoms.h [new file with mode: 0644]
src/lib/ecore_x/Ecore_X_Cursor.h [new file with mode: 0644]
src/lib/ecore_x/Makefile.am [new file with mode: 0644]
src/lib/ecore_x/ecore_x_atoms_decl.h [new file with mode: 0644]
src/lib/ecore_x/xcb/.cvsignore [new file with mode: 0644]
src/lib/ecore_x/xcb/Makefile.am [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_atom.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_composite.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_cursor.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_damage.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_dnd.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_dpms.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_drawable.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_e.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_events.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_fixes.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_gc.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_icccm.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_mwm.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_netwm.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_pixmap.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_private.h [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_randr.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_reply.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_screensaver.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_selection.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_shape.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_sync.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_window.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_window_prop.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_window_shadow.c [new file with mode: 0644]
src/lib/ecore_x/xcb/ecore_xcb_xinerama.c [new file with mode: 0644]
src/lib/ecore_x/xlib/.cvsignore [new file with mode: 0644]
src/lib/ecore_x/xlib/Makefile.am [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_atoms.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_composite.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_cursor.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_damage.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_dnd.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_dpms.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_drawable.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_e.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_error.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_events.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_fixes.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_gc.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_icccm.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_mwm.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_netwm.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_pixmap.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_private.h [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_randr.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_screensaver.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_selection.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_sync.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_test.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_window.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_window_prop.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_window_shape.c [new file with mode: 0644]
src/lib/ecore_x/xlib/ecore_x_xinerama.c [new file with mode: 0644]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..1c7016b
--- /dev/null
@@ -0,0 +1,31 @@
+Makefile
+Makefile.in
+aclocal.m4
+build-stamp
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+configure-stamp
+depcomp
+ecore-config
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+stamp-h
+stamp-h.in
+autom4te.cache
+stamp-h1
+doc
+*.tar.gz
+README
+*.oe
+*.bb
+*.spec
+*.pc
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..4968fd8
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,21 @@
+The Rasterman <raster@rasterman.com>
+Tom Gilbert <tom@linuxbrit.co.uk>
+Burra <burra@colorado.edu>
+Chris Ross <chris@darkrock.co.uk>
+Term <term@twistedpath.org>
+Tilman Sauerbeck <tilman@code-monkey.de>
+Ibukun Olumuyiwa <ibukun@computer.org>
+Yuri <da2001@hotmail.ru>
+Nicholas Curran <quasar@bigblue.net.au>
+Howell Tam <pigeon@pigeond.net>
+Nathan Ingersoll <rbdpngn@users.sourceforge.net>
+Andrew Elcock <andy@elcock.org>
+Kim Woelders <kim@woelders.dk>
+Sebastian Dransfeld <sebastid@tango.flipp.net>
+Simon Poole <simon.armlinux@themalago.net>
+Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
+dan sinclair <zero@everburning.com>
+Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
+David 'onefang' Seikel <onefang@gmail.com>
+Hisham 'CodeWarrior' Mardam Bey <hisham@hisham.cc>
+Brian 'rephorm' Mattern <rephorm@rephorm.com>
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..dee3047
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,20 @@
+Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+  
+The above copyright notice and this permission notice shall be included in
+all copies of the Software, its documentation and marketing & publicity 
+materials, and acknowledgment shall be given in the documentation, materials
+and software packages that this Software was used.
+   
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/COPYING-PLAIN b/COPYING-PLAIN
new file mode 100644 (file)
index 0000000..376875e
--- /dev/null
@@ -0,0 +1,33 @@
+Plain English Copyright Notice
+
+This file is not intended to be the actual License. The reason this file
+exists is that we here are programmers and engineers. We aren't lawyers. We
+provide licenses that we THINK say the right things, but we have our own
+intentions at heart. This is a plain-english explanation of what those
+intentions are, and if you follow them you will be within the "spirit" of
+the license.
+
+The intent is for us to enjoy writing software that is useful to us (the
+AUTHORS) and allow others to use it freely and also benefit from the work we
+put into making it. We don't want to restrict others using it. They should
+not *HAVE* to make the source code of the applications they write that
+simply link to these libraries (be that statically or dynamically), or for
+them to be limited as to what license they choose to use (be it open, closed
+or anything else). But we would like to know you are using these libraries.
+We simply would like to know that it has been useful to someone. This is why
+we ask for acknowledgement of some sort.
+
+You can do what you want with the source of this software - it doesn't
+matter. We still have it here for ourselves and it is open and free to use
+and download and play with. It can't be taken away. We don't really mind what
+you do with the source to your software. We would simply like to know that
+you are using it - especially if it makes it to a commerical product. If you
+simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and
+then make sure you include a paragraph or page in the manual for the product
+with the copyright notice and state that you used this software, we will be
+very happy. If you want to contribute back modifications and fixes you may have
+made we will welcome those too with open arms (generally). If you want help
+with changes needed, ports needed or features to be added, arrangements can
+be easily made with some dialogue.
+
+Carsten Haitzler <raster@rasterman.com>
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..ee16b53
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,4 @@
+Wed Jun  8 16:56:30 2005                        Michael Jennings (mej)
+
+Fix spec file.
+----------------------------------------------------------------------
diff --git a/Doxyfile b/Doxyfile
new file mode 100644 (file)
index 0000000..d764190
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,139 @@
+PROJECT_NAME           = Ecore
+PROJECT_NUMBER         =
+OUTPUT_DIRECTORY       = doc
+INPUT                  = ecore.c.in ./src/lib
+IMAGE_PATH             = doc/img
+OUTPUT_LANGUAGE        = English
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = doc/head.html
+HTML_FOOTER            = doc/foot.html
+HTML_STYLESHEET        = doc/e.css
+HTML_ALIGN_MEMBERS     = YES
+ENUM_VALUES_PER_LINE   = 1
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = YES
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+INTERNAL_DOCS          = NO
+STRIP_CODE_COMMENTS    = YES
+CASE_SENSE_NAMES       = YES
+SHORT_NAMES            = NO
+HIDE_SCOPE_NAMES       = NO
+VERBATIM_HEADERS       = NO
+SHOW_INCLUDE_FILES     = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 2
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ALIASES                = 
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SHOW_USED_FILES        = NO
+QUIET                  = YES
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+FILE_PATTERNS          =
+RECURSIVE              = YES 
+EXCLUDE                = ./src/lib/ecore_desktop
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = ./examples/
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = NO
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 2
+IGNORE_PREFIX          = 
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+GENERATE_MAN           = YES
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = YES
+GENERATE_XML           = NO
+XML_SCHEMA             = 
+XML_DTD                = 
+GENERATE_AUTOGEN_DEF   = NO
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = NO
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+CLASS_DIAGRAMS         = NO
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = NO
+COLLABORATION_GRAPH    = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = NO
+INCLUDED_BY_GRAPH      = NO
+GRAPHICAL_HIERARCHY    = NO
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 512
+MAX_DOT_GRAPH_HEIGHT   = 512
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+SEARCHENGINE           = NO
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..3a3ad7e
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,14 @@
+COMPILING and INSTALLING:
+
+If you got a official release tar archive do:
+    ./configure
+    
+( otherwise if you got this from enlightenment cvs do: ./autogen.sh )
+    
+Then to compile:
+    make
+
+To install (run this as root, or the user who handles installs):
+    make install
+
+NOTE: You MUST make install Eet for it to run properly.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..f373799
--- /dev/null
@@ -0,0 +1,130 @@
+## Process this file with automake to produce Makefile.in
+
+ACLOCAL_AMFLAGS = -I m4
+
+SUBDIRS = src
+
+MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
+                       config.h.in config.sub configure install-sh \
+                      ltconfig ltmain.sh missing mkinstalldirs \
+                      stamp-h.in  build-stamp configure-stamp depcomp \
+                      ecore_docs.tar.gz ecore.c \
+                      README \
+                      ecore.spec \
+                      ecore-con.pc \
+                      ecore-config.pc \
+                      ecore-desktop.pc \
+                      ecore-directfb.pc\
+                      ecore-evas.pc \
+                      ecore-fb.pc \
+                      ecore-file.pc \
+                      ecore-imf.pc \
+                      ecore-imf-evas.pc \
+                      ecore-ipc.pc \
+                      ecore-job.pc \
+                      ecore-txt.pc \
+                      ecore-x.pc \
+                      ecore-win32.pc \
+                      ecore-sdl.pc \
+                      ecore-wince.pc \
+                      ecore.pc
+
+bin_SCRIPTS = 
+
+EXTRA_DIST = AUTHORS COPYING COPYING-PLAIN \
+            autogen.sh ecore.c.in gendoc ecore.supp \
+             Doxyfile \
+            ecore.pc.in \
+            ecore-con.pc.in \
+            ecore-config.pc.in \
+            ecore-desktop.pc.in \
+            ecore-directfb.pc.in\
+            ecore-evas.pc.in \
+            ecore-fb.pc.in \
+            ecore-file.pc.in \
+            ecore-imf.pc.in \
+            ecore-imf-evas.pc.in \
+            ecore-ipc.pc.in \
+            ecore-job.pc.in \
+            ecore-txt.pc.in \
+            ecore-x.pc.in \
+            ecore-win32.pc.in \
+            ecore-sdl.pc.in \
+            ecore-wince.pc.in \
+            ecore.spec.in ecore.spec \
+            doc gendoc
+
+if BUILD_ECORE_CON
+pcon = ecore-con.pc
+endif
+
+if BUILD_ECORE_CONFIG
+pconfig = ecore-config.pc
+endif
+
+if BUILD_ECORE_DIRECTFB
+pdfb = ecore-directfb.pc
+endif
+
+if BUILD_ECORE_EVAS
+pevas = ecore-evas.pc
+endif
+
+if BUILD_ECORE_FB
+pfb = ecore-fb.pc
+endif
+
+if BUILD_ECORE_FILE
+pfile = ecore-file.pc
+endif
+
+if BUILD_ECORE_DESKTOP
+pdesktop = ecore-desktop.pc
+endif
+
+if BUILD_ECORE_IMF
+pimf = ecore-imf.pc
+endif
+
+if BUILD_ECORE_IMF_EVAS
+pimfevas = ecore-imf-evas.pc
+endif
+
+if BUILD_ECORE_IPC
+pipc = ecore-ipc.pc
+endif
+
+if BUILD_ECORE_JOB
+pjob = ecore-job.pc
+endif
+
+if BUILD_ECORE_TXT
+ptxt = ecore-txt.pc
+endif
+
+if BUILD_ECORE_X
+px = ecore-x.pc
+endif
+
+if BUILD_ECORE_WIN32
+pwin32 = ecore-win32.pc
+endif
+
+if BUILD_ECORE_WINCE
+pwince = ecore-wince.pc
+endif
+
+
+if BUILD_ECORE_SDL
+psdl = ecore-sdl.pc
+endif
+
+if BUILD_ECORE_X_XCB
+px = ecore-x.pc
+endif
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = \
+       ecore.pc $(pcon) $(pconfig) $(pdfb) $(pevas) \
+       $(pfb) $(pfile) $(pdesktop) $(pimf) $(pimfevas) $(pipc) $(pjob) $(ptxt) \
+       $(px) $(pwin32) $(pwince) $(psdl)
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/README.in b/README.in
new file mode 100644 (file)
index 0000000..2567738
--- /dev/null
+++ b/README.in
@@ -0,0 +1,49 @@
+Ecore @VERSION@
+
+Requirements:
+-------------
+
+Must:
+  libc libm
+
+Recommended:
+  libX11 libXext libXcursor libXprint libXinerama libXrandr libXss libXrender
+  libXcomposite libXfixes libXdamage libXdpms libXtest OpenSSL CURL
+
+Optional:
+  XCB SDL DirectFB
+
+Ecore is the event/X abstraction layer that makes doing selections,
+Xdnd, general X stuff, event loops, timeouts and idle handlers fast,
+optimized, and convenient. It's a separate library so anyone can make
+use of the work put into Ecore to make this job easy for applications.
+
+------------------------------------------------------------------------------
+COMPILING AND INSTALLING:
+
+  ./configure
+  make
+(as root unless youa re installing in your users directories):
+  make install
+      
+------------------------------------------------------------------------------
+BUILDING PACKAGES:
+
+RPM: To build rpm packages:
+  
+  sudo rpm -ta @PACKAGE@-@VERSION@.tar.gz
+
+You will find rpm packages in your system /usr/src/redhat/* dirs (note you may
+not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents
+for more details)
+
+DEB: To build deb packages:
+
+  tar zvf @PACKAGE@-@VERSION@.tar.gz
+  cd @PACKAGE@-@VERSION@
+  dpkg-buildpackage -us -uc -rfakeroot
+  cd ..
+  rm -rf @PACKAGE@-@VERSION@
+
+You will find all the debian source, binary etc. packages put in the directory
+where you first untarred the source tarball.
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..995ff2f
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
+touch README
+
+echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+
+if [ -z "$NOCONFIGURE" ]; then
+       ./configure "$@"
+fi
diff --git a/configure.in b/configure.in
new file mode 100644 (file)
index 0000000..d494ef6
--- /dev/null
@@ -0,0 +1,964 @@
+# get rid of that stupid cache mechanism
+rm -f config.cache
+
+AC_INIT(ecore, 0.9.9.043, enlightenment-devel@lists.sourceforge.net)
+AC_PREREQ(2.52)
+AC_CONFIG_SRCDIR(configure.in)
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_ISC_POSIX
+
+AM_INIT_AUTOMAKE(1.6 dist-bzip2)
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_CXX
+AC_C_BIGENDIAN
+AC_PROG_CC
+AM_PROG_CC_STDC
+AC_HEADER_STDC
+AC_C_CONST
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_C___ATTRIBUTE__
+AC_HEADER_SYS_WAIT
+
+AC_LIBTOOL_WIN32_DLL
+define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
+AC_PROG_LIBTOOL
+AC_DEFINE_UNQUOTED(SHARED_LIB_SUFFIX, "$shrext_cmds", [Suffix for shared objects])
+
+VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
+VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
+VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
+SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
+version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
+AC_SUBST(version_info)
+
+# define pkg-config requirements for all our submodules.
+# only the trivial requirements go here.
+requirements_ecore_con=""
+requirements_ecore_config=""
+requirements_ecore_desktop=""
+requirements_ecore_directfb=""
+requirements_ecore_evas="evas"
+requirements_ecore_fb=""
+requirements_ecore_file=""
+requirements_ecore_ipc=""
+requirements_ecore_job=""
+requirements_ecore_txt=""
+requirements_ecore_x=""
+requirements_ecore_win32=""
+requirements_ecore_wince=""
+requirements_ecore_sdl=""
+
+dnl The first call to PKG_CHECK_MODULES is done conditionally,
+dnl so we should include this here:
+PKG_PROG_PKG_CONFIG
+
+dnl add windows requirements
+WIN32_CFLAGS=""
+WIN32_LIBS=""
+lt_no_undefined=""
+lt_enable_auto_import=""
+case "$host_os" in
+       mingw*|cegcc)
+               PKG_CHECK_MODULES([EVIL], [evil])
+               AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed.])
+               dnl needed for correct definition of EAPI
+               AC_DEFINE(EFL_ECORE_BUILD, 1, [Define to mention that ecore is built.])
+               AC_DEFINE(EFL_ECORE_EVAS_BUILD, 1, [Define to mention that ecore evas is built.])
+               AC_DEFINE(EFL_ECORE_FILE_BUILD, 1, [Define to mention that ecore file is built.])
+               AC_DEFINE(EFL_ECORE_IMF_BUILD, 1, [Define to mention that ecore imf is built.])
+               AC_DEFINE(EFL_ECORE_JOB_BUILD, 1, [Define to mention that ecore job is built.])
+               AC_DEFINE(EFL_ECORE_SDL_BUILD, 1, [Define to mention that ecore SDL is built.])
+               AC_DEFINE(EFL_ECORE_TXT_BUILD, 1, [Define to mention that ecore txt is built.])
+               AC_DEFINE(EFL_ECORE_WIN32_BUILD, 1, [Define to mention that ecore Win32 is built.])
+               AC_DEFINE(HAVE_DLFCN_H, 1, [Define to 1 if you have the <dlfcn.h> header file.])
+               AC_DEFINE(HAVE_SYS_MMAN_H, 1, [Define to 1 if you have the <sys/mman.h> header file.])
+               AC_DEFINE(HAVE_SYS_TIME_H, 1, [Define to 1 if you have the <sys/time.h> header file.])
+                if test "$host_os" = "cegcc" ; then
+                       AC_DEFINE(EFL_ECORE_WINCE_BUILD, 1, [Define to mention that ecore WinCE is built.])
+                        WIN32_CFLAGS="-mwin32"
+                        WIN32_LIBS="-lws2 -laygshell"
+                       lt_enable_auto_import="-Wl,--enable-auto-import"
+                else
+                        WIN32_LIBS="-lws2_32"
+                fi
+               lt_no_undefined="-no-undefined"
+               ;;
+       *)
+               AC_CHECK_HEADERS([dlfcn.h features.h langinfo.h locale.h netdb.h netinet/in.h sys/time.h sys/mman.h])
+               AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
+               AC_SUBST(dlopen_libs)
+               ;;
+esac
+AC_SUBST(WIN32_CFLAGS)
+AC_SUBST(WIN32_LIBS)
+AC_SUBST(lt_no_undefined)
+AC_SUBST(lt_enable_auto_import)
+
+dnl check common functions and headers
+AC_CHECK_FUNCS(gettimeofday)
+AC_CHECK_FUNCS(strlcpy)
+
+dnl openssl
+want_openssl="yes"
+have_openssl="no"
+AC_ARG_ENABLE(openssl,
+  AC_HELP_STRING(
+    [--disable-openssl],
+    [disable openssl support]
+  ),
+  [ want_openssl=$enableval ]
+)
+
+if test "x$want_openssl" = "xyes"; then
+    PKG_CHECK_MODULES([SSL], [openssl], [
+        AC_DEFINE(USE_OPENSSL, 1, [Use OpenSSL])
+        requirements_ecore_con="$requirements_ecore_con openssl"
+        # no need to add it to req_ecore_ipc, since they
+        # depends on ecore_con anyway.
+        have_openssl="yes"
+    ], [
+        have_openssl="no"
+    ])
+fi
+
+dnl curl
+want_curl="yes"
+have_curl="no"
+AC_ARG_ENABLE(curl,
+  AC_HELP_STRING(
+    [--disable-curl],
+    [disable curl support]
+  ),
+  [ want_curl=$enableval ]
+)
+
+if test "x$want_curl" = "xyes"; then
+  PKG_CHECK_MODULES(CURL, libcurl,
+    [
+      AC_DEFINE(HAVE_CURL, 1, [ Downloading with CURL ])
+      requirements_ecore_con="$requirements_ecore_con libcurl"
+      have_curl="yes"
+    ],
+    [ have_curl="no" ]
+  )
+fi
+
+dnl abstract sockets
+want_abstract_sockets="yes"
+AC_ARG_ENABLE(abstract-sockets,
+  AC_HELP_STRING(
+    [--disable-abstract-sockets],
+    [disable abstract sockets.]
+  ),
+  [ want_abstract_sockets=$enableval ]
+)
+if test "x$want_abstract_sockets" = "xyes"; then
+  AC_DEFINE(HAVE_ABSTRACT_SOCKETS, 1, [Have abstract sockets namespace])
+fi
+
+dnl ecore_job
+ECORE_CHECK_MODULE([Job], [yes])
+
+dnl ecore_con
+ECORE_CHECK_MODULE([Con], [yes])
+
+dnl ecore_ipc
+ECORE_CHECK_MODULE([Ipc], [yes], [$have_ecore_con])
+
+dnl ecore_config
+PKG_CHECK_MODULES(EET, [eet >= 1.0.0],
+  [ have_eet="yes" ],
+  [ have_eet="no" ]
+)
+ecore_config_deps="no"
+if test "x$have_eet" = "xyes" -a "x$have_ecore_ipc" = "xyes" ; then
+  ecore_config_deps="yes"
+fi
+ECORE_CHECK_MODULE([Config], [yes], [$ecore_config_deps],
+  [requirements_ecore_config="$requirements_ecore_config ecore-ipc eet"])
+
+dnl ecore_txt
+iconv_cflags=""
+iconv_libs=""
+have_iconv="no"
+AC_ARG_WITH(iconv-link,
+  AC_HELP_STRING([--with-iconv-link=ICONV_LINK], [explicitly specify an iconv link option]),
+  [
+    iconv_libs=$withval
+    have_iconv="yes"
+  ]
+)
+
+if test "x$have_iconv" = "xno" ; then
+  AC_CHECK_LIB(c, iconv,
+    [ have_iconv="yes" ]
+  )
+
+  if test "x$have_iconv" != "xyes"; then
+    AC_CHECK_LIB(iconv, iconv,
+      [
+       iconv_libs="-liconv"
+       have_iconv="yes"
+      ]
+    )
+  fi
+fi
+AC_MSG_CHECKING(for explicit iconv link options)
+AC_MSG_RESULT($iconv_libs)
+
+AC_SUBST(iconv_cflags)
+AC_SUBST(iconv_libs)
+
+ECORE_CHECK_MODULE([Txt], [yes], [$have_iconv],
+  [ecore_txt_libs="$ecore_txt_libs $iconv_libs"])
+
+dnl ecore_evas
+PKG_CHECK_MODULES(EVAS, [evas >= 0.9.9],
+  [ have_evas="yes" ],
+  [ have_evas="no" ]
+)
+
+ECORE_CHECK_MODULE([Evas], [yes], [$have_evas])
+
+#######################################
+## Simple X11 build/link
+
+AC_ARG_ENABLE(simple-x11,
+  AC_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]),
+  [ want_evas_simple_x11=$enableval ]
+)
+
+have_x="no"
+have_ecore_x="no"
+have_ecore_x_xlib="no"
+have_ecore_x_xcb="no"
+
+x_dir="";
+x_includes="";
+x_cflags="";
+x_libs="";
+
+dnl ecore_x{cb}
+
+AC_ARG_ENABLE(ecore-x-xcb,
+  AC_HELP_STRING(
+    [--enable-ecore-x-xcb],
+    [enable the ecore_x module with XCB backend. [[default=disabled]]]),
+  [ want_ecore_x_xcb=$enableval ],
+  [ want_ecore_x_xcb="no" ])
+
+AC_MSG_CHECKING(whether ecore_x with XCB backend is to be built)
+AC_MSG_RESULT($want_ecore_x_xcb)
+
+if test "x$want_ecore_x_xcb" = "xyes" ; then
+  PKG_CHECK_MODULES(XCB, xcb xcb-icccm xcb-image xcb-keysyms,
+    [ have_ecore_x_xcb="yes" ],
+    [ have_ecore_x_xcb="no" ])
+
+  if test "x$have_ecore_x_xcb" = "xyes" ; then
+    PKG_CHECK_MODULES(XCB_COMPOSITE, xcb-composite,
+      [ have_ecore_x_xcb_composite="yes"
+        AC_DEFINE(ECORE_XCB_COMPOSITE, 1, [Build support for XCB composite]) ],
+      [ have_ecore_x_xcb_composite="no" ])
+
+    PKG_CHECK_MODULES(XCB_DAMAGE, xcb-damage,
+      [ have_ecore_x_xcb_damage="yes"
+        AC_DEFINE(ECORE_XCB_DAMAGE, 1, [Build support for XCB damage]) ],
+      [ have_ecore_x_xcb_damage="no" ])
+
+    PKG_CHECK_MODULES(XCB_DPMS, xcb-dpms,
+      [ have_ecore_x_xcb_dpms="yes"
+        AC_DEFINE(ECORE_XCB_DPMS, 1, [Build support for XCB dpms]) ],
+      [ have_ecore_x_xcb_dpms="no" ])
+
+    PKG_CHECK_MODULES(XCB_RANDR, xcb-randr,
+      [ have_ecore_x_xcb_randr="yes"
+        AC_DEFINE(ECORE_XCB_RANDR, 1, [Build support for XCB randr]) ],
+      [ have_ecore_x_xcb_randr="no" ])
+
+    PKG_CHECK_MODULES(XCB_RENDER, xcb-render,
+      [ have_ecore_x_xcb_render="yes"
+        AC_DEFINE(ECORE_XCB_RENDER, 1, [Build support for XCB render]) ],
+      [ have_ecore_x_xcb_render="no" ])
+
+    PKG_CHECK_MODULES(XCB_SCREENSAVER, xcb-screensaver,
+      [ have_ecore_x_xcb_screensaver="yes"
+        AC_DEFINE(ECORE_XCB_SCREENSAVER, 1, [Build support for XCB screensaver]) ],
+      [ have_ecore_x_xcb_screensaver="no" ])
+
+    PKG_CHECK_MODULES(XCB_SHAPE, xcb-shape,
+      [ have_ecore_x_xcb_shape="yes"
+        AC_DEFINE(ECORE_XCB_SHAPE, 1, [Build support for XCB shape]) ],
+      [ have_ecore_x_xcb_shape="no" ])
+
+    PKG_CHECK_MODULES(XCB_SYNC, xcb-sync,
+      [ have_ecore_x_xcb_sync="yes"
+        AC_DEFINE(ECORE_XCB_SYNC, 1, [Build support for XCB sync]) ],
+      [ have_ecore_x_xcb_sync="no" ])
+
+    PKG_CHECK_MODULES(XCB_XFIXES, xcb-xfixes,
+      [ have_ecore_x_xcb_xfixes="yes"
+        AC_DEFINE(ECORE_XCB_FIXES, 1, [Build support for XCB xfixes]) ],
+      [ have_ecore_x_xcb_xfixes="no" ])
+
+    PKG_CHECK_MODULES(XCB_XINERAMA, xcb-xinerama,
+      [ have_ecore_x_xcb_xinerama="yes"
+        AC_DEFINE(ECORE_XCB_XINERAMA, 1, [Build support for XCB xinerama]) ],
+      [ have_ecore_x_xcb_xinerama="no" ])
+
+    PKG_CHECK_MODULES(XCB_XPRINT, xcb-xprint,
+      [ have_ecore_x_xcb_xprint="yes"
+        AC_DEFINE(ECORE_XCB_XPRINT, 1, [Build support for XCB xprint]) ],
+      [ have_ecore_x_xcb_xprint="no" ])
+
+    PKG_CHECK_MODULES(XCB_XTEST, xcb-xtest,
+      [ have_ecore_x_xcb_xtest="yes"
+        AC_DEFINE(ECORE_XCB_XTEST, 1, [Build support for XCB xtest]) ],
+      [ have_ecore_x_xcb_xtest="no" ])
+
+    AC_DEFINE(HAVE_ECORE_X_XCB, 1, [Defined to 1 if XCB is enabled.])
+
+    x_cflags=$XCB_CFLAGS
+    x_libs=$XCB_LIBS
+    have_x="yes"
+
+    have_ecore_x_xcb_define="-DHAVE_ECORE_X_XCB"
+    AC_SUBST(have_ecore_x_xcb_define)
+  fi
+fi
+
+if ! test "x$have_ecore_x_xcb" = "xyes" ; then
+  AC_PATH_XTRA
+  AC_CHECK_HEADER(X11/X.h,
+    [
+     if test "x$want_evas_simple_x11" = "xyes"; then
+       x_libs="${x_libs} -lX11 -lXext"
+     else
+       x_dir=${x_dir:-/usr/X11R6}
+       x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+       x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+     fi
+     have_ecore_x_xlib="yes"
+    ]
+  )
+
+  if test "x$have_ecore_x_xlib" = "xyes"; then
+    Xcursor_libs=""
+    Xcursor_cflags=""
+    use_Xcursor="no"
+    PCFLAGS=$CFLAGS
+    CFLAGS="$x_cflags $x_includes"
+    AC_CHECK_HEADER(X11/Xcursor/Xcursor.h,
+      [
+        AC_CHECK_LIB(Xcursor, XcursorImageLoadCursor,
+          [
+            AC_DEFINE(ECORE_XCURSOR, 1, [Build support for Xcursor])
+            Xcursor_cflags=""
+            Xcursor_libs="-lXcursor"
+            use_Xcursor="yes"
+          ], [
+            Xcursor_cflags=""
+            Xcursor_libs=""
+            use_Xcursor="no"
+          ], [
+            $x_libs -lXrender
+          ]
+        )
+      ], [
+        Xcursor_cflags=""
+        Xcursor_libs=""
+        use_Xcursor="no"
+      ], [
+        #include <X11/Xlib.h>
+      ]
+    )
+    CFLAGS=$PCFLAGS
+
+    AC_SUBST(Xcursor_cflags)
+    AC_SUBST(Xcursor_libs)
+
+    ECORE_CHECK_X_EXTENSION([Xcomposite], [Xcomposite.h], [Xcomposite], [XCompositeQueryExtension])
+    ECORE_CHECK_X_EXTENSION([Xdamage], [Xdamage.h], [Xdamage], [XDamageSubtract])
+    ECORE_CHECK_X_EXTENSION([Xdpms], [dpms.h], [Xdpms], [DPMSQueryExtension])
+    if test "x$use_xdpms" = "xno" ; then
+      ECORE_CHECK_X_EXTENSION([Xdpms], [dpms.h], [Xext], [DPMSQueryExtension])
+    fi
+    ECORE_CHECK_X_EXTENSION([Xfixes], [Xfixes.h], [Xfixes], [XFixesExpandRegion])
+    ECORE_CHECK_X_EXTENSION([Xinerama], [Xinerama.h], [Xinerama], [XineramaQueryScreens])
+    ECORE_CHECK_X_EXTENSION([Xprint], [Print.h], [Xp], [XpQueryScreens])
+    ECORE_CHECK_X_EXTENSION([Xrandr], [Xrandr.h], [Xrandr], [XRRSizes])
+    ECORE_CHECK_X_EXTENSION([Xrender], [Xrender.h], [Xrender], [XRenderFindVisualFormat])
+    ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent])
+    ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], [XScreenSaverSelectInput])
+
+    AC_DEFINE(HAVE_ECORE_X_XLIB, 1, [Defined to 1 if Xlib is enabled.])
+    have_x="yes"
+
+    have_ecore_x_xlib="yes"
+  fi
+fi
+
+AC_SUBST(x_cflags)
+AC_SUBST(x_includes)
+AC_SUBST(x_libs)
+
+ECORE_CHECK_MODULE([X], [yes], [$have_x],
+  [ecore_x_libs="$ecore_x_libs $x_libs"])
+
+dnl ecore_evas_x11
+have_ecore_evas_software_x11="no"
+have_ecore_evas_xrender_x11="no";
+have_ecore_evas_opengl_x11="no";
+have_ecore_evas_software_xcb="no"
+have_ecore_evas_xrender_xcb="no";
+have_ecore_evas_software_16_x11="no";
+if test "x$have_ecore_x" = "xyes" -a "x$have_ecore_evas" = "xyes"; then
+
+  dnl ecore_evas_x Xlib
+  if test "x$have_ecore_x_xlib" = "xyes"; then
+    want_ecore_evas_software_x11="yes"
+    dnl disabling this will make things go haywire
+    #AC_ARG_ENABLE(ecore-evas-x11,
+    #  AC_HELP_STRING(
+    #    [--enable-ecore-evas-x11],
+    #    [enable X11 support in the ecore_evas module.]
+    #  ),
+    #  [ want_ecore_evas_x11=$enableval ]
+    #)
+    AC_MSG_CHECKING(whether ecore_evas Software Xlib support is to be built)
+    AC_MSG_RESULT($want_ecore_evas_software_x11)
+
+    if test "x$want_ecore_evas_software_x11" = "xyes"; then
+      PKG_CHECK_MODULES(EVAS_SOFTWARE_X11, evas-software-x11, [
+          AC_DEFINE(BUILD_ECORE_EVAS_SOFTWARE_X11, 1, [Support for Software Xlib Engine in Ecore_Evas])
+          have_ecore_evas_software_x11="yes";
+      ], [
+          have_ecore_evas_software_x11="no";
+      ])
+    fi
+
+    dnl ecore_evas_opengl_x11
+    want_ecore_evas_opengl_x11=yes
+    AC_ARG_ENABLE(ecore-evas-opengl-x11,
+      AC_HELP_STRING(
+        [--enable-ecore-evas-opengl-x11],
+        [enable OpenGL Xlib support in the ecore_evas module.]
+      ),
+      [ want_ecore_evas_opengl_x11=$enableval ]
+    )
+    AC_MSG_CHECKING(whether ecore_evas OpenGL Xlib support is to be built)
+    AC_MSG_RESULT($want_ecore_evas_opengl_x11)
+
+    if test "x$want_ecore_evas_opengl_x11" = "xyes"; then
+      PKG_CHECK_MODULES(EVAS_OPENGL_X11, evas-opengl-x11, [
+          AC_DEFINE(BUILD_ECORE_EVAS_OPENGL_X11, 1, [Support for OpenGL Xlib Engine in Ecore_Evas])
+          have_ecore_evas_opengl_x11="yes";
+      ], [
+          have_ecore_evas_opengl_x11="no"
+      ])
+    fi
+
+    dnl ecore_evas_xrender_x11
+    want_ecore_evas_xrender_x11="yes"
+    AC_ARG_ENABLE(ecore-evas-xrender-x11,
+      AC_HELP_STRING(
+        [--disable-ecore-evas-xrender-x11],
+        [disable XRender Xlib support in the ecore_evas module. [[default=enabled]]]
+      ),
+      [ want_ecore_evas_xrender_x11=$enableval ]
+    )
+
+    AC_MSG_CHECKING(whether ecore_evas XRender Xlib support is to be built)
+    AC_MSG_RESULT($want_ecore_evas_xrender_x11)
+
+    if test "x$want_ecore_evas_xrender_x11" = "xyes"; then
+      PKG_CHECK_MODULES(EVAS_XRENDER_X11, evas-xrender-x11, [
+          AC_DEFINE(BUILD_ECORE_EVAS_XRENDER_X11, 1, [Support for XRender Xlib Engine in Ecore_Evas])
+          have_ecore_evas_xrender_x11="yes"
+      ], [
+          have_ecore_evas_xrender_x11="no"
+      ])
+    fi
+
+    dnl ecore_evas_software_16_x11
+    want_ecore_evas_software_16_x11=no
+    AC_ARG_ENABLE(ecore-evas-software-16-x11,
+      AC_HELP_STRING(
+        [--enable-ecore-evas-software-16-x11],
+        [enable 16bpp optimized mode support in the ecore_evas module. [[default=disabled]]]
+      ),
+      [ want_ecore_evas_software_16_x11=$enableval ]
+    )
+
+    AC_MSG_CHECKING(whether ecore_evas x11-16 support is to be built)
+    AC_MSG_RESULT($want_ecore_evas_software_16_x11)
+
+    if test "x$want_ecore_evas_software_16_x11" = "xyes"; then
+      PKG_CHECK_MODULES(EVAS_SOFTWARE_16_X11, evas-software-16-x11,
+        [
+          AC_DEFINE(BUILD_ECORE_EVAS_SOFTWARE_16_X11, 1, [Support for X11 16bpp Engine in Ecore_Evas])
+          have_ecore_evas_software_16_x11="yes";
+        ]
+      )
+    fi
+  else
+    want_ecore_evas_software_xcb="yes"
+    ECORE_EVAS_CHECK_MODULE([software-xcb],
+      [$want_ecore_evas_software_xcb],
+      [Software XCB],
+      $have_ecore_x_xcb)
+
+    want_ecore_evas_xrender_xcb="auto"
+    ECORE_EVAS_CHECK_MODULE([xrender-xcb],
+      [$want_ecore_evas_xrender_xcb],
+      [XRender XCB],
+      $have_ecore_x_xcb)
+  fi
+
+  if test "x$have_ecore_evas_software_x11" = "xyes" -o \
+         "x$have_ecore_evas_opengl_x11" = "yes" -o \
+         "x$have_ecore_evas_xrender_x11" = "yes" -o \
+         "x$have_ecore_evas_software_16_x11" = "yes" -o \
+          "x$have_ecore_evas_software_xcb" = "xyes" -o \
+         "x$have_ecore_evas_xrender_xcb" = "yes"; then
+    AC_DEFINE(BUILD_ECORE_EVAS_X11, 1, [Support for X Window Engines in Ecore_Evas])
+    requirements_ecore_evas="$requirements_ecore_evas ecore-x"
+  fi
+
+fi
+
+dnl ecore_win32
+
+ECORE_CHECK_MODULE([Win32], [no], [yes],
+  [ecore_win32_libs="-lgdi32"])
+AC_SUBST(ecore_win32_libs)
+
+want_ecore_evas_software_ddraw="yes"
+ECORE_EVAS_CHECK_MODULE([software-ddraw],
+  [$want_ecore_evas_software_ddraw],
+  [Software DirectDraw],
+  $have_ecore_win32)
+
+want_ecore_evas_direct3d="yes"
+ECORE_EVAS_CHECK_MODULE([direct3d],
+  [$want_ecore_evas_direct3d],
+  [Direct3d],
+  $have_ecore_win32)
+
+want_ecore_evas_opengl_glew="yes"
+ECORE_EVAS_CHECK_MODULE([opengl-glew],
+  [$want_ecore_evas_opengl_glew],
+  [Glew OpenGL],
+  $have_ecore_win32)
+
+want_ecore_evas_software_16_ddraw="yes"
+ECORE_EVAS_CHECK_MODULE([software-16-ddraw],
+  [$want_ecore_evas_software_16_ddraw],
+  [16 bpp Software DirectDraw],
+  $have_ecore_win32)
+
+if test "x$have_ecore_evas_software_ddraw" = "xyes" -o \
+        "x$have_ecore_evas_direct3d" = "yes" -o \
+        "x$have_ecore_evas_opengl_glew" = "yes" -o \
+        "x$have_ecore_evas_software_16_ddraw" = "yes"; then
+  AC_DEFINE(BUILD_ECORE_EVAS_WIN32, 1, [Support for Win32 Engine in Ecore_Evas])
+  requirements_ecore_evas="$requirements_ecore_evas ecore-win32"
+fi
+
+dnl ecore_wince
+
+ECORE_CHECK_MODULE([WinCE], [no])
+
+want_ecore_evas_software_16_wince="yes"
+ECORE_EVAS_CHECK_MODULE([software-16-wince],
+  [$want_ecore_evas_software_16_wince],
+  [16 bpp Software Windows CE],
+  $have_ecore_wince)
+
+if test "x$have_ecore_evas_software_16_wince" = "xyes"; then
+  requirements_ecore_evas="$requirements_ecore_evas ecore-wince"
+fi
+
+dnl ecore_dfb
+PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.16,
+  [ have_directfb="yes" ],
+  [ have_directfb="no" ]
+)
+
+ECORE_CHECK_MODULE([DirectFB], [no], [$have_directfb],
+  [requirements_ecore_directfb="directfb"])
+
+dnl ecore_evas_dfb
+have_ecore_evas_dfb="no"
+if test "x$have_ecore_directfb" = "xyes" -a "x$have_ecore_evas" = "xyes"; then
+  want_ecore_evas_dfb="yes"
+  AC_MSG_CHECKING(whether ecore_evas DirectFB support is to be built)
+  AC_ARG_ENABLE(ecore-evas-dfb,
+    AC_HELP_STRING([--disable-ecore-evas-dfb], [disable DirectFB in the ecore_evas module]),
+    [ want_ecore_evas_dfb=$enableval ]
+  )
+  AC_MSG_RESULT($want_ecore_evas_dfb)
+
+  if test "x$want_ecore_evas_dfb" = "xyes" -a "x$have_ecore_directfb" = "xyes" ; then
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $DIRECTFB_CFLAGS"
+    PKG_CHECK_MODULES(EVAS_DIRECTFB, evas-directfb,
+      [
+        AC_DEFINE(BUILD_ECORE_EVAS_DIRECTFB, 1, [Support for DirectFB in Ecore_Evas])
+        have_ecore_evas_dfb="yes"
+        requirements_ecore_evas="$requirements_ecore_evas ecore-directfb"
+      ]
+    )
+    CFLAGS="$save_CFLAGS"
+  fi
+fi
+
+dnl ecore_fb
+have_fb="no"
+AC_CHECK_HEADER(linux/fb.h,
+  [ AC_CHECK_HEADER(linux/input.h, [ have_fb="yes" ]) ]
+)
+ECORE_CHECK_MODULE([FB], [no], [$have_fb])
+
+tslib_libs=""
+if test "x$have_ecore_fb" = "xyes" ; then
+AC_CHECK_HEADER(tslib.h,
+  [
+   AC_CHECK_LIB(ts, ts_open, tslib_libs="-lts", tslib_libs="-ltslib")
+   AC_DEFINE(HAVE_TSLIB, 1, [Build Ecore_FB Touchscreen Code])
+  ]
+)
+fi
+AC_SUBST(tslib_libs)
+
+dnl ecore_evas_fb
+have_ecore_evas_fb="no";
+if test "x$have_ecore_fb" = "xyes" -a "x$have_ecore_evas" = "xyes"; then
+  want_ecore_evas_fb="yes";
+  AC_MSG_CHECKING(whether ecore_evas fb support is to be built)
+  AC_ARG_ENABLE(ecore-evas-fb,
+    AC_HELP_STRING([--disable-ecore-evas-fb], [disable fb in the ecore_evas module]),
+    [ want_ecore_evas_fb=$enableval ]
+  )
+  AC_MSG_RESULT($want_ecore_evas_fb)
+
+  if test "x$want_ecore_evas_fb" = "xyes"; then
+    PKG_CHECK_MODULES(EVAS_FB, evas-fb,
+      [
+        AC_DEFINE(BUILD_ECORE_EVAS_FB, 1, [Support for Linux FB in Ecore_Evas])
+        have_ecore_evas_fb="yes"
+        requirements_ecore_evas="$requirements_ecore_evas ecore-fb"
+      ]
+    )
+  fi
+fi
+
+dnl ecore_sdl
+AC_ARG_WITH(sdl-config, AC_HELP_STRING([--with-sdl-config=PATH], [use sdl-config specified]), [
+    SDL_CONFIG=$withval;
+    echo "using "$SDL_CONFIG" for sdl-config";
+], [
+    if test -z "$SDL_CONFIG"; then
+        AC_PATH_PROG(SDL_CONFIG, "sdl-config", "", $PATH)
+    fi
+])
+if test -z "$SDL_CONFIG" ; then SDL_CONFIG="sdl-config"; fi
+
+sdl_cflags="";
+sdl_libs="";
+have_sdl="no"
+AC_CHECK_HEADER(SDL/SDL.h, [ have_sdl="yes" ], [ have_sdl="no" ])
+
+ECORE_CHECK_MODULE([SDL], [no], [$have_sdl])
+
+dnl ecore_evas_sdl
+have_ecore_evas_sdl="no";
+if test "x$have_ecore_sdl" = "xyes" -a "x$have_ecore_evas" = "xyes"; then
+    want_ecore_evas_sdl="yes";
+    AC_MSG_CHECKING([whether ecore_evas SDL support is to be built])
+    AC_ARG_ENABLE(ecore-evas-sdl,
+        AC_HELP_STRING([--disable-ecore-evas-sdl], [disable SDL in the ecore_evas module]),
+        [ want_ecore_evas_sdl=$enableval ]
+    )
+    AC_MSG_RESULT($want_ecore_evas_sdl)
+
+    if test "x$want_ecore_evas_sdl" = "xyes"; then
+        save_CFLAGS=$CFLAGS
+        SDL_CFLAGS=`$SDL_CONFIG --cflags`
+        SDL_LIBS=`$SDL_CONFIG --libs`
+        CFLAGS="$CFLAGS $SDL_CFLAGS"
+        AC_SUBST(SDL_CFLAGS)
+        AC_SUBST(SDL_LIBS)
+
+        PKG_CHECK_MODULES(EVAS_SOFTWARE_SDL, evas-software-sdl, [
+            AC_DEFINE(BUILD_ECORE_EVAS_SDL, 1, [Support for SDL in Ecore_Evas])
+            have_ecore_evas_sdl="yes"
+            requirements_ecore_evas="$requirements_ecore_evas ecore-sdl"
+            PKG_CHECK_MODULES(SDL, sdl >= 1.3.0, [
+                AC_DEFINE(BUILD_ECORE_EVAS_SDL_130, 1, [Support for SVN SDL])
+            ], [
+                dummy="no"
+            ])
+        ], [
+            have_ecore_evas_sdl="no"
+        ])
+    CFLAGS=$save_CFLAGS
+  fi
+fi
+
+dnl ecore_evas_buffer
+want_ecore_evas_buffer="yes";
+have_ecore_evas_buffer="no";
+AC_MSG_CHECKING(whether ecore_evas buffer support is to be built)
+AC_ARG_ENABLE(ecore-evas-buffer,
+  AC_HELP_STRING([--disable-ecore-evas-buffer], [disable buffer in the ecore_evas module]),
+  [ want_ecore_evas_buffer=$enableval ]
+)
+AC_MSG_RESULT($want_ecore_evas_buffer)
+
+if test "x$want_ecore_evas_buffer" = "xyes" -a "x$have_ecore_evas" = "xyes"; then
+  PKG_CHECK_MODULES(EVAS_SOFTWARE_BUFFER, evas-software-buffer,
+    [
+      AC_DEFINE(BUILD_ECORE_EVAS_BUFFER, 1, [Support for Buffers in Ecore_Evas])
+      have_ecore_evas_buffer="yes"
+    ], [
+      have_ecore_evas_buffer="no"
+  ])
+fi
+
+dnl ecore_file
+ECORE_CHECK_MODULE([File], [yes])
+have_inotify="no"
+have_poll="no"
+if test "x$have_ecore_file" = "xyes"; then
+
+  dnl We need to check if the right inotify version is accessible
+  want_inotify="yes"
+  AC_MSG_CHECKING(whether inotify is to be used for filemonitoring)
+  AC_ARG_ENABLE(inotify,
+    AC_HELP_STRING([--disable-inotify], [disable inotify in the ecore_file module]),
+    [ want_inotify=$enableval ]
+  )
+  AC_MSG_RESULT($want_inotify)
+
+  dnl It's hard to find a good test on how to check the correct
+  dnl inotify version. They changed the headers a lot.
+  dnl in kernel 2.6.13 __NR_inotify_init was added to the defined syscalls
+  dnl in asm/unistd.h and IN_MOVE_SELF was added to linux/inotify.h
+  dnl so with this check you need a very new kernel and kernel-headers!
+  if test "x$want_inotify" = "xyes"; then
+    AC_CHECK_LIB(c, inotify_init, [
+        AC_DEFINE(HAVE_INOTIFY, 1, [ File monitoring with Inotify ])
+        AC_DEFINE(HAVE_SYS_INOTIFY, 1, [ File monitoring with Inotify - sys/inotify.h ])
+       have_inotify="yes"
+      ],
+      [
+        AC_TRY_COMPILE(
+          [
+            #include <asm/unistd.h>
+            #include <linux/inotify.h>
+          ],
+          [ int a = __NR_inotify_init; int b = IN_MOVE_SELF; ],
+          [
+            AC_DEFINE(HAVE_INOTIFY, 1, [ File monitoring with Inotify ])
+           have_inotify="yes"
+          ], [
+            have_inotify="no"
+          ]
+       )
+      ]
+    )
+  fi
+
+  want_poll="yes"
+  AC_MSG_CHECKING(whether polling is to be used for filemonitoring)
+  AC_ARG_ENABLE(poll,
+    AC_HELP_STRING([--disable-poll], [disable poll in the ecore_file module]),
+    [ want_poll=$enableval ]
+  )
+  AC_MSG_RESULT($want_poll)
+
+  if test "x$want_poll" = "xyes"; then
+    AC_DEFINE(HAVE_POLL, 1, [ File monitoring with polling ])
+    have_poll="yes"
+  fi
+  requirements_ecore_file="$requirements_ecore_file $requirements_ecore_con"
+fi
+
+dnl ecore_desktop
+ECORE_CHECK_MODULE([Desktop], [no], [$have_ecore_file],
+  [requirements_ecore_desktop="ecore-file"])
+
+dnl ecore_imf
+ECORE_CHECK_MODULE([IMF], [yes])
+
+try_ecore_imf_evas=no
+if test "x$have_ecore_imf" = "xyes" -a "x$have_evas" = "xyes"; then
+  try_ecore_imf_evas=yes
+fi
+
+ECORE_CHECK_MODULE([IMF_EVAS], [yes], [$try_ecore_imf_evas])
+
+dnl requirements
+AC_SUBST(requirements_ecore_con)
+AC_SUBST(requirements_ecore_config)
+AC_SUBST(requirements_ecore_desktop)
+AC_SUBST(requirements_ecore_directfb)
+AC_SUBST(requirements_ecore_evas)
+AC_SUBST(requirements_ecore_fb)
+AC_SUBST(requirements_ecore_file)
+AC_SUBST(requirements_ecore_ipc)
+AC_SUBST(requirements_ecore_job)
+AC_SUBST(requirements_ecore_txt)
+AC_SUBST(requirements_ecore_x)
+AC_SUBST(requirements_ecore_sdl)
+
+# set up conditionals
+AM_CONDITIONAL(BUILD_ECORE_X, test $have_ecore_x = yes)
+AM_CONDITIONAL(BUILD_ECORE_X_XLIB, test $have_ecore_x_xlib = yes)
+AM_CONDITIONAL(BUILD_ECORE_X_XCB, test $have_ecore_x_xcb = yes)
+
+AC_OUTPUT([
+Makefile
+ecore-con.pc
+ecore-config.pc
+ecore-desktop.pc
+ecore-directfb.pc
+ecore-evas.pc
+ecore-fb.pc
+ecore-file.pc
+ecore-imf.pc
+ecore-imf-evas.pc
+ecore-ipc.pc
+ecore-job.pc
+ecore-txt.pc
+ecore-x.pc
+ecore-win32.pc
+ecore-sdl.pc
+ecore-wince.pc
+ecore.pc
+src/Makefile
+src/bin/Makefile
+src/lib/Makefile
+src/lib/ecore/Makefile
+src/lib/ecore_job/Makefile
+src/lib/ecore_x/Makefile
+src/lib/ecore_x/xlib/Makefile
+src/lib/ecore_x/xcb/Makefile
+src/lib/ecore_fb/Makefile
+src/lib/ecore_sdl/Makefile
+src/lib/ecore_evas/Makefile
+src/lib/ecore_con/Makefile
+src/lib/ecore_imf/Makefile
+src/lib/ecore_imf_evas/Makefile
+src/lib/ecore_ipc/Makefile
+src/lib/ecore_txt/Makefile
+src/lib/ecore_config/Makefile
+src/lib/ecore_file/Makefile
+src/lib/ecore_desktop/Makefile
+src/lib/ecore_directfb/Makefile
+src/lib/ecore_win32/Makefile
+src/lib/ecore_wince/Makefile
+README
+ecore.spec
+])
+
+echo
+echo "$PACKAGE $VERSION"
+echo
+echo "Optional Modules:"
+echo
+echo " Core:"
+echo
+echo "  Ecore_Job....................: $have_ecore_job"
+echo "  Ecore_Txt....................: $have_ecore_txt"
+echo "  Ecore_File...................: $have_ecore_file"
+if test "x$have_ecore_file" = "xyes" ; then
+  echo "    Inotify....................: $have_inotify"
+  echo "    Poll.......................: $have_poll"
+  echo "    CURL.......................: $have_curl"
+fi
+echo "  Ecore_Desktop................: $have_ecore_desktop"
+echo "  Ecore_Con....................: $have_ecore_con"
+if test "x$have_ecore_con" = "xyes" ; then
+  echo "    OpenSSL....................: $have_openssl"
+  echo "    CURL.......................: $have_curl"
+fi
+echo "  Ecore_Ipc....................: $have_ecore_ipc"
+if test "x$have_ecore_con" = "xyes" ; then
+  echo "    OpenSSL....................: $have_openssl"
+fi
+echo "  Ecore_Config.................: $have_ecore_config"
+echo "  Ecore_IMF....................: $have_ecore_imf"
+echo "  Ecore_IMF_Evas...............: $have_ecore_imf_evas"
+
+echo
+echo " Graphic systems:"
+echo
+
+if test "x$have_ecore_x" = "xyes" ; then
+  if test "x$have_ecore_x_xcb" = "xyes" ; then
+    echo "  Ecore_X (XCB backend)........: $have_ecore_x_xcb"
+    echo "    Xprint.....................: $have_ecore_x_xcb_xprint"
+    echo "    Xinerama...................: $have_ecore_x_xcb_xinerama"
+    echo "    Xrandr.....................: $have_ecore_x_xcb_randr"
+    echo "    Xscreensaver...............: $have_ecore_x_xcb_screensaver"
+    echo "    Xshape.....................: $have_ecore_x_xcb_shape"
+    echo "    Xsync......................: $have_ecore_x_xcb_sync"
+    echo "    Xrender....................: $have_ecore_x_xcb_render"
+    echo "    Xcomposite.................: $have_ecore_x_xcb_composite"
+    echo "    Xfixes.....................: $have_ecore_x_xcb_xfixes"
+    echo "    Xdamage....................: $have_ecore_x_xcb_damage"
+    echo "    Xdpms......................: $have_ecore_x_xcb_dpms"
+    echo "    Xtest......................: $have_ecore_x_xcb_xtest"
+  else
+    echo "  Ecore_X (Xlib backend).......: $have_ecore_x"
+    echo "    Xcursor....................: $use_Xcursor"
+    echo "    Xprint.....................: $use_xprint"
+    echo "    Xinerama...................: $use_xinerama"
+    echo "    Xrandr.....................: $use_xrandr"
+    echo "    Xscreensaver...............: $use_xss"
+    echo "    Xrender....................: $use_xrender"
+    echo "    Xcomposite.................: $use_xcomposite"
+    echo "    Xfixes.....................: $use_xfixes"
+    echo "    Xdamage....................: $use_xdamage"
+    echo "    Xdpms......................: $use_xdpms"
+    echo "    Xtest......................: $use_xtest"
+  fi
+else
+  echo "  Ecore_X......................: $have_ecore_x"
+fi
+echo "  Ecore_Win32..................: $have_ecore_win32"
+echo "  Ecore_SDL....................: $have_ecore_sdl"
+echo "  Ecore_FB.....................: $have_ecore_fb"
+echo "  Ecore_DFB....................: $have_ecore_directfb"
+echo "  Ecore_WinCE..................: $have_ecore_wince"
+
+echo
+echo " Ecore Evas:"
+echo
+
+echo "  Ecore_Evas...................: $have_ecore_evas"
+if test "x$have_ecore_evas" = "xyes" ; then
+  echo "    Software Memory Buffer.....: $have_ecore_evas_buffer"
+  echo "    Software X11...............: $have_ecore_evas_software_x11"
+  echo "    XRender X11................: $have_ecore_evas_xrender_x11"
+  echo "    OpenGL X11.................: $have_ecore_evas_opengl_x11"
+  echo "    Software XCB...............: $have_ecore_evas_software_xcb"
+  echo "    XRender XCB................: $have_ecore_evas_xrender_xcb"
+  echo "    Software DirectDraw........: $have_ecore_evas_software_ddraw"
+  echo "    Direct3D...................: $have_ecore_evas_direct3d"
+  echo "    OpenGL Glew................: $have_ecore_evas_opengl_glew"
+  echo "    Software SDL...............: $have_ecore_evas_sdl"
+  echo "    DirectFB...................: $have_ecore_evas_dfb"
+  echo "    Software Framebuffer.......: $have_ecore_evas_fb"
+  echo "    Software 16bit X11.........: $have_ecore_evas_software_16_x11"
+  echo "    Software 16bit DirectDraw..: $have_ecore_evas_software_16_ddraw"
+  echo "    Software 16bit WinCE.......: $have_ecore_evas_software_16_wince"
+fi
+echo
+echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE."
+echo
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644 (file)
index 0000000..2acb329
--- /dev/null
@@ -0,0 +1,12 @@
+Makefile
+Makefile.in
+ecore1-test
+ecore1-test.substvars
+files
+libecore1
+libecore1-dev
+libecore1.postinst.debhelper
+libecore1.postrm.debhelper
+libecore1.substvars
+tmp
+changelog
diff --git a/debian/changelog.in b/debian/changelog.in
new file mode 100644 (file)
index 0000000..e5dd1a6
--- /dev/null
@@ -0,0 +1,5 @@
+ecore (@VERSION@-1) unstable; urgency=low
+
+  * a CVS snapshot release.
+
+ -- Falko Schmidt <falko@alphagemini.org>  Fri,  4 Apr 2008 15:13:56 +0000
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..1e8b314
--- /dev/null
@@ -0,0 +1 @@
+6
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..d1e0b78
--- /dev/null
@@ -0,0 +1,261 @@
+Source: ecore
+Section: libs
+Priority: optional
+Maintainer: Falko Schmidt <falko@alphagemini.org>
+Build-Depends: debhelper (>= 6), cdbs, libeet-dev, libevas-dev, libssl-dev, libcurl4-openssl-dev, libxcursor-dev, libxss-dev, libxrender-dev, libxinerama-dev, libxrandr-dev, libxext-dev, libxp-dev, libxcomposite-dev, libjpeg62-dev, libxdamage-dev, doxygen
+Standards-Version: 3.7.3
+Homepage: http://www.enlightenment.org
+
+Package: libecore0
+Architecture: any
+Provides: libecore
+Depends: ${shlibs:Depends}
+Description: Core abstraction layer for enlightenment DR 0.17
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+Package: libecore-con0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-con
+Description: Ecore Connection Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Connection Library.
+Package: libecore-config0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-config
+Description: Ecore Enlightened Property Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Enlightened Property Library.
+Package: libecore-evas0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-evas
+Description: Ecore Evas Wrapper Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Evas wrapper functions.
+Package: libecore-fb0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-fb
+Description: Ecore frame buffer system functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore frame buffer system functions.
+Package: libecore-file0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-file
+Description: Ecore File Library
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore File Library.
+Package: libecore-imf0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}, libecore-imf-evas0
+Provides: libecore-imf
+Description: Ecore Input Method Framework module 
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore Input Method Framework module.
+Package: libecore-imf-evas0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-imf-evas
+Description: Evas helpers for the Ecore Input Method Framework
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Evas helper functions for the Ecore Input Method
+ Framework module.
+Package: libecore-ipc0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-ipc
+Description: Ecore inter-process communication functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore inter-process communication functions.
+Package: libecore-job0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-job
+Description: Ecore job dealing functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains functions for dealing with Ecore jobs.
+Package: libecore-txt0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-txt
+Description: Ecore text encoding conversion functions
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore text encoding conversion functions.
+Package: libecore-x0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Provides: libecore-x
+Description: Ecore functions for dealing with the X Windows System
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains the Ecore wrapper and convenience functions for using
+ the X Windows System.
+Package: libecore0-all
+Architecture: any
+Section: libdevel
+Depends: libecore0 (= ${Source-Version}), libecore-config0, libecore-con0, libecore-evas0, libecore-fb0, libecore-file0, libecore-imf0, libecore-ipc0, libecore-job0, libecore-txt0, libecore-x0
+Provides: libecore-all
+Description: Virtual package providing all available Ecore modules.
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This virtual package provides all available Ecore modules.
+
+Package: libecore-dev
+Architecture: any
+Section: libdevel
+Suggests: libecore-doc
+Depends: libecore0 (= ${binary:Version}),
+         libecore-con0 (= ${binary:Version}),
+         libecore-config0 (= ${binary:Version}),
+         libecore-evas0 (= ${binary:Version}),
+         libecore-fb0 (= ${binary:Version}),
+         libecore-file0 (= ${binary:Version}),
+         libecore-imf0 (= ${binary:Version}),
+         libecore-ipc0 (= ${binary:Version}),
+         libecore-job0 (= ${binary:Version}),
+         libecore-txt0 (= ${binary:Version}),
+         libecore-x0 (= ${binary:Version}),
+         libeet-dev, libevas-dev, pkg-config,
+         libssl-dev, libcurl4-openssl-dev, libxcursor-dev, libxss-dev,
+         libxrender-dev, libxinerama-dev, libxrandr-dev, libxext-dev,
+         libxp-dev, libxcomposite-dev, libxdamage-dev
+Description: Ecore headers and static libraries
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package contains headers and static libraries for the Ecore library.
+
+Package: libecore-doc
+Architecture: all
+Section: doc
+Enhances: libecore-dev
+Description: Ecore API Documentation
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package provides development documentation (html and manpages)for the
+ Ecore library.
+
+Package: libecore-bin
+Architecture: any
+Section: utils
+Depends: ${shlibs:Depends}
+Description: Tools that support Ecore
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications.
+ .
+ This package includes:
+  - ecore_config: allows creation/editing of ecore_config databases
+
+Package: libecore-dbg
+Architecture: any
+Section: libdevel
+Priority: extra
+Depends: libecore0 (= ${binary:Version})
+Description:  Core abstraction layer for enlightenment DR 0.17
+ This is the core event abstraction layer and X abstraction layer that makes
+ doing selections, Xdnd, general X stuff, and event loops, timeouts and idle
+ handlers fast, optimized, and convenient. It's a separate library so anyone
+ can make use of the work put into Ecore to make this job easy for
+ applications
+ .
+ This package contains unstripped shared libraries. It is provided primarily
+ to provide a backtrace with names in a debugger, this makes it somewhat easier
+ to interpret core dumps. The libraries are installed in /usr/lib/debug and
+ are automatically used by gdb.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..d086d3b
--- /dev/null
@@ -0,0 +1,42 @@
+This package was debianized by Falko Schmidt <falko@alphagemini.org> on
+Fri,  4 Apr 2008 15:13:56 +0000.
+
+The source code is from the e17/libs/ecore module of the enlightenment CVS
+tree. For more information, see:
+
+ http://www.enlightenment.org
+Upstream Authors:
+       
+       Enlightenment team <enlightenment-devel@lists.sourceforge.net>
+
+Copyright:
+
+       Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+License:
+
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies of the Software, its documentation and marketing & publicity
+  materials, and acknowledgment shall be given in the documentation,
+  materials and software packages that this Software was used.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+  THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+On Debian systems, the complete text of the BSD License can be found
+in `/usr/share/common-licenses/BSD'.
+
+The Debian packaging is:
+  (C) 2006 2007,Debian Pkg-e Team <pkg-e-devel@lists.alioth.debian.org>
+  and is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/debian/ecore_config.1 b/debian/ecore_config.1
new file mode 100644 (file)
index 0000000..ea857f4
--- /dev/null
@@ -0,0 +1,54 @@
+.\"Created with GNOME Manpages Editor Wizard
+.\"http://gmanedit.sourceforge.net
+.\"Sergio Rua <srua@gpul.org>
+.\"
+.TH ecore_config 1 "January 18, 2007" "Ecore"
+
+.SH NAME
+ecore_config \-that allow creation and editing of ecore_config databases
+
+.SH SYNOPSIS
+.B ecore_config
+.RI \-a\ |\ \-k\ [\-g|\-d|\-b|\-f|\-i|\-r|\-s|\-t]\ [\-c]
+.br
+
+.SH DESCRIPTION
+.PP
+\fBecore_config\fP is a tool that allows creation and editing of 
+ecore_config databases used by the programs relying on libecore
+
+.SH OPTIONS
+\fIecore_config\fP accepts the following options:
+.TP
+.B \-c, \-\-file=FILE
+Specify the config file to read
+.TP
+.B \-k, \-\-key=KEY
+Select the key KEY. Must be given for all commands except \-a
+.TP
+.B \-g, \-\-get
+get key
+.TP
+.B \-d, \-\-del
+delete key
+.TP
+.B \-b, \-\-bool=VALUE
+set boolean
+.TP
+.B \-f, \-\-float=VALUE
+set float
+.TP
+.B \-i, \-\-int=VALUE
+set integer
+.TP
+.B \-r, \-\-rgb=VALUE
+set RGBA
+.TP
+.B \-s, \-\-string=VALUE
+set string
+.TP
+.B \-t, \-\-theme=VALUE
+set theme
+.SH AUTHOR
+This manual page was written by Albin Tonnerre <albin.tonnerre@gmail.com> 
+for the Debian GNU/Linux system (but may be used by others).
diff --git a/debian/libecore-bin.install b/debian/libecore-bin.install
new file mode 100644 (file)
index 0000000..088dd41
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/bin/ecore_config
diff --git a/debian/libecore-con0.install b/debian/libecore-con0.install
new file mode 100644 (file)
index 0000000..1c47c56
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_con.so.*
diff --git a/debian/libecore-config0.install b/debian/libecore-config0.install
new file mode 100644 (file)
index 0000000..32c5d31
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_config.so.*
diff --git a/debian/libecore-dev.install b/debian/libecore-dev.install
new file mode 100644 (file)
index 0000000..497be28
--- /dev/null
@@ -0,0 +1,4 @@
+debian/tmp/usr/include/*.h
+debian/tmp/usr/lib/libecore*.a
+debian/tmp/usr/lib/libecore*.so
+debian/tmp/usr/lib/pkgconfig/*
diff --git a/debian/libecore-evas0.install b/debian/libecore-evas0.install
new file mode 100644 (file)
index 0000000..d13df80
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_evas.so.*
diff --git a/debian/libecore-fb0.install b/debian/libecore-fb0.install
new file mode 100644 (file)
index 0000000..0bdee71
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_fb.so.*
diff --git a/debian/libecore-file0.install b/debian/libecore-file0.install
new file mode 100644 (file)
index 0000000..b436295
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_file.so.*
diff --git a/debian/libecore-imf-evas0.install b/debian/libecore-imf-evas0.install
new file mode 100644 (file)
index 0000000..8476e83
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_imf_evas.so.*
diff --git a/debian/libecore-imf0.install b/debian/libecore-imf0.install
new file mode 100644 (file)
index 0000000..a4a971d
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_imf.so.*
diff --git a/debian/libecore-ipc0.install b/debian/libecore-ipc0.install
new file mode 100644 (file)
index 0000000..6b15c13
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_ipc.so.*
diff --git a/debian/libecore-job0.install b/debian/libecore-job0.install
new file mode 100644 (file)
index 0000000..80758d5
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_job.so.*
diff --git a/debian/libecore-txt0.install b/debian/libecore-txt0.install
new file mode 100644 (file)
index 0000000..6c774ce
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_txt.so.*
diff --git a/debian/libecore-x0.install b/debian/libecore-x0.install
new file mode 100644 (file)
index 0000000..1556912
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore_x.so.*
diff --git a/debian/libecore0.install b/debian/libecore0.install
new file mode 100644 (file)
index 0000000..7eef82a
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libecore.so.*
diff --git a/debian/rules b/debian/rules
new file mode 100644 (file)
index 0000000..3d51bbb
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+
+#DEB_INSTALL_MANPAGES_libecore-doc := $(DEB_SRCDIR)/doc/man/man3/*.3
+DEB_INSTALL_MANPAGES_libecore-bin := debian/ecore_config.1
+DEB_DH_STRIP_ARGS := --dbg-package=libecore-dbg
+DEB_CONFIGURE_EXTRA_FLAGS := --enable-ecore-fb --disable-ecore-directfb \
+       --disable-ecore-evas-dfb --enable-ecore-evas-fb --disable-rpath \
+       --enable-openssl
+DEB_MAKE_CLEAN_TARGET := clean
+
+build/libecore-doc::
+       cd $(DEB_SRCDIR) && doxygen
+
+install/libecore-doc::
+       mkdir -p debian/libecore-doc/usr/share/doc/libecore-doc/
+       cp -R $(DEB_SRCDIR)/doc/html debian/libecore-doc/usr/share/doc/libecore-doc/
+       cd $(DEB_SRCDIR)/doc/man/man3 && ls -1 | grep -vi ecore | xargs rm
+
+clean::
+       rm -rf $(DEB_SRCDIR)/doc/html $(DEB_SRCDIR)/doc/latex $(DEB_SRCDIR)/doc/man
+       mkdir -p $(DEB_SRCDIR)/doc/html
+       cp $(DEB_SRCDIR)/doc/img/*.png $(DEB_SRCDIR)/doc/html/
+       cp $(DEB_SRCDIR)/doc/img/*.gif $(DEB_SRCDIR)/doc/html/
+       ./autogen.sh --prefix=/usr $(DEB_CONFIGURE_EXTRA_FLAGS) 
+
diff --git a/doc/.cvsignore b/doc/.cvsignore
new file mode 100644 (file)
index 0000000..cc370ed
--- /dev/null
@@ -0,0 +1,3 @@
+html
+latex
+man
diff --git a/doc/e.css b/doc/e.css
new file mode 100644 (file)
index 0000000..604ee7f
--- /dev/null
+++ b/doc/e.css
@@ -0,0 +1,161 @@
+body {
+    background: url("b.png");
+    background-repeat: repeat-x;
+    background-position: top left;
+    background-color: #f4f4f4;
+    text-align: center;
+    font-family: sans-serif;
+    padding: 0;
+    margin: 0;
+}
+
+div.main {
+    margin: 1em auto;
+    vertical-align: top;
+    font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
+    color: #444444;
+    font-size: 0.8em;
+    text-align: justify;
+    width: 80%;
+}
+
+td.t { background-image:url("t.gif"); }
+td.t[class] { background-image:url("t.png"); }
+td.tl { background-image:url("tl.gif"); }
+td.tl[class] { background-image:url("tl.png"); }
+
+td.nav, td.lnav,  td.rnav {
+   align: middle;
+   text-align: center;
+   vertical-align: middle;
+   width: 100px;
+   height: 25px;
+   font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
+   color: #000000;
+   font-size: 9px;
+   font-weight: bold;
+   white-space: no-wrap;
+}  
+
+td.lnav[class] { background-image:url("n.png"); }
+td.lnav[class] { background-image:url("n.png"); }
+td.rnav { background-image:url("n.gif"); }
+td.rnav[class] { background-image:url("n.png"); }
+
+hr {
+    width: 200px;
+    height: 1px;
+    background: #dddddd;
+    border: 0;
+}
+
+p { color: #444444 ;}
+p.tiny, small {
+    color: #888888;
+    font-size: 0.5em;
+}
+
+h1 { 
+    text-align: center;
+    font-size: 1.3em; 
+}
+
+h2 { font-size: 1.1em; }
+h3 { font-size: 0.9em; }
+
+span.keyword { color: #008000; }
+span.keywordtype { color: #604020; }
+span.keywordflow { color: #e08000; }
+span.comment { color: #800000; }
+span.preprocessor { color: #806020; }
+span.stringliteral { color: #002080; }
+span.charliteral { color: #008080; }
+
+a:link {
+    color: #445566;
+    text-decoration: underline;
+}  
+   
+a:visited {
+    color: #667788;
+    text-decoration: underline;
+}  
+
+a:active {                
+    color: #88cccc;
+    text-decoration: none;
+}
+
+a:hover {
+    color: #112266;
+    text-decoration: underline;
+}  
+
+a.nav {
+    text-decoration: none;
+    display: block;
+}
+a.nav:link, a.nav:visited { color: #888888; }
+a.nav:active { color: #000000; }
+a.nav:hover { color: #444444; }
+a.code:link, a.code:visited { text-decoration: none; }
+
+div.fragment {
+    font-size: 1em;
+    border: 1px dotted #cccccc;
+    background-color: #ffffff;
+    text-align: left;
+    vertical-align: middle;
+    padding: 2px;
+    margin-left: 25px;
+    margin-right: 25px;
+    overflow: auto;
+}
+
+td.indexkey {
+    font-weight: bold;
+    padding-left: 10px;
+    padding-right: 0;
+    padding-top: 2px;
+    padding-bottom: 0px;
+    margin: 0;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px dotted #cccccc;
+    border-right: 0px dotted #cccccc;
+}
+
+td.indexvalue {
+    font-style: italic;
+    padding-right: 10px;
+    padding-left: 0;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    margin: 0;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px dotted #cccccc;
+    border-left: 0px dotted #cccccc;
+}
+
+.mdescRight { font-style: italic; }
+.memitem {
+    padding-left: 2px;
+    padding-right: 2px;
+    border: 1px dotted #cccccc;
+    background-color: #ffffff;
+}
+.memname {
+    white-space: nowrap;
+    font-weight: bold;
+}
+.paramname { font-weight: normal; }
+
+div.ah {
+    border: thin solid #888888;
+    font-weight: bold;
+    margin-bottom: 3px;
+    margin-top: 3px;
+}
+
diff --git a/doc/ecore.css b/doc/ecore.css
new file mode 100644 (file)
index 0000000..6117b39
--- /dev/null
@@ -0,0 +1,178 @@
+td.md { 
+ background-color: #ffffff;
+ font-family: monospace;
+ text-align: left;
+ vertical-align: center;
+ font-size: 10;
+ padding-right  : 1px; 
+ padding-top    : 1px; 
+ padding-left   : 1px; 
+ padding-bottom : 1px; 
+ margin-left    : 1px; 
+ margin-right   : 1px; 
+ margin-top     : 1px; 
+ margin-bottom  : 1px  
+}
+td.mdname { 
+ font-family: monospace;
+ text-align: left;
+ vertical-align: center;
+ font-size: 10;
+ padding-right  : 1px; 
+ padding-top    : 1px; 
+ padding-left   : 1px; 
+ padding-bottom : 1px; 
+ margin-left    : 1px; 
+ margin-right   : 1px; 
+ margin-top     : 1px; 
+ margin-bottom  : 1px  
+}
+h1
+{
+ text-align: center;
+ color: #333333
+}
+h2
+{
+ text-align: left;
+ color: #333333
+}
+h3
+{
+ text-align: left;
+ color: #333333
+}
+a:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: bold;
+}
+a:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: bold;
+}
+a:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: bold;
+}
+a.nav:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: normal;
+}
+a.nav:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: normal;
+}
+a.nav:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: normal;
+}
+a.qindex:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: normal;
+}
+a.qindex:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: normal;
+}
+a.qindex:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: normal;
+}
+p
+{
+ color: #000000;
+ font-family: sans-serif;
+ font-size: 10;
+}
+body { 
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ background-color: #dddddd;
+ color: #000000;
+ font-family: sans-serif;
+ padding: 8px;
+ margin: 0;
+}
+div.fragment
+{
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ border: thin solid #888888;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: left;
+ vertical-align: center;
+ font-size: 12;
+}
+hr
+{
+ border: 0;
+ background-color: #000000;
+ width: 80%;
+ height: 1;
+}
+dl
+{
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ border: thin solid #aaaaaa;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: left;
+ vertical-align: center;
+ font-size: 12;
+}
+em
+{
+  color: #334466;
+  font-family: courier;
+  font-size: 10;
+  font-style: normal;
+}
+
+div.nav
+{
+ border: thin solid #000000;
+ background-color: #ffffff;
+ padding: 1px;
+ text-align: center;
+ vertical-align: center;
+ font-size: 12;
+}
+div.body
+{
+ border: thin solid #000000;
+ background-color: #ffffff;
+ padding: 4px;
+ text-align: left;
+ font-size: 10; 
+}
+div.diag
+{
+ border: thin solid #888888;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: center;
+ font-size: 8; 
+}
diff --git a/doc/foot.html b/doc/foot.html
new file mode 100644 (file)
index 0000000..0d3303d
--- /dev/null
@@ -0,0 +1,6 @@
+  </div>
+  <hr />
+  <p class="tiny">Copyright &copy; Enlightenment.org</p>
+  <p class="tiny">$projectname Documentation Generated: $datetime</p>
+ </body>
+</html>
diff --git a/doc/head.html b/doc/head.html
new file mode 100644 (file)
index 0000000..a68f72a
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+ <head>
+  <title>$title</title>
+  <link href="e.css" rel="stylesheet" type="text/css" />
+ </head>
+
+<body>
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+  <tr>
+   <td class="t" width="50%" valign="top" align="left">
+     <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=index">Home</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=news">News</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=about">About</a></td></tr>
+     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=download">Download</a></td></tr>
+    </table>
+   </td>
+   <td class="tl" width="612" height="250" valign="bottom" align="center">
+    <img src="_.gif" width="612" height="1" />
+    <table border="0" cellpadding="0" cellspacing="4px">
+     <tr>
+      <td class='nav'><a class='nav' href="index.html">Main&nbsp;Page</a></td>
+      <td class='nav'><a class='nav' href="modules.html">Modules</a></td>
+      <td class="nav"><a class="nav" href="files.html">Files</a></td>
+      <td class='nav'><a class='nav' href="annotated.html">Data Structures</a></td>
+      <td class="nav"><a class="nav" href="globals.html">Globals</a></td>
+      <td class="nav"><a class="nav" href="pages.html">Related Pages</a></td>
+     </tr>
+    </table>
+    <hr />
+   </td>
+   <td class="t" width="50%" valign="top" align="right">
+    <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
+     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=support">Support</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contribute">Contribute</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contact">Contact</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://trac.enlightenment.org/e">Tracker</a></td></tr>
+    </table>
+   </td>
+  </tr>
+ </table>
+
+ <div class="main">
diff --git a/doc/img/_.gif b/doc/img/_.gif
new file mode 100644 (file)
index 0000000..60fa7a1
Binary files /dev/null and b/doc/img/_.gif differ
diff --git a/doc/img/b.png b/doc/img/b.png
new file mode 100644 (file)
index 0000000..04e5ac8
Binary files /dev/null and b/doc/img/b.png differ
diff --git a/doc/img/ecore.png b/doc/img/ecore.png
new file mode 100644 (file)
index 0000000..47597a8
Binary files /dev/null and b/doc/img/ecore.png differ
diff --git a/doc/img/ecore.xcf b/doc/img/ecore.xcf
new file mode 100644 (file)
index 0000000..2fdf355
Binary files /dev/null and b/doc/img/ecore.xcf differ
diff --git a/doc/img/ecore_big.eps b/doc/img/ecore_big.eps
new file mode 100644 (file)
index 0000000..97535e4
--- /dev/null
@@ -0,0 +1,45178 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.11 by Peter Kirchgessner
+%%Title: /home/raster/C/ecore/doc/img/ecore_big.eps
+%%CreationDate: Fri Feb 21 15:39:04 2003
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 0 0 171 171
+%%EndComments
+%%BeginPreview: 255 256 1 256
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000001000080000000000000000000000000
+% 0000000000000000000000000000000001400100000000000000000000000000
+% 0000000000000000000000000000020002400240000000000000000000000000
+% 0000000000000000000000000000010005500150000000000000000000000000
+% 0000000000000000000000000000028002900520000000000000000000000000
+% 0000000000000000000000000000014005240a48010000000000000000000000
+% 000000000000000000000000000002500aa80aa4024000000000000000000000
+% 000000000000000000000000000001480a492848048000000000000000000000
+% 000000000000000000000000000005542aaa2a944a2000000000000000000000
+% 0000000000000000000000000100054895525520894800000000000000000000
+% 00000000000000000000000000a005552a94aa55142000000000000000000000
+% 0000000000000000000000000140054a2aa55488294800000000000000000000
+% 00000000000000000000000000a80aa8d5555525525400000000000000000000
+% 00000000000000000000000001542aaaaaaaaaa9548092000000000000000000
+% 00000000000000000000000001520aaaaa955492a52a05000000000000000000
+% 0000000000000000000000000155555555555525524849000000000000000000
+% 00000000000000000000000001541552aaaaaaaaa92294800000000000000000
+% 0000000000000000000000400155aaabffdd552aa49452a00000000000000000
+% 00000000000000000000000001552af5556feaaaaaa54a400000000000000000
+% 00000000000000000000005002aaaf5affd57d55491524980000000000000000
+% 0000000000000000000000280aaab555557bd6d55254a9500000000000000000
+% 00000000000000000000001602aaaaaabdad7d754aaa85200000000000000000
+% 00000000000000000000002952adaab6d56ad7dea952a8824000000000000000
+% 000000000000000000000015456b56aaab5b5d75452a25540000000000000000
+% 00000000000000000000002a8adcaad5b56aabdfdaa549009000000000000000
+% 00000000000000000000002aa563555aadad6ab5655494aa0200000000000000
+% 00000000000000000000002aadad6aab6ab5ad6fdaaa4924a000000000000000
+% 00000000000000000000002ab2aaad6d56d6b5aaba9492520800000000000000
+% 00000000000000000000002aad5555aadaaad557eca92554a100000000000000
+% 0000000000000000000400aab2aad55555b556aabaaa48aa8800000000000000
+% 00000000000000000000002b6d555ab6db56aad56fa92b552200000000000000
+% 00000000000000000002825552aaab55556adaaaaa9244aa4800000000000000
+% 00000000000000000000a02dad55aaadb6ad55555fd493555000000000000000
+% 00000000000000000002a4ab5555556aaad5ab55556a4aaa8480000000000000
+% 00000000000000000000aa2caaaaadadb6b6b55555aa936aa800000000000000
+% 0000000000000000000155d75555557b6d5556aaaaf525550000000000000000
+% 000000000000000000015528aaaabfdfdbedaaaaaaae936aa800000000000000
+% 00000000000000000000ab6f5555ea5576bab555556aaaaa8100000000000000
+% 00000000000000000000acd155555adfddef5555555b45552800000000000000
+% 00000000000000000002ab2eaaafd5a9775ad55554ad76d48000000000000000
+% 00000000000000000000ad52aabaab56ddf7f5555292aaaa5000000000000000
+% 00000000000000000004b555556ead6ab75d5aaaaaadaaa90000000000000000
+% 00000000000000000001555555b155b6ddf7f6aa95555554a000000000000000
+% 00000000000000001408755556eebaaaaaad5f555492aaa20000000000000000
+% 000000000000000009129aaaab515555557bf5aaaaab55548000000000000000
+% 0000000000000000056aaaaaadaeaaab6aaeaf555294aaa10000000000000000
+% 0000000000000000055555555b52aaad5555faf4aa52aa941000000000000000
+% 000000000000000002aaaaaad4ad55555555afaa9548aaa10000000000000000
+% 000000000000000001552aab6aaaaaaaaaaafafaa928554a0000000000000000
+% 00000000000000000156d556aaaaaaaaaaaaadad25402a900000000000000000
+% 00000000000000000155555555555555555556d6aa482aa48000000000000000
+% 000000000000000000aaaaaad555555555555b5a928015280000000000000000
+% 000000000000000004aaaaad9555555555552aab540015420000000000000000
+% 0000000000000000006aaab66aaaaaaaaaaaa75521000aa84000000000000000
+% 000000000000000005555555555555555554aaaac80005520000000000000000
+% 0000000000000000006aaad555555555554a955540000aa48000000000000000
+% 00000000000000000915555aaaaaaaaaaaa952aaa00005520000000000000000
+% 0000000000000000005555aaaaaaaaaaaa9528aaa00002489000000000000000
+% 000000000000000005555555555555555554a57aa00012aa2000000000000000
+% 0000000000000000002aab555555555554aa880d500042554000000000000000
+% 0000000000000000095555555552aaaaaa912036a80201548000000000000000
+% 000000000000000000555555554a55554954000d501000952800000000000000
+% 000000000000000002aaaaaaaaaaaaa92a420017284000554100000000000000
+% 0000000000000000005555555554952552900004d40000952800000000000000
+% 000000000000000005aaaaaaaa8952aa4920000ba8000052a200000000000000
+% 000000000000000000aaad555552554954400005540000954800000000000000
+% 000000000000000000aaaaaaaa8494aa42800002d200004aa480000000000000
+% 0000000000000000035555555528a510942a0002aa00002aa900000000000000
+% 0000000000000000015555555480094400000004ea0000495200000000000000
+% 0000000000000000015555555554922800000001540000255440000000000000
+% 000000000000000002aaaaaaa4aa0000000000015400004aa900000000000000
+% 000000000000000002aaaaaa95494400000000027500002aaa48000000000000
+% 000000000000000002aad55554aa5020000000005a0000456a80000000000000
+% 000000000000000005552aaaaa928a8900000000a90000125420000000000000
+% 00000000000000000552d55524aa5250000000015a0000256a80000000000000
+% 0000000000000000054aa924aa912484400000002d00000aaaa8000000000000
+% 0000000000000000052aa55549254929000000013a000024b500000000000000
+% 000000000000000005555aaaaa489540080000002500000aad50000000000000
+% 00000000000000000aaaaa5492a52914000000013c000022b544000000000000
+% 00000000000000000aaaaaa2aa925241000000005500000a6d28000000000000
+% 00000000000000000aaaab552a554a9400000000950000255aa0000000000000
+% 000000000000000015555554b554a921000000002c000009754a000000000000
+% 00000000000000000aaaaaa97d529244000000012a0000252ea0000000000000
+% 00000000000000002aaab5452f4aa510000000002d0000095aaa000000000000
+% 00000000000000000aa556a8fbd52880000000002a0000255d50000000000000
+% 0000000000000000252aaa856ef4852400000000b400000936a5000000000000
+% 00000000000000001aa56a28ddbd280000000000ac0000255b50000000000000
+% 00000000000000005255ad457bef4aa0000000005400000956aa400000000000
+% 0000000000000000154aa8926f7bd10a000000002c0000253d50800000000000
+% 00000000000000002a52b524dadef450000000002a000012abaa000000000000
+% 00000000000000005495a89277b5bd00000000003400004a7ea8800000000000
+% 000000000000000012a55249dd6fef040000000004000012ab52000000000000
+% 0000000000000000552ab524b7dabbd0000000000000004abed4800000000000
+% 000000000000000014a9a092ed6feef000000000000000126b52000000000000
+% 000000000000000092a55524b55abbbc000000000000004abea8800000000000
+% 000000000000000035556249d6ab6eef0000000000000092b5d5000000000000
+% 000000000000000044958892aab5bbbbc0000000000000253f54200000000000
+% 00000000000000009552aa48b5556eeef000000000000094b5a9400000000000
+% 00000000000000000aaaa125555555bbbc0000000000004afed4000000000000
+% 0000000000000000a9254a90aaaaad6eef0000000000012555aa800000000000
+% 00000000000000000aaa944a544556dbdbc0000000000094ff54000000000000
+% 0000000000000000aaa952a4a91255b6bef000000000012ab5a9400000000000
+% 00000000000000000a4a49125249555df7bc000000000252ff6a000000000000
+% 0000000000000000aaa924a948922aab5def000000000095d5a9200000000000
+% 00000000000000000a92aa9252008556f77bc00000000554ff54400000000000
+% 0000000000000000a52a49254892295aaddef00000000125aad5000000000000
+% 000000000000000014a49254920044a5bb77be0000000a55ff54400000000000
+% 00000000000000008a92aa924400092aaeddeb80000002ab6ad5000000000000
+% 0000000000000000255492495000809555b77f4000001491ff54400000000000
+% 00000000000000004a4a495524000a22aaeddbf000000557aad2800000000000
+% 80000000000000009551552490800049555b76de00002aab7f54000000000000
+% 0000000000000000052a4a9552000004aad6dff700001257ead5000000000000
+% 80000000000000005549245244000091155bb55de0004aa6df50400000000000
+% 00000000000000000aaa92aaa80000024aaaefff7800155ff5aa800000000000
+% 8000000000000000a54929492100000011555aabde00952dbea8000000000000
+% 00000000000000000aaa452aaa000004a4ab6ffef780355feb55000000000000
+% 8000000000000000254928a494000000024aaaabbde128bb7d50400000000000
+% 000000000000000009524a955200000008955b7eef786937d6aa000000000000
+% 800000000000000052c952524a0000000122aad5bbdf104efda4800000000000
+% 00000000000000000554894aa900000000092abbeef6d0abaaa8000000000000
+% 000000000000000012a92aaa552000000444a2aebbbfe012fea5000000000000
+% 800000000000000024b252494a80000000110155d6eda02baaa8000000000000
+% 800000000000000002a9255552400000000200aabdbbc011fb52000000000000
+% 000000000000000014aa949295400000000000256bef000aad44000000000000
+% 800000000000000001592aaa54a0000000020014aebb00057550000000000000
+% 0000000000000000155651254a9000000008200a95d600026d49000000000000
+% 800000000000000000ad4aaaa954000000008015557c00055aa0000000000000
+% 00000000000000000a569494952a00000054000495a80000aa88000000000000
+% 8000000000000000015552aaaaa4800001010002aaaf50013551000000000000
+% 000000000000000008aba525249540000454240252b1ea004a80000000000000
+% 8000000000000000022d54a955525000910080009552b5402aa8000000000000
+% 000000000000000000abd295292a8aa524aa0000a4a2afe81500000000000000
+% 800000000000000004556952a549524892009200554152be0aa8000000000000
+% 00000000000000000112b52a54aa552a495400019200ab6bc500000000000000
+% 800000000000000000554aa54a9292a5240148056a0152dd5150000000000000
+% 00000000000000000220aa54a955544892aa008aaa00a555aa02000000000000
+% 8000000000000000008a5392952492aa4840a215d4004ab6aad0000000000000
+% 00000000000000000029285552aaaa9292950856a00029555504000000000000
+% 80000000000000000084956a4a4924a449204156a0004aaaaa50000000000000
+% 000000000000000000292a955555552aa44a955aa80012aaaa80000000000000
+% 800000000000000000024554a924929112900576aa00292aaa54800000000000
+% 000000000000000000549a954aaaaa4a49255ad4158005555540000000000000
+% 800000000000000000012a55a92524a95248ab541520148aaa94000000000000
+% 00000000000000000014d552aaa8aa9224935da0165402a95549000000000000
+% 80000000000000000022b4955a4a924a922cb54014880a455522200000000000
+% 0000000000000000002aad24a7a95528a555f500192501155554400000000000
+% 80000000000000000045a95296d692a52afd8a08125442a2aaa9000000000000
+% 0000000000000000002d6c8a51fd6a556b5552204a92814a5552400000000000
+% 80000000000000000055aa52aa57b7db5daaa58004aa2892aaa9100000000000
+% 000000000000000000aab52552bd6aaaaa5506a109294254aaaa420000000000
+% 8000000000000000005b5496cb47dd6b555055500a952892aaa9100000000000
+% 000000000000000001aaad25527577aaa92505240455422aaaaa400000000000
+% 80000000000000000155684d490b2d6d54885494054a54925555290000000000
+% 0000000000000000005b5d35a4aa5bb542e28249225549255552400000000000
+% 80000000000000000002a8aa9295445295142927849552555554920000000000
+% 000000000000000000295955492a2aa924a904aac2a54aa4aaaa440000000000
+% 8000000000000000000552aaa4aaa4aa49545247a11554955551100000000000
+% 00000000000000000052b9556955495492a90492f2aaaaaaaaa4a08000000000
+% 8000000000000000000552ada255255525244257a8455555554a040000000000
+% 000000000000000000aaaab568aa92aa4955148afd5555555524a00000000000
+% 800000000000000000055555e355495492aa82a3544aaaaaaa91080000000000
+% 00000000000000000052b555a95525552512a916ea92aaaaaa4a200000000000
+% 8000000000000000008aaaabe2aa92aa48abc2535d5555555490000000000000
+% 00000000000000000012aaab6aaaa55592a5648ad549555aaa44800000000000
+% 80000000000000000084aaafc555c954a529c92555b6aaab5490080000000000
+% 00000000000000000029577aeaabc54bc49572536aaad5b55221000000000000
+% 80000000000000000082aad7aaab55559253d12555555aaaaa84000000000000
+% 00000000000000000014556d4aabc52b454ab49556aaab555420000000000000
+% 800000000000000000214ab7d55754abe893d922aab6d55aa940000000000000
+% 00000000000000000084955a9557e556c52aaa4aaaaaaaaaa408000000000000
+% 800000000000000000012aadeaaed54da947752aaaaab55552a0000000000000
+% 000000000000000000124ab7555dea57f22dac92aad6d6aa9400000000000000
+% 8000000000000000000012aadf5ba556b4956b65555aaaaa4940000000000000
+% 000000000000000000024955b5f7692fe2a75aaaaaab55555208000000000000
+% 8000000000000000000012aadeaeeaad5915ab5555556aa88440000000000000
+% 0000000000000000000084ab55fbd24ffa4b756aaadaaaa52880000000000000
+% 80000000000000000000292ab6aeff5aafa6ad56d556d5524200000000000000
+% 00000000000000000000025555fbabf7faddd5aaadaaaa889010000000000000
+% 80000000000000000000088aad56feaeaf76b6b5555b55520480000000000000
+% 00000000000000000000212955bbabfbfadb5ad6daaaaa24a000000000000000
+% 800000000000000000000245556d7eaeafb6eb5b555555480000000000000000
+% 0000000000000000000000125557d5fbfadb5ab56aaaaa410400000000000000
+% 8000000000000000000004a4955abb56adb6d6d6ad5554941000000000000000
+% 0000000000000000000000012aaad6fdf76dbb6db55552200000000000000000
+% 80000000000000000000004a49555b575adb6aaaaaaaa9400000000000000000
+% 00000000000000000000000092ab6aedb76dadb6d55524088000000000000000
+% 800000000000000000000009255556b6dadb7555555249400000000000000000
+% 000000000000000000000020089555556db6ab6daaa492100000000000000000
+% 8000000000000000000000009252aadbaaaad555551244400000000000000000
+% 0000000000000000000000000125555555b6ad5554a490800000000000000000
+% 800000000000000000000000244895555aaab555524904000000000000000000
+% 000000000000000000000000011252aaaaaaaaaaaa9020800000000000000000
+% 80000000000000000000000004448a5555555555442244000000000000000000
+% 000000000000000000000000001124aaaaaaaa49294000000000000000000000
+% 8000000000000000000000000104491252aaa492440800000000000000000000
+% 0000000000000000000000000020024924952924912080000000000000000000
+% 8000000000000000000000000001289249224489240000000000000000000000
+% 0000000000000000000000000004022492492922008000000000000000000000
+% 8000000000000000000000000000008924924208540000000000000000000000
+% 0000000000000000000000000000121000249441000000000000000000000000
+% 8000000000000000000000000000002249010008000000000000000000000000
+% 0000000000000000000000000000000000482200240000000000000000000000
+% 8000000000000000000000000000004001024020000000000000000000000000
+% 0000000000000000000000000000000220000000000000000000000000000000
+% 8000000000000000000000000000000000080000000000000000000000000000
+% 0000000000000000000000000000000000004000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+%%EndPreview
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+0.000028 0.000028 translate
+% Translate to begin of first scanline
+0.000000 170.078740 translate
+170.078740 -170.078740 scale
+% Image geometry
+1720 1720 8
+% Transformation matrix
+[ 1720 0 0 1720 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 1720 string def
+/gstr 1720 string def
+/bstr 1720 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:      3234763 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W/qhqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W.oKqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W,siqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQW.p\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQVWp\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQUrp\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU9*qtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU8Sqtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU7nqtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OrjrOr7.qYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OrLrK7-WqYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OqkrE'$rqYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp%ncj]`#P@qYU*XpuD,<q"jg_qSi?sqW[nPr;$<Vrdk*#s+13$
+s2P(h~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp%n`Jr/pmQqt]aVj7i'<qYC!a`V\rsl218Rq>KUXJcC<$JcC<$
+`rCP~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp&"Vfqtg3cnG)&<nG)kUqYJ2.lMBcBq#'sdlMcA7JcC<$JcEai
+J,~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<9g]Y+6W!P\F,q=OIVpZhJHp[\+Uq>'m9qq:i6qt^0c
+rTjH6s+13$s+13js*t~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<6FOSk4@qYL$[q"OOJp@n=Pq"jg^qU>>pqX47Vr;$<W
+rdk*#s+13$s2Y.i~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<5h<r?#!qYL$[q"OOJp@n=Pq"jg^qU>>pqX47Vr;$<W
+rdk*#s+13$s2Y.i~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCVYXT#m3]`>eFq=OIXpYY]?p[e1Vq>'m]qZ+\"qsXCM
+q=FIPqt^0crTsN7s+13$s+13ks*t~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCYZN0*q!rV?*\q=ie?q=jLUqYBs`p\OrUkPO`En+lSO
+nGE%Zq>K[ZJcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCYZ=]YE$rV?*\q=ie?q=jLUqYBs`p\OqmkPO`En+lSO
+nGE%Zq>K[ZJcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcYrrOi0Ds1\1$qY0aXl1OfEqY0XWqYBj]rVQW8n,)YOhtd!B
+nb`1\q>K[ZJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcYRs,d,?p%\CXp\*kEp\+IXo_A:YpA4abs-<'MnbV/=pA4=V
+qY^0fm/DS9JcC<$JcEmmJ,~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcXt!EW>!=7u@bp\4CGp%S1Vp[n7Wq=a[`qu9deqsjO?q=a[T
+qtg6drTsN7s+13$s+13ms*t~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg>nrOi-Cs1\=(qtKs\g\(F:qY0XWq>'g^!3?+>kPFZCoD%nP
+q>0[Zqu$9gli)J8JcC<$JcEsoJ,~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg>OrfI#>q=sj]qY&\:qY'd[o_A7Xq"auOrfu[Cn+lSMo(i+X
+o)&=^q>KXYJcC<$JcC<$bl<1~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg=qpfI:dqtKs\g\(F:qY0XWq>'g^!*T;'kPFZCoD%nPq>0[Z
+qu$9gli)J8JcC<$JcEsoJ,~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es/H(2rOi0DrkA@+r:g']de3M2qtKaXq"aja!36%<!6=U*
+o(h2<p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es,-l<rfI#>rV6<bqY&A1qtBp]o_A4Wr;$DSrKZmKo(h2<
+p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es&o2"!a&N*rV6<bqY&A1qtBp]o_A4Wr;$CrrE/Rco(h2<
+p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas/Q+2rk/-AqtL$^nb)2>o(DnRqtKaXp\=lja2e.u
+q"jOVeG/k8qYKj]qY^3gl2H86JcC<$JcF0uJ,~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas,?u=rfI#>qtL$^nb)2>o(DnRqtKaXp\=fMqj$sQ
+nbL]0q>'m`o_\L_qYf[XJcC<$JcC<$df4g~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas'#5"!a&N*qtL$^nb)2>o(DnRqtKaXp\=emqcNXi
+nbL]0q>'m`o_\L_qYf[XJcC<$JcC<$df4g~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\ri5t0rk/3C!kuABqtB^Up[n"Ip@S%NqtBp]o(`1Z
+!ij;]r5S:&aS>W-qtfs^qu$<hk5Kr3JcC<$JcF=$J,~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\rf$i;rK.#@!g8]?qtB^Up[n"Ip@S%NqtBp]o(`1Z
+!0?uAnbL9$qYC$bo_\O`qYfRUJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\r`],!r`B2&p\X[Wp%S+KoChhLp&"I[p[\+Xq#FUp
+=Rl4.q"jg`qXj[^r;-BSrdk*#s+13$s474#~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQJmr4;sAqRun%p@\:Siq*$=p@\=VqtK[Vs/Q(=rPn[/
+j7r$9meH\Tqtg!_qu$9gir4N/JcC<$JcFR+J,~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQJOr/^i=r/q!Pp@\:Siq*$=p@\=VqtK[Vs,[#Aq>'(G
+mJ$&Dqt^-cp&"Xaq>K=PJcC<$JcC<$h>`!~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQIrpfIGs!*B0np@\:Siq*$=p@\=VqtK[Vs&f>'qcN[i
+j7r$9meH\Tqtg!_qu$9gir4N/JcC<$JcFR+J,~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:&i!5/6A!5/0Aq"=OVqX`n@q=FLUp@\=VqtKgZ
+s/Q+>!QN1Y`o[!Op[\+Vq>C*_qtg6erS@I(s+13$s+141s*t~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:&K!0I,>rfI)@!0[-Mqt0aVkOSH?qt0UTqtBp]
+pA"ZKs-3SKr0?C=h=pL8qt^0dpA=^aqYf7LJcC<$JcC<$j8XW~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:%n!*K%ur)iaeqt0aVkOSH?qt0UTqtBp]pA"Yj
+r`B#"jnR[+o(`+Xr;--aqY^3gh>W!*JcC<$JcFd1J,~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"XfeqRZa?qRuh"r:KmXh"(@6qt0XUqtBm\qtU/j
+s2Y/Zs2FuWmJ->Jkk=cFp%\F[r;--aqu$9gg\ud(JcC<$JcFp5J,~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"XfGs,d,=s,d2A!0[9Qr:KmXh"(@6qt0XUqtBm\
+qtU/Os-<PIrfumGo_7SCp\4@Uqt^0dpA=abq>K(IJcC<$JcC<$kPp&~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"Xejs&f(ur)imir:KmXh"(@6qt0XUqtBm\qtU.n
+qcEc!mJ->Jkk=cFp%\F[r;--aqu$9gg\ud(JcC<$JcFp5J,~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(W3`rhoS(s1J6Br:KmXnac;AnacSKr:KaVqtBgZ
+s/Q%<s2P&Ws2Od-p%S"Mp@\%NqY0^Yr;$9epA=abq>JtFJcC<$JcC<$m/MS~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(`0A!g/S+qi:`=rK7,Cr:KmXnac;AnacSKr:KaV
+qtBgZs,d2Er075HpA"=Tnb2\LoCi%TpA"R]r;--aqu$9gf`$I%JcC<$JcG*:J,~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(`/dr`K"uqcNdgqt'@KoC;AAqt'aXp\"FWq"Oel
+pfIJtpA"=Tnb2\LoCi%TpA"R]r;--aqu$9gf`$I%JcC<$JcG*:J,~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTrMTJ'rk/-A!;-3\p%%26o^_qOr:KaVqY'm^
+ri5q;s2OuU!64R'p%IJ>q"FUZpA"R]r;--aqu$<hbl31nJcC<$JcGQGJ,~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTrJLc@Ocbb&NrY:?OoLREo_e=Ro&T?5o)/+W
+o_8%TpAOabOStI@PQ7!=p\"7@p%\7Xp\+C[q>C*_qtp<frQP7ls+13$s+14Gs*t~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTr)s#$qH*Pr!;-3\p%%26o^_qOr:KaVqY'm^
+r`]"s!*Jdcp%IJ>q"FUZpA"R]r;--aqu$<hbl31nJcC<$JcGQGJ,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXIms/,dnpq-O<qn<%$p[\1Nkj\H=p@A.Qr:K^UqXsui
+WiH!;s2OrTq=jRUfCf"6qtKj[rV?BfpA=abq>J;3JcC<$JcCB&J,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXImr/CZ=s,d;Cqi:`=rfR2Cs7?!UqXNe=qXO:Mr:BjY
+p@\:U!frG)r0@)Bq=jRUfCf"6qtKj[rV?BfpA=abq>J;3JcC<$JcCB&J,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXImqH<f"qcEVrs7?!UqXNe=qXO:Mr:BjYp@\:U"'Jf2
+=S5bkp\"73p%nCZp\4I]q>C*_qtp<erPebes+13$s+C?%~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7ZAes18'=rOi!?qss[TqXEe=q=+=Pp[\7Rr:K[T
+!;?Ajr5\fVqo/:&kOnWBmIgAMr:g!]rV?Bfp\Xgbq>J#+JcC<$JcC`0J,~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7ZAKrK72DOSb(=OT(C@P5FhJnbVb?n+lJNnb;VP
+oDJ7Ro`4^aO8P:<PkOh6p%\1Hp&"I\p\=O^q>C*`qtg6drOr2]s+13$s,I&/~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7Z=lr`T8'qcESqqss[TqXEe=q=+=Pp[\7Rr:K[T
+!;?@o!*Jkpp@d\Bq"3tHqtBs^q"Xg`r;-0bqY^0f^&ET_JcC<$NW4M~>
+JcC<$JcC<$JcCu7l2LMWqu$9e"0''4qtp6dq<n%>pZ;2Fp\X[^V>e(&]DT>=]`@X$nbhn5n,)VP
+nbD\QoDJ7Tp&1lea8a0V`;mpBp#>W9p&+O]p\=O^q>C*`qtp<drOVuZs+13$s-!D4~>
+JcC<$JcC<$JcCu7l2LMWqu$9e",r?=qtp6dq<n%>pZ;2Fp\X[^MYrV<Oc]L%rf@,Br/q'Nr:0^S
+hXC@2r:0RQr:BjYp\"KGqj$uA!0ugAiq2m9r:^'_q"Xg`r;-0bqu$6f])I9\JcC<$P5g%~>
+JcC<$JcC<$JcCu7l2LMWqu$9e"'AY%qtp6dq<n%>pZ;2Fp\X[]<rcA%=oVV%=85kto)/%UnD<X2
+nGMhOo)/+Wo_8%W=oVUr=6]D;o^qhSpAF[[q#1$dqY0mar:p6%rdk*#s+135s*t~>
+JcC<$JcC<$JcD,;k5P5Uqu$3c!iWlKr;-<do(]rnq=aj]s.oUir4;^9rk/-A!:g!VoC)5;oC)VH
+r:0RQr:BjYr:U#fq8`NTqo&QTnFcJHmIU)Ep@\@WrV-*^rV?Bfp\Xjcq#.i(JcC<$JcCr6J,~>
+JcC<$JcC<$JcD,;k5P5Uqu$3c!fW5&r;-<do(]rnq=aj]qhbB9r/q&BqiC`<!0R2B!:g!VoC)5;
+oC)VHr:0RQr:BjYr:U#Lrfm>Gq31lEnFcJHmIU)Ep@\@WrV-*^rV?Bfp\Xjcq#.i(JcC<$JcCr6
+J,~>
+JcC<$JcC<$JcD,;k5P5Uqu$3cs&]8&r;-<do(]rnq=aj]q,[Pur`K5'qcEPp!:g!VoC)5;oC)VH
+r:0RQr:BjYr:U"kn5o,Pp%7YCp[n1Pr:^*`q"Xg`r;-0bqu$6f]DdB]JcC<$PQ-.~>
+JcC<$JcC<$JcD8?jSnuRqu$0b!3#n3!P\F.q=OIVpYPW2p\4CXp&(TdV7HK7qn)g>qn3"!p[@nF
+o^2GAp@%qKrUKXQr:BgXs/>ssrPnoXrl>&YqS`HSq=XLSo(2VHp%/%Pp\"LYrV-*^rV?Egp\Xgb
+q#.f'JcC<$JcD&9J,~>
+JcC<$JcC<$JcD8?jSnuRqu$0b!0$o=!K[*Tq=OIVpYPW2p\4CXp%sXHOo1@BOo1:=OSb1@nFuDH
+me#oAme6,InGVnOo)/+Vo`'sOO8Y=AQ2$RDQ21+Io^_VJo(DVNo_8%WpAOa\q#1$eqY0m`r:p6%
+rdk*#s+139s*t~>
+JcC<$JcC<$JcD8?jSnuRqu$0br`B5'=Shsko_A1ThY-@2p\+IVqc=#)='&L+=]nl)=8,esnFuDH
+me#oAme6,InGVnOo)/+Vo`&%n=moGfp%S+LoCqhKoD8+Rp&4U_p\=O^q>L0aqtg6crOVuZs+13$
+s-E\8~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs7u_nrk8EJ^Ads%q"a[Vp@.b2p@\+UV#Rt+]"@mOr4Dp?qn;mq
+r9j:Gq<[hBqsO7JrUBaTq""=R!;-8gs/>q:s2Y#Vqo/TTp[n4OiUZj:qt0[VrV$3aqY:!arVH9c
+qY^*d\c.0[JcC<$Rf@m~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs7u_SrK%#?rqZ9_q=jOTnFbW2p%A3>rK7&A!0I,>rK%#Ar0$sG
+r9j:Gq<[hBqsO7JrUBaTq""=R!;-2Lr07/Fq3:oEp[n4OiUZj:qt0[VrV$3aqY:!arVH9cqY^*d
+\c.0[JcC<$Rf@m~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs8)[r!EWD&q=aUZp[n1Kp"f?7p%h_p=BAR+=BSd/r)`VpqsXIN
+p?h\Bp?hbFq!\1Nr:0RQqssg[r)iAgp[n4OiUZj:qt0[VrV$3aqY:!arVH9cqY^*d\c.0[JcC<$
+Rf@m~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcYmr4_n"qtKmZeb/h5m.CGPUnmpbrji$?rOVs>rOi!?!:TmS
+qX*G3qsF=Lq!\1NrUKUP!V</cV?"U2`WF-!`r!aT`W5Z)o@<F/oDJ7Vp&4U`p\FU_q>C*`qtg6`
+rOVuZs+13$s.01?~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcYRrfI/@pA"OZq"E82qtBCL!;-,Fr/h,FOcklhrK$o=s,m5B
+!:TmSqX*G3qsF=Lq!\1NrUKUP!;$2Lrf6o@rK[/Bs-3TVp@Hi*qt'aXq=X^[rqH6`rV?Bfp\Xgb
+p&2K$JcC<$JcD;@J,~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcInpA"OZq"E82qtBCL!;-%f!*K5%"'A]/=T)=p=9.ggmeZ>5
+m/-2JmeH8LnGVnNnc8:\=9D].=B=ik!;-!VeaiV/r:KgXrV$6bq=spar;-0bqY^$b])I9\JcC<$
+Sc=3~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?TkVl0F+qtU'_qY%Glr:L#br2'D'!4r0Ar4;m>rOi!?r9`5)
+r9aINq="7NrUK^S!iDfjrh]_7`VIOL`W!mWoBc&5nauDMoDS=Wp&4U`p\FU_q>L0`qtg6^rO`&[
+s+13$s.KCB~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?TkN/[atrf?sOqtKs\\FodlqMP<7qiLrCOc]O&rK.#@rK@*G
+g?eb)rU0LMr:'[Tq=4THN/[aqqiq&Eq3:lDs7>UJlLFN;r:BmZq=X^[rqH6`rV?EgpA=^aoDQ<#
+JcC<$JcDDCJ,~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?Niq,mOhqtKs\\FodlqH*\t!EWD&<s2W.=BJW'=8Q)"=8c8!
+mFpq)mJZJKn,2\RnbM_U=o;D%<pj&hoBc&5nauDMoDS=Wp&4U`p\FU_q>L0`qtg6^rO`&[s+13$
+s.KCB~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs/5_-rqQEcqtB@Kp@R,4q=O[Xrh]Ogrj`$?rk&$<!5&6C
+q7ZOhkNhj.rU'ROq!\1Nr:0dWrMBUlVZ+L6`VIOI`UiZonaQ&Cnb2PPoDS=Xp&4U`p\FU_q>L0`
+qtU*ZrP/>_s+13$s.]OD~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs,?r=rK$sQr:g*^lh0uDg\(C7rq$,Hr/(E7r/h&DOc]R'
+rK-u?rK?pAkNhj.rU'ROq!\1Nr:0dWqi(K<!gT"7r0@)Brg!*Gp@7YAq!n(KrU^![qXsg\rqH6`
+rV?EgpA=X_nbp6%JcC<$JcDJEJ,~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs&f;&r)isnr:g*^lh0uDg\(C7rq$+jqc3c"=BPQ(#?Y,2
+=B8I(=8Z2#=8c7qm-!^.m/?>MmeH8LnGMhUo)Dhl=oVV(<W?+f=7c"VnaQ&Cnb2PPoDS=Xp&4U`
+p\FU_q>L0`qtU*ZrP/>_s+13$s.]OD~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs/5\,r:g-_oC^f/p%A"Mqt'iaqP=)#!4r0AqRQ[=rk/'?
+rTsFIl0A-2q!@tHrU0LMr:'[TqkaG6`5MYoqo8<Jr:9XQp$hYCp@.tLq""CTrq-'[rV$6bq=spa
+rVH6bp\a=T`r:PhJcC<$V>l&~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs,?o<rK$mNr:]aTg%=t1p%8.Qs,-Z0rK%&BOT(@DP*(k*
+O8Y1=Oo:IAm/-,5lMBiAm/?>MmeQ>LnGVnSMu].>Pl6mBPl?sGo(_bJnFc8DnGDbNo)81Zo_S7Z
+pAXg^q#1$eqY'g\r9F7#rdk*#s+13Hs*t~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs&f2#r`K*mr:]aTg%=t1p%8.Qs&\tr!`rK+r`9>,=]ed,
+<``B#=T;J$=T.U`lfm^2lhKiFmJZJKn,2\RnbuYi=TVW(<W6%f=8_Xanb)DEn+Q8JnbD\RoD\CY
+p&4U`p\FU_q>L0`qtL$RrPnhfs+13$s/#aG~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r/[krP&<Frk8C,r:]gVq"3Y=lLalCr:9c^s.o[kr42d<
+qmud=!5/*?rp0IHl08*1r9O.ErU'ROq!\4OqPO50rl+fToYp^tp[I53qsaORq==LUrq-'[rq?<b
+qY:$br;--apAEhHdf+gtJcC<$VuM8~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r._5rK-r<!;HEbp%A+PjR_[/q"+FSr/1N2s,-Z7r/h&B
+O,s7$qiUl@rp0IHl08*1r9O.ErU'ROq!\4OqMb-4s-<DErK[9Mp[I53qsaORq==LUrq-'[rq?<b
+qY:$br;--apAEhHdf+gtJcC<$VuM8~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r,l"q,[T!p\aaXp%\1?oBPuCoDJ1W=8u>$=8l5%='/T(
+=8c8$<rQ2"=T)>#=T7X`lKRR1lMTuCm/?>MmeH8MnG68b<W?+g=8VO^nDj!7nGMhPo)81Zo_S7[
+pAOa^q#1$dqY'g[r87J$rdk*#s+13Js*t~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQJjrkA<D!l"C%p@\:Sp%.bFht-R4q5".g\@DLJ!4r0A
+rji0C]"7mQ!5/*?rp&A)r9F7Hq<\(IrU0ILqPO2/rl+oWo#:IpeaNG*rUK^Srq$*\qt9s^rV-0`
+rV?Bfp&"F[gAT_(JcC<$JcD_LJ,~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQJOrfI#<s7Z0ZqXjIPo((]0p@A$:!/^N5rfR2As,[,?
+qiUl@rp&A)r9F7Hq<\(IrU0ILqMaa)rg!?LeaNG*rUK^Srq$*\qt9s^rV-0`rV?Bfp&"F[gAT_(
+JcC<$JcD_LJ,~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQIppfILhp@\:Sp%.bFht-R4q,dJp!`rK+r`B&#r`9&#
+r`K,#s&]8&rp&A)r9F7Hq<\(IrU0ILqH3Vps&SVjqXE&(r:'[Tq==OVrUg![rq?<bqY:$br;-*`
+p&*PBg&?R&JcC<$WW.J~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p8hrkA3AqXsaXqX_Dk!:ff[!kGhNrODp>rO`!=rjr0C
+pq?LflKIs+rTa@Iq<\(IrU0XQrMTUkqo&HP!64TKnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bf
+o_\.Uh>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p8MrfI#<s,QsKqt0aV^%)0npPSa-rfR2A!0@)?q2t]?
+q<@2.p?DP@rTj:GrU'ROrU9Q@o996?qNUrDnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bfo_\.U
+h>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p7np/h+`qt0aV^%)0np/h5o!*B/%r`B)$"'8K'<rQ2#
+=Su5$=BG=_lKIs+rTa@Iq<\(IrU0XQq,mJns&SVjnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bf
+o_\.Uh>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtU/f!kl=^pq?\"r:KmX^%2'j!2]Xir1j;&s1&$<!4r-@
+r4;m>!5/*?!9sFFki_j,q<@kCrTj:GrU'ROqPOA4_u%C>`VT&tmcs39me?2LnGVnSo)A7[o_S7[
+pAXg_q#'scqXXOIr8dh7rdk*#s+13Os*t~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtU/L!frG)qiC`:rq63]qt%MlqsjE;p5o<:q2kE7s,mBH
+r93A-qrmk?rTa@Iq<\(IrU0N@!LB#CPl?sFPl6mDn+Z88mJ?8Fn,DhTnb_nVoD\CYp&=[ap\O[_
+q>C*[qrmt=rS[[+s+13$s/c6N~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtT_`rq63]qt%MlqsaYfpf@Dsr`0##r`K/$r`B8(<E3*!
+<rc@u<rhL_kih4,kkXKAlM^&Em/?>MmeU#d='#2us&SSiqX=1HlL"H9p[A+NrUKdUrq$-]qXsj]
+rqH9ar;$9eo)%YKjSe$9JcC<$JcDhOJ,~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY:#cs1SHHpq?\!r:BLMj72R.p[S1NpS7_us1&$<!4r-@
+r4;p?s1J3A!PZ8FkNM(*kPaW?l2BoGlhToHmJa!\VZ=[6_u7OH`W!gR`VT#tmHX'7mJQDJn,DhU
+nb_nVoD\CZp&4U`p\O[_q>C*Yqqq><rSmg-s+13$s0)HQ~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY:#Js,[2AqiC`:rq--[o((i2mdg,Br:'H;oT0'8qN1K7
+s-!<CkiVd*rTO(ArTa@Iq<\+Jrep]5!g]+:oT]9=rfm>GqX4.GlKnB7r9jCLrp]pWqssaXrq-*\
+rV$6bqY:!ar;,p[hu)j>ir4N/JcC<$YQ'+~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY1%kr`/Slrq--[o((i2mdg,Br:'G]r`K/#!*B/%r`B)$
+"'8K&<rQ/#=Sl/#=BGF`kiVd*rTO(ArTa@Iq<\+Jr`B#"!`rE'qc3YsmoTARq!IA5qX+4Kq="=P
+rpfmVrq$-]qt9p]rqH9ar;$9enGD,@m/>rCJcC<$JcDqRJ,~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=jsarM9LioY(4pp%%kIm-s3.q!e:Op7qVtrj_p;!4r-@
+r4;p?rk/'?o]H#3o&fl5rTO+BrTa@Iqs=<YqkjD3r58NPqSi9Kr5JR#g[+k*rU0ONrUBgVqssdY
+rq-*\rq?<bqY:!ar;,aVi;E'Bj8OW0JcC<$Z2]=~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=jsarJU`7plGB6rU]^Qp[RV>kOJ?:rpTQ;l]Ck'!0[!:
+qW7;1r9+%BqW[tDrTj@Is,-Z2s-EYLop#?=s-3GHqsE/)r9aINqX=CPrpfmVs7?6^qt9s^rV-0`
+r;$9elhfW<n,;;GJcC<$JcE"TJ,~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=k$c<E9$!oN2"_p%%kIm-s3.q!e:Op/_/p!*B/#!*B/%
+r`B)$"'8K&<qTPdk5+31k5=E@kkaQBlM^&Gm/L,]=8u=u<W?,"<rc@o<rc:umG%"*mJZJLn,;bT
+nb_nWoD\CZp&=[`p\O[_q>C*Tqr%D@rT!m.s+13$s0;TS~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'a!2]Xirk/<Er4W-Crk8'sqsj=Jp$^i.p[A$TqkF,$
+!P#]>\G`r<])B5A]"@sQ!5&3Bq7ZgjpuV;3puV84rTF1Dq<@kCrTjLMs.oLf!lMspqSN<Oqo/?K
+r5J6nmHaE2rU'UPqX=FQrpfpWrq$-]qt9s^rqH6`r;$6dj87s9oDRbLJcC<$JcE%UJ,~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'a!0$l7rf7&>r/^c9p[\4Oo^MPBi:-L0r/(<,s,[5A
+mZ@.)!g;^.puV;3puV84rTF1Dq<@kCrTjLMs,-Z2!gK":rg!2Aq3:rEr0?j>mHaE2rU'UPqX=FQ
+rpfpWrq$-]qt9s^rqH6`r;$6dj87s9oDRbLJcC<$JcE%UJ,~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'ar)WDjp[\4Oo^MPBi:-L0p/_2q"]nf-<`W<#=T2D$
+=9DT(<EAcos5s+<puM53pZDG;roj1BrTa@Is6TbdqH!f"='&F'qc3Yss&T2&o2bomo'Gc0o^)PD
+rpKXOrp]pWr:9jYrq-*\rq??cq=sm`qtf@Mjo"`KjSj`1JcC<$ZN#F~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!;?>drOi3DrOr0Bs1S@$qsjOP_X@KmoqMGr!P#]=
+\Gj&=])K;F]">Pb]=\$Sq7Qdiq;h80q;hG7q<%Y=roj1BrTXCKpnS%h_o'F2q8<*Kq8E0Lr9X4E
+mcsW6q!@tHrpK[Prp]pWr:9jYrq-*\rq??cq=sm`qtetBmel_Uk5Kr3JcC<$Zi>O~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!VVHMMZ8_:NrY4=O8Ft8o)%tRnA=VomeVb;L]3A8
+O84k;O8"b/OT=M=jS%X0jSS'7k5FKBkkXKAl2^/FM?Jj%Pa7X7Q1gI6Q2L"DlgF'6lhKiFmJcPN
+n,DhUnbhtWoD\CZp&=[ap\FU^q>:$@qsOCSrT=*1s+13$s0M`U~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!;?=knlPb[qsjOP_X@Kmoi:un"]nf-<`W<"=T;J%
+=9DW)<`\lp!9O%;p>bu0qrRY9rTF1Dq<@kC!:0D\#$4f)='&F'qc3Ys!*B/%oiM/or9X4EmcsW6
+q!@tHrpK[Prp]pWr:9jYrq-*\rq??cq=sm`qtetBmel_Uk5Kr3JcC<$Zi>O~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?8c!5/<Es1J?EqRch!r:0^S_XI?hoqMGrs0r'>
+rODj;s18-?s1/3Br4Mj=jl?:"rT3k;roa7Dq<7qFV>6qc_uI[O_uI[O`V[UN`Vo,slL4!6lMKoD
+m/?>NmelPQnG_tUo)A7[o_eC\pAXg^q"sm`qUPK6r:U$Mrdk*#s+13Ys*t~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?8Irf.&@NfO+"qi1]:o)/%UnA=Yjmeqq:LAm;7
+O84n;O84n0OlbX$jSe39k5OQBkkXHClM-88PQ@&8rK[/Bns01>pZh53qWdtDqX"1JrpK^Qrp]pW
+r:9jYrq--]rV$6bq=sj_qYJb>o)/1Zjo0i2JcC<$[f:j~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?@mr`9)#nlGh^r:0^S_XI?hoi:uns&T>*=&r@'
+r)iu#r`B5'<`\iojl?:"rT3k;roa7Dq<7nEpf@Dos&B/%=&rB"<W?,"=8uCp=8u>"lhB]5l2']B
+lh]uHmJcPOn,DhUnbhtWoD\C[p&4U`p\FU]q>0s<qss[XrT4$0s+13$s0hrX~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar1j;)rk8?Erk80@!:g!Vp$^#jqsF'NrOMd7
+rji'?r4E!?!5&3Bpq?XdnDa-$rT*t>q<%\>rTO4Eq5++e!6"lSs2=lR!6"lSs2=`PrP\QOs6AG)
+r9F7HqX"4KrpK^Qrp]sXqssdYrq-*\rq?<bq=sj_q"iG9o_eF]kl-/5JcC<$\,Us~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar/(H5r/Uc;qi1]:nbhnLn&b"pmIc54OT1C:
+O8t@<ORnV5j7)($j8J'<jn\'<kPaWCl1^&8Q2[$EQ2$U7Q2g.*l29iFlh]uImJcPOn,DhVnb_nW
+oD\CZp&=[`p\FU]q=sg7qt0g[rTO63s+13$s0r#Y~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar)`o!nlGh]r:'CJamT&noi:rmr`B)"!*B)#
+!*B,$!`rE'oN2"OnDa-$rT*t>q<%\>rTO4EpK%8m!*/tuqc3Yss&]5&oN2&ns6AG)r9F7HqX"4K
+rpK^Qrp]sXqssdYrq-*\rq?<bq=sj_q"iG9o_eF]kl-/5JcC<$\,Us~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??aqkO2(s1SBD!583@!5&!oq<m)+rU0:Er9X'M
+r42[6rji'?r4E!?!5&3Bpq?^emc"'&puD>6roNt<roa:Ep8%c-rPSZRrPJWRrkncSpr36NrPefT
+!6+]sm-+0-rTa@Iqs==Ls6fgRrp]pWr:9mZ!n6f6qt9s^rV-*^qYBj]eGJt;p\j=TJcC<$JcE7[
+J,~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??as,$]1s,Ho9!0@#;s,@#=p[@qGh<k1/oBlJB
+oS3:*s,[2A!0R/?s,[&=o9'(4mc"'&puD>6roNt<roa:Ep5/j8rKR/Dplt`B!1*AEpZ_&.p?DP@
+rTj@IrpBaRr9sXSrpfpWs76;^o^r%Rrq?<bq"X^]pA3;9pAF[`kl-/5JcC<$\Gq'~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??as&](unQ5JRq<m)+rU0:Er9X&Ur)ir"s&T/$
+r)`r#rE',&<`\ios5NJ*qr7D2rT*t>q<%\>roj&Vr`&ntrDreqs&T/$s&eqqr`8dXm-+0-rTa@I
+qs==Ls6fgRrp]pWr:9mZ!`\gaqt9s^rV-*^qYBj]eGJt;p\j=TJcC<$JcE7[J,~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_qkX5(s1S*<s1A3tr9j@IiU$I/md0nHpn@Vr
+q7-C6!4r*?!P5oA]_B,+i;;L2iqh^6jSn9:k5XW<V>nO5_u@UR_Z7XS_uI[L`W*mT`W!gOkj.F.
+kkXKBlM^&Hm/HDPmelPQnGi%VncJF3e,K":p&=[`p\4IYq="18qtBs_rTX<4s+13$s1//[~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_qhb<3ooB!1r9sROq!I&,qsEh<rJ(*$r/go=
+s,[5CqiLf<r/gN4m,7d"r8RS5rT*t>q<%_?p58m8rKR>I!1*SKr0.2HrfmDIrg*>Eq<7/-qWRb>
+rp'IJr9XFMs6fgRrp]sXr:0p\S=KTNqt9s^rV-']q>'LUh#$gCq#0IVJcC<$JcE:\J,~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_pf?odr9sROq!I&,qsEh<rDiVlr)io!s&K,$
+qcEi"rE')%<qBDZi;;L2iqh^6jSn9:k5XWA<WlE'<`N/u<<#tu<WQ9&qc3Yss&]5&oiM,nq<7/-
+qWRb>rp'IJr9XFMs6fgRrp]sXr:0p\<)ikhqt9s^rV-']q>'LUh#$gCq#0IVJcC<$JcE:\J,~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_rM9Ffpq-U=r4E0E]Xteer9jLM`U*QhqP*h[
+qmlO4rODp>qRc^=pV$@[s53A)r8IV6qW%S9rT4"?s.oCc!li3urPSWQrkncSs2+iTn\tIFqrd5+
+qrdqAqW\"Erp0LKrpBaRr9sXSs7-*Z"M3(2oCMtRqt9s^rV-$\p\F%LjSS`Mq#0IVJcC<$JcE@^
+J,~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_rJCN0r/LH2r/LXBr9_JirTj<7qM"g.rJpu@
+Oo1=>O8G%2Ondl7hsoY&iVhd4j8S-<jo+?AM>)o,Q2QsIPlR-JQ2[$JQ2d*IQ2HsEQ2Bb/k54??
+kkaQClMg,Im/HDPmelPQnGi%XncY;LSFc@Oo_\=\pAOaZq"OUJqW.PKr:p6Trdk*#s+13^s*t~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_r`/_onlPbWr9_JirTj;[qGd>or`B)"!*B&"
+!*B)#!*8\mpu)20n_j?(rSm\6roF%>rT=,[qc<VprD`ess&K/%<r5l"<``@)=S5bo<r;(Ek54??
+kkaQClMg,Im/HDPmelPQnGi%XncW2s<:f_\o_\=\pAOaZq"OUJqW.PKr:p6Trdk*#s+13^s*t~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!q`:ar1j#!!5&0Ark&3ArU'1Bjm2[-p$;SA
+!297`qk<ksq7-C6s18*>rk.s<s53J*q;:u*ro*h8qW%S9rT4'TpSIo0s2FoRs2=rTrknlU`5M2b
+rP[RTrTF.Cqs"+Frp0LKs6]jSr9s[Trp^!"rR:c;s7H0\rq?9ao_@tPl2'`Cq#'sdl2H86JcC<$
+^&NT~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!q_>+r.t3/pl>93rU'1Bjm2[-p$;SA!/:9(
+qh=m.rJpu@Oo1==O8"b3OoO>2hYH((i;V^6iqh^7jSe3?M>)o+Q2QsIPlR-JQ2[$JQ2d*IQ2?mE
+Q/:[%kPaWAl2KuIlhp,LmJlVPn,MnVnGnpSSGr-[o_S7[pAF[Wq!n1EqWn%Rr;$<Urdk*#s+13`
+s*t~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!;,nanlPeWo'GK(p[%S=rTXA^qGmDlqH3c!
+rDio"oiUcds53J*q;:u*ro*h8qW%S9rT4&Zqc<SorD`ess&K5'<E)rs<W?,"=8uCq=8c1Vk5FKA
+kkjWDlMg,Im/QJQmelPRnG_qX>l@Y$oDeIZp&=[_p[n7Nq<@bAqtU*brTX<4s+13$s1SG_~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-#]pq6X=rOi*@s17skq!7)-q!7V<r9<gH
+s1&'=!k>eOppg=6s18*>rk.s<n_O&urSRG/ro*h8qW%V:rhTFfrhKP7rl+uX`;IOQ`;daS_udip
+`::hF`;eu_jnIp9kPj]Bl2U&Jlhp,LmJlVPn,MkZ\[p8=rmCl=oCMtRqXsg\rV,mXlM9oFmJH_W
+q>KUXJcC<$JcEIaJ,~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-,Ere^K2q2Y?3p[%\@k3Da-p$2J>o7d+(
+!frG)rK$u@r/gf:n<!1rqVM2.q;D82rSm\6s5a09pkf';r0@8Gs-<VMr0@8Gs-<VKrg!;Fr0@<E
+kN2I#rTF1Dqs".Grp0LKs6]jSr9s[T!LB)MSHABRoD\CYp&4U_p[\+Eq="1Iqt^0crTaB5s+13$
+s1\M`~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-+hr`AttnlPSPq!7)-q!7V<r9<fPr)a#%
+=BPQ(s&T/$oiUcdn_O&urSRG/ro*h8qW%V:r`/\nr`/qss&K)"s&T8%<)iiss&T/$s&eqqrDrs\
+kN2I#rTF1Dqs".Grp0LKs6]jSr9s[Ts'5J$!qPsSrq-'[rV$3ao(_MGn+uGKq>C'elMcA7JcC<$
+^Ai]~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$3^qkO1c!5&0A!5&6Crk&3CrO`*@!4i'p
+r9O.CjQZU-n*0D:rj_s<!P#]8\GWl;])B8>]_/u(h>H..htl:1iVhd7j85YNV>d7ja8O!Z`Pf^n
+_u@RS_u%CC`Vd[IjS\'3jS\-8k5OQCkks]ElMp2Jm/QJQmelMT\^T%*dK&k;oD\CYp&4U^pZqV>
+q=OOQqt^0crTjH6s+13$s1eSa~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$9`Lku"ds+pH0qi:N4rTsIJq!-r)r9Eb8
+nqHt&!KW??O8k@?OSY%.OR(a#hYl@.i;V^6ir.p7M>E)0QMQmHPlI$KQMZsIPl?pJPl?sDQMd$@
+jS\'3jS\-8k5OQCkks]ElMp2Jm/QJQmelMRQMR-Po)A7[o_S7ZpAF[Nq!.\IqXFCXr;$<Wrdk*#
+s+13bs*t~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$9`<`]0#pf?rerTsIJq!-r)r9Eb8nl5Kg
+!EWD%=8u;'='/R-pK6ufleVKqrSRJ0ro*h8rT!cTq,[Gos&Atts&T/$!`i9"r`/u!r`9)%p/h/m
+p#Q&2p>l/5q<%\>roj:Erp'OLr9XINs6fgR!*oA"!:p-\rq-'[rV$0`lhKc@o_S(Sq>C'eli)J8
+JcC<$^]/f~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]q4[l#rk&0B!kZ+XrOW'BrO`*@s1/-p
+qs);frTO9SoV)2ms1&0?\bEW4\H'5>]D]D8^$shOh>Q40htl:1iVhd0U][HhaN+4us2=lRrknfS
+qo&'Er5@^Wr8dh<qr[n@roj=Frp'OLrTsONs6fpUs1.sRs760\rq-'[r:^$^jS83>p\OFWqY^0f
+li)J8JcC<$_#Jo~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]re^Q/pPo*2q2PC>qs);frTNg+qN(`=
+OSk1>OoLLCO8b7<O7A>$h"TY'hYuF/i;V^6ir"W0M>rG5QMHgGPlI$KQMZsIPl$a@QMd$0j8A!:
+jnn3>kPj]Dl2KuJli$2LmJlVSn,J^LScA9[oD\CYp&+O\pZ2,<q=jaUqtg6drTjH6s+13$s1nYb~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]r`B&!!*Aqro2kqWqs);frTNfOqH*c"
+=T)>$<WH4n=RoP_h"TY'hYuF/i;V^6iq?CP<WQ9&r)E_rr`/u!s&T2#r`&nts&S\lr)Vq>r8dh<
+qr[n@roj=Frp'OLrTsONs6fpUs',:us760\rq-'[r:^$^jS83>p\OFWqY^0fli)J8JcC<$_#Jo~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76,_rLj8(])K>A]`5VD]_f>>])K8?
+lLX8hkksWAT`:_\T_c/#\[]2\ppg:5!4r-@rk.m:pY,Gtr7q,(rndV2qr%M5rh]Ccs.oe=a2e+t
+s2=lRrknfSr5A0Fr5AQonDa-$rT*t>qr[n@s60CFs6BXMrTsON"7E_1e+hAjo)A7[o_J1XpA+I=
+q"=IYqXXO[r;-BXrdk*#s+13es*t~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76,ErJ1'*rf6c5s6B4?e*-_mnV-e#
+!frG)rK$u@s,[5ArfI#<nW<M!q:ki&q;)&,rSRM1s5Es4reUH.s,$iDQMHgGPlI$KQMZpIPkp[@
+QMd$Hj7)($j8J'<jnn3>kPscDl2U&Kli$2Lm/l^AQM6sLo)A7[o_J1XpA+I=q"=IYqXXO[r;-BX
+rdk*#s+13es*t~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76+io2bHas6B4?e*-_mnPo<d!`rK+
+r`B,#!*AepnlPS>q:ki&q;)&,rSRM1s5EWNs&T/$!*9"t!*&qts&T/$!*0"t!``9%nlP`irT!D,
+p#H#3roO%>roa=Fr9=7Hs6KXMrp9dT>?gi$rpp'[rq-$Zr:]s\h>$[=q>0[ZqY^3gli)J8JcC<$
+_Z,,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUTo\rLa.arjr-As1J?C"2)7W])K>?
+])K5?\GPOdkg\emk4,)E\+mK5\bN]5\H'5>])oXY]_/r<]^FMPg\oq(h>Q40hu2L3V>$bfbK7fF
+r5ScTrknKKo#:OF!93A(qr7G3roF(?r9""As60CFs6BXMrTjOOrj`$XpX9$2rq$-]q"=OXq"NV>
+p\FX]o_\L_q>K[ZJcC<$JcEXfJ,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUKrEreLH,!/L6,rf6`4qs!q?eE?_k
+pkAR!!0?u<s,[2Arf75EOcb`eO8b7<O7A>"gATe)h"ok*hYuF2huSXjrJ:9+!go=?p6GZDo9K*:
+r079Am,@j$q;_J8roO(?roa=Fr9=7Hs6KXM!:BcOp7;0Qrq$-]q"=OXq"NV>p\FX]o_\L_q>K[Z
+JcC<$JcEXfJ,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUTnfrDiMko2khRq<6>kqr[EJpfIT!
+=BPQ(!`iB(oN:]d!*8OArS.;+qVD,,rnm\4s&AYkr`9)#r)Ebs<W6&!<rl?%r_rr!<`\cmr)NgW
+m,@j$q;_J8roO(?roa=Fr9=7Hs6KXM!:Bbip/M"]rq$-]q"=OXq"NV>p\FX]o_\L_q>K[ZJcC<$
+JcEXfJ,~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUTiYrLs2$s18BG]=YZR]D9&;\c92;
+kkaJek4YJGTDuCp\,a)7\G`r>]">TR]E,^Yot:@<o@`llrnID,qVD/-s53jOoV;T4b/hX$`rF$V
+_tV+?`Vd[?i;;L3iqqd8jSn9=k5XWEkl'cFlMp2Lm/FQqe,%MldJWS7oDS=Vp%nCQpYtuDq>0s[
+qtg6erTsN7s+13$s2=qf~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUTi?rJ1!(rf6c5r94"?c0"_Sr.Y03
+qN1];!0I2@r/^o>rfI#<nW<@qpY,W$rS78*rnd\4s+p<(!go=?op,QCo9K*:r0?U+qr.M5qr@\:
+roO(?s6'FGrTX=Hs6K[Nrg*>Mrg`oWrq$*\q"=LWo(V/=q>'m`o_\L_qYfd[JcC<$JcE[gJ,~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUThcrDinupK$idr94"?c0"OqpK7Gs
+!*K5%s&S_no2bomo@`llrnID,qVD/-s5*fSr)<Pnr)N_t!*8tsr)Wi!!*9%t!``9%nlP`ileq[!
+rSm_7roF(?r9"%Bs60FGrp'OLrp9Vgoi1k[rq$*\q"=LWo(V/=q>'m`o_\L_qYfd[JcC<$JcE[g
+J,~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXrh0+]!5&0?"M;=Y]=S!R!P5i>
+])K8>\GbU:k5"-;T`(M]T)PA^T)Q4n\,a)6\Gj#A]">Se]^ri:]_pCVf_jFugATe*h"oh,UA:S]
+U]nucbK@oHr5ScUrPSBJo>UUFk2?3srSmb8roF+@r9"%Bs60FGs6BULrji!VqpPJks7-$XrU^$\
+p@\.Qm.]lAqYC!ap&"XaqYfg\JcC<$JcE[gJ,~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXreC9)rf$o<p5T'3pl578cfY&b
+rIt9+pkAa$rf?o;rf7&@rK$r>rf@)@qiC9/r7C_rr7Uo"rS.>,qV;.,q2"p)rg3_QQM$OCQLgC;
+QMZs0i;MX5ir%j9jT"?>k5XWEkl'cGlMg,KQMI*LSH&-Wo)81Zo_.tOp?_P?q"jg_qXsa_r;-BZ
+rdk*#s+13gs*t~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXr`/eqr`/_opf@Grr)`j[cfY&b
+rD`\nq,I&is&T2&rDs##=7o\e=8u>!fD+"rg%jA#g]$")h>C1H;u]es<rH)"<r5np<rZ5$<rGu!
+<E</l=8Q%\i;MX5ir%j9jT"?>k5XWEkl'cGlMg,K>P(npnbhtVoD\CUp%J+Gp[%\Oq>0s\qtp<f
+rU'T8s+13$s2=qf~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!hc6\rh'7brh0(us1A9A!kZ%T
+rji'?rji$<!4V^bg#_th!oolErLWhUrgj+\rjVX3!4hj6rj`0C]=Y_go=b1:o%3flrRq&$rnIG-
+rn[CE!2KFes31Md!m8R(r5ScUrPSBJo>UUFs53M+q;:u*ro*k9r8[e;s5j4As6'FGrTX@IrOM^P
+s3gnorpfmVrq$'[o_%_Inb;MIqt^-cp&"XaqYfj]JcC<$JcE^hJ,~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!/CB+reCB2!06`3s,Ql6pZC/j
+pZ)>7q1\Qrrf?o;rf7&@rK$r>rf7&@qN(60!KW?5fDO;"g%sG%g]$"-h>)g+M#3&-QiWP>oT]EB
+q3:rGrK[/Dqj%3=p"oN%pu)/1ro3k9roF+@rT=.Cs60FGs6BQKpmq>QrpfmVrq$'[o_%_Inb;MI
+qt^-cp&"XaqYfj]JcC<$JcE^hJ,~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!*/nsrD`o"<E8fpq,dSsr)`XT
+g#_th!9<cOqG[GrpK7Gs!*K2$!EN:p=S#Vo<q=l?f_sM"gA]k+h#?.,;YX2j<rH)"<r5no<WQ9&
+rDWhu<`\fnqc<aSp"oN%pu)/1ro3k9roF+@rT=.Cs60FGs6BPerD`\pr)E[cqssaXr:KXSnFlDH
+n+ceUqtg!_qu$<hmf%e;JcC<$`W(G~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7#`TpppI;rji0C]"7aKrj`!;
+s5s4?g>qqem[a?dp:(+5pUL76!4r0As1J!;s1J$UpXfDsrRq&$rnI1@s.]Ogs.fkDbfn8RaiF:u
+s2FrSpr)dCqS_p[qVM2.qV_D4ro3k9s5a4ArT=.Cs60IHrODpXpXB/jrm:`8rpfmVrU]sZme-#A
+p@n.Qqt^0dpA=abqYfj]JcC<$JcEaiJ,~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7#i>s+UN-rf-r<oo9!3pl5=9
+qrQPmp#H"(!/:#trf?o;rJpr?rK$r>rf7&@qN(91s,Zj(pXfDsrRq&$rnI.%reUT2r0RMOQL'n:
+QMm*EQMQm:h>6",htl:2iVqj7j8\3?jo+?AkPscFl2?nJT(efRS,i'Xnb_nUoDJ7Kp$VPIp[\+V
+q>C*_qtp<frU0Z9s+13$s2P(h~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7$%hr`/hr"'&B&<VTVk=8l7u
+=9%F[jkAegirE$S;Z9Vl<<#tu=85ns<rcA$<rl?'oiUifs&SgDpXfDsrRq&$rnI9J!)iVks&T&!
+!*8tsqGmSrr_rr!<`\fnqH!.BqVM2.qV_D4ro3k9s5a4ArT=.Cs60IHrEK.ur)NYo!:^!Xqss^W
+r:KFMme6AKo(`+Xr;--aqu$<hmf%e;JcC<$`rCP~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpTpVp7MN!\[o?M\cB;?])T>@
+](ro9\Gs&8jO*#dipN?;[f3c4\,a#;\,a)6\Gj&=]DfJ8]`>_CeG7Ymf(mqrf`'S%gAdfCT_P2d
+U<Us,bfe2OaSWs[`Pf^4_tV+@`VRO=h>H./htu@3iVqj8j8\3?jo+?AkPs`G\,Nl=\^].'df@hq
+d/q\anG_tSo)81Wo]>c<pA"CTq"smbqY'g`r;6H\rdk*#s+13js*t~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpTpVr.k6*s+UE2rf6Z2!06i6
+qrH/brSm6u!07&>qN1Z:!0I)=!0I2@!0I&<oT0'6r7(Pmr7:\qrRh,&r7^Xqqj@DM!L8o;Q2d0K
+Q2-aBQ0[9(hYuF0i;_d8ir.p;jT"??k5XWEkl$bJQCa]BSc##XnG_tSo)81Wo]>c<pA"CTq"smb
+qY'g`r;6H\rdk*#s+13js*t~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpU!X<E8lrrDikus&Jqs"BAK(
+='#9$r`8quqrH/brSmiUrDNPlr)EYqrE&esr`9)%qcEGmoN)#nr7(Pmr7:\qrRh,&r7_$H!)iPi
+r`8qu!*9"tq,[Mqs&9&"<`\fnqGuq<r8.G1qr%M5ro3n:s5a4ArT=.Cs6'Gcr`T;+qGdAmr)E^c
+rpfjUrU]pYjn89>q"OIVqt^0dpA=abqu,s^JcC<$JcEdjJ,~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$Vqk3kZ"M2.S]".gOs1/-?
+rj`$?rOE!>\[h^LrjVO[guA4irgrbQrLEnrrjVa6s0qX1rji'@s1J!;!5.jOrRLktqUb`!rRh1A
+rLWt[rh01_rltJe"3\j/a8EsW`W*mV_tV+A`VIIAh"]_)hYuF1i;V^8ir.p;jT"??k5XWE[KO(L
+\CB%&e,RkrdJqSmnG_tRo)/+To]#Q=pA+IVq#'scqY'g`r;6H\rdk*#s+13ls*t~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$VqhP0*s+UB1rf6<(o]+`d
+qr.'urIb-1rf?o;nrNg4r/^K3!0?["rRLktqUb`!rRq+'onWF3s-E_Orfll:rg*PKqNgrBnD*fp
+rndY3r8@S5s5O";s5a4ArT=.Cr0@;RpRV2Orp]pWq==ITq=N\>q"FOXpA"R]r;--aqu$?imf%e;
+JcC<$ao?k~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$Vqc<Vp!`W0"r`0#!qc<_s
+!`iB'r`B"urE&XOguA4i!)renr_rSks&Jtuq,mAmoiUlg!*8X>rRLktqUb`!rRq*H!)rbmr)3Sq
+r`8u!!*9)!!`i<$q,[Mqs&AtuoN1ihnD*fprndY3r8@S5s5O";s5a4ArT=.Cr`T8)qGdAmqc*Ra
+rpfgTr:BaViq<*?q=jUXr;$9epA=abqu,s^JcC<$JcEjlJ,~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrLj"Z!MI%%\c02>\H'5<
+\HKFQ\@B*K\Gir=[c?EDinWMgi;0#BSG\lUS,g%t[K*f4\Gs&2\G`u;])]M9^%KkKeG[qsf)!tu
+f_qB>T),)YT`348bQH&2aiF>!s2G#Vs24TLoYpXEp=fAtrS78*rnd\4r8@V6s5O";s5a4AroO?h
+ZaI6MrRCSjs3^nprm:]6rp]pWq"":Qp%7D>q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrJ1?+rIt93rJgf:l](r)
+q;U2gq;D+&r.Fp!rdt33rf-u>q2k3/rfI&=oT8appXK/lrmpqt!8.+%pP8[6"IYXDQ^7W8n!3m<
+s-<DGq3C[-qV1u(qVD/-s53b4s5F";rT!q=s5j7B"Hnt5Q'M<>pRV5P!h8ZIrp]pWq"":Qp%7D>
+q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrDr_o!*&qtr`9&!rDrnt
+rDio"qc<Yss5Wq7gu8(er)3DjqGdJpqH*MqpK.#ioiLh8pXK/lrmpqt!8-m@rDW_rs&K/%=T2A%
+<rQ,!<WH.q<rZ/#<)rouoN1ihp=fAtrS78*rnd\4r8@V6s5O";s5a4AroX5^!a&T.pf./kqc*Ua
+rp]pWq"":Qp%7D>q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:KNQ!M?t$\c98>\H9@Q
+\G`u7\Giu:[eet5i;_[7SbnrWRfJoPRfT%grO)^8qRHL5p:(48]",EO])]M:^&$.QdeqSieGe"s
+f)O@tSc,/WT)kV1rltGd"3\j/a8EsW`W*mV_t_1@`VROAgATe*h##q-hYuF2i;_d9ir.p;jT"<A
+Z2V$0ZaK_\pX92ldF%s?rpTjUrUKXQp[dqIm.L8LqtKj[rV?Bfp\Xmdqu,s^JcC<$JcEpnJ,~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:Kc?s+^H*#_\4uNK0!X
+NfN@`qVfu_s53[*on!3sO8Y(=O8=t/NrkE*OSk14OS[B$deqSieGe"sf)O@pLAHZ*RJ`ETR@'>-
+QN!-KPlR'?Q2R$KQ2$[AQ1*H*g]$"*h>c@2hu2L5iW%p9j8\3?jnt8CPF\9DT(efRS,f&Xn,DhT
+nb;VKoC;J>p&"I[p\4I]q>C*`qu$BhrU0Z9s+13$s3(Fm~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:Kbcq,IDorDiht!*/tu
+r`/Ymr)`aRe_pJbrDNDhqc!Pqq,dGqoiM,p!a/W,r)iYoqU,/fr6tJkrmgtus47?N;c?Tm;ZK_p
+;uKVn;uTes<WQ9(r`9)#r`/u!!*/hqrDikunlPZgn(R`prnRD,s5*b4rS[_7s5O";s5a4Ar)Wl#
+pJh&jr)<YprpTjUrUKXQp[dqIm.L8LqtKj[rV?Bfp\Xmdqu,s^JcC<$JcEpnJ,~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6fWS".u0V])9)E\@T8^
+\[]/[\c0)=\bWc7\,Wl:[Hlc7hu2F1SGerQRK/iURfBkq[K*f5\G`o1\-':Q\[qdP!5/$=nBq3_
+rR:Vmrm_&#SFrHQT)PA^cN)8ic2Gifb/q^%`rF$X_uR^N_u[iqn\tCDo\'#nrnIG-r8%D0s53e5
+s5F";rSmn=ricO1ZEhs.psf5js3gqprm:T3rp]mVoCDMEoCVSGr:^'_p\=^_rVH9cr;?Hjmf%e;
+JcC<$bl<1~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6flA!/CB)re192rJgi;
+l&G#ekhl?qpOiHsq1A^.O8Y(=O8=t/NrkE*OSk15ORUZrdf%YkeGdu!eqNXK!/LN@rL!VQs-EtV
+Q'@MuQ'@O,Pl[29rKdJKpQk]Ao\'#nrnIG-r8%D0s53e5s5F";rSmn=qi^fHrLWqXr1*eVr9sXS
+rUKLMoCMSGnb)hRr:fs\rV?Egp\Xmdqu,s^JcC<$JcEsoJ,~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6fV^r`&qtr)N\r!*0#!
+!``3!p/_,n!*8FDkhl?qrDNDhq,I)ir)iVnr`B;+=BAU+r`JnrnBq3_rR:Vmrm_/&;GpFlqc*Ai
+s&]/!$s$G3=BAR)<`N.#<`Srrr`'##='"imqc<@BptG`%rnRG-s5*e5rS[_7s5O";!9F#Ypf.)i
+r)E\pr9sXSrUKLMoCMSGnb)hRr:fs\rV?Egp\Xmdqu,s^JcC<$JcEsoJ,~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSqOdh\r13o"rji!;
+!4r0?rO;s=\@B*K\Gir;\Giu:[K<kpi:l-ghYQ(-S,/TRS,JfRR0'h+\,Ni9\,*W5\+[<6\[o>_
+rk%m;r6P/bpsK)hrR:\opRM#Lrm(\lbg"E2bQQ)0a2Z*t`WX9!`5BLg`9kPC`;/$]f_sM"gA]k,
+h#-".hZ)L3i;_d9iW/$9YQ1s-e+hGje,Ri!dEp7dmeZDNnGMhEo()DIo^qhSpAF[\q#'sdqY9sb
+r;6H]rdk*#s+13ps*t~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSs+^H*qh4p.rJ^f;
+r/C]8mZ%8)pYXueqVC[o!.t0%qi:];qN1Z:!0Hr9!g&P+rK$Z6r6P/bpsK)hrR:\opP&Bsr0dMN
+s-X(XQBd`"Q'M<4pQbT@!1!5Crg!<2qUkc"qV(r's4mP.s5*e5rS[_7s5F+?OcfR)qORPUr13bU
+!LrNRn,;bRna>u=oD%tMp&+O]p\FU^q>L0bqtp<grU9`:s+13$s3:Ro~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSpf@>ns&AnrrDinu
+r`0)#<)iQlrDs&$i8F@einjOfpJ^cboiM)or`9)%q,dPt#$G&0=BAU,pK.:=psAf`rmLbor7(^D
+qG[5is&/u"=',?#"BJT+=BGK&!*/Yls&B&"m8s9fq:GJqrRq&$rnIJ.r8%D0s53e5s5F";!omBb
+r)`VlqGmGm!E8F_n,;bRna>u=oD%tMp&+O]p\FU^q>L0bqtp<grU9`:s+13$s3:Ro~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9ZW!2'(Y!4r0?
+r4)a:s0r3@\@B#Wrj_g6rO2a6q;0i]!o0<9oUGlLrgEeRs0hs:rjDg9ppg=4!P#W7\-TXV]",D`
+]=Y`N^%]hLchu/ddJhSne+K7,Sc-k:c-4DVrlbPhb/hWC`W!mV`;daN`9bGC`:;IXf_sM$gA]k,
+h#6(/hZ)L3i;_a:iii9as4%(tpXK,i"k(fGd*U,<meZDMnGDb=o(VbPo_.tUpAOa]q#1$dqY9sc
+r;6H]rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9Z<pk8[,s,R)<
+!0$f7rf$<*q;0i]!8R@%oR[(&qi1Z;plPK9!0Hu:"-AY-OSt77OS@&tchu/ddJhSne,P.!K`-W#
+LARD<R/`QZR$X,(Q'@Q!r06r@qj%5IoTfKBn^m`lrRq,&rnIJ.rS@M1s53e5s5="<Oo1C;Sc#)W
+Sc"uXS,VjPn,2\Pn`TK;oD8+Qp&+O^p\FU_q>C*aqu$BhrU9`:s+13$s3CXp~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9S`r)Nbtr`&eq
+rDrqus&T+uoiD)os&SsPg>)bar)<)aoN1unr`9)%q,dSus&f>(r`B,%pfI48qp52eqU,;jrmUO=
+q,@Gr<``B$<<Q?)=BAT'<WH.l<WZ9%<pWlf<q4f?f_sM$gA]k,h#6(/hZ)L3i;_a9ir3'^=BASt
+<;BPl;ufkrmeZDMnGDb=o(VbPo_.tUpAOa]q#1$dqY9scr;6H]rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6T`Xs.B4\rgj(Z
+!4r0?#.V.P\%&rYrj_g6$FmRS[^W]S[^NTPrjChCo%a6!s.'(Xp6tuKrg<Yms0r$:!4Va5rjMp<
+\,!N6\bs&=]DoP?^&?4IcMc)fd/),idf#[7SGeuYSGA`ScN2>9qof/cb/q^&`W4!W`;[[N`9bJ@
+ebRelfDaG%g&0S(g]-(-h>c@3hu2L3YPtcteGReqdf7_ociEJ4meQ>KnFuJ9o(qtTo_8%WpAOa]
+q#1$eqY9scr;6H^rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6TK6re1<(s,I&=
+s,I&;qi1T6mu?Dao%a6!s+C<&n:CV!qi1Z;plPK9!0Hu:"H\b.OHBI&plPI!o?R<\rQtDg!n)aT
+rIb!#s+U?)!1<\PrL!VQ!go=?r0@,CpQb35r71Voq:GVurn75's4dS/rS@M1s53e5rK7)B"J20T
+S=KMJrLWqXr1*eV!:BdRq="4Mp[RG;qXaUVp\"LYrV--_rV?Egq"t!equ-$`JcC<$JcF$qJ,~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6T;WrD`_qrDrqu
+s&K5%<)clk<WH5#<oi*-h#?(+<;TVf<:X,i=T2A%=SZ%u=T;P&=8uCu=8gD8cMc)fd/),idecr<
+;u9Po<<?3&<rQ)&<``C*='+ll!``9%lrX,8q:>Anrn.5'r7_2*s4mS/s5*e5rS[QU!E`@q<;KVm
+<<#ksmJcPLn,)VKn`TK>oDA1Sp&4U_p\FU_q>L0bqu$BhrUBf;s+13$s3CXp~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTjQXTDY;ZSH,2Z
+RfL&!\c9/E\%&oV\@K,ZrO2j:\$l7Er3lL1s5!>&l.c*h!h5XIqjIANr0dPO!13Vls0r$:!4Va5
+rjMs=\$u4D!4i'>rk&0Br4VjKqp"r^rQkJis3^Y2!h5^Mr13eV!1j&6!RAsebQH&2aiOG#!6+rU
+rkn]Q!QE"E`V@s[ebn"qfDaG&g&0S(g]-(.h>c@3hZ2U2Y5kfteGReqdK%\nd/NG2me?2GnFQ2<
+o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13ss*t~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTsB7q1SU(s,?i7
+rJ^6*s5!>&l.c*h#(hDWJ:N-!rIFlupji=&r/Uf<q2kT:!0Hu:"H\b.OHBI&q2k?pqp"r^rQkJi
+s3^IkrIk0(!/CK?rL*VOs-WtVQ^3s9Q2-[=Q1C79eGIeof)+(uf`0Y&gAfq-h#?.0hZ)I5i;/Q=
+P+J89Sc5/YSc#)WSc##XS,VgRme?2GnFQ2<o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13s
+s*t~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTsJ_p/_,kr)N\r
+s&K)""'&<"<Us2jh=TLeg\]\+<)Z`n;Z9Vf<<$"j=8l>$<rc@u=8l;%=oDD%=SZ%mbkoZ\cMc)g
+d/VMh;Y<rm<)lq!='&H%<<ZE)=BJX+n5]Qk<p`u`eGIeof)+(uf`0Y&gAfq-h#?.0hZ)I5i;$OU
+<W,ns;uBVk<W#hr;uZ1_me?2GnFQ2<o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13ss*t~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!3Q.pqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!:0QS!1j(Y
+r0m\trji'=rO2g9\,Nl>\$i`SrjMj9qR6:/q:jc[!87@?rL*VQqjIDMs-E_nr3lX7s0_p:ppg@5
+rj`!;qmZX:rOW!?rk/3CoZR0VrQY/`s3L8)rL<eVqp,;gc25`bb5o`+rPeoX`5MVlrPS`U`9tVD
+e+;)fec+.tfDaG&g&9Y)g]-(-h#Q=-Y6!)#o$mTd#h%,Jd*^4em-O`=r9j4Gp$hYEo()_MrUfpY
+rV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!/UOKqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!:0Q:qLnj%
+q2PB4qi1T6qi1W7pl5+(hV%t_rdaZks+'urs,?r:r/Uf<q2kW;rfHr:!0I2B!g&J(q2k6lr65,a
+q9K#drdsZmre:<<rL*VOs-`nSs-EVKpltK;op5U+o@3`hrmq#!rn.8(rS%;+s4mS/!8dO6rLX%[
+rLEnYr1<hWr1*eVs6TaPr9j4Gp$hYEo()_MrUfpYrV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!)rdkqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!UEbW<rH"s
+<<-"t<W6%u<<Q?&<)clg<r(M,g&Th&;tEug;uThg=8uD&=8l=u=8Z1o=7j]6bl,f^cMu5i;u9Jb
+;uTc!<``@'r`/u!s&f;&n5]Qk<pj&ge+;)fec+.tfDaG&g&9Y)g]-(-h#Q=-=oVP&<W?#!;cN]o
+s&Aeor)E\ps6TaPr9j4Gp$hYEo()_MrUfpYrV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG`LmJct\qY^'a!rBI0rqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM"R;SM
+SXobMpmV>r\[h^LrjVp9#e.=R\$i`Q[^Q1C!k5VHqmHI2rjD+HnCdcms-inSrL3bSqj@DMr0@>j
+r3lX7s0h[3s0r!;s0qs:rji!=rk&-As1S0LpWNNZrQY;dr0mPOp6kuNqTf2fc25]lbK@rI`l5s:
+`Pf^n_u7LS`Ph5aqU55hq:,Dos47,"s4IA)rS%;+s4mY1poabIe'mm;rR:bos3^hmrTsLMqsNqA
+o^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<JcC<$df4g~>
+JcC<$JcC<$JcG`LmJct\qY^'a!rA+:rqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM!pYJn
+qLn^!q2PB4qi1T6qi1Q5qMjjqnCdcms+'`kq0r?ns,?o9rJpl<qN1`<rfI#<s,d2A!g&J(qN1Ho
+pWNNZrQY;dpO`*k!/19;rL*VOs-X(YQ^3o%Pa1p+pQbT@rg!?.qU>8irmh&"r7Cu$s4RA)s4dS/
+s5!I4r1<qZr1!bXr1<kXr1*bUrTsLMqsNqAo^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<
+JcC<$df4g~>
+JcC<$JcC<$JcG`LmJct\qY^'a!r?%urqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM!:'8Y
+r)N\pr`/tts&K&!r`'##<E/rto2b53nCdcms&8_ms&8Vjs&8ksnlGlp=',B'qcEYspK.+3pWNNZ
+rQY;dr)E/arD`r#='&H%<W?,"=9)G$<WH.l<WQ9&moTA6qU>8irmh&"r7Cu$s4RA)s4dS/s5!HQ
+rDiu"<)i`ns&Ahpr)EYorTsLMqsNqAo^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<JcC<$
+df4g~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZW*riZ4qo_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69[M
+SXobMp6u,q]".dL!4Vm7"1YhL[edE2[f3Z8['fn?rj;a5pY"lbq:GP4rg3\RrL!JKqj.)es0r$:
+pUL74rjW$=\@;IIrOMp=rO`$@rQ+cUr6"iYrQG>fR$[N6rL*PO!7(Ge"4#08bPo`cb6,o/a2\+t
+rl"`Prl"]Q!6"iT!6"`Qp<ifdrR:Yns4.,"rR_)%s4RA)!ScE)YQ)uNdaRd:r6tYnr6bB-r9a@K
+lL4Q<qXO@Or:Bp[qXsg\rqH9arV?Hhq"t$fqu-$`JcC<$JcF0uJ,~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZVYre^ULo_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69UK
+pOrO"re191s,?o9rf$`6rf$`6qi(E3pY"lbq:GXsrdXorr."Bgrf$f8rJpl<qN1`<rf@/AOSt7?
+OSt:COH5J"OT!8qao'<WbPfWdc%(<BJGt,rK)1,sR/NHPR/`TSQii\@Q'Ls*op#NCqj$m&r6kPm
+qpbYrrmq&"s4IA)rRq;,h"m05OT1mMT)YAYS,f,YT)>/WSGo#Sm/68Imcs9:nG;\Mo)/+Yo_S7Z
+pAXg_q#1$fqY9sdr;6H^rdk*#s+13us*t~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZUtr_rdko_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69UK
+q,[;ks&8kqs&K(us&K&!r)E_rr`/MipY"lbq:GODpf$lc!EWD&<q9;n=BAT'=92K*rE&kupfIF8
+prWHVq9/`\!mOYAlr3j_s&T/$#Zar*<`W:(=',?$s&J_mp/_5pqH*C<r6kPmqpbYrrmq&"s4IA)
+rRq;,h"Y%P<W,r!<E/fns&Ahpr)EYoqX".IqX3Y;q=+7Nq""@Srq-'[rV$6bqY:$brqcEerVZQk
+nG\"=JcC<$df4g~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?Q)\,NN1q=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l2R:ES,U"t\Gs&;[f<c8\,Wl;[C#q@"gk\G[^EO>[/[Q6[/JY9fDjFtR.lsCQ2n>h[f<i:[e@32
+\,Nl>\%&oVrj_s<rOW!?rk.dBr5no[r6+c"r0[ALrm(De%F35Bbfe2Rbfe2PaiML$`W!gR_u@UP
+`W*mT`W*mS`V\$UdJ_Mme,7_qec45!fDjM'g&9Y)Y5b^(Xp)#UdF$Cko$mTds3gels6KIHqX+%F
+mI0o@r:0URrU^![qt9p]rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?\\ObejNq=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l1p#2L&?W'NW+n8NW+n6NW+n7NVSP2NW%MgfDjG#J,OiqI/n`oI/n`pIK+crIJf''NW"n9O8=q<
+O8b4AO-'=$s,d2A!K`B>OR^Eiao0B[bPltfJ,b$!Jc(,tK*$XmRJN<MRJrTRRK&WVQ^3o%o9A^/
+qp>&arR1\or7(bss47/#s4IA)rS%:5s,m5@!h>gPrLX%[r1!bXr1<hWr1*bUs6KIHqX+%FmI0o@
+r:0URrU^![qt9p]rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?Ot=T25!q=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l2"HV<W?,!;uK\q<W?%u<W6%s<<-"t<Us2hf\tH^f)/M?;ts;o<``C)r`8Sk!E`G&=92K*rE&o!
+pfI",r5no[r6+h4s&8kqqbmJmqc*`!='&H%<W?)%='/O*rDrquoiCcfs&T&!qp>&arR1\or7(bs
+s47/#s4IA)rS%9Rs&o;&"'JT'<W,r!<E/ios&Aeor)EYos6KIHqX+%FmI0o@r:0URrU^![qt9p]
+rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r9=7rN>qjqtKp[n+HJJqt'URrUKmVr9sXQs6]dOs6K^MrTX<O
+pRD,O"1u.U\c0,<\,Ni9[19XS[^ENM['d<K[C*HN[JI61[JmQ,fC%5dec2$4Qi*0HQ2d0LQiFJi
+[f<i:[dpp1\%&rWrODj;rjr*@s1J9LprE0NrlP/^s-N\MqNpuEs-Wl3rm(De"4#08bl5ckbfe2P
+b/_N@`VmaQ_uI[P`W*mT`W!gT`V7^Vd/)/hdf7eoeGn)!f)=5#fE'[ZpTFPCs3Ukqe+2#ee,Ien
+dJrM1lh9]>mIfo<n,2\RnbMbToDS=Yp&=[ap\O[aq>L0cqu-HirUBf;s+13$s4%(!~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r7t@reLQ2q"Xa\q=a:Mq"4ITq""CRrp]jSrpKgRrTsRMs6BRI
+n:Uk'NK*mqrJgf8qi1T6r/LH0rf-X'mah6b!IoR_IJ]!&NW"n8O8"_;O-#J&O8k=?Ont1;`q[UL
+aSs<\b5HbgIf4cqJH(3"JcLB$Jcp^XR$jB=R/WNQR/`TSR/`NQQ1U=0Q1rW&d/)/hdf7eoeGn)!
+f)=5#fE'[ZpQ5EFs.0+[s.0(X!1j%ZrLNkVrgWrQrTj1Dp[.YAo'cMGrUK^Srq$*\qt9s^rqH9a
+rqZNhq>:-gqu-$`JcC<$JcF7"J,~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r5r#rDWLdqtKp[n+HJJqt'URrUKmVr9sXQs6]dOs6K^MrTX8]
+qGmDn!*&qrrD`ess&B"ur`8bno2bS:mah6bs&AVhqc*Jns&K2&=BGK&nlP`k!`rK+r`B#"q,dL6
+prE0NrlP/^peq&hqGdGm!)i_pr`9&#!*9)!s&T)"rDrqup/^ifr`9#"pWrcaqU,;js3pnqs4./#
+rR_)%&)#Z;='/O*=BJX,=B&7"<W,r!<E/ios&Ahpr)EYos6BRKp?_P@p$VD>r:'[Tq==OVrUg![
+rq??cqY:'crVH?erVZQknG\"=JcC<$eGk%~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZT&r3#tmqtL!]nFcSKq=F@OrUKmVqsXOPs6]dOrp0ULrosIH
+pRD,OrL3o$]"5HO\Gs&;[f3]6[K*`6Zi[S@[/RK/ZiIN5[/AMDeb.GjR/<6LQM6[CQN+;l[J@64
+\$id:\-BFP\@8rW\G`u;])TDA]_BDB`r3sRaS;)!QhZpPREWn#c-FW4cNDJ;bfot-"Nnj,`Pqeo
+qnrHPqo/QQrl+fRp!3N^rQtJirmLhqrRCkts47/#!8.%KrQtSl!RfHgeGRepdeqJml2BoFlgjE9
+mJ-,Bn,;bSnbVhUoDS=Yp&=[ap\Xabq>L0cqu-HirUBf;s+13$s4.."~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZSUrJ1H1r:p0`qtBOPq"4CRp[\:Qrp]gRrpKgRrTsOLs6BUJ
+s60'-rIY-2NVe\6NW+n7NVnb7NV&/0NVqAreb.GjIeJ3eIf+TqI#X-`N;\b8Nr4t4O9Uc-OH5Ha
+OSk7;OS?`k`r3sRaSgPbIf4cpJ-(:PJGk'!QiNQMR/WNQR/`TSQi`V?Q1L70Q1`H$ci)5gdJhSo
+e,@erec45!f)XItOSt^LSc,/[Sc"uXSc,/XSc##WRfM^OlMTu=m.TiAme-&InGVnRo)A7Zo_\=\
+pAXg`q#:*fqYC$er;6H^rdk*#s+14#s*t~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZRqr)<OgqtL!]nFcSKq=F@OrUKmVqsXOPs6]dOrp0ULrosIH
+s&T"sqGmSrr`&kqrD`br!`W0"r`8bno2be?n(%*\!*0"tqc!Gmoi1ukr`9&$!*B,"nlPcl"BS]-
+=',9$q,d=0qo8TTq8i>/r)<Gkr_r\or`9&#!*9)!s&T)"r`9"up/^ifr)WL9rQkGhr6bMls3pqr
+s4./#rRV&%rDresrD`esrDir!<;TVo<;KVm<;oerl2BoFlgjE9mJ-,Bn,;bSnbVhUoDS=Yp&=[a
+p\Xabq>L0cqu-HirUBf;s+13$s4.."~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6cp[C!0AYHG%3q#'m`p@ItPo_J+No)8+WnGD\Rmf2\Pm/QDO
+lM]uIkQ'fAReN<O])oOS\c'&<[emH6[^EOAZi[S@[/RK,ZiJY=eG@YeQiEBFQ2d0LZiIN0[f3c3
+\,a#5\Gs&<\G`rB]">Pc]=bfR`:_+J`r3pZaHi+iQMm*KQMQsFR/bA7c-FSZcHjl:cNDJ;bfp".
+s2kGca2Q$r`;@IP`;@OQ`;[aT`:hIOcMl/hd/;;kdf7epeGn)!ec==qY5Q`Id/qbFe+;)ee,Rkq
+d/qbDdJ`>-lMKo8m.fuFme?2KnGVnSo)A7[o_\=\pAXg`q#1$fqYC$er;?N_rdk*#s+14#s*t~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6QjO,o.rL]NA-r:g*^oC_nNq=F7LrUKjUqsXOPs6]aNs6K^M
+rTX@G!9a64on3:)qMbB4s,?l8r/CW7oS`e#k1'7Vn9t4`r-eR(r/CT6rf6l:s,[5AplPN:s,d/@
+qiL]nou6mLrPnu\IX_6DqgSBkqge@,rgEbQ#+:jGQ^=#'o9B-;s-3AFp<EEYrm1Sjr6bPms3pqr
+s4./#!8%42q2kQFs.0(Zs.0(X!1j([r13_Ts-ruOr9F1Fmd0`9qsO4IrUBdUqssaXrq-*\rq??c
+qtU-crqcHfrVZTlnG\"=JcC<$ec1.~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6Qj<`W2t;ZQUjp\X[Up%\1ToCVVPnbqtSn,DbTmJQ>Nli68K
+l2TrIkOqmV<)rcor_r_os&B%ur`/qupf6re!7g5]qU>FDr)E)arDrr#!*B,"nlPZis&])"qH*R4
+ou6mLrPnoZqbdDmr_iSkq,@Ap<;]`"<``='='#<#s&T,#rDrkspK$rgr`8a;q9Jucrm:Sjs3gqr
+rRCkts4.2%r)W\rrD`esr)Nhu<;TSo<;BPk<<#nql29iDlgF-7mJH>Gn,;bSnb_nVoD\CZp&=[a
+p\Xaaq>U6dqu-HjrUBf;s+13$s4.."~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs0Vg1s0)F)s7cHbo_&%Pq=F1Jr:0aTqsXOPrpBXMs6K^M
+rTX@Gs5sCEqjR2Is189Brj`$<rj`!:qm?O7[C!=>Zi7<3[Ipp(eFD#]df,U1QN*<KQMd$GPQmDZ
+Za@*I[JI?1\,*T7\,!Q5\,Wu;\H]XW]=PVd]_02?`;.@R`g2q_Q2R$FQi>5.c2Z&icd;[;!mSs5
+qof#^#KXp(`Pf[4`;@IP`;@OQ`;dgU`;@aSbl,f`cMl/id/;;kdf7eqeGn(lY5HZHd/h\Eo$mTd
+rR1Ylq<@eAq!7A7qsF=Lq=":OrpfmVrq$-]qt9s^rqH<brqZQiq>:-gr;H-aJcC<$JcF=$J,~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs,[2:r.tCIr:]dUq=OLSo()_KrUB^QrpKdQr9XILs6BRI
+s60LG!9X65o7R('!0-u:!/pf7rf$o:r/LT4rf-Q/qpb/bp<rqgqgAElrd=Tks*jrqrd=[(r/CW7
+r/U]9s,[5Aq2kT:s,d2AqiLKgr5AEM!64GUqLA.)s-`kRs-`nSs-EbPQ1L7;Q2[$GQ2Ac$bl,f`
+cMl/id/;;kdf7eqeGn(rO8G%:SH#/YT)YAXS,f/VSc,)WS,)=GlM0]5m/-2JmeQ>MnG_tTo)A7[
+o_\=\pAXg`q#:*gqYC$er;?N_rdk*#s+14$s*t~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs&T/!r)<Xir:]dUq=OLSo()_KrUB^QrpKdQr9XILs6BRI
+s60LG!p3K_mo93`rD`ess&B"ur`8eooN(k=n^I3[r`/hpoMtcfr)Wi"qc<8hr)ir"r)iesou$^G
+q8E?Rr)3Pnr`&\lq,@Dr<E/lr"BJT)=',?#s&T,#rDrkspK$uhr`8p>qTSo_qp,2es3U\ks3gqr
+rm^tuqH!Mqr)E\rrDir!<;KMn<;BPm<;fbkl20c@lgF-:mJQDJn,;bTnb_nVoD\CZp&=[ap\Xab
+q>U6dqu-HjrUBf;s+13$s474#~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<drj;^1rilF+rV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRI
+s60LGs5s9Ko:,cMrjr-?"h;%O\@8pA[K!W3Zi@B4[J%!-e+M/WdIW\%Q2?dPPE_<=['R-H[C,k>
+rO;X5!4Vd6s0r!;rj`$?r4DR;r58KOrl+o%!1!MIpQbWArg*W.rlk>c$I6uEcd0n]bfn8QrQG5`
+#KXp(`Pf[3`;@FP`;@OP`;dgV_uRsObPfZac2>leci;AjdJqYpe,RqsXn]%!chl)hd/h\Eo@3]e
+r6kPks601@q!.V>oBcDBr9jFMrp]pWqssaXrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC<$fDg@~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<drf@):re^Z2rV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRI
+s60LGs5j<7mXtLus,?u9rJ^N2qi(Q7oSih!p!W9Uo6gRbpjE'fr/LW5rf-i9qi:c>O84n;O8b7>
+Oo1=4_Yh=M`;[aPIJeQiIJnWpIfPi.R/NHQR/`TSR/`KRQBh*,rKRDJQ2QsGPlStubPfZac2>le
+ci;AjdJqYpe,RqmO8b4@S,8`USc,/[SbnrPSc##VS,_^Gl1jQ<lgsK@mJQDKn,DhUnb_nVoD\C[
+p&=[ap\Xabq>U6dqu-HjrUBf;s+13$s4@:$~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<dr`8kprV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRIs60LG
+s5j;]mSs*_!E)kp<<#qu<;ons<qo\f<r^YAddGNW<;T\p<r>tt<<#no<WQ9(qc<5grE0)$qcN_s
+o>:FCrP\]Sr)3PnpJh/ks&Atts&B#!!EE+s<<-)!<rc;!<W?,"=8c1u<VTVf=8u;$b4EgTbl5lb
+cMu5jd/DAldf7ere,`NKqc<Ys!*/nqs&K"u!EE+r;u]hn<W#hp;uc(Tl1jQ<lgsK@mJQDKn,DhU
+nb_nVoD\C[p&=[ap\Xabq>U6dqu-HjrUBf;s+13$s4@:$~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??cs0Md4riu[3Yct=7p\"FUqXa:KqXOIPq="=NrpBXMrp0UL
+rTX@Gs6'@Cs-iPKrLEku#e@IU\@8uW\$l+?s0VX/osF,6pX&rdpm1]?rfm5B"1#;@Zi7?3[JRE2
+\,*T7\,!Q6\,Wu:\H'5>]DfV@_=thG_tfPfPlR-LQiG8.bl,cncd:%bcd'eZbfe0-bQ#]faMu3<
+`;.=M`;IUP_u[iqqoS`Xq9/c]s3:Jes3L_lrR(YnriPpts3LShs3Ukqe+;)ee,7YmdJrD.kjn!4
+lM9c>m/?>MmeZDOnG_tUo)A7[o_eC]pAamaq#:*gqYC$er;?N_rdk*#s+14&s*t~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??crf@&9re^Z2p\"FUqXa:KqXOIPq="=NrpBXMrp0ULrTX@G
+s6'@Cm=Y@ss,?u9",r.sN;8J0N;nn1N:#$ed/VGeI/&$gHMi-fHM`^"N;eh7Nr+k<OH94!s,[2A
+r/pr>rkS<FpVQpIq0i0ipO3!hrg3>GrL*\Qs-`nSs-EbPQ1U=>Q26^GQ'D0fqo\`XrlkDer6G>g
+s3U_ls3g\'rK.&Kqjd\WrLX%[qjdGPr1*_Ts6'@Eo',o6q<Rb@rU'ROqX=FQrpfpWrq$-]r:U'_
+s7cEcrqZQiq>:-gr;H-aJcC<$JcFC&J,~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??cr`8hop\"FUqXa:KqXOIPq="=NrpBXMrp0ULrTX@Gs6'@C
+r)EVnp/Lof!E)kp<<#qu<;ont<qfVf<pe</d/VGi<:3ca;ufqq<WQ9(qc<5grE0)$qcNbtrkS<F
+pVQpIr)3Yp;cE?gqGmMq!EE+u<W?+u<rc;!<W?,"=8c2!<VKPe<rc:uans6VbPo`cc2>leci;Aj
+dJqYo<Vfbq<rl9#qG[GprDir!<;TSo<;BPl<;fbqkPaW8l1aK=lh9]DmJZJLn,DhUnbhtWoD\C[
+p&=[bp\Xabq>U6dqu-HjrUBf;s+13$s4I@%~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<brj2R/riuI,r:U![qt'CLqXOIPp[A+LrU'OLrp0ULrTX@G
+s6'@Cs5iX;rjr*>!4_s9!4Dg5rO)X3qQon&rmCGdp!<N\rg*AFs-3GFoo]Td['[0G['[6KqmQI4
+qmc[8q7-I6s1&$<!4r0ApV6U@rPAHLs-*/@op,NBrlb5`s31tud*U+bcHXSWbKA#OrlPAca2Q$9
+pr!*Lr5JTP!6+]RrQ5#\qof#`rltDes3L_lrmCYGqQBhDqU#8i!RfHgeGReodeqJmk5=E>kjRd3
+lMKoBm/HDNmecJPnGi%Uo)J=\o_eC]pAamaq#:*gqYL*er;?N`rdk*#s+14&s*t~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<bs,[2?repc5re^RGr:KmXo()YIqsa@KrpKaPr9XFKs6BRI
+s60LGrT=.Am=Y:q!0$l7rf$`6q2><5oo/mtp<`KYqp,1gq0VOUqi1N4s,Ho9q2b?5s,[2Ar/pu?
+pV6U@rPAHLs*XNg!.ONfr0R/FrL*\Qs-X"WQ^=#'o9B3=qNLuFpW3<TrQ>#\s31JerQbGhs3Ubm
+!KE-;O8P+=S,/ZTSc,/[SbnrPSc,)VRfMUKkPOK3l1sWAlhKiGmJZJMn,DhVnb_nWoD\C[p&=[b
+p\Xabq>U6equ$BirUKl<s+13$s4I@%~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<br`0##pf.1ar:KmXo()YIqsa@KrpKaPr9XFKs6BRIs60LG
+rT=.Ar`&nrr_ibppJgufs&/bor)N_spJpuhrmCGdp!<N\p/V,lpJq&h!*/nsr`B"un5oTks&])"
+rE&a.qnW0HrPJS4p/CcdqGmJp#$"W%<E3(#rDru"r)Nbt!*B,"rDiSmoiLn/rQ5#\qof#`rltDe
+s3L_lrmCF?!EW:p<;fhu<E/io!*&borD`\n!9X4BqrmM5q<IkCq!A"IrU0ROrp]sXqssdYrq--]
+rq?BdqtU0drqcKgr;?Kknc"+>JcC<$f`-I~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a!;HGt!4;^2s0DX/!;69^r:BROqXOFOp@%tJrU'LKs6K[L
+rTX@Gs6'@Cs5a:Bj6W97])T>@\,a#:[K*`7[/IE4[.q!%[/828cMu/cQ2d*KPQ-gDOnk1<OoM`e
+[/[K4[/RK2[f*]4\Giu7\Giu;\Gj#=])K>=^@]2=_"s8jPkLCBQN,2.bP]Tabm_qFd*L%`c-4DS
+b0/!-aooi,`Podj_u.IP`Vd[Na8!aSaoBN]bPo`cc2Gohcd:&<XT#?uY5Q]Dd/VJpdaQ\;eGRen
+deqMjk5+9:kjdp7lMTuDm/HDOmecJPnGi%Vo)A7\o_\=]pAXgaq#:*gqYC$er;?N_rdk*#s+14(
+s*t~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a"o"%;O,o7uMuS\6M#d5Ho_e=Qo(qnQnFl>LmeuPMm/QDN
+lM]uIkl9iEk5XNDjQ#TZqi(T7rJUZ6qi0s$qp4TRs3:CerHe<coQp@nr/CZ8qi:H4qiLf<s,d2A
+rfI#koY:@?qL&*er-nHiqNprDrL*\Q#+:jGQ^=#'o9B3=qNUisprNEUs2t8_rlkDerQYSmd*R`2
+NW+t7OSt[GSH#/XT)YAYSGA`RSG\lSk5+9:kjdp7lMTuDm/HDOmecJPnGi%Vo)A7\o_\=]pAXga
+q#:*gqYC$er;?N_rdk*#s+14(s*t~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a!V]Xo=8Gqr;ulUho_e=Qo(qnQnFl>LmeuPMm/QDNlM]uI
+kl9iEk5XNGjPs3<;uT\p;tO&c;u]_q;uK\n<W6%n<VTVlcg/mVc2(H=<;ohr<<#tr<rZ1s<<#tq
+<rZ7u<q'2j=T2D"=T)=u^@]2=_"pt);tX)i<W#kt<W5tt<W?+u<rc;!<W?)"=8c1u<VKPf=8Ku4
+aSj6\b5BH^bl>rdc2u>=d.LE@=&i8p<<#tt<WQ3"qbmJoqGmGmr)<OUqWI\<n`fr9r9O1FrpB^Q
+qsXORs7-$Xrq$0^qt:!_rqH?crqZQiq>:-gr;H-aJcC<$JcFI(J,~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHGu!jSr4r3ZL0riuLqrU]^QqXOFOp$_hHrU'LKrp0UL
+r9=7Fs6'@Cs5j:A!9<F8"Ics6]".dLqmQI1s0_j5qm-@0Za9G6p<N?UqTJr)rfmDGs-!)<rK@#>
+s0;d6['[0Grj;^5r3lR5qmcX7qmcX7s1&'="1l+V]_9&:^AG\APP17@Q2HsJPld8pbl#Z^bR)P?
+d*U+ac-4DTrlY8as2kJda2Q$9pr!!I!6+lSrl+`RrQ"cUs2k8_rQG5bs3:Mfri?%"riQ+$!7(Ph
+qp>Aj!RfHgeGRendf%Snjn@j4kP496l29iFlh]uImJcPOn,DhVnbhtXoD\C[p&Fabp\agcq>L0d
+qu-HjrUBf;s+13$s4dR(~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHGRrf6o8s,6l6s7H9]p%%tLqXF1Hr9jONqs==Js6BOH
+s60LGrT=.As5X1?o7Hdj!06r9!0$l7rJ^Z6m>Ubap!*?W!.4Nfpj)LXq2P?3rJg`8plG<6rf@)@
+rK7,A!5/$=r4`'CqL&!bqL/KoIX_*ZpmD#Jqj@DMs-E8@rKRGKPEZ!1rl+`RrQ"cUs2k8_rQG5b
+s3:Mfr/C]:rf?u=!1NkUqjd\WrLX%[qOIAPr1*_Ts5it:q<.P:p$)D>rTj=HrpB^Qr9sXSs7-$X
+s7?6^r:U*`rqH?crqZNhqYU6hr;H-aJcC<$JcFL)J,~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHFor`8kqr`&pirU]^QqXOFOp$_hHrU'LKrp0ULr9=7F
+s6'@Cs5j:A!om3Xr_`_pr)EVpq,I2hs&/kqr`&eqr`8bnq,[47p!*?W!*/horDN\qoMtlir`/eq
+s&](umoKKkr`B#"r`9*4p:^C<qnMu*p/C]bqc3\sr`&nts&T,#s&T"sqc<YqpK%#irl+`RrQ"cU
+s2k8_rQG5bs3:Mfo2Yol<E8cmr`'##<E/fn!*&epr)EVns5it:q<.P:p$)D>rTj=HrpB^Qr9sXS
+s7-$Xs7?6^r:U*`rqH?crqZNhqYU6hr;H-aJcC<$JcFL)J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$KhZ*:I9Y5>U*Zi@?2oCqhQnbVbIn,)POmJ?2Kli-2I
+l2TuIkPaQCjo=E@j7Jf<S,\rWRK'o!\d,dU\@8rU[^H+CrNlR4rj;O.!4)U1qR$.EpWW9Qs-*5@
+oTB!3#a)BtZEpmEZa9Y<rjD[4rjVd7rjMp<\,Ei9[fEr:\H0:Rn\"h6s1\;mp6>TBq3D*)bfp".
+r6,Jlcd:"acHXSWbPoZabQ#]faN)9=`;%7D`:_+J`r=$UaT'B^b5KN`bl>raX8f:#XoGR'cMc)d
+d/VJodaRg;r6tVmr6YN*r8mM3q<.Y=pZ_YArTj@IrpB^Qr9s[TrpfsXrq$0^r:U'_s7cEcs7uWi
+qYU6hr;H-aJcC<$JcFO*J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$<cr/Uc9rf$i7s,-jJp[\4OqXF.GqsOFMqX"4Irp'FG
+s60LGrT=.As5a1>l[o.sqi(T7rJUW5r/LH0!/pZ3qp"lZoZQrSs*=<aqKW*fN;/D3N;\b6NqeY9
+OH9@%rf@)@rK.)An\"h6s1\;VoR6Oapm;#J!13PLrgEYNs-NbOoT]<>s-3MH!0m/qrPniWqoJfZ
+s2t;`s31MfqMkN8rf@)@!goCErL<\Ss.0+[s.0%WpmqARr0m]Ir8mM3q<.Y=pZ_YArTj@IrpB^Q
+r9s[TrpfsXrq$0^r:U'_s7cEcs7uWiqYU6hr;H-aJcC<$JcFO*J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$Ef<``B#<r5ns<<)Rao)%tRnFZ2HmeuPLm/H>MlMToH
+kl9iEk5XQCjSn3=;?0Y_<;KPn;ZB\p<;fhq<qfVj<r:/9bk0*P<<#ks<;0Dh<;fhn<rZ7t<pWoc
+=T;Im]`#PD^A1\!;u'Dh<WH/!<<#tu<rQ2#<r5no<rH%n<qf\g`VmgUa8<sXaoBN^bQ#fdc1>!8
+<<#tq;ufkr<;fhs<;TSo<;BPm<;]YpjS\-1k5"3;kkF??lM^&Gm/HDOmelPRnG_tVo)A7\o_eC]
+pAamaq#C0gqYL*fr;?N_rdk*#s+14*s*t~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEc"gG25XfST%[/[Q5[/RE.o)/%TnFZ2HmelJJm/H>M
+lMToGkl9iEk5XQCjSn3>iq&T<ReiHP]DfAA\Gir;[f3Z?[^EKK['[6J[/.*3['I!DZhq-0bjWaM
+b5%4iOnt1>Z2_-0ZN@M?Zi7?2[J[K3\,Ei8[fO"JrODj9!4`!<q7?F7qRlTeoT]0;s2kAcbl#Z^
+bR)S@d*L%`c-4DTrlY8as2kGb`l5mq_uIUM_tq=K_u.IK`W!mWa8F$YaoBN^bPnO<X8f:$XT5O&
+cMu2kd*MX:rm:bpe+D/fe,7Yld/`5)jSJ!/k5+9=kkXKAlMg,Im/HDOmelPRnGi%Vo)J=]o_eC]
+pAambq#:*gqYC$er;?N^rdk*#s+14,s*t~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEcrf6c5rf$i7qXXRSqsa7HqsOCLq<\+Hrp'FGrojCF
+rT=.As5a1>s5NHurIb-1qi(T7rJLc:Mi<VmNV\S9NJrdRqMbHun&tLKnTt4^qKi!`s,?`4rf$f8
+qi:K5!K`B@OT(=@OSt=<])'&8]`*?VI.Vj_IeT3/R/`NLR/`TOR/`KRQBh0.!L8oJQ2d*KPP`8q
+`;.CO`rF*WaT'B^b5KKbMi<VkNW5%=NsLi7R$jD4S",uFSH#/YT)YAYSGA`RSG\iVj8A!7jmqR1
+kPXQ>l2BoHlhp,KmJcPOn,MnWnbhtXoDeI\p&=[bp\agcq>U6dqu-HjrU9`:s+13$s5*d+~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEc!*Abmr`/gcr:0[Ro^D\Fr9a=Hrp0RKr9=4Es6'@C
+s5j:Aro=%<s&82^qG[Dls&8nrrDiespf7/ks30rTpr`8/rDikuqGmMorDWYpq,RJsqGurar)`r#
+qRZO8qRlf)qbm&bq,@>orDj#%<`W6";ufqt<rQ2#<r5no<rQ+p<WQ9&q,dI2r5AEMrl4uYr5eo[
+s2t;`r`/VlrD`esqc*Sos&Aqss&Ako!*&epr)ESm!9="<qW7;1qWIe?q<@kCrp0LKrpB^Qr9s[T
+s7-$Xs7?9_r:U'_s7cHdrqZQiq>:-gr;H*`JcC<$JcFU,J,~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc#5,1&XK8J&qm6@2rj;[2rpp$Xqsa:IqsO@Kq<\(G
+rp'CFs60LGr9"%@s5a1>s5O(;lBqge]=YYc\brr9[0*eD['T\;q6U+,s0MU0r6+lXprWKUrf[;D
+r0$W5q2kT\!4)U1!jo;?rj;X3rO2^7r4)^7!P#W<\G`l:\Gj#=](NW3])K;AP4t15Pl$aGQN##-
+bKTn-rlbbnbg+P]cd0n]bfn90ap6,4b/q`E`PhbnrkeNLr5ABIr58NPqo/TTrl=uYs2b;abPnL?
+WqrdrXT$QGcMu5dcihbEdF-MBe,[tneGRendeqMij8.j4jn.^5kPaW@l2KuIlhg&KmJcPPn,DhV
+nbr%XoDeI\p&Facp\Xabq>U6equ$BirU'T8s+13$s5O'/~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc!qhS6rf-r:qi1T6repdHrUKdSp$_eGqsF4GrTjIJ
+qs".Es6'=Bs5j:Aro=%<s5EO$s+:3%s+:91#`an(N/WaUN/[[mrf$f8pl,62qMb?qpr`BRrQ+MT
+r-SBgq0Dsu!KE-9NW4t9NVeb6NrY4<O8b7>O8b7@OnH9_])K>?IJS?[IK+cjQi<BOQhm'LRJ`HO
+QN<D;p65TCPl6mIPQ6pB_Yh=N`;@OR`r=$WaT'?_b00dBrf$]5s,R)G".>UIS+rNRSc,/[SbnrQ
+Sc##US,;7BjS@p0k5=E@kkaQClMg,Hm/QJPmeuVRnGi%Wo)A7\o_eC^pAamaq#:*gqYL*er;?N\
+rdk*#s+140s*t~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc!;64i!*/epr`/sgrUKdSp$_eGqsF4GrTjIJqs".E
+s6'=Bs5j:Aro=%<s5E-?q,78kr_rhrr)N_spf7/kr6+lXprWKUqGdDnpf@;mr)EYorDi>flrX-f
+!*Aj(r4;m>qbd8hmo06cs&K"u!`rE'r`&ntr`8u!!*8tsqc<\rq,RMt<r,nm_Yh=N`;@OR`r=$W
+aT'?_b00Z^pf@;ls&Jnpr_ierrDiksqbmJoqGmGmr)<LQqW.J6o]H)7rTO+Brp'LKqs=@MrpKaR
+rp]sXrUTsZs7H6^s7ZKeqtU0drqcKgr;?KkmJ_\:JcC<$ir=N~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7HZ"XK/A#Wi<A3r3QO5[']h=rpfsVp@%nHqsF.E
+r9O@Iqs"+Ds6'=Bs5j:Aro=%<s5<t9nX96@"IZj4]=\'Qr3u^6rNlR2r3Z7*s0D[2rNuFCn&YOL
+qN:]=nr`g2!4)U/!4)U1qR$70rO2^7r4)X5rj_p9!4`$=!4qs8pUU<drf[/Bns'';rQ55cbfe0.
+bPo]mbKS8Xd*L%`bfn90b5]Whb/qcH`l5mq_u7IK_u@UN_>(nH_u@UQ`W!mWa8X-aaeku6W2Zcq
+WqrdocN;D<chbuidF-JBe,@eqe,.Yme,7Ymd/hVRp#Gl/qW7J6rTF.Cqs"+Frp0LKs6]jSr9s[T
+s7-$Xs7?9_r:U*`rqH?crqZQiqYU3gqu,j[JcC<$JcFm4J,~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7QDOqMb<2s,?r8rpfsVp@%nHqsF.Er9O@Iqs"+D
+s6'=Bs5j:Aro=%<s5<t9nUpakrdk'.!07#:rf%)?Mi3IMMuJ\6NVJJ4Mu/J0am[=Na7+EQHi/3e
+GlWj'MueouqMkN6rJg]7r/Ui<r/^i=rK$r>s,m)dpUU3Mqg@dZp6YcGrKm2ErKdMLp65TCPl6mI
+Pkr5k_Z%IP`;R[S`rF*Ya8j?ZMuJ\3NW#4HR@9V7q4.JUr1<qZqjdJQr1*\S!93\3q;hD6pZDG;
+rTO.Crp'LKr9XINs6fgRs7$'Yr:9mZs7H6^s7ZHdr:p9erqcKgr;?Hjli)J8JcC<$k5Tr~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7Q:js&T5%<V]\p<W;OenFl>JmecDGm/62KlMKiF
+kl9iDk5XQCjSn3>ir@s;i:0eC;uBSr;c6Nm;[69#;GpFl<)icqs&K,$pf72lqT83Is2Y"9!*/kr
+r)E_rrDiYm!)reqn5emWrE'&$ppg(/s%rborDEMkm8F'e<E9$!s&T5%<W5tt<W6%t=8Ptu<`f3"
+r`/bp!EW>!=8Kc._Z%IP`;R[S`rF*Ya8j?]<r5nn<r5kr<Vobo;ZKeq<W?%q;ZKen<W#ho;ZPhM
+j8%d4jnIp9kPaWAl2KuIlhp,LmJlVPn,MnWnbhtXoDeI\p&Fabp\agcq>U6equ$BhrTjH6s+13$
+s5s?3~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:U)j"feQ#W4',2ZiIN3[/TRhn,2VNmIooFli$,F
+l2KoHkPXKBjo=E?j8\-=iVqd-RJE6KRK'hs])T>=[fa(G['Tb=!42X2pp:"+s0M^3ouQsLqo7KT
+s0;^2ZEjJ9qR$4/rjMg8r4)U4s1&';!4`!<qmQ@1r4)]es,m2Bm?@UmrQ>,_!6Y;arlb_mbg"J\
+cd'eZbfg".s2tVhaiVWD`Ph_mr5/?K!6"iNqnW0Hqni?Ms2=iSs2G5_aJG`1VZ*IoW2]crr2]V=
+qToAmdaHUnrRCborRCbor6kMj!RTg&iq)4,jS\-8k5FKBkkjWElMg,Im/QJQmeuVSnG_tVo)J=]
+o_eC^pAXgaq#:*gqYL*er;6HVrdk*#s+148s*t~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:TrG!/pi8r/LW5rp][Nr9jILp?_bDrTa7DrojCF
+r9"%@s5a.=s5O(;ro!O'rdt-#!.t#ts,?r:rf$i9!K;s9M?&S5N;eh3N;nh6N:k9fa8<jVHMr3_
+HM`'_HN/s,N/`gWqMkN6rJg]7r/^l<r/^l>rK$r>!0R/eqR?C4rI"Wnqg@dZ!1*>Frg<YNopG]E
+!1!8Br0@;HrP/6FrPABJrkncSr5J]U!QW:XMtr>3NVo.GR@9V7q4.JUrLX%[qOIDQr1*YR!9*h7
+oAf].r8mb:rTF1Dqs".Grp0LKs6]jSrU9dUrpfsXs7?9_r:U*`rqH?crqZQiqYU3gqu,aXJcC<$
+JcG$8J,~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:U"is&K,"pK%8nrp][Nr9jILp?_bDrTa7DrojCF
+r9"%@s5a.=s5O(;ro!EJq,@2js&8qss&/kqs&Anpr`&hrs&K/%<qo\n<qXQ0a8<mQ<;KVc<;]_r
+<;]bc<pWod=SoQ'\,<c7;=mc^;uK\p;Zg*%<E9$!s&T5%<W5tt<W6%t=8Ptu<`f3"r`/bpqH*X1
+qnW0Hqni?Ms2=iSs2G)[aST$8<W#no<<#tq<;fbq<<#tu<;KMn<;T\n<;TSoiVVX+j8.j7jn\';
+kPj]Bl2U&Jlhp,LmJlVQn,MnVnbr%YoDeI\p&Fabp\agcq>U6equ$BhrTO63s+13$s6BW7~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt1#jWMofq"1>SE[Ipp(n,2VNmIooEli$,El2KoG
+kPXKBjo=E?j8\-=iVqd8htEK7R/NHPQiak0\c02?\-TRP[^W`R['R+<ZiIH2[.q!-ZMh-,a8*aJ
+`TrZcOS=n:Z2q59rNl@-rO)X5s0qp9q7$C6rjMm;rji':o!\LX!0I/As-!DGm?@Xlao9H]b5f]a
+bPo]ebKS92cNMP<bfn90b5]Wgb/qcH`Ph\lrPJEK!5A0ArP8EKr5/KOs2=lT!QLr7V>R1rVl6Pn
+WiE,#d.bl_cihbEdaQ\DeGI_oeGRendf%Pqd*LY.qr.D2o],l1rT3n<roa:Er9=4Gs6KULs6]jS
+rU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU3gqu,^WJcC<$JcG*:J,~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt9lGrep`6rJg]5qsXINqsF+Dr9O=Hq<@nBroa4A
+s5j:ArT!q;s5Et8s53X)!.s`lrf$i9rf$i9!K;s9M?&S5N;eh3N;nh7N;LZk`q@:NHMi-dHMDjZ
+HN&m)N/dgsqi1W7rJg`8r/^f:rK$u?rK$r>s0_F+r-[US!L8uEQiEHMQhHgFQhH[DPlR'JPl[,`
+p:pRArk\NLs24lTrP\cVregQ1qMYKCQ^@Z<".>UIS,&TSSc,/[SbnrQSc##URf]&:i;;L0iq2:/
+jSe3:k5OQCkks]ElMp2Jm/QJQmeuVSnGi%Wo)J=]o_eC^pAXgaq#:*gqYL*er;6HUrdk*#s+14:
+s*t~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt9tjrDrqup/_/mqsXINqsF+Dr9O=Hq<@nBroa4A
+s5j:ArT!q;s5Et8s53WPr`&_mpf.8ls&9"t;Z9Sp<;TVo<;fhs<WQ9&pf7;oqoANPou5oipf6c`
+lrX0gs0_F+r)*2dr)*GkrDW\p%TQJ-=BAO'<``=&='&F&r`&ntr`8u!qc*Yt=8c2!<V]\q<rc;"
+<rfu.^\ttI_>M1M_uI[R`;mpQ<r5ns<qoYo<Vobo;u9Pk;ZKen<W#hn;ubeQiVMR+j8A!:jne-=
+kPj]Cl2KuJlhp,LmJlVQn,MnWnbr%YoDeI\p&Fabp\agcq>U6equ$BhrTF02s+13$s6Tc9~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]!36$tri5t*oX+YerU0UNp?__Cr9F+BrTO7D
+r9"%@roF%<s5O(;ro!h6s5*O<p6krJrg3Yrr42j;rjDp<[^EL@ZN@M?Zi7?,Zi790ZN/#9`VRLQ
+_s3B^OSP"=Z2V$0Z*O>7qm?7.s0hp9rOD[4s1&';!k>eOpU'h*qN(Q9!g8b2mZ[dla3">'s2tem
+bK@uNbKS2RbK\?3cNMP<bfn90b5]Wgb/q`F`Ph\lr5&KP_Z%IM^&5V@^])%K_>M1M_Z@]prM9Ii
+r20Ll#,nGuWN+=lpWr``s3^kps3pqrq9o>nr6kMjrQtSjq;D,.qVq80rT*q=qr[n@roj=Frp'OL
+rTsROs6fjSs7$'YrUTsZs7H9_s7ZHdr:p9erqcKgr;?Hjk5Kr3JcC<$mf.e~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]rf$`4r/CW7qi(RDrU0UNp?__Cr9F+BrTO7D
+r9"%@roF%<s5O(;ro!h6s5*X)mXb=qrf-l8s,@5AMi3IMMi7Rnrf-]3repc7!64TKqSWBOrHe*_
+mWnklrf$r;NW+t8N<"q8NW5(=Nr4t:Nr>%=OSt7?OS?-Z[JP@DIK"]gI0,XuQM-[FR/30DR/WEP
+QM$ICQ'D95qn;pAqS3$Fs2"WMs2+lU`VYPiMu/J5R/WHOQiibFS"'5Ds.0+[s.0%WrgieRrL<hU
+q;D,.qVq80rT*q=qr[n@roj=Frp'OLrTsROs6fjSs7$'YrUTsZs7H9_s7ZHdr:p9erqcKgr;?Hj
+k5Kr3JcC<$mf.e~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]!*B,"s&T2#r)Netqc<\rs6opSr9a4Er9O:G
+q<@kAroa4As5j7@rT!q;s5Et8s53k5qc3)as&K(us&8qs"]J;s;c?Zm;ZKep<W?)#='#&qs&K->
+o#:ID!5n;*s&8bnnQ#$YlW4'gpU'h*ohkWbq,./ir_ierr`/r"s&BA+=&r@'=&r=#<;ons<rH+s
+<<6-%rDrntpf7Ds<rQ1t^&5V@^])%K_>M1M_Z@]poiD)mrDrYls&JqqrDWSmqc!Mo!*/bmqc!=K
+qVh;1pZ)55rT3q=roa:ErTX=Hs6KXMs6]jSrU9dUs7-'Yrq$0^rUp3arqH?crqZQiqYU3gqu,[V
+JcC<$JcG0<J,~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\!i`3"rMfe(pU'n,s6fjQp[%hDqs*t@roj=D
+r9""?s5a+<s5O(;ro!h6s5!b3q3^lD!go=@r0I>nrOMp:%^rdR[^<EJZEpmEZa7$GpTsh(!42XC
+qS`6Jqni&hrK-r>pQ597s0;L-rNlC.qmHF3s0qs:q7$C6s0r$<!4h^-!4;BZ"-AY-P5^[9PQJeC
+aSj9]b65u2b0%p,bl>iebg-46#0tK;bfe/OrlYJfaiMNB`;ION_?7]m_o)8^rOr3EqnN0Hs2"ZN
+!5nf2rM9Cg!2fXk!iXJmpWr]_!7Ceos3pqrq:#8ir6bGh!71Z%o\fW*qr7G3rT*t>qr[qAroj=F
+rp'OLrTsROs6fjSs7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?HjjSj`1JcC<$nc++~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\rf$f6s,$f7o8N_;rU'@Gr9O7Fq!%eArTF+@
+roO1@r8[h:s5Et8s53k5!8[R)!.juspjr?nr/CZ8r/:l?N/NUOMMmDkMu\k3N;eb8N;^`l`;7CK
+_Z+rWHi89bH1lRaN;S\8Nr"_8N;S\8O8b1;O8P%:NrY:?NrY:5ZN.B2I.;X`IeJ0kPa.R.Qi<BK
+QhHgHQN<D;p65ZEPa.O/]`#PC^AG\F_#M7L_>qLHMZ/P4N;o:CQNW\DR[]fASH#/YT)YAYSH#/S
+SG\iVRf;4:i;;L1iq_X5jSn9<k5XWDkl'cFlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*g
+qYL*er;6HRrdk*#s+14?s*t~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\rDro!!E3"q<rQ+u<rQ,!meuPIm/62HlM0WC
+kl']Bk5OKBjS\'<irA!:i;_^7h>lC0<Us,`<W?"t<!?2u;H$LnqbmJoqc*\u='#&q!*9';qS`6J
+qni&+pf%2llrEISlrWeb!jkj'o25Ncq,./irDW\pr`BJ.<E3($<`W:&<W5tr<W?+u<rc;"<<-)!
+=8c2"<VTSs=&rC(pq6R=rkA9Es1nZNrPAQPr`/JhpJh/mqGdDlqc*Gkoi1fernmA+qr.G3q;_G7
+roO%>s6'CFrTX=Hs6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?crqZQiqYU3gqu,UTJcC<$JcG9?
+J,~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s7?&crO)[4s0_a2rj;anq!@qEr9F%@rTO4C
+qr[n>s5a+<s5O(;rS[_5!8d\1qj@,Gs-WhQqN_5n\[oBN\Giu;[0*kF[Bok<"LGJAZaBG4riuO1
+qnr$Brk\DmpQ5<8pQ5?9rilR2Z*L\4Zi%3,[K!]7\,Wu5\,Wu<[fO"Lr3?+(s0M3U!0I2Bs-!AF
+plkot_o0R9rQ>/`rQ5,`rlkDc"jG9;cd0l8bl>idb5TQfb/q`F`l.blrPAZS_SWn]]D9,=^&GbE
+^]2+L_#V@OUAgqeV#@.iVZ!Fkd.bl_ciDJke,@ele,7YldJV>kci)_tht5k)iVhd4j8S-=jo"9?
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agcq>U6equ$BhrT*s/s+13$s762?~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s765LqMYB2s,6N.!:BRJr9O:GpZ_Y?rTF(?
+roO1@r8[h:s5Eq7s5*h5rS@L*s+0Hcs,6i7s,Hr8"-&7uMuJS6Mt2i+MZA_5_t1bE_>/HUHLlFV
+HN&m%NW+t1NW5(=Nr>%9Nr>"=OSt7<Z21d+Zhf(<I/nZiI0>[qPEhF,Qi<BPQMd'MR$[T8s-EbP
+Q1gFEQ'@NEqn)[:rk8<FrP/BJs1nfSLl$uaMZ8P5MZ/M6N;].AQNW\DR[]fBSH#/XT)YAYSH#/S
+SG\iVRf2+?ht5k)iVhd4j8S-=jo"9?kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agc
+q>U6equ$BhrT*s/s+13$s762?~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s7?7kqc<es<Vohq<W?,!<<2F]m/62IlM'QA
+kl']Ak5OKBjS\'<irA!9i;_[7hYl:1<Uj&\<W?"t<!?2u;H$LnqbmJoqc*f#='&C%<r,hn_t1bE
+_>.($;ZKeh<<-(s<UEiS=8]?"ZN%64;c6Na;#jMi;?'Pk;u]qu=:&&/<E<1%<``=%r`&hrs&T,#
+s&T(u!*9)#rDrqupf7Ju<`Zg/]D9,=^&GbE^]2+L_#V@L<V0>b<<#tq<;fbl<;TVe<;TVmhYZ4&
+i;DR4iqh^7jSn9=k5OQDkl'cGlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*gqYL*er;6HR
+rdk*#s+14@s*t~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp-\rMfaqr3ZO3rO)O0rjD^kr9O:Gq!%_?
+rTF%>roO.?rT!n:s5Eq7s5*h5rS7M0g\mN6R/r\Ap6Gij\@K2^rO<-B[^NTO[^ENLriuR2[.:O)
+ZEpn6_YV+F^]BOXrK-u?jcBJHrilR2Z*CV4Zhq-+[K!]7\,Wu5\,Nl<\%24:riu6Zr/U]9rK.#@
+!0[8DrfdT%_Sa@5ao0?^bP]KabKS30b6?,8cd0n]rlkDc!6Y;a"j4p-a2Z'p_u%=K\bs&;]DT>@
+^&PhF^Au(HUAgqeV#@.iVZ3OodJ_GdchbugdJhVmeG.MjdeqMkd/VGih>?(*htQ(-iVqj6j8S-=
+jo+?@kPscEl2U&Kli$2Mm/ZSQn,MnWnbr%YoDeI]p&Fabp\agcq>U6equ$BhrT!m.s+13$s7H>A~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp0]N;eb6N;nh9M?&S,Mu\k9m/62IlM0WA
+kl']@k5OKAjSe-<irA!9i;_[7hYl74gtRC2k^W_nMi7Oms,Hr8"-&7uMuJS6Mt)`-Mi<Vk_YV+F
+_#&HVHi&-\H22dbN;\b8NqA>2O8k7<O8=n8NrkE(O7ogWZ1NG>IK+]pIJS?jIK,E3P*;/rp6YfH
+!13\Nrg3YPs-NPKs-EbPQ1U==\bs&;]DT>@^&PhF^Au(JM#W>3M?&M4MZ8P5L]`KkMi7M#r0IPR
+R@9V7q4.GTrgs.\qOISVpRM2Os-ilAqqh2,pYc#/ro3h8roF(?rT=+Bs60FGs6BXMrTsRO!:KgS
+s7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?Hjj8OW0JcC<$o`'F~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp-\rE&r"s&/qt<W#nr<W?+u<W2:^lhp&C
+l29cDkPF??jo4?>j8S'<iVh^7hZ2O3h#Z<cmo8mY#uji%<)Z[m;c?Zm;ZKeo<<ZE)=&i7$qGmC/
+qSE$D!E2np;uK\f;u]hg<<-(s<UEiT=8&ltZ2IW!;X[K\;Z9Vo=8l;.<`N.#='&F(<`T)tr`&r!
+rE'#"rD`hur`B&!s&Jbnr42a:rO`!?rk8?GrP&?Jq,R)g!*/\ks&Jqqr)<MmqG[&dqc!FKqqh2,
+pYc#/ro3h8roF(?rT=+Bs60FGs6BXMrTsRO!:KgSs7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?Hj
+j8OW0JcC<$o`'F~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s/Gjp"1>MD[JmN5[e@--li$,Cl2BiD
+kPF?>jo=E=j8\-=iVh^7huDR3h#cBdg]!T;RJiNQQh6RJQ+"03]"5EM\,Wo9[0!eDZi763Za@+0
+Zi7f;_"PMENfT7qOSt71OSk1>Yl:m0ZE^[?r3Q:-q6^42rO2d:pp^43pTOS#!06r;p5]$2rK%&B
+P5CIC^]_Kk`Q-+!aoKW_ao]c1bl5chc-FY]cHZ=3!R&Xbb65u/a2Z*p_u.CM\G<]6])TD?]`5\E
+^A=T(U&UheU].(fV$!TmdF%p>pWr]_!7L_m!7^hnr6kMjr6YJip"fN%r87>.rSdb8r8[e;s5j1@
+s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_rUp3arqH?crqZQiq>:*fqu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s,6`4regi8Mi77e!0-sCrTa.ArTO1B
+qW@b<s5a(;s5O(;rS[_5s5*_1"5MYcJ`VF]MtW,0N<+urre^]6mu77^qS;g>oQoeJs*=['rJ^]7
+s,Q`2"HJP(NfO$uqMtH6pTOS#!.4Tjr-SHkq0hj^rfI;HPa.O-QiEESQ^3s9QiEHOQi!-OQ^3p/
+Pl8,f\c',>]DT>A^&Gb@M#N81M?&M4L]N?jqj@;J"IPUFS"'5DrLNt[s.0%Ws./nSr1!_Tp"fN%
+r87>.rSdb8r8[e;s5j1@s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_rUp3arqH?crqZQiq>:*f
+qu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s&]/$r`0,!;cHcp<Wc?$<)rou!``3!
+rTjFIpZ_Y?r9*q=rT4(?qr@_9s5Eq7s53k5rS7P1gY;L&qbmJooMtlis&B2$;c?Xpr_`er<)i`n
+qGdMsrDreqrk\HHp:gZ+;H!'arD`Smqc*Mo!*8tsm8j-d!*8bopTOS#!)i\mpJUW\qbmAor`B5&
+<EB*#"'/K(<W,ns<W?,"<s)K)<`]0!!*9)#rDinup/_.%q76I8s1A3As1SEGs&StroiD)moi1rk
+qc*GkrD`YmrD`>dp"fN%r87>.rSdb8r8[e;s5j1@s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_
+rUp3arqH?crqZQiq>:*fqu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[qPsRprNug;[C!<L[eI3/lM0WAkl']?
+k5FE@jSS!;ir7p8i;_^7hYu@2h#H./g&RN;RJiKQQh6UBPm4Y)\%&uZ\G`o:[f3W8[C!:>Z3%A>
+[.CU([._92^AknGN<G9&O-#IsO84n8O84e:YH[o/qm6=0!42[3q6^42rO2d:pp^43qQ9_!m>h()
+rf@2DP*5a,%)9Tn_8O=5b0%iKb00_*s31Gb"jP?<cd'f6bR)J8bKJ&MaN)<>qSW<Ls0hg6rODa8
+rjr-Ar4Mm#r1O1dUSI^_r6bMjpWr``!R]?ce,7YldJV>mcd(;Bh"KS%hYl@.i;V^7ir%j:jT"?>
+k5XTEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAXgaq#:*gqYC$dr;-BIrdk*#s+14Ms*t~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[qMbH4!/gZ3oo&m1rp':Cr94+Bq<%Y;
+roEt:s5O%:rS[_5s5*b2s4mY/s4[L'q1%g_qMY--!f`.sre^f9N/W\eMu\k2^\Y\E^%m!5H2ig%
+N;eh9NqA;6NfT6]Nr4t6Nr4t7Xo5EoHiJKiIIhjbOTUf3Q'V-1!LT5QQMm0MR/E<JQiWM<p6>Tc
+qmZO6qml^;s1A3As+gN.r.b?0M2D4h!f;_hq3_)H"IPUFR[a,CrLNt[s.0%Ws./nSr1!_T!8ID+
+p>,Z'rSRJ0ro*k9r8[h<s5j1@s5sCGrTX@Is6K[Ns6]jSrU0gWnaZSKs7?9_rUp3arqH?crqZQi
+q>:*fqYf4KJcC<$JcGcMJ,~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[r`K2%s&T/""Ar&q<)rfrs&8tur`0)#
+<)ik^q!%_?rTF"=rT4%>qr@_9ro*h6s53k5rn[V0s4dS-qGdAks&APh!)rkrs&B%ur_j##;c6Ll
+;cNWmq,R>nr`&r!p:pI<s1SA.s&/kqr)3Gk!*&\moi(um<`]0!lrO$cs&ShpqQ9_!!)rGdr_rGd
+r)3Gos&]A)<`N3"<s)K)<`T)ts&K)"s&T5%=8l5(<E<+#='+rns0hg6rODa8rjr-Ar4N&0rDrhr
+pK%2loi(okqc*GkrD`Yms&AJd!8ID+p>,Z'rSRJ0ro*k9r8[h<s5j1@s5sCGrTX@Is6K[Ns6]jS
+rU0gWnaZSKs7?9_rUp3arqH?crqZQiq>:*fqYf4KJcC<$JcGcMJ,~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Yr2Taq%&g)3[^ENO[C!<K[^Pt=qW[tB
+rTEt<rT4%>qW%V8ro*h6s53k5rS@M/s4dP,!87@<s-WbOo9TEAr075h!OfK:\Gs&;[K*`7ZiIN5
+Zi@?#ZN.c;^AGV?]_mchNr+n:Nr>%<OSFn6NrP(?Yck;0Yl_/7ZMh-/ZiIH3[.q'#\,No9XS]-c
+Nr+n:OT1ICP5^[F^]2(R_SjI8b0%j&ao]c1bl,]bc2Gofc2Prbb6?&1aN)<>q833Lp9st0rj_m:
+rjr-ApnIYZ!huHcrMBA<!7:JdqTo8jddbfadf7_od/;5icMuVqg\]e$h>Q4/htu@3iVqj8j8\3>
+jo+<CkNM..l2U#Kli$2Mm/ZSQn,MnWnc&+ZoDeI]p&=[bp\agcq>U6dqtp<frS.=&s+13%s*t~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Yr/CQ3!/gW2oo/b3rTO4Cpu_P:roEq9
+s5O%:rS[_5s5*_1s4mY/rn7A*r.+Ehpji?nqMY--!0-u9s,-`4oo&mcqnDs@qRlfRpNca_l$<8d
+rf$i9rf6W1"HJP(NfO(!pQ#66rN,munTt7`pjMg_rK.5GPEhE!p6PfIQi<<LQiEHMQi*3OQBh3/
+p9st0rj_m:rjr-Ar.b9.rJ1E-reCQ2M2D4h!/^N=r0IPRR@0M5pmh;Rrgj+\qjd\WpRM/Ns-iuA
+qqM#'ptbo*rSRM1s5Et:rT!q=roO+@!pAe2rTX@I!:0UMs6TgSrU9dUs7-*Zs7?9_rUp0`s7cHd
+rqZQiq>:'eqYf1JJcC<$K)^?~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Ys&]2#r)Ent;H$Lo<W,r#<E)ptr`0)#
+<)i_YrTO4Cpu_P:roEq9s5O%:rS[_5s5*_1s4mY/rn7A*r)ESmqc*8hr_rkrr`&nt!*&qr##nN!
+;H$Lnqc!Moqc3Vr!EW>$<<0f2^AGV?]E1u.;>*of;uK\p<W?%u<VBDl;Zp*"<E</u<UEic=8l7p
+=8f5tXT2;i;Z0Pm;Ya2f;?0br=8l;(=&i7$r`9/%=&o/ts&K)"s&T5%=8Q%t=7]Jd[f3c8\GWo:
+])TD?<W,tt<VKPj<UWoa;uK\m;u]hd;ubSKg\]e$h>Q4/htu@3iVqj8j8\3>jo+<CkNM..l2U#K
+li$2Mm/ZSQn,MnWnc&+ZoDeI]p&=[bp\agcq>U6dqtp<frS.=&s+13%s*t~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-&fri$=)Vl$l0[^NQN[^<ELosOkb
+rTO4Cq<%V:roEq9ro3q9r8@V4s5*_1s4dV/rRq>+f\$1in!=!=qNM,j['d?OrjVs;rjMj7rNuR1
+s0;d6ZEpmCqQg1-rj)[5]tO*OrO_ocs,I)?q2YH8!fi>%pQ,<6s,I&;s0)O-Yl1j,YQ2!-Zi7<3
+Zi7?2[/dZ6[/dZ-\,Nl;Wqi^]Nq\V7OT1IBP5`3%^qmn+`lQ<Fanj-]bKS3/b5ffdc2c,fbl#Wf
+b/q`F`l.em!lW!or3ZF1qR6C4s1&!;oqM>W"JVZeV5<t7pWr]_!7C;brR1\ms3U\irm(>nqqM))
+q;)#+rnmY3ro*n:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3arqH?crqZQi
+q"t!eq>K%HJcC<$L&ZZ~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-&Hr/:Q3qMY$*!KH@Bkl']?k5=??
+jSIp9ir7p7i;_^7hYl:1g]6+-g&fs[f`$E`J,"rsN;eb8MYrD/Mu\e8Muo!P^%K&:]D$UHGj9SQ
+MuJ\7NW5%2NW+t7O8+b7NrZ3UX7(E6I/A?cI/K*0P*;/rQM-XGR$[f<rg3YPq3V&I!LB#JPQI,7
+Pl.oe[JI?2\,Wu9\bCmWLAlr2Ll$tGMYNS:QNW\DR@9W@SG\rVScG>ZSH#/TSG\lUReb\7g\oq'
+h>Q40hu)F3iW%p9j8\3?jo+?AkPscFl2U&Kli-8NmJlVRn,MnWnc&+ZoDeI]p&Fabp\agcq>U6c
+qu$BfrS%7%s+13(s*t~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-%gr)F#%;Gg=i;cHasr`08(<)cjt
+<`W6";ul1]kl']?k5=??jSIp9ir7p7i;_^7hYl:1g]6+-g&fs[f]uN:<Vf\p;u]hr<W#eq;ZBYq
+<;TVo<;T\n<rZ/$<kZ3>]`#GB;t<id;sRBe;cQgs<E</u<V'5k=8Z+t=8c1q<rf8rWrQ)f;Z0Pm
+;Ys>k;Z9Vp;?0bq=8l;(=&i7$r)Wkur)E\rs&K,$pf@AqpJq>s<`].*rO)L1rjVp;r42W'rDrqu
+pf@/inPo?`rD`Yms&AJdq:b`#rS75)rSIP2r8@S5s5O";s5a4ArT=.Cs60IHs6BXMrp9[Ps6fmT
+s7$'Yrpp*\s7H9_s7ZHdr:p9erqcEer;?BhgAZ['JcCH(J,~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr2KdsVu<Ll[K!Z<[C3HM[Iq!,
+kP=9=jo+9:j8J!;iVVR5huDR3h>c:1g\oh0g"=s/Q^@0,!1!;Cs0_m6s0hm8!4Mg5s0D^4rj2R/
+pp9t*s0M[:r4Dj;rjhiaq2YH6q2Y<4s,R,=rf$l]ric:*s0)L/rNlL1!jf8@rNuX6r3ZO5osat2
+po=1NrK$f8s,[2?pQ,<8!0R8DrP&WR_8=13ai_cJqT8l_bfp%/!6tMgs3:Per6#8daiDHA`;RUR
+_uR^NZi.91[J[K4\,Wu/UALYaUB&[8d/_PgchbugdJ_Mce,@_odJqSkcN2>Dr7Uhur7h2*qq_8.
+rnmY3s5F";rT!q=s5j4A!pAe2rTOCKlg+Q:s6]jSrpTmVs7-*Zs7?9_rUp3arqH?crqZQiq"ssd
+q>K"GJcC<$M#Vu~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr/CZ6re^]4regT2oo&m1rTF"=
+rT4"=qW%P6s5Ek5s53k5rS@M/s4dM+"khP\f78D4J+nlrN;eb8MYrD/N;nh9N;^Ee]DK2=\bCCE
+GjBYPMuJ\7N<#"2NW+t7O8+b8O8,aOHi8?gHi&3hIJ/'cOTgo4Q'IZ$pQkoJQi<9PQ^F-=R/**J
+QiWM<r075H!0m;crNuR3r3lU6s1%fYq1em(!f2]"pR(lF"IPUFR[a,CrLNnYrgj"Xs./qTr0m_U
+f_jFsgAK_(h##q,hYuF1i;_d9ir.p;jT"??joX`0kl'`IlKdd8m/QJQmf)\TnGi%Xo)J=]o_nI_
+pAXgaq#:*gqY9sbr;$<Erdk*#s+p]*~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr)WhtrD`bns&/krs&K)"!*0"t
+#$"])<E3!trTF"=rT4"=qW%P6s5Ek5s53k5rS@M/s4dM+"52>ZfA]a3<`E!rr)ESms&/kq!*&kp
+r`&\nr`9&!rOi'?qmud;!E<"h;Z9Vk<<#ni<!$!!<W5tt<r>th<WH4u<rQ2!<r,nmWqoWl;u0Dj
+;uKVk;?'Pl;u0Sp=9DW*<EB$!s&K"ss&B,$=',/tr`Akqs&T2$q6U%,rjD[4rjVp;oi2&o=',2u
+!*&\mnPoBarD`Miqbm5g!8.5&pY,Q"rS7;+rndY3r8@V6s5O";s5a4ArT41Ekii!0!p]+;rp9[P
+s6fmTs7$'Yrpp*\s7H9_s7ZHdr:p9erqcEequ$9gg&?R&JcCQ+J,~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xri-+#W2HMirMBM$s0hp7!4;C,
+qW@b<rT*h8rSmh8qr%M3rndV0s4mY/rn@D*s4I>&n<X*>s-3DEr07/e!4Dd6!OoN:[K!W4ZN7A<
+rNcF/!4)O/riuO1r4;U4!4_c_rf6f6q2YB6rf6u;!K<$:YlCp+Z2Us-ZMh-0[/[K4[/IB6[^ELA
+[0*kH\$l(@!4_j'q2Y31!06Z3rK.#Ar4`BM_8F74rQ4oY!mAg3rlY>dc2Q#gc2GlcbQ#]faN)??
+`;RUR_uR(?ZMCj+[/[Q3[K*#kUALVcU<q9]d/_Pgchc#dde2)edf7_od/;5hfDO;!g%a;"g]$"*
+h>c@2hu2L5iW%p9j8\3?jo4EBkPscFl2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]p&Fabp\agcq>U6c
+qtp<drRh+#s+13.s*t~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xrf$l8reg`4s+pZ3qMY'+!0-j;
+rT4"=qW%P6ro*b4s53h4rS@M/s4dP,s4RG)rn$+YpP\g*repf6qht?1s,-l9r4;U4!4_]Iq0;UY
+rcn9b!.+U%!fW%qrf$i9!06]2rf6l:pPo67q5F+9pNusfqgA?jp3c_!"Ho"7Q'V-1#FLjDQC!r*
+Qi<BIQNW\BQBda6PlI!KZ2Cp'Zi7?3[J[K,L\QW(LBE?hQ^@H6r0IPRR@0M5q4.DSrLWtYs.'+[
+pRM/Nrn%)#r7Ul!rS.>,qq_;/rnm\4s5F";rT!q=s5j7Bs6'FGrosIJ!:0UM!q#FDrpTmVs7-*Z
+s7?9_rUp3arqH?crqZQiq"ssdq#/kEJcC<$MuS;~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr`9&!r)E\r$W0f!;GpFm<)lq!
+<W5qt<W6##<E)rok5FE?jSIp8ir7p6i;_^6hYl:1h#H..gAfk+f`'L]<<#tt;uBVj;ZKep;uTbl
+<W6#!<W'H%\H'/<<<#ks;Z'Gn;Yj>k<;KMn<;ohm<!ZK'<`N.!<*!&t<V'5k=8Q%u=8Q%r=8Afj
+;YO)i;Z0Pm;Ya2i;Z9Sp=Sc+u=9;Q)<r5tu<W5tt<W?,"=85hq=85hr<rfN'ZMCj+[/[Q3[e*Q"
+<rQ1s<rZ.n<Uj&c;uK\k;u0Df;uYDHf_jFtgATe*h##q-hYuF2i;_d9ir.p;jT"?@k5XWEkl0iH
+l2^/KliQSBmf)\TnGi%Xo)J=]o_nI_pAXgaq#:*gqY9sbr:p6Crdk*#s,6o-~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6g5oWiE"pVPg;grh]V%rjMd5
+oX=e^roO+>q;_G5ro*b4rnmb4r8%D.s4dM+s4ID)rRV/&eX)X!QMZsGPk:.CZEppFZaB\>!k5VG
+rNuO0"1#8=Zi.01Za0M8riuO1r42^7rO;'OpQ#!-r364)#-bD<YctC<rj2U2s0Ma4#.:nI[^NTN
+rj;j:\$rgC[fX(K\,*#sNp2W&OT1FC^AP_K^qmq-aSj6Xao]c1bl,]cbg$.4s3:Mds3(Gb"j+j+
+a2Q!q_Z7XQYl(d*ZMV!.[/[Q3U%4rVT`EF:d.u)hd.u#dciVVAdJVGke,7Yne,@_odJqSkcN)Pj
+fDXA"g%sG%g]$"+h>c@3hu)C6iSrkqj8\0?jo+<CkNM./l2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]
+p&=[bp\agcq>L0bqtp<crR_%"s+132s*t~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6ouH!/pf5s,$c3!/LQ2rJLZ7
+repK/!fc@)roO+>q;_G5ro*b4rnmb4r8%D.s4dM+s4ID)rRV/&eUW23J,autMZ8V7MYi>,N;ne9
+MY`8.N;ne9N;U6`\G`o.H2Dj]H2DjbH2W'eMZSiqMuAV,N<,'!rJpc9qMkW<NfNt6pNuFXqgJ6e
+!0I&>"Ho"7QBq62rKdJM!LT5QR.cjJQBda6PQ7!HYl(d*ZMV!.[/[Q*L\QT)LRA(-pR(lF"IPUF
+R[a8G!1j+ZrLNnYq47;Nr0m];pXfArr7Ur#rnIG-r8%D0s53b4!o`.urT!q=!9O1A!pAe2rosIJ
+!:0UM!q#FDrpTmVs7-*Zs7?9_rUp0`s7cHdrqZNhq"ssdp\i_CJcC<$O8j_~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6oqf!*/qrs&K/#;uBMn;uTbr
+<<-)!;ufqt<WlE%<9E?Bjo+99j8J!:iVVR4huDR2h>c:1g\ok+f`9\'f)sUS<E8Nfs&8\ls&8ns
+!`W)sr)EJjs&Atrr)EJlr`8s-qmcU6qc*Pnr)EPls&AtrrDNMkrD`_qs&Atts&9#!<r>ti<rZ7u
+<rZ7u<rH+rVZKan;>O2^;uKVf;?'Ph=8l>$<r5tu<W5tt<W?,"=8>nr=8,_q=8]<#Z2V'+Zi@E4
+[II5s<rQ2!<rH"l<V'/j<E/iorD`SkqGR/g!7pnrrRh&$qV(r'rnRG-s5*e5r87Y8io9pss5X1A
+rT41Ekii$1s69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_rq?Bdr:p9erVH<dqu$3efD^@$JcCf2J,~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKlgWrAprVZ*FkV#Ib'[^ERA
+[K!Z8[J.-/jS@j7ir7p5i;_^6hYc40h#H.-gAfk+f`'M&f)O8#Qhm$EQ2[$>P6[8UZEggDZaB_>
+s0_p8rNuO0s0DX1rNZI1ZM_'.ZN%H4\,!K+N:`)0Nq&,.N;Tp[Y6(r6Z2Us-ZMq30[/[K4Zj*qH
+[C3NO[/RH9[^W`S[f!T8\@;I6rh][Vqi:];s,Q]3s,d8Arf@,@q2bZ?^:sQ\"i.sk`5]mrans3]
+bKTq."3f$8cMl)ebl>ldap#o.a2c0;rPST;q69k's0DR/q4[JUr1X/:q9])frQtGfr6YGjr6kPm
+p!Wies3Ubkrmgqtpt,JsrRq)%rnIG-rS@M1rnm_5s5F";rSmt?jlQL(s5sCGrTOCKlg+Q:!q#FD
+rpTmVs7-*Zs7?9_rUp0`s7cHdrV?Hhp\XgbpANYCJcC<$P5g%~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKlHMuJV6M>i>1L]320MuSb8
+MtW)0NW/#7j8J!:iVML4hu;L1h>c:1g\ok+g&K_(fDjG%eGt-hJ,FcqJ,OirI0"eFreg`6qhkE3
+pl+p)r/CZ6s1&!9q6oj>!-n0^q0;j`!.+Wir/1W8Mi7OmoSim3NW"n7O8=k;O,j49rh][Cqg8?j
+s*O9`qgJ9f!e$/lqiM&FPEhE!QM-[DQN*<LR.cjJQBda6Pl7f]Yl:p-ZM_',L]3&'L\ZZ*Q^Ic=
+pmCuG!1<bR!1NhUrga%ZrLNnYq47;NrgWo;r7:YprRh)%qqD&(rnRJ.s5*b4ro!h8s5O";!p&J)
+roX7D!9jCG!p]+;rp0^RmdC)Cs7$'Yrpp*\s7H9_rq?Bdr:p6drqcBdqY^'cf`$I%JcCo5J,~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKkh<W5tt<W6%u<<,tq;?0Yo
+<<#r#;cH^rr`0#!r`&mXq;_G5ro*_3s53h4r8%D.s4dM+s4RG)rn%2$s4%*Ln5T!X!)ibq!`W)s
+r)EMkr_rkrqGd5i!`lh@r3uL1qc!Jls&8kq!)r_nr_rbnqc!Gm!*/qrr`/tt!EE1u<V0>l=8Q%u
+=8Gtt=8o&qVZ'Kn;?'Po;u]be;u0De;#jMh=8c5&=&rB"=8u;$<W5tt<W?,"=8>nr=8,boYPGF%
+Z2_--ZgLij<r>ql<Us,h<<-"r;uK\k;u0Di;uY>Ff(dkqf_sM#gA]k+h#6(/hYuF3i;_d9ir.m=
+jQ5M&k5XTEkl'`IlKdd8liQSBmf)\TnGi%Xo)J=]o_nI^pAambq#1$fqY0m`r:^*Ardk*#s-!D4~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU1&mW2QVkVPU/dV>d7j[/IB:
+[^EQO[C3L8[eo+air.j4i;VX5hYc40h#?(,gAfk+f`'M&f)O;#eGGR.Q2[$EPPUI@PQ%ieZi@?1
+[K!Z8[JmN6Za0S:rj)R1rNZL2ZEjG8s0DI/r3ZR4N:r2.N9ZE$N;nh5YlCm2Yd1O<Yd(M5Zi@E2
+ZNmkG[^EQP[']h?"LbeK[^Q+C!P#W;V#68RNpr,.OT(C@OSb1?O9:WX^:sQ\"i.sk`5]mrans6X
+b6#o4cMc#dbl>ldb5]T``rX/trknc<r3$"%qlp+*s0D?l!huB^qkEt]rm1)\r6P>grR(PkrR:Gf
+s3^hms3LSlrRLhsq:GVurn72&s4dS/r8%D0s53h6s5F";ro=%>!9O1A!pAe2rojLLlg+Q:s6TgS
+rpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhq"smbpAN\DJcC<$PQ-.~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU9]Bs+pc4M>i>2L]!&.MuSb9
+MtW)0NVhc8ir.j4i;VX5hYc40h#?(,gAfk+f`'M&f)O;#eG+OlJGt&nIe\?jMZ8V3MZ/P0N:r2.
+N;nh3[f!N5[,ZH0GklXbGl3L"N;nh6N:r82NWb?%NfB(rO8=k;O,j17k'[#Rq0W0jrK-r>"d5(7
+Q'Ra0Qi36MQi*6EQNEJ<Q2[$JXo,@#YPYR(Z2_--L]3#3Knb>;L5,S\qhG-;s-NeQpR(lF!1<bR
+!1NkVpmqATq47;Ns-ro8rRLhsq:GVurn72&s4dS/r8%D0s53h6s5F";ro=%>!9O1A!pAe2rojLL
+lg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhq"smbpAN\DJcC<$PQ-.~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU0tk<)cjt<`W<$<rZ2!;uBMn
+;uKZ'<E)mr<E3(#<E3!tqr@\8rSdV2rnm_3r8%D.rnID*s4RG)rn%2$s4./!nPoHcs&&ns;H!Kk
+s&/eorD`nu;cETnqG[)epf7-ur3ZO3rDNVn!)iens&&hqp/LcbrD`bp!`W)sr`&kss&9#!<r>th
+<WH4u<rZ7t<rZ8"U]OFk;Z9Pn;XIEU;ZBSp;HEQorE',&<`]-"s&K,"r`&nts&K5'<`N/s<rQ1q
+<r]<"Y5PR$YlD!.ZKtTh<WH.u<;0Da<<#qu<;TVm<;BJi;Z'JjeG[qqf(mqsf`'S$gAfq-h#-".
+hZ)L4i;_d9ir8!<j8e<?joX`0kl0fJlKdd8m/QGQmf)\TnGi%Xo)J=]o_nI^pAamaq#:*fqY9s`
+r:^*Brdk*#s-*J5~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9jdVWMl_mrh]^mV#6tf[/IB8
+[^EQO[IUd)ir.j4i;VX5hYZ./h#?(,gAfk+f_sD'f%&=MeGn"kQ2[$EPOt"?Z*:L<rNZF1rjDd7
+s0Vg4riuO1rNZF0rNZL2ZEjG8s0DX3r3ZC.oS`[,qi1T6pPo-1s,6l6"0\r5YPtd+Y6_D=ZEUR<
+ZEpn:[/I<9['mEN[^NTNrj;d8\,Ec6[fEr;U\TuIOSk1>OT1C?OSFq=P*,[*s1JBGrP&NO_8F74
+aSa0Wb5BH_bl>udc2PrebQ#`baTBN&`;[XSXSApsY5YX'YkFdiT`1YbUACPabg-46n'M$ZrQtMj
+rR1Ynp!Wies3UelrmUYlrRLktqUb`!rn75's4dS/rS@M1s53h6s5<t;rSmt?jlQL(!pAe2rojLL
+lg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhp\Xdao_mPDJcC<$Q2c@~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9j^TMMh:f!/UQ.r/1H2rf$l8
+pP]*3rSme7qV_A1rndP.s4mV.rS%;)s4I;%!nPoPrm^tsqLAHordX]lp3d1'M2I1KMi*AhMZ8V2
+N:`&-N;nh8[J[E0Zf??2GklX_Gl*F!Mu\e5N:r82NWb?%NfB(sO84e9O8bpSHi/9kIJ/'gIJ\Eg
+IJJ6jIJf3)OTgo4Q'IZ$p6YcEs-NSLpQkoHQ2[!JXSApsY5YX'Yl0@ULAll.KS>-ZLAQc*L'!^/
+Qh-UBQN3EPR/i`TSGA`ST(nlPSH#)Xe+hGkec"(qfDaG%g&0S(g]-(-h>c@3hu;R6i;hm9ir\<'
+jo4BDkNM./klU/9li-8Nm/ZSRn,MnWnc&+ZoDeI]p&=[bp\Xabq>L0aqt^0^rS.=&s+138s*t~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9j^T<E9$!!*B/#r)N\o"B&/r
+;H*Hls&8qsrDiksrSme7qV_A1rndP.s4mV.rS%;)s4I;%!nPoPrm^tso2PZe!)iYjs&/hpr_`bs
+<;fhs;u9Po;u]hr;tj8d<W9E([/@9/;#jMn;ZK_p;?'Mo;ta/j;uTbr;uK\i;uTbq<W?##<E<+!
+r`/Pj!*B%u!*Ats!*B/pr_i\l!)iJgs&Ahno25Wg<`\usrE')%<r5tu<rZ2"<!QE(<``@'<E8os
+r`Anr!3GstriZ7(rNPTfrDrqur)EDjo2P`i!*&kprD`PjqbmAkrmUYlrRLktqUb`!rn75's4dS/
+rS@M1s53h6s5<t;rSmt?jlQL(!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNh
+p\Xdao_mPDJcC<$Q2c@~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!puqarMBRjqP4(trNuX6
+r3cL3!4DU1s5Eh4rSRV2qq_8,s4dJ*s4RG)rR_)#s4.+us3h"sdJ0"+PkpU8Oogc-Z2V!-Z2q59
+rj;^5!OfB7ZN.9,Z2h60ZN%92ZLkL&Z2fdRMtDu(NW"h8MuJV4YQ1m+YlCm4Z*L[>Z*CU@Zi7?1
+ZN.B1[Ka.H['d<M\,<]6\,W/sNrY:>On+V0OoLUCP5pjH]`5_F^]2(Q_8F74aN=G&s2k2]r6,,a
+s3CPerlkDcrlPDc`l?!8_u-S6XS]."Y5b^)T_Y;YT`:\cT_b>abg"GYrQju[rm1Sjr6bJkrR:Gf
+rmCbms3^enr6tJkrRLnuqq(l#rn78(s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJ!:0XN
+s6TgSrU0gWnaZVLs7?9_r:U*`s7cEcrqZNhp&"R_oDRJDJcC<$R/_[~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!UYdAM>i>1LB*)+MZ&J4
+N;nh1Muo!tiVML2hu;L0h>Z40g\fe*g&K_'fDjG%ec+(udfInEr."ZqrdXWjpO3'h!/gc4s,-r9
+M2D1gs,6`4oS`[,pp9t*!-mRMs*F]js*FWhqfqsqs,6r9qi(6.r/Uf:!07#=qMkW<TqVI4r-\?h
+qgA?jqgA<iq0W3kO8G%;OT^i3Q'I[/Qi36MQhm*DQiEBOPl.T\XS]."Y5b^)L&d#-LAlo*K`?c*
+LAZi,LB!V1R/E9NR/WKRS,JlQSc,/USbS`TdJ_Mke+qMlec+.sfDjM&g&9Y)g]-(-h>c=3hu2I7
+iSrkrj8\0?jo4EBk5a`Fl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Facp\Xabq>L0_qt^0]rS7C'
+s+13;s*t~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!:BV`qc3Vpr)<Smqc*So
+s&Aqss&B$WqV_>0rndP.rnRP.r7_2(s4I;%s475#rm^ts!RfBg<;f_q;Yj8j;Z9Vn;ZBSo<W5tt
+<W?"p<<#ns<;ohj<;BPhZi79-;#jMn;u]bq;?'Pn;t*c[;uK\p<W?%t<<-"s<V0;l=8Q"u=8Gr!
+=.u>d;Z'Al;Z'Mk;uK\o;ZTcnoMPci<E</q=8l>%<rc:t<t&,0<E)su<`W:'<`N/s<rH+s<rB#s
+XS]."Y5b^*<9mQ`<rQ+s<;0Da<<#qu<;]\n<;BJh;ZB\qdJ_Mke+qMlec+.sfDjM&g&9Y)g]-(-
+h>c=3hu2I7iSrkrj8\0?jo4EBk5a`Fl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Facp\Xabq>L0_
+qt^0]rS7C's+13;s*t~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6Tfarh]^mV"pbeU9h6$
+[JdQ6[J730i;MR4hYZ..h#?(+gAfk+f_sG%f)O;!e-+7Kda?J<Q2?gEPOjq@OcYWbZ*F;4riuL/
+"gbSD[C3IAZN@G;Z2Cm-Zi.30Zi@?0Zi.3-YlM$#MZ&J,N;/D0N;\\4YQ1m+YQV/6Z*L\7Yl_5;
+Zi.91ZN7G@rO)d8[']h?!4Vm7s0r$$rf7&@rK$r>qiUN4pQ5H=rf[PN]Xthh^:sT]s1efS`5]m?
+ao9B\ao0B[bQ#fdcMYrebl>lbaoof*`l5jlWr9!tXSo:#TDbG[U%k;XT`iQ_c-FW5cgT6\ci2;h
+dJ_Mle+V5hdJqSgdJ_Mle,%Snec+.tfDjM'g&0P*gYCT_h>c=3hu;R6iW%p:irS6&roX7D!9jFH
+s69UMrp9[P!:KjTs7$'Yrpp*\s7H6^s7ZKeqtU-crVH3ap\aX]hYr*+JcD2=J,~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6]`@rJ:K/rIt</qhkB2
+rJU`7pPf-3ro!b4rndP.rnRM-r7_2(s4I;%s475#rR:u!daHOjq1/?lrI4cps*jin$%@;MI!^3f
+I#<g\M>iD3M>iD3MuJ\8MZA_.MuJY8Zi.3-YlM$,Gj0MKHM`!fGlN'bMuS_9NW+k:MuJ\/NW"n;
+N<#";O8=n:T`0<9I/&-gI/SKlHiSNbHineYO,s1"rfI>IQ'IZ$p6Y`Ds-NSLpQtoG!0m>[rN#q!
+rN6'QqM,!'qh5!'!/CB+rg3/Br0IPRR@0M5rLE\SrLWhUq4.6-rR1YnqUGMprmq#!s4IA)r7V5,
+gt_kas5!b5ro!h8s5O%<!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%Xo)J=]o_eC^pAamaq#1$e
+qXsa[r:BmDrdk*#s-it<~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6]edq,R;kr)<Smqc*So
+s&Aqsr`&mTrSRV2qq_8,rnIA)s4RG)rR_)#s4.(t"OkfIdF%Pb!)rVirDW\nrDESprDWbsr_r_o
+s&8nrs&8YkqGdO%rNc@+!O,Ju;#jMn;u]bp;#jMn;t3i[;uK\p<<-"s<<-"s<V0;l=8Q"u=8Gtt
+T`.gh;uTYs;,U=kqc*MmrD`_o!)i\kq,.>o<`N1$q,dMss&T2$qH")+<E3!u<E<.%=&r=$r)W_s
+r)WZorN#q!rN6#to2YchrDihtrDibppJpfas&B%ur)<Pnq,@/gs&8^?rR1YnqUGMprmq#!s4IA)
+r7V5,gt_kas5!b5ro!h8s5O%<!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%Xo)J=]o_eC^pAama
+q#1$eqXsa[r:BmDrdk*#s-it<~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQrh]anUndp`rM0Ce
+s0;X2p9jq/"LkhI[^Q1ErO2a`rndM-rnRM-r7_2(rn.2$s475#rm^tss3gno!mm0rrK[5Drfd&=
+r/gu@rK$u`ril@+$*pnE[C*HMZa6t:Z2Cm-Zi%-/Zi@?2ZN.9*YQ0U[MZ&D0MZ&J/N;\_9N;eh2
+N;\\4YlCm/Z*:F9rNQI/ZEgh7[/RB4['fnAs0_m6rjDU2!1s1Os,[/@s,[2AqiUN4pQ>E;!0dAo
+!PQ5H^BhWk_8=.1a2uI&aSs<Zb5KN`bl>udc2Z#fbPfQeaMu6=W2TZoqPsOq"0A#aT)P>^T_P5X
+T`:VaT`1Yab6,u5cHcC7nBh3]r6YDirR1Ynq9o/f!mo9>rQtAfrR1YnqpbVqs47,"s4IA)rRq>-
+gt_ka!oDhlrnmk:_o)K6!p&J)roO7Ekl0iHl2^/Lm/QGQmeuSUnF?&Jo)J=]o_eC^pAXg`q#:*e
+qXsaZr:BmFrdk*#s-s%=~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQs+pc6M>i>1L]3&.
+L&Zr/M>W80MuJ\8Mt`/3NSiXmhYQ(-h#?(+gAfk*f_sG%f)O;"eGn"tdf.Vqd!pQDJGOcpIeA-h
+I/83iMZ/J3MZ/J3MZ/P5N:;c*Mu^-XYQ/tIGl)ddHLuL]H2r6iHM)OaH?o@Frepu>N/W[Qrf$Q1
+rf6u;!07#=qi1ZJr-S?hq0hp`qKr$c!e$/lrf?r<#*G(4Q'IZ$p6Y`Ds-N_P!1EhRpQtoGs/>mq
+qPsOq"0@-.K`6]%LAlo(K`?`+LAlr.R/NBBR/E9NR/WKRRf&]OSc,/USbelVci)5ddJ_Mle,.Yo
+ec44ufDjM'g&9V+gYCT_h#cHjhu;O8iK00#ir\<'jo4BCkNMp0s69UMrp9[P!:KgS!q>aMrpp*\
+s7H6^s7ZHdqtU0dr;-*`pAFO\i;S<-JcD5>J,~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQpJpufrDW\n!)rep
+s&8qsrDihrs53h4qVD/+rnIA)s4RD(rR_)#s4.+us3q"rrm:_moMkfgqGR/gs&/bls&Jtr!``2u
+r)E\p"BAE#;cEBhqc*X$poj`srDNYmrDNYos&/hn!)i_nqc!Por`&Ddr)E\r!*&qtr`&ksk#MJR
+r_rhpr_rhps&8eoohtigqbd/e!)rhspfIDrpK.Aq$<:&*<E<.%=&r=$r)W_srDrrsrMfXnri6%#
+r)E8fr)EYq!*8tsr)EGkq,IAmr)E\r!*&kprD`SkqbdJocd2R:q9f/hrR:Ynrmh&"r7Cu$s4RA)
+!o)McrS7P3hr"Fk!oZpNro4(@jlQL(!U&\Gl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Fabp\Xab
+q>C*^qtBsZrS[[+s+13>s*t~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPs/#mpUnja_U]-tk
+TqJZrZaBJ7s0`*?[^ENO[emQ1h>Z4/g\fe)g&K_&fDjG%ec!u!e'c\DdJqSnch<V%PP:7<OT:LA
+O8k4AYd(J2YlCs4ZEpmE['d:?ZMh'&ZN%92Z2q;9r3-+&"-&7tMuJV4M>W80Mt)`+Mtr>1Mu0aY
+Y6;,7YHY81Ylh59ZEsJ9rj)X4[JmT7[JmQ3[J[H8O-#HcplPK;rf@,@ooT39rK@#>!Kt(m]E,^[
+rkA`S_84",a2lBErlG&[r6"u]"O,09bfp%1!mJj2rQ52^`l@qSrM]^prMg9pS"-%@StD[KTqS3T
+rLs.^rLa+_!29A7"3f$8cMl/aciDDgd/MAjd/DAidf%YjdeqMjcMc)fd.u)gdf._neGe"uf)=5#
+f`0Y'g&g$ah#?.0h?Mlqi;^^4ir8!<j8e<@jp1)5kiq?slKeH9s6TgSrU0gWnaZVLs7?9_r:U*`
+rqH<brV?EgoDA7ZoDR\JJcC<$SH"*~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPs,$i6M#<&.LAZ`,
+LPUfaMZ/P5N;nh1Mu\k6h>Z4/g\fe)g&K_&fDjG%ec!u!e'c\DdJqSnch;kgIK=kGomQjfs*OWh
+!f2\jrJCQ3r/(H2s,6l8n;@=+Yl(^(Y5`hAH2`-WGlW*`Gl`5:q2>62!f`.trepc7pPo04rf$o<
+rf?r:!.+Nhr-\Hkrd4]mp3c[_qg8EmO8Y1>O8P(DOckroQ'Ra0Qi36MQi<?PRJiNLQNEJ>QMdZZ
+W;`dpWr%DMKS>-VLAlo,K`$Q(L'!-sR/NBBR/E9NR/WKSR[a;HpmqATq47GRr6G8erQtAfrmLep
+r7(_rs47/#s4IA)rRq>-gt_nbs5!t;i8DtCOQ-9"s5X1AroOIKkih9qlK[^7m/QGQmeuSUnF?&J
+o)J=]o_eC^pAXg`q#1$eqXaUXr:BmHrdk*#s.'+>~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPpf6udrDW_o!)rep
+r_rhrrDiksqVD/+rnIA)rn7>(r7Cu"s4.(t!n5TGrmCbms3L77qbm2f!)ibms&&ns<)riq!*/kp
+s&8nrs&8Vjr)Ea$r3-+&qG[8hr_iepr_WYnnl#Ndo2GNcs&B%ur`/qsr`/,^"&r9"<;9Dk<;oer
+;YF#h;Yj8f;?9]tr)WPnr`Jnrs&KA)<)lq!<``?#<<H9'<`]-"r`8rprM]^prMolrrD`;erD`es
+!*8qrs&9#!<;0Dg<;ohq<<#tu<;]\n<;BJj;Z+i=ci)5ddJhSne,7_pec45!fDjM'g&9V+gYCT`
+h>c=9hr*F::/BmKj8\0?jo4BIkNM-ol0@R"rp9[P!:KgS!q>aMrpp*\s7H6^s7ZHdqtU-crVH-_
+pAFO\ir4N/JcD8?J,~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP!:0W\"/M]fV#I+i
+U7qRZ#bS9(Z*L^D[C5n=#.D"M[C*HOqmZU]rnRM-qqD)'rn./#s475#rRCkrs3gnos3LhncHc0K
+qNLc=qiUf<rf7YqZ*CO<Yct=8Z*CU?Za7$H[/RB2Yl_/7Z1tX(ZN@G8Y557$NK!jponr[*oo/^)
+rJ^`6s0)@)s/uR1Yck:8rilR0ZEgh7[/RB4['fnA!4Dg5rO)X5s,R/ArK6l:!0R8BqN(N8s,m8C
+qN1c@qRcjB^AbkQ^qmk)`Q-'Aao0<Zao0B\b6#o4c2PrdblZ,4bPfQaaMn+TqPX=k%&oY`R[]h<
+SXuFFTqVFZ!297^rLa+_!6Y8`s31Jfs3LGdrQkGhrQkMjrR(Slr6tJirR(Vhq9JrbrQtGhrmLep
+rRChss47/#s4@>)rRq>-gt_nb!oDi7rPSZps5X.?!9O4B!pAe2rojIKli-8Nm/ZSQmfN"Knc&+Z
+oDeI\p&Fabp\Xaaq>C*[qt9mZrSmg-s+13Bs*t~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP"7(f"M#E,.LAQ](
+LB`QkMMd=LMZ/P5N;eb1Muo!ph>Z4/g\]_)g&BY%fDjG%ec""te,RkqdJqPpcd'i1J,auhIK+]p
+Hhi!fM#W;3MZ&A3MYr>1MZ8V7N!"uqMi..bs/u4#s*EXLq0;g_!IB%eMuAS9NJrhqMuJ\0NW+t;
+N<#"<O8Y+=HMMpbHiSToI/83fI/&$gI/SHnIf#6+O8P(FOcu#pQ'R`&R/!$IQMm0MQiNQQR/*'K
+QMm]WVuEUpWVD)IKS>-VLA6K&LAI8-R/E9NR/WKVR[]e:SGA`RT)"rUSGpe/cMc)fd/25idf._o
+eGe"uf)=5#fDsV'g&g$ah#?+2hVZWXNsCd+ioB([jQ6C'!pAe2rojIKli-8Nm/ZSQmfN"Knc&+Z
+oDeI\p&Fabp\Xaaq>C*[qt9mZrSmg-s+13Bs*t~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP!:0J]pf%Q"<)cdq
+<)Zap;uT\l<<#ns<;fhs<<(eRh#?(*gAfk*f_jA$f)O;!eGn"tdf.YociVP=cLXs(;u';o<)Zaq
+<W,ks<Vf\p;uTbr;ta2h<WB5uXoD;i;uBPd;u'>g;ZK_p;uBVk<W5ts<U!Qa<;fes<;9Aq<)Z[m
+;,R6hr)3Snpeguf!`N0%r)WPnr`Jnrs&T,!r)Wbr"'/K(<r?&!<rJolVuEUpWVf]o<<#ts<qfVm
+<;9Jm;uouupJq#grDW_qs&K%tr_r_oq,@5irlt8arQkGhqpGDkrmUhqrmh&"rR_)%!87>)!o)Mc
+rnRY4hfeuo#>a@=j5]4]jo4BDkNM./klL)8rp9[P!:KgS!q>aMrpp*\s7H6^s7ZHdqtU-cr;-!]
+p&+I\ir4N/JcDABJ,~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6BZ]r1s@f"eq]`
+TV%kUSd2F%Yd1UB[C5n=s0`-@[C*HO\%)@Fs4dG)rn7>(r7Cr!s4.(ts3q"rrmCbms3L\i!6t)!
+!0d8BqiUZ8(6>])Z*:I9Yck77Yd(L>Za7$GZEga?rilC,qm-1,!j\r1r2fpX!0$l7pknm*repi8
+rJ^E-rf$i7ric7(s0)I-!jAi4rNZC.!42U1s0Ma4"LY\H[C-"@rNug;O,f6]O8P.6OSOt6OSt:A
+OSk7@OoW,j]F;Kf^V@S"_84%.a2uI#aSs<Zb5TQcbg"E2bl>ogbfft-!QiF^V#@.hVZ!CmRJ`NR
+SH#,bStD[LTq\9TqOmbY!m/U-rlb>c!6tMgs3LGdp!<ZbrR(SlqpYGjrQtVgrQP5bq9Jucrm:Pi
+s3gnqrRCkts47/#!nc2Zrn@D,!8RS0!<;r6s5O%<!T`AAjoX`0kl0fIlKeH9s6TgSrpTmVs7-*Z
+s7?9_r:U*`rqH9arV?Bfnb`"Wo_mkMJcC<$T`9N~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6BZ@r.k<,r.Y*&
+reCW4M2@+Jre^`8MuAV7Mu8M6NW+n:NW7c1gA]e*f_jA#f)O;!eGn"tdf.Yod/VGkc2c,bJ,aug
+IK+]pHhVjcM#W;3M#N52MYr>1MZ8V7Mu\e8MY)i,Xo,:#HK0;DGl)adMYW2/MunutN;eb6N;/D4
+Nr=q;NrG+>NWaZRH$Xf6HhVp`Hi8?fHi/9kI/o?*OT(==O9gu4Pa.Q#Q^=*8Qi36KQiEEQRJiNK
+Qi<fZV>d@jVu;5JK)1*$KS>-VLAur-LAZ`+Q'V<6nX06@!1<bR"IbgLS=KDGqk!\UrL<l2rQP5b
+q9Jucrm:Pis3gnqrRCkts47/#!nc2Zrn@D,!8RS0!6Y5#!g)F$ro4%?jo4BDkNM./klL)8rp9[P
+!:KjTs7$'Yrpp*\s7H6^s7ZHdqY:$br;,s\p&+I\jSj`1JcDDCJ,~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6KP^p/D,o<)cfp
+<;ohr;YsGn;uTbq<W5ttg\]_(g&K_&fDaA$ec""te,RkqdJqSnci22ic1P!*;ZTcpq,75k!E<"s
+;ufkr;ufqo;ufkr<;ohj<;fhsXo,:";WLdL;ZB\p;?0Sn;u9Pj<W5ts<V9Am<VTSt<)Z^p<;ont
+<;9Al;YX,f;YO&f;ZB\p=8Z+n=8uCr<rc;"<W#nr<<?3&<r?&!<rSonV>d@jVuBZp;u]hp<W,to
+<W#es<EArrr`&Pjq,I;ks&B"urD`eqqc*GkrDEX=rQP5bq9Jucrm:Pis3gnqrRCkts47/#!nc2Z
+rn@D,!8RS0!cq(1r_<Mjio9st!T`AAjoX`0kl0fIlKeH9s6TgSrpTmVs7-*Zs7?9_r:U*`rqH9a
+rV?Bfnb`"Wo_mkMJcC<$T`9N~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:r1s@f!MZ:d
+TDb>fSZ]-"Z*LaE[^Q%?s0`'>[^EQPrjVj9rn@A)rn./#s472"rRCkrs3gkns3LblrQYJhbfosK
+!0d;ErKI/BrK.,BOnOn:YQ(j-Yl(^(YQ1s,Z2h61Z2Cj+Z2Cp*Zi7$)WW\<?NJrh[MuAV/MuAV6
+MZA_8YPbX)Y6;)7YHY80Z2_*0Zi%31ZN[_D[C3NOrNuR3!0@)=!KW?@OnOn4O7n\8Oo:ICP5r2i
+]FMWi^VIY$_Sa=3a2uHEa8O*Yans6\b6#o4c2>cec-+</b5S14V#I1jVYuq]RfAoXSc>8]TDkM_
+U&1M]TE!%5b5TTabQ,oecMl/bd.P]bd/;;ide_Gjdf7\pb5'6[bl,f_cMu5id/;;kdf._oe,n1O
+f)=2%f\+sWg'$0ch#%'H_ZA`Uro4%?jo4BDkNM./klL)8rp9[P!:KgS!q>aMrUU![s7H9_rq??c
+qY:$bqtfdYp&+L]jo0i2JcDMFJ,~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:r.k<,s+U6$
+rJ(]8M2I4LMMd@OMuJ\8Mu&D2NW.Z2g&BY%fDjG$ec""te,RkpdJqPnci),jc-4E/J,aufIK+]p
+HhMd]M#W;3MYi81MZ8V7N;nh9MY2o,X8]-VH1uRZGlW`tMuAS9NJrhqMuAV0NW5%;N<#"<NrXM)
+H2W'fHiJKmHi8?fHi8?fHi/9kI/o?)OT1CAO:723OHG]iQ'IZ$Q^=*8Qi36KQiEEQRJiNMQi<cV
+V#I1jVYu/GK)1*$KS>-TLAcf-Pa.R3Qi!-MQhZsGQN3EPR08tJS"-#ESberUSc>2[b5'6[bl,f_
+cMu5id/;;kdf._oe,n1Of)=2%f\+sWg'$0cgr@J5NrkF%ir7s=jQ6C'!pAe2rojIKli-8Nm/ZSQ
+mfN"Knbr%YoDeI]p&=[ap\O[`q>:$Wqt9m[rT4$0s+13Fs*t~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:rDibpr_r\n
+s&K(u#uaf&<E)mq;GpHk<<#np<;fhrgA]e)f_jA$f)F4ueGn"tdf%SnciDDjc2u87bkG$.;u9Jk
+;>jAp;cH^pr`&hps&8tuq,@>mr`&kqpJh,lri?$u!)rhojAY\Kr)*Glqc*Dlr`&ksoiD)mqc<_r
+r_rhrr`&qtpJV&ilr!^Zs&/nur`Attq,dSup/h8prDibrr`'&$='&H#=8nukV#I1jVY='Z<W#et
+<E</t<W5tt<<-"n<V]Vm;u]hs<W#er;u0Jk;u]_qb5'6[bl,f_cMu5id/;;kdf._oe,n1Of)=2%
+f\+sWg'$0cgi7B6:&[lh:Z:=4irS6&roO:Fkii$1!UB"Mm/QGQmeuSUnF?&Io)J=]o_nI^pAXg_
+q#1$cqX==Sr:U$Mrdk*#s.fUE~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!9sKYrhBLf
+T`(M]T)Y>gXfeh1Yd(OA[C3O?[0="J[^EQPrjVj9!87A(qq(l!rmgtss3q"rrR(Yls3L\is31Vh
+bKKgJooo?;rK6r<rK$r>#*4eJYHY:9ric@)rNQ:+!OB'2Z2Cj*Z2M!,Zi-p(WW.qWN<"q-MZAY0
+MuAS7MuJ\7Mt`2/YPbX)YQ(j,YQ(j+Z2V$0['Tb=s0Da5[JmT7[JdH6[?$CHNWY?(OHK@#!0R5A
+qN(?3!0R5Crf[Ao]D9)O]t_=t^qmn*`5]j>aiMNCaN4>%qo\r^!R/gdbQH,6bfg".s.TCcrhKFf
+qO.AP!LoVXSc>8]TDkM`U%k;\aT0K]bQ#cdc2Q#fchYr[cN;J@df.YmdeM;jdK%\oao0BYbPo`a
+c2>ldci;AidJqYpe,@ereH"2!f)jUXg&B\,p%ZK$_ZA`Uro47EjlPXekND(.klL)8rp9[P!:KgS
+!q>aMrUU![s7H6^s7ZHdq=spaqtfaXpAFU^k5Kr3JcDPGJ,~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!9sK<re:E,
+p4W<u#)J+nMi3INr/CW5qi(K5!87A(qq(l!rmgtss3q"rrR(Yls3L\is31VhbKKg5s*jQfs*Xip
+!.=cmom6@g!/gZ1reg`6"H87sMMh+crMomskB[)RqKW'crd"KfpNZdrMYW2/MunutN;eb5N;AP5
+Nr4k<O*Z-MH2N!gHNJM?HMi-iI/83^I/\KlHi]=iqN1`<s,d8A$BUC5Pa.N"QC!r*q3V&GrKdSQ
+R@4#@r0RGWrM':drM9CEqL\Qr!ec8]p4iU3!1*JJqj7AMq3_)H!1<bR!1NnVs.&nUpn%JU!1a&1
+rQ=u[rlk>cr6G;fs3U\ks3gqrrRCkt!7q,#!nc2Zrn7Cg`;>VpO9+>"ro47EjlPXekND(.klL)8
+rp9[P!:KgS!q>aMrUU![s7H6^s7ZHdq=spaqtfaXpAFU^k5Kr3JcDPGJ,~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!U3V^<;fbk
+<;ont<<#nq<!-&s;H*Kms&8hprD`jNrn.,"s472"rRCkrs3gkns3Uelrm(Pg!mJj2pepc`rDNJh
+rDEVorDWbqr`&hps&8tuq,@>mr`&kqpJh/mrMomsr_ieroi(cds%rbop/:rhr_r_mq,.)hqGd>l
+r`&ks!EN4p<rZ1u<rZ/"<;ohr<;ons<;]Yt<)Z^n;X.-Y;ZBer=8Z+p=8uCr=8u>"<W,ts<<-(r
+=9"umUAgqdV"RdT<<Q9"<*!&r<W5tt<<-"o<V]Vl;u]hs<Us,g;ZK_pao0BYbPo`ac2>ldci;Ai
+dJqYpe,@ereH"2!f)jUXg&B\+DK,MJr_<MjiSsjs#NY".k2tjikl0fIlKeH9s6TgSrU0gWnaZSK
+s7?9_r:U*`rqH6`rV??emec_Up&4%PJcC<$V#Pr~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69QZs.]Uh
+T`(M^T)5&cXfeh1YHbF@[C3O?[0X4M[^ENO[^WaE\GXtYf)F4teGn"tdf%Snd/VGjc2u87bl5cc
+b5RXuPPgUBOnt.@O,f8!O8k4?NW-*fYd(I9Y-5"2YHRl.!O8s0YlM!+Yl:p+ZMh-.W;_bTN<5&s
+MuJV-MZAY0MsZK&Xobf0YPbU/YHY77YHY81Z2V'/Zi7<6Za@*IrjDg7rj2`eO,s-trf?r<rfR2A
+qiCH4!0R)?s1/3Bq7I0N^V@S"_8=+/`lH3CaSs3[aSj6Xb5]Z]bQc>9bfe/OT_Y;]UA:5TRK8nJ
+rLEt\TCnlUaT0K]bQ#fdc2Z)fchc#\cN)>kdK%\mdeD5jdeq2bao0BZbPo`bc2>leci2;idJqVp
+e,@ereH"2"fDjJ*g"Plarl"WM!TE&;is4Z,jlY^gkNMp0!UB"Mm/QGQmeuSUnF?&Io)J=]o_eC^
+pAOa^q#'saqX47Sr:^*Prdk*#s/#aG~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69Q=s+^Q-
+p4WI"!/CE,#)J+nMi3INr/CW5qi(K5r7Cu"rmgqrs3q"rrR(Yls3LYh!mSs5rlY;ardXfos*alo
+!.Fios*a]j!.4BbqhY9-reLT3M#<,/MYrD4MY;u,W;(Z;Gk64ZHKoeUM>iD0MuAS9NJrhqMu8P1
+NW+t:NW+8#H1lRYHh;^^HiK0-O84kJO-#HaO-#HdPa.N"QC!r*q3V&Grg3YPs-`hQrKdMWq4[h_
+q1JNqr.>!&re:3's+gT<!L8uIQi*6MQhm*IQN3EPR08tJS"-#DSbJ`USc$S-ao0BZbPo`bc2>le
+ci2;idJqVpe,@ereH"2"fDjJ*g"O'OqiCZ:!TE&;is4Z,jlY^gkNMp0!UB"Mm/QGQmeuSUnF?&I
+o)J=]o_eC^pAOa^q#'saqX47Sr:^*Prdk*#s/#aG~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69J]r)<;g
+r`';);c?Xq<E)mp;cETnr_rbprDidIs472"r7(bqs3gkns3UelrQYJhbfp(0!6Y.9oMbWbr)*Gk
+s&8kq!`N&sr_rtu;GpHe<<#nr<<#nj;ufqsVu]jrrD`Gg!)i\k!)iDes&/Pfr)<Gkqc3Vpr)NJl
+s&K)"r`&qtr_reqs&K%trDW\pr_iepkY_=[rE&ntq,dSup/h8prDiesrD`huqc<cjq4[h_nl5'X
+s&/qt<W6%r<W5qt<W5to<V]Vm;u]hr<Vobq<V]Vo;uF`8ao0BZbPo`bc2>leci2;idJqVpe,@er
+eH"2"fDjJ*g"L1Wqb@#a!`.e7ro47EjlPXekND(.klL)8rp9[P!:KgS!q>aMrUU![s7H6^s7ZEc
+qY:!aqYKXWpAFX_kPg&4JcDSHJ,~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTOH\USFQV
+rLX(]q4.qaX/rJ,YHP18['d?Nq6^I9\$`WP[^WaD\Gt.Zec""se,RkpdJqSnci)/hblGudb6,o/
+acuF]rK@,Aq2bT;pPo65riZC-Z*F50qQBq(Z2(X'Z2M!-Zi6m#N!#&uN/RUks,6`2s,-l7pl"^%
+",i+sMuBd[YHG),YQD#4Yl:j+YlD!-ZN%9/[/[Q6[K<kD[/5j`NVeb9O8b4AOc]O(s,d,=pQ5E;
+q3(`g!5&'>%)0Kk^qde'`5Ta:aiXM%!6G)[rQ>,_qTK)ebfn8QrLa%]s.T.Sr0dYUSGo)ZScGDW
+TE*.5aT0K]bQ#cfc-FW3chl)]cN)Agde;,i`r3sSaSs<\b59B]bl5lccMu5jd/DAldf7eqe,n1O
+f)F8'io]OorP\QM%H-4)ioB([jlPXekND(.km-M>lg4!*mI'rA!q>aMrUU![s7H6^rq??cq"Xd_
+qYKUVp\adakPg&4JcDYJJ,~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTOE>L5(EU
+K`6Z,KS>0XLBWNlMi3IMqi(N4r/CQ5s472"rRChqs3gkns3UelrQbGf!6kDb"3Sa-J,+QmIIhj_
+Hi&-hHN8BhM#W8/L]N?gqhb?1rJU]5pP]$Kqg&!^s*=Hcqg&0ems,+^H$OXjLl)+gqht<0rep]5
+qMkN8rf-Pqr-A?gr-J0coR-L^"-8P*O84kJO-#HaO-#HePa.N"Q^=),q3V)HrKmPOs-`hQrg3SU
+rLj1ap4N3nre(3'pP&[5rfdGKQMQsGR/NBKR/NBOR/WKVR[]e:SGA`LScHe/a83mVao9H[bPo`b
+c2Grfci;AjdJqYpe,Ihue^i=Nf)r4^\%DR!qiD9FiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rU0gW
+naZSKs7?9_r:U'_rqH3_r;$3cmJHYUp\j:SJcC<$VuM8~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTX;\r)<>h
+!`N&trDikr!*&qt"&r2t;YsGn;uK\n<WCYLec""se,RkpdJqSnci)/hblGudb6#i.ao#'/;t<fd
+;u0Gp;cH]p<!-&s;H**bs&8hps&K"srhoWmpJ_#gqGI8jpJV&io25B`qGd>lr`&eqpf@Aor)EYo
+p/D#jrD`eq!)iAbr_iSirDrkur)WVps&etrs&T,!r)Wbr!*9#!rLa%]s.Ss^nl>Zgr_ihs<W6%r
+<W?%u<W,no<V]Vm;u]hq<W,ns<VTMn`r3sSaSs<\b59B]bl5lccMu5jd/DAldf7eqe,n1Of)F8'
+A7fOjqG$o`%H-4)ioB([jlPXekND(.km-M>lg4!*mI'rA!q>aMrUU![s7H6^rq??cq"Xd_qYKUV
+p\adakPg&4JcDYJJ,~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs.]Rf
+rLa+]q47MTs/ZO/Y-+t3Z*UjG[e[<3[^Z4DrjVj9r7(bqrmLbms3UelrQbGfs31Jcs2kDbaN3k7
+!0[;Cq2bT;qMtK5r3$.+ZMUd*YHIi-!O/j(Yl:p,ZN%63VPX$G!/p`3r/(9-q2>!+r/:T6s,6cW
+!3c=)s/uF,ric@+s0;R/s0MX1!4Dg7!O[paNr=t8NWP9'OT(@EOHGZepQ,-3!KiQAP5r5o\cBA<
+]F;Nh^VIY$_SjF5aN;O%`rO3Yao0B\bP]Tac2Yufb5._0TD"]KRKT+MSXlAOTD>/[b5TN_b5BH_
+bQ?&7cMPrbd.u#fcMl,idJ;5be,I>b`r=$TaSs<\b5BH_bl5lccMu5jd/MGmdK%bpe-=ISf%Jj;
+jnm!m_[YP_io9"YjQ,Fbk3(pkroj[Qlg*p(mHs??mfN"Knbr%YoD\C[p&=[ap\=O\q>'mSqtU*`
+rTO63s+13Ls*t~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs+UN-
+pk8R!re1<+qhG?2MMd=LMYiA3Mu/J3NVq<+e,IeodJqSnci)/hc2Z#ebQ#]daiMQuIfFiiI.;R]
+HMWHsL]3)1M2;%cs,-c5regN0!N)^iH1uR]GPcUdH$FT(H2MpeH2i-hL]E;2MYi>.N;eb4N;S\7
+NW>(.H2`-hH2;jaHglF_O8k:AO84kJO-#HaO-#HeQ'IZ$Q^=),qNq/HrKmPOs-`kRrg3JQs.At:
+q1ATu!/1?*qM#',Q'M?5!L8uIQi*6LQi!0KQiEHPR08tJS"-#@Sc#)Y`VmgUa83mVao9H\bQ#fc
+c2Grfci;AkdJqVpe,@c#e^i<LWiiZ*O84kHi8N\Tj5]4]jlY^gkNMp0#O:X@m-O-,meuSUnF?&I
+o)J=\o_eC]pAXg]q"sm_qX+1Tr:g0Rrdk*#s/H$K~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs&Aqq
+p/M#i!EE+t<W>tt<;okt<;ohg<;fhpeGn"sdf%Snd/VGjcMu/hbl5fcao]]+aSo*<;X[Q_;Z9Vn
+;?0Yo<;]\p<<#nr<;oec<<#nq<;ons<!0"o;cETnpJV&ipJLofpf%2jpJLrgs&&YlqGd>lrD`_q
+qc3f#<`W5t<;ohc;ufkl;Yj>d;Z'So=8Z+q=8uCr=8u>"<W#nr<W#qpT)YGY<<#ni<;0Dl<;f_r
+<)rltr`/nrs&K"sqc3GkrDW_qr)N_qs&Jkorl+iUrl=lVrlP/^r6,,arltDes3L_lrmCbo!7Unr
+#1_;U?=75RpeC]^%H-4)ioB([jQ5OdkND(.km-M>lg4!*mI'rA!q>aMrUU![rq--]rq??cq"Xa^
+q>0LUq#'mbkl-/5JcD_LJ,~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH!p?>P
+rh'1]r13YR%'-J3Y-+t3Yd1XD[C5q>qmQL5rODjUs3ghms3UelrQbGfs31Jcs2tA`rl>)[nWX!9
+!g/S,qN(]<q2Y<2r3$1,ZEO,-rN?7+Z2Lm,YPk[2Z*:L<ZEggCV#H>QMu/G5Mu/D0M><&+Mt`2.
+MuJY9MlllZ!3cC+!O8m,YPtd*Z2_-/Zi.6:[C3N&N/`gWNqeV5NrP1?O9:W,O-''rq2bW>P5:@C
+]"@sQ!5&*?!58BH$,FBo_o0O6aN;O%`rO3Yao0B\bPfWhc-FSXbab4%Sc>;\R/`TSR/<<IRK]1N
+SXl@Drh'1`rh'>6b0'_*!6Y5_rlbGgcHc=5qp>/brQYGjdJ;5ce,RA_`W!mUa8F$Xao9H]bPo`c
+c2Q#gci;AkdJqVpe,Ii#e^2dtgr9-.qSNd#iSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Y
+s7?6^r:U'_rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH!p>;l
+q1Sa$q1Jd&LAHZ/M2I1KMMqCkrJUT4rJgg*s3ghms3UelrQbGfs31Jcs2tA`rl>)[qL8Elq0`3h
+!.=WirHeBgqKhsns+gN.qhb?1rJUZ4q256Kq0D^Zr-.p\np1.XrcnKgreUT2s,-]3qMbE3qi(H4
+s,Q8fr-J6en9k4rs,[5ApQ5B8$BUC6Q'IZ$Q^=),qNq/HrKmPO!1EeQs-NbUrLNt[rdt0&s+:'!
+r.=j!s+LB*qhG6;Q'M?5!L8uHQi3<MQhm*KQiEHPR08tJS"-#<Sc?Y)`W!mUa8F$Xao9H]bPo`c
+c2Q#gci;AkdJqVpe,Ii#eY&\8Wf[1?pQ,jBiSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Y
+s7?6^r:U'_rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH"6WW^
+;tj8e;u]hp<W>tt<;okt<;ohh<;fhre,RkodJqSnci)/hc2Z#ebQ#`bao9?]a5p8!;?0Yn<;BGo
+<)Z`p<!#ur;Xm`c;uTbq<W5r!Uf(.g<;9Dl;Z'Df;YX2j;Ya/i;Z9Sp;Yj>g<;T\o<;]bo<WQ9&
+rDWYos&8_mrDWSmpeprepJUlhrE&quq,dSup/h8prDibrr`'/'='&F(S=KPKs.9$cr)<8fpf7>n
+!)ibo!E<(u<rH%s<<#ts<;T\k<;fbq<;T\q<<#tp<<'o5`W!mUa8F$Xao9H]bPo`cc2Q#gci;Ak
+dJqVpe,Ii"eQQ0`@.m=o:(C(XiSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Ys7?6^r:U'_
+rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOIKkND!$
+rh'1]s./hQs/QF,Xfeh1YHY:<p9je+s0r!;s3gknrm:\krQbGfs31Gb!m8X,rlG,[!lgFfrK@)B
+rK78HP*(n&OT(=;Nqn\3Y6(r5YPbR'Xo5F%Yl1d)YR.M;Yd(I=ZEoLKrJUN2rep9'qht6.qhtK5
+!/piYr3$('s0)O/Yl([)Yl(d+ZMq3/ZiIN4Muo!!NqA>2Nr>"=Nr4t9NW>.:O91Q-P5:CB\cBAA
+](ru=^&GbQ^qmn*`5Ta;aiOG$qoSfZrlb5`"3o-9bl!t1SGnlOR.m$JRfAiWSGo,ZT`1VgTZ>-p
+b0'_*!6Y5_rlbGgcHc=5qp>2cr6>>idJ;5ee,R;`_u@UO`W!mVa8<sXaoBN^bQ#fdc2Gohcd:&<
+dJqW#e'u=ZcdULb`VROL_[YP_iSrnXjQ,Fbk3(pkrojLLlg+Q:!q#FDrpTmVs7-'Ys7?9_qt9s^
+rV-$\qYBs`n,)nXq#0LWJcC<$X8d\~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOLLkNCu]
+L&?W(L%U-!K`Hl(LB*//MZ8V5N;\\4N;eh:df%Smd/VGjcMu/hbl,]db/qd)aT'9^`dWC8I0>"I
+I=-G@HN8HhHNJM?Hi/3fHhr$gH2*3qL\uu)M>rJ4MuJV1MtqYdGl;jcGk64XGlN$hGl<HuM>rJ0
+Mu8P4MuJY8MuJ\6NV.PsHLlF[HMi$gHN&9_I/K&uOT(:JOHGcmQ'R`&Q^F0:Qi36LQi<?PRJiKQ
+Qi*?QSGn*9K):2sK)UE%K`6`)L]!G:PQ@&8q3V&IrKm>I!gf:Arg<bTrgWqXnt#ftrPSWQqo/QS
+rl=oWs2k;`rQG5bs3:Mf!mf6?rmCbo$IdLlSY2aTOH>NapQ5E;%H-4(ioB([jQ5OdkND(.klU/9
+li-5PmI'EAn,MnWnbr%YoDeI[p&=[`p\+CYq>'mUqtU*arTaB5s+13Ns*t~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOFJkND"&
+<:j)h<;T\q;ZKeq<W?"u;tX,h<WCMGdJhMmci)/hc2Z#db6#i.ao9B]`ra7Z;uKVl;uKV`;uBVj
+;Zp&u<)cfq<!#ur;Xm`b;u]hr<W?%u;ZB\q<;0>[;YX/j;Yj8i;ZBYq;Ya8f<;]bo<;]br<WZ9%
+<r>nf<;]\m<;oho;Yj>j;YsAm;YsMm=8c1q=8uCr=8u>"<W#ns<<H9'='#6gs.''erD`eq!)iGf
+r`&Vlr_i\n!E<(u<rH%s<<#ts<;T\l<;]\p<;0Dj<<'i6_u@UO`W!mVa8<sXaoBN^bQ#fdc2Goh
+cd:&<dJqW!e'qB"=^,2):&[lt:Z13jioB([jQ5OdkND(.klU/9li-5PmI'EAn,MnWnbr%YoDeI[
+p&=[`p\+CYq>'mUqtU*arTaB5s+13Ns*t~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+!2'4]!1ihRr0m\eri?I/Y-+t3Z*UgF[C5q>qmQO6rj`!Us3UbkrQbGfs31Gbs2k>`rQ#,^`l?!:
+plYW@rK@2CpQ5B8qi:B0!3Z7'!jJr6riZ4%r2p((Yl(^)YQ1m+YQ;#7rf$c5qMbE3onrI$r/CE/
+rf$fX!NrR'Xp)#5Yd(F:ric@+qm$1,s0M^3rJU]7mZ%4+!0-r;r/L`:qMtZ=Oo1CBPQ&,q]=PSc
+q7H^@rkAZQ_8=./`Q%nurl5#[qoSi[rQG,_!mT$8rL3bUqj7/HpR2#L!h5^Nrh'1_s.Kh?a2l?E
+b/qcJbKJ-/bPo]ec-FW4chl)bci),icd;F7r6kY^qni<Lrl"]Qs2P&Yr5eo[s2t;`s3(JfrQYJj
+d*Vd>"k(-#_o^4&`VROL_uJX&iSrnXjQ,Fbk3(pkrojLLlg+Q:!q#FDrpTmVs7-'Ys7?6^qt9s^
+rV-$\q>'j_n,)qYq>KRWJcC<$XoEn~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+re1E,Kn]5Rr.>!'reC<*#De4oMMm@MMuJ\6Mu8P5NW7E+d/MAicMu/hbl,`baoKQ^a99Q'`l5pr
+I/eWmI.Vd]HMr3dHN&3bM#W8.M#)u.MYrA4MYrD,H16(UGQ)j]H2)X`H2EC!M2I2eMu8P5MuJ\8
+MuJ\8NVdtsH2W'_GlW*fH2W!eH2W'`HiJKjO7eV6Ns:]/Pa.N"QM-[EQMm0GR/NKRS,7d5K):3"
+K)L?$K`6])LB!&+Q2d'MQ'Ra3Qi<BNQhZpLQ^F0=RK&cVSFW3N_>D+J_u@UO`W*sWa8F$YaoBN^
+bQ#cdc2Gohcd:&<d0J*`Pa@l3Ocf<urK7-<$fU+*j5f:_k2tjikl0fJlKdd8liQSBmf)\TnGi%W
+o)J=\o_\=\pAOaZq"aa]qX==Wr;$<Urdk*#s/l<O~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+qc*&`!`W0!rD`nu;cN`r!EN4l<;ontdJqSmci)/hc2Z#dbQ#]bao09`a2Z-<`V<=2;u'>f;tj8b
+;Zp&u<)cfq<!6,t;H$Te<<#kt<)`cqs&K%rs&8nrpJ^W\p/CuhqGI8jr_ierrDN\or_rYmr)NYo
+r)Nbt!*/nor_rMir)<Sor)<Mkr)<Jjr)3Vq;u0Pn=8Z+p=8uD$<rc:u=8u>#<Vohr<<?3&=8eTf
+S,6+c<)Z`o;Y3oe<;BMo;uT\o;[$-#<`W:&rDieq!*/tsqc3Gk"]J;t;cH`i<W,ks_>D+J_u@UO
+`W*sWa8F$YaoBN^bQ#cdc2Gohcd:&<d07rs;cQn$o1f3Z%Su$@iSrnXjQ,Fbk3(pkrojLLlg+Q:
+!q#FDrpTmVs7-'Ys7?6^qt9s^rV-$\q>'j_n,)qYq>KRWJcC<$XoEn~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O0N!1j+Z!1WnVq3qemX/rD)Xfeh1YHY=>p9jh,rjN!>d*L&9cMu/hbl,`bb5]T_aT'9\`r3jW
+`09kWs,m&;rf@#<s,I#:qMbT;O0#M]Y5tl4riZ:'s/c.$!O&a*YQ(g,YPta+Z2T^ZMu&D3MtMu-
+MuJV2MuJ\/MuS_9Mu0XTXp)#5Yd(F:ric@+qm$1,s0D^4rJLT4s,>utqMkW<OHKF's-!Gprji3D
+]"5NL]E#YE^Bq]l_SjC3`lQ9Crl>&[qoSl\rQG,_!R8phQiNQKQhm*ERJiQUS=Q8NT*V*`TuP*m
+aN2O'aTK]/bKTt/rlbGgcHc@6rQkSkd.u#dc2l8<p<rrhrkSNLqni?Mrl"]Qs2P)Zr5eo[s2t>a
+s31MfrltVld*U2>^&c$dqo/HNq8<6j$fU+*j5f:_k2tjikl0fJlKdd8liQSBmf)\TnGi%Wo)A7\
+o_S7[pAF[Xq"aa]qXOIYr;$<Vrdk*#s/uBP~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O36!JZ=-KE-Z&K_^9#L&Zo(LBWKjMM[4Jrepc7rJUT4"-([Rchu)gc2Z#dbQ#`bao9B]`rO-X
+`;mjPI.Vd]HN&9kHN&3fHMr*hLA6T)L\uu)M>rJ5MZ\ipMi.Ikpj):Pqfi'bpj)RXs*4ThqhY9/
+!/gW2r/CW5rf$l8rf$\urH\'^qg%p\qfr0fpj<$gqN(W;!0@#=!KiKCNs1W.Pa.N"qj.;KrKmJK
+rKm8G!1ES4qL\?lre19)!euJcqj%/F!gT(;q3V)JrKmJM!13PLrL!\TS,JlMSc6G(_>D+K_u@UO
+`W*sXa8F$YaoBN_bQ#fdc2Puucd:%dQBd\uQBIAmOHG\$OSb1?i!\N'j5]4]jlY^gkNMp0!p]+;
+rp0^RmdC)Cs7$'YrUTsZs7H0\rq?9ap%\@Yq>0XYq>C'elMcA7JcDnQJ,~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O,Xn5BBd;cNWo!`W)tr`'##<E8Wi"'*^ochu)gc2Z#dbQ#`bao9B]`rO-X`<!nUnP]6_pf.8l
+r_iJh!E<"p<!6,t;H$Tb;ufkr<!-,u;cETnp/;#j;cE9cpeq/jrDEGis&/qr<;ohr;Z9Vk<;]bo
+<;]_r<r,_j;ts>g;ts8h;u9Ji;ZTirq,[Gqr)WVps&f8%s&T/$!*9)#!*9%uqc<\r!EN;$QiNQR
+<;BJi;Y3o_<<6&tr_i_o"]SK&<``?#<W5tt<W,no<V]St;c6Ll<)iQkr`&m4rk\KKrkn`Rqo/TT
+s2Y&Ys2k;`rlb>cs3:Pg#g^lEd8j7G;cN?_r([_ti8ESRj5]4]jlY^gkNMp0!p]+;rp0^RmdC)C
+s7$'YrUTsZs7H0\rq?9ap%\@Yq>0XYq>C'elMcA7JcDnQJ,~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j9Ps.'.[rgWhUqO@JS"0/E&XT#@%Y5b[,Z*Uh3[/m_FrjMg8!4`$RrltJerQG5`s2k8]s2Y/Z
+rl+oU!5n_us-!>E!0[8BqN1`<qi:]9rJ^T4"HJP(XKMH(s02L*riQ4%riH:*YHY50Xobf2Yl:j(
+N;JP1N;nh)MZ8V7MZ8V6N:Vu(XoGO/Xfek3Yd(F:riZ=+riuL/s0;R/r/1K3s,>utqMtT:rK.&A
+s,mGI]"@sQ"1u.U]D9,>^AkqS_8=+.`Q#s>aiOJ%s2b5^!6G/]s2t;`rQGJjcBjocQ'V02r0[8I
+rgNkVs-s:aStDXJTuI#N!QW:ZaT0K\bPo`bcMZ#ed.biicHXVZcdDF6qnN-Grk\KKrkn`RrPecU
+s2Y)Z!m/U-rQ>8dc-?75!71SW!5JBLqo&?Krnmh9ir7s=jQ6C'!U&\GklU/9li-5PmI'EAn,MnW
+nbhtXoD\CYp&4U^p[n7Wq>'mXqt^0crTjH6s+13Rs*t~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j67!JQ4+KD^DtK*6j^KnY9WLBNHkM2I2hMuSb7Mu8M6NW.6&c2Z#dbQ#`bao9B]a8a0Y`W*jV
+_tJKPHhi!eHiJEjH2N!dGlWToM#W8-M#W;3M#E2/MZ8V6MYDDaGl)^aGklXVGl!6rM>rJ1MZ\or
+N/[aorJ^`6q0;g_s*FTgpNl^^rHS3brHeBgrd=^+!0I/?s,d8Ar/gr@rf7/COcu(0QM[!OQC!r(
+Qi36KQi!-OQ^F05Jc(,mKDU?%K`[!aPkp[EPQI,9QMQsHR/NBMR/`NMR/NERR[a,CqjmW!rkSNL
+qni?Mrl"cSrl4uYrQ#&^b0'\+!mJp6rlteqR$X,(P`q;or/pl<qN:d8!TE&;irS6&roO7Ekl0fJ
+lKdd8liQSBmf)\TnGi%Vo)J=\o_S7ZpAF[Wq"jg^qXXOZr;$<Wrdk*#s0)HQ~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j2YmSa3b;c?Zm<W?"s<W?,"<V05j<W:;Cc2Z#dbQ#`bao9B]a8a0Y`W*jV_u*I5;Z0Pn;Y!cc
+<<#nq;YF&h;ufkp<!?2u;H$Rqr`&ksrDWbqr)EYos&/boohtigr_rAc!`Mupr)<;er_rhrr_rhp
+r_rYm!EE+u<W#hp<V]Ph;tj8g;u]be;u9Jk;ZK_j<r?%u<r#hs=T)>$<rZ5(<``@'<rH%s<X;c-
+<E3($Q^F0;<;TSp<)`cooi(ihr)Nbts&B/#;c?Tm;[$-#<`W:'rDihrs&K"sr)NMk"]J;s;cH`i
+<<-"q^])%J_>D+K_u@UQ`W!mWa8O'\ai_d)b6#o4c2PumcWO@N<Duff:&7WahuVfrro4%?jo4BC
+kNMp0!p]+;rp0^RmdC)Cs7$'Yr:9mZrq-'[rV$0`o_A:Yq>0[Zq>C'eli)J8JcDqRJ,~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"m+h+SXl;MS,AfPS,]#XRg,mnX/rD)Xo>I+YHbC?[.q'/[K<qH[f3c9c2Z#cbQ#`bao9B]a8a0Y
+`W*mV_uIUJPPpXEOnk+=O8Fq;NVnb2NW+q>X/rH#Y5tl4rN6.&riH(#!NrX)Y5b[+Ycmq_qMY<2
+s,6i5s,$]3s,$H,p5Ag*s,6]Ts/la3Y-5%5Z*:I9YHY81Z2_-/Z29FXMu&CsNVSV3O8b4AOcoUQ
+s18<C]D9,>^AkqS^r""-`Q#s>aiOJ%s2b5^!6G/]s2t;`rQGMkQBmc"Q'I[3Qhm*JRK&ZQRJr]S
+Sc>;]TDlh0`W=-$r5er]qTJo_rm(GfrQt;b"jYB;cHsu4df7#[^AG\E_#D1J_Z%IQ`;R[T`rF*X
+aT'?^b5KKbbg"E3^&>\@`Vd[N_uIUQhuVfrro4%?jo4BCkNMp0!p]+;rp9[P!:KgSs7$'YrUTsZ
+rq-'[rV$-_o_A7XqYKd[qY^0fm/DS9JcDtSJ,~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"m+h+L5(B\KD^DuKDpQ(KD^K#LBWKjMM[4JrJLZ7r/:N4s3:Sfr6,,_s2k8]s2Y/Zrl+oUs24lR
+o6gF^q0N$es*FWhqKi*cs+UN/pk\s*r.tB0s+pZ2rJLW5!/gZ!!-nKgoQ^C[rHS-^s*4Edq0;d\
+s*4?qs,$c5q2>93repc7s,6Ysnp0kRp3HX`r-SEjrJpr?rK$u?s,[)>s,m;A"-AY/Q2[*LQN3?N
+QNWV@Q^4!:QMm0JR/`KPJG4WkK)L?%K)L>sK`?c*Pl$aFPQI,9QMQsHR/NBMR/`NMR/NERR[`u?
+!hI$<rkA9ErkSNLr5/HNs2=lTs2P)ZrQ,#\!6Y8`!mJp6rKmYQQBqN6s-!ADr/g]9rnmh9ir7s=
+jQ6C'!U&\GklU/9li-8Nm/ZSQn,MnWnbr%XoD\CYp&4U]p[n7Vq>0sYqtg6drTsN7s+13Ss*t~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"Qe_*<)i0^"&Vur<;TYs<)Zcq<W?,"<V9>kc2Z#cbQ#`bao9B]a8a0Y`W*mV_uIUQ;XIE^;Yj>j
+;YF#l<)Zaq;u9Ms;c6Lm<W5tq<<?,u;uBSq;c<Tns&B"ss&/\lr)*MnmS`p\p/:ohs&B%ur_rhp
+r_rSkr`/kqs&Jhls&8hnq,I)eq,I/grDNSm!)iPlrE&quq,dSurE'#"s&T>(='&F'rDies#Zk&,
+<E>EO;cENlr_reqq,@;krDW\ppJq5ms&/nqrDNl!<E<.%=8Z(u<<#ts<;]bk<!?2u;H$Oop/V.+
+rkA9ErkSNLr5/HNs2=lTs2P)ZrQ,#\!6Y8`$-^Z=>?b96=B8Go:&%K_huVfrro4%?jo4BCkNMp0
+!p]+;rp9[P!:KgSs7$'YrUTsZrq-'[rV$-_o_A7XqYKd[qY^0fm/DS9JcDtSJ,~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojgSkND!i
+jlPR`j.2_>S,AfKRg#7ZWiE,$riQ1&"L#&7ZaBM8s0hp9!k,SIrQG2_s2k8]s2Y/ZrP\iV_o)Jj
+s2"Al!0[;CrK.#>r/Uf:q2G'-"0/E(Y5>C'Z*4/0"0JZ*XSo7%Y-7c+!jAhfrf$T0!0$o8regW1
+!/g]2pkf'.regZ4pPK$1MMh22%'H_7YHP18Yct=7Yd",3s0;X0pPJs/pl,64s,?i7q2G<4q2Y?5
+s,[AEOcm8cr4;p?!4qs<&&#]l^VI_(`5Ta:aN;NDa8X0[aT0E]aoBN_bP]QcQ'7F2PlI!KQMQsG
+R/WNOR/`QWR[]e:SbnuY`;[^X`lH0Ar5er]q9&c_rm(GfrQt>c!7(Sg!m]0?pX9#Qrk8<FqnN0H
+rk\NLs24lTrPefVs2Y,[s2b8`rQG5RrOr6Fpr33MqnrBL"Q/.qiSsjs!T`AAjoOZ/rosIJ!:0XN
+s6]jSrpTmVs7-$Xrq$-]q=X[ZqtKaXq>'m`o_\L_qYfd[JcC<$Z2]=~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojdRkND!i
+jlPR`j+RA`re1#us+CK,JqAROLA6N-M2I.HMMh1erJ^]urlY8_rlG,[s2P#V!lW!orke]OoR-I]
+qg/9hrd+Kfq0N!breC0'!/LK.s,$c3re^T2s,-l'rd"He!."6^r-&-cqfhm]!."BbpNH[`GB`h<
+!f;elq2>93repc7qKVISr-IdVrd+Qjr-\F'!0I/?s,d8Ar/gr@rf7/CP*D72QN*9WQC!r(QC!r(
+Qi36LQi*3PQ%+;_JG4WmK)UE#K)UDsK`./3Q2d'LQ'V64rL!PMrL!SNrL!POs-`qWopkunrk8<F
+qnN0Hrk\NLs24lTrPefVs2Y,[s2b8`rQG5-r0RJNrKI8ErfR2Ap5oL8i8ESRro4%?jo4BCkNMp0
+s69UMrp9[Ps6fmTs7$'Yr:9jYrq-$Zr:^$^o_A7XqYKj]qY^3gm/DS9JcE"TJ,~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojaQkND!i
+jlPR`j6KYD;ZBSq;cH`n<<?,u;uTer<rZ1n<;k#>b5]T_aT'<\`r3jX`5BLl_Z.IL;Xm]b;Yj>i
+;YX2j;?]uu<)Zapqc*So!`Dutr`&eq!`W)sr)ESms&&hor_iVlrDNYmlVd^\p/:oh##\K%<)Zap
+r_i_oq,I;mrD`Jg!)rbmqbmJoqG[Akqc!MoqG[;irDN\opK%2nrDr_qs&f5$s&K>*<`W:'<`]0!
+r`9&#s&K/#Q2FSQ<;]\m;Z9Vn<;9Jn<;KMs<)lt#='#6!s&B"urD`\pq,@>mr_`er<)iTlrOi-C
+rkA9Es1nWMr5/KOs2=lTs2P)ZrlG,]!6Y8`s'#D+!a8`.ohG-T"Q/.qiSsjs!T`AAjoOZ/rosIJ
+!:0XNs6]jSrpTmVs7-$Xrq$-]q=X[ZqtKaXq>'m`o_\L_qYfd[JcC<$Z2]=~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro4'MS"';FoUGiK"K/9"X/u9%riQC-Z*UgEppL.1rO2pQb0%iJrQ,#Zs2P#V!lW!orke]O
+s1nJpqNCl@qiCf=qi1Z9o8N^/rJ^cV!irE*ql^7/YHG%1XfST$XT,F'YPkU,N/`gUN;8D2N;eb4
+M>rA5M26ueM>N2-M>`>2M$&QjM2M4f!K)a4XT5O%XTkr1Xfek3Z2Us.YH\#2s0;W]pPS^'pPf*0
+r/CZ8pl>95s,d8A!K`HC\bs&=])]G;]FV]i^V@S$_o0O6a2lBDa2e2#s2bDbaiV]JrQG/`!L/fG
+PQ7!JQMQsIR/WNMQj&nHR[]h<rLO).`5MYo"3/C&aSs<]b4s-[c2Pugd/MAid.biicHXVZcd;F7
+rk&'?rk8<Fr4i9Irk\QMs24lTrPefV!6>)[s2b;abPo-R]`,SE`:q7L`;RUN_?AcSi8N\pirS6&
+roO7Ekl0iHl2^/Lm/QJQmf)\TnG_tUo)J=[o_J1XpA=UUq"jg`qXj[]r;$<Yrdk*#s0DZT~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro<s0!/19&!/10#rdk3&J:RQPpkJm,MZ/J4MYN,0N!.>Hb/qd(aT'<\`r3jX`5BLl_Z.IP
+_"N0THi&-hHi89iHi89hH2N!gH2i3hH2WHtL[p9$M>rD1M>iD3HN/9gGQ<$bGk6.VGlN!fGl)^a
+Foul1G'Ek-!I&_cL]E;0M#W;3MYW/1N;\Y7N;.Y`H2`'YH2`-iHiAElHi&j(OSt7?OT1C>OT1IB
+NsCc0Pa.Q$QC%T:#+(XAQ^=#)rg*MLrL!G3p4<3pre('!re('#r06r@s-EJIrL!SNrL!SN!LT;S
+R/NERR[`u?rk&'?rk8<Fr4i9Irk\QMs24lTrPefV!6>)[s2b;abPmh-Qi<?PP5LODP5^RDOS"Y<
+hr*GOir7s=jQ6C'!U&\Gl2U#Kli-8NmJlVRn,MnVnbhtXoDS=Wp&+O\p[e1Vq>:$\qtg6drU'T8
+s+13Us*t~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro<NI!`DrqrDNYm"Ahrn;cNTns&8nsr`9"upf%C>b0%iJrQ,#Zs2P#V!lW!orke]Os1nJ/
+k>V=Wr)<Vns&8kor`&kqqc*Mm!*0"tr)Eet;cEZpr)3Snr_`Vlqc!DikYhCW!`2`kqbd\u;HHn"
+<)lmsr_i_oq,I;ms&9%s;H!Bhr)3Plr)3PnpJLugr)3Pnr`&_mrDNVns&&hop/_)mrDr_qs&f8%
+r`05)<`W:'<`]3"rDrr"s&K,!qc!#a!)r_lr_ierqc3Ysr`/ttqc!Mps&T/$!*8ts!`W0"r`&eq
+pf%Dq;GpFm<;0Dl]DK8?^&GbD^]2+K_>V7N_uI[R`W*pXa8X0[aT9Q-r`T8)s'#M-9_M3Q:'BJ4
+i8N\pirS6&roO7Ekl0iHl2^/Lm/QJQmf)\TnG_tUo)J=[o_J1XpA=UUq"jg`qXj[]r;$<Yrdk*#
+s0DZT~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<qjd5Hr0dbdWN*#"rN6%$!O8s0[/%-0[f*Z8ao0<\a8a0X`W*jV_u7FR_8*kc^\j;o
+P5UO<O9(E&r/LB.s,-r;Mi@Um"cTI]X/rK$Y5kg+Y5bU)XK29#!3Q4&rJ^N0rJUf9MMh@hq2#$,
+rJLN0!/UN/!/UW0",MejM#<)0XT#@%Y5GC+Y,nb.YHY;2YQ:r3rilK[M=QPsMuSY7Mu8J3MuSb7
+NW"n2NrY:?\bs&<]D0#L^;%Fu_8=+/`lH-AaiMNCrQ#/aaN;QHb5KN`bkdS(Q2[*FQi<BNRJiNQ
+RK&`URg>OTSXuFk_o0Lm`<4-#aN4>%rlY,]"3f$8cMZ#ed.biicHXVZcd;L9rji$>rk&'?s1SEG
+r4i9Is2"ZNs24lTrl+oW!6>)[!QhqO]DoMD^&GtE`VmaS_u%:S_;F2/iSsjs!T`AAjoOZ/rosIJ
+!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$Zi>O~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<q1J^#q1JZur.4j%!JcF)LB33grJ:N3pl#02!6P2\s2Y/ZrPefT!5ncP!l;[frkJ5U
+s*OBard46_pNZamre:E.nqd=&reUQ1"H%MOH$T41!."Ken9=nWqKDp_rce?br,qgY!/LN/!/^W0
+s,$c5qMP?4repMqms,"[GB\<0GPHF]H2DpfHN8HmHhrd'OSt7?OT1C>O9gu1O,oBbPEhI4Qhm!J
+Qi*0JQiEHQJ,k0!JFnElK)L?"K)UE!K_q#.Q2d0GQNEP@R/NBMR/WETR$jA0R/NERR[a&Arji$>
+rk&'?s1SEGr4i9Is2"ZNs24lTrl+oW!6>)[!6P/)s-E_Qrf[2Cs-!DE!0Zr9"Q/.qiSsjs!T`AA
+joOZ/rosIJ!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$Zi>O~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<pJ^ufr_rVj"Ahrm<)iZn"&i0!<W,tt<V]Soao0<\a8a0X`W*jV_u7FR_8*kc^\h"%
+;u]h`;tj2h<;ohn<;fbo<;]_u<)Z^pr)3et;,L4h;c<Kks&/_kmns-_r_i_mrD3JkqbmGms&TA)
+=&i7"<;oep;uT_r<W,nq<W>qr;Y3i\;Z0Gm;Ya2i;Ya5k<;ohr;Z9Sr;Gg<a<r?%t<r#es=T)=t
+<WQ9&rDiess&T8#<)ifpmSj0br)3Mms&Anr"BSW)<E9#tr)3i"<E3(#='&H"<<6'!rD`\ppf%Dq
+;GpFm<;BPn\c02>]DK8@^&GbD^]2+L_>V7N_uI[S`W*pXa8X-]a]_mI=oVY*>Q.=k:%M*`:Z(*g
+iSsjs!T`AAjoOZ/rosIJ!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$
+Zi>O~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+$0C7/j5].YiLHG3RfJoTS,/Q[W2HSoX/i>(XfVK(s02R0rj;L/!4Mm9s2b5\s2P#Vs24oTrPJTN
+!5STKs1SPtPEYp-q2tZ;"-AS)Nr4n/N:r/5W2ckuXKDB'#I(D7Y-"h-X8T+#X0)B(rJ^K/s,6u:
+MZ/J+M#<,/L]E;0M#N82M#2u,M#<)0XT#@%Y5GC+Y,nb.YHY;0YQM.cLktk`onrR'qMP60!0$f7
+r/UQ5!4`!<r4;m>pq.-O^V@S#_Sa@4a2c<DaN)?ta9'K+b5TQaQ26aEQ2d0DQiEHPRK&`TRK&`S
+S,]#YSc-M*`W*sXaSa0[b59?^bl5occi)5bcNVV=c-FY_qU5DRqml^;rk&*@s1SEGrP/BJs2"ZN
+!lMsprl+oW"NSTo]"7jPs1J?Lp;R$LrPSTNrkS`pi8ESRro4%?jo4BIkNM-ol0@R"rTsRO!:KgS
+rp]sXqssaXrUfmXqtBp]o_A=Zqtg!_qu$<hmJ_\:JcE+WJ,~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+#Nb%-j5].YiVJ3,K_pE#K)^B%K)L9#L'NEeLPCP=LPG\]!JlX4M>rJ.MuUlua8a0X`W*jV_u7IP
+_#V:M^]2%BI/\KSHM2XaL'*-aL55>Ure^Z2re^Z$s*=Ebs*=Whp36IYr-/*_!-e?as*"HdpiZFV
+!/LN/!/^W0s,$c5qMPB5MtqSrGjfqXGkuXYGl)dbH3&A?rd+X*qMtW<rJpr?rf?u=#a(41O-#Kf
+Q'VB8pm(oFrg*PMs*auuJGt*"JFS3jK)UB)KS+o/re($"qNU`>s-EMJs-NhRR/NBMR/WEPR/WKR
+R/NESR[]fBSH$+r\c02>]DT>A^&GbE^]2+L_>V4P_o0Lm`W*pZa2jPCQN*<NP5LO@P4Oe=hr*GO
+ir7s=jQ6C'#Nt=7l07Kuli$2Mm/ZSQn,DhVnb_nVoDS=Vp&"I[p[n7Xq>:$]qtp<frU'T8s+13W
+s*t~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+#Nb%-j5].YiV6@L;?0Yh;?Kio:f73ks&B%urDikr!`W0"r`8ttqc*U:s2Y/ZrPefT!5ncPs1n]N
+rkJKIs&/nqnP]Eelr3XV!)`Yns&8eorDNet;c?Zn<<-"p;uT\h;tNr\;Z0Jm;Z9Pn;#O8j;Z9Vp
+;Z0\s<W?%t;Z9Vo<<#tt<<#tr;>X2_;>a>k;>j>g;?'P`;Z]io;=moe=8Z+q<rcA$=85hp<W6%u
+;uKYq;tj8j;tj5l;c<TnrD`_qr`9/%<E8uss&05';cHas<`W:'<r5kt<)rlrrDiSk"]J;s;cH`m
+<WBT+\c02>]DT>A^&GbE^]2+L_>V4P_o0Lm`W*pYa2n*[s'#Cqq+^BS"]+%6i8N\pirS6&roOIK
+kih9qlK[^6m/QGQmeuVRnGi%Uo)A7Zo_A+VpA=UVq"smaqXsa_r;-BZrdk*#s0VfV~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*>iSaO$r0mSRr0mPO$E0l#WiN2%Xf\\,riQ=+Z*O>8q6^@6\$sAsrPefT!5ncPs1n]N
+rP&HK]tM)XP5g^GP5(1>O91K'Nr"b-N:`#4VlHbtX0&Q%YPt^)XTGT)X8]1%X/rK$N;eb8N;e_=
+MMm@LM2D+cs+gQ/pP8L!q1es+r/(HTriQ4'r2g.*XK8S.YPbX)L]<2+M<ToqMZSiqMuJ\8NVSV7
+NrY:?O8l`h\biu;]D0#L^;%Fu_8=.0`lH-AaiMNCqT&f]b0%nmq3:iCo9TNGR@3uAqO7MUSbpA(
+`W*pXaSX*Zb59?^bl,icci)5bcNVV=c-F\`qpGJQrjVm:qmla<rk&*@s1SHHrP/BJs2"]Os2+iT
+rl"lWrji'?rO`!Gp;R$Lrkn`PrP8Zohr*GOir7s=jQ6C'!pAe2rojLLlg+Q:s6]jSrU9dUrpfmV
+rq$'[p\"FWqtKaXr;$6dpA=abqYfg\JcC<$[f:j~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*CiS]??JqJ^TK_pDuK):*-Knb;9LPCP=LPCP=M#N/1Ll2.fs,-W1s2P#Vs24oTrPJTN
+!5SQJ"2;I^]_d*THN8BkHiJEkH0fkLGlWQsL&d#"M#N82L]E;1HN/9aGlDpdG5c^[G5HF\Fp)r2
+G'.p&Fo$:]L]*#/M>W20M>rJ0MZA"tGQ)jVGlW*fG5ugbGQ2mfH2;d]H2i0jI/SElNr"e:OSt4?
+OT(==O9gu1OH5KcPEhI4QhZjHQ2['LQi;F7It6j9!eQ&Vr.Fj!s+LH<q3:W=s-EMJs-W\MrL!SN
+!1<bR!1<_Q!1NnVqj[YprjVm:qmla<rk&*@s1SHHrP/BJs2"]Os2+iTrl##[Q'IZ%r0I8Dr0.#@
+oT9=6hr*GOir7s=jQ6C'!pAe2rojLLlg+Q:s6]jSrU9dUrpfmVrq$'[p\"FWqtKaXr;$6dpA=ab
+qYfg\JcC<$[f:j~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*AiS[X5;Z'J^;ZBYs;,C-h<<#tu<;ol#<)Zar<W6%s<W#hr`r3mV_uR^R_Z.FP_#;"M
+^:h4mnPfEblr3OS!)reps&8hprDN\qr_rhrr`&qtr_reqr_rhrr_ikr;cEZnoMP?\rDEPlr)*>h
+r_rhp!*K2$s&K(ur_i_or`&ntr`&blqbZcZqG@)erDN8d"]A8s;Gg<_<r?%r<r5qu=T)=r<rH"u
+<r>ng<;]Yp<;ohn<<#nn<<#qu<rQ/#<rQ+t<!uW(<)Zar<E<.%='#2uqc*MopJ_;p;GpFm<;TYq
+[f3c8\GNi:])K>>]`5\F^AYhH_#M7M_Z.LR`;[^V``i1@!DZAg9_hEQ:'KM3i8ESRro4%?jo4BD
+kNM./klU/9li-8NmJlVQn,MnVnb_nVoDJ7Tp&"I[p[n7Yq>:$^qtp<frU'T8s+13Ys*t~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&irnB#iS`YjS,A]TS,/TLR0T[gVl?\sXK;E'riQ@,Yd(P6[/%-0[f48G_uR^R_Z.IP_#D+K
+^&YkG]E#S=P5LIBO8k7;NUr,+MuSb9MuSb8M[-2YWiE,#XKME'riZ:'s/Z.#!3>aNreg]3reUH,
+!/CK.reCE+reCH.pk\^#qhY9Q!3H1%s/u:%"g4u/Xfnr-Yl':PM#N7tMYN)0N;8J4Nr+k;OT)ch
+\biu;]DoPD^&>SS]tV7r^qmn+`Q#s=aiVWEq8`WZb*2gh!0d;Erg!MLoU#NEs-ihSrLE`&rP\iX
+a2n/"s2t5^!6kDerQkGhps/rcrlkMid*_g?!4D^4rjVm:r42j=rk&-As1SHHrP&EL_86,fs2+oV
+\@DLJs186Bs2FoSp;R$L!5nfQqnWHmhr*GOir7s=jQ6C'!pAe2rojLLlg+N9!q#FDr9s[TrpfmV
+rU]sZp\"FWqtKdYr;$9epA=abqYfg\JcC<$\,Us~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&is=Z'iS`XGJqJ^TK_pDsK)L9#J..-dL4tA;L5(J=L51T`L\lo.MY`81`W*jV_u7IP_>h=M
+^]2"J^&GYE]Dd3VHi89cH1-(VH2i3jH2i3iGl`YRr.Y3,o8*C&!/UMus*=Ebrce9`rce0]q/l[\
+r,qs[q/u^\rH/0tLPPha!/^W0s,$c5r/:T"q02UYp3?X_rHJ9brce*]q0E!dr-SF'qMtW<rJpr?
+rf?u=#a(41O-#NhQ'VB8rg!PLr0@DLQBqJu!e5`Nl[f"dre(-%rIt9:q3:W=s-EMJs-W\MrL!SN
+!1<VNs-iqVrL<kqqmQL5rj_m:s183ArOi0Ds1\HH!l2Xgrke]Q!6"f#!1*VN!1*JEr0.#@oT9=6
+hr*GOir7s=jQ6C'!pAe2rojLLlg+N9!q#FDr9s[TrpfmVrU]sZp\"FWqtKdYr;$9epA=abqYfg\
+JcC<$\,Us~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&irnB#iS`Ym;Z9V`;?p,u;H$Ii:f@9ls&B%ur`')#;c?Xqr`9&!!*9)!r`&m9s24oTrPJTN
+s1nWKs1SKHrk&<E;H!0ds&/emr_i;cqbmGms&/kqr_ibpr)E\pqc*Djs&B"urDWJjqblu^pJUre
+r_ibno2>TjrE'#!s&Atqr_reqr`/bkr(ul[pJClerDN8dr_i_m!*B/#!*/borE&eqr)Wl#rE'#"
+!*B%ur`/nq!`Drqoi1Zaoi1lis&T,#!*9)!rDWbqrD`ess&K/%<r,hn<;fhl;ufkr;?Bcr<;fes
+[JRE3\,No8\c98?]D]DB^&PhF^B23e_>_=O_Z7XR>5_S->$4Ws:/1^]qG$HS"lA.pi8N\pirS6&
+roO:Fkii$1!p]+;rTjUQmdC#As7$$Xqss^Wr:KaVqtBp]p%\I\r;--aqu$<hmJ_\:JcE4ZJ,~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnme6rgNhUrgNkVq3q/Js-O1kVl6MlWiN2%XfSW'Xotr4Z*Ue9[/%*3[`$)$rke]O
+s1nWKs1\NHrk&9D](V<eOoLOCNrY4=NV\V6MtW,0Mtr>2M[-2YW2ckuXKMN*!j8`1riZ:'s/Z1$
+oo/m.s,$l7Lku%cre:T3L5(D:LAHW'LAlu,M"6<$M#N/3Lo[SXrN-(&r2g1+XfSY.YH[VRs+gZ3
+m#(Rrs,?f6rJpl<!fi>&rj_p;qmug>rk/9ErO`KN^;%Fu_8=.0`Q.qu!6=oVs,mMKPa%Aqqiq)F
+s-E>Es-WeRqj[MRq8E9Os2G)[aSO$Tb5oi3rm(Mhs3Lemd.biicHXVZcd;X=!42[3s0_a4rjVp;
+r42j=s1A6Bs1SHHrkJKK!5\ZOrODg:s1/3Brl+fRp;R'Ms24lRqS<?lhr*GOir7sCjQ5Lck3(pk
+rosIJ!:0UMs6]jSr9s[TrpfjUr:BmZp@\=VqtKgZr;$9ep\XjcqYfj]JcC<$\Gq'~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmn9JqJ^TK`$K$K)L?%K)U?"J-gm_L5(D:LPCP=re:H/M#N2,M>rJ1MZUi7_u@OQ
+_>h=M^]2%J^&GYF]=RuhrHnKhs*4Thp3HU_s*=Heqg&!`rcnO!L&?Z*L]*#/L\Zc*M>DMuH2)Ua
+GPQF]GPQFWFng(QFoHIbFbkg.rJ1H1r.tB0s,-f6rcn3^q0;g_qfr$_s*"Bcqfi*drHS0as*F]l
+"F>EANK*pt!KW9>NrY:@O8k=?O8Y.GOcYZcOHPinQ2[-KQ2m3JQ2m3KIf=isJEh^bK)L?%K`$Q(
+Q2$U=Q2d0FQN3ENQi3<NQN3EKR/i]TS,JiWZi7?3[JRE3\,Wu9\c98@]D]DB^&PhG^]2(L_>_=J
+PlR-LQhcgDPPLC6OTjV!i8ESRro47EjlPXekND(.l2U#Kli$2MmJlVPn,MnVnbVhSoDS=Tp&"I[
+p\+C[q>C*`qtp<frU0Z9s+13[s*t~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnme6r_i_ol;IX\!`;ckr_rktr`&nt"B8;u<)iitr`&r!r`/tt!lW!orke]Os1nWK
+s1\NHrk&9D])>P);uK\q;ZK_m;>jDl;u]bl;u9Jg;uT\p;uBVp;uT_t;cH`m;u]hq;u]es<W#hq
+;u]ba;>*o_;>jDj;#jMn;#jMn=T2A(<`N*tr_i_orD`\ls&/kor(ur]ohbZcrDN8dr_i_ms&]2#
+s&Jkqr)`Yoq,dPr!*B%u!*/qqs&/kqoMkWbp/Lriqc<bur`/_m"]\T(='&H!<W#hp<VKGr;c6Ll
+<)ifr!42[3s0_a4rjVp;r42j=s1A6Bs1SHHrkJKK!5\ZOqc`r$!*]@t!DZAg9_qKQ:'KM3i8ESR
+ro47EjlPXekND(.l2U#Kli$2MmJlVPn,MnVnbVhSoDS=Tp&"I[p\+C[q>C*`qtp<frU0Z9s+13[
+s*t~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnn%=hO9n&S!ofES,/TLRJiKXVPgAjW2ckurN$"$riQC-Yd1UArj;O0rke]Os1nWK
+s1\NHrk/9C!kPqQr0%#@$BUC3OH5E]NfB$WqhkH5qhtE3s,H]1rJM2FVl-JnWiN5'YHP16Y-5&.
+Y5bU*XK/GqN!5,sMM[1GreLE+qh>$&r.Y0*reCK0q1nm&pP8aKs/c4%!NrO&XTbl0XKA[\nqR7%
+M<TopMuAV4NW5"=NVnh:O8cZe\c0/C\[oAa]DfGD^:jKX!58BHs1niT`Poj;pW3AurK@,Cr07/F
+rg*8Erg<\RrL<_TpVd*Ns2G)[aSO!Yb59?abg"GYrQkMjp!3fec-=P[d/MJjZi@E3[J[K4\,Wu:
+\c98@]D]DB]`>eG^]2(L_>Cb@\H'5=`Vd[J`W*mV_uIUM_%>J\i8ESRioB([jlPXekND(.l2U&K
+li-8NmJcPOn,MnVnbMbSoDJ7Sp&"I\p\4I\q>C*_qu$BgrU0Z9s+13\s*t~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnmt;hLgH6K`$K%K)C6$K)C2sJ-:OZKnb<WL&m'creCK0qhY<1r/:Qks2"`NrkJKI
+s1SEEs18EF\[d*8rd4Qhrd"Kfn9OhUs*=Edr-89rre:E,reCH/!f;_gq2#'-rHeHgq0;m_o61+U
+s*"?`!-J0^!-@gT!-S'Ys+pZ0reLQ2r.tB0regZ!pilOYr-A![s*"Bcqfi*drHS0aqg&6hrf-o;
+!KW9:O8k=?O84k?Ocu&qQN!6LQ2m3LQN)I5If4cqJF.pbK)UB&K`$Q'Q2-[=Q2d0FQN3ENQi3<N
+QN3EKR/i]TS,SrTZi@E3[J[K4\,Wu:\c98@]D]DB]`>eG^]2(L_>'8rQC%?/!0d/?oT9^Ahr*GO
+io9"YjQ5Lck3(pkrosIJs6K[Ns6]gRr9s[TrpfgTrU]sZp@\=Vr:fs\r;$9epA=dcqYfj]JcC<$
+\c70~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnn(>hGR6M;c6Lll;IX\"&_rm;u9Pn<<Q9";cH`q<rZ2"<rZ/"<;sc7_>h=M^]2%J
+^&G\E])oRS\boA';ZKep;uTYp;>jDl;ts8g;u]bk;uKVn;uBVp;uT_t;cH`h;ts>l;u9Gk;"dc[
+;X.-X=T2A(<`N*tr_i_os&Akms&/kor(ur]ohbZcrDNMk!)i_nrDNVls&]/"s&Jkqr)`Yoq,dPr
+!*B,"qc!Gks&8MgqG[8js&B%uqc3Jo!`i<$pf.8ns&T/$!*8qrr)EVppJ_;p;GpFm<;onpZi@E3
+[J[K4\,Wu:\c98@]D]DB]`>eG^]2(L_>.:6=o;%r:/1^]qG$HS&Dl=&i8N\Tj5]4^jlY^gkNMp0
+s6BXMrp9[PrpK^Qs7$$Xq==LUr:K^UqtBs^p\=[^r;--ar;?Eimf%e;JcE:\J,~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D%
+cud4j5].YiS`YOhqm1XqO@;LrL!YSrgEYN%&]u$W2HVpX/rD)XKDK)"L#&7ZEsM:qm?LA^qfras
+1\NHrk/9C!4r->rf[/@rf@2BNfEsqoo&9tqMPKQVl6Pori6:+Y->.6Y-+u-Y5bU(XS7\RMuS\6M
+$&QhLPG\[s+CB)re(?*KS98Wr.b6,onN3rrN#t"rN-($rN-4*XfR83reL0$!JcL0M=-8tMuJ\1N
+V\\6\GWo:\d>pY]">Se]Y2%mrO`-ErkJKL"N/3t`lInrrKI5Dr0.,EqN_)Hpm;#JrL*\SrL<eV!
+5nNKs2G#X!QW:XaoBN]bQ#iecMc)hd.P]kcHXVZcdC1hZ*F;6r3QC0s0_d5s0r$<rOMs>s1A9Cs
+1SHHs1\TC\,3]7\ba;D`:h1L`;daT_YV(VhV[8LiSrkWj5f:_roO:Fkii$1!p]+;rTsROrpK^Qr
+p]pWq==ITr:K^Ur:^'_p\=^_r;-0bqu$?imf%e;JcE=]J,~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D
+&EW!6j5].YiS`YOhqm1AKS9>Wr.=p#s+:0"pj`O%KS>/7L&H`-LPCQ]L]<2.M#`G2MZU`1_#D+K
+^AknG]`5SD])B2=I/J?iHN/9fGk?:NHMVmfK8'/V"c/"lLkgc`L]N?grd+QhrcnEds*4Neq/ua^
+r-&*_"*A[.G5cX[FSp4LFT.*qL]3)0M>W20M#rQYGQ)jVG5umeGlW*`GQ)dcGPZOaH2W!aH2Dmf
+Hi8s'NWG3$q2bQ;rK$c9"Hen5Q'VE9rKdJKrI=fqr."]rmt(:drdt3(re1?:rK[2Cr078JrK[DK
+nsB<Brg*VPq3_5OrgWqXs0;R/r3QC0s0_d5s0r$<rOMs>s1A9Cs1SHHs1\PupQb'-o8sF;hr*GO
+io9"YjQ,G%joX`0kl0fJlKdd7m/QJPmelPQnG_tRo)/+Wo_.tUpAF[Zq#1$dqY0mar;6H\rdk*#
+s185\~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D%
+cud4j5].YiS`YOhqm0er)<2b!)rShs&8qo!)rkr!``3!r`&qtr_ierr`9&!r`0/%<5HAcrkJKIs
+1SEEs189BrOM`%oi(ifr_rVjs&&bnp/Cid"&i)r;uBVp;uTbr;ZKej;uK\l;ZK_p;>a8a;>F,g;
+>sD[;>aPq<s)K'<)`cor_rYjr_ibnqG?l_ohbWbrDNMkr)*MnrDNVlr`B&!s&Jkqr)`VnqH*\ts
+&]5$qG[;i!)rDe"&i/u;u'Dh<<-(q<ruE&<Vo`%<E)pt<E<.%='#/tr)EVppJ_Gt;GpFm<)lr'Z
+2V',Zi7?3[J[K5\,Wu:\c98@]DfJC^&PhH^AqF3=o__%:B4/h9_hEP:(,q9i8ESRioB([jQ6C'!
+pAe2rojLLlg+N9s6]gRr9sXSrpfgTr:BjYp@\@Wr:fs\rV?Bfp\Xjcqu,s^JcC<$])R9~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2bS,&KQRJiTRRJN9\VPg;hW2HVpWiW;(XK8Q'Y5ba+Z2h60[/IE3^]2%J
+^&G\E]DoJA\HKFO[uupOOoCFDO,f4uN:MnsN;8A8N2<GNW2]cs#HY)4YHY45YPt[)Xn[kTMuS\6
+M>rA5LPCQ_L&H])K*6dYK7\aSK`6]$LAur/L4t?YLA-K$X8f7(XfSY,XT#@%Y5X1TL\-<&LPUca
+M=HJuMuSb3N<5-"NW"n8\,j.Orj`HK\[o>_]">Se]Y2%mrk&9F^AbnI_$.`q`Q#s=r5ei"s-!GG
+qNLlBrK[AJpQtlHrg<bTr1!_Vs24QKs2G#X!6>)[r5nu]rQ>>fc-=PZrQkMjp!3fec-=P\dJU6J
+Z2_--Zi7?3[JdQ6\,Wu:\c98@]DfGH]sb>V[^Z.Ds1.sEs2=QKrl"iSs2+ZL%,Kdti8ESQioB([
+jQ6C'!pAe2rosIJs6KXMs6]gRr9sXSrUK[Rr:BjYp\"IXr:g!]rV?Bfp\Xmdqu,s^JcC<$]DmB~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2gK`6W%K)^K&K)C2oJ-L[\KS>/8L&H`+L]3&-LBE?fLku"d!/g`5rkJKI
+s1SEEs1A<Brj`0A\$pa4qg8<gl$;lHpiummL&-N.Ll$qELkgcaM#Vf#H2i-^GP64[Fo-7\Fng(Y
+F8p:\F7=;OL]iKhLkgcbL]E;1M#W>2GQ)j[GPu^bGPudWGP-4WH2DmfHi&g$Nqn_9OSk19O9Lc0
+Pa.N"rg3SLrI4cr!.OcorIFBgqh"d!s+LE+s-3JIrfdDJrKR8Gs-EVKs-E5BrL!SN!1<SM!1NnV
+r361*s0DR/rj;^5rO2a8s1&$<s186Brk&6Erf[>Hpm(--oT9R<hV[8LiSieVj5f:_roO:Fkii$1
+s6BXMrTsROrpK^Qrp]mVq""@Sr:KaVr:^'_q"Xg`r;-0br;?Hjmf%e;JcE@^J,~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2d;ta,f;tNuf;[?8t;H$Oo<E)rs<<-"t;[$-#<`W4#rDrp4s1\NHrk/9C
+s183?!k>_Kp/:K\q,7,fs&/Vjq,.;n;H$Nl<<#nq<9[?[;>a8a;>jAn;c<QkrD;oZ!*B)#s&T>(
+<E3!sr_`_ppeh&hr_`Jfpeglar_`\lr_`Jhs&8hns&8emrE&qus&Jkqr)`VnqH*\ts&\tor)2WU
+s&B%urDikuq,dPqr)E\rs&B"us&T/$!*8qrr)EVppJ_;p;GpFm<;a!"Z2_--Zi7?3[JdQ6\,Wu:
+\c98@]DfGG]j"WA=nl1r:B=3apJ(0Q%,Kdti8ESQioB([jQ6C'!pAe2rosIJs6KXMs6]gRr9sXS
+rUK[Rr:BjYp\"IXr:g!]rV?Bfp\Xmdqu,s^JcC<$]DmB~>
+JcC<$JcC<$i;`0Cq>L3gpA4liqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[F?opYoKr0[MPrL!V_!N)doW;ik$X/rG)XKDK)s0)U1ZEpn9[/RH7
+^:h5Z]`5VD])K8?\,a#;[K)KfOoCFEO,f3ZrJ^E-s,6r9pPf*0!0$T/&Z)A'Vl?\tX/rJ-YHY45
+YHG&)N;eb8MZ/J3L]W?dLAci)K`?]'JcLH%KE-`&L@p9"LAZi)LA\(VXKAS*Xf\](Xo3tCLB!&-
+L]E;!MYrD1N;SY8Nr4k;Njnqr!P,f@\I6!Z]",D`]=Y_g]tOBW%_]Tk^VIY%_o0O6a2c9BqNCiA
+s-3GFrKR>Irg*;Frg<VO!1NkUs.')+p;I!Ms2OrWrlP/^rlYGgc-=PZrQkMjp<N`arlkVld&sOT
+YPYR(Z2V'-Zi@E3[JdN8\%&sH\HBFT]=e-Orj;a8qmbk/s2=oSs2+ZL#Mn7oi8ESQir7s=jQ6C'
+s5sCGrTX@Is6KXMs6]gRqsXORrUK[Rr:BjYp\"IXrV-*^rV?Egp\XmdqYfm^JcC<$]`3K~>
+JcC<$JcC<$i;`0Cq>L3gpA4lEqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[U-!/(-"s+C<&r.4Nks+LT/KnY88rIt<-reCE-rJ:E/s,-f6!ku@]
+rk/9Cs183?s0r'<rjDfSqg80cpj)j`pNcU]rcnKiom-RjqM#0/LkpnDL]3,/HN&0iGk6.TG5cXS
+FT-@\EWC1QFSp4[L]`EgLkkqbs,$`2rHA0apicX\rHA-`s*3sUq0;a]qK`.#qi1Q7q2YN;r/^]9
+$B^L9Q'IZ$Q^="dqgSNos+(#srIFHirdsrus+LE+rfmAHq3:iCrg*PKs-E5BrL!SN!1<VNrgEtZ
+Y-+t3qlp+*rj)L/s0Vd5rO)d:\@DLJ"1l+V]_dolPlR'JQ0=D/OoLUAOU'_!hr*GOiSsjs!T`AA
+k5XTEkl'cGlMp2Km/QJPmecJPnGVnPo)/+Wo_8%VpAOa\q#1$eqY0mbr;-B\rdk*#s1JA^~>
+JcC<$JcC<$i;`0Cq>L3gpA4kiqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[QPpJUido25Qcr_its;,^Fn<W5tt<<-"s;u]i!<`N/u<W^"K^&G\E
+]DoJA\c9/>\,Ni.;YO,c;Yj8j;YX2c;?Kiq;cENl!)rkr!E2tq;uK\g;ZK_p;>sDb;>sJm;ZK_o
+;>a5j;>a8d;>a5j=8l;'='/Q'<rZ2";ZK_f;>3le;>sDi;>O,a;=mcc;u9Gm<rH,!<rQ+p<rH+n
+<r,kt<qTDi;?0YS<<#tt<r,kt<rQ+s<;ol%<)lq!<``>t<W#hp<VTMn;uTYu;cKp&YHRi-s0;R/
+rNlO2rjD^5!k5\LrOE6G]=Y^Z>?b64=T2J(=oMV!:B4/b:%(g^h;7&Ii8NYSro4%?jo4EBk5a`E
+l2U&Kli$2MmJcPNn,DhTnbD\QoDJ7Tp&+O^p\=O^q>L0aqu$BgrU9`:s+13_s*t~>
+JcC<$JcC<$iW&9Dq>L3gp%nd\W;ZSiq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRS0qj[ALr0dMNrgEYNs/5mori#gr"K\`,XKDH(!jJr7rj2R1!4Dd<
+!kZ%Trji'=s0r!9!O\*cOTCN'rJg]5qMXs(rJU]5p5AsI$)XZ!W2Zl!X0&T)YQM&3Y)N@>rJ^c7
+!fDhkreUT0s+^H*s+L<&rIP3*KS4u2L&HbtL&Qf,L\QW$X8f=%X9,N*XS[_>LAlu.M"li#MYrD1
+N:r82NW?Qd\Gs/>\I6!Z]",A_]=Y_g]tOBW!58BH"Mhjj`5V_q!6=kts-*GHrKI5Frg!MLpQtoI
+qjIGPr1!Z&p;I!Ms2G&Zr5eo[rQ>,_"O,-8cHcF8s3UGbs3:\jcHlKlriZ7(r364+s0DR/s0Vg6
+rjMj9s1&'=!kPeIrjMg6!4Vp:s2O9As24oTrPJHJ!o;_jrnmh9ir7s>jQ5M&joX`0kl0iHlMp2J
+m/QJPmecJOnGVnOo)/+Xo_8%WpAOa]q#'sdqY9scr;-B\rdk*#s1SG_~>
+JcC<$JcC<$iW&9Dq>L3gp%nd#L&LlFq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRY2KS0,Qs+C<&r.4Kj#ChG]KS5&6L&H`+L]3&,L]3,-M>rG5MuC9i
+]=PTQ\c92>\,Nf:[=%arqg/*ar-7s]r-J<es*46_re1*%!/UW2!f)SfrHeEenTXnSrcS'ZrcA$[
+r,_gWolU(PreLQ0q1o$-qf_p^!-\6^s*"EdrH@@JqKVj^qK`0hN;S\5Nqn_9OSk.?OH9@%"Hek2
+Q'M<6!.FZls*t#ur."`snq$gmpk/KtrKR;Hplt`Brg*SLs-E5Br0[MN!1<SMs-`qWriQ1&ric7(
+s0;U0r3QF1s0_j7s0r$<rj`$?q31fCs-3PIk`Yq-rK@&?!o;_jrnmh9ir7s>jQ5M&joX`0kl0iH
+lMp2Jm/QJPmecJOnGVnOo)/+Xo_8%WpAOa]q#'sdqY9scr;-B\rdk*#s1SG_~>
+JcC<$JcC<$iW&9Dq>L3gp%nbt<;l[jq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRV1;ta,c;t<fn;c-Fk;c-Cj;cHcr<;onr;uTc"<`N.#<rKZ4]=PTQ
+\c92>\,Nf9[J*T!;ZK_p;ZK_m;u9Gm;uTZ!;,U7h;,U<b;u';l;c<Tnr)E\pr_rqt<)`Tlq,@;m
+!E2nh;?'Mo;>O2j;ZK_m;?'Jm;>a8h;><rh<``B$=9)G%<rZ1i;>O,g;>j>i;>O,`;=.9];ZKks
+=8l8"<V]\o=8,bl=7]Ah;?0YR<;fko<rc;#<W#hq<<cE&<`W:'<r#bo<;fhk<<#ku;H$QoXo>L&
+YPbX)Z2_--Zi@E4[JmW7\,Wu;\HocK=B\p5>$+o+>5qb*;#!id:AR]P:'08.hu;O7iSsjs!p&J)
+roO:Fkii$1s6BXMr9XINrpK[PrUBdUp[\7RrUfjWrV$3aq=sm`rVH<dr;?Ein,@n<JcEF`J,~>
+JcC<$JcC<$irABEqYg<hp&"ab!Vr\kq=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRV1g\dQ:Rf&TOR/`TLR/WuaVPjEls/Q+#"0JZ+Xo>I*YHY:;rj2R1
+!kZ%Trji'=s0r!9#dq%HZ]L92OHBF'!KW9>NV8>2MuSb7NW4q;Mu8P5Mu/D+MuKRPVZ<^qWr]?*
+ricC*r/LZ6s,-u:M2@&fL]<,*K`Hf)KD^?"K*$^[LAci+K^sisLAZc)LAS%OXoGI&Xnmb;L&m'c
+pke[$rJUT4pPo04!OfK9\,s4P])K5J]",D_\[oDb]Y(qkrO`-ErkAZQ_8=.0`l@b9!0d8D#*Y:9
+Q'IZ$p6Y]EqjRGPqnr-G!6+rWqoJfZrQ>,_"3f$7cMc)hd.P`ac2apEXSf4"Y5b^'YlD!.ZMh-0
+[/[Q5[f<f:\Gif;['d<M[f3Z7\,No;`ok;B`5BLk_Y_.Nh;7&ghuVfrro4(@jlQL(s5sCGrTX@I
+s6KULrpB^QqX=CPrUK[Rr:BjYq=X^[rV--_rV?Egq"ssdr;H'_JcC<$^Ai]~>
+JcC<$JcC<$irABEqYg<hp&"ab!Q'Qfq=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRY2gOo?Ss+C<&r.4Kj!e5ZJre1K.Knb>9rItE0L4tB]L]*&-M>iA6
+]=PTQ\c92>\,Nf<[C!<Ipj;maqK_p^pNcaard"Bcrd"Nir-A<q!J?+&L&d#.M#`>1HN&3gGk-%_
+G'A.RG'.s*FSg+ZFSKqWErU4SFS^(PL]DSpG5ZUbG5ZOcFEMbMrce?bms"bUr-/!^qK_p`!dflb
+r/LW7qi:f?O-':#!K`B@O9^o2PEhE!Q@8OW!.XosrI4ftnq$^jqLea"qiq)Fq31oFQN!0JQ3*>;
+QL^C?R/`KQR/*-NR]HFhr2ot$s0)@)s0;U0rNlO2s0_j7s0i$=P4t1>Pld26PNS)/Oo(==OTO@q
+hu;O7iSsjs!p&J)roX7D!9jCGs6BXMr9XFMrpKXOrUBdUq""@Sr:KgXrV$3aq=sparVH<dqu$Bj
+mf%e;JcEIaJ,~>
+JcC<$JcC<$irABEqYg<hp&"ab!G>C/q=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRV1g\k"M;u9Jh;t<id;Z]io;Z9T":fC:l<)lmsr`/nq!*&krs&K35
+]"7mOs1&*<rjDp:['[17;YsDk;Z9Vl;Z0Pn;?Bcp;Yj;l;Yj;n;H$Ni;ZB\p<!$'!;uKYq;tj8h
+;ZTcpr_s,$;Gg=i;,U<j;>*lg;c<Kis&/hnr)!DjohY]j=',?&"BSW(<D`6`q,%&frD<Gir(mJm
+:f1*h;Z'D[;Z9Vp<WZ?'=8c2!<Vof#=&rC(<`f#rr)`hq!*&YjrDEVom8X'bq,I5lqH!Ytr`/kq
+r)Nbts&T2$q,RAmrDiSkr_iftriH%"riZ:)r364+s0DU0s0Vg6rjMj9!4_r/"^,#4=]ef*=oqi'
+;"mcc:AdiP:'08.hu;O7iSsjs!p&J)roX7D!9jCGs6BXMr9XFMrpKXOrUBdUq""@Sr:KgXrV$3a
+q=sparVH<dqu$Bjmf%e;JcEIaJ,~>
+JcC<$JcC<$j8\KFqYg<hpA=da!;uhps7uB`qtL$^q"=UXrq$$Xrpg$Xr9s[R!:BaOs6B[MrosIH
+!9a@D''838j5].YiS`YOhqm2FgtUT;rL<VOr0d)B!LKY^VZEZmri#js"fn`,XK8Q'Xokl3Yd+/5
+s0Va8!k>_KrjMj7!4;a3q2bZ?O,j-tpl,64repi:rJpl9!/pc6!/pZ1pl#*I"/_uoW;Wb(Y->-i
+NJrjUN/NYnMuS\7M#W81LA?N'K`-Q%K):3!L&H]%L&ZhtL&Qi'X8f:%XS%;8L&d#-M#<,'MYrD1
+N:`)2[C3RC\,s4P])9)@]",A_rk&3Cs1SEE!58BH"2Maj`:fAoPQ$gFQ2[!OQ'R`&R$dl>s-NeQ
+qO%;NrgN_R!1`l&pr*3Orl+rYr5eo[rQ>,_"3f$8cMc)hd.P`bcMjjCX8f:!Xo>L'YPk^*Z2_-.
+ZN@MA[JmW5Zi@E4[K!]7[/mbHrPn'?!6"lSrPJHJ%Gfmuhr*GOio9"YjQ,G%k5XWEkl'cGlMp2J
+m/HDOmeZDMnGVnPo)/+Xo_J1YpAOa]q#1$eqY9scr;6H]rdk*#s1eSa~>
+JcC<$JcC<$j8\KFqYg<hpA=da"ic4LL&(Q<q"sg`pA"=Zo`"IZo)A1ZnGMbTmJuYQm/QAOlMg&J
+kQ'fFjq?e:jQ#:[io/hRhr!;Hh;$c>gA?L%KDgE"Jb4HmJ,XlsKDpT)KE?j^L&H`.LPCM;reLH.
+rJCQ3rOE!>\$u@Fs0Vj6rj2BHqg/9fs*4NgpiuOYrd"Qir-86e!IB+jHN&0mK7no1K_gE+LP^k6
+HN&3dGjoqWFoZ[^FR4)BFSg.WL]E5/M#VVkFoZ[`F96T.G4p.YG5-:\Gl2d^Gku^]HN&m$NVeb6
+O8b7>O8k=AO8b4COcu#pp4!$krdY3(J:N-!J:RTLs+:6$s+16%qL\NqrIk!2s-<DE"I5:=Q'M<6
+!gT(;nsB6@!13JKri5sus/c.#riZ:)rNQ=,s0DU0!joACrjMcgq3(lEQ'M<3i0*u"%Gfmuhr*GO
+io9"YjQ,G%k5XWEkl'cGlMp2Jm/HDOmeZDMnGVnPo)/+Xo_J1YpAOa]q#1$eqY9scr;6H]rdk*#
+s1eSa~>
+JcC<$JcC<$j8\KFqYg<hpA=da!,;F3s7uB`qtL$^q"=UXrq$$Xrpg$Xr9s[R!:BaOs6B[MrosIH
+!9a@D''838j5].YiS`YOhqm2FgtUT;r_ihs;uBPi;t<id;[lT&;,U7h;c?Ok;cH^rr`&ntrDN\q
+r)E_trOE!>\$u@Fs0Vj6rj28qr_r\l!)rbmn5K<ap/Cle"&i)r;uT_r<U`uf;uKSr;cH[or_ibp
+s&/emo2>Nar_i_mqb[;ip/(chs&]/$!EW:n;>*fg;,U:hq,%#e!)WVkr_i\ll;IU^!`rE(rDrnt
+qc<Ys!EN:r<rZ7h;u]bq;smW_<Vf\j<r5r"<`N/s<;]br<rZ5$<r,ho<;fhp;ufkq<<#nrWrB(!
+XSf4"Y5b^(YlD!.ZMh*2['d=@[K0Q7r)a>0>$>'2=B\m':Jam^:BXEe:/+IW:&n)^:(?%9hr!AM
+iSrkWj5f:_roX7Ds60FGs6BXMr9XFMrpKXOr:'[Tq""@SrUfpYrV$3aq=sparVH<dr;?Hjn,@n<
+JcELbJ,~>
+JcC<$JcC<$jT"TGqYg<hpA=da"o8/tWMlciq#'map@n7Yo`"IZo)A1YnGVhUmf2\QliQM<lMg&J
+kQ'fFjoOT)ro4CGiSi_Qhqm5Gh;$cagA[T<RerNOQiNQMR/<3RV5C/gVPa?k!i`3#r2]n#riQ@,
+Yd(M5Zi@B6\@8sH[f<`8[/I<3ZEa4e!KW9;NV\V5NW+n:NW5"?NJrhpMuJY8Mu/D,MuJ\6V$X#t
+Vl6VsWiN:^rf$W1"cA.nLkpi\L&Zi)KDpK"K*,=\>$Lo.s'#M,>5hY(>5X*QK`-W)LA@kNXbQM&
+m=tXrs+pN.pko!-qMbE5rf$c7s0Vm9\,Ef<\[oBM\HBFR\[qdPs1JBFrk&6ErkAKL_Y'&lPPp^P
+Q'R`&QBd]"QC%00rgEeTqj[VUpqumFs2G#Xs2Y&Ys2k5^s2tPhc-=PZrQkMjp!3]bWN#cps/Z1$
+r2p"%s0)C*s0;U0rj2X3!O]62Zi@E4[K!]7[/d]6`r<sW`:(\E`;[[R_YV(Sh;7&Hi8ESQir7s>
+jQ5M&k5XWEkl'cGlMp2Jm/HDNmeZDMnGVnPo)81Xo_S7ZpAOa^q#1$eqY9scr;6H]rdk*#s1nYb~>
+JcC<$JcC<$jT"TGqYg<hpA=da"o66^KS5'Rq#'map@n7Yo`"IZo)A1YnGVhUmf2\QliQM<lMg&J
+kQ'fFjoOT)ro4CGiSi_Qhqm5Gh;$cag@p3rJb4HmJ,F`rK7s5X",)A_L%pE%L]3,.M>rG7\@8sH
+[f<`8[/I<5ZE\e)rd4Wlqg/9f!I/h[GkZL`H2r6hGQ<$gHN&9fH3AkRKS+sRL&cT!H22^^G5ug\
+G62r1Fo$4YF8o#:;,I0dr_NSjr_NVk;#GG0F8LapLPUccFnTtYFo?C`F`qs%GPu^]GPud`GPZRY
+H2MsgNW+n7NW5"=NW+t9O8b7>O8k=AO8k=AOT:UDIKP(KIXh<F!.Xrts+(3$Jc:3!Jb"EfKDgJu
+PlI$FPlI$KQN*6HQL^C=R/*0MWV`^qX8f:!XoGR(YPk^*Z2_-/Zi@B5[?CKP!0[2Bs-*MKr0.,C
+s,lH,qN2'>hV[5Ki8NYSro4(@jlQL(s6'FGrTX@Is6KULrpB[PqX=@OrUK[RrU]sZqXsg\rV-0`
+rV?Egq"t!equ-!_JcC<$_#Jo~>
+JcC<$JcC<$jT"TGqYg<hpA=da!r6VJr`&Xer:g-_p\"LWrq$$Xrpg!WrU9dSs6]dO!pf.:rosIH
+!9a@D!TiDAisXl*iS`YOhVR)EgtVh^r_rkrrDNGinl#Hc$WKu$;,U7h;c?Rk;u9Po<<6&sr_ier
+rD`r#\@8sH[f<`8[/I<3ZE`Oin5K3^oMYcf;Z0P];ufkp;Z'Gn;Z9Vo;Z0Jf;?/iW49%AA4T@JH
+3]fDa3]m:;!)WViqb[8ls&]2%!*Abhp.tig;GpBf;#4&f;Z0Gn;H*0br_`Sk!*0#!!`rE(rDrnt
+qc<Ys!EN:r<p`fc<;ohb<;]bn;uouupf@8nr`/hpr)Nbts&T2$qGmGmrDibps&8nr!`Q(tql9[s
+s/c.#s/uC*rNQ=,s0DX1s0Mg7=oMS)=o;D$=oVS->#%gg:f.-es%`Jfs%WPgpJ1]`oM,\JhV[5K
+i8NYSro4(@jlQL(s6'FGrTX@Is6KULrpB[PqX=@OrUK[RrU]sZqXsg\rV-0`rV?Egq"t!equ-!_
+JcC<$_#Jo~>
+JcC<$JcC<$jT"WHqu-EipA=darV?KnrM]Yhr:g-_p\"LWrU]pWrpg!Wr9s[Rs6]gPs6K^MrojLJ
+kNDj,!TiDAirS/urnmh7hYu=3gtVh^!nj'4qO7;L!1<_Qq3^uEs/#^m#H"DtW2ZesX8T+"Xo>L'
+Y6(r5ZMq07['mEN[C!=?ZNIM<Z*=%c!KW9:NVe\6NVn_:NJrkqN;\Y7N;eb6MYN,-MufcPrhTds
+Vl-PrWr@tVMuS\7MZnurMi*CKreUT/re1H+>$G81>Q%b)=oMS)>l%\(>5h\)=oqo3=T2P)>5qh,
+=o__%=9D^-X/c-!s+^3#qh>*)o7d=%Lktnapko!-qMbH6qi(N6rj;g9\$u@H!kGnRr4)p@\[f<N
+]DoMD^&GYH]tV7roTK6<rfdJLQBqN:rg*SNpmD)Lrg<\Qs-ieR!M%+&_t_1M`W*pXa8<sXao9H]
+bQ#iecMc)hd.P`bVuN^pWVidrX8f:!XoGR(YPtd+Z2_*4Za$d@ZMh*0[/IE2[ee#A`::hE`;[[R
+_Y_1Lh>c=3hu;O7iSsjss5X1ArT41Ekihs/s6BXMqs=:KrpKUNr:'[Tq==LUrUfpYrq?<bqY:$b
+rVH?er;?Hjn,@n<JcERdJ,~>
+JcC<$JcC<$jT"WHqu-EipA=darV6W?b_1Y'L&C`Dp\aaZp&4O]oDA+Xnc&%Un,MhUmJcJPli68L
+klU)3kPjTEjlHF$!TN);huV`lrnRV1g]#n,g%^0rJb4HmJ,OiqJ,b0$K`[!^K_U9)KnbA=L]3,-
+M$AjG[^ENM[/RB6ZE^[=q0W0hr-JBg!-n?apNZ=Us*4Qho6LOlKS4u1r.Y9.H@#O8qKVm]rc\<c
+!+l+,s&&Yi"]8)l:f1'd:]=/r:Jah_:/4V]:&[rh:]=,_:]#qJL])AhFoZ[`F96T.G4p.YG5?F[
+Gl;j_GkH@]HN0!(N;S\8NW>(<Nr4t;OSt7?OT1@BOHKEhr."`qs*t#uqge`trIO`qs+C6$q1J["
+!1!;Cs-<SJs-<VKs-<VM!1!AGnsB3?qO.A]s/>prr2Tdts/c.#s/uC*rilF-s0;d6Ocbfip65N@
+qNLi>k*#V(s5!_3!8me6!TE&;j8\0?jo+<CkNM.-l2U&Klhg&ImJcPLn,2\RnbMbSoDS=Wp&=[`
+p\O[`q>L0cqu$BhrU9`:s+13ds*t~>
+JcC<$JcC<$jT"WHqu-EipA=darV?J1!)rkrr:p3ar:]mXrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJ
+!pJh1roO7CjSn0?io0mp!T2c5h#Z<crn7M.<)cdor_rhrp/C]`r_rers&&eo#>nAs;c?Ol;u9Po
+<<,qr;u]hq<WBN-[K!W5ZNIM<Z*<7dqG[Dnr)<Gio2>`g;H$Km;t*cc;uBPm;ZSg?r]^<ErB:9E
+4ZrX(!'L6B!'L6B#Wb%04$,Pf4?EI)ofN:;3]d7?s&]5&nko*W"&Vro;>F&b;>=&h;tX&c;>sGo
+<)ris!*B,"r`/hrrDs##=8Gtt;u]bj;ZK_l;uT_r;sdQ`<VfYq<EJoqr)Wl!r`/kqqc3Yss&]"r
+r)EVpr)E\pr`&oqs/>prr2Tdts/c.#s/uC*rilF-s0;d6=BJ^/r`T;)r)io#r_EJhs%rVgr(m#]
+r(lu\s5!_3!8me6!TE&;j8\0?jo+<CkNM.-l2U&Klhg&ImJcPLn,2\RnbMbSoDS=Wp&=[`p\O[`
+q>L0cqu$BhrU9`:s+13ds*t~>
+JcC<$JcC<$jo=`Iqu-EipA=dar;$?l"fS>tW;-/cp\aa[p&+I\oDA+Xnc&%Un,MhUmJZDOlN$5K
+km-G8kN:pgjlHF$!TN);huV`lrnRh7gY1B7f[u\mRfAlWReiEPRf8`NR.lsIV>d@nVPjEls/H("
+rN$"$rN6I1YctF=Za7'H[/RE3Z2h0/YQ:qiqiCi>NqJD3N;eh/N;SS6N:Vu)MuolQVZ*FkVZNm!
+N;eb3M?&M2KE[!]KN_Vcr`]P2>$G06=o;G'>l@n*>QA"-=T_i4>$Lr.s'#D+r*&u#s&f;(s'#E'
+rN#s&!*]>(q1\g&qh=`us+gW1rJC6*rJU6*rf-la"h(nL\@B*K])9)@]",A_rO`!?"22F3PP(+=
+PQ$dLQ'Rc(R/E<FR/!*FRf]+t`:h+E`;dgV`W4'Va8j?\b5KN`c2Z)fci;Adci9m?VuEXpWVidr
+X8f:"XoGO(YPk^'Z2_-.ZN.B2[K!]8a8EsW`Vd[F`V[UQ_u@OM_>`6khV\=j!o`.uro4(@jlQL(
+s6'FGr9=7Hrp0IJrU'ROq=":OrUK^SrU^![qXsj]rqH9arV?Egq>:*fqu-$`JcC<$_>f#~>
+JcC<$JcC<$jo=`Iqu-EipA=dar:pWCcH_)rKn]<sr:g-_q"=RWrU]pWrpg!Wr9s[Rs6]dOs6B[M
+rTORNkND!ijlPS&irS/urnmh7hYu=8gtUQ:g"=sQK):,kJG4NoKS08Xs+CH-L5#MZ!JQ:,L]3,.
+M#t)l[/RE3Z2h0/YQD"UHi/6kHi/3iGlW*`GQ)jeH2MpZH1?1]KS08W!J?+)L&cQ!H2;amG@tN"
+A7T7`APuJ+;?0Sn:^Koo:f1(d:f1%cr_NDf!DcPk:BOEg9ht=VrD*AerD*6G!/LDFrcS0_!-S6^
+!-S6`q02a[qfhm]qfhs_om-O_rJgi9rJgf:s,I#<rK$r>rK$u?s,R20J,FcqIfP#uIfb(KJ,Xut
+JcC?"JbOcpKD^?!KDgH(Pa1s,!1!PJs-<VKs-3YOQ'M64n<a$>qjIJ]r29Oms/Gprs/Z1$rN6+&
+!3c@*!3uKbs-!/@s-3ADs-!;Bk*#V(rnRV3hu;O8iSrkrir\<'jo4EBkPscDl2U&Jlhg&ImJZJK
+n,;bSnbMbSoDS=Xp&=[ap\O[`q>L0cqu$BhrUBf;s+13ds*t~>
+JcC<$JcC<$jo=`Iqu-EipA=dar:pV9Df8NP<)iYfr:g-_q"=RWrU]pWrpg!Wr9s[Rs6]dOs6B[M
+rTORNkND!ijlPS&irS/urnmh7hYu=9gtUQ:g"=qVr_rbpqG[Am!)rkps&&\ls&/nsr)Eer;,dHk
+"]A8t;H$Nk<<#tu;ZB\p<<#r"[C!=?Zi@<2Z2Us-YN/UX;uTbn;uKVa;Zfop;H!Hlo2G`h2?#H4
+2$>fr4[)(/4oRVK4[(qj4?WL&!B`OD48h8H4Zkkh3]fGbqDnO9rB(9G3]]>a4?WUC"]e],=?&;=
+2ZPc3;>3lh;,U:hq,$rcpeq)iohtZar_`o#<)lt"<Vfbq<Vohq=8Gts;uT\j;u]bm;r1IS<`euq
+rDru"r`/kqqc*`!='&Gu<W#hq<W#hq;Z]pqVYm@kW;ijpWrK."XSo:$XoP[(YQ1s,=T;P'=o__'
+=T;P%:Amud:Ado_:ARcZ:B'&MhV\=j!o`.uro4(@jlQL(s6'FGr9=7Hrp0IJrU'ROq=":OrUK^S
+rU^![qXsj]rqH9arV?Egq>:*fqu-$`JcC<$_>f#~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?Hfrr<"r!iW#qrqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fDM-<Rf&TQRf8`PR.lsIQ33JLUo"'f#cFPt
+W2Q\qX/l6$s/l:'s/uL.Z*O>7s0;X0rNH@,Y*&UC!KW9>NW4q=NJrhlNV&2+MZSiqMuJ\4Mti81
+VZ*FkVu;PPJcLB#JcgR0?!R>4$sZt>>Zt95>$>-6>?q,2rETA*#$P59>?b96r*')($X-Y9>Zt?8
+>$4s0=o);%>Q.h*XT#7&W`r\2qcWr&rE9/Tqh=d!rJ(B/pPJg*rJLZ7rJUN2s,-l9rf-i`!OfK:
+\,a)=])9)@]",A_rO`!?s-!DGpQGK="I,1;QC%K9!13JJpmM,MqO@N&!6"TKq8<9PrPncVrlP/^
+rQ>;ec-FW6ci;AdcN'd?V>mFjVuEXpWVrjsX8f:"XTbl2YHY::ricI/ZEjG8!4;^4"1H:ka8O$W
+`Vd[G`V[UQ_u7IL_$\uRh;7&Hi8ESQir8!<jT"?@k5XWEkks]ElMg,Hm/?>MmeQ>MnGVnQo)A7Z
+o_\=[pAXg_q#:*fqYC$dr;?N^rdk*#s2+ed~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?HfrltY"K7no3rqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fD:*rJbFWgJ,as(ItNE,KS>,7KSB5V!elA`
+reLK/rJCQ\s0;X0rNH@,Y'g1ps*Ofnr-JBg!-n3]s*4Ngqfqg[ms=nb"+u;^LAcAtAc?3E@q9([
+A7JR9;?0Sn:^0cm:f1+f;#X>e;#=&e:Amrg;#X5p:/+JX9hnIW:]=,dL]E5*:&@W_Fo?LZGPlXW
+G5umbGPl^\H2i*hH2`-fN<5&uNrG%;NrP+<Nr>%<OSt4DOH4j>It.BFrdalq!.b$!qgng!rIP$#
+qh"g"qL\Wts+LE:!1!,>rfmYOQ'R`$Q2Hs;Qi!0IR/j&^V>mFjVuEXpWVrjsX8f:"XTP`0YH[qe
+!0[&>!0m>Drf[2Ak*#V($JaInhV[5Ki8NYSro=%>s5j7Bs6'FGr9=4Grp0IJrU'ROq=":OrUK^S
+rq$*\qt9p]rqH9arqZNhq>:*fr;H*`JcC<$_Z,,~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?Hfrbqg6!`DrrrqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fDAPC;uT_s;c<Qkr)*Mnr`&nts&9G-;,U7h
+:f1(f;H$Ll;u9Po<<H/t;cEZps&K**s0;X0rNH=+Y3Jmb;uBPm;u]bo;ZKem;u]ba;uKVm;uBVl
+2#]?42#]];4oRVL5<V+k4Zkk*3sIf/4$>\f48h8H4Zkhg4$>Yer]($@3B@'us#9m9q`4U9s#C'=
+r`',&='/N`3;b]82Z,H42ZHYO;#aDm;?0Sl;#!od;ZBVn;ZB\f;Ys>j;ZBc%<*!%"<E<,t<rQ)!
+=8l5$='#9$r)Weq"&_un;Yj>j;Z'JM<<#u!=8#\n<rc;#<W#ho<W6#"='#,srD`_qr)EYo!2TUj
+s/,^lri#jrrMomus/c1$"0Si2Yl%W&=oMS)=o;A%=o1tm:]*uc:B=3dqbHu`oM,bKh;-rFhr*GO
+iSsjss5a4AroX7Ds60CFrp'LKqs=:KrU0LMrUBdUq==OVrUg![rV$6bqY:'crVH?er;?Kkn,@n<
+JcEUeJ,~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9crr;qps/>niq"=UXrU]jUrpg!Wr9sXQs6]dOs6B[MrTOCI
+kNDj,&EW!6j5].XiS`YOhVR)EgtVh^"PMGZf@Knis-itUqjRMPr0[8GrKdGLs.o[k"K/,pVPjEl
+!ii<%riH.%riZ:)s0)X2ZEga?rilF+"0Sc.Oo1=@NrY4>NW+n9MuSb6NVJJ4NW"h5Mu&D2MtW)7
+V5C)dV5:&erdk6)>[:Y4>QA"-=o_e+=o__)>52>%>Qn>8>$5$5r*&u%rE9J3>$>'2='&L+r)Wr%
+=]tW*s'#J+riH+""0,R0>5MJ&>5_V'=T2CqLAlu.M"cc)MYrA4N;AJ2N;eb7N;Bp^\,Nl;\c029
+\H'5=])]MCP5ga?P5UUEPQI,9QgpI<RJ`NPS,]#X_Z7XJ_u%CP`VmdVa8O*Yao9H]b6#o5cMc)h
+d.krbV#I4jVYm@lW;ijqWrK."XT#@"Z2Us-Z2Cp-Zi7?7b/q`FrPnfTr5A3GqnrKPqni<Js1efn
+h;-rEhu;O8iSrkrj8\0?jo+?AkPj]Cl2KuIlh]uHmJcPLn,;bSnbVhUoDS=Yp&=[ap\O[aq>L0c
+qu$BirU9`:s+13fs*t~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9cs3:VgrIk3)rV$$ZrUg'[q==OTrp]jSrpKgRrTsRM!:'OI
+!pJh1roOdRjQ,@]io/kSi8<DJh;-l@rn7M.f[na+pk&Krr.+furdacnrI4`q$%dh_K8##6KS5'Y
+L&d#-L&m!_reLN0rJ:T]Z*F;4s/uL,Xf_AFrd+Qhp36O]rd"<apj)7Q#_Re_KS4u2L1C3nq,.2i
+rD3hu:Jakb;Gg7e;Gm?gr_`PhqbR5es%`_n:Jajd9`e'a:&Ic_:&Icb:&B_HL\X[=9EIp^9_`i1
+G4'SOGkcR`GlE!cN<5&uNrG%;NrP+;NrG+=OT(=?IfFopIKG"LJGaosJGt,nK)L6(Jq8K)JqNiM
+s+C?)s+UH:!1!,>r0@;Jrg!GJn<a$>r0dJYrh]Xlr29Rns/Gsss/Z1$riQ!Y!0[)?!0m;Crf[2A
+k*#\*s,[E>h;-rEhu;O8iSrkrj8\0?jo+?AkPj]Cl2KuIlh]uHmJcPLn,;bSnbVhUoDS=Yp&=[a
+p\O[aq>L0cqu$BirU9`:s+13fs*t~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9crbqd5!`N&trV$$ZrUg'[q==OTrp]jSrpKgRrTsRM!:'OI
+!pJh1roOdRjQ,@]io/kSi8<DJh;-l@rn7M.f[na+rD`Pj!*&qr!)ibmrDNYos&8turD`br!)i\k
+s&/kq!E)kn<<#r#<)QXnr_ru"ZE^\6YlCm.Y-"hq;ZBVn;Z9Vm;?0Ym;W:UW;,U7hrDWYPs#pEI
+r]pHIrB:BL4[(tj4o@GB3s.T+4$<@$!'L6B"?eh-3&pgr#<4Y%2`N`V3W1r83<;)ur]'m9r]'mW
+"]e],=#`2;2ZPc62>f?62`Nhs;?'Mo;>a8c;>sJl;?'Po;tNu_;>sT#<E<.#<E<,t<rZ/#<`f9$
+!EW>$=8l5#;Z9Sp;Z0Gm;YsDl;YsDL<!--$<`erpr`9/%<E8oqr)N_s!EW=u<W#hp<W#hr;uEHj
+V>mFjVuN^qWVrjsX8f:#Xo)?$=Sl8!=9).n:Amud:ARcb:A@WW:'KG/h;7#Grnmk:io9sts5X1A
+rT=.Croj:Erp'LKqX"1JrpKUNrUBdUqXXXWrUg![rq??cqY:'crVH?er;?Kkn,@n<JcEXfJ,~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<bs8N,up\^oiW:p&[r:KsZqXXUTrp]jSrpKgRrTsRMs6BUJ
+s6'IGroX7B!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'bhqO7;Lr0[8GrKdDK$'qE`V5:&dVl$?j
+W;ijtX8T+"Xo5C&YPta0ZEUR:YHIl,s/c6_rfI/@!07&<rf$l8re^`7N;eh6MunorN;\b8N;AJ.
+Mu\e1N":8[Gbq:6VPU,dW*N\6?!R82r*',)!a8f5r`]G->[%,3rEB5*r)s2,>$P>3>7"J;>[1H9
+=BJX,r`KA-=BJ^/r`B2(>5DD$=T;G$X9P]*X/]B.=o;A&=^(`+r`K&!s&T#Os+gN.qMG0.oS`^-
+qhkK6[/.01\,Nl;\c',9\bs)=P5^[>P5URIPa.Q#Qh$O>RJ`NOS,]#I_tq:O`VmdVa8O*XaoBN_
+bQ#cec-H:6s3USfs.]Lfr1s@hs/,^ls/>ssri6"!!j&T0r3?7*!3uI-s0Ds;[E?Y6aN)<s`VmaG
+`VdXS_tq7M_>V.Lh#?+1hV\=js5<t;rSmt?jlQI'roa=Fqs"+Frp0FIrU'ROq="=PrUKdUrU^$\
+qt9s^rqH9arqZNhq>:-gqu-$`JcC<$`;b>~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<b"4#03_Yf&fL%b?8r:KsZqXXUTrp]jSrpKgRrTsRMs6BUJ
+s6'IGroX7B!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'\Ms+:<'rdjfopj`6krI4isK)UB-KS>/6
+KS>/7qh></L5(J=Lku"ds02O,!3Z='s/c$Crd+Qhs*4Hcs*4Qfs*4NgpNZLZms5.B>?c`5KDgH'
+LAk!L;>j;k;>a;l;>sAn;,U9g;#4&h;#F)k:eje^r_WJe!)<Gf!)NShs%WMgr_;uZqhP6-q+^BQ
+s%<?9olfqNr-8$_qfi*dqMbQ8NK4!trJgl;rJpo=rK%#?rdOirr-nWp!.aus!.b$!pO`$gr.=j!
+s+Tg(r0@;Jrg!GJn<a$>rL*\[rhKCes/#amr29Rns/H!ts/Q4&O-'1"!0[,@s-3>Crf[5Bjc]Y+
+rK%$7rnRV3hu;R6i;hm9ir\<'jo+?@kPscCl2KuIlh]uHmJZJKn,DhTnb_nUoD\CZp&=[ap\O[a
+q>L0cqu-HirUBf;s+13gs*t~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<bs).pSC&Us3;H$Qgq=X[XrU]mVrUKmVr9sXQs6]dOs6K^M
+rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g$JaCig=b03f@SU(r`&Mgr)*Gks&/nsr`/nrrDikrr_Wu"
+:f1+g;c?Rm;u9Po<<?&s;uT`"<Nr^2YHIl,s/b`gs&&eo"&i/u;t<iK;[4p,/Q#DC;H!Kmr]U<H
+r]^0ArB(?I4?P\e4?GScr]L*?!'L0@!BE+:3<2#;3"7f+3''&Y3&ir[3&ir[rAjd:!]W+trAXd;
+r`',&='/N`3;b]82Z,H12?Gfs3W(l8;#X;l;Ys>j;Z0Jm;ZBYq;Z9Pe;Ys;k;Z0W#<E<.#<E<,s
+<WZ9%=8l7u<sD]';H$Ll;Z9Mn;Ya8k;YsDK<<#ti<rQ/%<`N/s<;]bo<r5no<;]bq<!-&sU8%X^
+r1s@hs/,^ls/>ssri6"!"0>U->5_V'=T;P(=T;P&=T;1n:Amue:AI]c:A.KU:&s)Kh#ZBiro!h8
+!93t;!p&J)rT=+Bs60@Erp'LKqX"1JrU0LMrp]mVqss^Wrq-*\rq??cqY:'crVH?erVZQknG\"=
+JcE[gJ,~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"TSDnna-.N!3#hgrUg'[q==OTrUBaRrpKgRrTsRMs6BRI
+!pJh1roO:DjQ-=#!TN);huV`lrnRb5gY1B7f`'J'f%'\frgN_PqO%&ErKdDKrg"(lUnji`VP^8g
+Vl6PoWiN3"XT,F$XoP[)YlCm*XTY`+X-&PDOT(:BNfB%tN;nh8MZ8V7Mu\k7N;\\7N!#&uMi@Fh
+oo/os!dJp6rH\p+V5C)dV5:&e>[1Q?>lIt-?2n.+>Qe89?!LY4=oqr5>5MM6>[:Q<=^#'7>$>$2
+=]ei)>5hY+=BSf)=Sl8#=T)D%=T>H,WiN2#>?b8.=92Q.r)s#$qcEbtrDilQqM>*,r/1-)rf$`4
+!fXLnqm?I5\,No8])&u;]D[oiPQ$^FPPpXEPPp^IQ'Rd2QiNQRR.ZmFRf&WT_X>>=_uRdU`r=$X
+aSj3\b5KN`bl>rdci;AhchsL9UAq"eV#I4jVZ!CoW2ZcqWrK4&YH[r0ricC-r3H@/s2tSgaiVWE
+`r!aQ`:CnH`;[[N_Y_+Kh#?+2hV[5ihu_lsir8!<jT"?>k5XWDkkjWDlMg,Fm/HDNmeZDNnG_tT
+o)A7[o_\=\pAXg_q#:*gqYC$dr;?N_rdk*#s2=qf~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"O+m%]<qHg!/:@DrUg'[q==OTrUBaRrpKgRrTsRMs6BRI
+!pJh1roO:DjQ-=#!TN);huV`lrnRb5gY1B7f`'J)f%#A(r.>!$rdjfopj`6krI=fq"G28ZK7j/W
+!JH1*L&d#-L&m!_reLN0re^ZXriH7'X/l&Crd+Qhs*4Hcqfr*cs*+NfqKVa[p3HdH?!I84s'5_<
+K7nmUKEd-,:f1(d;#O8d;#aDm;#O8k:]X?erD*Vo:Jah`:f%$b!DcGb:'F?e9heAXr(R5f9hkU^
+r_<>dr_<<H!/LAEnP&pTrClm-pilOYr-A0a!."C""H8>#NK*jr!0-r;rf7&@rI4WnrdOir!e,WK
+rIFlupOWI!JqEWGrIY'%rIjO%qj%2IrK[AJn<`s<r1X+as.fOgrh]XlrMK^qWN#lss,[2AqN:f@
+qNCuGPa(s,s-!;Bjc]M&!8RS0!oDhlrnmk:io9sts5a4Ar9"%Broj7Drp'LKq<\+JrU0ONrUBgV
+qssaXrq-*\rq??cqY:'crqcHfr;?KknG\"=JcE[gJ,~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"E/*iARYO7!`Drqr:U$\rU]jUrpfsVr9sXQs6]dOs6K^M
+rTOCIkNDj,!p/M(ro4%=iVqa9hqn@g"l.kdg=b-Xf*0aU<)cjspJ_)irDEPlr_ierr`/nrrDa5)
+;GpFj;Gg:f;,L6h;u9Po<W>ts;uTbrY5YO)XK/Dt;?Tor;H$Nn;ZBVo;?0Yp;ufkf;X@<_0/!5U
+s"FC)"YrqQ;,U<k;u\u[4T[`-48qAA49%GC3rh>@4Sh,A4?Ybgr]:0A3&pmt(-"642`E]U3]T/Z
+3BB2]3&`fW3'')[r\jg;q`=^:rAsp<s&B&"r`B+Zr&4U6r&+C1!]N)!r&FU5!Dubn;>jDj;#jMn
+;ZK_p;>*ob;#sQprDj,&<`W4#<`T-""]\T(<E<3#<rQ2!;ZB\o;?9WmnPf0]r_r5as&/nur_rr!
+<`Scm!EW>$<W#hn<W#np<Vobm<W?%rU&LedU]%"fV>mFkVZNfrWW&n"=]ed/r)s5+=BJ^/qcNhn
+q+gobr(cTSoM,DArnRY4hr"Fk!o`.uro=%>s5j1@s6'CFqs"+Frp0CHrpB[PqX=CPrpfmVrq$-]
+qt9s^rqH9arqZQiq>:*fr;H-aJcC<$`;b>~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?TinE]/mVYm=mW:g)\rU]mVrUKmVqsXOPs6]aNs6K^M
+rosIHs6'CD($4N;j5].YiS`YOhqm2Fgt^Z<g=b-Xf)jOReGYm9Rf&TPQiNKPR/!$HQMm0JQ3jIc
+UnsobV5L2grhot!X/i>'riQ.%#HtA9Xf\\*X8]-tOT(=@NrP+<N;e_:MMmDfN;JM5N;&81Mu\e4
+Mu\2'GlDspH?k-qJqAW/KVeXEs.o^nqHWr(s',P.qca#)!aAi5r`fA,#@1P;=B\p5>5VP&>5h_,
+>$:i.r)ru%!*T,$r`T,#"'M_,WrB(!>6%h(=92Q.r)s#$qcEbtr)Ei"<E<3#M#E2-MXu`+N;AJ3
+[/762[f3c:\bs&8\bqWaPPp[DPQI,9QhQmGR/i]TR/i]ORJiTPRff1u_SYcZqo&KQ!65#YrlG)\
+s2t;`s31MfrQkMjrm(bpc_$i&T_tM`UAgqdV#R:kVZ!CmW;Ne"YHY80Z2_'.Z2Ls8ZcpY:bK@rK
+aN)<t`Vd[L`V@CN_u.CO_>M+KgAp%.h#ZBiro!h8s5O%<s5a1@rT=+Broj7Drp'IJqX"4KrU0ON
+rp]pWqssaXrq-*\rq??cqtU0drVHBfr;?KknG\"=JcE^hJ,~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?T4]!JN;L&?T)L%YB9rU]mVrUKmVqsXOPs6]aNs6K^M
+rosIHs6'CD($4N;j5].YiS`YOhqm2Fgt^Z<g=b-Xf)jOReGY%!K)C2uJ,k)uJG=WmIf4cpIK4cn
+KE$W1L4k56L4tA;re:K0KnfS^s+p]3s/c@(X/l6"qKr3frHSBfr-/$_rd"He!-e<bp3HR^r`fV2
+>[(E<>lJ:6AHHIVKD^B'K8'.uoMPTa!`)Qfr_NPjs%iYk!DcPk:'49d:/:darD!Di:/1^_#Ye&g
+:/4MY:/1CVr(R/dqhY)CpIkQ[qb6u^pe:R.rHJ6as*+-\!."Ec!0$]4s,R,=r/Lc:r/Lc<r-n?h
+rdFisrdb!!p4E6qs+19&K)'utK)^K$KE-_lPl$aGQ2m0KQ2[*=Qi*3SR@'V=TV24Vs.]LfrM9Ii
+s/,am!3#gVrfI#>"-Sk4Pl?mHQN!-DPQ-gDOnt4@POF\7Oo1=@gAp%.h#ZBiro!h8s5O%<s5a1@
+rT=+Broj7Drp'IJqX"4KrU0ONrp]pWqssaXrq-*\rq??cqtU0drVHBfr;?KknG\"=JcE^hJ,~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?S0A7/\H;Z0Jm;?6Cfo_nCXo)8+XnGD\Rmf2\Pm/QDO
+lMg&Jkl9iFjq["=jQ#:[io/hRhr!;Hh;$f?g=k64rmq>)e^RT!<;9Dk;?0Sn;YsDm<<#ts<;ff$
+<)Z[m;,gHm;$]uq;,U:j;c6Qm<";o-<E2sq;c?XpXf\\*X8]-q;Yj>i;?0Yp;ufki;?0Sn;XmZk
+0.nk//h\k10)dU/1GgsG;>jDl;uJfW49.PA4Sh,A4?Yegr]L3@s#C$=!B<%;3<(r;3!;6#3]T5"
+3!VB&2`NfY2`LUn!&sU2r&4pA3`T0\<``B_3;b]82Z,H12?Gfs3W:u=2`URk!''pTr)*Gkr)*Jl
+s&8kos%rboqGI8mrDiu"<`]0!r`02&<`W4$=8l5$=&])rs&8blr)<Vnqc!Mo!)rYlqbuu`##eK&
+<DugqrDiPls&T2$r`/kqqc3SqqGmDlr)Nbrs.B=ar1X.brhKFfs/#amrMKXor`TG-=BJ^/rE9>,
+=BJ^/rE0(q!_uNeq+gobr(d)a!)W;`ohPPA!8RS0!T)`5i;_d9ir8!<jSn9>k5OQCkkjWDlM^&F
+m/HDNmeZDOnG_tTo)A7[o_\=\pAXg`q#:*fqYL*er;?N_rdk*#s2G"g~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?TinE]/mgA.ZHo_nCWo)A1XnGD\Rmf2\Pm/QDOlM]rK
+ki_..k5XNCjSn0Iio/kSi8<DJh;-l@rn7P/f[na+ec+(tS,SlSR/iWPQi<BIQi!*JQi33]V5L/c
+V5:&cVPg;iVl6VrX8]4"Xo5F&YQ1a'WrK'pO91K'Nr=q;N;JP/N;AJ3MY`80Mu\e8Gl`/8rH]!-
+K7ec-K7nl/Kn>#1KqtRDV?3TlW;9^)>[:T>>?b97>?q,2s'5S0"'f&6=T)J&=o__)=o_e+=o__(
+>5qb(=q+V<=^"s1>$G07>$4s0oN;3qXSo4"=o__'=Sc2"=Sl2!<r>r%<`N1%=&rB$M>2trMZC*_
+ZiRSArNuX6rjVs=r4;j;qi^W9rK7;IPa.Q$pR(oIpmV2MqjRMRrgX#+_u@OA_u.IP`;mpV`rO3Z
+aoBN]b6Q89c-FY]d*Va;!7:\9s.B:`rLs7cs.fOgs/#am!iN-%rN?1(s02I,!3lI-rNc@E"j4s.
+aN)<t`TtJ@_u@OO_>M(Mg=tE^h>c=3hu;R6iW%p9j8\3?jo"9?kPj]Bl2KuHlh]uHmJcPNn,;bT
+nbhtWoD\C[p&=[ap\Xabq>L0dqu$BirUBf;s+13is*t~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?Zk]!JK:UkOO"K`C]CoD.tVnbqtSn,DbTmJQ>Nli68K
+klU)3kPjWDjT+B@isXl*iS`YOhVR)EgtVh^"khP[f@JLOeGb+"K)C0"JGaorJG=WkIf=isIKFqF
+Jc(0!K`Hf*K`Qp`qhG**s+p]3!3?+!s/GjArHeHg!-nEcqfr*coQ^.Vr`fb6>[1K<?"IPWA,TsD
+AnP[eA7gIHrIb9*Kn`J(:]OAi;#F)h;#X8j;#X8i;#*oe:ARc`:&n#f:B+&f:('ci9MJ5V9he;U
+:/:LW!/LK.qG$]X!)*2_r_)rY!DRb8GPu^`GOTkWMueosqMkN8s,Hr:!0-u<qgS3frI+csJGt,k
+K)L?"K)U?!JcLH&K`6\jPl$^IQBd^5PlR-EQN3?KQi!-MRJi`WTDkM^U&UkeU]%"gV>mCmVu)PR
+OSb.DP*;,pPEZ!2s-38As-!;Bl&u"-r/_!6gYDeas5!b5ro!h8s5O";s5a4Ar9""Aroj7Drp'IJ
+qX"1JrpK[PrUBgVr:9jYrq--]rq??cqtU0drVHBfr;?KknG\"=JcEaiJ,~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?ZkA7/\H=]//q;$'Yfo_nCWo)A1XnGD\Rmf2\Pm/QDO
+lM]rKki_..k5XNCjSn0Iio/kSi8<DJh;-l@rn7P/f[na+ec+&"<E)or<;]\l;Yj>l<;onp<<#r'
+;c6Lj;,U@lrD<er;,^@k;GpHj<<#r&<)QXn<)fptWrK'o;Yj>i;?Kis<)`Hfr_`Ympf%/E"t_G\
+0.nk5r\=I0r%nR71c.'e;>jDl;tN3P48h8J3]T2[3&ruY3&ggrs#16F3&`cU3&rrX3W:uE3BB,Y
+2`WiY2`L^q"ZA4q2E!Ml2YT013!E8]<E<1'qD\:/r&+U83'$mrpc&.2r)*Gk##S2n;,L4hr_reo
+r)!GlrDEMnr)W_qr`0;)<`W4$=&r3trDEVoq,7/irDNSmoi1`cq,I;kr`&ks"]e]);c?Zo<VBJn
+<rc;#<W#ho<W#nq<<6'!r)EPn!*&ogs.B:`rLs7cs.fOgs/#am!2o`u"Bei/=]t],"Bei/=]t`+
+rD*AgqG-ubr(cTSohGSBgYDeas5!b5ro!h8s5O";s5a4Ar9""Aroj7Drp'IJqX"1JrpK[PrUBgV
+r:9jYrq--]rq??cqtU0drVHBfr;?KknG\"=JcEaiJ,~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c#jUL.g=F]MVl'Bi!iY_^qXXUTrp]dQs6fmRr9XIL
+s6BRIs60LGroO:DjQ-=#!TN);huV`lrnS.@gY1B7g"=p.f%&:"e'a_TrgNbQ!1<\Nrg<DGrKdDK
+r0@nlVPU)bV5C,dVl$AjW2ZbsriH+$$EgS8Y-4k)WMlbnqiLi=!07#;!0$`3qi(B0r/1E1s,6r)
+rd"Ni%>9@eJV/W/K7ec.K7nmUJd$dXJqBhqrhf^l!N2mk>Q7t)>ln55=oMS+>[(D2>Q7k2>?Y35
+>$5&(=oVS5>$5$4=]np4=]ej2=]kH%pf[u,X/rA%X/fE-=o2=t=oVV$=8l7u<<Q?&<``B"<r.^A
+MuU-_ZiRSArNuX7rjVs=r4;p=qi^W9r/q2HPa.Q#op>`IqjRJQq3q8Os.')*!5ncPnAG4CrP\cV
+rl>&[rQ5)^r6#,bc2Puicd:&;ci0L5T)YG_T_tM`UAq"fU]@IpX8oC%Y5PO(YkbR(Z2r4or6#8d
+aiMNC`r3m@`;RRR_Yh7I^]W<Fgt_nb!oDhlro!h8s5O";s5a1@r9""Aroj7DrTaCJqX"4KrpKXO
+s7$$XqssdYrq-*\s7ZHdqtU0drqcHfrVZQknc"+>JcEaiJ,~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c"gY8/US+7YL&?T*L%Fp4o)8+XnG;VRmf)VOm/QDO
+lM]uIkl9iFjoXZ*jSn0?io0mp!T2c5h%8Arg=k65f[na+e^W*tdY!2OK)U?$JGXiqJG+KkIf4cr
+IL1FMI"R$&K7nl1re1K.Knb;8r.Y</L5(K_L^8j;WMuhpVgNmjHi&*jH$FT4GPcXaH2;acGPQL_
+H2ChNARo@^AS,QRAc?<AAcH9FARo=_A;#U6KE?d[LAFaH:]!ug:]+#k:JO\\r_Ebq:JO\]:/+L_
+:BaHf:JX_]q+go`##%`b:/4MWnP0!X!/LK.qb?fYr_*/_r_)rY!DQ8e9Diu/GPHF^G5umeMueos
+qMkN8s,Hl8qgS3fr-eZrJGt,oK)^DkK)^K%K`?c+PNnD1Q2d-OQ'@O4PlR-EQN3?KQi!0LSc#)Z
+TDtS^U&UkeU].%hNr"h7OSb.BP*;,prK[AHpQPW?r/p<.r/pl<"5;Mbh#?+2hV[5ii;_d9ir.p;
+jSn9=k5OQCkkjWClMg,Gm/HDOmeZDPnG_tTo)J=\o_\=]pAXg`q#:*gqYC$er;6H_rdk*#s2P(h~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c#[^k@>$5!-;H!Ei!`JX]qXXUTrp]dQs6fmRr9XIL
+s6BRIs60LGroO:DjQ-=#!TN);huV`lrnS(>gY1B7g"=p.f%&:"e'e.nr)<Pls&8nrr)3Spr`/hp
+s&B/#;c6Nm;?'T);c-Fi;G^4g;H$Ll;H*Nn"'&<#<;of#<2upsW2QWe;?0Yk;?Bcp;ta,e;>jDl
+;ZJKM/cdUXr%\7.rA4s>1c7*G1c.'J2)R3h;>a>l;u&NU3rV/<3<)#83<(oB3]K)X3'')\r\t*C
+2`NfV2`^jrs#0j8#WO_"1c70L2`L(]"]SK%<``E"2ZP`61]TE12?Giu3W1r42uP`72uZ\Y;,C(d
+;,[Blr_iYks&/emr)NYqr)N_s!*/tun5B0_!)i_nnl5Qdq,I;krD`esr`0/'<DugqrDiPls&T2$
+r`/kqr)NYqr)Ebs<W#hn<W8QeT)YG_T_tM`UAq"fU]=Qo=o__)=9)M&=p8&2=BSd/qbI/eqG-ub
+r(cTSohGVCgYCT`h#cHjhu;R6iW%p9j8\3>jo"9?kPj]Bl2BoHlh]uImJcPMn,MnVnb_nWoD\CZ
+p&Fabp\Xabq>U6dqu-HirUKl<s+13is*t~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb$0:!te^;[cVl-EiVZ<[mo)A1XnGD\Rmf)VOm/QDO
+lM]uIkl9iFk5XNCjSn3>iW.s:i!SAuh;-lAgY1B7f`'J-f%&:"e'cX5rgNbQs-WbOrg<VMrKdJM
+rKdDKqj%SSVl$AgUnsrcV5F3h"f\H$X/rE%XoGO+YHG(-rhoUS!0@,>s,I&;qMY0.r/:E/$]A7n
+>$6)pH?t3sK)UH'K*$a[KDgB'K7\aSJd$d\KS<[-rhf^l!iDo&ra#P/s'#M-=o;G*>?kB9rEK8)
+s'#J+r`T;+rEB)$!a&T/qca,*>[%,0r*')%qH<c#!*fD*!*T<%"feW(W`iR&=Sc2#=92K(rE&u!
+r)El#<E3+%q,[Mss,-W1s,-Q/rj2X3!O]<6[/m_FrjW0C]",D`OcfO(rfdAFplk`@s-!MKQ'V<6
+qO%8MrL*_UrLEnWrL3VQ!1Nl'!5n]No#(FErP\cVrl>&[rQ5)^r6#,bc2Pukcd:%bci0F6SGo)X
+T)PA^T`(SaU'%0iWiQ-#!3Q7'rN?4*qQ^(+s31Pfr6#8daiMNC`r<s@`;[XS_Y_1H_#N*hgYDea
+s5*e5ro!h8s5O";roF+@qr[n@roj4Crp'LKqX"4KrpK[Ps7$$Xr:9jYrq--]rq?BdqtU0drqcHf
+rVZTlnG\"=JcEdjJ,~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb#-Fi"TV%dGrIt3'!/:=@rpfsVqsXOPrpBXMs6K^M
+rTX@Gs6'CDs5a7Aro=%<!9*q8$K'^rh;$f?g=k64rmqD+e^W*tda<^HJcLB#JGXiqJGaoqIfFor
+If4crIK4fpHi\kOrIY*'q1Sj(L]3#6LPCP=LPUbCW;`^kHiSNkHN/9iGQ;sbGl2jbGlN!bGQUoD
+<)ij%!F977Ac?9EB4b^dAH$-JA7]:_ARo@_A7\\lqh+s(r(mPo:f'q`;"RQ`:B+)i:&.Na:]=,h
+:]4&g:]F2i:&duf:&dlg9hnI_9_M0^:/+I^:B-+JL]E5.:%q?[9DqQ`9E.]b9D_B`9hbIXs%N*0
+!-n<`!-nL%!KE'7NW5%=N<P?%NfJO9qgSNos*j`ms*juts+'rsrIXotoRd*qqh+s%rKHQ3r0@;J
+!gT"7rK[/Erg*GJrg<\Ss.'(ZrLX"\s.K=as.TLgrf6l:qiL`<"Hnt4Pa;95rfm2Arf[2Am#q7.
+qiLj3!ScE/h>c@3hu;R6iW%p9j8S->jnn3>kPj]Al2KuIlh]uImJcPNn,MnVnbhtWoD\C[p&=[b
+p\Xabq>U6dqu-HjrUBf;s+13js*t~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb$!g_<=]nj/<)QWl;#jMko)A1XnGD\Rmf)VOm/QDO
+lM]uIkl9iFk5XNCjSn3>iW.s:i!SAuh;-lAgY1B7f`'J-f%&:"e'cWDr`&kqs&Akor`&_mq,IAo
+"&r2s;Z'B"<)Zao;,L4f;,L7jr_`_prDWl!<)lrt;ZTjrrhnUNqG@Vu6:!q(/hSe01,:Zb1^,Zl
+1c@0Hr\XX4!&jg6s"jj:2)RQprDNVnq`47-#Wat*3&`iY3]R'u!]N,!r\jj<3;YZ72ZGZ72ZG`9
+2Z#H)2?5]62ZH_W<EB*#q_nL4rA4L3q_eL73B@$tq_nR92`L[pq`"O7"&Mil;Z9Vp;Ys>j;Z0Jj
+<W#nq<W?)$<E*#u;ZBSq;Gg<j;ZBVj;Y!cZ;ufkk<<#no;ufkq<WuQ);c?XprDiSms&T8&<E8oq
+r)NYqrDiYmrDiids.'(ZrLX"\s.K=as.TLgr`T)$!*T;'!*T8(r)rnlr_NAcrD3>dlqd:Ls4RM.
+h#?.0hZ)L4i;_d9ir.p:jT"?=k5OQCkkaQClMg,Gm/HDOmecJQnG_tUo)A7[o_eC]pAamaq#:*g
+qYC$er;?N_rdk*#s2Y.i~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq-KLe^;[caN""Qs76-Yrp]dQrpKdQr9XILrp'IH
+s6'IGrT41CjQ-=#)rfi8i8EMMhVI#CgY:H9g"=p.f%/C$eC2jndJfU6RK&]VR@*r>s-WhQq3M&I
+rKdDKqNh/H';25#V50raVPU/fVPg>jWN*##XSo7*Y-5"2VP^3eOT(=@NW>(9N;eb0N;SV5M?-sd
+rEB/(s'5S0!+Gh6#(qS]JV&H(rIY9-K7dE7?2\".V>R1kV5O8sq-3f$s&o>*r)s5+>$G05r*')&
+s'#;(!ErV&<WZB+=o;J&=Sc2!>5_Y4>$7l+X/`5$W`iR&=Sl8#=9)G%<rZ8$<r5l"<`N.$=8>nr
+=8u:tMu/D/MuC!\[/RH<[^WcV\[oA_r/p]9p6,NAQMHmFR/NHNRfAlUSG8TRRK18(_>qLL_XtbD
+`;[^U`r=$YaSj6\b5BH_bl5lkcd:%bR[X/Drga"ZrLX%]s.K@brhp($WiN2%Xfei*YQ(j(YlM*.
+blGucb6?&1aN)<?rl+0@rkncQqSE'Es4[M-!8RS0s5*e5ro!h8s5Nt:roF+@qr[n@roj4Crp'IJ
+qs==Ls6fdQrp]sXr:9jYs7H6^rq??cr:p6drqcKgrVZQknc"+>JcEgkJ,~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq->gTV)4S!1a"Ar.P+@rUKmVqX=FOrpBXMs6K[L
+rTX@G!9a=C!p/M(ro4sWiSi_Qhr!;Hh;$c>g=k64f@SU)e^W*tda?JAJcLB#JGXirJH(,pIfFor
+If4cqIK4foHi\_Krdt6)KDgK(K`6]'LB!#1L51Q`M#X=PV>GW?Hi/3eH2`$gH2`'cH2MpeG5umc
+<<#ns;?9]or_rhr!`N&trac(>rac">"(YtRAH#L*;#l7HKE6^Zqb[#_s%`PhqG.&d!_uNerD!>g
+r_EJh!DZGf:AITd9MJ8Wr_3#[qb@0HL]*#/L]'s@9`%K_9`@]b9`@Zc9M>=X!DQ8c9E%Wb9DE`1
+G5QOaGl!BrNVne:NVn4uIeA3iJGXoqK)L8mK)UE$K`?Z)Pl6g3Pl-gHQ2m3LPl?sIQM[$IQMQsJ
+Rf&ZSSH#/YT)YG_T`1Y_Nr4t8OSb.@P*>m2rK[AHplk]?r/pB0qN:Z:s4[M-!8RS0s5*e5ro!h8
+s5Nt:roF+@qr[n@roj4Crp'IJqs==Ls6fdQrp]sXr:9jYs7H6^rq??cr:p6drqcKgrVZQknc"+>
+JcEgkJ,~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq-=s=]t]*"&r2s;Z'Dlo)8+XnG;VQmf)VOm/QDN
+lM]uIkQ'fEjoXZ*jSn0Yio/kSi8<GKh;-l@gY1B7f[na+f%&:"e'cXkqc*Sq!*&kps&B"sqbmDl
+r)E\r"B8;t;cEZns%s/%9N+nh;,U7h;,L9j;ZB\p<;fhq;u`]pV;5&K;#s!NrBUTS5sR_#5Q3nO
+5<V1o1c5%ds"jd82)Y@trB:3Yr)3PnqD\O:3][!qr]9s;!]N,#rAXa9rAP'C2`<QO2E!KP2E1Ro
+!]N"qq`"+)rAXa7##eK$<`W:'q_nL4rA4L3q_eF5q`+I3!]W+trAa[5s#:'?3&pn9!)iVirDNYm
+qGmJpr)Nbt!*0"roMPNaq,78mqbuNSs&/o!r)Nesr_rhrr`/\ns&]2"qc*Jnr)WbrqGdDns-ikT
+rga"ZrLX%]s.K@b!a&T.r`];*r`TG-=BJ^/rEB2'q+gob!_uNerD*;er(cWToM5G?s4[P/rn[V2
+s53h6s5F";r8[e;s5j.?roa:EqW\"ErTj@IrpBaRqsXORs7-$Xrq$0^r:U'_rqH?crV?HhqYU6h
+qu-'aJcC<$aT$b~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:L<FdE]qWa2GmpVZ<UlVZEadrUB^QrpKdQqs=@K
+rp'IHs60LGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^%GBCcf@JL%eC2mpdF$>;RKAnER/30EQN*<N
+QMd*HQMm'VT;SQ_UnsobV5:)erhodq!3?+#riH=+YHF^tqiLf<s,R&;r/CZ6pl,00!KE!8=TDY'
+>Q7t.?2n==?t!JO?!U]??2In+?2\%.?2n72>6(MtV?*Nkq-3Ss!*T8(!a/]1r`]D,=o;J'>6A,6
+=]t`*"B\`-=',<#!a&T.r*')%qH<c#r*'J2WiN5$X/i7(=o2=u=oMP'=8u;$=8l7t<<Q?&<EE9$
+<WH5!<rZ8$<W6&!Mtr8/Mu9p[[/RH5[f3c:\bM<]P5(4CPa.Q#q3V)JqjI;Ls-rtWr1!\S!Q)bQ
+_>qLJ_Y:tF`;[aSa8a6[aoBN\bQ#fcc3VbCd$U2gR@9TBS,]#YSc,/[TDPPkWN*#"XKAZ(YQ(j(
+Z2`,JblGudbQ#]eaiMNBrPe*@rPSZPqSE'Ern7G.gt_nbs5*e5rS[_7s5Nt:roF+@qr[k?roj7D
+rp'LKqs==LrpK^Qs7$$Xr:9mZrq--]s7ZHdr:p9erVHBfrVZTlnG\"=JcEjlJ,~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:L;fT:MRES=>uFL&HZ*L%5-2qsXOPrpBULs6K[L
+rTX@Gs6'CDs5a7Aro=%<!9*q8!T2c5h#Z<crn7q:f[na+e^W*te'cXkd"6k#rI=ltr.+`qpjW6m
+rdOcps*arrqgAEl"bVDYK7nmUK`Hf)L&?Z+LPGe`"GinMI!km>pj2j`s*4Ed!dK!9rHJBXB2AM'
+s&B"s!`Drpr_rhr"]JB";cH`k;uT\n;#jMl;>Z"IK8&ejq+grcrD!Vo:/+JY:f'n_pJ1EVs%`Pe
+p.bH[!_nE)rJ1H/rD!#[rC[5d91qtW9E.]b9*%^ZrCd8e9MG@Ws%NGcr_366r-&'`!-n<ur/LZ8
+pjMmcoR?jkqLSWts+BfmrIY*'re(68rK@8HPO=\4Q2d-MQ2[$IQ2HsHQi36IQiEHQRK&`RS,]#Y
+Sc,/[TDjiJNr>%9OSb.CP*_N$QMd$JPkUC@P5UO0P5:=<OT*r8gYCT`h>c@3hu2L5iW%p8j8S->
+jnn3=kPj]Bl2KuIlhg&JmJcPOn,MnVnbhtXoD\C[p&Fabp\agcq>L0dqu-HjrUBf;s+13ls*t~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:U(m!E`M(=9Mc+<)QWl;#sSbrUB^QrpKdQqs=@K
+rp'IHs60LGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^%GBCcf@JL%eC2mpdF$>;<Vobo;ts5j;uK\p
+<W?%q;uTZ(;bL(h;c-Fi;G^4h;H*Qm!)rhqr`')#;cBNghGOA42>oWI5sdq)5X@Y"5X7P!5!D4&
+4odhF55m\G4?E@;s&/nWrAjj<pGr75s#L*=pbr=82`EWQr\a^7rAad:rAXj;2E(Fko/?M*#<#L[
+<E<.%=8OoV2Z5H42>]962`NcWr]'d6!]W+tq`+L4"#r;#3;tr6;?'Mr;c6Iiq,RDpqc3Smnko?`
+qG[;kr);`Wr_rhur)No!;H$Nn<;onm<WQ9&r`/kqqc3Sqr)NSmr`/ucs-`nUr1!_Vs.0+[s.B6l
+s&oA*rEK5(r`T/&!*T%kqbR/crD3Aelqd7Krn7G.gt_nbs5*e5rS[_7s5Nt:roF+@qr[k?roj7D
+rp'LKqs==LrpK^Qs7$$Xr:9mZrq--]s7ZHdr:p9erVHBfrVZTlnG\"=JcEjlJ,~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt13AcHF>M`5BIdVZEacqX=FOrpBULs6K[LrTX@G
+s6'CDs5j:Aro47CiSi_Qhr!;ih%SSug=k64f[na+e^W*tda?Ihd*MZZs-`kRs-N>Cs-E_OqNq&E
+r07V]Vl$AgUnsrcV5F3h!i`,uriH(#!jAc%r/go=!06r9pl,62r/;#EN/*.AJ:N&pG]n<0<s;W+
+=-]&:rg*hWIsulu?=3\;s',_5>[:WA?2e(5?!^iC>c":rVZ3IpVl3g(p0%H!r`];*r`T>*>Q.h*
+>6nM=>$4s.<``B#=Su8!<rZ8%=o;J&=Sc2!>5VS2>,nX)WiN2#>$:`)r)ru#s&]5$!*B/#qc*c"
+<E3+%r`0##r)Wi!s&Jqsqhk?1qQp1.rj;g:\@DO#rfI#>qNCT:!L/lJQN*9QR$X0=R.m$HRfAlU
+SG\iZR[h73_u7FP_tCn@_u7OR`;mpVa8a6[aoBN\bQ#cec-H=7!13VNs-`nUr1!_Vs.'.]q5=Ls
+WiN2%XfhZ,ril=*rm(Mfs31Gb"j4s/aN)=!`W*mS_t(bE_uIUM_>M+Kg&B\,gYCT`h>c@3hu2L5
+iVqj7j8S->jne-=kPj]Bl2KuIlhp,KmJlVPn,DhVnbhtXoD\C[p&Fabp\agcq>U6equ$BirUKl<
+s+13ls*t~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt12dSXuCBS!ocCK`Qp^re(<+nG;VQmf)VNm/QDN
+lM]uIkl9iFk5XQCjSn0Eio/kSi8<GKrnS=EgY1B7f\"g-f%&:"e'cXkd*U*jJbFWnJ,"KmIfOro
+J,artIJ\EkI0+kMK)L<%K_^<&L55b_reCW2LPV^QrHn9bpj)ma!."Nf$YsHhAn>I]?X6o@>l%4q
+Fo?IeG[k/l@oW;&r)!Po;,L9j;?;H'rIb<+Kn`B!r_E)]qG.#a##7rh:JOVYr_<GfrCd2cqbHl[
+s%`Pep.bH[!_nE)rJ1H/r_<)[qF^f^rCd/ar_!;d92#7X!_l?^r(I&`s%E5_!-e?arc\?epl,-1
+s,R),rd=TkqL80gs*jor!.b$!rdt$"oRd$ore1<("-\t6P5^XHP`q="PkgUBPlI$EQ2m9MQM[$H
+R/`TSRf&ZTSH#,[T)=THNr>%9OSb.?P5^gJQMd$JPkUCAP5LI/P5:==OT4#5g&g$ah#?.0hZ)L3
+i;_d8ir%j9jT"?<k5OQCkkjWDlMg,Im/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*gqYL*er;?N`
+rdk*#s2k:k~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt9tk!a/W-r`T5"r_i\l!E/F`n,DbSmJH8Mli-2J
+l2TuIkPjWDjo=E@is4T&iS`YOhqn@g'\qHsg=b-2f@SU(eC;sqdF$=fcW:$Fpf.5kpeh/l<)icq
+rD`Mi$qaMu<)QRj;Gg=i;cEZn!)rhqr`',$;cBGg;<1Ua3&NQM1GLU;0.eb.3]d4$!'9sFr\OX5
+55d_F56!eG4q'S:4$,Sf4[(r*;,U?l;ZB\q3W1r:3Vk]82u>T62ubf92$Gls2`<QQr]'j8r]'j:
+r\ss<2E(Fko/?M*#<#L[<E<.%=8OoV2Z5H42>T622uku<3;YW93&`en3;b];3&rrXr&Fa:rDESm
+s&8qqpf7;orDihpq,%,gqGI2hq,@;mqGZHSs&/u"=',<#!`W&rrD`brp/_/mrD`VnrDrhrqc*Pp
+!13VNs-`nUr1!_Vs.'.]qcNl$s'#A*rEB2'r*&ehqbR/cr_NGelqd:Ls4RD*!o)Mcrn[V2s53e5
+s5Et:r8[e;s5j+>roa:Eqs"+Frp0LKrpBaRr9sXSs7-$Xs7?6^r:U*`rqH?crqZQiqYU3gr;H0b
+JcC<$ao?k~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!mJd,rkecR_#1)1VZ!FmW;c8amf)VOm/H>N
+lMToHkl9iEjoXZ*jSn3>iW.s:i!\H!hVI#CgY:H9g"?;U$eEkXeC2jndEp4bRf8`PQiNKOQ1pU?
+QhZmEPmin@SYi9^V50rbVPU-fVuN[rWN6$"riH4(O8Y1>NrY4;NVJJ1M[5E)MM6b7IX?D?G6W;E
+JU`3$JGaosJ-^USJR2Ve?<pe7>R+P>?!UcA?!dM8#?tA:?!1:+V>[7mV5L6e>PVJ&>67u4>Q.n-
+>Q7k,=oDD%<r>qt=8c7u=8c2!=SuA%=Sc2!>5VS2>$7o-WiE,">$:`)r)ru#s&]5$!*B/#qc*c"
+<E3+%r`9&#rDrr"s&JkqregZ4"L>A>Za0S:rj;[4!0?o:qiUf>plk`Bs-<VMs-NSLqO.>MrgE\Q
+qO7MSS,L2(_u7FP_t1b>_Z7XS`;mpV`rO3ZaoBN\b6Q89c-FY]QBqN:rL!SPs-inUp8A7rWiN2%
+Xfek2rNQ:+r6G;d!6kAa"j4s/aN)=!`W*mS_t(bE_uIUM_>M(Lf\-8Xs4dS/rn[V2s53b4s5F";
+qr@\:roO%>roa:Eqs".Grp0LKrpBaRr9sXSs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcC<$
+b5Zt~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!hPpPrgEnUQ\>9j!/CK+s+UI@rU0[Pr9XFK
+s6BOHs60LGrT41CjQ-=#s5F%;rnn1AhVR)EgtUT;g=b-Xf*p6\eC;sqdF$=ec@UW@JGt&nIeeKk
+IK4fnI/eWpHiebKK)UE&K_^?!LAco*HhVj]H2VspGA_/.AS#=Y?<g_6>lS7C@:E_U@:NbV@UinW
+@q8O6;?9]or_X,&;,U7h;Gg:h;G^/BKDgH)K8#$Y;"[WZ:'49e9hkU^r_</]s%WDdpJ(Z_r_3#[
+r(d8d!/LN/!/LPJpItBU!)3>as%NDb!_c6[r_*;dr_38`s%NGcq+Ud2rc\?epPf*2!K;F*IJ\Eh
+IJeQhJ,OipJ,b$!Jc12sKD'oqKDpQ(KDq)7PlHpHP5pjHPOOh4Q2HjHQ1UC?QiEBNQi3<NRK&`S
+S,&'CNr>%9OSb1<QiEBLQ2HmHPPUI?OmJ8-Oo1:Af\-8Xs4dS/rn[V2s53b4s5F";qr@\:roO%>
+roa:Eqs".Grp0LKrpBaRr9sXSs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcC<$b5Zt~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!EiP(=TVc0=T28";uT\o;#sQnrpTgRrpBXM
+rp0ULr9=7Fs6'@C!p/M(ro=%<!9*q8$fBgth;-l@gY1B7f`'J3f%&:"e'cXkd*L!<<E8ior)<Ag
+!E2tp<W#hk;u]`!8Q/Pe;c3Nls&&epr_ibprD`br!)rkok>E?\2)R3G1,1C6/M/S-1c$mA1GgmF
+1G^jF2)I0I5!T$1rB1TR4$,Jd4Zbbi4Zbei48q5@;Gm?i"B8;Z2`LFis#9s;!]Dtrr\aU3"#r5!
+3;5B23;kl:2uko:2Z,N*2Z,N62?d&[<`W:'q_nL5rA4L3qDS@5!'1$<q_nR92`LRmrAOg<3B0"t
+3<;0$r\t*Z;GpFl;H!6hr`0#!oMPTar)*Aiq,78mqGZKTs&8nts&T5%<W6##<)QZm<;onl<rQ+t
+;up!"rDibrr)NVns&K)brg3SNrgEeTrL<Ras&oA*rEK5(r`T5(oM59ZrD*>fr(cTSohGP?g&B_*
+g]-(.h>c@3hu)F4iW%p7j8S-=jnn3>kPj]Bl2U&Jlhp,KmJlVPn,DhVnbr%XoDeI\p&Fabp\agc
+q>U6equ$BirUKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\$M2E\`5BL0^q[X]rMKXmr20OnrpKdQqs==J
+s6BOHs60LGrT=.A!9F+=!oi1trnmh7hYu=3gtVh^"khP[f@JLOe-jaRdF$=ecH_iGR$df<r0@)D
+p6Y`Ds-<SLs-<SJ%[3'=SYi<^V50raVPU,drMK^rW2fiuriQ-\!frA%qMk6.'T83<O,SjJJ:Dol
+G^"CXK7ST(JV!fM$A!\WJ:<$"JmDYgrEL.E>[:ZB?!LT=>?bB>>Zt<:>[r,CV66ZmVZ3Rm>Q.e-
+>?kD2>m">8=^1l/$X$S8>$4s/<`W4#<r5ks<rH.t=8c/)='/R->$>-6r`K#"rEB,'$!LK4XK&;$
+W`iR&=Su>#=T;J&<WH5#<r5l!<`N.$r)Nf!rDrr"s&Jbnrepf^"1,;>ZMq30[/Z0cNrkE(O8G%9
+Oo:I>PQ-mHQ2d-MQhQmGRJN<NRK&`PS,\oWS,C,'_u7FP_stV>_Z7XS`;mpWa8a6ZaoBN\b6,u5
+c-H6Ps-EYNrL!VQs-iSY#cXi)XK8P,YHRo/s0;IHs3:Sfr6#8daiMQD`r3mV`;IOD`;daR_YV+H
+_#N$eg&B_*g]-(-h>c@3hu2L4iW%p7j8S-=jnn3>kPj]Cl2KuJlhp,KmJlVPn,MnWnbhtXoDeI\
+p&Fabp\agcq>U6equ-HjrUKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\$M0gYS!oe5Q^*hhr.P-*rIb0)rpKdQqs==J
+s6BOHs60LGrT=.A!9F+=!oi1trnmh7hYu=3gtVh^"khP[f@JLOe-OOOdF$=ecH_"?JGaorJGt&p
+IeJ9iIeS6hHO,%OK7\]-KS,$UL&Zl-L]3&-L])Q"HMi'eHM;[mG]7S;BkV'f@UEDFr`fG6raPn;%
+:NaVA7B"X@:NeX;c6Qg;ZBT);Gg:h;Gg7f:Jb)%EIEIlr.P*(rD3>dr(m>f!)<>c!DcJg:%V-Y:
+&Ri]:&duf9_M3Y:B+#gL]*#/L]1$B9_h<]9`.N`9`@Zd9M8%X9E7fd9`7Wa9`I`d9M>:WrCd07!
+I0OsMunucHi8BgI/A?jIeeKlIf=ipJ,k0!K)L>qK):0#K`6W&PQ-mIP5g^GPl6g9PkgUCPlI$?Q
+N*<LQ2d0LQi3<ORK&`MNW5%:O8G%:Oo(LFQMd$HPl?mCP5LI/P5:==OT3r5g&B_*g]-(-h>c@3h
+u2L4iW%p7j8S-=jnn3>kPj]Cl2KuJlhp,KmJlVPn,MnWnbhtXoDeI\p&Fabp\agcq>U6equ-Hjr
+UKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\!;$.l"^5&2=]n]&<;oeo;#jMnmf)VNm/H>N
+lMToHkl9iEk5XNCjSe*?io/kqhuV`lrnRV1g]#n1g"=p.f%'cL#Lh,KdEp4bcM^`9;u0Dk;ZKen
+<W,nn;u9H$92\_g;c-Fi;c-Fj;uT\p;uK\p<W>qq;ZBV_;@5HE3&NQK1GCF6/cI@01c$mA1,LgF
+1c$re2$,Tm2?#f=4WcaJ4?GVf4Zkeh4?PYc3BB5`3BKDm7S-HT;H$Ik<)``Tr&4U6r&+L2rAFd;
+3&`cUrAXa7p,Dt1rAjj:!&sj7rAX=+r&=X6!E<(u<WH4u2ZPc71]TE02ZG`:3W;#:2ubi=3B&nn
+3;kcA3&rrX3]T5^3Vtf8;YF)k<`8Qeqb[5grDN/am8X*cr)EYorDrr"s&K&!!`W&rr)E\rp/_2n
+r)<\s<rH%r<r>tq;ufqrQ2d0LQi3<ORK&`L=T;P(>5VV(>5h\)>4YMd:]=,f:]*uS:\@K_fDsV(
+gAfq-h#6(/hZ)L3i;V^8iqqd8jSn9<k5OQCkks]ElMp2Jm/HDPmelPRnGi%Vo)J=]o_eC^pAXga
+q#:*gqYL*fr;?N`rdk*#s2t@l~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s76E7`5BL0_#;"JV>R4kVZ!CmW;c2]m/QDN
+lMToHkl9iEk5XQCjSn3>iW.s:i"Y)*hVI#CgtUQ:g"=s/f@JL%eC2kFd0n=IcHa\&R$a5,QBqE5
+s-E/@s-ESJs-E\MrfdGIP5^RLS=c^VVkg,cVZ*FjVuN[qWVrprO8k79NV\V6QP#CBNerICJ:2ci
+H$X[eJUi6$rdPK1IsulsIXZm!?<plB?!U]?r*9A/?=*V8s'6(;>?kHHIZp\5Y-+k,V>I+iVu9d!
+>Pq\)=T_c/>$Co."B\`+<`T&ur`&r!qc*Yt=8l>!=8c/)='/R->$>-7r`K#"rEB,'$!LK4XK&;$
+X'/['=Su>#=T;J"<r5ku<`N/s<WH5"<WQ9&r`/Vlr3?@0ZMh--Nr"h7OSk7?P5:CBPl?sIQM?jD
+RJiNORJNEORK18'_>qLP_>qLB_Y_4N`;[^U`r=$YaSj6\b59?dbg"CrPE_=0Q2d0MQi<BBW!oZ*
+X/rG*Y-5%5Yd(J/cMu/hbl#Wfb/q`Ga2\(ss2=iQpVd*NrknfSr5/<Hr4iEdf\"mVgAfq-h#6(/
+hZ)L2i;V^7ir%j9jSn9<k5OQDkkjWElMg,Jm/HDPmeuVSnG_tVo)J=]o_eC^pAXgaq#:*gqYL*f
+r;?N`rdk*#s3(Fm~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s76DaS!oe5QMm'LK7s2W!JZ=-KE-`*mJH8M
+li-2Il2TuIkPaQCjo=E@j8\*=iVqaLhqm5Gh;$f?g=k64f[na+e^W*tdf.W!d*L"_c%1Cqr."]r
+m!o%ardFQhr-JKmIY7WO!J?(#K`Qp`rJ(5rqg&-dqKWTmEGo`0B4YXa?s[,D?<^q=@L$CP@UiqY
+@:T:G!b>e>r_i_opJV#g%T$#!;,C+jATN?SKS+l-qLej&r_3Dg:]=,h:&Rie:]F2g:&duc:%V-Y
+:&Ri_9`n-b:/:d^p.bK\r_3BJr.tAIp.Y9T!)3;`!)3Ab"&)?\9`7]c9`7Ta9`.Q]9`%K^Mtr>2
+HiJHnIJnQnHi/9hIK"]lJ,FcpJ,4]qJbk#pK(afsPl?mGPlHpHP5pjEPOk%7Q2QsIQ1C7@PQ-mF
+Q2d0MQi<?PN:i/1Nr4t8OSt=?QN3EPQiEBMQ2HmEPPgUAOmeJ-Oo1:Cf@\a/rn@D,s4mS/s5*e5
+r8@S5ro3k9roF(?qr[n@s60@Es6BULrTsONs6fjSs7$$XrUU![s7H6^s7ZHdr:p9erqcKgrVZTl
+nc"+>JcEpnJ,~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s7?4m!*]>(s&oM'<)Zcp;Z9Mn;Z?(\m/QDN
+lMToHkl9iEk5XQCjSn3>iW.s:i"Y)*hVI#CgtUQ:g"=s/f@JL%eC2kFd0.hBcHa]6<:*W`<;T\q
+<;9Df;?f`e<`;sp;>a>l;uTYp;uBVo;?'Pm;?'Pm;u0Dl3r_2>2$5Zk1,8b\#qmnf1,:R>1c.)h
+1BfWm2Dd<Lr]^?F#<k434?Ybh48q8@48q>O3]T5]4?Pkr7nH9C8Oi\W"B88s;cEZQ!B)h52?5]6
+2uko:3;5B32YK*/3;kl:2uko92Z5T+2Z,N62??cWr`0##q_nL5rA4L3qDS@5!'1$<rAXa9!'0g6
+rAXU6s#L-?q)ACT<qoYp;Y*c_;#O8i;Xm]R<;fhq<;ohp<rQ2#<W?)%<E)jpr)E\rp/_2nr)<\s
+<rH%r<rH%q<<&0^Pl-gHQN*<NR/^=^=T;P(>5qe.>[(G0>4GAb:]=,f:]*u^:]F8d:\@Hbf@\a/
+rn@D,s4mS/s5*e5r8@S5ro3k9roF(?qr[n@s60@Es6BULrTsONs6fjSs7$$XrUU![s7H6^s7ZHd
+r:p9erqcKgrVZTlnc"+>JcEpnJ,~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp<a`5BL0_#(kIV5F3h!2f^ms/>n_rp0RK
+r9=7Fs6'@Cs5j:Aro=%<s5Et8!T2c5h$2ZhgY1B7f`'J9f%&:"e'cXkd*L"_c-=J#R$X/*qN_)H
+n!F'?rK[DKrg!MJs-*ADs.01e#cFMpV5C,dV5F6is/6.$X/rC`NfX1"s,I&;rJg`6s-FRcOH>EW
+LOsu#H[0m]K7\])It<'!J:;uurdXs"ra#S0r*9S7>[:Z@?<pc>qcs;3G);^fX9#?%rN$%"V>R1k
+V5O8q!*T;'!*APgr`&r!qc*Yt=8l>!=8c/,='/R-=^#$6=]ef&=oDP%>7"J9X/rA%X/fE,qcNc!
+rE0)$qc<So!`i<$rDiu"<`f6#"BSW(?![)'rNZO3ZEoPdNrP.?Nr>%:OT(CAP5CFCPl6mHQN!6H
+QiNQRR/NEQR/WNQRf&ZRRKAtq_u7IP_u@OQ_sYD>_Z7XS`VmjWaSa0Vb5oi3rf[8Es-3JIrg*#O
+"0&<$XT#=(Y-5(6ps/l`s31Da"j4s.a2c4!`W!gR_th7L`W*mV_u.CJ_>M+KfDjJ'g&9Y)g]-(-
+h>c@3hu)F3iVqj7j8S-=jnn3?kPj]Cl2U&Jli$2MmJlVPn,MnWnbr%YoD\C\p&=[bp\agcq>U6e
+qu-HjrUKl<s+13os*t~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp<aS!oe4QMm*KQ2uVkr.P</KnP,5L&LB;
+li-2Il2TuIkPaQCjo=E@j8\-=iVqa9hqn@g#2Itfg=k64rmq_4e^W*tda?Ihcd'h\c-1`hrdOrt
+J,OoaJ,autIIMUcIY37OKE$T*L4oGX#DS"hL5'u!HMVpcHMi$rF)c/:Ch[QpA78eMr`fG4raQ%>
+@prpG@g$7N@q8O;;ZBYr;H*?gqG@>n?u'ucK):*!JGb'%KnG*X:&n#e9`Iie:'+-b:&[i\:%M'X
+:&drh9htFWs%WVi9MG.Sr_EDd!/LK.s%W2\q+C]]r(@#`r_!Gh91qrP9hkU\rC[;f91r/\9DhK[
+9E0qJN;S&&I/eQnI/J?hI/\QnIeeKmIf=ilJH(3$KDpK$K*-^XK7`cK!ecc%rfd>Gs,mGIPa)!-
+o9B-;rKR;HoToK>rfdAHrK[AJs,?T0!07#=qiLf>s-NYNs-N_NrK[8ErKI/Br/pN4oo]06s4@;'
+!87>)s4dS/rS@M1s53b4ro*k9r8[e;roO%>s6'CFr9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`
+s7cHdrqZQiqYU6hr;H0bJcC<$bl<1~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp6_=]nr,=U826=]eR#<)cfp;ZBSp;H*P\
+rp0RKr9=7Fs6'@Cs5j:Aro=%<s5Et8!T2c5h$2ZhgY1B7f`'J6f%&:"e'cXkd*L"_c-=I3<;ohr
+;YX2i<<#qu<;0Dm<;9Di;Z0Po9*\Ep<)ZXl;H*Qm!)rkp!)rhqq,./irDWVls#LiS3&`WN1G^^:
+/hS_.1GgmA1,LgGr\G9H1c@3L2EsAh4Ztti4ZY_f4?>Vg48q;@4:+)13BBAk77Tm=qaLQUr_`r"
+;GpFm2`L^qq`"F4s#0p9oeuk/p,Dq0r]0s;!&sg6r\sX2!&a[4r&=X6"]SK%<`W<!2ZPc71]TE0
+2ZG`:3W1r:2ubi;3Vtf92ZPi92uYi;56Eo,3]Zsp!`i<%rDikqo25B]r)*>ho2G-XqGmMos&/qt
+<W,r*=&rC&<E<.#;c6Qk;ufqm<rQ+s<<$"t<W,qu<;fhp<;r'[PQ-mGQ2[*L=T;Os=T;P(>5VV'
+=o_@g:B"#h;#X8i:Amud:AI]a;#!iZ:B/rGfDsV'gAfq-h#6(/hZ)L2i;V^7ir%j9jSn9<k5XWD
+kks]FlMg,Jm/QJQmelPRnGi%Wo)J=\o_nI^pAambq#:*gqYL*fr;?N`rdk*#s31Ln~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3[!lMmjqnN0Hs/#Xk!2f^m!N>Aali68J
+l2KoHkPaQCjo=E?ir\6!iVqaHhqm5Gh;$f?g=k65f[na+ec+&.e'cXkd*L"_c-4ASR$X-6PlR-=
+QiEBOPm3J<Q'R`$Q2[!JPPgUDOUR_NVPg>gUnsrcV5:'fVuN[rWfR%;!0-r9s,I&;-^g?gP*(ib
+Lk^V7IXHHfH$G!nJpr3!J:N3$IXcluJV%67?X-lC?2e.3>[:\8>RXnE?!CTA?=S,5R&I(`X9,H&
+X8]+%WMlViV>[7oVcHl$=6N]a<<-(s<<-)!=8uA*=&r@'=8c/"=8l;+=^#$6=]ef%=oMV&>6nD8
+WiW8$WiK:s=T;P&=T;J#<r,er<rQ+u<WZ9%=8c/#='kl3!FB.,<rK<(Nr=t2Nr>%<OT(CAP5CFF
+Pa.Q"rKdDKopGQCrgNhUrL*kY_84"+rPAQPrPJTPm_]"A#/nEs`5T^8rQ"rZr5nfY!mHdhr0%&C
+s-*MKm&15iWiN5'Xfeh1YkQHBc2Z#cb6?&1aN)<?rl+lTr58EMqo/TRs24fPqSE*F!7q/$s4@>)
+rS%;+s4mS/rnd\4r8@S5ro3k9roF(?r9""As60CFs6BXMr9XINs6fjSs7$'YrUTsZs7H9_s7ZHd
+r:p9erqcNhr;?Nlnc"+>JcEsoJ,~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3[!h,LBrK[DK"IGL.K7s)Ts+CE,m/H>N
+lMToGkl9iEk5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe-sgSdF$=ecHa\YbKGD6IK4lr
+JF%dcIfFidI/\HuIY*3)JqJ]/LAHW(L&d#%H2i3jGn>+=EGo`1BkV'f@piYK>[:S4A,fsJA7K1[
+@UiqX@q8M9;c6OnpJM)j;Gg9i;$9m,CNb7)JcC9#J,Xm&K7nl1KS>)5:&RcM:%M'X:&drh9htIX
+r_<Mh9MG.Sr_EDd!/CE-oM#'R!)3;`!)3Ab!)3Ab!_c<_r_38`!DHGj;?0Yo9_qE^MuSb'HiAEl
+IK"]jIfOrsJ,"QoJbt&hKDpQ'P5pjHPQ-jNPEM)mPa(p+o9B6>r072Gop5W?r0%&Cs-*MKrJ^B.
+s,R)>qiLf>q3_2Krg*MJqiq&Cr0$u?ooem.r/^p0rn%2&!87>)s4dS/rS@J0s53b4ro*k9r8[e;
+roO(?roa=Fr9=7Hs6KULs6]jSrU9dUs7-'Yrq$0^rUp3arqH?crqZQiqtp<hrVc9cJcC<$bl<1~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3["'Si1=T2J%=9MN#<)Zco;ZBSp;XFDK
+s6BOHrojCFrT=.As5a.=!oi1trnn@FhVR)Egt^Z<g=b03f@SU(rmVA*da?Ihcd'h\bfe1.r)3Ai
+s&AMgs&B"sr_i\nqbmDls&/kh#?"N#;c-Fj;uTYp;uT\p;ZKem;>jDm;u]bq3sn#/3Ar]O1c$j>
+0`<U31c$mA1,CaC1c7*Jr\X[6r]gEG(-XfB4$>Yg3]fJd3]fA_3]f;^5=._+qF:KTr^QoV"&Vrn
+;uTYt<&cfq2Z>Q62uGT52uPZ.2ZPc02uGZ83W:u<2uGT52u,B22?#N32ubc:;cWft!EV2W2ZPc7
+1]TE02ZG`:3W1r:2ubi;3Vtf92ZPi92ZPl956=)23VYQ9<`N1#r)3Gis&/YirD<Mk!E)ej;Y3oV
+<;T\n<!$*#<W,r!='#<#s&K5%;c6Qk;ufqm<rQ+t<!H?'<`N+!<W6#"<E/osrD`fZr0%&Cs-*MK
+r)iu%o2u#qr`]>+r`T>!:[q3[:]F8k:]4&e:]*ub:]!u`:]*rf:]*rff)F;$fDsV'gAfq-h#6(.
+hZ)L2i;V^7ir%j9jSn9=k5OQDkks]FlMp2Jm/QJQmeuVSnGi%Wo)A7\o_nI_pAXgaq#:*gqYU0f
+r;HTardk*#s31Ln~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y!Q)YM^\knIV#[CkVZ<UmVuN^qlMToH
+kl0cDk5XQCjSe*?io/kqi;_[7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;)"cd'h\bfe2PQ^7E3s-E/@
+s-E\Ms-*YOQBmc"rfdAFq2l)USY`6]Vkg,cV5C)crMT[os,R,=s,I)=qhubfQ^<ktO,SmLJq8E"
+G^4OYK7\Z)IXm!!Jpr2uJ:W5W?XI(:?2e.@>[:WA?!U]A?!:TAAp9-&rN,suri-=)W2QSiUnOKV
+Uo"!ds/5luk>qR^!*8qrr`B,%"BSW)=',?$!*B/%#$G,6>?P'1q-!]#r*'G1=fSR(WiE,#nlYlm
+r)WYo!*9)!r`0;)<``=&?=$uFr`oM1ra5G$rNcH-rJ^f;rf$u>NK*msrK$o>r0%&C!L/lFQN!6C
+R/*0FRK/iV_>_@O_>qLP_Z.ON_>qFF_Z.LX`5BL2`Pojq`rO3XaT0K_b6,o1bE)Xas,m5Bl)4id
+WiN5'Xfel#cMu/hbl#Zaaooi-a2Z-u`W!gS_u.IK`W*mV_uIUK_>_4PeCE.$rn%2&s4RD*rnIJ.
+rS@J0s53_3s5Et:r8[e;roO(?s6'FGr9=7Hs6KXMs6]jSrU9dUs7-$Xs7?9_rUp3arqH?cs7uZj
+qYU6hr;H3cJcC<$bl<1~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y!1<\L!LB)NR/_d=K_gE&K`?c+lMToH
+kl0cDk5XQCjSe*?io/kqi;_[7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;"ucd'h\bfe2PrI4crrda?b
+s*jurpO)[]#CM,UJqAW-K`$N0KS>,7L3\&hGkcOsF`MJ@DJX'$An#7Y?sHr@>[q=C@fKpCARf4Z
+@prkGr_i_o!E)kn;@?E#;,U7f;,UG'CO#c.rI=ltqgSQns*F`urIb9,KS>-A:%M'X:&drh9htIX
+r_<Mh9MG.Ss%`Jd!/CB,pIt<S!)3;`!)3Ab!)3Ab!_c<_r_3>brDWYmr_iejq+L^F!fU#TmX+n\
+r-nBip4*-oqL\<krIk06rfmGHs-*\NP*2#nPkC74PlI$HPl?sAQ2m!FOT1I@P5gI=N:W&/NrP1;
+OT1I;R/`NQQMd$FPl6gDP5(18P4Oh7O9="_f%0iPs4IA)rn@A+s4mS/rnd\4qr%M5ro3k9roF(?
+r9"%Bs60CFs6BXMrTsROs6fjSs7$'Yr:9mZs7H9_s7ZHdr:p<frqcKgrVZTlo)=4?JcEsoJ,~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y"Bei/=]tZ)!a/](rDWVls%rkr;sNZG
+l2TuHkPaQCjo=E?ir\6!iVqd8hZ2O4h#Z<crn7D+f`'J+f%&:"e'e6C$..#DcHXSVbK<c];Z'Jn
+<:Eof<<#nr;Z0Pd;@Q;m;-$Up;Gg=i;c6Llr_ibpqGI,fr]:oV3&WQM1bpd?0.nk//i,@@0JG=@
+1c$rc2?#i=4UjG84$>Yg3]]Db3^#Mar]1*E5XYK>rC?fUs$[Jg77K^77T!&];c?Rl<)Yb9r&=O3
+r\sa5lSn`$s#L'<!&sg6r\sX2q_e:1s#'pW<E9$!!*B(W!&jd4s#'[3s#:!=rAad8s#:!=q`+U7
+"?8>!4[&[,s$-QKpc&FX<E<*b5lFU[;?'Pe;>!iZ;smWa<Vf\p<rZ1u<WQ9&r`/u!"'&8t;uT_u
+;cH^rpK%8nrDWr#<`W4"<W,r"<E)rs<W5qtO8b7@Oo1C<=T;Oq=T;P$=p%Vu:f$UV!)NSjs%iSg
+rD3Aer(m,bpeUlar_NMg"4YlPf)F;$f`0Y(gA]k,h#6(.hZ)L1i;_d8ir%j9jSn9=k5XWEkks]F
+lMp2Km/QJQmeuVSnGi%Vo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s31Ln~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!V+#'^\kkIVZ*FiVZ<UnVuN^ol2TuH
+kPaQCjo=E?j8\*=iVqd8hZ2O4h>c71g]#nCg"=p.f%/C$eC2jndEp4bcHXVXbKJ%qr0R>Is-N_P
+o9]HB!1!PJs-<SJ!L&]>OoLs[Uo(#eV50rbVPU,drhodVrJg`6s-XFcP*(faLP:;0I=-?cH$=Lb
+rdk*"&Uo4ZJUi6#JV%07>[:ZA?<pq;?2n72>mOY@?!UfSJWlu0XT#7!W<B/tV5:!cUAghcT`Ld^
+r20Lls&\Aap/M)nr`9,&=8l5#=8c/"=8l;+=^#$6=]ef%=o2D&>6.o1ri?(!s/Y]mr`B"uqGdMr
+r`/qu"'&]9?iF@4?XE_;!+,S1qc3\srNcH-s'5S`"H8>"N/[aqrJpo=!0I,@s-!AF!L/lFQN!6A
+R/<<HRfAiZ_nj1+rkn`P!5ncP!5nZM!5\?Fs24iSrl"lWrPnoZqoJi\rlYAcNfO(!rfI/Bs/5+[
+#-"W'XKAV-oZmK]rlk>as2kGcaN)=!`W*mS_u.IK`W*mV_uIUL_>h:Ne,Ihue^i=NfDjM'g&9Y)
+g]-(,h>Z:2htu@3iVqj7j8S->jo"9@kPscDl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agd
+q>U6equ-HjrUTr=s+13ps*t~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!V)KTQ2d-MQi*3NK`6T(K_gB(KS>-Y
+l2TuHkPaQCjo=E?j8\*=iVqd8hZ2O4h>c71g]#nBg"=p.f%/C$eC2jndEp4bcHXVXbKJ'*J+nKb
+J,XooI.)CaI"R$&rdt<+KnY3XL&ZGpGlN$uF`VSBDJNs!ARf7Y?=!P8!*fG4!+c(<$tEgY@q/tX
+A5Z?(;cNZm%T?8(;H$Fi;Gg7f>A%u)rdk*""FklLIt.EGs*a`j!d]-<r.P''j\>>?r_<Df!DQ>a
+:&[lh9h\7L:&g"HM"j[;9)qZ`9)qZb9)qZb9*J!`9h\Mcqc!Gkr)<Gbregc8rDN04!.=]ms*jlq
+s+(&tpON9prdk-$rIY'%s+:9's+L?'r.G'7rfd>Gs-*JI"I"t2PEbX%mZda:pm1r?rK$r>s,m>=
+rep]5s,Hl6rf$o<rf@#>rfQoAs-NbOr0@/DrKI8Eoo]'5oo]37!7Uqs!nGlQrn%2&s4RA)s4dS/
+r8%A/s53_3s5Et:r8[e;s5j1@s6'FGr9=7Hs6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZj
+qYU6hr;H3cJcC<$c2W:~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!:fke!*T;)##\;r;cHXnr)*Sn;H!JX
+s60IFrT=.As5a.=s5F%;ro!h6!8d_2s4dV/rn8.@f[na+f%&:"e'cXkd*L"_c-=JUbKBWZr`&nt
+r`8Vjr_rkrr_iYmo25ce92\bg<)`co!)rkp!`Muppeh&hs#UWM3B/lP2)6pA0J>%3r[n=/1G^a@
+rA4I2$oTq"1d=2f4[(qi4?`[+%6?R64$#Md3BKAh6:FBC8,Ga^77K^77R]a87Rd;Dr^?``##eDt
+;cG_9q`"I3r\s[3m5Oo%!'1$<!&sg6r\sX2q_e@2s#9s9s&8tur`0##r&4U6rA=O3q_eL73'$ps
+r\sj:!'0p9!]N8+rB1-Er'13H!^Ak4qDeIT!*0"`!'gBZp/(ig;>*oZ;t!]b<V]Vn<rZ1u<WQ9&
+r`/u!!`W)rrDWhs<)rWmr`/nr"]\T(<E)rr<WZ9#<;ol!<0!";O8b7@OoJMY=T;Oo=9Vi2>$5$+
+r_NSjnP0'[r_WVjrD*>fr(d/cq,$l_s%`Jf!D_,Ce,n1Of)F;$f`0Y'gAfq-h#-"-hZ)L1i;_d8
+ir%j9jT"?>k5XWEkks]FlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#
+s3:Ro~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'Yrpfj"qnN?4VPU,drMT[ms/5mqrojCF
+r9"%@s5a.=s5F%;rSRb7hVS7f!SlH/g'66_f[na+ec+&.e'cXkd*L"_c-4ASb/qa&R/30HR.cmG
+Q2m3LPlI$KPQ6pHP4Xn:S-Y[_VPg8dV5C-hV#[FjNW+khR@'A*OH>EVL4au'H['aWGB\RhJq8N'
+It!!!IsuluK4&"k?!^fC?X?uC?!gk9?2n46?#b[kX8]42XK&;"Vkp2bU8"EXU8"@[TE1aZrLX7b
+SXlUSV>d@lVuKi]<q]Mn<rQ/$=BG<!!*B/%#$G,6>?Y-2q-!Mss&oB&"g"`(X/fY"=T2D"<r,hr
+<rZG-?=-uEra5Y2!FK14>l\4,?iO1,<W06'>Q7q/?!dDerf-o;!frG)r/po@pm1lFnsKBDpmV2O
+"N/*m_8?2hrk\ZQrPAQPqniBLotpaHrl"fT!65#Ys2b)Zs2kJfb)D=>rf6u=rh][nl)=W]"KJN(
+Xj-I_s3:Sfr6#8daiVWE`r3mV`;ION`;7IP`;daT_Y_1K^]Ms5e,Ihue^i=Mf)jUXg&0S(g]-(,
+h>Z:2htu@3iVqj7j8\3>jo+?AkPscEl2KrJli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6e
+qu-HkrUKl<s+13qs*t~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'YrpfuQ!1*VNqj@D:s+:<)pP&V1s6'=B
+s5j:ArT!q;!9*n7!oMkkrnRV1g]#n2g"=s/f@JLOe.C*WdF$=ecHa\YbKJ&MaFA^0JG=WoIf=cm
+I.)F^H4#"JJqAW,K7ei3K`6]#GRek<Ec>o4BkM$f@UEJH>Q.e+@f9gK@:EbYA7K(Y@:N56;H$Ol
+;uT\p;u]_r;,I6h"]AWBG_1PHJHC@NJ,XosI/nWnI/A6jH2DpfGm&eQK7npWL$VM69`.WU9`@`d
+:A%?\:'+-`9^b^UL\ur.<;B5]9)qZ`9)qZb9E.]c;?Bft<W5tq;uBPh;uKAgMZA_6;?0YgHiAEj
+IJeTnJH(,sJH(,uJH(3"K)U>tJcLH%K`?](KER!^KTq`#PQ$gHPQ-jMP*(rlPjjn+PlI$FQ33D2
+NK*ptrf?u7rep`6rf-c5rf$u>O,s4#!Ki`AR/`NQQMd$FPl?mGP4at6P4t+9O93kZe,Ihue^i=M
+f)jUXg&0S(g]-(,h>Z:2htu@3iVqj7j8\3>jo+?AkPscEl2KrJli$2MmJlVQn,MnWnbr%YoDeI]
+p&Fabp\jmdq>U6equ-HkrUKl<s+13qs*t~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'Yrpfkf!*T2&s&&horDWMirojCFr9"%@
+s5a.=s5F%;rSRb7hVS7f!SlH/g'66_f[na+ec+&.e'cXkd*L"_c-4ASb/qa&<;KVl<q]Pm<;fbq
+<;TVe;?Kci8k]+]"&Vro;uTYp;ts5i3sRf,3ArZN1c#%a.kNA+/M8e81GLU>1GgmD1c7-I2*X;g
+4[(qk4$>Yg4$#Jd3]]Ab3^,i!7f>jU7fPmY7R]cE7K>jT6iBCR6ULc;s&')!<)QUm<&cl52ZPc7
+2u5H"2to932uGT52u,B/2>f?82)\E5<W6#"=$?L@!&jd4s#'[3!]N)!rAad8s#C$=r'(-D!'^?E
+!'^<Fs$-QKr'('=r`0#!r]pKJ!^KX]pJLQ\o2G*Wr`/_m!*0#!s&K"u"'8N'<W6##<)Z`p<<#kt
+<)rWmr`/nr!``9%r`&hs!*0"t"BAE[NK*ptrf?tYqH3`"pfRJrr`B8*>$=f$:]O;]:&n)h;#a>i
+:B"&e:Adoa;"7<_daQ\Ee,n1Of)=2%f\+sUgAfq-h#-"-hZ)L1i;_d8ir%j:jSn9>k5XWEkl'cF
+l2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgbq#:*gqYL*fr;HTardk*#s3CXp~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X!5AEHqnN<M_l'C2V>[=lVZ3Rn
+VuZ#Yk5XQCjSe-=irA!:i;_[7hYu=4gtUT_g'ZNcf@SU)e^W*tdf.W%d*L"_c-4ASb/q`GnX/s8
+!1*GG!L/fIP5(1:OT1gYSY`6]VPL#bV5C)cr/DGMR[KP-OcYNYL4t/)H?sdYG^+dgJ,F`qIK"`r
+IMd]g?=$oD?!grF>[1WA>@(N>?>"YOWi`?$XU2&0Wi;qnU8+KWrLj1aqk*n[rga([S,SiXUo(!e
+V?*Srk#V1Us&T)"q,RJsr`B2(>5h_,=]kK&q-"&,=KAL(X/`2#qI',$r`B"urDaJ:?!UcC?!UcD
+?!UcD?X@&G?XE_;!+,D,!FAe*Z3@L;>?kE=ra,M]rf%&@O,oBarfR5Drf[AIQ2-aDQh-UCRJ`KT
+S!ofFRg>P%_SX.*_Sa:j_Z.OP_>qLN_Z%CG_>qLO`;[^U`r=$YaSa0[b5]Z`N;ee:Nr5aUVl?Z]
+W!96$WiN2Fc1oTaci25ic2Z#cb6?&1aN2EArPefTrPSNNqSiHPs24lRrk\QKrm:eqe'n<Gs4%,#
+rR_)%s4R>(s4dP.r8%D0rnmY3s5Et:rT!n<s5j4As6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?9_
+rUp3as7cHdrqZTjqYU6hr;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X"I5:=Q^@T:".>U2K`6W&K`Hf'
+K`L<6k5XQCjSe-=irA!:i;_[7hYu=4gtUT_g'ZNcf@SU)e^W*tdf.W%d*L"_c-4ASb/q`GnUUFb
+!.OlppjD[[qK`QtIY*3(JV/T.KnY26qfr-`&9;c/ChdWpA7AqQ?!:E9>[dS?s'Yn;qdTS8"B&/s
+<)`]m!`Mrnr_N_p=(QK)r.=s"#C_/OIXQTjHiABoH[9u5HN&0jG^'.1s+CQ.KS5&4L$VP69`7]V
+9`@`d:A%?\:B+#g9^b^UL\uu+<<#ns9_M*Z9`.N`9`@ri;u]_s<)lrt<;]\m;YF#h9DseH;Z9Sp
+HMMpdI/\QoIf+]iJGt&tJ-(:RK)C3!K)U<%JqNoQrIt68rfdAHrfdAH"Hnn2PEbL!ns'0>qNh)=
+rf$u>Mi7Ljr/:T6rf-c5rf$u>O,s7$!g/h9pmD)Ls-NkSQBqH6qiq)DrfZr:qNCW9r/gp*!n,QH
+rm^tu!7q,#s4IA)r7_2*rnRG-s5*b4r8@V6ro3n:roF+@rT=.Cs60FGs6BXMrTjUQmdC&Bs7$'Y
+rUU![s7H9_s7ZKer:p9es8)ThrVZTlo)=4?JcF$qJ,~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X!*B/%!*T2&$X6k6;Gg@k<)QXm
+;>X5kkPXKBjo=E?j8\-=iVqd8hZ2O4h#cBdg]#n6g"=p.f%/C$eC2kFd0n=IcHa\YbKJ&MaN4?[
+s&JbnoMtZcr)<Agqb[Pm9MA;`;cEWm!`MupqbdAT#Wat*2`3HL1,/\\r@\(*r\5NO2)@!D2)R3J
+2*X8f5!1ti4Zkee3]fGb3]oMh6q9g<r($cVr^HiV!(?cQqaCHNs$-WO5=,36"&Vrn<;obr<&jJ.
+!]Dnnr&3t%pG`.3r&4O5q)8%+r\jd6s&8tur`0##r&k'C48^u52?Gfs3W1r;2Zu6,5!M:056!bG
+55m_F55[YF5QF%E4odSA<WH+u5lX(J5kn4J;Y3oU;ufqo<;fhs<rQ+t<WH5#<W?)%<E)mqr`&kq
+!*/ep!EW>#<W5r!<E<-!;ufqt<WlE%<)lrsN;ee:NquiR=T2Iu=T)>#=T;P(;>a5j:[q0]:Jame
+:]4&f:]4&c:\moZ:]A`CdaQ\EeGn&!f)=5#f`0Y&gAfq,h#-".hYuF1i;_d8ir.p:jT"??k5XWE
+kl'cGlMp2KliQSBmeuVSnGi%Wo)J=]o_nI_pAambq#:*hqYL*fr;?Nardk*#s3CXp~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6op$!PlJJ_#M7U_54',V5:'f
+VuNXoVuN^pk5XQCjSe-=irA!:i;_[7hYu@2g]6+.g&]mZrmq2%ec+&1e'cXkd*L"_c-4ASb/q`G
+a2[\;q3V,Irg*VNrg!DG!0dAEplYE7"Hf4FSYc=_"JqojV5F3N&t55TP`h/fM2$_7I!g3aG]n=_
+rdPH-IsufoIXQ]qJ:N8[?X@(<>l\40>mahB>[DN5Vm*>*XT#=0X/rA$WMQDbUS+9Rr1EkX!hGjN
+rgF.]R$X/)QBn>DV>d@lVZ9f\<r>qt<r>ts<rZ7r<WH5#=92Q.r`]D+=SZ+q=p8&2=KAO)ri5Ns
+ra5\3ra5S0r`p"??!UcD?!UcD?X@&G?XE_;!+,D,s'G]1"gM99>[1S5?N,o_NW5%=O8b4@Oo:FF
+PE_;sqj.)FopG]Gr0mMPs.',,s2+fP!lDjmrke]QrPAQPqni?KpVI!L`5V_orl+iVs2b,[s2kAc
+MZ/P6N;0=NWV3:jWVECrWN*#Bbg"E1cMPrecMu/hbl#Wfb/q`Ga2\(ss2=rTq8E-Krl"iSs2+fP
+rP8H[rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%A/s53b4ro*n:rT!n<s5j4As6'FGrTOCKlg+N9
+s6]jSrpTmVs7-'Y!qZ'Vr:U*`s7cHds7uZjqYU9ir;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6frRrg*YQQi*3RR@9OsK`6T(
+K_L3"k5XQCjSe-=irA!:i;_[7hYu@2g]6+.g&]mZrmq2%ec+&1e'cXkd*L"_c-4ASb/q`Ga2[\#
+q1&<jrI"TkqL&'bqK`9kH?sskrdt-%s+UDrs)eZhEGo].BP(db?srt=!Erb,@fBm9@K0g9A,K71
+;H$Ik;c?Okr_Wi*E.<OnKDgE%Jc1$#I=$?gI//*eH2i*kGBS.RrcSQiFE;MVK7ei1re9]5r_3;c
+rCd8e9MP=Vr_3AfohGE\s%NJeq+Ui_pItXCreLT1M#:6C;u]hs;u]_q;uKSt;c6Lm<E9#tr)<Mk
+oi(gIr)3Jl!.+QiqKr9krI4]pq1/Bms+'lq!.t0#!eQ&Wr.P!%rKR;Fs-3MHs-*YLOctunqi_#C
+oons2!1!DH!/gc6s,?i5qMP<2s,?r:qMbE5!fi>&rfI)FqO%5L"IPOBQBqK7qNUuCrfZr:qNCW9
+rK.'+rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%A/s53b4ro*n:rT!n<s5j4As6'FGrTOCKlg+N9
+s6]jSrpTmVs7-'Y!qZ'Vr:U*`s7cHds7uZjqYU9ir;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6fqir`K8*=oDP&>Q7S';,U=k
+pJV"Qs5j:ArT!q;s5Et8s5*h5rn[V0!8IM,!SQ-)f)aIQrmV\3da?Ihcd'h\bfe2PaiMQD``,o;
+<VBJh<W?%t<W,nk;ts8e;$^&o9M88`;c6Qn;?0Yo;?&]]3]T/Z2E(Oi!AQ5+0,#rk1GUdB0ekI@
+1G^jE2)R3J5<o-1%m)p;4$>Ye4?>Mc5!qh38GYgV7fGgZ7R]d66iBCY6UF((5X@V"62EqJ5mBS=
+5Yt<T<;obr;`OA-!&jd5r\j1'pG`.3r&4O5q)7h%!E<(t<r>)\4T.A;49I`15<o-2!^/Y.r]U<H
+r'(-D!'^BFs$$?Fs$-QKpce[X!*&q_s$-HIqbd,dr_`VloMamOr)Nbtr`/nt$!1,+<E<.#<)Z`p
+<;oer<V9Dl<W5tt<WH/!<!--$<`T,u!EG$VMuSb1=8Z1q=o;D#=8uA*=]/-p;>j>k:[q0]:Jame
+:]=,f:]F2c:\mo[:]Jf@d/qbFe,Iksec45!fDjM'g&0S(g]-(,h>Z:2hu)F3iW%p9j8S->jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr"[oCV\Qp&Facp\agdq>U6equ6NkrUTr=s+13qs*t~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpTj$!PlJJ^];4L^]gR4Vkp5e
+rhoams/5mq"/k8AjSe-=irA!:i;_^7hYu=9gtUT;g=b03rmqt;e^W*tdaHOjd*L"_c-4ASb/q`G
+a2Z*cQhm$JQ2d*KP5pdFPPgU=Oo(7>OTq#>S>E*[VuEM+VMpt2R$3\oNerLEJ:)]hG^+LXrdY-"
+J:N)rrdF`os+:/Ts'Pb2$=@"D>]H%5Yck11rN-C-X/i8"VPU#^U&CYaTDtJ`SXfSG!1EhQ!L9#M
+Q3NS;PE_l>V>[:kVrh%X<<-(t<W6&!=85er=8l;&=^(f/pK@;q"^+r0X/rE%WqBcs?iOI3?i==0
+>n11H?!^lE?!^lF?=$uG?N+45?=.&G?Me+0?N.53Z!1H3>lA"/?2fi_NrP1?O8tFAP5^XHPa.O4
+QMQsER/`QUR$j?@RJ`NNS,]#Y_Z.OR_Z.FR_Sa:j_Z.OQ_Z.ON_Yq=G_?.Wn`W!gT`;mpWa8a6X
+aTBVAM>iD,VZNfrWV3:jWVEClWW('Bbg"E2cMGlecMl)gbQ,iaaooi-a2c4!`Uq+F`W!gU_uIUR
+_>h=Nc2l8<rQt\pe'n<Gs4./#rR_&$s4R>(s4dS/r8%A/s53b4s5F";r8[h<s5j4As5sCGrTX@I
+s6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqtp?ir;H3cJcC<$ci8L~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpTiQ!LT5JR/Vd<KDpT)K`$N+
+K]V:UrT!q;s5Et8s53k5rnRh7gY:H9g"G$Wf,*#geC;sqda?Ihcd'h\bfe2PaiMQD`l7P"qg\Wp
+rdF`mr-S6epj;mard+fjH@(9rK)L<3Km.W[EH#i4C1q3j@UNUB>R+JA@q/qW@q,FG!FT@8@fKs9
+;uTZ";c6Ol:f1P?re(9(r.4s#JGaiuH[L0frd"isH?jd\G^"=Sr-/-_!d&L)rGqpWre(6(rIsW5
+r_3;cr_38br(I/d9MGF[!)E2]r_E/]rCm&^!/LQ0!JcL/<:Wuf<<#nn;?]us;H-Xrr`&eor)32d
+rJUSOqc!K@qg8Blr-nNms+(-!!.arrrdairrdt0$s+:6&re13'!0d>FrfdAHrfdAH"Hek2Pa)'/
+rf[#>nrs->qj.8=regN0qhkB2s,?r:qi(K5"-/G'OSbCERJ`HNR/r\Arg*MJqiq&Cs-!#:qNCW9
+s,d9+!RK-kd/qbFe,Iksec45!fDaG&g&0S(g]-(,h>Z:2hu)F4iW%p8j8\3?jo+?Ak5a`El2U&K
+li-8NmJlVRn,MnWnbr%YoDeI]p&Facp\agdq>U6fqu-HjrUTr=s+13rs*t~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpThh!ErY)>5MP';?0Sn;u]bq
+;>X5mjlGM$j8\-=iVqd8huDR4h$;`igY1B7g"?;U)V3HgeC2jodF$=ecHa\YbKJ&MaN2EA`Dfi;
+p/_&jpf-lapepudr_`hf9M/4];uTYp;>rZW3<qH$2D[-E1+rMY,q^u.1GU[?1GUdD1GgsH1c7-T
+4Zttj4Zbeh4?>Pc3^5u'8OuGL7fZ$X71;XS7RTU26ps@,5sRa26N9@O5lX(K5lEnL:f1(gr_`bq
+<:i-L2Z,H42XWNu2uko82Z>Z22Y/d,<)rltr&k$BrB'g;"$Jh45Q3hN4Zkhi5!D4/56!bG55m_F
+55[YF5QF%D55nR_<;o/_5Pm_F;>=&g;>jDk;u]bl;s%$\<E<0"<W?,!<W,r)=&i4"<`W4"<)`cq
+s&/qt<V9Dk<<Q9$<`W6"<!--$<`T,us,$`4s&f"sr)i_sr)io!"B\Mu;H!Kkr_NSjn4j$\:f.-e
+r_E&\qG?l]s3:Ykd/D>ndaQ\EeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L2i;_d9ir%j:jT"??k5XTE
+kl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk*#s3L^q~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jX"rkJEI"2DXd^AYeNV5C/f
+V5:'fVuNXoVZE`orT!q;s5Et8s53k5rnRY2gY;_]!SQ-)f)aIQrmV,#da?Ihci22tc-4ASb/q`G
+a2Z*;m[*j;rK[AH!0d2@plYH8r/iIgS=?CPVP^2dUm.%*O,JdJKn4]"H?aXWGCb6oIt)lrIXZfr
+J:N*!K7a#-!+5\2#[^hB?$;aBYcmu,s/c7$!i`)prhKFcs.BRgSt;IAS!s>C!LB)LQ3EP:PE_;o
+rfI/@"-01RV>d@lVrh%X<<-(t<W6&!=85er=8l;&=^(f/pK@Gur`KG/=]ee,XK;E$pL*f(ra,V3
+rEfJ/s'G_2$XR1H?!^lF?=$uG?N+7.?Me+0?N7>1YlJ#->lJ(.>le2irf6u=s,m;DrK@;IQ'M?7
+qNq)Hrg<hVR@4#Bs-j"Wqj[STrPAQPrk\ZOrkncQrkn]O!5n]Nrk\?G"N/0s`Ph_o!65#Y!6G&Z
+s+p]3oVVbhWN#Tis/Gdlr6#,bc2Graci;;ic2YufbP]KcaiMNB`r<sL`;7IQ`;daS_Z.FQ^s2l(
+!mf6?rmCbo!7Unrs4./#rR_&$s4R>(s4dS/r8%A/s53e5s5Et:rT!q=!9O1As6'FGrosIJs6K[N
+s6]jSrpTmVs7-'Y!qZ'VrUp3arqHBdrqZQiqtp?ir;H3cJcC<$d/SU~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jWOrg3SN!LK2NQi;[;K)gT"
+K`Hf)j8\-=iVqd8huDR4h#cBdg]#n-g"?;U!S5g#e-4=LdF$=erltnrbfe2PaiMQD`l5phJGXir
+If=coI/J?eI/&'cHMi*lD0^J\rdki8K7e/^DJNs!An5C\?sQu@>$GEEr+#b9!b5\Kr+#Y'!)i_n
+s&'%u@<dKZKS05Ts+(6%It.HHs*OopI!^/<HN/6kG]s(1rcJ3_rcA$Ys)J!Vrb_pYDM3XpKS9>Y
+!)2fTrCd2crCm/ar(I/d9MGF[!)E2]r_E/]qFpi^!/LK.r)E2b!`W)sqbmGms&&nt<E9#tr)<Gi
+pJ_!JrDNJj!)i]A!.FcoqL8Kqpj`9nqgnTqre(-%rIt98qih)ErfmGHrfdPJP*;)oqih#BpQP04
+!1!MKs+p]3pko03Mu/D2MuSb8NVe\5N<G9&O-l=5QNEPBRJiNNR/r\Arg*MJqiq&Cs-!#:qNCW9
+!KbS*c2u>=d/MGmdK%bpeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L3i;_d8ir.p;j8e<?k5XWEkl0iH
+lMp2Lm/QJQmf)\TnGi%WncJFTo_nI_pAXgbq#:*gqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jVfr`T5(r`]G->?_#1r_`hq
+;GpHg;?0Smj8\-=iVqd8huDR4h#cBdg]#n-g"?;U!S5g#e-4=LdF$=erltttbfe2PaiMQD`l5ns
+<VBJj<VTPc;ts8f;>a<$5YOjL;,^Ck;c5V82`:Rks"YEG/hSe1/h]"91GgjA0f([C1c$sF2)[<V
+r]U9C%6Qg94Zb_f3^,r'8OuDK7fZ$W7K5g_6pj=06pj4*5l<tK62s4K5Q<tQ5<_:q5!;+-4U4h^
+;H$Ik;cNBJs#0^2mPji!r&4O5q)7h%!`W0"r`8q[oK34=5!D414pF/44?Yhk5Q!_F4TI\F4o[_A
+5PRGB<Wc?$<'^FIqEP$Fq,7/gr_iYms&/\lk#D@\s&T,!s&]2"r`9&##ZXi(<`N.!<)`cqs&/ns
+o2bij'i\16<`N*u<E3(#<E+d1M2>87='/T!=8Z1q=o;D#=8Ytq;>sAl:[q3[:]F8k:]4&[:\mo^
+:B8Z=c2u>=d/MGmdK%bpeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L3i;_d8ir.p;j8e<?k5XWEkl0iH
+lMp2Lm/QJQmf)\TnGi%WncJFTo_nI_pAXgbq#:*gqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs1eNJ"M_[b]tOEZ#e[dG
+V5L5fV5F6irhf[m"fUJ@io/kqi;_^7hYu@2g]6+.g)o##f[na+f%&:"e'c[ldEp4bcHXSVbK@rJ
+aN)<>`Ph53rg*PKqNLuDplb00qN1`H!M-(dV@KGuLkg_8IXZWjG^4OWGQ*-mIKb4LIt3#urdb$#
+r*B_;?=.#E?=$fAH_gYF!3Z:&ri?=(WMZMeU8%U[s.BUhSt;IAS!o]AQ3NV<P*D/nOo:C@O8b.D
+NJrjVUnspeVZ3RV<r>qt<r>ts<rZ7r<WH5#=92Q.r`f,"rEB,%s&]H*XK8G$WqTos?iFC3?i==1
+?2n72?2n72>le8=ra,V3r*B8-qd9A0s0DX/!*fG-!F9%0>le27rf./COH>TeP5LODPQ7!JQM[$G
+R/WNMReN<NSH$G%_>qFO_uIUR_u.CO_u7IN_=teL_o0O5`;R[T`WF3%aSa-\L558roVhehqPa;7
+s3(JfrQb8cs3CYhrlbAcr5o/aaN)<?rl+QKq8NBPs24iQ"Mr:*c-?75!mf6?rmCbos3pqrs4./#
+rR_&$s4R>(s4dS/r8%D0s53b4s5F";ro=%>s5j4As5sCGrTOCKlg+N9!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqtp?ir;H3cJcC<$d/SU~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs-NbQ!gf:@rg*SNrg!PL
+re16&re:B*r.P:6io8qUro!h6s5*b2s4dV/rn8IIf\"g-f%/C$eC2jodF$=ecHa\YbKJ&MaN2EA
+`PodfJGaorIfFfrI.r!aI.;R[H3/A<I/\^@JV/SgB4bX^@UEDG>[(B8@:NeU@UinW@q&nW@q9(Z
+;cEZp!)i\m#>n</I>*B.KDgB&JUm]Ks*jro!.=`krHSQiGB\1OF8^.YEW'kODZ=SRCBT<CK7npW
+L&Od8:&%E\:&I]b9`RlW:&[o]:&.K^9`TtJL]N9er)E)_qbm>jr)ESmqGR&dr/:JNqbmMn;>tqC
+IJeQhJ,aupJ,OoqJbjutKDL9#L&R;5PQ6pHPlHsIPQm>7P*;)oPl6gEP4t1:PQ6pDPQ7!JQ2u_q
+p5As0!/pW0",i+tNV\V5NW5%;R/N?QR$jB@R/E?SR$X,)r0@/DrKI8Eoo]'5q2kd&bg"E3c2u>=
+d/MGmdf7epeGn)!f)=5"f`0Y&gAfq-h#-".hZ)L2i;_d9ir8!<jT"??k5XTEkl'`IlKdd7liQSB
+mf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs&o>)r`fA*r*0.us&&ep
+r_ibnr)*[Xio8qUro!h6s5*b2s4dV/rn8OKf\"g-f%/C$eC2jodF$=ecHa\YbKJ&MaN2EA`Pobp
+<VBJk<Vobb;t3c^;?'<!92SYe;,^@N1c$m@0eWDXs"4j<1G^a@0etUC2)I-I1c7-Tr]U9Cs#gTL
+4Zkbe4$Q778H;<Y8,l'U7K,[R6ioV>62a+S5sRY!5X7R44p!l25578@4T7JG:f1(gr_`_poJce.
+qDI\"p,Mt.r\sX2r&"I2q)&.Or`/u!r&s[7"$Jh35Q3hP4Zkhi4[)(o55[PD55m_F55@G<56"Xc
+<E)p_rBL0Es$-EZrDEMkrDW\nqbuTUr`/u!r`/u"r`/qu"]n`(<)luu<W,nr;ZKeg<rQ)1<)lt"
+<E)pt<E<.#L5/c/<rQ2#=RoPn=Sc2!=T2D!;Z0Jl:]O;]:&n)h;#a>i:@q?X;#*lhbKS5UrltSk
+d*Vd>s3gqrrRCkts47/#rn.8(r7_2*s4mP.s5*e5r8@V6s5O%<s5a4ArT=.C!9jCG!p]+;rTjUQ
+mdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF*sJ,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]j$s1efQ^:h4m]`,SL
+]XkYaV5:)frh]Ulrhf[m!iW$Uro!h6s5*b2s4dV/rn@D*!8.;&!S5g#e/$N]dF$=fcd'h\bfe2P
+aiMQD`l5p8_t]SlQN!0IPlI!LP`u'/m?.F1s,[)>#*YUJV5C,frhUW]H$4FWGBe^iJUW&tIsl`p
+IXZfrIXm&X?=$uF?iFC3>m+M<?@f0VYQ1m+XoPU'X9,E#VZ*=jUAghjU7e0QSt;MPS,ATTP`q8m
+qiCf=rJgl;repi8rJ^c9!i2]irhf^nlW+!erDrhr!*9"tr`0##pJq8qr`B2(>5hb#=oDP%=oVS-
+X/rD&WN,]#q-X,-s'P_2ra#P1s'>Y2s'>S0!+#S1rE]A.qd9A0s0DX/!*fG-q-=),?!NHiOT1I@
+P6$o5rKdJM!go=@qj@ANqO7)Hs.'))q83-Ks2+fRr5/KOrPJNLpVHpKq8EKVa2c9BrQ,&:mAK?M
+qTAo`c2>l`ci;;jc2PoebP]KbaiMNBrPeHJq8NBPs24lR!6Y;a!mJp6rltSkd*Va=s3^nrrRChs
+s47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\
+s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-tJ,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]iQ"IPOBQBh?5s-3YM
+PCrjfrdt9*Kn]MZrIk9*iVqd8huDR4h>c71g]#q,f`9\(f)aIQrmV_4da?Ihd*L"_c-4ASb/q`G
+a2Z*;`5DP'r.+TmrdFosI!kj=rHnTlrd=*[s*F]jrH\TlFF/@erdt-%!af8;rEBD6@:WhVraQ:E
+@preU@:EbX;cEZp"&`)s<;ohr;#t?]re:B)rdt0$s+(-!#(:lHH[L3frHeHgrc\?crcA0]EW0qU
+Du"8PD/3qdD#J,PKS+o1K`6](9^tjP9`7]`9^tgY:/+I^:A.EX9`@`dL]3)1LPYk-mSj!\r)<Mm
+r)<GipJ_!Jqbm;i!`;inqgS<is*jut!e>cMqgeZsqL\^!pk8[$rKI,C!0dDHs-*JI#*Y45PEV5q
+rKI2CpQPH<rfd8E!gT(;regH.repi8pkf03N/`hnN;ee:Nr5:DQN3EPRJiNNR0/hCQBqH6qiq,E
+rK?i9q3(W;!6Y;a!mJp6rltSkd*Va=s3^nrrRChss47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-t
+J,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]hhs'#G,s'#G*!*]>*
+s&oD"r_`ns;c6Ol;Z9Pl;?9YRro!h6s5*b2s4dV/rn@D*!8.;&!S5g#e/-T^dF$=fcd'h\bfe2P
+aiMQD`l5p8_c6G4q,R;kr)<Vpqbul[s&&emrD<\o78-?Pr)3_r/h\k1r\+:-!AlV21&s-/1`/)+
+1c7K\4[(qh4[(tk4?>Pc5=\798OuGM7fZ$X7K5gW7/fRR6i]UM63BJ;5="p+rB:0Cs#g?Eq`P$X
+;,L<l;?0Yf2ubf52#oQ&2tf622?Gfq2Z>Z22Z,H22#K32<;fes<r>,Q4T@PF5!T$1!'U<D"?eq5
+5!Jg+s#g9EqEOa=s&K5%<)c-\5Pm\K5<qJ3;Z0Jm;YsDl;Z'JT<!$'!<r5ku<``B%<W6#&=&r:"
+<EB*!rD`bp!*/SjrD`l!<W5tt<W,tt<<-)!=8uCn=8uD&=o)5&='/O*qGR8hr_NSjnP0'[r_WVj
+rD)u\q,$ra!6Y;a!mJp6rltSkd*Va=s3^nrrRChss47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-t
+J,~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6U$W^VIV!]tF6S!4r0?
+$+I@>V5C/gV51!fVuERlVZbr8hqm5hh>c:1g]#n-g"?;U*S/ckeC;sqda?Ihcd'h\bfn8Rb/q`G
+a2Z*;`5BIfQhHaFQ2?gFPl[,5rf[#<q2kT<s,d2?(1gucA<WORVPU/fV59u2F`i4`I=6QmrdG<,
+I=H`qIsurV?!^lE@/aI:?!^lACm2.&Yl([(X9,H%VuELlTaRNfTqJ'NSt;I@S"'DE&!rTIP`q5k
+OH5E^NK&jTNVJG4MuJ\7N<#dRV>d=lVs@C`=8l8"<<H9%<`]0!q,RJqr)Nf!r`BG/>$G37=]o0A
+qcWl$r)s&%#-4i,X/W,!pgEo)ra,V3rEfJ/s'G_2s'G_2rE]J0ra,M.ra,J/s'G`2rilH-rET2)
+"']&9>lKiaP5^XGPa235!13JJrgEVOoUGlNs2+fPq83-Ks2+fRr5/KOrPJNLpqd'L`;7IQ`rF*Z
+aT'B^VWt)LW;+O:bg$(2qTo2es3:Sfs3(DarlG5_a2\(sou-gJ!6"lUs2=rT"2`1%b5TQcbg"E3
+cMu5jd/MGmdf7epeGn(uf)=5#f`'S&gAfq-h#-".hZ)L4i;_d9ir.p;j8e<?joX`0kl0iHl2^/K
+liQSBmf)\TnGi%Xo)J=]o_nI_pAamcq#:*hqYL*gr;?Nardk*#s3^js~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6TgQrKdMMq3CuE"-\k/
+KDpQ(K)pRWre:B*rIkE.i8<GKhYu@2h#H..g&]mZrmr1Ae^`1!e'c[ldEp4bcHXSWbKJ&MaN2EA
+`Pod5_Xi9TIK=kEqg8-do6^F^rd4ZkrHSBDr_t(^H@1?sJqJZ-K3DD\@:*GO@UikV@q/qV@:E_U
+@T-0(<E/rrrDWkq=`]>sL&Zf'K)^B$Ift1II!^8?HiA?kGmnq@GBS.PF`_YEEH#mpDuX_TD#eDH
+C]A5LCB0%eK)gT(L&4R8:&%B_9ht[^rClWRr_EGes&Akiq+Uc^!/LQ0!f)Sfpf-i`qbm>jr)ESm
+qGR&dr/:GMqbmSo;GpBkIfFltIf"WpIfFomJGt,rK)L>sK`?`.PE_8pqNM;MPa.JsPE_;qP5^[F
+Pl6gEP5(7:Pl-aEPQ@&+rJLB.rJU`7rJLT2"cA4rN/`hnN;nn6R/WERR$jB?R/E?SR$X,)r0@2E
+s-*ADoo]39!0R8Dr/q$$!6Y;a!mJp6rm(Pis3Ubms3gqrrRCktrmq&"s4I>(rS%;+s4mP.s5*e5
+ro!h8s5O";s5X1ArT41Ekii$1s69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKerV6Bfs8)Thrqu]m
+o)=4?JcF-tJ,~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6U9^=^#$6>$5!1=]np3
+>Q.h+=TD=u;?Kco;H*Qms&&_m"]=48hqm5hh>c:1g]#n-g"?;U*nJlleC;sqda?Ihcd'h\bfn8R
+b/q`Ga2Z*;`5BGlqH!Jnr)EJjr`&bnoMYWbr_ibnrD<MQs#)Q#9MA>^;c6Ll;D'RT1GU^A1,:X?
+1GpsF1c%!G2*X5e5!(ni5!(ni3]]Dk84Z<Dr^d#Y#=_3Q7R]a87fGdS6j,kD6UO0<63'=M563r1
+r]^?F#!P144$5YhpcSF:"&Mil;uTYp;tN$K2Z#?32XNHt3;b]62uY`84T78:2>]602#pVS<W?+p
+4o%5?4TR`2r]U<Fr]C<H5!M4pqE=j@r]^0Cpce^Y"'&<"5l<kD5Qa595XPHI!)iVks&/_mj&H%Z
+s&B&"r`')%=&r=$rDj)'<`E%!<rQ+t<;oer<Us2i<W?)"<W5ts<W6%u<<-)!=8uCo=8l>%=o)8#
+<rc1p;Z9Pl:]O;]:&n)h;#a>i:@q?\:]O;j;#F,haT0K_b6#o4c2Q#gci;AkdJqYpe,@erec+.u
+fDjM&g&9Y)g]-(,h>c@3hu;R6iW%p9j8\0?jo+<CkNM./l2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]
+p&Facp\jmdq>^<fqu6NkrUTr=s+13ts*t~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaP#/J!f]t:nerOW!=
+"LtnK['Tb.!N;pqV>dClVZ*IpW2JMOh>c:1g]#n3g"=s/f@JO'rmVh7da?Ihd*L"_c-4ASb/q`G
+a2Z*;`5BI/_>0GqQN*6KQ2m3KPl-gGPQ?u2p6#?9ooBJl@q9#GVPK->S>N.^V?E`kIsunGI2I<Z
+IXZ]qIt*#W?!UfD?sd5H?!^i@Jul6UYQ:r0riZ:&#cju)VPL#_TV;=W".u0VRf8c^R$j;.Q^3l"
+P5^OHO,f-XN/R=e!/pf7rf-rRs/#am"H]:XaC5'Ws'Yn;rK%VTR%C%KT:D73P*(ohP*2*$SGlRf
+<V]\q<W,qu=8l;)@:E_WA,0R5@f9g7@fKm:Ws#N)WN)un@/++/?N4C2?N+71?N4=2?N4=0?3":1
+?Mn+.?Me+0?N7>1YlJ#,>l%_,>[@;5!0R8Ds-!MKQ'M?7!13MKrgEbSs-`nUrgNnXrgO1`SXc4>
+S"-"drke]Oq83-Ks2+fRr5/KOrPJNLs2"cPqn`BO`;.@S`lH-@rMJkXnYl3*!R/gdcMPrecMu/h
+bQ,ibb5]T`a8s?$rPeHJs2FuUs2FuU!5nfW!m/U-rlb>c!6tMgs3L_lrR(Yns3pqrs4.,"rR_)%
+s4R>(s4dS/rS@M1s53h6s5F";ro=%>s5j7Bs5sCGrosIJs6K[N!q#FDrpTmV!:g$Ys766_rUp3a
+s7cHds7uZjqtp?ir;H6dJcC<$dJn^~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaPs-EbPQ2-[EP6d>6
+OcYZWK7npVK*$^[L&Qc(K`Qk`rn[V0s4dP,#MIb^f@SU)ec+&9e'cXkd*U+acHXSVbK@rJaN)<>
+`Pf[2_SPkoqgJQoI/\KeI.M^]HMi$q<DujqI=-EYH$b2CJd6jZK4/4u@:T7E$=dOR@q&qW<)Q[q
+rDNr#;cH^mBS)!<K`QgZrIY$"!e>cMr-\Hi!d]-;rceBcrcJ?cF)c/<rGMgVD/=$(qJ>b=!/1?(
+#)%\NI=nG!r`B8*=BT\DEtNM;H@1-fG]n1NF*)JFF`_nRr_<>bmnNa\p/Lidr`&oQs+g`3Lkth*
+oMbTar)<Mmr)<Dhpf%*KqGR5ir_`qt;GhpnIX_*Bpji?ppk&HsqLnm&rf[DJPEYj-$'UU=Q'7Dr
+P`q:0PQ-mGPPp[EP5pdCPPLI?PPp@:MYW2.Mu\e7MZ/G9MMmFPNK*dn!0-fArg*\RR@3u?rL*\Q
+!gf4=r0@5Frfd8Coo]9;rfR5DrK7*#!m/U-rlb>c!6tMgs3L_lrR(Yns3pqrs4.,"rR_)%s4R>(
+s4dS/rS@M1s53h6s5F";ro=%>s5j7Bs5sCGrosIJs6K[N!q#FDrpTmV!:g$Ys766_rUp3as7cHd
+s7uZjqtp?ir;H6dJcC<$dJn^~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaP$!LP;>$+m.=BSf*
+>5h\)=T;7u;ZBSs;c6Ol;Z9Pl;?9YOrn[V0s4dP,#MIb^f@SU)ec+&:e'cXkd*U+acHXSVbK@rJ
+aN)<>`Pf[2_SK7K<r>tp<;]\m<;BJl;ufkn;Yj8g;#`Ec2)IN_5!Vh9;Gg@k;,^@J1,Sna)Ds?-
+1c.'J2*a>g5!(nh4Zbeh3]]Ps84Z<Dr^d#Ys%!>a7R]a87Rd;D"@PUE6::Z;s$6fR5sIRt4T7MN
+4?bni4ZbYb4$3-uqE5Qi;,U=j;F!T8=$],=5<_=u4Zttl4o@JD5Q3hI4?`X,!C/mC2to<12?5l=
+4o%2?48h5;3W;)><;ont<qniQ49@Z05Q3kG4Tml15!M7,4o[VG4[)(*5P[JD<`T,u!'pEGr'1<J
+5X><8pf%2jr);WTrDrqu!*9)!%TZY3<E3($<`W:&<)cn!r`/nrs&0&"<E<.#oN(uls&K2$<)ifr
+r`9"u!*9)#s&ekor`K2'qH*c";ts8i;>j;k:[q0]:Jame:]4&\:]F8j:]F8i:]AE:ai_d*bQ#cd
+c2Q#gci;AjdJqYpe,@erec+.ufDjM'g&0S(g]-(-h>c@3hu;R6iW%p:j8\3?jo4EBk5a`Fl2U&K
+li-5PmI'EAn,MkWnbr%Yo)SF]p&Facp\agdq>U6fqu-HjrU^#>s+13ts*t~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dO"hq[_]=GHK\HKFO
+[^EI@ZMp[(Vl6MiUo+-hs/,^l"PqkggY;_]!nl5Yrmq2%ec+&!e'e6C(XULRcHXSWbKJ&MaN2EA
+`Pod5_SX.)QM[$GQMQmFPkpXHP`q:)OoCIBO8b1;O8ihlA,rS-V@'#iR[T_:VPU/eVuEM0I=-Hl
+IXc`pIXciS?!UfD?XR5H?!^f?K)DnRYQ1g)XpD/2XK/@uV50mcT`q0`TV%jHrgO4_R?s;-Q^*f"
+P5^OGO,f-WN;\\,N!tNAV4!R1PFnPA\>He8N<#%=C]A5XCi=94EcZ>EF`m\*rc8$Y)/a;/DJa6R
+OckihOH>C0WPP1"U7%3G<E3?(?34JA@/aR9@q9*G@K'a7A,Kg9@K3A2XK/>#Wq]uo?i==1?2n72
+?2n72?2\(0?2e1,?2n7/?iOI4ZMq*/>5__&>m=P>>[:T>>Q0chPE_>tQBqN:q3V/MrgNeR".PgN
+Sc,)YSH5=QrL<o-_u@OQ_>1tI_uIUR_u.@O_u.CM_#hKi_>D(M_o2Ai!lh(5r2/bWo;M?*!R/ge
+cMGldcMu/hbQ,ibb5]T`a8s?$rPe9Es2FuU!QN1ZaT'?^b5TTabl>recMu5jd/DAldf7epeGn)!
+f)4/"f`0Y'gAfq-h#6(/hZ)L4i;_d9ir8!<j8e<@k5XTEkl'`IlKdd8liQSBmf)\Tn,W"WncJFT
+o_nI_pAambq#C0hqYU0gr;HTbrdk*#s3gpt~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs-<YMplbcBOcfX)
+"-8OrKDpQ(K)pRWre:B*rIkE.h;$f?g]#n.g"=sVf)aIQrmUttdf.W0d*L"_c-4DTbK@rJaN)<>
+`Pf[2_SO%[J,F`rI=2!?npL7[q0N'd%TZP/<.97BH?saVF*W(arIP]8KS3cA@:<YT?t*ST@oQB+
+<E)rs;u]f";c%+]LAll-K7s/Srdk*!!.Fcmrd4Zj!dJp5rH8BfFE2DAEH(kps)%jSD#J/FD#A'#
+D1R"UFE;PMH[CR!L21XBD-p[X?sd8K?t!MSA7]@bB4kgfA7K%W@:3JM?XWkOs).jR#]#0GNdH/$
+G]`pZpf.Ap<E8`lq,@8ls+gW1!f)Sfpf-laqGR5ir)ESmq,6udr/:DLr)<Vns%rhq;,@1?qg\<i
+!.jlrrIap!!JQd;P6-u4PPC@IQ'@JrPa%Aprf[>Hr0.)B!gAe1qigl@rKI)8p5Ag,!/pf5reU]6
+Mi@Ik!0$Z>s-NbQs-`ePrL!eUQ^=#(rK[;Frfd8Cn<*a6rfI6$a8X0[aT0K_bQ#fdc2Q#gci;Aj
+dJqYpe,@erec44ufDjM'g&9Y)g]-(-h>c@3hu;R6iW%p:j8\0?jo4EBk5a`EklU/9li-5PmI'EA
+n,MkWnbr"[oCV\Rp&Facp\agdq>U6fqu-HkrUTr=s+13us*t~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dO#[:J8=B8L*=BYW,
+rE9,%!a/Atr_`hq;c6Qn;ZBVm;?]qRgt^Z=rn7G,f\$2T!S5g#e,e%Hrm;P/cd'h\bfn8Rb/q`G
+a2Z*;`5BI/_8'(J<r5np<;TVj<;f_q<;oku<)`Zls&&Sg/iPaJ2F'Ml5!D(i3_N+D;,^Cj;c?RL
+0f([D1G^jE2E!fa4[(tj4$>Yg4$#Dfr^d&\r^cuX!_,[Mr^?iW7K,[S6j#eC6UCZ;s$7,[5<qCq
+4Zkki4?Yhh4?WR&s#U0ApcK!K5rq4n4[)(o5!M4p1B'*06Nf_A6:!s;6iBFQ6O#qG6UX:.6N07`
+6:4$s2)dBL2)R9U5!_@r5X%C23;l&<4T@S?49.JA3r:r:3r`1Y<W?+p4nq,@4[)+055m_F49@]2
+5578C4?Yklq*4[=!EN5"<;JiW5R'G<5X@_&5k@nT<)`Qkr_r>dr)Wht!*9)!%9?P2<E3($<`W:&
+<)cot<W#hr;Zp'"<`N/l<rZ2"<rZ1t<rZ8$<rZ/"<rQ2#=S#Vo=T2J#=T27o;Z9Pm;#a>]:'+3f
+;#X8i:@:pX;#X5k`lJ)"s2b8`rlb>cs3:Pgs3L_lrR(Yns3pqrs4./#r7Cu$s4RA)s4dS/rS@M1
+s53h6s5F";ro=%>!9O4Bs5sCGrTOCKlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cHds7uZjqtp?i
+rVc<dJcC<$df4g~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6C-+\[T)Z\@B#X
+\@/iRZi.30Z2LL%W2HJfV>dClVZ!Fmg]#q,f`9\(f-8ere^W*te'cXkd*L%`cHXSVbK@rJaN)<>
+`Pf[2_SO%&QMQsGQMQmFPkgRFP`tg'!g&J(r/Uc;+(\tnA#Q9$Un=*ER$*\pP+8DHV5C/eV5/Ng
+I=H]qJ,EUZ?!guF?!goB?^Ubr!O/^*XpV;4XK/A"VPL#^UAgkcTE(S_S,\oVQj/nCQ'IMqOoCFE
+O,T!Uq2>93,^"$EDfBQ_[B-gGNKBBJH$k0nJ:`H0NfT9_MMm:%A7]@bAS(jN#%hFXAnGUaraGe8
+*K>u8MQNo(Mi*7AJ:MrgEc5l5D/58qOG^$EVPA22@00qLA,9X5@f9g7@L-CMX/i>&WMuom@.mq.
+?sin>rE]G0s'>Y2s'>V1s'>V1qHa,-rEoP1rj)R/!*]>+!F8t/?2n.4?!LZ?>lIq/P*D72QMm0H
+Qi`\ERf/WTR[a8Hrg`qYs.01[!lr9trke]Oq83-Ks2+fRr5&HOr5/HLs2+cOr5&KP`;@OQV?!Ii
+VX(/PVuY!4b5oi3rQb8crm(Pg"3f$6bPoZaaTKW)a2\+tn&57F!6"lU!QN1ZaT'?^b5KKbbg"E2
+cMu2jd/;;kdf7epeGn)!f)=5#f`'S'gAfq-h#6(/h>lI3i;_a9ir8!<jT"?@joX`0kl0fJlKdd8
+liQSBmf)\Tn,W"WncJFTo_nI_pAamcq#:*hqYU0gr;?Nbrdk*#s3gpt~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6BZLrfRJLP*1rj
+P*,^)rJpr=re(6(s+:H+K7nr4re19)!ef=_rn@D*!8.;&+kG2oeC;srda?Ihcd0n^c-4ASb/q`G
+a2Z*;`5BI/_8*hXJ,=ZqI=2$@nU1.ZqK`g#<E)ptIXHNhG]\%JDf9E3H@pkKK)^K'@Kp7M@UikG
+;uTbo;Zp&u;,MQ9L&HZ&K)^E%IfOrsIK+]oHNe_@H$FOWrcSBdF)l=#EW'hTD#eDJC]A2fAn#4X
+@UaV:J;&_oDJs'!C2@a(Ci436FT$@aG?eGQ?M7_.?<plDra5\Ms*"j0NM:E3Df'?-BOtZP@1QaS
+DJa6+J;&K#A5uW/<E8`lq,@;m#?-D5LkphAM"jsA;u0Di;u9Pm;u'>f;u]hpMu$?M;uT\p;$Bip
+:Jju<r."Ej!.jrtqh+Zss-3MH!gJn4pll#KP`q;qP`q:0P5pjFPQ$aFPQ$aCPPULDPQ$L:MY;u*
+Mu\e8MZ&A5MMmGiN<#=9R/`TPR/NEYR$X/*QBdc$Q2HmGPPp[5OoLREOoE<#`lJ)"s2b8`rQ>8d
+c-?44s3C\lr6bPms3pqrs4./#rR_)%rn7;)s4dS/rS@M1!8mb5s5<t;ro=%>s5j7B!pAe2rojLL
+lg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZTjqtp?ir;H6dJcC<$df4g~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6Bbh=&rE$=T;M*
+=BSf)=T;S(;?'Mu;,U:j;c6Nm;>sGp;;9k)gAfh+f`'JHf%&=#eC2mpdF$=ecd'h\bfe2PaiMQD
+`l5p8_ns:,^qWnG<r>tp<;]Yq<)`ZnrDN\qr`&qsrDNVlq,%)M"Z/)$5X%F349%;C3&O,ur_`kt
+;GpFkr\XX2s#(KS4?Yhi4$5Yg4?>Mb4%)V18P/nPqF:]X7R]d77/fOY6pj:.6:4(+r]piU5<_7o
+4$>bi3rD,=3rM)=3r_Vh6q0dA5<_4o4u4uP6:F=57R]a87n,s<85;oU:/1[^'22+o9hnM[:ejb]
+9h\5T9hS;Z:&[p);FX/H7Rfg76pj:.6:4*u2)R9U5<h>%r]L3Dq)eX=rAsg9r]:'Yr`/u!pc\C7
+!^/_3r]^<Es#^?H5<ej*"$A_155@G=4p4nd<E)ro5Q*kI5Q<tP5sdk&5sb$>r)<et;GpFlrD`eq
+pf.,ks&B&"r`'D.=&r=$<``=&=&r:"<rQ+s<<#ku<*!'!<V9Am<W6(r<rZ8!<rZ8#=S#Vo=T2J%
+=9)7t;ts8i;>sAl:\d`c:]=,h:]=)j:Jame:]=,W:]F5k:]A<6`lJ)"s2b8`rQ>8dc-?44s3C\l
+r6bPms3pqrs4./#rR_)%rn7;)s4dS/rS@M1!8mb5s5<t;ro=%>s5j7B!pAe2rojLLlg+Q:!q#FD
+rpTmV!:g$Y!qZ'VrUp3as7cKerqZTjqtp?ir;H6dJcC<$df4g~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO#4(R>\@/lVr3u^6
+#.1\@ZEga?ricBurh]Xn"fA,lVPg?kVYm=og=b03rmq5&e^aZK!RoKrd2C<WcHa\Ybfe2PaiMQD
+`l5p8_ns:,^q[XMqNq#DpQY`Cr0%,DqiUl>s,m>C!0@&<)NSK@@qB2KVPTuZR[9>(O,SmLJW-(g
+VPU2grhT[EIXh?'s'Pe4#@CeD?sR&EGPn]HYc[o-s/l=&"KJDtUndp`rh0CdTqD=S#Fh-LR$X/(
+Q2ZsPOcYWbNf/jTrJM_P^m^@TS[*0MDJsH2K8#&9MN!U.AnPdmBObO`ARtOKr+H%C!G?-GB_c<?
+B)cKIAnYgiAnM$Us'ldQ@uH8hKnP)0I<]p_MNEdZO+;VGP5A\e@f9g7@L-CM@&pB1Wi<#n@.mt-
+?ij\A?N"10?N4=2?N+71?N+41?MRn,?Me(0?N.81YlS$4r*95,r`fS3>[:T>rEK5dr0R;Jqj@e[
+S"-">SXc1>SXo_Nrgj)0!QDtU_Z.FQ_Sc5es24lRs24cO!5ncPrPANNrk\NL!5n`RoqqAZrMKLj
+or.o5oZI9Zc2Graci;8oc-FVZc-6./s2bAaa2c4!`ULhF`W*mV`W*pXa8X0[aoBN_bQ#cdc2Grf
+ci;AjdJqYpe,7_qec45!fDjM'g&9V+gYCT_h#cHjhu;R6iW%p:ir\<'jo4BDkNM./klU/9li-5P
+mI'EAmfN"Knc&+ZoDeI^p&Facp\agdq>U6fqu-HkrUTr=s+14!s*t~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO#4(R>OcY]gr/pr>
+s,[&;re(3's+:E*KS>-ZK`6]*KEKr]g"?;U!nPoPrmUttdf.W2d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^\NBZIf"WpIfFiaI//-dHN$qE<%36BH[9mYEcH&8B4badD0^M]JqAW+K7mZB@T-9+;cQdq
+;cH[p;H$G%rIt*#&V>RbIt)oqI!pEjI=$<gH?jc7GQ2giF`MMBEcCtqs(qdSD>\2pCMfA]F*N"c
+@q/tW@:F(kE,p#BG@+]b?XI5L?=@8L@:<MNraGe6!+Gb6s'Yt<@:K.CraH"=@UW\SrF#P3#@LtI
+@!QskE;j_`C1h*oF*2SIF_tr=FSJi2;uKZ!LPUbALPY_)oMbTar)<JlrDWMiqc!Jnr/:DLr_rbn
+s%rqt;,:"c;>u(<J,k/qK)L>sKEHpnPa)02"I,+6Pa2*0!L8oKP6-u4P5^XFPl6gEP5gaFP5LO@
+Pl-I9MYE&/N;JP4MZ&A5MMmGjNW5@9R/`TQR/E?XR$X,*Q^3r&Q2HmGPPp[6OoCOD`;dgV`W4'Y
+aT'B^b5TTabQ,odcMu5jd/DAldf7eoeGn)!f)=5#f`0Y'g&g$ah#6%1hV[5ii;_d9ir7s>jQ5M&
+joX`0kl0fJlKdd8liQSBmf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk*#s3q!u~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO"mbI=<`N2s=9)M%
+=92Q.r`T4tr_`ns;c6Ol;Z9Pm;ZBSrg=b03rmq5&e^aZK!RoKrd2C<WcHa\Ybfe2PaiMQD`l5p8
+_ns:,^q[WaqH!Mor)E/as&B"u!E<"s;Z9Pj:a7nY2Dd6T5<_7n4$#A\2`*?I1-\H+;Gg@k;,^@K
+2E!]^4[&d,$U$U73]fGb5=nC;8cD9[8,l-[7g2=N77K[5r^6]Rr^-ZOr^-WNs$$ZP4?Ybh55dSF
+5!;%+3W_E:5Q3h\5=eIC:/+MQ77Kd;7Rp*G9h\5U9`7]d9`@cd:&n)g:B+,g:]O8`:]sQj:JOX^
+:B+,h:&[oi:eaje8.A$V779^=91hiM8Ou$/q`Fj?rAsg9rAjpXr`/u!pc\C7"[,%65<_:14o[VH
+5!M4nq)ngB4[)(*5Q!_F56*nH<W?%p5Q3qI5Q<tQ5sdk&5X@^,;uT_r;uKVo;u]eu;c6Qh;ug"t
+<rQ,!<rZ2"<sr&/<E<1%<``@%<EB*!rD`bp!`W3$r`/Ymr)`_qpfIGso2kros&o;&s&/eopeq)g
+r_NSjpeL`_s%`Sis%r\jr_DoXr_WX5s2G#X!6>)[s2k;`rlb>c!6tJfs3L_lrR(Yns3pnqs4./#
+rR_)%s4RA)!o)McrS7P3hr"Fks5F";ro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpKpXnaZVLs7?9_
+rq6<bs7cHds7uZjqtp?irVc<dJcC<$e,Op~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M!U7&l\,Ec8
+ZiIH0Z2_'-Y5kBtV$3`pVkp2crhodnr20PIrn%2$!7h(u!RoKrd/hV?rlt\lbfe2Pao9?ia2Z*;
+`5BI/_8*h#^&=5sQhQg>PlR'HP5:==OT1C>NZ)J=ARq:-VPKoXS!]M*OGnsLIX?EeG+5#!V>d@l
+V>FR%?XR5K?2e.1P5_]fYcb,-Y5YO-X/`(oUna^`UA^c4St):>R[9G/Q^!_tP*;#jO,f6ZN/sBp
+O-lHG\rW"oGC>'[Ci*haBa&'\AnPairb;CF$#+'cC2.HsBP;,WC(=oiBkhF"CMRa%Chmj'C]8,M
+C]%rEC]A2YBl%HrBkhEsAn>Ocrb2=E!fV54raZIcF)l28NJt9YU7#M$@f9g7@L-CM@&pB1Wi<#n
+@.mt-?ij\A?N"10?N4=1?N4=2?N+41?MRn,?Me(0?N.81YlS$4r*95,r`fS3>[:T>rEB8,rg*JK
+r0R\VR[TY4R[a5FrgNtZSXoYL"N\X(`5DPj!l;akqSN9M!5e`QrPJTPrPJNLs2+`Ns2+fR!lW's
+ntu&WrhfOipo+57s2suW!R/gecMPohcHji9cMu,hbl,ZfaiMQD`lA"snAGLL_SX4/`;[^W`lH.!
+a9'K+b5KKbbg"E2cMu5jd/DAldf7epeGn)!f)=5#f`0Y'g&g$ah#?.0hZ)L4hu_lsir7s>jQ5M&
+joX`0kl0fJlKdd8liHMArU0gWnaZVLs766_rUp3as7cKerqZTjqtp?ir;H6dJcC<$e,Op~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M!U5^FOo:@E
+O-#HaO84e9NW"M0K`?Z/JqJ`1KnP-XK`QkZrn%2$!7h(u!RoKrd/hV?rlt\lbfe2Pao9?ia2Z*;
+`5BI/_8*h#^&3BPIK4f`I/J?fH5T^^<E40hH[9p[F`VP@CM7?k@U<;E>BtOIrIP-(KN1tM;uoot
+r)3Yo;KDbjqh+p#s+13"#(CuJIXQTlrd4Zk!."Qg"F#$4FE@G$s)/$ZDf'?/rbW*gG&heQLPK_b
+@V0@mA,]p9?NFJ?r*]M4s'c+>@UinYraGk;r+$"CA7K1]AS1pQ$=m^ZB4baeAnGUbrac:DA7K+[
+A7kdN#%M1Q@UiqYqI'Y;H=gMk?=%AXra>tICkRUlGlC\<;uKZ!L5:Y@LPY_)oMbTaqc!DlrDWMi
+qc!Jns,-r;Mi7F0r_rbns%rtu;,:"c;,[7@!.Xrt!.jlrrIap!s+LN?Pa)02rfdJJPa2*0!L8oK
+P6-u4P5^XFPl6gEP5gaEP5^[DPkp=<MZ8P3MXQK&MZ/J4M?/WorJgcBnsKHFrL!POrg<\Os-E\M
+r075Fr0$Q3"d6a>_o0Lm`<+'"a8X-]ai_d)b6#o4c2Grfci;AjdJqYpe,@erec45!fDjM'g&9V+
+gYCT`h>c@3hu;O8iSrkrir\<'jo4BDkNM./klU/9li-5OmI'rA!q>aMrpp*\!;-6_s7ZKerV6Bf
+s8)WirVZTloDX=@JcF4!J,~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M"R/oe='5H'
+qH3c#"^5&3=BJZ(;>sH!;,^@k;c6Lj;>jAn;:tm"s4.2#rmUttdf.Vpd*M^:"jP97bK@s+a:-,/
+`Pod5_SX.)^V@J[<r#_q<:!N`<;okt<;f_p;>a6'2`<NO4[2.o4?P\c3Ar`P1c$lc0+0C+92\Vc
+;c-Ik5!Am-s#pBE$9C:33]f`#8P)HErC?lYs%!&W!_,RGrBpTQrBpTOr]pQL5lNnG4odbF4;pCG
+4#&ra5!;(o5;G#^6UaI>9MJ5V92/,U9`7`b9a"3c:/4O^:B45g;?'Jm;>sDl;#sKjqG7i$:/=\`
+:f1%c:Jjqc:esnb;G^0g;#a>k:)-K!;,0tX9heAV779I/6o6_a5<_7mrAsg9rAjpXr`/u!pc\C7
+"$Jh45Q*bM4Zkhi5<_4*4Tdf05!Jd,r'(-F!'^B^s&AhZr]pHIs$-fT6:!k%5s[j6;ZK_k;uKVl
+;uTYp;u'Dm=8Z+u<W?)+<E<1&<`N.$='#<%!`W0#r`/nrr_iku<`]0!r)No"<`iK%=8Q%l=8l=n
+=8uD&=oVV(;?'Pm;ts8i;>sAl:]*rg9htO\s%WPir_WVjrD)fW"]3(Q_o0Lm`<+'"a8X-]ai_d)
+b6#o4c2Grfci;AjdJqYpe,@erec45!fDjM'g&9V+gYCT`h>c@3hu;O8iSrkrir\<'jo4BDkNM./
+klU/9li-5OmI'rA!q>aMrpp*\!;-6_s7ZKerV6Bfs8)WirVZTloDX=@JcF4!J,~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms69KjrjDd4
+!4)O-rilF+s/lF*Unn!ds/>pn"K&)pVPa6gs4.2#rmV>)daHOjd*U+acHXT4b8&1AaN2EA`Pod5
+_SX.)^V@Lr]U"hJop5N@rKIAKP`u$.rK6r<rf@)>+_>1q@pu:4V4jNNR?s,"NJWC?IscTeG'A.]
+R[p=PV5C0iV#Xj$?jU1H?X6uZY-G79r3$(%#ct)+Vkp2bUSIg_rh0@eTDk;[Rf/U.Q^!YqP*1rg
+Nf/a_Nha>!OHb*CItNN:O)8lLAn5OdB4u!mBkV6rBkh<pBl%U#CMs,i$>s]uDJsH4DfBZ5rbhpZ
+E,fo<rGqjV!cW'rrbhaTs).mVrc&-\E,BE0DJ];f$#FHqChm^!CMRV_C(k5lA7]@bMh6>"F)Gf3
+NO>CQ@q5FG#[q+KX/rD'WN,`$p0S/7?XI,G?!U]@?=*V:s'G_2s'G\1!+,J,s'GS0!+,Z1s02T.
+>Pqb)?2n.4?!LZ?>l@n,>lU,gQi39ORJ`KRS,AfUS,SrXSc>;]T*Cn/aN)??_u%:N_u@LQ_>_=O
+_Z7RQ_u7IP_u7IN_>hCO_>hCO_tp51V>-qZVuERiVtm:kaoBNUb6#o4c2Greci)/hci;;iblGrd
+b5TKaaN)=!`UUkI^qp#e!lMsprl"rYa2e2#s2b8`rQG5bs3:Mfs3L_lrR(Yns3pqrs4./#rn%2&
+s4RD*s4dS/rn[V2!8me6s5<t;ro=%>!9O4B!pAe2rojIKli-8Nm/ZSRn,MkWnbr"[oCV\Ro`Fj]
+p\agdq>U6fqu-HkrUTr=s+14"s*t~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms69KD#*4k,
+O-#Haq2YH6!0$l/re19'"GDJ_KS9;Xs+LF'!7h(u$e*PPdF$=fcd'h\bl5cub/q`Ga2Z*;`5BI/
+_8*h#^:h2XJ+S3iIJ/'fIJeKjHiA?kGlUnE<#JS^H[C'_G'%bDDJ<cr@piVK>?Y68@X3<QrIY'%
+!JFGN;[HE$;,LYPKnY25rIb-%s+13"#(CrJIXZZmrd4Zk!dT$8rceBb"*AR'E;a_TDA-`$GB/(g
+LM_!ECM[j-G'@D*?=3V<"CbbI@:T:G"CktRARtdO"Cu(UB4h-V"D;=ZBkdHX!blC_rFu7Erb2LK
+BkV0orb)4D$tj9eAnPgkB4b[dAnCsP!b,_OraQUN@:<PP@:*DeDJE`m@:3M\KR8(C;uKYqLAlu0
+LPY_)oMb]d!Dubk;uBVn;u'>g;uTbrMZSiqMu$?M;uT\n;?'Jm;?'PmJH(,uJH(2qK)L>tK`6Z-
+Q^3l#rfd8E!1!DF"dP=9PE_=0P5pjGPQ$aEPQ$aDP5pjDMuJV5M>`>#Mu/A7M2I4LN;eh8QgpIC
+RJiKQRJWBOQi<<NQ2HmHPPgU6OTE86rk\`S`5MYo!li:$rlG,]!6Y8`s31MfrQbGhs3U_ls3gqr
+rRCkts472$s4IA)rn@D,s4mV0s5!b5ro!h8!94"<s5X1AroO:Fkii$1!UB"Mm/QGQmf)\Tn,W"W
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk*#s4%(!~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms60Mar`92&
+='/Q&=Sl5$=T)>";>jDl;u]bq;>jDm;?,2Iec+&+e'c[ldEp7dcHa\YrlYqsaiMQD`l5p8_ns:,
+^q[Xu]tF;Eq,IDolr3p`s&K(ur_j_5;,L.d2`ETO1I+/g5!:th3]T/W1G^d@0/*;W$S=)*9N"_c
+;c-Ik;Z8cd4$5Yg3]]Jr8P)HErC?lYs%!&W!(QcP"@GLC5skQ:"[G::5!(h&4<6%;5X%Cs4>\oa
+7n#j984uKG9MSAY9hS5W9heDZr_<nq:f1(c;,0n_:f("c;#O/l;,U:hr_EYk9MJ5TrCmDg92&&S
+rD*Gk;Z0Jm;ZBT!:f:.g;,U7grD3et:f("e;,C%b:]=*!9MSAZ7R]^56:+'s5<_@03W1u=<;ont
+<qniQ49I`15<o*1#<b134[2+m4Sh2C4?Yklq*4d@s$$KIr`/ttqEOpDs$-NKr^$QLs$6ZP62aa^
+;Z0Mo;Z0Po;Z'Jl;ZB\l<!$*%=8Z+u<W?)+<E<.%<`N.$='#<%!`W0#r`/nrs&/nsr`9"ur)Wi!
+r`K)"qc<Dls&ekor`K2'"B\Mu;H!Ekq,72hrD3Pk:/:a^!)EAds%WPir_WVjrD)iX!PlPN_?.Wn
+`;[^W`lH.!aT'?^b5KN`bl>rdcMu5jd/DAldf7epeGn)!f)F;$f`0Y(gAfq-h#?.0h>lI4i;_a9
+ir8!<j8e<@joX`0kl0fIlKeH9s6TgSrpTmV!:g$Y!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcC<$
+eGk%~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX?j!4Dg5
+!4)L,rilF+rN67)XJDZkV>mIrVPU)crhodnr29PDs3gtrrm:bnci22nc-4ASb/sY(%`cT.`Pf[2
+_SO%&^V7CorfmMKQ1pUAQ2?gDP5UO@OT1@AOT(:dARo@`W2?DcTUVF<Q^!VjM2$S0I!U!\Fb#$o
+J:NiRV5C)dVuEM!?=7)G?Y>q7Z*=//s/cC)X/W#rV#R4iU+W47TqJ*NS=H(;R[BM1Q^*bsPEV/^
+^QFnTZ&b&pJ;&rDWebA#BP1siB4tsmBDuTTC27R"DJjB1DfBZ6E,]grErU+WEW:%[FE@G's)nZi
+F`VVEF*;\JrGr!]FoHIcEccDEFoHI_ErL1[F8p7\EW1"XE?B4=E,KT4D/=*+C27NtDJa*&An5Xi
+AqGANDf(Sr[ANq4"(>SFX8]4#Wq]uq?OC1J?X@&E?!LZA?N+71?N4=2?N+41?MRn,?N+:=?=.&G
+?*^c@Z<LQ2>l@t)>l@n+>QC)gQiEHPRJrWTS,So\SXc4>S,SrXSc>;[TE!"9aN)??_u%:N_u@OQ
+_#qQl_nuAirPJTPrPJNL!5e]Ns2"c4r2'IjoVV8YrMKFhql'J8s2suW!R/gdcMu5gcMu5jcMl&g
+bPoZ`aTBQ(`r3mI`;dRQ^qp#e!lMsprl+oW!6>&Z!m/U-rQG5bs3:Pgs3L_lrR(Yns3pqrs4./#
+rn%2&s4RD*s4[P/rS7P3hr"Fk!TE&;j8\0?jo4BIkNM-ol0@R"rp9[P!:KjT!q>aMrpp*\s7H<`
+s7ZKerV6Bfs8)WirVZWmo)=4?JcF7"J,~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX?D!KW9<
+O8=n7N<+urrIb*&s+:?(KDpT)K`6]*K`9L$df@hqd/hV?rlt\lbfe2Pao9?ka2Z*;`5BI/_8*h#
+^:h2YJ+A$gIJ&!eIJeKmHiJBlHiA=?<`N*uIXHKgH$"1NEc5f.BP(d_?<pc>=^kiM@UaA'JqJZ,
+K7\`/<)`co!`sZ$re16&!.t3$s*k6$I!pHmI!u!@rd"NgrceBb"E\[(E,kkq&8ISRGBngXDJF!,
+G'Amg?XE_>!b,PFra?"A@V'([ARtaN!+u+@"DDF]Bl!]_!,24Ds(_XMC]8&LCM`i_!GlQLC'&*a
+CAqoKCMIV`B`i$_BPI<V!bZ1ZralLKA7T7_A7K+Y@:9(A$XdjcA78k_Ck[=:;uKYqLAm#/L\Oj@
+;uKSp;,[6hr)EVnq,7)grDWlWN/NYk;Z0Pn;Z0Jm;#aDl;Z)"GJ:W:HK)L>tK`-T-QC!o%Pl?mE
+PQ7!FPQd>:PEV5qr0%,FrKI5Ds-*DEs-!G?r/1Q4repc5s,$Z2mu."!"cJ>!NL6+3QfOP6Qi<<N
+Q2HmHPPgU7OoN/s^qp#e!lMsprl+oW!6>&Z!m/U-rQG5bs3:Pgs3L_lrR(Yns3pqrs4./#rn%2&
+s4RD*s4[P/rS7P3hr"Fk!TE&;j8\0?jo4BIkNM-ol0@R"rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?JcF7"J,~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX>`s&K5'
+=BAT'=Su;%=T);&=BAQ%;>sH!;,^@k;c6Lj;>sJn;?#)Fdf@hqd/hV?rlt\lbfe2Pao9?na2Z*;
+`5BI/_8*h#^:h0Z<`\rp!*&;`!*&qts&B"s!*&qq'/qg-1I")f5!1ng3B9#W1c7'E1&W^C/MT"8
+1,26l;,U7i;Gg@j5!:qg4?Q&(8OuGK8,bpW7eoFT6UF+*6N0:N5lX&+4Zb_f4Zkf$4[)"m0f2?g
+7Rp!D:/"GX9MA2T:/=\\:JOY^:/+P^;,Bt]:f1(c:/+P[;,I6f"Ar&o:f.*dqbRDk:/=\`rD3Pj
+:JUmcr(dMn;,9q`;G[9h#Z+8o:f(%d:f@6hs&8qps&/ko'MqS#:esn_:JX\S6UX:/2)[W^3B@%!
+!*&qts&SnXpcJXA5!M:14pO554?Ynm4?WI'"$A_155@G@56!kI56"U`<)rcZrBU?Hs$6TMs$6TM
+!^]1<r)3Pnr_iMirDNYoq,IAps&],!rD`l!<W,r!<EB$!"'/B$<rQ+t<<#ku<*!&u<W?+u=8uD!
+=8Q%l=8uCo=8uD&=oD4t;Z'Jh;ZBVl:]X?er(R/dqG7,d!)NSjs%iSgnPB2"!PlPN_?.Wn`;[aU
+`W4'Xa9'K+b5KN`bl>recMu5jd/DAldf7epeGn)!f)F;$f`0Y(gAfn-h#6%1hV[5ihuVfrro=%>
+!9O4B#Nt=7l07Kuli-8Nm/ZSRmfN"Knc&+ZoDeI^p&Facp\jmdq>^<gqu-HkrUTr=s+14"s*t~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTORNkI%\'
+ZEg_5Z2V!,YPkU(Xo>@%T;;I_!iDoprhTUlrhfanr20VGe'e6C!RT0lc2l26rlZ"uaiMQD`l5p8
+_ns:,^q[Xu]tD"irfdDJp6G`EQMZsGPl?mHP5ULCOSOt;AJSfcVkg,_Ssl(5PECi^L4t,(I!Bm[
+GlE<pJ.d<\I#=D_VPU2eVPU+q@[F@(YPbR'XVIq<WMcShUna]ZU8+ESTqS*KS=>t9rg=XjQBm\r
+V4!C7V7r.>ItiiAMJ?g>BP1mjB`;WKBkh?sCi4+hD[:<&F)l;@E,fmrEY3D9G'.tOGBe@XH?jg_
+G^+L[qKr-f%!m2CGBeCXG^"@TG'3_+!-S3_rcS3^.<T`RFE;JAEcH,@Ec>r9DJsE2Df0?+CiF0%
+Anl%?J9GmNCQ<1F?sp&7XT,<q@.mq7?sd8I?<pf@?!^k8>mF\A?=$oB?!d>4s'G\3$=7(H?<skB
+Z*IS<r*92+qcs&'r`fS1Q^=),rL*\S!1WtXrgj%Ys.'7`SXuGOT)d%5aTKW)a2Ihk!5ncP"i8'n
+_ns:i_u7FP_u.CI_>U51VZ!@eVZ*LlVY[4iVuWaoVY[4jW;`[pb5KH^b4EdVbl#cdchu)gci;;j
+bll86bKA!,aTBQ(`r3mK_u[QcrkAKL_>_=O_Z7XS`W*sXa8X0[aoBN_bQ#fdc2Grfci;AjdJqYp
+e,Iksec45"fDjM'g&B_*gAp%.h>c=3hu;O8iSrkrirS6&roOIKkih9qlK[^7liQSBmf)YVnF?&J
+o)J:]o_nI_pAamcq#C0hqYU0gr;HTcrdk*#s4%(!~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTOCIkE#V&
+"-8J'O8=n7N<G2uMMcr_KDpQ'K)gT(K`Hf)K`d"Xe'e6C!RT0lc2l26rlZ"uaiMQD`l5p8_ns:,
+^q[Xu]tD"imsY7bmX5"\rHeKE&l_eXH@'p[FE;G@DJ<ctA7AkPrEK;3!+c(;"_1nTH$Y,AJd6p]
+;,h[lKS98Us+1K,J:E&sI!pJCIK+ZoHN/9jGlDpdFV]";EH5iDG&hkXMJd-EDfg/G@:3GM@/XO6
+@f0a@ARo=`BP1uVBEDm_CAqoYCMIX#C27R"Ci!m'C27R"D#J5NDZ=PMD$+ZmCi0&c%;T]nCM[d%
+Ci+!)CMIV`CB/)IC'&*aCAhfOBkV0mBP1piAH$-SA7]7\@UW\Q@<ud'@U`__?XHc3LAm#/L\Oj@
+;uKSp;,[3grD`_oq,7)grDWlWN/NYk;Z0Pn;Z0Jm;#aDk;ZD7HJ,k/qK)L?#K`?c+K`-W)QN*9Q
+Q'7I3PPgXFQ26^KQ'@JrPa(p+s-!AFrf[5;s,6i5s,6i5!/^Q0rep]3pl#$,rJLZ7rg<YNjI#t6
+s-E\M!LB#LPlHsFP4Xk;]tXK\!PlPN_Z.LR`;[aU`rF*YaT'B^b5TTabl>rdcMu5jd/DAldf7eq
+eGn)!f)F;$f`0Y(gAfn-h#?.0h>lI4hu_lsir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Z
+o)SF]p&Facp\jmeq>U6fqu-HkrU^#>s+14"s*t~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTO@HkP\H]
+=8uD&=Thi0=]ef*=8uA&=8l5#;#O8j;Z9Sp<;obq;>jAp;:O(Crm:bnci22jc-611'["P=aN)<>
+`Pf[2_SO%&^V7Co]Y!i:!*&Vir)EVns&B"ur`&hps#1?D1dF5h4?GSb3B&lSr\OR/r%8gA0etL=
+1GpsR9M88\;c6Ik;ER!.8OuEDrC7)^84Q-=77B]B7/fRQ6N07\69me#5<M"\69[Oq5!Ln'72/6_
+9h\8S:/">U:/=VZ:JXe^9i"F[:^9`k:JFSY:/:X]"&Vfg:]4&g:]F/k:esja:]!ug:]=,d:^Bon
+:JOY];,:$e;>sDk:Bs]k:Jaqb;c3Kk"Ahuo;,I0g#uOJp:esq`:/==X6j?"96p`pq<;ont<qniQ
+49I`15<o*1"[+t14[2./4T%>E4?Yklq*4d@s$-NIs&B)!<VerY5lO"J5lX.M5lX.M6N9=N;ZB\o
+;YX2i;ZB\k<;fht=8Q%s<<6-#rDir!<r?#"<`T-"!*/qrs&/u!<`]3"s&f8%!*JDcr`Jhpr)`qs
+rDESmr)<Dhs&&\j!DcJg9`Rr_:]=2j:]4&[:BA/CrkAKL_>_=O_Z7XS`W*sXa8X0[aoBN_bQ#fd
+c2Grfci;AjdJqYpe,Iksec45"fDjM'g&B_*gAp%.h>c=3hu;O8iSrkrirS6&roOIKkih9qlK[^7
+liQSBmf)YVnF?&Jo)J:]o_nI_pAamcq#C0hqYU0gr;HTcrdk*#s4%(!~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs5s`q
+ZEga>Z*:I;Yd",1r3$($rMp!$Unn!d"fS>rV51!fVZ<UkVuP-ed*L%`cHXSWbKJ&MaN2EA`l5p8
+_ns:,^q[Xu]tD"i])IrnQ1gOAQ2HmGP5pdEOoLO@O"#BeA7T8LVPBiRR$X#!O,A[HJ:;omH$=F`
+It<0$IXc`mJU`6%S"6FQrhf[k!3Z=)!3Z='#ct),Vkp2bUSIg_s.KCc/>&K'S"#k7R$j;,QAClj
+T!sfGI"R67X,1P(C1h3pB5)$qBPVF$Ci40/E,tns!HW;\F9cr4GBeR`I!YO6s*FZis*F]lrd+Kh
+rd=Zk!.+Ke"aG<=H@'u;HPV!UG^+FVH$FRWF`hkNF`qqNG'.nIFT->(E-$&@EcH&<DJsK7E,K]:
+DeWm$B7tYPDf0B-BWS;8Wr?B&@.mq7?sd8I?!U]??!^k8?2\(2?!LY0?2n71?OC+H?X@$DZE^]>
+>Pqb)?2In)>Q.k0>?Y0srgEeT!1WtXrLF"]SXo\Mr1F#3rlG8`a2c-q_Z.OP_?Icm_o'@.rkn]O
+!5n`Or4rB/p8.P]s/5dlqPX=k!2odmqksFl"/j>bb5KH^b4EdVc2Greci)/gci;;jbmM\<bK@uL
+aiMNC`r3mL_umZc]tXK\!PlPN_Z.OR`;[^W`lH-uaT'?^b5KN`bl>rdcMu5jd/MGmdf7epe,n1O
+f)F;$fDsV'g'?BfgtgfChV\=j#N=\%j5]4]jo4BCkNMp0s69UMrp0[Qmf)\Tn,W"Xo)J=]o`"O`
+pAamcq#:*hqYU0gr;HTbrdk*#s4.."~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs5sQG
+NK0'[O84h6N<"n7M?$QQKDpQ(K)pRVre1?*r.QAKdF$=ecd'h\bfn8Rb/q`Ga2Z-<`Pf[2_SO%&
+^V7Co]XtcRIfFihIK4f`I/eOBH<aHM<)e9nH?aOQEc>o1B4b^b?sd2E>?YNF@q/qU@UWVR@q9.r
+H\;9Ks+:<)r.G$$s+(N-It)loI=?QlI=(s>rcnKgrce?a&9;c1D00iFL2LpEDKBuYG$k5V&Rf-W
+@:EbX@q9+^AS,LcBP1uVBa\`mC27U$D/=*.DfGJir,)LOqecCNrbVOMqeZ(Fr,2OQrb`'[Ci!m(
+Chmg&CM`rb"_qgfCMIV^C&_icB4bgiAnG[gAnP[b@UWYODeNWi@:3JMLkphApf-larDNYmq,@5k
+"&i)r;u'>g;uK\qMueiqqGR8jrDNVl!)WYlqbdHFJbaorKD^DuL&RD<QN3<KPPpaGQ26^KQ'@Jr
+Pa(p+s-!AF!/^W2s,6i5s,6i5!/^Q0repZ2pl#'-rJL`FR$d]9k*Z+6rg!PLrfmDGr0$`8"2)=\
+^AbkJ^qp#es24lTrl"rYa2e/"s2b8`rQG5bs3:Mfs3L_lrmCbos3pqr!nGlQrn%2&!87>)#M\%h
+h;-rEhu;O=iSrkWj5f:_roO7Ekl0iHl2^/LliHMArpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+rVc<dJcC<$ec1.~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs6'A^
+s&]2%!a/W.rE'&$r`K2%!*9)#!(QoarDE\q;H*Qm!)`Yl-W/:=d*L%`cHXSWbKJ&MaN2EA`l5p8
+_ns:,^q[Xu]tD"i\l;X/<V]Vd;tj8j<W5rP;_0jd1c%?[5!1ke3B9#U2)I-F1+k14/hSq80ekF=
+1GUdE1Ggp\92\Vb;c-Ij;FpaV#Y7ET7n,s:6q-o>rBgQOrBV,^5X.Fq4[2+o5;P,c77]pC:/"DW
+r_=/(:/4V\9MS;X:/FSY:JOYY:JO\]r_<Yn:/=V]:f$LVr_WPhrD<Jhs%r\jr_NSjr_WJhs%i_l
+;>sB%;,:"c;,C+d;,L.d;,U6i;C#+=;,U7h;,:.h;,L4g;,U4c:esh\7n#d46pj=.<E3(#4Ztq)
+4nq,A4[)(prB:BJ4?Pbk55dVA4Tdc.4[&U*r'(-Fs$$H_!E<(q5Q*kH5Q="K5la1L62s:N5QF.L
+;YF#h;Z9Vo;ufqs<;]bs=8Q%t<VTVm<rl?%r`0#!r)E\p!*0#!s&T2&r`9)%k#_Oap/h2p!`Mup
+rDESmrDWJhs&&\j!DcJh:&du_:]F8j:]=,\:BS8C]tXK\!PlPN_Z.OR`;[^W`lH-uaT'?^b5KN`
+bl>rdcMu5jd/MGmdf7epe,n1Of)F;$fDsV'g'?BfgtgfChV\=j#N=\%j5]4]jo4BCkNMp0s69UM
+rp0[Qmf)\Tn,W"Xo)J=]o`"O`pAamcq#:*hqYU0gr;HTbrdk*#s4.."~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"R"q0
+ZEa;2"0\r4YPbR'XT5I%X8]+#=/;YkV#mQnW;`XlVZ<UlVZG/jrluM.bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`rKR>IpQk]Aqiq,Es-!>Cs,d8A)gZ..ARq^:UnO6EQB[DhLk^J1I=-<bH$=dj
+Jc1*+IXcs!It<8[@%3\cV#dHkrh]Ur'!/.6W2?DeUSFWZU7n6QTqS'KrgNqWRJrR&NO>(HXL==@
+Ko;(OCM7KsB4u!lC27R$Ci"$,E,fi:EH6)@FEM_LH[bmBs*jurs*OioHMDjeHMr-hHN/?kHMr3h
+I/SBlHM`!fGQ<$eHN&6kI/SKlIf=a$H[0m]G'8+SGlDmdFWkjJEcZ8BEc?&>EH5u9E,p)CFE2A<
+Bl%L:Huj4EMmB@_oO%T(ra,q=?XI,F?!LW?ra,P/rE]P2>[7&0s'G_4s'G_4!FB(1Z2e,+>l@t)
+>l@n+>lRt2=^%5^R[a5Fs./tWqk*l1rlG8`a2c-q_Z.ON_>qLP_Z.OP_>qLO_Z.IPU\(DXVZ3Rl
+VY[4jW;idpVY[4iW;k'@b5KH^b4EdVc2Greci)/gci;;jblQ&3rlY8_"N\X(`lA"spVd*Ds1JBF
+!5AHI!l2Xgrk\`S`5MYos2P)ZrlG,]s2t;`s31Mfrm(Pis3U_l!n,QHrR:o!f%0iPs4@>)rn@D,
+!8RS0#N"@qi8ESQir7s=jQ6C'!U&\GklU/9li-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNh
+rqu]moDX=@JcF:#J,~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"6\h/
+NV8D1N<+urqhbE2;>c(HK`-N'K`6Z*K`-T+K[A'Ec5b*QbKJ&NaiMQD`l5p8_ns:,^q[Xu]tD"i
+]",BKIJ/*iII)=_HX'VN<=aM*H?j[TEH#Z,B4k^`?XE_:"Bo8E@U]4E$=RIS@q9.L<I/tDrdt-%
+"GDAZJV!fN#Ch/LIXZZmIK"QnHN&1-G]n:SG'.qKBo@(\K8+;ZEHQJJ@UNMN?srtC&7]9^A7fFb
+AnPgjBP2!nC2Elb!H)oQErU.ZE;4AKD?+PND?+PQD#J5KD"qlFDZ=YTDZ4PSDYe;ODZ=SRC]/&U
+CMIX$C2.O!BkdEW'P1liBPM6nA7K(X@;]dh@Ua/,LPPk.mSj*_s&&SjrD`eq!E)kl;YsDk<;hdP
+;Z0Pm;ZBSp;Gd?iqbdGlJbaotKDL8tK`ID;QN*9OQ2HjEPlI$DPlHpJPa2!,s-!D=qMP<2n;@1&
+qhk0,r/1K3s-`nSq3U62rKmPMs-<SJrfd8CpQ>Kfs1JBF!5AHI!l2Xgrk\`S`5MYos2P)ZrlG,]
+s2t;`s31Mfrm(Pis3U_l!n,QHrR:o!f%0iPs4@>)rn@D,!8RS0#N"@qi8ESQir7s=jQ6C'!U&\G
+klU/9li-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNhrqu]moDX=@JcF:#J,~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"R"q0
+<`]3$rE'&&rE'&$rE0#"r`0"gr)*Gkr_ierr_`_nrDE\od*M^:*6l^NbK@uLaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[gs'rD`_qr`&kss&9+P2`ETNr]^NJ4$#A]r\Y!<1,:L70.nn11B'!.1B'*02%)2s
+1c7H^92&5\;,dEk"@u!P7n3DFq*Yi_6pj=.5X@Y$5<hCc83K1%4Z*.-$:mic9M8)T:/+JYrCmPk
+:/+S\:JOYZr_EGg!DlYe:]X?gmSX!\r(m8fs%iVjr_NDfrD<Vo;,R0ds%iSiqG.Dp:esnb:fC1f
+;Z9Vp;$Tor:f(+g;,I6i#>n8m:ea\S7/fOV2Et5C4n1W84[/j0r]UKK4?Pbk5Q*_B4o[YE4o%>?
+56!kI55eLX5Q*kH5Q<tM5sdj962s:N5QX8<;Xm]c<;ons<<#ts<WH5!<rH%n<r5qu<W6#!<W#hr
+;u]nt=8uD&=8uCb=8uCq=8l>%;u]bo;?'Pm;ts8j;>j>k:B4/g9`Rr^:]F8j:]=,^:]J',]`5YF
+^AbkK^qmkd_?.Wn`;[aU`rF*YaT'B^b5KN`bl>recMu5jd/D>ndaQ\De,n1Of)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BCkNMp0!p]+;rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0h
+r;?Nbrdk*#s4.."~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+#-kD:YHP17ric4%!j/Q*rN#ms%%MmEUnsobWMcViV5F6i!2f[ls3:Yibl5chb/q`Ga2\+t&B)K'
+_SO%&^V7Co]Xtbc\[_X'rg!,As-<GF!0dDFr/k3FH=pl%AWNacTUM77P`:QUJq/5rH?aUVK7\]*
+JUW)tI=H`sJ:W;[@UtS0Odr2DV5L2fV5:2kVkp2cUS=NXU7n9RU7n0LS=?":R@0D(PE20@Oa;\:
+O,RlPBF/BcCM[^$Ci400rc%mXs)\?cGC+i;JH(-!JGjutIfFfuI!^0cq0W*erH\Eh!IK4nHMr3h
+I/SEgH2i*mH$Xd^H$]F9s*XusI=?YDIJnQkI4BPgGB\1SGB\:SG'.kKFE;PFEH?2CDfK]6F`hkL
+EcH&5CM86ADfCVkU\8'n?N4@<?sd8I?!U]??2e1/?2e11?2n1)?2n72?iOI4?NFJ=rNc9)rE]G.
+!+#P.rEK8+s&oM->$@ElSG8]QTDm"4aoBE`a2Z'p_Z.ON_Z.OQ_Z.OP_>qLP_Z$;1V"CMJVY-kd
+W;k$?bQ#``aoBNUb5oi3rQbDgrQbGhrm(Pg!R/adb5]T`aT'9^`l5pk`!Eob]=Y_g]tM/Z^B23e
+_>_=O_Z7XR`W*pXa8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%,Tn!
+i8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]moDX=@
+JcF:#J,~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+!KN08Nr+e:N/RUkrJ:Q&D#K"cK`6T(K`6Z*K`$Q(c2l26rlYJfaiMQD`r<pg`5BI/_8*h#^:h1l
+]=PP`\GL^KIf=c`HlZEl<E3"9I!^*\F)l26B4kaa?X@#C>$>HH@prhTr*o\9&7f9M<E+!sEI!.g
+JqAW,K7s5S#CUuJIXQTlIJnNlGli56GQ)apFDZ)=G_L$KDK9rE@UK(Bs'c[P@Urt[AS,OeBP2!n
+C27X$DJsN7noFbMs)@dPqJH:MqecCNrbVOMr+u.Fs).jR#]=R!DJjB2DJo>irGDUPrGDaTDJX0,
+rG;LL");UeCA_c^BPD'mAnPgmBk_6lAmo.VD.R3dD/4Q!mSj*_s&&SjrD`eq!E)kl;YsDk<;hdP
+;Z0Pm;ZBSp;Gd?iqbdGl;#,_<K_pK'Q2['NQ^3p6PQ$gHQ2-[DP6$o5plkE/s,6?'repQ/repf8
+!/pf5repfDs-`nSq3U93r0RGL!1!MI"-\t6PQ$a>OU/M/]=Y_g]tM/Z^B23e_>_=O_Z7XR`W*pX
+a8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%,Tn!i8ESQioB([jQ6C'
+!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]moDX=@JcF:#J,~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+s&K,$nlYfkrDiql9`7if;Z9Sp<;obq;>a>lc2l26rlYJfaiMQD`r<pg`5BI/_8*h#^:h1l]=PP`
+\GK1m;uK\j<>/=_2`ETO4$Pnk4$,J^2)I-F0e`GW#rF@j0JYC>1Gguf1__f34[);/6qgHU;,^@i
+;c6%R779T>6o.1u6pj:+5sRb%5;58b4[(\k77KgB9M8#Q9hnDX:/+DV9i"S]:/4MY:JOY\:Jjtc
+;,I3eohYZb;"%9];#=&e;#a>k;#O2i:]OAl;#O5m;Gg<f:]O;i;"d[&:eje];,C+e;G^1f:f1(d
+<)?Ii:fC4j;H*Qm$W0\r9he)F6UNai54Uf:4[/j0r]UKK4?Pbk5Q*_B4o[YE4o%>?56!kI55eI]
+5l3eE5lX(J5QX5<5lO(L6N04O6:!p.;u]hq<W?%t<W6&!=8Z+t<VTVm<rl?%r`0#!rD`_rrDs,(
+='&L+i)fq\r)`l"rDW_orDESmrDWJhs&&_k!`)QdrCm8ep.t]b"]%rk:JO[Y:C+MB]=Y_g]tM/Z
+^B23e_>_=O_Z7XR`W*pXa8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%
+,Tn!i8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo
+DX=@JcF:#J,~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+YkbL#Xob`,XSf-uWrK%$W16qbV#I4iW;`XhVZtDibfe2Pao9?ra2Z*;`5BI/_8*h#^:h1l]=PP`
+\@;@#oToKArfmAFrK@,A/:)YUAn>MOUnO?JQ^!PgKS+`!G^"CWGCY6qK7JE#IXHWrItE6(?t*W/
+\$u@H"e2BdV5C-gV>m:mUnXTYrh1p<Tq.^DS"#h6@CM_sYdopFLQ%O9BPD-nB5)*rBk_="D/XE4
+E,p#BFa/@fKDgE%Jc1,uIfP#tJ,autIK+ZrH[:#7Hi89hH2i3jHieY@HMr3hI/\KgH2i*iH$]I8
+"F>EAH@,X=qgJBiqL/9hs*=loGB\4SF`m\,rcAusFE2GGEcQ)<FED\HEcGr3BnLYLDiBOEq-X),
+s'H%>?XI,F?!LW?ra,P/ra,V1s'5>)s'G_4s'G_4!FB(1ZMIi)?2n.0?2\%,>Q.n-=o__)>5auj
+SberST)d(6b5TN_a9'E%`;@FO_u%=N_u7FP_u@OQ_ZI]LUAgqfV"LSFVYR.iW;as>bQ#``aoBNU
+b5oi3rQbGhr6G>grm(Pg!R/adap?,3aiMNC`l5pm_uR=H\Hf^X]=bei]tXK\s1eWNrPAWR`5MYo
+s2P)ZrQ#&^b0'\+s3(JfrQbGh!7:\l!n,QHrm^tu!7q/$s4@>)rn7D-h#?+<hV[5Ki8NYSj5]4]
+jo4BCkNMp0!UB"Mlj)qGmdKW6nF?MKs766_rUp3as7cKes7uZjr;6HjrVc<dJcC<$f)L7~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+NVSV4N<+urqhk9-!IRcBKE$W'K)gT$Ka,fGbfe2Pao9?ra2Z*;`5BI/_8*h#^:h1l]=PP`\@;?`
+p4!$imsG.@?N*q8;gj";F`VSCChRBi?sHr?r`fA2(Lpo_@UWYR@UiqY@oZK,FGl$6Mi2n6KDgE%
+K*?[PIXHQlr-SHhs*,-!GBS.0Nco]#LMppHG'mb,@/aR;?t*VVA,^'>AcQNDBa&6fCMn05rc%pW
+rGhjX!c`7#pi?CSs)@dPq/-1LqecCNrbVOMr+u1Gs).gQ!cDppqel=Mr,)LOokjbHrbVUO!c)Xh
+rbMOK(hm_uBkh?rAnG^iBkh9nART"bAn#1cCO>PLr_ibnq,@5ks&/qr;u'>g;uK\oN;?HN;uKVo
+;#jMm;>X5m;,C*fK)UDtK`$Q'Q2['NQ^3p6PPp^GQ2-[DP6$o5qi_&:M>iD4M>E,0Mu\e*MZ8V/
+MZ8V6Mu\e7MZ8V6R/`TSR/**3R/E<NQ2m3IPlHsHP514?\Gj#D]">Se]Y2"mrkJKK!5\WN!lMsp
+rl+oWs2Y)Z!m/U-rQG5b!6tJfs3C\lrQt\pe'n<Gs4%,#rn%2&!87A*!ScE/h$i/thr*GOiSrnX
+jQ,G%joOZ/rojIKli-5UmI'E2n*oi:rpp*\!;-6_s7ZKerV6EgrqcQirVZWmo)=4?JcF=$J,~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+=7KDj=8u;$<W6#"91SnWs&/bnqGIOBbfn8Rb/sY((!">5`Pf[2_SO%&^V7Co]Xtbc\[]-G;XRK]
+<;KVp/.=Hq2)@K]4Zkee3&WYn1''!\r[nI.0ek@<0ekF>r\OU5r\P3N4Zu5.:/4JU8l8J`;H$Cj
+;>3I*6:=1-69mh%6:".,5!V:g6q0a>:/">U9hnGV9h\5T:f0n_:/+I^:'49i:f.'cs%r_m!)WYj
+qG@2hs%r_k!)W/^r_WJfrD<Mis%rYi"Ahrm:f.'e!`DlmqG7/fr_W8`s%rVhr_Oe6:Jatf;,^=g
+;Gg@i;GpFl;Gp=g;Gp=e;,'eU6:=1!2F$js!BiXG5Q3hM4Zkhi5!T!.r&k-E4$>b&5Q!_F5Q<qG
+<<,;]5Q*kI5Q3nK5skN9s$H]Ms$H`Oo2GZgs&B,"<E/lrr`0##r)WbrpK%5o!EN5!<WZ6$<W#ns
+=8uA&=8l=e=8uA&=8c2"=8l>"=8uD#;u]bo;?'Pm;ts8j;>j>k:]F2h9`Rr^:]4,i:]F2b:B7p(
+\Hf^X]=bei]tXK\s1eWNrPAWR`5MYos2P)ZrQ#&^b0'\+s3(JfrQbGh!7:\l!n,QHrm^tu!7q/$
+s4@>)rn7D-h#?+<hV[5Ki8NYSj5]4]jo4BCkNMp0!UB"Mlj)qGmdKW6nF?MKs766_rUp3as7cKe
+s7uZjr;6HjrVc<dJcC<$f)L7~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!p$PfrN?7)Xo>I)XfSW$X8f4!WW/muVkos`V#R7qVl?VlV5C-hVZ<UnVuOs?ar8CCaN)<>`Pf^4
+_SX.)^V@Lr]Y(kf\[f5Z[el?^QN!0LPl6gEP5gXfH?jgLAn>POV4sTPQ^!SiL4t/)G]n4PJ:N6$
+IsuosIsq<G#D.M7@:N]0\,<`A[Bl<kVPU,dVuELmU\pf6T:MLBS"#gW@V21,OHbBRO-"6mCM7Bs
+BPVBuCMdm,DK9c=Fa&(ZJc13#KD^?$Jc1,uIfP#uJ,ausI0"_Brd+EfrHeEf"aYNCI!^2;Hi8?l
+HN8BiGm&A;H$FT3Gm&G?H?sr;I/SKiI/SKhI/J?jHN&+2G]n1PF`hkLFE;MBEccADE,]i;FE;G@
+CMniOE,KQNU\nKt?Mn.6?<piA>[@>8rE]D/s'5Y1>PMM(?3"@3?N4@9?<skBZa0C3ra#P/!+#P.
+r*02+s&oD*rE92kr13eXpn.T0rlY5^s2b5[!6"cO!5n]Nrkn]O!5nfQrM'7c!2T=bl)+BTs/,Xj
+!3#k=rlb>arQ5)^oZI9Zc2Grfchu)gci;;iblc25b00e,#0Fp+`l?!:qSWHD\%)FJ#J.OZ]Y(qk
+^AYeJ^qmkd_Z.LR`;R[T`rF*YaT'B^b5TTabl>recMu5jd/MDodaQ\Ee,n1Of)F8%f\-8X+PY],
+h;-rEhr*GOiSrnXjQ,Fbk3(pkl07Kulg4!*mI'uB!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]m
+oDX=@JcF=$J,~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!9F$;r/C`9Mu&>/M>`51I/JWsK`6W(K`6Z*K`6]*bQ#^'aiMQD`l5p8`5BI/_8*h#^:h1l]=PP`
+\@8p<IK+cqII_dc>S:=C<)lnGH[0aVEc>o1An5@W>lIkA@:E_U@:<YS@UNYR@q9+L<)Zb=Mi*Dk
+MZellH$Y,BK)UB'KREcG!.+Wis*4Qf(Nrk]=F#=3EG]`>H"18j?t!PS@q0%[Ac?9HBkV3qCMRj0
+rcJ0]!-8$X!-%jU"*/C%EVOSSE<'tQDt7cGD>nAMD>\5GD#eJPD$4`pDJj=jDZ+M<DZ=VaDJa3+
+D/3p'C27X#C2*Z\'5)#nAnG^kBP;!iA7BIk@q&k^Ie-M;;ZBVi;uK\q;ZTcpq,7)gs&B"srJU_T
+qGR;krDNYm!)ibmqbdDkr_NTHr.FctrIt69rK[MOQBh?2oT]?=!L/lKPQ-I=M#`G3M>N/4Mi<UQ
+mu%.'pPT!/repi8re^]6rL!SP!1<)=s-W>Cs-E\Mr0.2FrK@#>!k,SJrj`9F]=Y_g]tM/Y^B23e
+_>_=O_Z7XR`W*sXa8X0[aoBN_bQ#fdc2Q#gci;Akd/qbFe,Ihue^i=Nf)aOWrn8LLgt^`AhVR/J
+i8NYSj5]4]jlY^gkNM0plK[^%m-X3.rpKpXnaZVL!qZ'Vrq6<bs7cKes7uZjqtpBjr;H6dJcC<$
+f)L7~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!9ElV"'J`-=Sl/$<`N0!<rQ/#9DhZd;ZB\q<;obq;>sJnbQ#^'aiMQD`l5p8`5BI/_8*h#^:h1l
+]=PP`\@8pD;Y*ie;ZB\m<;fhs//Kfr2Dd9V5!D(j3B9#T1c$j>/1rM+1GJe_"#;Sd2?#E72)I-S
+r]L?P9hnF^9E%Ne92\Va;c3NlrC$TOs$@bl5sR_$5s@If1djf':esbY:/F\]9hnDX;,'h^9MPI\
+!Du\m;>sDi:]F8j;#jGl:]!uf;?'Jm:B45];>j>g:]4,i:B=<hrD*Pm;,L.dr)!Sp;,C(brD<Mi
+!)W8_!)WVir_WPhrD3Vo:f:1grDE\o:K.6j&Q;P);,L4g:Jan^7mfU075[:(497T/r]gBG"[+t1
+4[)+/4T%>E4?G\hq*4d@s$-NIs&B,$<C-IGr]pKJrBL?Lr':<Lr]pKMs$6WMoi(cfpf7>p!*B)!
+rDiPlr`92&<E<0!<W6%s=8uA&=8l=e=8l;%=8c2"=8l>#<rcA!;u]bo;?'Pm;u'>j;>j>k:B4/g
+9`Rr`:]!rg:]=,b:BIu6\Gj#D]">Se]Y2"mrP&EL_86,fs2+iTrPefVs2Y,[s2k;`rlb>cs3:Pg
+s3L_lrm:eqe'n<G!nGlQrmq2'g&B\JgYCT?h;7#Gi8ESQioB([jQ5OdkND'nl0@R"m-O-,mf)YV
+nF?&JncJFTo`"O`pAamcq#C0hqYU0hr;?Nbrdk*#s474#~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroOaQ
+jQ,@(YHG(4Y-"h/Xf\]#WrT0uW<&rprhKXdA#,q"V>dFnV#[ChV]Eq%aN2EB`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`QmZn!@QBd]!rfd8Cs*>K/B4b^dW2?>^R[98#N/34;I!^']Fb,,CJ,as+I=H`u
+ItE9*?t!JORJaPp[JdEBZBC`RVPU2gV5:&_TUhXDrgP(!@:a+gFaA[tP&G2QCM7<qC2@U!D/F31
+DfKoEH[UHsKD:#uKDgE$Jc:2qJ,ausI0"_Brd+Hgs*=`lH@#O8"+#<AI/A9gI/eNnHMr-hGlN'g
+Gl;pfHiJBlHiAElIJ\BmH[Pg@qgA3dr-JBg#'tN=GB\4Src\<a(3FS=EH?5DEH6&>FEDMBC2L5$
+E,TQLra5V1rEoP1#$kJ=?!UcCrE]D/s'5Y1>PMM(?3"@3?N4@:?<skCZa*m5>lJ%+>l.b*>QS,5
+=oDM(>Pt&lT(elVbPoZ`aTT]*`l5jm_>qLN_Z%IO_>qLNUA^kdV"geMVYm:jVYm@lW;Og<bQ#``
+aoBNTb5fcacMu5gcMu5jcMl)gbl>lcaoTW)rl4uWr58TCrjDj:\Gj#?]">TR]E5d\^AbnI^];4L
+_?.Wn`;RXV`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[peCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQ
+ioB([jlPXekNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroO=E
+jQ,A!Nr=t;Mu\e3MYr>2L]iKfL4!,$KE$W(KE$W%KcS=XaN2EB`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QqgS?hs*jrq!doEEpO*!G(LL3B<)n?nH$47MEG]B$A78eM>?b9@@esO5@K9p;AH5a0;Z_3$
+MZ/M6M>`2:KQ29iK7\].JqJaUH2i-gG7f""=^5<EBQ%s9ARf.W?t*VTraZ@IA7]FeBPM:!DK>`"
+s)n<_s)\3\rc.sWpi6(Ls)A$Xpi#_@!c;air,)@JoPOVH"`A0oDJa:jDs2'=DuFYTDuX_QC]S<f
+rbE9aBPD0oC2%9mB5)$nB4k^`PA"H8?u#C6s&&qt;Gg<e;uK\q;ZTcpq,7)gs&B"srJU_TqGR;k
+rDNJhqbdDkr_NSlr.Fctre1?<rg!JKs-EbPPl$[:Pl?jKPa.#[p5/^)"cJ=tMMmDdMY2o*MZ8V7
+N;SV3R/`QSR-U+<R.$@BQBhB4!0dAEr/guerjDj:\Gj#?]">TR]E5d\^AbnI^];4L_?.Wn`;RXV
+`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[peCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQioB([jlPXe
+kNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroO=E
+jQ,@s=T;M(=Sc)!<rQ+u<r?#"91]"Yr_i_o!E<"p;B<p%aN2EB`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QnPfBa"&i/t;uBVo<W4Nd2`<KN5X%@o3]T2Z1c.!B0.ee//2K"71B'$.2#fE82Dm<Kr]L?D
+7nuhY9DhC18OZ<N;Gg@j;,^@[6pj:-5X@\$5X@\&6:F=685E#U92A8W9hnAV:]3ri9hnDX;#=/i
+;>j>h:]F8j;#jGl:]!uf;?'Jl:\%B\;#F,c:]XEirD*Pm;,L.dqGI5frD;uZ!)WVir_WMgs%r\j
+s%`Sjs%rkp;,L6i:_Q]%;,U7i;c-Ik:JaeZ;a`r?6oFg'#X(@85<_7q5!Am-!^8h3r]L*A"$AY.
+4o%>?56!kI4p=qe<`MIOq`k'Fs$-HIq`t3Kr]pKMs$6ZM5k\.T;uouupf7/krDiPlr`9)#qc3Ys
+r)`_ss&]5&mT0Bjr`K5&rDrr"qH*_qqc!MmrDESmr)<Dhs&&\js%`VirCm8eqbQu`!)NShqbI4"
+rjDj:\Gj#?]">TR]E5d\^AbnI^];4L_?.Wn`;RXV`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[p
+eCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQioB([jlPXekNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a
+!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roOLJ
+jQ,@]YHG(3riH7)XfVN&"feW(WiN2uW<fE!V50o^U7><aV#R7qW2Z_mV5C-eVuOgAa2Z*;`5DSk
+&])8t^V7Co]Xtbc\[],W[^EL<QN!6FQN!-MP`u*0+d%(sHt[/)AuDN#TUV@7OH#-OIX-9aG'/:b
+JU`,tI=HbGJ-UXW?t!JO@%[D-!OoK8Zi@<:Z*9=ZV5C)dV#I4iRj"2uNf\.#G_:j<Df9E+BP2$p
+Chmd%Df9T8F*N(aLPCJ7mt(Ojr.+Wns*jop!IT7nHMi-iHN/9jHMr*kH@($eqg86gs*FfnH$T@5
+!."Qgs*4]kH$Xi:H2r<kHiSTnHi\SArd4TlrI"EfqKi0erd"frI!^0aG]e91FoQV"FE;GCF*2YG
+Ec?)BEcQ/5D1d"NDMn?urEoS2!+#S/s'>Y2rE]D/s'5Y1>PMM(?3+D>rEfV4?*aI9!+#G+ra#D+
+qcj)*!aAi2qc`rhqOdeZs.B>6s3(DarlG;aa2Z*9oYUUFs2+Z-qP4%cq5*;Pr2'Cir29D6s3(Gb
+rQ5)^o?.-Xr6G>gr6G>grltMgrlkDcrlP>aa2Z-u`Vm^VZa@.>[K3kIrji'?!5&6Cs1JEHrP&EL
+_86,fs24lTrl+oWs2Y,[s2k;`rlb>c!6tMgs3C\lrmCbo!7Uqs)V*Eif@S[-g"P07gYCW@hVR/J
+i8N\Tj5]4^roO7Ekl0fIlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>U6fqu6NlrU^#>s+14$
+s*t~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roO@F
+jQ,@]r/Uc9!K;s3MYr>2L]E5/L&lWur.G$&re(6(qh>'k"inX%`Pf[n_@aW"^V@Lr]Y(kf\[f5Z
+[^NTNr-nHirdOTirHoen>[LK3<E4HpH$4:OE,B9$AR\qN>?Y0<@U`bR@UWbT@UoCJ#$"W$<E+=&
+rJLZ4reCc6KS5&4EI!1hrIY'%rc]K.G].Y1@qTV!H":Gn@:<VR@Us"\AnGUfBPD3uEHZJIqfVs^
+rH&*^EcV+urc%[Qpi?CSpM]V?!GuZMD>\5CD$+ZoDJoDi!H)iND?+PFDZ+MPE;skSE;shUD$Ffn
+CMdj%CAqrIBE;m^ralROBP;$k@:O1e@UX(NqbmMn;uKVo;>F/h<<#kt;H*Bhr_j#!;c?Xp;cEXR
+!)r_lr_rbnqGI,f!)`YjrIalus+UK=rg!JKs-EbPPkpU:PlHsIL]<2'M>`;4Mi@Rlpkn^%r/1K3
+s,?r8qO%;N!1<)=s-W5@!LB#KPQ6pGP5ULEZa@.>[K3kIrji'?!5&6Cs1JEHrP&EL_86,fs24lT
+rl+oWs2Y,[s2k;`rlb>c!6tMgs3C\lrmCbo!7Uqs)V*Eif@S[-g"P07gYCW@hVR/Ji8N\Tj5]4^
+roO7Ekl0fIlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>U6fqu6NlrU^#>s+14$s*t~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roO@F
+jQ,@]qH*l'=BAL'rDru"r)NbtqH!\j8Gl?a;ZBYr<)`Zls2YAa`l5p8_u@Lb_8*h#^:h1l]=PP`
+\@8oT[C#I&rDEVoq,@>or[e(.s"tWY5!D(i3B9#U1bpd=/M/S,1,1L=1,1OBrAFU3r]U9C"@u9]
+92#.Sr^dGf6qU<S;,U=h;c<T\(-jZ=4[;A'7Rp!F:/">U9h\8T9hnJXr_EVj:/4[\;Z0Jl;#3ud
+;$'Qi:]!ue;?'Jm:B45_;>a8g:\mof;#jGk:BOEj:f.'e!`Dllr_NJhnPB0]r_NJhr(m>hs%iPh
+s%a_3;,C+d:Jaqe:f:4k:f:1g;Gg7k:f1%]9LhH<6T$t(49I`15!T!0!'U<D!^8h3r]L*A"$AY.
+4o%>?56!kI4oeU^<WPNPq`k'Fs$-HIq`t3Kr]pKMs$?WKp/CohpJq&jr)NJl#Zk&,<E<.#<`]#t
+p/p`a"B\f0=BGK&r`B#"r_iVls&/em!)i\mq,75ir)!Dh!)EJe!)EMhohYWar_EAe!jf8ArjDj:
+\Gj&=\cBAA]`5YF^AYeJ^qmkd_Z.OR`;[aU`rF*YaT'B^b5TTabQ,oecMu2jd/MGmdK%bqe/Hlg
+f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jo4BCkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKe
+s7uZjqtpBjrVc?eJcC<$f)L7~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>"6-GbY5PL&X8o<uWWK6$WrAt$W2HMhUnn!a#b[ZXPGG"NV5F6j!i;ckqkjG6rl#Yk_ns:,
+^q[Xu]tD"i]",A]\$i`Q['TOns-NGFs-3VLPQ$^gH@(!OB4b_RV5'WOR?s(sLkUA,HZs[VIXcp!
+J:;orJ:RWK#%1nJ?XR?GrjW!<[f*Q4ZMq*VYck42R]**[V5C,dMO0Zp\W_K!OD\rOCM@NuCi*s)
+Ci=95EHQSXr.k<,!/19%s+0ors+1&tqg\Wpr-\TnHiA?iHiJEkH2i3hGli;=I/83fI/eNoH?oF5
+!."Qg"*o-9H2MsgHhr-fHN8HlI/nZgHi&-gH2i3jHi/7*I=-<cH?XRUG'8"MF)l>CF`VMCDuOeb
+Ec#KMHZ3k\ZX-u:?NshB?!LW=?2e1/?2e11>le27pg!u.?XI.<?NOP>ZMq01?2@h*?2In*>Q7n,
+>QS,5=o)>%SH,8ZTDtM_T)d"4aoKW`b5TKdaN)<>_o)/as24`.s.]Rgq4dqcq5)uGrMTJ6s3(Gb
+rQ5)^o?.-Yr6G>grQb>e!RAshbl>ldaooi-a2Z-u`W*j[ZEpmE['fnA!OoT<\c95@]DfJC^&PhG
+^]2(L_>V4P_o0Ll`<+'"a8X0[aoBN_b6#o4c2Q#gcN)>kd0J+Ke'umte^j`O!SH*)g'ZTih;-rE
+hr*GOir7s=jQ6C'$g6a<l0@R"m-O-,mf)YUnF?MKs766_rUg6cp\4X]rqZTjqtpBjr;H6dJcC<$
+fDg@~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>$0$u)NfK*YN/NVgMZ&D3L]E5-L&u^LGl<9oK`?](K`$N(`r<pm`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!:;IeeEkIK=kEq0i9j)-^BQ<`N.#IX?B`FEDP@BkM!e?X6l?=^kh=@KBnFqdTJ&#$$;5
+Mi3IMrJ1B+s+CT/JqAW#KS08Us+:_pDKU,YDJO39@q9%WrF-+EARo@aAnYglCN',orcS-^s)n<_
+s)\3\rc.mUrc%pYrGhUQ!HE)TDZXfpDt7fAD>e;CD>eAMD>e>PD>e>PD=qfCDuO_TDu+GODuOVn
+Ci*s(CMR[!BPD-pBOtdfBP2$l@:4Cq@ps8/rDN_p;uKVo;#jMj;uTbq;Z]iq;u0Al;uT\p;u]hs
+;uMXT;u0Dk;u9Jk;#sKjr)*Mlqb[9EqLnm&rKdGJrg*SN!L8oGPP::APPg19M"QW%MYrD-MX-3#
+N;nh3R/`QSR-U+=R-p:AQBhB4!0dAEs,dJjZa7$G[JmT8\%)FJs1/3Brk/9Es1\KIs1eWNrPAWR
+`5MVn!li:$rlG,]s2t>a!mJp6rm(Pi!7:_m#L_)MeC<%!f)F8%f\-8X$JX@lh;7#Gi8ESRro4%?
+jo4BMkNM0plK[^%m-X3.rpKmWnc&+Zo)SF]o`Fj]p\jmdq>^<gqu6NkrU^#>s+14%s*t~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>!od<`r`K2'"'AT(<rQ/#<r5ns<rZ5$<rQ2"<WYld:]4/i;Z9Sp<;TPn`r<pm`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!:0;uT\p;u0H8/1iD42E!EX5!D(i3]T,V1c$mA0.ee.0etI=1,1OBr\a^3
+$U$^;4$,W":.n5P8c;9\8cM="7n-$>8l8J`:fC4i1bM!V5;>Sq85N)U9MJ:]:&dui9ht[^s%WPj
+oMYTarD<>drD<Vm:J^mbr)*Jj!`)WhoMPN_qbR&bs%rbmrD*DipJCoer_NPjr(d;fohYTar_EVm
+;,L0f:B45j:\moc:C9ip:esh`;G^.f;#X>n;c*Hk&5uG&:/";L6:3^s4?Pbi5!T!0rB13G5<]!.
+r&k0F4$>_jqEOmAs$-NI!*0#!!CB'K5Q3qJ5Q*kE5la7N5lX1N62a%C;uTbh<Vfbo<V0>l<rc:q
+=8#b`<s)Q-=]kN%rE0"rqc!MmrD<Pmr)<Ags&&\js%`Vir_<Df!)N2_!`)QdrD*U&Za7$G[JmT8
+\%)FJs1/3Brk/9Es1\KIs1eWNrPAWR`5MVn!li:$rlG,]s2t>a!mJp6rm(Pi!7:_m#L_)MeC<%!
+f)F8%f\-8X$JX@lh;7#Gi8ESRro4%?jo4BMkNM0plK[^%m-X3.rpKmWnc&+Zo)SF]o`Fj]p\jmd
+q>^<gqu6NkrU^#>s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>ir?+aXKAV+XK2)qri$1%Vkp5cUSFQWrgs=^S6)M^rhTgtWMl_kVPa<is2>hn_ns:,^qd_"
+^:h1l]=PP`\@8oT[C!9Gm$@X9,F"CTH[0sPB4b_PUnjQOR$EksM2$S0I<TmYG(,!lIsufpJc:0(
+KOS=r?t+9W\-'1GZEsM8rilL.Y5YL7X/qb[V59cmNh*qLLQ.^?Df#Dfs(i!WDJjB5F*)YSK_U<(
+L4t<[K)^B&J:[KIrdjrsqg\Wpr-\TnHiA?iHiJEkH2i3hGlW0dHi&3jHN8BiGlN'eGlN'eHM`*h
+HN8HmHN8HmI/nZlHiJEkHhr'fH2i3jHi/9kI/n`qIK+R3H?XOTG&qhLEH6)@FEDMBE--2CB52:7
+F)YuSrEfb8?!U]?>@%57rE]D/s'5Y1>PVP-?=.&G?N"44?<sl9ZN.<->lJ%+>l@n,>5qh1>?Y05
+>Pq\(T)PA]T)YD_ao0?^bPoZ`aoBEaa2Q!7otpO!!i)Kaq4dqcq5*/Lrho[kpWENZs2t;^s2srV
+!6tJfrm1Pgr6GJjc-4E2bQ#]faiMNB`r<p_`3HSQZa7$G[JmT9\%&sI\H9@S]DfJC]`>eF^B23e
+_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X$JX@lh;7#Gi8ESR
+ro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrU^#>s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>iW5%!rf$u<Mi7:drJ:Q2L\c`-KmJ,Dr.G$&re(6(rIt9j(rX>/_SO%'^V@Lr]Y(kf\[f5Z
+[^NTNZa0LXpjN0ks*aZis'$=G<`W4$I!U*]FEDJ?C1q0g?XI&B=^,<Era?"=@:N_U@qGX=s&B),
+MZ/M7MMV7e!/CH+rdt6'Jc:02H?k-pFGt3bM/dHVHt6_p@fBm;AH-3@B)ZKGC2J"dG5cX`Foul/
+FERS)!crC&rc.jTrc%pYrGhUQ!HE)TDZXfpDt7fAD>nACD>eAMD?"MQD>nGQD=qfCDuO_TDu+GO
+DZXlrDuOVaD/=')Chmg$BkV-mBk_2YBE)ZF@L6O]A7B"a;c?RmrDNYm!)iYlr`&kq!`Drqp/:oh
+s&B"s!/pf7qGR;kqbmAi!DlYk;ZBVl;#Z+EK`?c(QN!0KQ33J>Q'D*.qNV#8!/UW0s+g]4M"cc'
+MZ&J-MXZQ'N;SV6Qhd$KR/iW?QiEHAQiE?OQ2HjHPPpXMOg20sZa7$G[JmT9\%&sI\H9@S]DfJC
+]`>eF^B23e_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X$JX@l
+h;7#Gi8ESRro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrU^#>
+s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>iW<1`=8l>-=B/@%<``@'qc3Pp!*B"t!_Q*Vr)*Jlr_ihs;uKVo`>HP2_SX.)^q[Xu]tD"i
+]",A]\$i`Q['R(.;uKSo;u9N2.k3,12`ETZ5!D(i3B9#V1G^a?/hJ\-/c@C61,1XD1c@0J5<V(j
+4[;a@9*%XVrC[&\"\;-R84Q/K71r6e;Gf5A4[2+f7Rp$F:/+JW9`@`l:/+JW:J=M[;"@Na;#jGk
+;>sDg:B45i;>F&d;?'Go:Jam[;>j>f:\mof;>a5`;$9]k:Jamd:]=,^:B45i:BF?i;#F,h;#X8e
+;#O09:esk`:JXe`:Janc;c$=e;,^Cm;,C(g;G]qY91;396T7.k5!T!0rB13G5<]!.r&k0F4$>_j
+q`jsAs$-NI!*/tu!'pEGr]pKJrBU6G!(-ZM!(-ZNrBL'Us&8u!p/Uohr)NYqs&K"uo2kZglrX3h
+s&o(uqbm;is&/em!)i_npeq,hrD<Jh!)EMf!_uNeo2#Ka:/:das02a5Za7$G[JmT9\%&sI\H9@S
+]DfJC]`>eF^B23e_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X
+$JX@lh;7#Gi8ESRro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-Hk
+rU^#>s+14%s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Aio/juriH+"pT"7m&ZDV*V59u_US=HST:hjKSsu>NV#R:kW!'#sV5C-gV]!Fj_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa6sBm$@X9)jGVpHY7#)AS@p8S=5e/P)Y9PK78/lGB\4\Jc:--J:E'"It<5]
+?XI8OOT)`p[^39GZEpjBrim]PYH=n-WiW8$V5'0=S?8!+MN`""DJO$&Ci!m)D/aQ;GC+uAM"c])
+L&m!]rdk6'J:N4GK)^DtJGam!IXQWlrd=lrH[:#:HiJEjH2i3hH2i3eHi/9jHi&'fH2MpeH2W$h
+Hi/9eHN8HmI/nZnHi89iHhr'gH2`*iHhr-dIK+[%H$Xd^G'%nLG'.j(F8p7pE,p#ACM7LgG]I\[
+?XI,F?!LW=?2e1/?2e10>l\+(?2n:3?N"48?<skB['R(7>lJ%+>lIt,>5qh1>?Y04>PhV(T)YG]
+ScYP*ao0?^bPoZ`aoBEaa2Q!7q83-)p7hAX!2TFej/2gRrMBS<pWENZs2t;^s2suW!R/gecMl/g
+cMYujcHXSWrlb>a"3JX)`r<paYHY79ZEggC['[7?[f<f:\Gj&=\cBAA]`5\F^AbnI^];4L_?.Wn
+`;[aU`rF*Ya9'K+b5TQhbg"DXcHjh`rm:bpe,Ihte^j`O!SH*)g'-6dh;-rFrnn.BioB([jlPXe
+kNMp0#3tO@m-X3.rpKmWnc&+Zo)SF^p&Facp\jmeq>U6gqu-HkrU^#>s+14%s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Dio/jVNK&nrMti/1Mi.IireL?)"bhV_H[LGDKDpQ(KDpQ'Kc.hH_SX.)^V@Lr]Y(kf\[f5Z
+[^NTNZa6sBr-nHirdFiqq0X)b>[:E4<E3(HH$+1KEGoN'AS#7T>[(B8@UoCG#%M(M@U`kZr_rr!
+<-%tr!K)^3L])o?KS+o/K7ST(J:E#sC34]QDJaE=raZ";raQ7F@qB4`BkV6tE:\8QFo?I`Fo6@]
+F8p:[EVseUEW1"XEVOSSE;OSRDZ=YGDYe5LD";HADZ">ODZ+GOD?+PLD?+VRDYnANE;skPE;jeU
+E;skTD?"MPD>\/VBkV3oC2%?mBkV5[@Kr!/@q':Q;uKVo;#jMh;ZKer;Z]iq;ta,h;u]hs;u_dT
+N;?HO;u9Jl;?'Gm;>a>l;>X2iKDU<%L&@88Q2['RQ^3o$PEV1,PQ-mHLB<<gM#N2-M"li'M?&S.
+MXHE%N;\\6Qhd$KR/iW?QiEHAQiE?OQ2HjHPQ$^PYHY79ZEggC['[7?[f<f:\Gj&=\cBAA]`5\F
+^AbnI^];4L_?.Wn`;[aU`rF*Ya9'K+b5TQhbg"DXcHjh`rm:bpe,Ihte^j`O!SH*)g'-6dh;-rF
+rnn.BioB([jlPXekNMp0#3tO@m-X3.rpKmWnc&+Zo)SF^p&Facp\jmeq>U6gqu-HkrU^#>s+14%
+s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Mio/iu='/U-=&r=$<``@'q,R#es%E8er_i_o!*&np)8sG0_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-k+;uKSo;uKZ0.kN>32`3HL5!:tg3&rrU1G^d@0E*R(/c@F(1(c?#2)[9K5<V(k4@Mk89M.lJ
+r_!/]s%!Mf84Q0>77K^76:<L+57]M=77U'J9hS2S9MS8V:/(R\m8<p]r_WVlrD<Aes%rVjqb[/e
+rD<,`rD<;cqG72i;#O/i;"mfe;#X8j;#X8h:A%B_;#O2i;#jGj:]F8k:\did:]F5k:]!rr:Jah_
+;,C%d;,U1gr_ibp%8g&&;G'SS:.@T<2a0J)55dVG5!M404Sq8D4$>_jq`jsAs$-NIs&K&!!($KH
+r]pKJrBU6G!(-ZM!(-ZNr'1!U!E<+m<VTVn<<-)!<<#ts<qBDg=S5bq=SGks=T2Iu=Sbqm;u]bo
+;#jMl;ts8j;>O)h:B!rg:/CFW%Sohp:Tq",Z*L[AZa@*IrjMj9!4`$=s1/3Brk/9Es1\KIs1eWN
+rPAWR`5MYos2P)Zrl>/_b0'_,#L(H;cHab^d/MDndaS3F!S,d#f)aOWrn7P1gtgfChu;O@iSrnX
+jQ5Lck3(t-km$G=m-O-,mf)YUnF?MKs766_rq6<bs7cKes7uZjr;6HjrVc?eJcC<$fDg@~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Hio/kSXK/G'X/`/nWXl),Vl$>fUna]ZTqJ'PTV)4T%[ro3UnjiaVPpJmVkp8frhgRL_8*h#
+^:q:n]Xtbc\[],W[^EKKZE^Y%QMd$JBJ=d\BkM$jV5'ZPR$3VkLkpY3H?aXWG(5'oJ:E#sIt3*#
+JRMnm@Uc(A\$iTJZa-q:ZMq*PYcY".X/`8$VPB6?UV`7NN1G!-D/3j"Chmm*Df^)HI>%QSs+pB(
+s+UQ-KDpH*JUi9%JbjutJbaioIfb(II/\QoHi\S?rHnQjr-A<grH\EhqKr-fs*F`lqfr-dr-86e
+rH\Hjr-\<e!.=co!.=`lrd+Niqg/6es*FQhrd=]npO!9mH?jg\G'S7QFoHFsFa%kFEHH57Bk`TV
+EcGuR?!U]?>@%57rE]G0s'>Y0!*fG-qcs;1?X@(;?NXV?ZEjJ9qHWu)r*95*s&oY1>[1K:=]nu*
+>5FflaN;R&aoKWab5TN_a90H$`5DMiqk<t_s.T@bqP4(dqPF"brho.\rhodns3(DarQ5#\s3(Gb
+rQ5)^o?.?^c-=PZcd2O7!71Sg!mSs5rlb>a%EZ]2`l5p"YHP17Z*L\7ZN7G@rjMj9!4`$=s186B
+rk&<G^:sT]s1nZNrke]Q!6"lUs2P)Zrl>>db0%oNbfn?2c4J=Kd*^7he'lgre^i='f@\dUg'-6d
+h;-rFrnmt=ioB([jo4BRkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\sseq>^<gqu6NlrU^#>
+s+14%s*t~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Fio/kSNJrgSMti2/MuJS5M#W52L55\]r.G,tHtE5.s+LB(s+LB*(W+#(^V@Ls]tD"i]",A]
+\$i`Q['R'CYkrnJIJSBmIJ\C,>?Y<==&r@%H[0dVF)Yu1B4k^]?!RA4$XmOS@UW_S@:E_W@fB@,
+<<IZ-Mi.FfrIkE.K7ec.Jc:0<Isui]FF/pcE-6YAA7T+XA7T1\AS#OgC2\1]G5l^bFoZ[`F9HZ,
+F)l=#EVj_SEW:(YEVXVVEH#mpDuOYSDt7fBD?"GBD>nGND?"MPD>nDQD>S5MDuOYNDuO_TDZFbR
+DuX_TDuXeVDZ4JQDZ"GPD@gZ$CMI[$CM@NtBPM3mAnYlW@0LslARf.ar_ibn!)iJgnl#Kds&B"s
+s,6l8qGR;kqbmDjs%i\mr)3PlqG70Eqh4j4rg!GJ!gf4<rfdAFrKI59r.t<,r.t-)nqu^jrf$l8
+pm:rHs-WkSfpD](s-<PIs-*JG#Hk86YctC<ZMq02['fnAs0i!<rji'?s1A9C!kl=^rkJKKs2"]O
+s2+iTrl+oWs2Y,[#Kb-2bKJ,Rc2Q!"cd:%ddF-LmeC<%"f%8O+g&B\/gYCW@hV\=j"l\J$j5f>$
+jq-_>l07L!lg4!*mdBQ4nF?&JncJFTo`"O`pAamdq#:*hqYU0hr;HTcrdk*#s4@:$~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Jio/kS='/U-=&r=$<rQ1u<W?%u<Us/l8kVkU;?'Pn;ZKeq;A[3d^q[Xu^:h1l]=PP`\@8oT
+[C!9GZ*<^rr)*_t<'s#(/NE_es#p`O3]K,Y2)I*D1B&p+/cRR/0etL<2#]B42#f]E4$Get91qlK
+8cD?]8cM<a7n-!>7fGgf7RTQr4Zttd7n-'H:JOSW:B!oe:]=)j9i"XM;Z0Dl;>sDg:]F8h;>a8e
+;$'Qk;"RW_;#*o^;#O/i;"mfe;#X8j;#X8h:A7Q`;#X5m:f1(dr(d;hr_EMjpJ:fc!)N>c!`)Zh
+rD3et;G^:k;H$On;#XB!8P2TJ7RKR22?#f<4T[f34oRS@4Tdc.4[/^,r'(-Fs$$H_r`0"bq`k$E
+!'gEIq`t3Kr]pEJr'(0HqG[Dpoi:cfs&Jqq!``9$r`8Vlr)i\ppK78n!*K5'qH3Ynr_WYnqc!Mm
+rD<Pmr)<AgrDEMi!DcJi9`\!bo2,H_s%Wg%YHP17Z*L\7ZN7G@rjMj9!4`$=s186Brk&<G^:sT]
+s1nZNrke]Q!6"lUs2P)Zrl>>db0%oNbfn?2c4J=Kd*^7he'lgre^i='f@\dUg'-6dh;-rFrnmt=
+ioB([jo4BRkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\sseq>^<gqu6NlrU^#>s+14%s*t~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp!T0sWWWT6#WN#cp!i`,rrh][krM'@erLj4`rgj7`S<KFCrhTRj#,nN!W26AgrhgOI
+^V@Lr]Y(kf\[f5Z[^NTNZa6sBYd!P]rfo-LBk:jbA79#HV4a?HQB[AfL4FYuG]n:SIt*$!I=?Zo
+J:W<(@:<MOA"C-=[Bm4;ZN%0QZEUL6XKAM(Wi9QABUcr*M4/F)EGTB)D/a</DfKlDH\;-L!/U<'
+s+UQ-KDpH&Jc:3"Jbt'!JbXcnIfb(II/\QoHi\S?rHnQjr-A<grH\EhqKr-fs*F`lqfr-dr-86e
+rH\Hjr-\<erI+Tjrd+Qjom6L^s*XcnpO*!fs*Po6H?sj[Fa%nLFE;MGG&qYCF*2/2Bo[^`EG\ud
+>?bD4?N"10?N4=2>QA"->l.h*?N"45?<skBrj2H+rE]>+r`fD+#?b;:>?Y04>P_M'=o=ina2lBE
+rQ5,`rlY5^#0=j)`5BL0rh0.^s.]Icr1X4eUAUedV#."dVZ*ClVZ!F^VZ*LlVZ+d=b5KHYb5]Zb
+b5]T`b4EdXbg"E'c32D9bfe3/apuP6`l>*^Xfek2YctC;ZMq03['d=@[K<qJ\Gj&=\cBAA]`5\F
+^AbnI^];4M_Z.OR`;[^W`lH.!a8sE*rlb>c"jP?<cd0u;d0e=NeC<%!f%8O+g&B\<gYCW@hV[8L
+iSrkWj5f=ak3(t-klL)8rp0[Qmf)YUnF?MKs766_rq6<bs7cKes7u]kqtpBjr;H6dJcC<$f`-I~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp!T/h/MZ8S9MM[2hM#W52L55_^s+UE)s+:ApHVjWmre1<()h`isKn[=W^V7Co]Xtbc
+\[],W[^EKKZa-j?Yjm2BIJnO=>$G-3='/R'I=$6`FE)55BOt^\?<gW:>%(iK@:3PQ?t*SVAH#O7
+<E+:&Mi*:FL5,Y\re(f7JqAQ)J:E&R?!_c7Ec?F*A.2pU@Us"ZAS,RfC2ItUG5cUcG'.p(F8p:[
+EVaYSEW:(ZEVOPUEH#mpDuOYSDt7fBD#eDAD>nGND?"MQD>e>PD>\;MDuOYNDZFbLDuX\YDfBZ6
+DJoGj!,hRM!cDporG;pWCM@HpBPV9pB5)&Y@0CmmA7K'I;?9Wmoi(BY##eK#;cAU4rf$\Or_r\l
+r_`\l!)`Yls&&Sgr.G'8qj.5HrK[SQQBdYtrfR>;LPP\]",DVcL\uu'M#`G4MtW%pMuJ\6MtiY7
+QiNKKQK"81Q2m3JPlHpSXKAV-YHP17Z*CV6ZN@MA[JmT9\%&sI\c95@]DfJC^&PhG^]2(L_>_=O
+_uI[S`<+'"a8X-\aiaV+s3(YkcHab^d/ME"daQ^qe^`7&f@\dUg(N/qh;-rFi8ESRioB([jlY^g
+kl0fIlKeH9!U]=SmfDqJrpp*\!;-9`s7ZKerV6Egs8)Wirqu]moDX=@JcFC&J,~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp"lEE`=&r?#<WQ9&rDihrr`/Pjs&B+g91\tXs&/bnr_aNI^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYd!Xrqbm>Zs$@S\5<_1k4#o8X2)6mA/h\h0/Mf.:0f(L>2#]?>1d*u`5!2;,91__S9)_E]
+8.\9^84H';7R]a<8k_E52+C.8:('ck:JFMX:/=SZ:/L"L!)`ShqbR/erDEJhqG@;j;,Hm^rD<8b
+pe^ob!)WDerD3Gir_NMgpeUfar_ESl;,Q^Vs%i\knkf9\(/n(+;,U7i:fC:i:fC=k8P2TJ770I2
+r]^<E!^8h4r]L'@"$8V.55IMA56!kI56"X^<WGG_5Q*hI5Q*kE5la7N5lX+N5XG<4!C/mI;Z]s"
+<qTJh<qoYl<<-)!=8uCt<rcA%=oVV!=8,et=]kQ&"^"o1>$4u+=8Ytq;#jMn;u9Jk;#jMl;ts8h
+;>j;l:JUm`!DZG^;#a;uXKAV-YHP17Z*CV6ZN@MA[JmT9\%&sI\c95@]DfJC^&PhG^]2(L_>_=O
+_uI[S`<+'"a8X-\aiaV+s3(YkcHab^d/ME"daQ^qe^`7&f@\dUg(N/qh;-rFi8ESRioB([jlY^g
+kl0fIlKeH9!U]=SmfDqJrpp*\!;-9`s7ZKerV6Egs8)Wirqu]moDX=@JcFC&J,~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp"5ht8Wr/joWWB)trMBUlV#@&!U7n<TTq@pJSXl:@Ru*T)rhKUlVl0Nm#H">pVPg?+
+^&GYU]=PP`\@8oT[C!9HZ*:I9Y3qT.Q"F`BARf1X@U`_P?CI4EO,8XBI!g0`GBJFdJUW#tIt*!"
+J:WA_?X[H4\@B!GZi@?2Yop?VY-"e+WiN2#P%J?@Dj?9PEcGo1Bl%[(CMn*4G'JK)L]<)7LPCS>
+L4t>6KDpK&JcC9#Jc(-"JbO]mIft4JI!pGBI/J?kHM`!fHN&3hHMW!dI/eNnHM_seH2MpeH2W$h
+Hi8?fHNSYDI!kj=rHeHiom6O_rd=]np3c[_*-usXG'A.TG'7kHF*2PEFE2P<Ch\lZE,ge?>@%57
+r*9J4?!U]?>Q.n)?2e1.?NXV?ZEjJ9qHWu)r*95*s&oY1>?kB9=]nu*>5qb)Scm'SaN;R"b5TKe
+aN)<=T:_eNT`CbaU&1SaU]7%iUSO^_V>[:iV>mFlVsgM^VuNXlbQ#``ans6\bPTHRbQ#fdc1B6\
+c2Z#fbPoWeaiDE%XT#=,Y-5%5Yd(I=rj)[5[C-"Bs0i!<rji'?s1A9C!kl=^rkJKK!5\WN!lMsp
+rl"oXa8X0[aT0K_b5oi3rltPjd/MEGdaQ^qe^`7&f@\d1g=tB;h;-rFi8ESRj5]4]jlY^gkiq?s
+lg*p(mI'E2n*ol;rpg*]o_nFap@n=[q#C0hqY^6hr;HTcrdk*#s4I@%~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp!T2c.MZ8V7MZ/J4M#N2-LAuu,K`$H)CjLJ\r.G$&re(6(s+LKf^&GYU]=PP`\@8oT
+[C!9HZ*:I9Y46u@IK+Zs>$G-4r)aJ2=BBTcDJNot@UEGH>?Y50@KKtGA,Tm:A-HOD<)lnBrepf3
+"GhedKnfS[!eZ)WrdbW2Ir8Ou?t=7uI:[#$@U`kYrac4EBkV7"luiPTG'8"OG5cUeG'.nJErC%Z
+ErL(YDuahSE;sqXErU.TErU.ZE;a_RDZ=YGDY.cGDY@rHDZ"AODZ4MPD?+PNDZ4SQDXD?HDJsH4
+E,TXmD#eJJDuOYSDZFYRC_LT!C2%?pCM7?mBkUpa@<ua#@rD9Doi(lg!)`Jg#uOSu;cH^p;i?S5
+N;?HO;u]_q;>sJm;?'Gm;>jDl;><ueKE.85QN!0JQ3<P?Q'7F2L\HT-LPCP=L]3,)M#`G3MtMto
+MuJ\8MtWM6QiNKJQK"81Q2m3JPQI&LXT#=,Y-5%5Yd(I=rj)[5[C-"Bs0i!<rji'?s1A9C!kl=^
+rkJKK!5\WN!lMsprl"oXa8X0[aT0K_b5oi3rltPjd/MEGdaQ^qe^`7&f@\d1g=tB;h;-rFi8ESR
+j5]4]jlY^gkiq?slg*p(mI'E2n*ol;rpg*]o_nFap@n=[q#C0hqY^6hr;HTcrdk*#s4I@%~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp"Q/';=&o,ur`/kqs&K)"!*/borD`r!5"\KF;?'Pn;ZKer;?=MFrk&fS]",A]\$i`Q
+['R*DYct=6nPfBarBg]U5sdn*r^%ej3]AoQ1GL[=0.nk.1GU[>1GL[B1c7-I2*F#a4@Vq98kK"S
+s%32\&4]8^7n,p:77K.,8kVf67S3SS$Va;i9h\8V:ej_Z:uG4O;>X2d:]4,g;>j>U;>j>d:\dib
+:B45d;#jGk:B45i:]=,d:\mod:B=9hr_W&Zs%i\kn5'6b:esn`r_XS4;H$Lk;GpFi;,^Cb8kM`E
+6:<ds4Zttl5<f'0!'L0B"$8V.55IMA56!kI56"X^<WGG_5Q*kI5Q3qE62a%M5sRa656=)75Q4R]
+<;oqk<W,tu;tj8i<W?,"<ruK,=Sc)!=T)D&=SGnn=T2J'=Sl/"=T)A(=BAT#;Z9Mp;H$Nk;Z0Gp
+;H$Oor_rVjr)*Dh!DcJi9`\!bo2#KaX/u<&#Hk86YctC;ZMq03['d=@[f<f:\Gj&=])TDA]E5d\
+^AbnI^];4L_?.Wn`;[^V`lJ)"s2b8`rlY>dc2Puhcd;[=0@J>!eCE+#f@S[.g=k<9gtgfChr*GO
+ioB([jQ5OdkNM0plKdd&m-X6/n*fc9nc&([oCW"S!quB_rV6EgrqcQirVZWmoDX=@JcFC&J,~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa=hqm4iWN#lqs/H4$WiE%srhf^l!2TOfs.]Oe!hc-Vrga%ZrgO"YR@RFYU`ZM3W2Z_o
+V5C,fVnB[S]",A]\$i`Q['R*EZ*:I9Y-%5[s-3_!BkCperaH%@@:3GK@K'XA?\NrTH$=IUJ:E1M
+IfY"JrIG6-@UNSRQFOH5r3ITQZ*LU;XfSS'X/r=aQ]Ys"DfKi<Ec#Q+CiO60E-->LI>.$Cs+Uc6
+L5(J<KnY3XJc^LRJGt,uK)^E%J,+WmIfk+HI!ts@rHnNiqg&3fs*=QhqKr0grd+Wjqfr-dr-/3e
+r-A?ird=Herd=WjrHeHip3QR^r-\KjqL&!`'mt:PH?j[YGB\+MF)uGGF)c8AC2.J^G63,;?2e1.
+>mObB?!LW=>?kG2?2\+,?NON=ZMq3,>l@t+>l@n,=oMV->$5!4q-*f$"J3WRaN4A&qTAfZ!6G/2
+s.JqVpS.Y_qka4frMBOkrho4^rhfdobl#Zab5KHZb5]Z^b4EdVbl5lYc2c,gbl>lcaoKN^WWB0%
+riH7)YHRr0!O8s0Zi@B4[JmW7\,Wu;\H9@S]DfJC]`>eG^]2+L_>_:V_o0L4`Q#p<rl@7Eb0%oN
+bg"DXcHjkadF$CkeC<%!f%8O+g"P07gtgfChV[8LiSrnXjQ5OdkNM-ol0@U$m-X3.n*fc8nc&(\
+oCV\Sp&F^cp\jmdq>^<gqu6NlrU^#>s+14&s*t~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa:hqm5hM?&M2MZ8V7MZ/J3L]E5-LAlo,K_^6%H@&KeKDgK'K,B8oKS@(O]=PP`\@8oT
+[C!9HZE^X<YHG"tIKb.I>$G-4r`B/'rE0)#rDs;9?sR#@>$GHFA,]s;@0pFPA7K1M<)ln@repf3
+!JlL0L&Zf-K7\aSJJ`lSDf]>tARoCaAn,:Z@q9+]AnPjnDfp3fG5l[eG'.tOrH/3aF)l=#F8p:[
+EW9tXDu=SSEW:(ZEVa_UEW:"VDu=MQDt7f=D?"MJD>eAMD?"MQD>nDQD>S5MDuFSBDuOYSD[16"
+DJj<.DJo2er,2OQrb_[OrG2FI%qo]mBkM-n@U`bZB5)'p;Z0Mo;Yj>l;?0Sj;Z0Jl;?]uu<)\^5
+rf$\Os&8blrD<Sl;>jDl;>3lgKTqbuQN!0JQ3!><r.k6,s+gQ/!JcF/L]<2+M>iD1MtW%oMuJY9
+MjX4)qNq8Lq3L$,rK[GKrKR;]!NW=$XTGZ/YPta,Z*OA8s0Md6rjMj9s1&'=!kQ"Urk/9E!5AHI
+s1nZNrk\oX`5KX6`l?'ua?@Yfb0.uPc-=PZcd:%ddF-LneCE+#f@S[.g=k<:h;-rEhr*GOioB([
+jlY^gkih9qlKdg'mHs?1n*oi:rpg-^o^r.Us7QHerV6Bfs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa>hqm3k<`W6"<Wc?$<E8oqrDiVnq,IMt8kV_R;>sGq<)Z^pr_id/'"b`c\[],W[^EKK
+Za-j?Yck43nPfHcr'LTQ6:+%+r^-ZPr]qPl1,1F8/hS\21,1L>0f([E1c7*I5!(kh7S6?H8cD?^
+8cM<q7n?0@7R]d87Puna9M8)T9MJ8V9`@cl:JFVZ9i"Vbh,45Mqb[,brD<GirD<Dh!)W,]rD<8b
+rD3Pk:f.$b!)WGf!)WVi!)WVis%`Jfpe^ob!)`_lmS<j[:[([e:Jate;c-Cj;H$Fh;Gg7h;Z9;f
+7g;OU4[)%o557;@497T/qEOj@s$$QK<E9$!!($KHrBL?IrBU3FrBLHN5X@[65Q="K56=b_<W6%k
+<W#ej<;ons<rZ8#=TDS%=8uD#=TDRt=8Q+u=oVV#=8lA&=92K%qGR;i!`DrqqbmAi!`DrrrDWMi
+r)*Dh!DcJi9`\!boMGOe!NW=$XTGZ/YPta,Z*OA8s0Md6rjMj9s1&'=!kQ"Urk/9E!5AHIs1nZN
+rk\oX`5KX6`l?'ua?@Yfb0.uPc-=PZcd:%ddF-LneCE+#f@S[.g=k<:h;-rEhr*GOioB([jlY^g
+kih9qlKdg'mHs?1n*oi:rpg-^o^r.Us7QHerV6Bfs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa<hqm2FWVrb"WN)qtWMl`oV?3TiV#6tjU7n9RTDkG^SH,2ZS,\oZR?F%@rhLR2Vl6Sn
+W2?DfVRsFM\[],W[^EKKZa-j?Yck43XmhVZI!0.6Ac?-H@preP?XR8K?sm>Ira,e9@qK:_raQFI
+@:E\S@:3PP?t>J3\[MCA+L/5VY,n\(X/r:`R#n)XEH-#>F)5T+D/aH4F*MqXKSK8W!/C-$!JZ=+
+LAuu-K`$E'JUi:LJcC?%JHC@OJ,+WmIfk+HI!ts@rHnKhr-A<g!."KgqKr3hrd+ZlH2DjdH2i*k
+H$FRZr-JBjpj<$e!.4]mr-SEhrHn6aqKr0grHnBgpNupfrd>?(H$Xa[G'J4SF`MSIF`_\Hrb;[R
+G'e^jJR2[]?2n72?2n10>Q7t+?2\+,?NOQ>ZMq3,>l@t+>l@n,=oMY*=TM]1q-*f$s2G,\aN4>%
+qo\f-!M?%\U&Uk_U&(JbUSO^`V>I.gV>mFkVsgM_VuP!Abl#Zab5KHZb5]Z^b4EdXbg"E'c2c,g
+bl>ldao]\`WW&n&X/rD)Xfeh1ricI/ZEjJ9!joACrjMj9!4`$=s1/3BrO`3F^:sT]!l2Xgrk\]R
+`;[aU`WaE(aN;QHrl[%?c-FV\cd:(edaQ^qe^`7&f@\d1g=tE=h;7&Ii8N\Tj5]4^k2tjjl07Ku
+lg4!*mf)Y[nF?&>o(2JFrq6<bs7cKes7u]kqtpBjr;H9eJcC<$f`-I~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa>hqm2FMMd8gM?&S6MZ8P3L]E5.LAci*K_^6'Joc99K)L?$K`-N;KY+h+\[],W[^EKK
+Za-j?Yck43XmgcC?!:H8=]bT*r)a)'=BAO)rDj#%=BAT'<WlN+<``B!<<I<$Mi7Ohre:B*!J5t&
+JJN]PE,pAaAn>RcB4GC[@q9._B4u'uF8^7YFoZ[TG4p%\FE;JCrc8'[rc.sWs)7gSs)J'Zs)ImU
+s)J'XrGVUOs)7IGp20eHpMKkHr+uFOrGD:HrbqgS!c;gmq/?1KrbqaQ$#ad%Df0H0D/O7cDu=MQ
+DuO_UD?OlpCi!ncCB%rLC1h6qraH%>BPVI*E;if8;Z'Jn;?0Sj;Z0Jl;?]uu<)\^5rf$\Os&8bl
+"]8)n;,C-g;Z9Pf;#ca[Q26gGQ2d0GLB*/-LB`QkM26tCL]*&-M>E,.MtW%nMuSb9R/iWJQhm'L
+Qhcs,Qi33MQ2[!KW2]cr#HOr-Xf\b/YPta-Z*L\7ZN@MA[JmW7[fEr;\c95@]D]AD]tV5[^B23e
+_>_:P_o2Pns2G5_aN2KFb5TR=bg"GYcd0tcdF-LneCE+#f@S[.g=k<:h;-rFi8ESRioB([jlY^g
+kiq?slKdg'mI'uB#Oq9Ro()DDo`"O`pAamcq#C0iqYU0hr;?Ncrdk*#s4I@%~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqaDhqm2F<`W4$<E)st<VTPm<W?,!<W6%q<W6#$<CBGLr)*Jlr)4;-]=PP`\@8oT[C!9H
+ZE^X<YHG"0n5BH@-pp?ir'CHP6::`=4$c5$5sRb%69mb"5!D1r5<_:r5X.Fr4?Pbs8kVcJ8P2TH
+8OuBB7n?*<7R]a'1-Rod9he;V:/">V9`@cd:'49g<`/Wi!)_fT!)`Yjq+prcrDEPjqb[>inkfHb
+;,R9gqG.,e:]=2j:]F8g:B45d;#jGl:]F8j:]F2f:\R]a:]4,Y:]F5k:[1dU;%QQ":esnb;c6Li
+<)?Lm;c6Tn8d@gV8kVc?5<ej*s#^<F55IM@56!hK5#kV^<WGG_5Q*hI5Q*kD62<eE5Q="K5Q=[_
+<W6%o<<-"p;u'Dj<W6#%='/U.=Sl2"=T)D&=Sc+n=T)D%=Su7u=T27q;Z9Mp;H$Nk;Z0Go;H$Qo
+;ts8h;>a5j:]=)g:&n)_:][Mori-4(XK8P+Y-+u-YQD)8ZMq03['d=@[f<f:\Gj&=\cBA@]E5d\
+^AbkK^qmkd_?%Qmrl+oW"in^*aiV^)b;%5ccHab^d*^7he'umte^i@(f\,!4gYCW@hV[8LiSrkW
+j5f=ak3(sml0@R"m-O--rpL*]naZ2@oCMVRp&Facp\jmeq>^<gqu6NkrUg)?s+14&s*t~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@grhfaprM]grVuERnV>d:iU]7%jTqJ'NrLX%[!1a%Xs-itT#\]ZtM56rDW2KTm
+(8Rh)\[f5Z[^NTNZa6sBYct=6Xf\[io9LDFG("abIqN5#@UWSL?t!DM?sd2I?t!GPAn>O`A,Kg8
+@4Ykq?t5;/\[SrP['[0GZ*LU;XK/A&WMc/IUU?GEO)f;\CM@^+EH$)HH@^eKLA6N(L@g6$LAlo*
+L'!'^K`-N&JcC9!JcC?%Jc:/oJGt&uIK=hErI"NirHeBeq0Mmas*Xfms*=Zjr-86e!-nKg!dK!9
+rH\KkI//-fHN&<hHiA?jHhD^^HiABnI=2!?qgA*a!.=Zl)Ld*ZH?sg\GBS1RF)uAEEd;b?Bl%R&
+E,TT"rE]G0!+#G+r*B8-rEoP1!O8s0Zi=>/>l7n*>lIt-=oMY*=TM]1q-*f$s2G&ZrlG&[s2tA4
+qk!h[!204_rM'7as.BIfTV8(WUAq%eV>@(fV>mFlVs^DaVp3K1qof#^rQ4rZs3(;^o?.3Zc-?13
+rQY8cs3:SfrlY;arhfdqWW&muX/u<&s/l@*rilF-!4)U1s0Md6rjMj9!4`$=s186Brk&<G^:sT]
+!PlPN_Z.LR`;[^V`lJ)"!QiL`b7;b@cHab^d*^7he'umtf)F8Hf\,!4gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U$m-X3.n*fc8nc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUg)?s+14&s*t~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@gre^K/re^Q/r.b-'re1*"s+1>LH@0`3KD^B=K7\c0\[f5Z[^NTNZa6sBYct=6
+Xf\[Qo6q0U>$YHA@TQZ7=BAU+=B>E&!a&K(rDs>.='&F'='&F(<`])t"EKH[Mhq@fre:B*s+;2@
+JUr8uDfU5ZEcH86An>I]A7T7`BPVI*FT$=`G'.s)FoZ[TG5-4[F9$C\ErU1\ErL(YDuahRE;sqW
+EXHf,EcH,>EcH)<E;XYOD?+VHDY@rGD?4Tlq/-(Js(qjSD/F1gD>A)JDuOVRDZ"GKDZ4SRDZ=YT
+DujlprbVXQp2BnIrGVUQ!cDjmrbW9aCM[d#BkV3nC1q$b@UN\U@UT16s&/hprDNVlr)3Jjr_i\n
+s,6l8!)rbms&8_k"Ahrm:f70hr_`Dds-*MKqNh/HnV7+#rJC?+s,$Q/rJUB,l&,Y&R@0H8Qhm'L
+Qhcs,Qi33NQ'D9G!N<!sWWB0%riQ4'!3cC+s02R0rj2X3!4Dg7s0i!<rji'?s1A9C!kl=^rkAKL
+_>_=O_Z7XS`<"!!rl>,^b5TQobg"GYcd0tcdF-LneCE.Lf-K#%g=k<:h;-rFi8ESRj5]4^k2tji
+kiq?slg4!*mI'H3nF5uIncJFTo`"Lbp@n=[q#C0hqY^6hr;HTdrdk*#s4I@%~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@gs&B)!<VKJm;uT_s<EB&us&Sqqr`9&!"B6gB92>I`rDFJ3;c6Rm\[f5Z[^NTN
+Za6sBYct=6Xf\[&o2>iE.P!&&/NEVo%mrWK6:+%*5X@\&5X.Lt55mbr5!M7s5<_7o4$?&+91hcI
+8kMZH84Z6A84H$;7R\pm5<^qo852oS9hS=^:&dri:K:<k;>=#h;<1UT;>a8d:]4)j;,I6h!)WPi
+s%r;as%r_mrD3Mj:Amug:'+3f;#X8j;#=&_;#jGl:B45i:]F2f:\R]a:]4,Y:ZkRO;&`>,:Jjqe
+;,U4h;,gFl;H$Fa8kDWI9gh?55!Jd*s#g<EqEOa=s&K&!!C9!K5PRMC5la7N62<eE5Q="K5Q=[a
+<E</s<VBAk<!$'!<;T\n<rZ8#=Su8#=T)D&=T)=g=Sl1u=T27p;Z9Mp;H$Nk;Z0Go;H-Wp;ts8h
+;>a5j:]=&i:/=[[;#[?nW2]cr!NW=$XoGO(YPtd+YlM*/Zi@B4[JmW7[fEr;\c98@]DfGE]tV5[
+^B)-drke]Q!6"lU!QN1Za8sE*rlYeqc-FV\cd:(edaQ^qe^j`O,hUf(g=tE=h;7&Ii8N\Uj5f=a
+k3(pkl07L!m-O-,mdKW6nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVcBfJcC<$f`-I~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!8RILs/>sqs/#dmrM9Ffs.]Od!2'1\rgbR0S"#k8R@'A.QBRe=UnjiaW2Q\o
+WMZMg\$i`Q['R*EZ*:I9Y-"h-X/_HXQ48:dI=6HjB5"EKW23j-ra?7D?=.#I@:*JUA7]7]A,Kg9
+@4bqs?t5G3\[]&R['[0GZEg^<XK/A&WiDS]XF,kcEcc;<C2S!1Ecu\TJqf#6r.b$&reC*$!/CK,
+s+^N,!ec2Yrdt#u!.b$!!.b&uq1/En!IfIpI/A9hHMi'aHMW!gI/eQmHMi$^H2N!aHi89jHiJKk
+Hi89iHhMd\HN8HkHhr-aHiJKkIK+cpJ,X^-H?jXWG'A"IFE;PIBkqBsD16MDNrE>a?3":/>QJ&6
+r*B8-!af>Br*BB/rj2W1r*9/*r*95*#[1A7>?b65>$Lf+s&oBA!6>)[s2k51qO[_Z!201^rhBCc
+r1O(`r1X4eV#7(cVYm7jVZ*L_VZ3RmblGubbQ#``ans6\bPTHRb5fcbc2Q#ec2>leblGudb5nH:
+rhfdqWW&n&X/rD)Xfeh1rilF-!4)U1s0Vg6rjDm;\@DOK!kQ"Urk&<G^:sT]!PlPN_Z.L``5T^8
+`lH0AaiV]KbKS61c6gladF$CkeC<%"f@S[.g=k<9gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB
+!V#XYncJFTo`"O`p&Ojcq#:*hqY^6hr;HTcrdk*#s4RF&~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!o/WhrJCT3reg`4r.t<+qh>$&q1As)K7ec,FF-i9re(-%rdtim[^NTNZa6sB
+Yct=6Xf\\*WdXPh!FAt/?3t%A<e5gMHWX<LrDru"r`9/%='5E&"^"i,=&rB!<<RB%N/NPlL]<&1
+L4k54rdkE,IsZ?aJSB+JralRL@q0%\Anc!uEclMHr,i'aF`mV*rcRdTpiQX[F*%;#s)\0Zs)A!V
+qf)OS"EJL%EcV(ts)@jRm;DW7qJQ+Grb_^QrbMgVDJj<.DJa7dD?=`oDZ+DPDZ"GKDZ4SOD?+VS
+DZ=SRDYJ)IDZ"GLE!^N%D/O0,CM[d%rb2LMBkh*dra?"HA7BIU;H!KmrDNVlr)3JjrDNSm!/pi8
+qGR>lqGIGn:f1(dr)3MkpJCmS!1!JJrJ:$"s+p]3pk\s,regZ2s,-c5p583ps,?oE!1<GGqNq8L
+q3L`@rg*&?s-EYL!Mu[mVZE`qri-4(XK8P+Y-+u-YlCs.ZMq31[/[Q5[K<qJ\Gj#?]">TR]E5d\
+^AbkJ^qp#es2,>b`Poj:a2l?Dai_fMbg$.4-I:&ddF-LneCE.%f@\d1g=tB;h;-rFi8ESRj5]4^
+k2tjjl07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<b!;HHerqZTjr;6HjrVc?eJcC<$g&HR~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!Sg]Q;ufko<;ohr<;TYq<qfSo<rH#%<)QR]91]"Yr_ibqs&0S/\$i`Q['R*E
+Z*:I9Y-"h-X/](j;[Y-+.kN>*3&X,i5X,07r]pTP5sbK:)*pJO5!D1r5<_:r5X.Fr4?G\q91qlK
+8P2VS8HVLR84`_L#t6[75!;A)7nleV9a"3c:/4jc;>F,h;<:^U;>sDe:]4)n;,C(d;,I0fr_W5a
+r_WVlrD<Mhr_NMg!`)Whr_NPjr(d;hpJCoeq+q#c!)WViqG@#arD;rY!DlSV;#!lf;#X6-;,C4i
+;,^7f;cQ^n8P2NF84Gs63'KJg55[SD4T@S@5PI>A<W6&!5l<k@5lX+M6N0:H5l<hN5sIS5<)lut
+<<-"j;uTbs<r#bn<WH5#=Su8"=T)A&=T)=k=S>hr=Su+n;Z9Mp;H$Nk;Z0Go;H-Wp;ts8h;>a5j
+:B!rg:/CU\!Mu[mVZE`qri-4(XK8P+Y-+u-YlCs.ZMq31[/[Q5[K<qJ\Gj#?]">TR]E5d\^AbkJ
+^qp#es2,>b`Poj:a2l?Dai_fMbg$.4-I:&ddF-LneCE.%f@\d1g=tB;h;-rFi8ESRj5]4^k2tjj
+l07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<b!;HHerqZTjr;6HjrVc?eJcC<$g&HR~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtV_("fA2qVPU-gV#@(gU&q$\TDP5[SH>=NS,SiVRJ`BVJsoc<Unjibr2:4'
+V7*e=Za6sBYct=6Xf\\*Wq;SjH$t*gI:m2oXf/+oTU_C:@:!;IrEok@AS#C_@q/sG@LHs\?t!TB
+\[f5XZaB_<)mZ`RYHFq,XGWF,\sA/7FEDJ?CMn-3EclVWKDpT)LAuu+LA?W(LA$B+L4t;6KnfS\
+s+CB)rIXots+(*"rI=WnrdXrs!.Fcmqg89fr-A*aqKi9kH[Ga<!."Ker-A<grd"Kh"F5<?H[>[<
+qK`0hI/A9iHMr3aHMMpfI/J?fI.r!fI/JBmIf"WpJ/`i[H[0mYGB\4QE-?AKCM7HsCi+E<DN%k-
+?=!M7s'#J.r*B;."(,GD?i471ZN%63>[@53rE]>+r`]Y3=^#$6=]np4q-*f$s2P)ZqjmSTrh'4`
+qP!n_s.T=_s.TCc!McIgV>6tgV<FcWVp,+a!6kAarlY2]qo\r^qo\NR!6kDds3CPer6G>e#L(B7
+Unji`VZ*IoW2]crs/Q.$riH7)YHRr0!jT&:rj)[5[C-"Bs0i!<rji'?!5&6C!kl=^rkAKL_>_:P
+_o2Pn!QN1Za?I_gbKJ,Sc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkih9qlKdg'
+mI'E2n*ol;o()DDo`"O`pAamcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVdbre^Z4re^W1s+gW/q1\g$pO`Htrdb,_H;ONlrIbf9JqLM>['R*EZ*:I9
+Y-"h-X/bf@%pWCI?=6i8JqAGuH?XLREr9#=<WQ9(pfIJr$!C8.<`OX.N/NSmM#W/QL4k23JqAQ)
+C2e0KE,g)6B4b[a@qB4`BkhU,F`heKF`_a(Fnp4[Fn9eOFoQR`F8^.ZF8g1ZE;skRE;jhZEcH)>
+qf2XTqetk>pMKbErGDRPrb_XPrG2OPDJoAhqJH:Orbh[O!,h^QnS\AFr,21GrGMLNqJcFR")r0q
+DuOSdChmg"BPM3p@q&qV@Uj%]@Vo$B;uKVn;>a>j;>jDk;ZMaTN;6?O;u0Ap;,C+e;#F5j;>3oe
+PQ@&8reLH.nV?ams,$c5rJCH0s,6]1l&,S$R/NEQR.ZgBQiNKKQM-[EQLL7@Q3EPLUnsobrhfdq
+WW&ptWrT7#XTGZ/YPta-Z*L\7ZN@MA[JmW7[fEr;\c95@]DfGE]tV5[^B)-drk\]R`;[^V`lJ)"
+50:sjbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjkiq?slg4!*mdBQ4nF?&>
+o(2JFrq6<bs7cKes7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVd,r_r_or_reqrDikupJh8q<E/rt!*&qq"$&tC;Z0Jl;A3#.;H($3['R*E
+Z*:I9Y-"h-X/bej!%Rt!(G7X(6U="%4?P\e3C,tt6:!q'69mb!55mbQ5!M7s5WM"i4?`[:"A23V
+8kT(S"%YpQ8H)'b2)7<[1Iao1:JCa^#u42i9hnG`;,L0c;>F,h;<1UT;>sDe:\mo`;>sDb;>j>k
+;>sAn:JO[a:]=)i:Jh!c!)WPg!)WVks&/em!)WJe!)EGfqb[&`r_W&Zk>:qNqbR\r:f1%f:K(1i
+<)lmqr^mGf91_T@6T.(kpc\I<pHARWr`0%c5l3e@5lX+M6N0:H5l<hP5sIS5<)lsu<:a&g<;oqq
+<Vfbr=8l;%=85nt=TDS&=8uD&=o)7j<rcA";u'>j;$'Wo;u9Jk;$'Zq<;ohk;Z0Jk:]X?er_3Dg
+:\dieV#R7kVZ*IoW2]crs/Q.$riH7)YHRr0!jT&:rj)[5[C-"Bs0i!<rji'?!5&6C!kl=^rkAKL
+_>_:P_o2Pn!QN1Za?I_gbKJ,Sc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkih9q
+lKdg'mI'E2n*ol;o()DDo`"O`pAamcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUP[Vl0Nks/,pqV5=0er1a:dT`1S\T)Y>^S=BJG!13PL*L`R8VPU/fVl6Sn
+WMZMuZa-j?Yck43XfSS'Wi;9XQ61BpH[L0QB:c6)Vl$5ZR$O#!MM?\1H?j^HAS#C^@q#@cs*t2\
+?t!UF\HB@LZaB_<)mZ`RYcb(/X.YiM_h3u/FDu/6DfTo?Fa/LjK_pH)L4t?\LA6Q&LAcl4L51P=
+LPLV<re13'!JH+)K)1&tJH(2uJ,=cqJ,XlsIJnQiHi89gH22d_HNAM@rd+Tir-80cs*FWhs*=`l
+H@#O:r-JBgs*=`nI!YL5rd"Qkq0Mj`s*X`kqgA-bs*X`ms*jlqrIFot%siSJG^4FTG'%eKGB7tC
+D#S/RCiXQ6?=$q9>lS".>l7n-?N4C4?iXR3?N7>2ZNFH<>[@;5rE]>+r`]Y3=^#$6=]np4q-*f$
+s2G&ZqjmSTrLa+_qk="`rh97_rh9:b!McIhV>[:hVs(#SblGucbQ#`_ans6\bPTHRb5fcbc2Z)e
+c2Z)ebm;P:U8+N[V5:'gVZE`qri6"!!3H1%s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F
+^Abk]^qmk(_Sa:0`Poj;a2l?Db0.uPc2Q!7cd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plKeH9#4:jIn*oi:rpg*]o_nFap@n=[q#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn%=hVI#CgtUQ^MZ/J3MZ8P4M#W80LAQ]&K_^9"K)C0'H@/tMKS0/T&V>YAZa-j?Yck43
+XfSS'Wi:F@IMlBm?!^i>=*]CHI!U*^FE2>:BOtX]?!LQ8qcEf-$XmLT<E3(#Mi<UQM>i>2K`Qp^
+rdtr;JUqrdHAuccG%PAr@q9.^BPM=%ErL1\FoQObF`_a)Fng.YFo$7bF`qqNG'<Y's)\6^r,N'a
+EcQ/>E,]`6qf)IQ!-8$X")r7"E;FM?DYS)EDZ4MQDZ+GPD?+PQD#\>PDYn;JDZ=YSDZ+DPDZ"GC
+DZ=YQDY\5NDuahSD?4ZnrGVRPrc.jT%W?6&Ci+$)C2.EqBkM-grF,k=ARo9L;uKVn;>X8j;>jDk
+;ZMaTN:BdK;,C+e;#F5j;>3oePQ7$JL]*%uL\?Q'M>rJ4L]E;1MZ8V1MWp&qR/iWIQhm'LQhcs@
+Qi<<?QiE?UU8+N[V5:'gVZE`qri6"!!3H1%s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F
+^Abk]^qmk(_Sa:0`Poj;a2l?Db0.uPc2Q!7cd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plKeH9#4:jIn*oi:rpg*]o_nFap@n=[q#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUO]<)iiqr)E\prD`brrDrkss&T%ts&B"uqG[Vj91i&Z;>jDm<<#nsZOO4F
+Yct=6Xf\\*WiE$rpJW.`-nQu%3&Wue5sIIq4$,G^3&E?F0J=t/5<qCr5<h@11^,[!4$5Z%r_!5_
+r_!/]"%YpP8H)'a1I")f77TpF9`@cc:B+)q:/b"d:f1(d;#X>l;?0Sh;Z0Jh;?0S];?B]l;"d]^
+;#4&e;"dcb;#aDl:]aEf:B"&g:'"-ep.kZbr_`\nr)*8cs%`JfrD<2`r_NVk;"7?F;"mic;#aB'
+:esn`:Jjtf;,L4g;cHUnr^mAd9M%T?69b0-qEO^<!*0#!!C9!J5PRJD62j4N62<eD56X><5?(T_
+n5B?e<W6%t<W?,!=8c2"=7o\q=o2=t=oMM(='5&qrD`_oqGR8h!`DrqqbmAi!`N&tr_rSirDEMi
+!DcJi9`\!bqG7BjUSO]^V5F6i!N<!sWrK+"XT#@%XoP[)YlCs.ZMq31ZiIN5[f<f:\Gj#?]">TR
+]E,^[rkB/__84"*_o'F3`Q#s=aN2KGbKJ,Srluh9d*^7he'umtf%8O+g"P07gtgfChr*GOioB([
+jlY^gkiq?sli-5TmI'H3nF5uIncA@SrUg6cp\4X]s7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn+?hVI#CgtUQ:g&7cNVl$>fV>d:hUB70`T`1S\T)Y>^S=BJGs-WhSqj7SMRolP`Uo!se%
+]$D8Yct=6XfSS'Wi;qppm)tJFa\XbI;!2oWMcYiSX>_.Nf/XEIsQ?_Fb#!kIt@TJ#(M5WJm_tsr
+j`-?[Bm7>ZQ6?VZ*:C5XJhn[Y*Os5O)o>XDfTo?G'S^mKnY25qh5$)re:?+s+^`3LPLV>r.b0*s
++U]4L51P=L&Qc'K`QjZrdsutr.+]pr.+`qrdOfnq0W'drH\3bq0N-iHiA<kH2DjcH2`-dH2i3iH
+i/3hH2i3jHN8BaHh_pXHhr-fHiJKmHiJKkIK+coJ,XusIfk4NH[>[:"a,$5FE;F#FpVr!BkqO2E
+Gf)hrETA,!*oJ.ra,V3s'Ph6r*KB.!OH&1?2\%,?2Rt,>6nD8>$G05=^#&*>5q_-`lH,%rgikVr
+h'1_qP!k^!29@arLs4brhBIhrh]RjqkjFkr29"\prrZZs2t;^qTAi]qo\QSs31Gds3CVgrQb>cs
+.K[lUSFW\V5:'gV['0"WN)u!X/u<&s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F^AbkJ^
+qp#e!Q2kT`@]*MaN2KGbKJ,Rc-FV\d*^7he'umtf%8O+g"P07h;-rFi8ESRj5]4^k2tjjrojUOl
+g4!*mf)YUnF?MK!qZ'Vrq6<b!;HHes7uZjr;6HjrVcBfJcC<$g&HR~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUQ:fo#ccreg`4reLQ0rJ(6(qh4ctrIXot!ciWarIb$$%tfJ>Z*:I9Y-"e+
+WiE%sVtb]`>Zk?=?XQr9Jpr)nH?XIODes-"@piVI>$59C@:<YS@fBjDAn4nA<f;oqMi%Fhs+LK.
+L&HW1JU2K^JT>dYG\@"d$"da^C2J!3FEDU&F9?Z-FERS)rcS6a"Eem2Fa!\*qK<6hG'8"OG'.qL
+F`hg*FTQZ+F8BqVEW:"XDu4MOE<(%YEW:"XEVXP?DYe5EDZ=SQDZ+GPD?+PQD#%rED?=`oDYn;L
+Ds;08DuXeTDuX_TDZF\SDu+GPEW'kVE>`e:Df0E1D/F')Bk_<qBP1d_@:E\ZA78D8r_i\lqbmDj
+rDNSms,-r;ND]7E"Aqum;,I6i!Dubo;>3ljPa.P1LPPhamt^[oqhb9-!f;ekp58*mq3_5Mp6YTB
+!13MIpQtiEn<a0K#GRugUnji`VZ*IuW2ZbrWiN2%riQ4'!3cC+s02R0rj2X3!4Dg7s0i!<rj`*A
+]=\'T!PQ5H^B)-drk\]R`;[_-`lH0Aai_fMbfn>WcHjkbdF-LneCE.%f@\d1g=tH>hV[8LiSrnX
+jQ5OdkNMp0"mYF?m-X6?mfDqJrpg-^o^r.Us7QHerV6EgrqcQirVZWmo_sFAJcFF'J,~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn+?hVI#CgtUQ:g&4kI<<#nq<!$'#<W,tt<W6%t<W5tq<Vo_t6qTsIr_`Vl&6)S+ZE^X<
+YHG"/X/`2!W2KDh!\>cOr[emF1dODl4[(ti3]B#S2)?p>/hJV.1G\qcs"js:1c7-R3^$:<9*7aX
+91o1T(J%%c7n6$,2*O/[77p<M:JOVZ:/"DX:]=8n;GmEi!`;cjr_`\n!)`_n!)`\mr)*;g!)`,]
+!`;cjp.tQ^qGI5g!DcPd;>a8j;?'Go:JOX_:]=)i:Jga\r_`YmrD<PkqG7)cr(m>hohYN_mSE%C
+q,.)es%rbmr_F>,;,C%`:f((f;,U@m;c6Id8kMZI7RKQ<4o.D;56"X_<WPKOq`jj@!($TNs$6ZN
+5Q!bH62a"Q5X@Y"<)lsbnl#Qg<W,qu<W6%t=8u>#=8l>%=nPnf=oVUr=8>eq;u0Dk;$'Wo;u0Dj
+;$'Zq<;ohl;Z'Dj:]aEf:&[lf:]+&hTa.<eUSO]^V5F6i#H4W$WiE,#XT#@%XoP[)YlCs.ZMq31
+ZiIN5[f<f:\Gj#?]">TR]E,^[rkAKL_>_:P_o2Pn/]PiPaN;TJbKS2TcHab_dF$CkeC<%"f@S[.
+g=k<;h;7&Ii8N\Uj5f=ak3(t-klpA<m-O--rpKmWnc&(\oCV\Sp&F^cp\jmeq>U6gqu-HkrUg)?
+s+14's*t~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?5"rh]UirhKLf!29=_qk!hY#+V0PR[KS2r0dGL#+J\cVPU/frMU1)
+VQd8,Xf\\*WiE%sVtlVoI<KpbI=>a>Xf87qURmm>Q][/\KRS:IGQW,=J:@HH$@[PXJ72hqVRa7H
+rNuU2!4)U/'X+WuS!(FKLQdpDFE28=EccPOKS98Ws+L-#reCH.!JZC)LAlu*L&cr+K`$N(K`6T!
+JbsurJ,FirJ,OipI//-fHMr-bHMMmgI!bj=!."Kerd"Hgqg&3frd4Qhr-8BjH[C)3HhVjWHi&3g
+Hhr-fIK+coJ,OosJ,Fg5I!^-bH?jXXG][nIF*;>6CMIU#E,gkCr`oJ-s'5P/ra,V3s'Ph6r*KB.
+!OH&1?2e+-?2In+>6nD8=^,'4=^,,+>5qb*`WF1_SbSfTTDkM\U&C_cT`Cb^U&UkdUB%+hV>[:j
+VuN^kVt[(fVuERebQ,icao]c/b5KHZb5]Z^b4EgTbl>ofcMl)dcMu/hbl=@9U&UheU].%iV5F6i
+!iW)tri-%#XK;E'!j8`1ricI/ZEjJ9#ILnH[^NZS\Gj$<]">Se]Y2"m^V@S"_8=(,`5KX6`lH0A
+ai_fMbfn>WcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;o()DD
+o`"O`pAamdq#:*hqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?7[s,-f4s+p]1rJ(<*q1SWtq1AKp"aX!nK7nmSKFEI:YHG"0XK/A$
+WMl`jINDj">[CfH<E=^$I!U*`FE2>;BP:pb?sHo?>%(lK@JjU7AH,X5<e$'eMi%Fhs+LN/KnTGX
+&o2B*MK!KYHY6u&AS5RgCM\!3r,hs[rcA-_qfMg[s)nEcG5-4XG5QI_G5cUiFEM_JF`heJF8KtY
+EH;"ts)7sVr,DCMs)A!Xq/>Y<qJGtE!,_[Prb_XP!,_^O!GuZMD>J,ODf0IjD#eJQDs2*7DuXeQ
+DuOYRDu=SREVsbUEVsheDf0H0DJa3+C2%?qB5;&V@KU+N@rM?Er)*Air_`VlrDW`S",r4:;>a;l
+;u';t;,C+e:f1+g;,[BjpJ;$XQ'P4$L]*%uL\ci%M>`81M=ui(MZA_1MuJ\7MZB.>R/iWJQhm'L
+Qhcs@Qi36?QiE`YU&UheU].%iV5F6i!iW)tri-%#XK;E'!j8`1ricI/ZEjJ9#ILnH[^NZS\Gj$<
+]">Se]Y2"m^V@S"_8=(,`5KX6`lH0Aai_fMbfn>WcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnX
+jQ5OdkNM0plKdg'mHs?1n*ol;o()DDo`"O`pAamdq#:*hqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?7%pf%5nq,RJqr)WbrrD`_qq,@Mi78QiZ;>jDm<")^0YHG"0XK/A$
+WMl`k;ZfuM-nG9K+u_AF5sIOs4?GV`3&ENK0etC6/1WG21GUaB1c$sF1Hdc_rC[,^r_*5^*_8dj
+84PQk5!gto7nl`S:/=VY9i+S\<)?Fh;c?Rkr_NSlr_WVlqbdDkrDNMir)3Mkm8<p]r(dAj:Jh!c
+qb[,dr_NVk;#!ob;#aAq:esk^:&Rle:'"-epJ1ie;,R9irD<PkqbR/cmSEgYm8)qBq,.)es%rho
+:J^jar_F2(;H$Fh;H$Ur;bB\S8kViF75mC/56!eG55RS=56"X_<WYQP5lEqA5QF+L6N9=P5X503
+!($QJ#=(R?5?(W`61RqT<)rfrpfIAqs&o%tnQ>iooiLle!)r_lr_W_p;cEQkrD<Vo;cN]oq,7,f
+rD3Jir([5frD<Nes.TIe!2KOh!Mu[mVZNfrWW&n!X/rE%XTGZ/YPta-Z*L\7ZNmkF[C3NQ\%)FJ
+<4]]R]Y(qk^;%Fu^qmn)_o0L4`Q#s>aN;TJbKS2TcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\U
+j5f=ak3(sml0@U$m-X3.n*fc9nac8BoCW%Ts7ZKerqQKgs8)ZjrVZWmoDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!\H!h;-lAgY1B7f[p,"rh]Ogs.]XiTqV@Uqk!hYs-s1[R@0HAR0&bDRJN9WQ^h0SVPU/g
+W2]cps/cR.X/`2!W2HPjqN`+HI!pBlBP;%ZW2?D`R[BG)Mhct:H[Bs[FanpjrI5'$Jq\ed?t,)o
+\H');[/[K3Z4sOHXf%\XXd>!;G&q_CDfKlFH\-qHL&Zi"L%C&uL\c`*L&H]'L&Zf-K7\^RJH1<$
+JbsurJ,OorJ,XosIK+]iHi89iH2)^^HiJHnHiA?hGlE!dH3/A<HN&3iH38M?H[>[:!.+Qg!.+Qi
+"FPQCI!kj=pNlFXqL&3fqL&3hs*jips+(&tr.+cts*PK,H$FRXG'A%GF`qS;C1h9rF`MC!>lS%.
+>lJ%.?N4C4?iXR3?N.52ZX!K8s'5J-qcs,)#[1A6>?Y04>?go,s&oBA!lnDDpn%GVrh0.^rM'%[
+rM'=e!MlRiVZ3RnW;3@dVZ!FmV=i%4bPfT`b5f]aans6\bPTHRbPTN^c2>lec2X@?T:hjNTq\<W
+rhKRkVZ*LnVuWgrWrK+"XT#='Y-5&.YQD)8ZMq08['d<M[^W`Urj`'@]DfGD]tXK\!PlPN_DK0K
+`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-uHi8N\Uj5f=ak3(sml0@U6liukFn*fc8
+nc&([oCW%Ts7ZKerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!nT#h;-lAgY1B7f[kt:reg]3reLQ0rJ(<*pk8Qtpk&?n"+Y_qK)UE#KF<F7XfSS'Wi;qp
+Vl'<>**ccU?=?o;<e5^IH['XRE,B<%A7K"R>?Y0=@U]7Fs'l7DAnG%C<c7nq!/gc3s+M;EKnP)2
+KR%]`JTGp_AnP[f@qB@iCiON;rH/'\!-J3]pN6"Lqf_aW!d&R-rH/'\qf2^WErC"XDuahSE;snX
+E;OYSDujrtq/>Y<qJGe@!,_XO!,_[NqJH+Is)7pTs(qjSD/F1iDs;07DZFbPDuX_RDu=SREW'kV
+EVskVEs6N$Df'B.rbDUNBP_A]@glgT@Us"Y;Gp@h:f1*f;Z9Pl;Z0MtMi<US;,R9is&8_k#uOMr
+;,C+f;Gg?k;>3liPa.P1:]6+<L\uu%M>W/0M>)o)MuSb2MuAV7MZ9(=R/iWOQiEHPQhm'LQhcs@
+Qi36AQiEW^T:hjNTq\<WrhKRkVZ*LnVuWgrWrK+"XT#='Y-5&.YQD)8ZMq08['d<M[^W`Urj`'@
+]DfGD]tXK\!PlPN_DK0K`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-uHi8N\Uj5f=a
+k3(sml0@U6liukFn*fc8nc&([oCW%Ts7ZKerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!nT#h;-lAgY1B7f[j&#q,I;moN(lis&Anrs&Atrr)<_r91SqXr_a5)<)]p$XK/A$WMl_m
+VGm@k!%\%"&hZ.&2a9Pk5<M%i3&`WN1,:R;r[\d>1G^dB1GgsF2)@EX4[_t:91_`K9E%Kj84Q-?
+7l<Fn4Z,c%r_Ebo9heAV;,:0j;?'Gq;,U=j;>O,h;>a>k;>sJk;>X8j;=.6];>a5h;#O2e;#4&h
+;#a;k;#!ob;#aDm:BF9c:&Rle:B+/b:B=9hr)*Yp;Gp@grD3;cohPQaqbR2fmSE%Cpeh#es%rbm
+r_NGgr_`Yk$W0\s;Gg4g;HHgk9E%Nc9LD3:r]^?Fs$$<EpHJUWs&T+ar]g*A#=1[D6:!n&5Q!bH
+62a"R5X@Y"<)lsb5Q4R]<;9An<)lrq<r,no=T;P'=T;J#=RfPo=SPtt<q]Jm;u'>k;$'Wo;u9Jk
+;$'Wo<;fbk;Z9Pj:]O;h:(0op:S+/MTV/!PU8+L_U]I<hrhodp!3,sts/Q.$riH7)YHRr0!jT&:
+rj)j:[C*HO\$rmH\H0:Rrk&9F^AbkJ^qp#e1rI8N`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;@/KiSrnXjQ5OdkNM0plKeH9#4:jIn*oi:rpg*]o`"O`pAamcq#C0iqYU0hr;HTcrdk*#
+s4[L'~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naSV?!IjV#R4iU&q$]T_tGZT)YA]S,o+Jr0dSPs-`_Ns-FIi=/Vpl
+Vl-JkW2Q\sX/`2!W2HPjV#6MnG]\=\I:m2(XJi(nSsbt3P)G-MJ:%9?%sNSSIXlouIt*$&JV7H?
+F8i]M\,Nc7Zi76EYcj"TNk1L3RZV]6Ec?#>Fa8RlK_L3#K_C,kLAlr1L4tA9re:E,rIk*&s+:<'
+r.+j"rIP!!!eGlPrI=crrdXlqrd=copj;scs*=Bcq0W-h"+,??H2W!eH2)^bH2W'fH2i3gH2`-g
+Hi8?iHh_pXHi&3gHhr-fIK+clIfP#uJ,=cqJc:3"Hjb7FH$FOWF`VYICi')c$#G!/Dd6OO>?kG4
+?2e11?iOL6?i47/Z2e//>l\.,?2In+>6nD8=^,'4=^,,,>5h\)`WF1_<rS]iSc>;[TDbG\U&C_[
+U&C\cU].%hV>R4_VtHneV=Vn2bPfT`b5f]]aoBN`bPTHRbP]T^c2>ifc(4j*#G7Z^TqS3TU].%o
+V5C,fVl6Pnri6"!!3H1%s/l@*rilF-!4)U1#ILnH[^NZS\Gj#>]"@sS6+t"I^VI\%_SX4/`Poj;
+aN2KGbKJ,ScHab_dF$CkeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naSMYr>2L]E5.LAlo&K_pDrK)C3!J-1*oK7iuQ$*:2-Wi;qpVl$9f
+IN2Tp?=.&@=&jj$I<p*ZF)l/3B4YR\?!CN:@U`aE@LQaWARo@a<`NLbN/W\oM#W/EL4k54K5>OI
+M/RB\HtR,)AS5XlCiOOqFT$7\FSg.RFRsYPG5ZR`FT6L`F9$I_F96N*F8BqSEW9tXDu=SSE<'tT
+EVseODte,LD>A)FD<u0<D#/#GDZ=VWDJa3+rbVXQrbq%=q/?:PqJZ@Nrbq^Rrc.mUs)IpVrcA'Z
+#B4U"D/O3,D#S/MB4V!Os'c7KA7AG6;,C+er)3MkrDNSm"cJ>!NDWRP;Z9Vj;@-2s:f1%d;Gp@i
+r_`Dd"I,1;:J^tGmt^drpPB*3M2@%EM2D"bqhtH4onrg-rL!DKs-W\Ms-WSJ!LT5LQM-[DQLpLD
+Sc52cT:hjNTq\9VrhKdqVP^8hW2Q]pWrK+"XT#@%XoP[)YlCs.ZMq08['d<M[^W`Urj`'@]DfH/
+]tV7r^qmk(_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@em3gYCW@hV[8LiSrnXjQ5OdkNM0p
+lKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s4[L'~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naO<;fet<)r`p!*/tur)Nbrr)E_rr)<Pnr_ihi7JTj]<!fY,WiE%s
+Vl-DfrDX2*.k)u"/N5RH5s[_!r]:cQ2`*?G0eb42/hA\31GUaB1c.#f2$lE-5>FjF8kM`Lr^dhq
+7n-$-0g.`V84QBM:JO_]:/=__<;oeq;>sAl;>sGn;>O)h;>X8j;>jDk;>X8j;=.6];>j;h;#O2d
+;#4#k:esk`q,-ub##S2m:JOVYr_NJfs%rGc!DlYh;?9Wkr_NDdm8*^XmSE%Cq,.)es%rho:J^ja
+r)*Jj$rTku;H-Lk<Dumq92,:V#X^pG5!D+m5!Jj.pHJUWs&T+as$-3Br]p]T6:!n&5Q!bH62a"R
+5X@Y"<)lsb5Q+RW;u]hs<W#np=8>tr=TV],=8c7j=oVV(=8Gqt;ta2j;u'>j;?'Pn;>sJl;$'Wo
+<;ohm;ZB\q;?9WkqbR,bs%`Wcrgj@eTV/!PU8"F^U^*`nVPg>jW2]crs/Q.$riQ4'!3cC+s02R0
+rj)j:[C*HO\$rmH\H0:Rrk(P1^;%Fu_84"*_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(g"P07
+gtgfChr*GOioB([jlY^gkiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$
+gAc[~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'J'VPX3drhBUjTqS-PrL`nWs.01["IkjKR@4&ArgEVMs-NbQ"]p8P
+Vl$BiW!KE&W2HPjV50CUQ54jiI=-EjB4md7W2?5YR$EtrM2$Y2H2`$uJUi6$I=H`pIY33&?smLD
+\H04Jrj;^3'XG*NYDU2f^4qZ@F`__GEH65KIY7WRs+L0$s+L*"re:E,pP/[&#)7hbKnb;8r.P!%
+!eZ)Vr.4m"rdjutrI=fsrI=fqrI"ZnrHeNlrHnKh!."?cpj<$g"+,??H2`'fH1uXbGl`5:rd"Wk
+G^0%0rd+TkqgA<gpj)pfo6^@^r-S9frd=ltI=?Y<J,=cqJc:3"JIR'TI<g$]GBe7ODf9K/rb;XQ
+CiaQT>?h)3s'>V1s'Pe6!+5Y1rNZE.pKdZ$r`]Y3=]ns4>$5'6qHEo%#$Amca&lDEr13kZrh'.^
+rLs.`p7_M\s.fRhs/#XjoV_AZr6+lZ!6b;_s2tDbqT8]YrQ4lXq9/][r6>/b!h5^Nrgj@eTV/!P
+U8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+s02R0rj)X4[JmTB\%&rY\[oDb]Y(qlrkC_6_8=(,
+`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc9
+rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@JcFI(J,~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'M&MYr>2L]rQgL51M<re:0$qLeNordjor"ArreKS0/T#cal&Vl-Dg
+Uj`5k(0t$J?!gu@<d9(@H?aUTEH#],ARo4Tr`]V:@:<YR@UimH@g$@B<E>%WN!"omLkkt`re(r$
+S9Tm/G(=4<AS5RdCM[m/FEMa*FS0_MFT-C_FSBqUG5cX_F9$I_F9$I_FT-@YEr0kUDuahSDuanW
+E;aeQE;FMID?=ZmD>S5HD=)3@D>\5ID>J,RDf0H0Ci')frGUq<q/67Pq/?4Ls)7gSs)IsUs)IpV
+rcA!X(N=;3DJa6,CMIQtB4PI\@preUARfUT;#X>j;Z9Pl;Z0N!Mi<XT:f1+gr_rSi$rKht;,C+f
+;Gg=i;,R'a"dG:<:JXg^L]<2,L\ur/LPYSZs+pZ2q25'-rJ^E-r0[;J!1<VLs-WMHop5H@rKd,C
+!h5^Nrgj@eTV/!PU8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+s02R0rj)X4[JmTB\%&rY\[oDb
+]Y(qlrkC_6_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sm
+l0@U$m-X6/n*fc9rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@JcFI(J,~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'M#<;fhs<<#tq<rZ2!<qKAl<;TVo<;KMr78?`Y;>jB";cKcrW2HPj
+V5.)i<@KII.kE8(2`*]a5<V+k3]K)X2DHsA/hAV,0JP@>1,CgF1GgpE4ZYc&r_"5'91qlK8OuBB
+82X4-5=J+89heDX;,0k\;,U7gr)3Plr_N\o;GpBg:]OAl;?Bcp;Z0Jl;Z0Jj;Z'D[;?0Pl:]4,g
+:\moa;$0Wj:Jgmbq+q8m:esk^9ht[`r_<Mj:f-m^!DlYh;?9Wkr_NDdmSEdXmn`(BqGI5gs%rbm
+r_NDfqbd;g'iRt+;c-Ci;cH[j91_`J85)B<2a'>'55[Y>56"X_<rP>a5P7;@5m9VB5s[b#r'16J
+rBCTR5sRY6<`VIM5lOa[;uKYq<W,tp=85nr=oVS(=8c7i=oVS(=8Gtt;ta/j;ts8i;?'Pn;>sJl
+;#jMn;ts8j;u]_r;,I-crD*Ag!h5^Nrgj@eTV/!PU8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+
+s02R0rj)X4[JmTB\%&rY\[oDb]Y(qlrkC_6_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.
+g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc9rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@
+JcFI(J,~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-)!0i=
+j5T(Wi8EMLh;-lAgY1B7f[na+etr>@rM0@crh0:`pn%MVs-s(YrgEhTrL!VQo9]M[rMKUn25dCP
+W2HPiUnjcOQ@!h%H[^ETB4\'@VP0WMQB[DeKn=c"H$FL_It)utIt2uuJV/Pa?t6VD\H');[/[HH
+ZEpj?X-]uSM4A^1FE2AAFa8CfKD^H&K_U9$K_L3#LAlo%LB!&/L&m!]rIt0&rIk?,K7\^RJc13"
+Jc1,sJ,b&uJ,OipI/nZnHN8HlHi86jH22d\HiJHsH[:!`G^045p3Q[_s*=`lG^0%0r-A?ir-\Eh
+pj2LXqL&6gqL&6irdONiq1&HrrIFlu*.i`hH[C'`H$FOUE,]Z2ChdU#Cj0o=>?b?;?![G9s'Pe6
+!+5Y1rNZE.pg*`$r`]Y3=]ns4>$5'6qHEo%#$Ajba&lDErLNt[s.B4^rh94`qk=%_rh9=crM9Fh
+r20+apSRf1q98l^r6#&_!6Y/[rQ>)\q9&NVr65)`rltM4rgNqYSc52cT:hjNTq\9VrhTRj!2fan
+!iW)tri-%#XK;E'!NrX*YlCs.ZMq02['fnA!OoT<\Nd[;]Y(ql^;%Fu_8=(,`5T^8a2l?Db0.uP
+c-FV\d*^:jeC<%"f@S[.g=tE=h;7&Ii8N\UjQ5OdkNM0plKeH9$gmBNn*ol;o()DDo`"O`pAamd
+q#C0hqY^6ir;?Ncrdk*#s4[L'~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-)!0i=
+j5T(Wi8EMLh;-lAgY1B7f[na+er'E_reLZ3L51Q`LAuu(K_^8pK)L8qJ36Y\KS4u2K7noWW2HPi
+Unjc7IU62_?!gu>=&sg!H[0jYEH#`.ARf.S>[(B@@:<VR@UinY@qB4O<E=tUMu\b7M#E&-KEZ^F
+JoGaYrb)7C"__XeDfKgsFT6L`FS0_LFT6L_FSL"VG5cX[F96T,FT$:XEr0kODuanVE;jkRE;FMJ
+D?F`nD/K2gphfD9!,_XMqec(F"`8'lD/F1iDs;08DuXeQDu=MQDuFYSEW'kVEVXVTF89heEGo`5
+Df'B-Ch[QsA7K(YraH(EA7AA3;,R9ir_`VlrDNlXN/`fn;>sJn;ts6!;,C(d:f1+g;,U:h;>3lj
+Pa.M0:JgnCreUH,rJ:H.s+pB*reUN0r/1<.r/CB.qO%)H!1<VLs-WMHop5H@rKd2E!1NnV!M#_[
+Sd1m\TV8'RU8.^`s.o^mrhfgrWN#ls!irE(riH4(YPtd+YlM*/ZN7G@rjDj:\Gj$']">Vf]tV4q
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdaQ^qe^i@(f\,!5gtgfChr*GOioB+]k2tjjl07L!rp1$[
+mdKW6naZ2@oCMVRp&Facp\ssfq>U6gqu6NkrUg)?s+14(s*t~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-(Zj`<
+j5T(Wi8EMLh;-lAgY1B7f[na+f)8SH<W5qt<W#nr<<-(j<<-"q;u]hl;ZK;d;?0Sm;CSTDVl-Ae
+Un^pi.k)u!/1ie<1dF8g4Zkbb3&`]M1,(C7/hJb41G^dBr\Og82)@EW5#2)M!(m/_s%35]'LkVM
+5!^tp7o)rV:f'qa:/b%g;cEKis&&em"Ar&p;,R3e!)`_n!E2no;>jDl;>a>i;=7<a;,C%ar)!;e
+qb[,d!)WYjqGHu`s%`\k9ht[`r_<Mj:f-p_s%i\mq,.2irD3;cpeUobq+pudmSDtAqbd;gs&&bk
+q+q&gqbR8irD3i!:f:4h;,U=k9MGFX#Y7WW6:3n!5!Jm/pHJUWs&T+as$-6CrBUTS6:!n&5Q!bH
+62WqS5sRY6<`VIM5ZC_\;uBSp<W6%t=8l8#=8>tr=o2=h=oVS(=8Z+t;ta/j;ts8i;?'Pn;>sJl
+;#jMn;ts8j;u]_r;,I-crD!?]rgNqYSc52cT:hjNTq\9VrhTRj!2fan!iW)tri-%#XK;E'!NrX*
+YlCs.ZMq02['fnA!OoT<\Nd[;]Y(ql^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^:jeC<%"f@S[.
+g=tE=h;7&Ii8N\UjQ5OdkNM0plKeH9$gmBNn*ol;o()DDo`"O`pAamdq#C0hqY^6ir;?Ncrdk*#
+s4[L'~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh$Vrlg=k64f@SU(ebu<CUB%%fU&L\bTD5#VSc>5[RfStGrg3bRR$mH2!36$q1oI:M
+W2HMhUnjc[Q?I\(H[TR?AZDZ*U7[j?Q&UWSKReAoG]n=^Jq&9$IXcs#KS+td@@dD.!4Vm5rj!,V
+MiG!.NMCW;EH#r?G^G$rK_gE$K_U6$K_L3#LAlo%LB!#3L4t>7K`6]'K`-W)KE-Z&Jc(-"Jc1,s
+IfP#tJ,XopI/nZoHiAElHh;XYHiJHrH[9s_GlE!]HMr-hH3/A:GklX_H2r<iI/J?dHLcF[I/J?f
+I/\QnIK=qIp4)mg!.k*!r.4m"%"EYPG'SCZG'%bFD/K8d$#47&F)P8f>[:Y7?N4C4?iXR3?N%/0
+>khV$>lIq5>$5!4>$>'5>P_P'=ThjGa2_<]=8nciTDP;\U&:Y`U&:S`U&UheU\pqeV>R4fVt$Y[
+bPBB^bPfT_b5f]]ao0B\ana*SbPfZ_c2Z)hR/i]TRfT%Mrgj1`TV2:X#GRugUnji`VZ*LnVuWgr
+WWK6&XT#=&Y-7i/s03'>Za7$G[C3NQ\%&uZ]"@sS5/"\F^VI\&_Sa=2`Q#s>aN;TJbKS5Vcd:(e
+daQ^qe^rF*g"P07gtgiEi8ESRj5]4^k2tjjl07L!m-O--rpKmWnc&([oCW%Ts7ZKerqQKgs8)Zj
+rVZWmo_sFAJcFI(J,~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh$Vrlg=k64f@SU(ebt@)M#<&-L&cr)K_L,nK)C2nJ.REeKS+r2K7p/"V50o^U4-;F
+>o@$O=&j`sH[0gVEH,c-ARo4U>[(B:@UikVraQ=I@q9._<E=F(N/WYnL]E2/Kb8uFDK(5JFF\"9
+An>ReCi+-4qfMj\s)dpT!H`J[FT6L_FSL"VG5cXXFT-@YErL%[E,fmgE;sqRE;FMKDZ=PTDJa7h
+DYS)8D?+POD#8)ED?+PQD#\>PDZ4S=DX_TCDZ4PXE,T]7EH1nqs)IjT!-A!WrG`$\DfBT4DJoGg%
+;]NbA7B(Y@;9=_:f1*g;Z9Pl;Z0MoMuJ\?:f1(f;H$Nl;?0Sn;@HE!:f1%d;Gp@i;Gg<c:^3/LP
+tt1P;#H+IM#2u-M#<#.M"li)M#<,-MY`8/N;&8+R/*-MR/<3OR$j?8Qh?[@Qi36FQiEHRRf8cWS
+=TYN!hZ-Yrh0RkUSFW\V5:'gVuN[qWW&n!X/rE%XT>T.rilF-%^NFI['[6L[^W`U\[f;`rk(G.^
+;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%#f@\d1g=tE=hV[8LiSrnXjQ5OdkNM0plKdg'm
+I'uB!V#XYncA@Srq6<bs7cNfrqZTjr;6HjrVcBfJcC<$gAc[~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%8Arg=k64f@SU(ePoLJ<`N/u<;ont<qoYp<;]br<r>qt<;]\o<:s2i;?0Sm;C\TA
+V50o^U/`Wn/1W>42Dm]`5!:th3B/rS1G^a>0.nh-1,CaB1c%!G2#]?:4$6&.91qnV9E.T`8.A'N
+5!;+f7nQNN:esh_r_W\p;Z'Jh;?Kcm:f73ir_`Yks&&bns&8knrDNSkr)3Dhn5B9`!`2Zgqb[5e
+qb[,d!)WYjqbd&`s%`\k9ht[`r_<Mj:f-s`r_WAf!)WYjqG-i^r_E8br_W&Zk"tnOr_WVl!)WYj
+q+q&gr)!DjqbRAn:f(*i;@$6'92%rL91hbS6NTD755[Y>4oeU^<rYGa5PdVH5<qL45m9VB5s[b#
+r'16Jr'(TU5X/4K<^8l65u^c]qGdJpr`9&#rDrr"q,mMsr)i>hs&]8&rDrhpp/D#jqGI>m;Z9Pn
+;Z9Pm;Z0Gm;Z9Vj;Z9Vp;?9WkpeUpX!1NnV!M#_[ScYOWT`1ViU8+KZUnsobrhodp!3,st!irE(
+riH4(YPtd+Yn"(GZa@*I[^NZS\@K/]]DfH,]tV7r^qmn)_o0O5`lH0Aai_fMbg"GZd*^7he'umt
+f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamdq#:*hqY^6hr;HTd
+rdk*#s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=Jns.]Rgrh9:`!2'%Xr13kXs-s%Vs-WhQpQtrIq3_2K!2fan
+s/7cOUnjc[TqQm`I=,^@Bm-DNUS4'DQ][,[L4FYsH$FRcJ:E*!Isum!K7\bb@>2;(\[]&Trj;^2
+&%$J[QEGt2Q?@=kEHHGRJbt,tL&?W"K`Hf$L&Qi*L%pB(LPCN^K`6])KE6d[rIt9)!/(6$qh"ct
+!.arr!.b&urI4Zm!.=cmrd=]lom6=Ys*Xims*4ZjH$T(/r-8<hH2`'aH2N!cI/\KeHLcFZI/J?g
+I/SKjIeS?aJGausJf'#cH[0p_GBe=SC3"3/C2%I$PB1YI>[:Y7?N4C4@/F:/Z2e/)?27b*>6nD8
+=^,'5=^,,,>5q_5=N/>$=BAU+SXl@Eqk3n]rM'7aqk*q_rhBFf!2TLgqkj:hntu0)q98l^rQ>/`
+!6Y,ZrQ>)\q9&KUrQP2a$C@-IR@9S6S"-">rgj1`TV2:X!huHbrhKRkVZ*LnVuWgrWWK6&XT#=&
+Y-7i/$aI"CZa7$H[C3NQ\Gj$)]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMc-FV\d*^7he'uq!f@S[.
+g=tE=h;7&IiSrnXjQ5OdkNM0plKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#
+s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=JSs+pW/rIt<+rIjlspO`6mp430m!/(6's+C?I+etd*Tj;#5
+?<(!,?@.!DGB7hFD.mQo@UNGG>?bTH@:E^F@g?OSAS+tCCQ&1NreUN-&qj\DFb+IYI:m/'AnPst
+E--2CqK2a[s)dpT!d&R-qfMg[rH.gWr,r'_olU1Src/'[EcV/!!cW.!rbqjUr,;XUrbqsXE,fmn
+E;FMKDZ"AMDYS)8D?+PPD#/#DD?=ZkD#S;ODs2*.Du=MMDuObTE;jkJErC"WEXm)-Df0E/Ci!m$
+AnPXbA,]p?Ht6\`;>jDl;>jDk;ZMaTN<W3V;,U:j;uKVo;>sH%;,C(d:f1+g;,U:h;>3lkPa.M0
+:JamdL]*&+L]3,.LB*/*M>W2-M>N2-Mu/J/Mu&eBQ^F09R/iWPQi<BFQh?[AQi*0FQiEEXR@9S6
+S"-">rgj1`TV2:X!huHbrhKRkVZ*LnVuWgrWWK6&XT#=&Y-7i/$aI"CZa7$H[C3NQ\Gj$)]">Vf
+]tV7r^qmn)_o0O5`lH0Aai_fMc-FV\d*^7he'uq!f@S[.g=tE=h;7&IiSrnXjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=Iu!*/tsnl>]hrDiht"]\N%<E)rr;uK\f;u0DlUb&:8TqO"g
+/M&h=2E*ia4Zkef2`NWP1,1L:/M/M/1G^dB1GpsF2)I-Q3^Z^B9,:,m91_]G7n>^,5!DG,;,C"`
+:esqa;u9Jk;u'>k;#sKjr_i\ls%i\mr_i_o!)ien"&`&r;Z'Dk;Yj8^;?fur;Gg:f:\mod:]!ud
+;$'Wm;#X5j;#F2a;#a>j:B"&g:'+3f;#3ue:]OAg;?0Sm:\mi_:]4&b:]F8Y:ZbLN;>j>k;>sA_
+;#aDk;#aAm;Z9K";,gFj;,U:k<(p$b8d%mU6p<g45PI>A<W6&!5lO"E5Qa595skQ:s$H`O!C/mI
+5QF+J5Q="T5?(Za5X.M";u'Dm<W6%u=8l8#=8H%q=o;Cg=oVV'=8>eh;ufkm;Z0Jm;Z9Pm;Z0Gm
+;Z9Vj;ZB\p;?9WkqG.HbR$a;1R[]e:S=TYN!hZ-Yrh0CfUSIga!Mu[mVuN[qWW&n!X/rE%XT>T.
+ricd8ZEggC['d<M[^WdG\O!g=]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ/UcHjkbdF-Lne^i@(f\,!5
+gtgfChr*JQj5]4^k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>^<hqu-HkrUg)?s+14(
+s*t~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^tD!McCfU&L_aTDG/VSc>5[Rf]%HRJrQKR/NBIQk>[NQDpdZ
+Vl-JkUS=HUTV%firb!=OV5'WOQ^!YmLkU>+G^4OWJU`/uIt*!!Jq8K)@:=T_])B#O['R'EGF"i<
+LR`O2F`_\JH[g[&L5#MXrIt-%nq@."Kn]M\rIss"s+UK+re:?)!JQ4+L&Q`*K)L8rK)^B%JG4Ql
+If+TuI!^3fI!pDAHhMdYHiJHnHMi'\HMVpdGklX`H2r<iI/SEdHLcF[I/J?jI/eQnI/\QjIeS?b
+JGaurK)UB:I!U*aG'J:WEcH&7BkhC"DNo3^>lJ%/?N"7.?Mq,(?27b*>6\86=^,'5=oMY&>5q_-
+=N/>$r`B;)=Iu.Wr1O"^rhB:`rLa.ar1X1eq5+"dr29Rlqka.dp<39Us3(A`s2tDbqT8]Yr5ncW
+q9/][rQPS5Q^=),R@0NCRfT%Mrgs.^!20=bs.TLgrhKUlVPa?j!N<!sWrK+"XT#=&Y-7i/!O8s0
+ZUM7/[^NZS\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF-LneCE.%f\,!4gYCWAhr*GO
+ioB(\k2tjjl07L!rp0gUmdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NlrUg)?s+14(s*t~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^q(!/UT/reCE+re0utpk&<momm$k!JH+'KEn9HTqS-OSlbnk
+&Uo(QG'.hDDJEfp@p`JF>?PG7@K0dCA7K.ZA7S\?AW-PH!/^]2re;,?A9<0XEI;G4AnPdkDfKi=
+F`_\GqK)^[rcIgS!-J3_s)\<bFEIM)rH.dVrH80`p2p:Ts)S*Y!-8'YrbqjWrbqjUpi$=RE,fmn
+E;FMLDYn;MDYJ#7DZ">JD>.oQD/=$*D/O91k\fm.rGMLN!cW.!r,DXTnoF_Lqf3EmE,TZ4Df'?,
+C2%Bl@U`bS@XM]q;>jDl;>jDk;[JAANJrfn;,U:jrDNVlr_a)#:f("c:f:1g;H!KkpeV*XQ'G-@
+r_NTMr.t6*reUT0reUB,r.t6,qhjd!q3_2K!1<SM!1<\Nrg<DGoToB@r0I5H#F:^CR$a;0Rf8cW
+S=TYNs.9:arh9@d!2KOh!i;ckrhfdqWW&ptWrT7#XT>T.ricF.ZMq1!['d?N\$rlX\[oDc]Y2%o
+^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(fe'umtf%8R-g=k<:h;7&Ii8N\Uj5oFckNM0plKeH9"mtaH
+n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;HTdrdk*#s4[L'~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^sK!``2ur`&Mir`&hrr`02&<)cjt<;oho<:Wua;CeN:TqS-O
+SiAVb2F'Gi4?P\`2`*EJ0JP43/hJb41GUaB2D[0H1Gh6U6;RSR!)!5`s%*bl839!u5"8(<:JOb^
+;,U:hr_r\lrDWMir_`Vl#Z4Js;,C.h;H!Km!)ien"&`&r;Z'Dk;Yj8`;Z9Mn;Z9Mq:esnbr)!>f
+qb[2f##\;p:JXe`r)*/as%`\j:/:dar_<Mj:f.$brD3Jkq,.2hrD3;cq+pubq+q#emSDtApe_5l
+;,L.d:J^RYs&&bls&&_ms%sG+;GU1g;,L7l;bTeV91hfM6Ua3:5PI>A<W,qu5lO"E5Qa595skQ:
+s$H`O!C/mI5QF+J5Q="W5?(Z`5X.M"6W@&cr)<Yrr`9#"!*9&"r)i\rr)ieuqcNYss&f;&pJ^id
+!)r\krD<Pmr_`Ymr)!Glr_rVjs&8np!Du\j:C!2PQ^F/.R@=,E!M#_[T)YD_T`1YbU&^tfU]RBi
+VZ*IoW2]crs/Q.$riH4(YPta,Z*OA87C9J2[^W`U\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKS5V
+cHjkbdaQ^qe^i@)g"P07gtgiEi8ESRj5]7`k3(sml0@U6lileEn*fc9rpg-^o^r.U!quB_rV6Eg
+s8)Wirqu`no_sFAJcFI(J,~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV"uUS@[[rh04^qk!YTs.'+X!h#FCrg3MLr0R8Is-NYL!1!M\
+.&`i4T:VXFS7SUqU7Rg@QBR8_KReDqH?aXaJUi6!J:<$#JqJed@=%m`!4Mm7(UUNSZ@A:RQ&D8X
+G'.nJG^b:!L51M<L&-K%L&?VoL&Zl/Knb?ZL%pE%L&Q`*L&Qc*K`Hf*L&Q`*K)L8sK)U>qJ,Fcn
+I0"_Brd4`pI/\KdHM)UcI!bd:o6U:Zrcn6ar-A?irI"QjpNl@VqgA<grd=`m!.=`nqgSQps*jfo
+p43!jrdt'#'SLp_H['g^GB\4ODeWs'BkqO%FE%4b!FB(1?i+1-ZM7`$>lS"0>$5#-=p%o2>?gu.
+s&fG+`Q-$r=9+ukT`1Y`UALYaT`(SaUAptgV"pkaVYm@lVYd4fVZ+a=bl#Z_aoKW]bl>lbb5]Wb
+b506Yb5KHWb5'6Ybl>rePl[2;rg3bTR[X5F#Fq?USt;RHT`1YbU&^tfU]RBiVZ*IoW2]cr&?Dn6
+Xf\b/YHY79Z*L^B['fnA::IaD\[oDc]Y2%o^VI\&_Sa=2`Q#s>ai_fMbg"GZd*^7he'uq!f@S[/
+g=tE=h;7)JiSrnXjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b!;HHes7u]kqtpBjrVcBfJcC<$
+gAc[~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV&!M2@&eL]3&,L&Qc*K)gT%KD:&oJb=QiIfOrsK`?ZATqJ$L
+St2BNI=-<`FE;D=C1^sc?sR#A>Q/+3@K'a@ARf7`<E3T.Mu\b7L_kf"L4s8_M/[NdBk_0kBPVR.
+F*;_LF`dV(qfDg\rcIgS!-J3_s)e9`!d&R-qfMRTs*"Ebs)\6^q/lUW!-8$X!-8'Yqf)RRq/H@P
+!cW.!q/H1KqJQ4JrbhFHm;;o@r+u7IpMTtHs(qdSDs)$.Du=MNDZXltEVseSEV"5LEVjeUErg2u
+rbi*\D/<s$D.I-d@K'^:A7P=2rDO#\NK&mU;,L4h;uKVn;>jDm:^9io;,U:h;H!KkpeV*XQ'G-@
+r_NSirJ:?+qhY0,!/gc4qhY0,qMO^!rg3\Rr0[GL!1<VN!1<\Nrg<VMrg*PMoToB@r0I;JrfmMM
+Qi<?RR@9TDRg5ISSXuFFT:l1Ws.TLgrhKUlVPa?j!N<!sWXu54XKAV-Y-5(6Z*CU@Za@.>[SF<A
+\[f;`]Y(ql^V@S#_SX4/`Poj;aN;TJbKS5Vcd:(edaQ^rf%8O+g=k<:h;-rGi8N\Uj5f=ak3(sm
+l0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4[L'~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV"u<E/rr!*&ep!*8tsrD`_q#?Fi(;c?Xq<Vf\a;u]es;uTZ:
+;,X*\T:VXFS2EPr5!1ng2E*TP0etI:/1iG-1,C^ArA=L2"$J\3:]<ue9)_H`8cD6h4?l4j7S6HN
+:/FV^;>sJl;u0Dk;ts8j;>O2j;$Bir;c6Omr_ibn!)iepr)*GkqGHrarD<Pmr_`GerD3;erDESm
+!`;cir_WMip/(cbs%`Mgr_<Ji;#=&d:]OAi;ZBSo;#O2e:AI]b:AIZc;!q-@;#*ug:]OA]:^9iq
+;,C(b;,R9ir)*Jl#>e>s;,C4n9`@Zf8kVfF7/]@M5kmMC<W,qu5lO"E5R]kB5sdn(5sdn(5sR[4
+5QF+J5Q="]5?(Z`5X.M"6UFdP<E)su<`]#tr)iVpr)ieuqH3Pr!E`G&;ZKel;u'Am;u'>e;>sJl
+;#jMn;uT\p;>jDm;u]_s;,C*f:]?U[QC%T<!h#LGrgO._SXl@DT:_eUU&UheU].%jV5C-hVZE`q
+ri-O1XK8P+Y-+t4Yd(I=Za7$HrjGS2\@K/]]=bei^;%Fu_8=(,`5T^8a2lBFbKJ,ScHjkbdF-Ln
+e^i@(f\5'6gtgfCi8ESRj5]4^k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Egs8)Wirqu`n
+o_sFAJcFI(J,~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe,n+IUALY`T`1S[T)+u\S=>t8R/WHPQiNQQR/<6KR/WHMQMd!e
+VPg>jSt;LCS"#k7T:;46PE(HQJUVrjG]e.ZrI,$%IY*3)Jmi(urON!<rj<WNZa,gaNNnk3ZupP9
+EccVYJVJu:LPLV=L&?T,K7no3L&?VoL&Zl/Knb?ZL%pE$L&Zf+L&Qc&L&Q`*KDgAtK)U>qJ,Fcn
+IJnQnI/nZoHhVjYHNAM?rcnKgqg&6fq0MsarHS-`r-A?ird=WjpNlCWqgA<grI"Wl!.=coqL/Eo
+rI4Zos+(-!q1/?nrdt'#rIb6'I=(m;$[Qu-BPqX#BPVL,E;a&B?N+=/?Mq,)?2.\)>7"J9=^#!5
+=^#$6qca#&$!>3ea&lGH=BS`'T_b>^T_G/YU&q*cV"pkbVYd7kVY[.fVYA:5b5]Z]bQ,i^b506Y
+b5KHWb5'6YbQ?%QPl?pKQC%T<s-WkUrgNtZSXobO#G7Z^TqS3TU].(hV#[ClVZE`qri-@,XK8P+
+Y-5%5Yd(M5ZVe*;[^NZT\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8R-g=k?<
+h;7&Ii8WeWjQ5OdkNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$g])d~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe-"1JM2;(breCE+qLng"pk&9lomlphr-nWu'SE!KSXc1=R[JAB
+F)c,6B4YR]?<dD4r*fV8#%_:TA5uW1rJU`7reMGHKnXD_E.`1SMJ-^:BPD=&EcZGKG'8"NFT-@]
+F9$CYFS9eUFT$=cFEM_JF`mS'p2pCZFoHI_F89qWEr^7ZE<(%YEVj\TDtn;ODZXltEVXSMDu+AL
+D?"MHD>7uKD>.oJD>\5JD>.oLD/=%fD?"P<DXhZCDYn>QE,kborc.XP!-/!YrGh[Ss)\0[$#jg#
+D/O6.Chm\_@fTs:@KC"LpJUrg$&jk'N/UV2;GpHl;Z0Jl;ZBPu;,C+f;Gg=ir_`Ge"I,1::J^sd
+!)EKKqhP0,r/(E1re^Q/qhb0,qhkH5oo&R3rg3YPqO%>Nr0RDMr0RDKrg3SLrKmGJqj78IrKdPK
+Pl?pKQC%T<s-WkUrgNtZSXobO#G7Z^TqS3TU].(hV#[ClVZE`qri-@,XK8P+Y-5%5Yd(M5ZVe*;
+[^NZT\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8R-g=k?<h;7&Ii8WeWjQ5Od
+kNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$g])d~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe,n+I<;oer<:X&g<;TYt<)Z^pr`&tu<W,nd;ZKep;uKVoSg0er
+S"#k74?GS_3&icO1,(C6/hJV01G^dB1c7*H2)IHW5>V,K#t[ZY/hfCQ2+C@?:BXKh;,gEl;Z'Jk
+;?Tip;H$Nh;?0Si;ZBSt;H$Ll;cEZn"]8/q;c?Tk;#jMi;>*od;#jMm;><ue:]!ue;?'Mo;>j>g
+;>*ff:JO[`:]4#h:JgsbqbR8iqbmGk!)WViqbHr_r_E;cs%r,Zk"tkNlVIX[;GmEi!)`YlrD<Vm
+;,[<h"]A/o<D?6e8chXR7/fFN5QF%E55\F]5lO"E5lX%U5sdn(5sdn(5sR[45QF+J56=)95Q4X_
+62j+M6:(QMs&T"uqcNc!rEB2'q,mJrqH3Ss!E`Ls;u]hs<W#er;u'>e;>sJl;?'Po;ZK_o;>jDm
+;u]_r;,I3e!L&cIPl[2;rg<_R!1NnV!h>gPrgj@eTV/!PU8"F^V#R7kVZ*IoW2]cr$`gA1Xf\b0
+YHY79ZMq1-['d?N\%&uZ]">Vf]tV7r^qmn)_o0O5a2l?Db0.uQcHab_dF-LneCE.%f\,!4gtgfC
+hr*GPj5]4^k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFL)J,~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+(ZOE3i8<DIh;$c=g=b-1f@JL&eC;sqdJT^9T`1PbStDYST),#WS,\l[R$X2-R@3u?qj7>Mrg3JI
+rKSe&R]!'\Vk'?IS!ob4R$<ksM2$_6H?aXWG(G-lIt)osJUrK+KOJD`rji*=rj<]PZa,U\S@=3A
+Q#h(kF*<%^K8>DALkphAL4t?ZK`?])KE-`(K_^<%K_pK"LAci#LAci'K`?`/KS>,5K`6W&Jbt&u
+JH15qJ,=ZqI=2$Bs*Xcn!.=cmpj2LX!.+Thr-JBgq0N!br-8$_rHeKjrd=Wjpj2IWqgA<grd=]l
+rI+Qls*t#sqgSTrrdX`oqgn`ur.G!%rIkl5I!9gZG^+FRA8,jpC1qF$F)V%`!+,Y3qd03+!*oA+
+pg!i'!*]A)s&oM->$G5.=q=b<=N8A$=BJ^.=BD/fT:l.V"/)?\T_Y;YU&q*cV"pkaVZ*LmVY[.f
+V?"j7bPoZabPTK`bP96Vao0B\ammLRbPfZbP5g^GPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Yrh0@e
+U].(hV#[ClVZE`qri-""XT#=&Y-7i/9!P\.Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`lH0Aai_fN
+c-FV]dF$CkeCE.%f@em3gYCWAhr*GOioB+]k2tjjl07L!m-O--rpKmWnc&([oCW%Ts7ZKerqQNh
+rqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+(ujN4i8<DIh;$c=g=b-1f@JL&eC;sqd>7aVr.b3)!ec8]re19'pk&6komlmgrI+cjE;kM*K:SO%
+S!ob4Qu?q[BP(d`?<g]<>%7J>s'l"<s().@!``9Jrepi8reLo9KnX>aG_U*aIVSjq"_r!sF*;g-
+GQ2gfF`_a)F8p@^F8L(QEr^=TFo?FRFoHL_F8g7aF*)MFF8g4VEVj_TDu"AODZk$!EH#jnE;FML
+DZ"AODZ+DPD#/#EDZ=SJDZ=SQD#J5EDZ=SRD#\>RDJsIWDXhZCDZ"DSE,fmsE;OYLErU.YEr9qS
+EWU<&ErC(ZDuOV`D/=!'An5F]@UikVARkL5rDO#]NK&mU:f1+g;uKVm;>sJn;#X>l;ZBSo;Z9Pg
+;#cabPtt1P:esiBq1ns*re^Q1re^Q/r/(9-qMYB4p58p=pR(rHs-W\O!1<YMrg<VMrg*PMrKdDK
+rKd;HrKdJMs-!DG!0mJJ#F:^CR$a;0Rf8fVS,f,ZScYOWT`1VcU8.^`s.o^mrhfdqWW&muX/u<&
+!NrX*YY)1+Za7$H[^NZT\[f;`]Y(ql^V@S#_SX4/`Q#s>aN;TJbg"GYd*^7he'uq!f@S^0g=tE=
+hV[8LiSrnYjlY^gkiq?slg4!*mf)YUnF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+14)s*t~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL&eC;sqd8NtC<;0Dm<rQ+u<;TYq<;oer<;fhp<:j,e<;f_r3Ape6
+,>k#%S"#k7R$]fm3&WTK0eb74/M&S21GUaB2D[0I1Gq6Y8GYsl8OuB01-[rk8P`,W:Jabb;,L0f
+;Z0Pl;ZBVo;?0Yd;ZB\o;YsDk;Z9Sp;Ys;k;Ya2`;YX,f:]O;i;#X8f;#X;q:f:1g:f-sbp.tfd
+:/:a`rD*2bqbR8iqbmGkrD38bqG7)cq+q#emn`%Aq,.,fs&&;_#>nAs;,C%b;>jDg;?'Gn;,I3h
+&5uS/9h\/Q8kDWD6pEn$5X5'.r)Ne_r]g6Es$$lW6:*t(6:*t(5X.L35QF+J56=)95Q4X_62j.L
+5lapa<r5tr=Sc2!>5h\#=Sc1s=SQ#!<:j,h<<#ts;ufkl;Ya2h;Z0Jm;ZBYq;Z9Pk;ZB\q;@$,r
+:J[.:PEV71Pm<VAQ^F/.R@=,Es-s([rgj1`TV2:X!MZ@gV#R7kVZ*IoW2]cr!NW=$XT>T.rif#"
+ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5Ta:aN2KGbKS5VcHstddaQ^rf%8O,g=k<:h;7&Ii8N\U
+jQ5OdkNM0plKdg'mI'uB!V#XYncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#nki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$=7U&1MZTDkG[Sc>2^S!ob5rg<_Rr0[>Irg<\OqNh,G
+"IbU9L40'!%%E]RR$a5+Q&13IIsV*<%sEMSI=6WpIXm!&JqINAB)]@A\,NcJ['R'#V4ktfSTT+#
+F`hnWJVB![M>rD3LB<3aL&?W(KDC2rK`Hf'L&-Q&L%^9#L&-K$K`Hf*K)gN$Jc(-!JH15qJ,=Zq
+I=2$Bs*Xcn!.=cmpj2mc!.+Bd!.+ThrHeKhq0Msar-8$_rHeKjrd=ZkpNlCWq0`0grI"Wl!.=co
+s*arrrI+`rrI4Zos+(&tqgeWrs*t0%JqElPs+L6&'n:UYH[9s_G'@\8D/*m$Ci+64?!Ue8?i47/
+Z2q::qH`l$s'#J,r`T8)"'Jf3>Pq\)=oVV(`X'Ue=BSa.=*pS7T_kGYUAptgV"pkaVZ*LmVZ*Fg
+V?5,ibkK<[b5]Z^bQ,i]b506Yb5KHPaoKWabl<h*P5g^GPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Y
+rh0@eU].(hV$3`oVl6Pnri0&#XKAV-Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn)`5T^8a2lBF
+bKJ,TcHjkbdaQ^qe^rF*g"P39h;-rGi8N\Uj5f=akNM0plKdg'mI'E2n*olHncA@Srq6<bs7cNf
+s7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#nki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$<rL\li&K`Hf)KD:&pJan9eJ,Xm>Ec5]&?A*uaS!ob4
+R$X,(BP(a`?X$]<>%1oK?t*PSA,^!@AQ;c3repi8reM2AKnXAjH]N5sBk_<pBl.j0F*RS+s)nHd
+FEIM's)e9^r,hUQ!-ImVrH.XRs)e0["E\^,FE@G%r,DdWEH1kps)7^PrbhpYEH,r9qf)CMqJH=N
+DZ4MQDZ4MQD#/#FDZ=SIDZ=SQD#S;ED?+PQC]eNlDK"`VnSe>Cs).mTrbhgVEW'kSEV=DQEW1"U
+EVOSSEr^7[F8p4ZDZF\SD?"DNA-HFP@UWhWq,7/i$&jk'N/US1;GpHl;Z0Jl;ZBSm;>sGo;,[Bj
+pe_!T#F/(\:f'q_A,:u[M#N8.MYr;2M#E/2MM_1eqhtH4pPT*AR@3f:rg3YPqj@GOrg*\RQ^@]=
+r0RDKrg3SLrKmJKqNq/H#FCR8P*2#mPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Yrh0@eU].(hV$3`o
+Vl6Pnri0&#XKAV-Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn)`5T^8a2lBFbKJ,TcHjkbdaQ^q
+e^rF*g"P39h;-rGi8N\Uj5f=akNM0plKdg'mI'E2n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?e
+JcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#mki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$<?p/V)mpJq5mr_rhrrDihroMbTcr_j^n1bp[6;GpA]
+R[KP1Q^3mp2)6m@0.\\,0J`S_$oBgu2)I-P5!2M391o1V&kPVb2F0Jj7S$9N9hnGX:f:1ir_`Sk
+r_r_ms&&5_r_rhpqG[>jr_iepr)*GkrD<Vm;,R3g!)`_nr)!GjrDEMi"A_ij;,I6fqb[8h"]/)p
+;,C*b;>*fe:JUjar(d)aqb[,e!)`YiqbHr_r_E8b!)W)Zk"u(T!)WSjrD<Jjs%r_mpJCle##\;p
+:JakbrDNJhrD3Jkr_aA+:f11k<D6(Y9MA)O77BF+5X5'.r)Wh_s$-<E$pR$E6:!n(6:!n&5<o-4
+s$6WMrBC?K5sYEL!($TLs$6ZU<r?%q=Sc2!>5h\#=T2Ir=Sl5'=B/="r_ierpf%2ls&K"s!)rYj
+q,.,hrDESms&/nqr_`Sks&8qq#uOMpOcbfiPEV71Pm<VAQ^F/.R@=,Es-s([rgj1`TV2:X!MZ@g
+V#R7pVPg>jW2]cr=0&F)Xfeh1YctC<Za7$H[^NZT\[f;`]Y(ql^V@S#_SX71`Q#s>ai_fMbg+M[
+d*^:jeC<%#f@\d1gYCW@hVd>NioB([jlYail07L!m-O--mdKW6nc&([oCW%Ts7ZKerqQNhrqcQi
+rqu`noDX=@JcFL)J,~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=eq4RVWrLX"ZrgX@cR[TY4R$jA0R$X37Qi<?PQhZjt
+Q(OM*L4XZ!IAa!?R@'A.QBd`"PBqFtG]eReIXQZpIY!$&K7dWBA@/qZ\,E]I['GgXR[&f(GB\1R
+FaAOhLl@8iM#`A1LB*&*K`6W#K_^?%K`$Q"LAlo)L&cr*LAci'K`-T)K`6T(K)C2tK)U<$JG=Wk
+IfFfnI/n`qI/nZoHhi!dHNJM?HMMmfHN&0jG^9:7rd"<cr-A3bqK`!b!.4]mr-S3bnU'kTrd4Tl
+!.Olp!e,WKrdOcps+(#sqge]trdb$"s+:*"!/16're;/;I!g6cH$X^ZD/4*)C1qF$F`(Jk?hn%,
+Z2q::qH`l$s'#J,r`T8)"'Jf3>Pq\)=oVV(`WsRe=BSa.=+^4?rLrnY!2TIfr20CioVM];d*D@.
+rlY8aqof&`pr`HTrQ>)\n]D6_bfl-0OcbfiPEV71Pld8<Qi<?WR@9S6S"-">rgs.^!20=b!MZ@g
+UgU$rVPg>jW2ZesX/rD)Xfek3Yd(L?Za@*I[^NZU\[oDc]Y2%o^VI\&_o0O5`lQ6Cb0/#RcHaea
+dF-Lne^i@)g"P07h;-rFi8EVTj5f=ak3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6i
+r;HTcrdk*#s4dR(~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=eq1ed#!/1?(pk&9loRQ[c#_$r;Ch7$[?XNec%[i]O
+Q^3o%P`oHY>[1HBrF,_8#\7FUA7ehC<J^X5reLi8L4sJbGAqVQrb2XOC2J!3F*DhOr-/-`!HiM_
+F8p@]F8^4QF7aVSFSp7]FS^.ZFSp1_FE;PGF8g4XE<:*!EVj_TDu"AODZk$!EGodmE;FMLD?4Tl
+rb_[Qrb_[OqJH+Irb_@Hs)%dPrb_:F#An9nD/F0.Ds2*/Du=JQDuFPTE,fmsE;X_PEWC+YErU.Z
+Er'eMEWL6%rcA*]"*&9uDuOS]Ci*or@q9%Y@U`qZq,72j#)nP$N/US1qGR8hr_ibmr_`Ym!Dubo
+;><ufPR!IL:Jak`:2'HY!/UW2qhk6,p58a*qi(?/!h5XHp6biGs-W\O!1<bPqj@;Jrg*PMrKdDK
+rKd;HrK[_MOHGZgP*;)orfmPNQ^@]=#FV$LS"#q<Sc55\T)bP`T`Lm_rhNquVP^8hW2Q\qWiN5&
+Xf\b0YctC<Za7$G[C3NQ\[f;`]Y(ql^V@S#_Sa=2`Q$!?ai_fNc-FV]dF$CkeCE.%f\,!4gYL]B
+hr*GPj5]4^k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcFL)J,~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=epf.>o<W6%n<W5r!;cH`n<Uj#a<!ZD^2)6j:.4m.N
+;@f1_R$X,(Q'@Id/hAV,0JWM^+uD/62)R0P4ZlD29M.oM91hcH2Ej8[7n6EQ9M\D\;c6Olr)*>h
+!)rbmr_`/_r_rhpq,@8js&8qqr)*GkrD<Pkr_`Sk!)`_nr)!GjrDEMi"A_ij;,I6f!DlYl;#aDm
+;#aGm;#jMj;>*i`:]4&a:]+#h;>O/j;#F,e:A@Wa:AIZc;"%3A:]OAk;#X>k;#O5k;#O8d:^Bor
+;G^1c:f1*h;Ya2g;#O8k:^'Wm;,gOtr(@5c91)*45X5'.r)Wh_s$-BG!^T(9r^-WNs$H`O!^Jt7
+r]pKL!'pKI!^K%:r`&qar]pKL"@uTq=BG<#pfRT#qcWi!s&nqqrE0;+='&C%<;f_q<;9Dl<<#ts
+;ufkl;Ya2h;Z0Jm;ZBYq;Z9Pk;ZB\q;@68tO-#KdP*2#mPl?pLQC!s;Qj9%JR[]e:S=TYNs.9:a
+rh0@eU].&sV5C,fVl6PnWiE,$XKAV-YHY79ZEpmE['d?N\%0&\]=bei^;%Fu_8=+.`Poj<aN;TJ
+bg"GYd*^7he'uq!f@\d1g=tH>hV[8LioB([jlY^gkiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<hqu6NlrU^#>s+14)s*t~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqk3kZrLWqXs.'+Y!1NhRs-WDEs-WhQpm*D!P`CHG
+IXQWnB5OQEQ^3o%P`q8nOa2(mJUi3!JUW*!K7ebb@Usbq]!qXG&@ActO-l2kWHNN1F*2t^Jr9Pd
+!/pc3!/UT/!/CE)r.Fm"qM"p%r.Xs$re:9)"GMSbKnfMZs+CB)rIk3)#)%V]JqJZ,rIOlurIFs!
+pj`6k!e#HDr-\Qord=iqH[GO6rHeTlH[>O8s*F]js*+Nhrd+Qhpj2marHS-`r-A?ird=Wjq0MRX
+npLIa!.=cos*jrqs*artrI4Zos+(&tqLJTsrdb$"rdt'#!/16'qh>c7I<p0bH$FRWAnu@#C2%I%
+F`1R\?N%/1:gEm'pK[`&!*]A)s&oM->$G5/>5qb*=:3'gaB2PI=BJU\\GMruU%=uZUSRgaqkj7g
+p87l:!n#B?p<3HXs3(;`!R&X`ans6Zao0B\ammLSbDuR_!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:
+S=TYN!hZ-Yrh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2
+`lH0Ab0.uPc-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DEo`"Lb
+p@n=[q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqhG$&rIjlrqLS3fp4!p#De`cg?XI2K<a(00Q^3o%
+P`q8nO]u!nraH"=@prnXrac"/!+c(frJ:K.%V]m+E--bHCM@ErE,ouBpNQU[s)n'WrcIdR!-ImV
+rcJ'\#BY*2FEM\JFoHLXF8p7]EH;"ts)7sXqf)OQpi-4Ns)A!Vqf)FNq/-4MDZ4MQDZ=SQD#8)G
+DZ4MHDZ=SRD#\AEDZ=SRD#\>RDJsIXDXhZCDZ=YSDZ=VTEW'kSEVa_UE<(%XE<(%TEVFMPF8g7_
+F`DC"DZ4J[ChI<iA7AtV@:a!G;Z9T"N/`gU:f("dqbmAir_ibmr_`Ym!Dubo;><rpPa.M0:Jak`
+9l,[`L]</1M>W8-M=lc&Mu/J0MuK1HR[Nl:rg3YPqj@GOrg3DIs-N_Nrg3SLrKmJKqNq5J!07&>
+!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:S=TYN!hZ-Yrh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)
+ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2`lH0Ab0.uPc-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=a
+k3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqc3Vpqc3Yqr)NVnr)N_qnPf9`+#Yr0/h8G'/hK%A
+;GrjIQ'IStP*1q[/M&S31GgpE2#]?O1H[c_5tXgC8kVfL8P(a$4YoW$:esk^:/b%erDNPjoht]b
+n5B6a!)iVkr_ibps&/blrDNVlr_NSlr_i_m!`DlnrDESk"&Vll;>sDk:C'co;,C%b:f1*d;#aGm
+;#jMk;>*i_:]4&a:]+#h;>X5l;,I-cr_E2`r_E;cs%r/[k"u(Tr(mAjrD<8dq+q&gr_`kq:JXea
+r_iPhr)!Dj!DlSj;?'N(:f:1k9M.rN8kM`D6pO!455eLb:d@915Pm\L5sRY#6:1Z;"[YL@5X.L4
+5lX+M5lEnK5X@[7<<,>a5QjA<8PrXd=Su>%=SGtu=Su=n=T2G.=BAR(<E<+!rDN\qpf%2ls&K"s
+!)rPgr)*GkrDESms&/nqr_`Vlr_rhp!07&>!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:S=TYN!hZ-Y
+rh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2`lH0Ab0.uP
+c-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0i
+qY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcMaF9TDP5VSc>5ZRfJoVRK&ZQQN3EIQi<BPQhm!`
+SXP[sJTlQmIV<DsX/MqoQ'@JqP*(k*Nt?hiIXZfrJ:`H-K4AG$]"5EM[2--UKT2=`N3IMOG'J7]
+J;&rBNfB!VMu8D3M#E)0L5#SZr.Fp#q1\d#rIt$$!/:<)"GMSaKnfMZs+CB)re19)!ec2YrIY!!
+rIP'&K)U<$JG=WmIK=kEr-eTord=iqH[GO6rd4TiqKi9iH$TC6!."Qird"<crH\<cq0Dpbs*O`m
+rHn<cnU'kTrd4Tl!.OlpqgS3fqLAWuJ:IQKs+13%rIb-'s+LH+re:<*(57EqKn+SuH$Xa[G^!_6
+E,99&CmB*^pKmj)!Dm%u?2%V(>Q.e)=ohc0r`fA*s&o>'$HC--=BJ^.=&tBlrLj.`qP+"bqk=+d
+V#."gVYI(_VZ"jBccu1,rlP5aqTJu`b43URb4<[PaofhHNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\E
+Rf8cWS=TYNs.9:arh0@eU].%iV5F6i"fSE#WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)
+`5T^8a2lBFbKS5VcHstddaZdsf%8R-g=tE=h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcM`LtL&6Q'KD0umJb"?dIg't7D.R*Yra-+:<e5gM
+KS5VTPEM)kOT(:Q@UNVQ@q&qXA7]@Q<`Y3=N/@Ois+V,!Dg$)AM.pa>C2S$2Ed)eSGkcL^G5l[b
+FSKqVFS'VSFS'\UFSg1cFEM\IF`__JrcJ0]!-7sXs)S!Vs)7sXqf)OQpi-4Ns)A!Vqf)FNpMU"J
+rb_^QrG;@JqJQ:Lp20qKCi')foPX\Gs(hdSDJjCVDXhZCD?+VRD?+VQE;FSPErL%YEr9nWE;FSL
+ErC(WFT6IdEH#l7DZ+DYAn,@^@UikoAn1^9rDNoZNJp\1;,R6hr)*Gks%r\l"B&/r;,[?iq+qE_
+Q'G-@:esh\EJaUKs+pW2qMFg$qht?1q2>6A!h,OFp6biG!1<VN!1<bPq3_2KrK[MOR$di=s-WhQ
+qj.2Is-<_GNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYNs.9:arh0@eU].%iV5F6i"fSE#
+WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)`5T^8a2lBFbKS5VcHstddaZdsf%8R-g=tE=
+h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcM^cC<<#ks<;onq<<#tq<;BPo<:Eia<#.GO1G::/
+/1rM62FTnr;GrdEPEM)kOT(==1]B3;2)I*P4[2S591f+Us%*DP4?YJj9i:mc#u4Aq;,^@k;c6Nj
+;>X5k;uKVl;=IKU;ZK_p;ZK_m;>jDl;>sAl;>sJm;#jMk;?'Gn;,I6hs%r\j"]/&n:espe;>O,h
+;ZBVo;Ys>b;#3ue:A@W_:]OAi;?9WkqbR2dpeUlaq+guemn`%A!)`Jep/1Z_"&Vro;>s>l:f73i
+q,.)es&&emr_NPk!DlYl;@??"91_cK9M8#H76gQ2r`0.u5X7Ouq`k<N5X.P$6Mj%M5X.L45QX5<
+5lEnK5X@[7<<,>_5Qs_V=]eg0r`K,%r)iDjoiV5s!*K5%r`'##<E/oq!*&_l!*&qtrDWbqp/:cb
+r_i_m"B&/s;H!Bhs&/kqs&&oXNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYNs.9:arh0@e
+U].%iV5F6i"fSE#WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)`5T^8a2lBFbKS5VcHstd
+daZdsf%8R-g=tE=h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-Hk
+rUg)?s+14)s*t~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHW#STDY8]SY#VI!1a%Xs-`qUrg<_PrL!>Gs-NeQ
+qNa<XS!/haI"-KkJ7rStW2HMhVl,`AP*(ieO,f3YIt*!"JqSf/@q9&1]"#2U[C*BKDiC$JNNIDM
+GC"RaJqs>bs,I2@N/WYlM#`A1LB<3aL&H]'KD^DuL&H]'L%pB&L&?]'K`Hl*L&Zf+KDgK'K`Zp[
+KDgE#Jc:9$K)gN&JH15qJ,XosI/nZmIK+cqI0"_BpNljdr-J<g"F>E@H$T@5rHeHgq0N!br-8'`
+r-A?irI"Qjq0MOWo6gOa"FPWGIX_9EqL8$c!J#[tJH(-!JH(3#K)L?%KE-`*K`?c*L'r]gKS>,7
+Lk'l"H@#R8$[69"DJs<(D3Ap6:AJ5rZN!`$>l.h$>lS"5=]eg1=^"s2r`fA*s&o>'%`ZQ1=BJ^.
+=&tZsTV/!Pq4dna!MlLgU&h$bqka:hq5<q`r6PJjc2#Nabfe3/aoKW]bQ5o0o#^pSn]CaPrepo<
+NfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYN&>,VgTqS3TUSO]^V5C/gW2]cr=0&F)Xfek3
+Yd(L?Za@-K\%&uZ]">Vg^;%Fu_8=+.`Q#s>aND]Lbg+M[d*^:jeCE.%f\,!4gtgfChr*JQj5]4^
+k3(sml0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHV)tL&$E$KD:&tJcC8uJb"?fIk+K>DJ<Qd?s[5L
+<`am%I<p6nKThR^OcYWbNfB!,@Us"YA7]:O<`X:$N/IUjs+UtiDg$)ALM:O=CMn-4FT-ObH2i-b
+GQ)dcFoQR_Er^=\F8^4RF8p@TFT?O]Fo6=bF`__JFEIM'#]b!-EcQ5BEcV(tpi-4NpMg+Ms)A!V
+qf)IOp20kIrGDUPrG;@JqJQ:Lp20qKCi')foPOYGrbMRPrbq"<no+GDs)7mSs)7gSq/Q@Rrc&!Y
+EH(ns!-%dSq/ZFTs)\6^rcJ0_#'P31E,]`5rG;RJAc?0C@:FUq9htXbrDN`UNW)cS;>a>i;>sJn
+;#X;n;H$Kj;>O)s;3[?2:JXe_:/,nhrJ1E0regK-reg`4qMP--qi(?/rgWqVs-`\M!h#FCrg*VP
+qO%>Nrg3GJs-N_N!gf:ArKmPOs-NSJrKmMB!f`5#rf7)AOoCODP5pjHQ2d-MQi<?RR@9TDRfT%M
+rgj[nTV/!PU8"EYUnsobVl-Jmri0&#XKAV-YHY79ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O6a2l?E
+bKJ,TcHjkbdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&F^cp\jme
+q>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHT?g<;fbq<<#tr<;ons<;fhs<;]br<:Noc<&QEg
+1GCC2/1iJ+3&Eod5<_;0;Nm9,OcYWbNfAuR1GgsF2)R0R4[)8-91_`K91_]B4?YJj9`.]i;c-Im
+<;]Yp;Yj8g;ZB\o;Z0J];Y<rg;Z9Sp;Ys>i;ZBVm;#4#h;Z'Di;#X>l;#X5l:f1*h;#X>i:^9cm
+;Gp@h;H!EioMGE\r_EDf!)EMhqbR8iqbdDkqG7)cpeUlaqbR2fmn`(Bs&&MeohkW`s&&eo!)WYj
+!`2cmp/1ids&&emr_E_p;,U4f:fRBk"&i)l8cD?c9MIlK:AI*R<rZ"r5lX(G5QsG=5=%V&rBUQO
+5sRY!r]gcU69mb"5!M:u5lOa`62WtK8l>Rj!*K/%qcN;ioiV5ss&f;&rD`o"<E/oq!*&qr!*&kp
+!`W0"r)<Ypp/:fcr_i_m"B&/s;H!?gs&/kqrepo<NfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cW
+S=TYN&>,VgTqS3TUSO]^V5C/gW2]cr=0&F)Xfek3Yd(L?Za@-K\%&uZ]">Vg^;%Fu_8=+.`Q#s>
+aND]Lbg+M[d*^:jeCE.%f\,!4gtgfChr*JQj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"O`p&Ojc
+q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-,N\"H
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4A'TDkGSSH>=NS,SlMR/WHPR/N?OR/WHLQ9Lh-
+ObeO3I=6W[BWeJ8VPBcOQBJ/.OH5H_NJrgSMh$D3K7m`E@U?XV\$WQN['XalQ^*N1GBnF[H@UU'
+N;SY<NfB!VMYr;2M#E)/LAlo*K`6W%K_^?#K`-VqLA$?$KE-Z'KE?j\KDU9!Jc:9$K)gN&JH15q
+J,XosI/nZmIK+cqI0"_BpNljdr-J?hrH\HhrHJ<frd+Ngqg/-br-8'`r-A?ird=Wjq0MRXo6gOa
+s*Xip!.OoqqL8!b!J#[uJGt&uJGt-"K)UB'KSBAXs+UK-s+UK+s+LZ4Ll%"?H[Ga<%!d&ABPqa*
+CM@U1F%uX/r*BB/r_WGsp07l-=]eg1=^"s2r`fD+r`T5&$WkBj=BJ^.=&tp%[JZd!U&LecV#R4f
+UAq%eV>d@fVt[(bciMJ;qTJl^!6bAa!6b5_!R&XVaoBNRao9E`MMqIm!f`5#rf7;GOcbfiPEV71
+Q2d-MQi<BPR/i]TRfT%MrgjLiTV/!PU8+KZUnssfVbj=kWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc
+]tV7r_8=(,`Poj;aN;TJbg"GZd*^7ieC<($f@\g2gYCWAhr*GPj5]4^k2tmll0@U$m-X6?mfr:O
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-,N\"H
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4@bL%p?$K*$XWKD^?#Jc1,uJbXceIj9&UCh7$Y
+?=%&B<e>pPI!U$ZEc-PmOH5H_NJrgSMdp4+A7ba@"'(>>MuJP4L'D!oG&VMWCAquNDK9c?r-86e
+rcn9`rc\<arcJ0]s)e6]r,h[SrcIUOpN6@Ts)J*\rGqaSrG_dTrc%jTpMg+Ms)A!VrbqpWE,bbo
+n885CrG;FL!GlWMDZ+GHDZ=SRD#S;EDZ=PUCi+$,rbq%=nSe>C!,qjSs)7gSpi6:RrGh[QqJl=O
+r,Vm\F8g:]FV].EGBe.HE,TT2DJa6)An5F^@Ua"^:&[oc;ZMdU;#X>i;Z9Mo:f73is%r\l!`Drp
+qbd2ds&&f]s%a#!:JOW2MMd1FLl%#_M#`G3M>E,+Mu/J0Mu9(ERfAfPR/WKRR/WEPR/33NR/WHJ
+R/`NPQ3*D?R/NBOR/`NLQN!3OMMqIm!f`5#rf7;GOcbfiPEV71Q2d-MQi<BPR/i]TRfT%MrgjLi
+TV/!PU8+KZUnssfVbj=kWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc]tV7r_8=(,`Poj;aN;TJbg"GZ
+d*^7ieC<($f@\g2gYCWAhr*GPj5]4^k2tmll0@U$m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0h
+r;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s--0=4J
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4@1<)Z`p<;fhq<;okt<;]bp<;onr<;ohr<;'8i
+<$4.X1G::./1iG42afqr5<V+h4#^'"OH5H_NJrgSM`!<i2&e\@5!2M384cHI8P)6:4YoT#:Jstb
+:f:1i;H*Qor)<DgrDNVnrDNVlmo&[S!)iYjs&/hnr)!&`qb[;is%r\j!`2`kr_WSkr(mVo:f:1g
+;,U<j;=dW]:]=,g:]F2h:]!rg;>X5k;#3ue:A@Wa:A[id;".9B:]OAl:]OAi;"[]`;#aDm;?0Sm
+:B=<johk`cs&&ems%aJ.;,U:j;GU+c;H$Ll;H$Oi8kVfK91;9Dr_EAT!*9(q!C9!M5Q!bM5sRY#
+6:1W:"@,7=5X565$pd3F5<_7q5X@Y"<E8o]!_ZBgr)s&%!*B)#qH<f$q-!Amr`K8(=8Pu!<`N/u
+;Z]os;uTbp;Z]ou<W#er;ta,e;>sJm;$9cq;c6Ni;?'Mq;i6M4Muo!!NrG(EOHGZgP*;)org!ML
+!13\Ps-WkUrgNqYSc52gT:hjNTq\<WUnjiarhiSkWN)u!XKAV-YHY79ZEpmE[C3QS\[f;`]Y2%o
+^VRe(_o9U7a2lBFbKS5Vcd:(ee'umuf@S[/g=tE=hV[8LioB([jlY^hl07L!m-O--rpL'\nac8B
+oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE+WlMgYYqY^3e!*K3sr;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,N\"Hj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTTDkGSSH57MrgNkTnX'<CrL!SN0UA&l
+Q=l_ON.cY/I!pKXB!&#0VP0HGR$!>_ViQn!NJrgSMM[1GK4AD#@'7#K[C-"@%<6H6J;ps\H$FX]
+JqAmUN<G9$N/W\nM>rD1LB*).L&?W(KD^DuL&H]'L%U0%Knb?]K`Hf)Ka!3bKnP,3rIb6+KS0/R
+r.4m"s+:<'rdb'"pj`9l!e#HDr-eTord=fpHhVgeI!bj="*o3>Hi89jH2VsfH2`-hH2DpaH2W!`
+H2W'hHiJKkHhi!WHh2XaHiJHpI=?YEIJJ?dJ,XoqJ,b&sJ,b'!JcC?%KDpN(KDpN(L&Qi*KER!`
+Ll$ufM@kAbI!L!`H?j^IDf9N/Bl%s5r_EJhra,P"qH`f"#[:J7=^"s3=]t`.r`T;)rE'M1aN7Oe
+=]ea+V73k,UA^ecU&^tfV#R4iUAgqfV#7(hVY-k`VYSR>ccu=0rlbAcrlP5aqoo)`!6XlSs2slR
+"j2[YMMd>kMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<!h#LGrgNqYSc52]T:l1W?)"*iUnsobVl-Jm
+WiE,$Xf\b0YctC<Za7$I[^WcW\\#Me]tV7s_8=+.`Pom=aND]Lbg+M[dF$CleCE.%f\,!5gtgiE
+i8ESSj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE+WlMgYYqY^3e!)idmr;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,N\"Hj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTL&-JsK)gN%Jc1*!Jb=NoIt79C,?/c&
+Bk(LX?XR;D<J#[IHZsRQEc#N&KTD1SNJrgSMM[1GAGoO1KoCrhM#W2??t3baFGjjKC27^-Ecu\Q
+rHS<erHS3`rH80`rcJ0]rcJ0]qfMUSrcI^R!d&R-rcA-]r,hjXr,VRPrc%jTrc%jTpMg+M!-%pU
+rbqpWE,bbonS\ADs(h[Nr+uIND>S5MD>S2ND>eAPD#eDOD=h`DD>nJ;DXq`DDZ=YSDZ=YQE;=MQ
+EW^<#E,k_ns)A$Xr,MRRq/cOWs)eBdGBa%2&TVi0DJa9-DJWosA7]7[@qK9N:B+,h;uKPl;>a>k
+;#sKjr_ibmr_W_p;c<Kiqb[8hs-<U[##J)j9n/%XreU'#qhk0,r/CK1qj[VSs-`_Nrg<bRrg*VP
+qjIJOrg3GJs-N_N!gf:ArKmPOs-NSJ"db(&MMd>kMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<!h#LG
+rgNqYSc52]T:l1W?)"*iUnsobVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\\#Me]tV7s_8=+.`Pom=
+aND]Lbg+M[dF$CleCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHe
+s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE+WlMgYYqY^3e!(Qqar;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,3@nGj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTr`&eqqc*>jrDWbsoi(rj<;KPm<&uZj
+1GCF2.kE;)3&3cc5Wq7l4#f/W1fBBqNfB!VMi*@JLc%=X5!;J18P)QJ8P)6:77B^?:Jstb;#=,j
+;uK\o;ZK_k;>sJm;uBPn;>a;l;tX&Z;u]bm;>jDm;>a8`;>X2i;?'Jl:BXKk;,C*f;>j>k:BjWn
+;Gg:h;Z0Jd:]aKj;#=&f:B"&h:B"&e:]OAi;?0Sk:BOEh:/:R[r_E>dr_W)[j\YtSp/(T_s&&ho
+qbRAl;GpBj:B45_;$9]m;,C*g:BOHl;H*Nl&Pl5";,L7h;cc^g92%uM9LM>K:B+,h55e:Y5sYE6
+r'1EO5X.P$6N'1Q5X@\$5Q3qJ64,tB5!D1q5sRY7<Vo#a9Mn\j=oMM'=8Q+u=oDP(>Q7n(=oVV'
+=o)8"=oVS(<;TZ%<`N.!;c?Xp;cEWor_ikt<E8uss&8Vhr)*Gkr_Wer;c?RlqG@DoM2@+IMuJY:
+NK0%uNrkE*OoCLKPE_;sQ'R`&rg3bTR[X5F!M#_[ScPIVrh3VlUSO]^V5C/gW2ZesX/rG*Y-5(6
+Z*L^B['mEP\@K/^]Y(ql^VI\&_o0O5a2l?EbKJ,TcHjncdaZdsf%8R-g=tE=hV[8LiT&tZjlY^g
+kiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE.Xli-_Yqu$6ds0D_&r;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5Iq*Sc>5[S,Si@R/<3kSXGUrJ9ZNn
+Iq`T!XJr%lSXPn0Nf&UFJ9d-5N/NSmM$\unL14SN\@8lRrj32lF*<(o[Wd"BH?t3qMN<enN<bK'
+N/EONM2D4fr.k6)rIk3'r.Om"rIk-'onE[)L5(D9KS92UqLep(KS08U!.k-$rIP!#s+C9$!.aio
+rdFlrI/A?lIf=cqHi86jHi/3iHiJElGm&G?H[:#;H2MmeH2`-hH2W'gGlW0iH2Dj^H2W'hHiJKk
+Hhi!UHhMjdHiJKnI/n`qIJ83cIfY"HrdOlss*t-"If=isJH(3#K)^K'K`?](KEHp_Kn]JY"GV\f
+Ll)%e'7Y=UH?jd^G]RP:DJO!%D09bl:B"&d;#=Pt>QA(*>R4P:=BSg1>$5&.>Q.e+=oDG2=3/Kc
+=]nj.?E:QCUA^ecUAq"fV#@(eV#@.iVY$e`VYAF<ccl7/rlbMgb0%oNqof)ab4`sVaT'B^b43RR
+M#N54MMmDlMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<CRLW[S"#q<SXuFFT:hmOU8+KZUnsrdVl6Sp
+WiN5'Xfek3Yd(L?['d?N\%&u[]=bej^V@S$_Sa=2`lH0Bb0/#RcHjkbdaQ^rf%8R-g=tE=h;@/K
+iSrnYjlY^gkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE.Xli-_Yqu$6ds,R0Wr;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5-ecKE$Q&Jc1*!Jc(&tJ,4]jIi``P
+D.R*Y?XR8D<e>mOH?sdWEc>c*A7K"RNJrgSMZ/G<Lkg^c<cF"UM>i;@L2171CitYMCMIU%F)lI"
+GlE!dGl2d`G5ZL_F8g:]F8L(SF8g:PFTur1F`__HF8^4XF8U(VE<'tWEW:"VDuXeTDte5NDuXeU
+DuXeVDuXeUDt.`ED?"DPC]/,MC]J>LDZ4MODZ=SODZ4JOD=h`ED#eJQDrts0Du=JQDuOYSDu=SM
+EW'nXEVOMQEW:"VEVXYNF8g7^Fa!b.r-/lrE,TW2DJj<-AS,L`@prk[A55o!:]!uf;>a>k;#sKj
+r_ibmr_W_p;c<Kiqb[8hs-<U[#Z+;l;1sgaLktSXqMP--qMb<0q4%DQs-`_Nrg<nVQ^=),qj@GO
+rKm>Is-N_N!gf:ArKmPOs-NSJ!/UW2!fDnorepo<NfO+"!g&P,rfRMMPa%GuQBmm:Qtr+YR[]e:
+S=Q7CT:_dMTq\<WUnjiaVl-JmWiE,$Xf\b0YctC<Za@-K[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fN
+c-FY^dF-Lne^i@)g"P39h;-uHi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<g
+qu6NlrUg)?s+14)s*t~>
+JcC<$JcE.Xli-_Yqu$6ds&9!qr;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5,-8<;TYs<)lrs;ufqr<;ohm<;KPn
+<$""V1bUC//1iG52FKhq5!D(h3]ArR1GLU:NJrgSMZ/GNLkg^K5"&"78P;]K8Mrk'6qC!K;GU(b
+;c6Nm;>sJk<<#nr;Yj8i;Z0Pn;Z9Pk;?0Yg;Y!cc;Z'Dk;ZBVk;#*rg;#X>h;#aDm;#X5n:f1(d
+;#O8i;#a;q:f:1g;,U<k;=[Q\:]=,h:]=,g:]4,i;>jDm;#jGk:BaKi:esh]peUlaqbR2fn5&mW
+r_MuZ!)`Abr)*Djr)!Djs&/kns%`Vkn593^r_EVm;GpHk;ZB\p;#aB&;Gg=j9he8Q8kD]E6r$MV
+:]!rh5sYE6rBU?J"$](<6N0:N5lX+N5X565s$@&Y5<_7q5=%P!<E8r^"[Pj[;HR'#=8H&!=oV\'
+>Q7n"=nc%u<W?%r<=)]+<E)mq<)cdprD`eqs&B"urDWbqoht]br_i_m"B&/s;H!?g!/UW2!fDno
+repo<NfO+"!g&P,rfRMMPa%GuQBmm:Qtr+YR[]e:S=Q7CT:_dMTq\<WUnjiaVl-JmWiE,$Xf\b0
+YctC<Za@-K[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fNc-FY^dF-Lne^i@)g"P39h;-uHi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcE1Yli-_Yqu$0bs0D]-rqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sURpmqAR!1NkSoU,ZFq3_,I%%`oM
+Ne;_,I=-QZB!2-3)k`^hQB$oZL4F\sG'KpCMM[1GLPCP;KS-_@[JmNFQ)o1[O1KO\H@:*kJr5_Q
+O,j$q!fi8!reg`4reUK-!/CH+rIb0'r.Oj!re16(onNBus+L3%r.G-*KS05Ts+(0%r.4m"s+C9$
+!.aiordFlrI/A<lIf4]pHiA?jHi86jHiA?kH2i6kHN&3eGQ<$gHN&3gHM`!aGku^`H2r<kI/J?f
+HKTYQI/SBoI!pHmrdFKhqL8WsI=6Qnr."`qrdXru!.k*#qh"m%re:6&"GV\fLl)%es,7SAH@'p^
+H$X[UAohj,C2K,U:/:daqb[/qs'5S0q-420>$+p2=^"s3r`fA*rE0)$$cpFl=]nj.A[8eQ[/H["
+U8+L_U]@1dV#@.iVX^S`VYAI;cN)2cbPo]gbK@uNbPTKabKBP#rQ#)_b0%j)aS3gVLB*/0M#rQm
+MuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg4(]R[T_8S=Q4BStD\TTj"1cUnjiaVl-JmWiE,$Xf\b0
+YctC<Za@-K[^WfX]">Vg^;%J"_Sa=2`Q-'@b0.uQcHaeadF6Upf%8O,g=k<;h;7&IiSrnYjlY^g
+kiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE1Yli-_Yqu$0bs,R.XrqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sX9!el;\p4N9os+(*"s+(#s!e>cM
+q1/En.<fcLBk(IU?XI5C<e>dKH['^UE,96#ARJnN>$Q`=MM[1GLPCP;KS,0]M%>DsE.MY<G)g9P
+C2@d.Ed7S/qKVp`rcn?br,r'_rH&$\rcA-]qK2OSs)ddRr,hs[rcJ!XrGqdTs)7sXrc%gSs)@pT
+pMg.Ns)@sU!-%pU!-%mTnS\>C!c2Xgrb_XN!,_UNrb_XPrb_UO!c;airGD1ErG;OPrbqXNrbq:D
+rbqdRqeuCMs)7mSs)7jTpi6:R!-.aPs)J'Xrc.[Qq/cRX!HiSbGPl^cH3/,+Du=GQCLd?S"_(th
+Akl,#:]!uf;>a>k;#sKjr_`bo;#X;n;H$Kj;>X2h;?)p]:Bs]l:037/MMUeZqhk9/q2><3rf$i7
+!1N_Qs-itUqO%8M"IPOBR$dc=!1<bPpmD)Jrg!VPR$di=s-WhQqj.8;!/UW2!fDnorepo<NfO+"
+!g&P,rfRMMPa%GuQBmm:Qj]=NR[]e:SXl@DT:l1W>,%dfUnsrdVl6SpWiN5'Xfek3Yd(L?['d?N
+\%0&\]=bhk^VI\&_o0O5a2l?EbKJ/UcHstde'umuf@S^0g=tH>hV[8MioB+]k2tjjl07L!m-O--
+n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE1Yli-_Yqu$0bs&8tfrqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sW_!`i<$qc*Jns&Atts&B"u!`i<#
+r)3Yr;cEKkrDPj<2)I$@.k</'/N>UR5sIOr4?GM]2Dd0D0.nk1;N$EhM26qAL4t;58P)QJ8kCZu
+6q'[@;,L+c:f:.g;Z0Jl;?0Yo<<#nr;Yj8h;Z0Po;Z9Pk;ZB\i;Xm]c;Ys>k;Z9Pj;#*ug:]OAh
+;#aDm;#X5m:f1(dr)*Dhs%`Yl;Z9Mn;Z0Jd:]O;j;#F,f:&n)g:B"&g;#X>k;Z9Mn;#X5p:/=\_
+:JO[[:]F2d:]=2\:\did:[h3\;=dW_;>sGn;>j>k;?'Mt;,C(b:JgRYr_WVjs%r_n!)rhor_rhp
+rD3u$;GpIo9h\/Q8kMcF:/:daqbR;Z5lO"H5lO%O5=%V&r^$QLs$6ZN5Q3qJ63'=N56!kI5n6+Z
+<Brf65X7Y2;,U=o=8>r!=^(Z+!*\tspfRMqr`&hr#$+`(<)cdqr_rbps&8qss&K"s!)rPgr)*Gk
+r_Wer;c?RlqbdBK!/UW2!fDnorepo<NfO+"!g&P,rfRMMPa%GuQBmm:Qj]=NR[]e:SXl@DT:l1W
+>,%dfUnsrdVl6SpWiN5'Xfek3Yd(L?['d?N\%0&\]=bhk^VI\&_o0O5a2l?EbKJ/UcHstde'umu
+f@S^0g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#
+s4dR(~>
+JcC<$JcE4Zli-bZqY^'as8)c%!*B*oq=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.d6'X
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/q_rq47DQ!h5XIrL!eUQ^=)+r0[DK
+qO%5J.[lQ]L4=DqIt26GYH4V"V4O'APE(KUKn"DmG^t<rVhp4bLPCP;KS+o/rj3-(R%'G-fQVUe
+I=-[!MuJk@OH5FrN<P9!MMd7IreUK-!/CH+p4W3ps+L?)onNBure1-%r.G-*KS05Ts+(0%r.4m"
+!J?"&JH15qIft4MIXQV@I/n`qI0+eCHiA?jHhr'fGlW3jHN/9eGQ<$gHN&3gHN/6jHN&3dGku^a
+HN/?lI/J?hHK';OI/SBoI!pElrdFHgqL8KorI"`rIt.EGrI4m!JV!fPqh+p%!el;[rIb3*L]3)0
+M>`;3MuASHIX?BdG^4OXEG9B1CMI[qE_cU0qb[/q!*oM/q-420>$+p2=^"s3r`]G-=^(c+s&TTL
+a]M\K=BB@K\$`UBT`Us`U\LVcUSRjbs/,=a!N)dfciVP=bkfN^bQQ,3b0/!*bQ5o0p<!9S"3J^.
+ao0<Vao7"rLPUccM#rQmMuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg3_SRf8cWS=TYN?([d`Tq\<X
+UnsrcVl-JnWiN5'Xfek3Yd(O@['d?O\@K/^]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.geC<%#f@\g2
+gYL]Bhr*JQj5]7`k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE4Zli-bZqY^'as8)bV!)`[iq=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.HosW
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/qa(K`Hf&KDpN)K7`fJs+'opqLJNo
+4*#4R@piJI@:<8>Jq/2qHZsOPDe`lq@UNMG>[q;TKSbM?LPCP;KS+o/M2-h*EHuSKW+g$_Ci4<7
+GPla_Gl)ddGl2d`FoZ[`F9$CTFSp4YFRaMOFT-@]FS^%\EcH)>qf2XT!-/!WrGM[Tr,;=K!,qjU
+qJQ@Qrbq=ErGDRM!c2^jrG;=Jrb_[QrGDLN!c;airGD4FrG;OPrbq^Pqeu"BrGVUOrGVUO!,qjS
+s)7gSq/Q@R!-.dQs)J!V!-.^Qq/cRX!-\<brHJTnH@(!bEGoc7rbW!YBk1ge@q&r5APW5#qb[8h
+r)3Mk!DlYm;?p&q:f1(f;c<Kir)!>hs-<U[#>e2k>DnDsM"?K"MYi>0N;8A3N;f:ARfJoVRJN<M
+R08nDQ^F0;R/iWRQhZsJQi<9PQ^F0=QiEHQQi36LL'!-dM#N54MMmDlMuo!!NrG(@OHG\)Op@28
+Pa.N"QC%T<!L]DURfT%MrgmDfTV8'RUSO]^VP^8hW2ckuXKAV-YHY79Za7$H[^WcW\\#Me]t_=t
+_SX40`Q$!?aihlOcHab`dF-Ooe^rF*g=k<;h;7&IiSrnXjlY^gkiq?slg4!*mdKW6nc&([oCW%T
+s7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE4Zli-bZqY^'as8)ap!(Hh]q=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.HosW
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/qa(<WH.r<;fhq<;]bp<WH+u;u]bp
+;u0Jl;[bTA0eP%-/1iG52FKh0579P63]AoR1,1I9/M@#Y*)_WLLPLV=KnP)2JkJ^-0JYgL8QSef
+:f("f;,R<jrDEPlr_rhrr_rhpq,.)gr_rhpr_`Pjs&8\jnPfHcqbdAkrDEGgqGI8h!)`Shs&&em
+r_EVm;,L0f;$Bcn:f'q`r)!Glr_`>b!)NSjrD32`rD3GirDESmr_WYlrD*Mj:Jame:A@Tb:ARcc
+;".9W;#X8Z:]OA`;#X>j;?0Sm;#aAn;GmEi!)NSjnkoE`r_EVm;,U?k;Z9Vm;?Tip:f($g;@-8q
+91qlL927iLr_NDf!C9!M5Q*kH5m'>:6:1Z;s$6TM!C/mK5ScXP5sIOs5<hG"5?1]K5X.M!6r-ZX
+;YaGp=oV\)>Q%at=nl+s<W,nr<<?3$<W,nr;uK\q;u]hs<W,ks;tX&d;>sJm;$9cq;c6Nl;>u:O
+LPUccM#rQmMuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg3_SRf8cWS=TYN?([d`Tq\<XUnsrcVl-Jn
+WiN5'Xfek3Yd(O@['d?O\@K/^]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.geC<%#f@\g2gYL]Bhr*JQ
+j5]7`k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE4Zm/Hk[qu$-arqZf)['Wq;q>'gap\sm`p&=U`oDJ1Znc/+Xn,MeUmJcJPlN$5Lkpko[
+k2tdejQ#:[iS`YOhVI#CgY1B7f[na+e^W'rdF$=ecHa\YbK@rJaS_V-SH#/ZSH#)VRK&ZGQhm*L
+QURF3Nei74I=?ZtAn\?HVP^#UR[B.pL4Xu)H$4F_K7SW-KSP;:KnP)2Jq8K'I]edMO4AH#H@:9q
+K8YqWP*1rhO,f3Yq2PB3s,$f5reUK-!/CH+p4W3ps+L?)p4iHure1-%r.G-*KS08UpjrHs!eZ)V
+rIO`n"FbiLI=1d;$[d;JH?spbI!^0cH2`-gGli>=HN&3dGl;sfGli;;HMVpaGklX`HN/?lI/J?h
+HL6(ZHLcCbI!pHmrdFWl!.FiqqL8KorI+]ps*srqrdP!"JV!fPs+:<'re(3's+C<(!JQ:-M#W>2
+MZ8V4N"_2!IX??eH?aXNDej6-Bl/*9:J^jar_`Jsq-420>$+p2=^"s3r`]G-=^(c+s&TZNa]M\K
+=BBUR\$iZKUAgqbV#I+iU87dbrhfUk!2fFeo[!ZccHQ..rlbMgb0%oNrQGAebfe0&ao09_ai_cJ
+rQ+iWs+UH,!f)SfreU]6Mi7Rns,@#=rf7,BOcfX+#EtC:Q'IZ$Qi<@`R@9V7S=H.AStD[LTq\9V
+UnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcE4Zm/Hk[qu$-arqcVTs&&jmq=sp_rq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ/a2B[
+k2k^cj5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVb/q`GKnP-VKDpQ(KE$PsJcC8rJ,4]q
+IlhakCLppZ?=.)M<EFd$I!U!ZFE),1An5=X?!:KEA7K1^A;>noKnP)2Jq8K'@srEXG,8ngCi+*3
+F*IJ+qKVj^s*4Kdr,r'_rH&$\oQ:%QrH.UQqfMgYs)e*Y"*/C$Er9qSE;XVSE;OSKDuahUE;"5@
+DZ"AOCBA<hD>e;IDZ4JQDZ"AMDZ=POD=h`ED#eJQDuX_NDt%ZDDu4GODu=MQDuOVSDu=SLEW0tY
+EVFDPEVsbUEVa\UEW1"SErgB*r-/-bs*=Tjrd+Ta&8uH)DJj9&A7]=_@q01`:J^jarDEJjs&&em
+!)`_n#>n;o;,L4i;Ys>h;#O8kPmU8^:eshpMi3IKL\?T$MYi>0N;8D3Mu]:FRe`EQRf8`OR/WKV
+R$X/,R/NESR$j?@QhZsJQi<9PQ^F0=QiEHQQi<<NL&Qf.LPUccM#rQmMuJ\8N<#"<NrkE*OoCLK
+PE_;sQ'R`&rg78bR[]e:S=Q7CT:hmOU8"EYUnsrdVl6SpX/rG*Y-5(7ZEpmE[^NZT\[oDc]tV7s
+_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&([oCW%T
+s7ZKerqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE4Zm/Hk[qu$-arqcUns$d"aq=sp_rq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ/a2B[
+k2k^cj5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVb/q`G<`N/s<;ono<;fhq<WQ3"r)3Mm
+qGdJn*&fc30.\S)/1iJ42aK_n4Ztkg3&`]P0ek@8/hd/Z)Dj7*L5(D8K7ec,JUfF24[;P=:f1"c
+;c?RkrDNVl!`2`kr_i_o!*&nqs&/em!)WYl$W9i";H$Ll;Gg7f;>X8k;u'>g;Z]os<;TVm;Z'Dl
+;Z0Ji;#=,`;#X>l;#a;k;#*rl:f1%c:Jgg`p/(cbs%rVhrD!>grD*>fr_WPj!`Dlmr_WPh"\qii
+:JO[R:]=2\:\did:[h3\;>3oe:]F8i;>sGn;>j>k;?'Po;#sKhrD<;e!)WSjr_WVj"&Mim;uKVn
+;ZTcnqbmGks%j2(;Gg=g:/";R8kDB<:J^jar_`YZrBU?J"$]%;6N0:N5lX+N5X565'L>&O5<_7q
+5=%S"<E2=M5<qJ&:Jq*hrE0#$r*&VnpK.DprDi_o"BAK'<E8usr_rbps&8qsrDiks!)rPgr)*Gk
+r_Wer;c?Rlr_`]Lre:K0Lku%e!fDnorf$l:!07&>!g&P,rfRMMPa%GuQBmm:Qt;\SS"#q<SXuFF
+TV8'RU8+N[V5C/gW2ZetXKAV-YHY:;Za7$I[^WcW]">Vg^;%J"_Sa=2`lH0Bb0/#RcHjkbdaQ^r
+f%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0iqYU0hr;HTdrdk*#
+s4dR(~>
+JcC<$JcE:\m/HhZqu$0br;$Nk['d=@=Sqmlp\sm`p&=U`oDJ1Znc/+Xn,MeUmJcJPlN$5LklL#2
+roPWjjQ#:[iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHa\YbK@rJaN'jBrLEhW!1a"W!1NhRs-WeP
+rg*AHqNs@2S<T%cH[L3hIqE;pWMZYhSskt2O,SmJJUDTaJ:N3%J:iN0L4t;6K7ec,J:O,KXc0i9
+G^P!lKS59^PQ-dKOcYWaNW+n6NW"e8M?8WjM#<#.LAci!K_U6$K`-VuLAZc(K`?`/KS>)5L&?T)
+KnK>Upjr?prIOZl!e,NEr-\QmrdFfos*FusH[C-fH[9u9HMr-hHN&3gGQ;seGlE$gGm8S?H$Xa]
+HN&3dGku^`H2r<kI/SEiHL6(YHN&9jHMr3jHN/<oI!pElrdFHgqgSTpr-e?hrdXourdt0&s+:9'
+!/1<'s+CN/L51S@rJCQ3s,6f6'TJ-4H[L-bHZsaZCi*s)Ci+*5E_lR/r_`\nqd'#&#[:J7=^"s2
+>$Co0s&fA+=oMP'=9$DB=UA87>(*lh[^<<7qkX7erLsChUnspeVZ3RmVYm@kW;WXcciMJ<q9/c]
+"O"s1bKKk.rQ>2`prWKU!6P5_!6P2\r5ntk!ec8]re:K0Lku%es,$f7rf$l:!07&>!g&P,rfR;G
+Pl?pUQC!r*R$jD3S"#q=rgm;cTV8'RUSO]^VPg>jWN*##Xf\b0Yd(L?ZaI6M\%0&\]Y(qm^VI_'
+_o9U7aN2NIbK\>Xd*^:jeCE.%f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%P
+p\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE:\m/HhZqu$0br;$Ehrf@%VqtU-arq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_G
+js]?Pj5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXSVb/q`Ga+T-EKDgK&KDpJrJH15qJ,Fir
+Il_[iBjt=R?XR8A<e>gJH[0gXEc>i.AR]+T=^#<G@q9([A7fJ.KS4u1Jq8H&FDuePNG33FDK'Z=
+GPHI^GQN/8GklXbGlDpbFoZ[`F9$CSFT$7_FEM_JnoakPrH&!\s)S0\rcA*[s)A$Zr,MUQol'MB
+qJQ@Orbq=ErG;[RCMRa'rG2INqelCM!,h[Nrb_dSCi'&eoPXYFs).jTs).UMn8A5Dr,2IOr,)LQ
+rbhaSr,DIOrc/!Yp2C"Or,DIP!-/!YqJu^[Fa!Y+s*4Qhs*OWhs)A!U%<$'"Ch76jARf.YB4Xm9
+;#X>h;ZBVn;#X>t;,C(d;,U=jqbd8frDET[!DZGi:^(EgMi*=GpPJd)qht<0qMYB4rgEeTq3qGS
+R@3l<rg<nVQ^=),rL*SN!13MKs-N_N!13\PrKmPOs-EnTK7ei2L&Qf.LPUccM>rG5MuJ\8N<#"<
+NrkE*OoCLEPEc'3$^R-GR$a;1R[]e:Sc53aT:hmOU8+N[V5C/gW2ZetXKAV-YHY:;Za7'J[^WfX
+]"G\h^V@S$_Sa@3`lQ6DbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*olH
+nd+jZo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE:\m/HhZqu$0br;$Ehr`&kdqtU-arq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_G
+js]?Pj5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXSVb/q`Ga&Q.<<;fhl<;fhq<WQ/ur)3Mm
+qG\S92`*3?.k</'/iPXR5s@Ls4?>J]2Dm6E0eY+11c$pEr\G?I22-^:K7ec,J:KO?5"A7@:esqd
+;c6Ki;Z9Pm;#aDm;Ya8j;ZBVn;#O8k;?p,u;Gg7e;,R6hs&8hns&/nqqbmPq<E/iorDNPjs&/em
+qb[/eohbZcs%r\j!)WGfs%i_l;#O5k;#X>c;#X8j;#F,g:&n)f:B"&g;#X;n;Gg<j;#O2i:'=?h
+:JO[R:]=2\:\did:[h0\;>*id:]F8j;>sGn;>a5l;,U<k;#sKhrD<;e"Ahrm;GmBh!`)WiqbmAk
+!E)el;ZBZ':f1%d;c-Ik9MJ2Sr^m5[78NeWr_`\n!'gEIr]pWN5XIg:62s4M5lj58r]h/`69mau
+4[2.r5sJ@L5sRY!5XnOHr_`_ukZRR\r`&ksqGdJq!*/qrr_rbps&8qsrDiksr_rSir)*Djr_X##
+;c?Rl;1jLSKn]M\!f)Sfre^Z4!/pi8s,@#=rf7,BOcfX+!L&cIPm`nEQ^F/.R[T_8S=TYN>+_I]
+Tq\<XUnsrdVl6SpX/rG*Y-5(7ZEpmF[^NZU\[oGd]t_=t_SX40`Q$!?b0.uQcHaeadaQ^rf%8R-
+g=tE=hV[8LioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)
+J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"gthL\6)l4q#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.coaOj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`grZjrLNtYqjRSSr0dSP
+!13VLqNq&G4(k"CMLp)$I=PsBR]NBaUS"!CQ]R)ZKn+PsG'A@eJUrE*KS>,8LUr+iJUi99Qc+WY
+GBnI_JV8`9P5LODP5gXGOH,>"N;JV4MZ\inM2;(b!/CH+on<*o!/1<)p4`U%K`6](KER!^KS>*Y
+L&?T(KDgDtJc:6&JV&LQJHULQIsukCIfY"GrI"frI=-Hkrd=`m#C:`DI!g9eH2`-fH2i3iH2Vsi
+GBe@Xrd+He#'tQ?H?a^\qKVj^r-AKmI!g9fq0MIUpj2jbrd"]oI!pHmrdFWl!.FiqqL8KorI+Hi
+rdXrurdjrus+:]4K7\`.KS5&6LPL]aM>rJ5Mu8P6NrP.PKm\8pH[0p]EGBB1D/3pMF&2^1r_`Ym
+s&8l%q-3u*>$1`+s'#D+s&fA+=oMP'=9$DB=U826@>),![^<=;U]@1eU'@BgV5:&cV>I.fVuEXo
+Vt87;cd:"`q9/c]s2tGcbP]T_b5f][ao09_ai_cJrQ+oY!.t3&!ec8]re:K0Lku%es,$f7rf$l:
+!07&>!g&P,rfR;GPl?pKQC%T<@[W[SS"-">St;RITqS3UUnjiaVl-JnWiN5'Xfnt5Z*L^C[C3QS
+\[oDc]tV7s_8=+.`Q#s>aihlOcHaeadF6Upf%8R-g=tE=h;@/KiT&tZjlYail07L!m-O--n*fc9
+rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"cne.P#>3Wq#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s--fsFLj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`r:VhK_pE%JcULUpjrHq
+s*t#urdXfq*e.11ChI-[?<pu@=*9(BI!KsZF)c&1An>@X?!:HAqd^ISAS#M6K7\Z)J8o[kEJ8+B
+D/XB8Fa3n2!.+KerHS?f!-n9a!-nKer,r'_rH&$\oQ:%Q"*A[.FRjPTFE@G'"ESU)F*.D&!ci@'
+rc7gSr,D:Hs)A!Vq/H7M"E&-qDf>/`rGDRNs(_XOD>e8ND>S5JD?"DWD/O3.DJa3+rGD4FrGDFL
+pi#\?rbq[Or,;RPs)7mS!,qdSpMp4R!-.sV!-.^Os)IpVrc.sYqJua\F`qs+GQ2mhH$Xi5H4b:=
+E,TZ4Df'2tAn5F^@XMc`r)!Air_ibpr_`_nr_WSl"Aqul;,R<jqbd;gr)*KZ$;OAn:fV:hMi*=G
+q2+s*qht<0q2>0=s-ieRs-itUq3_/Ls-NhRR/EBDR/`NPQ3*D?R/NBOR/`KRQ@f*g!ec8]re:K0
+Lku%es,$f7rf$l:!07&>!g&P,rfR;GPl?pKQC%T<@[W[SS"-">St;RITqS3UUnjiaVl-JnWiN5'
+Xfnt5Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>aihlOcHaeadF6Upf%8R-g=tE=h;@/KiT&tZjlYai
+l07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"]SK%<^oRXq#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.coaOj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD``6#<rDiMirDihts&8ts
+r)3PnqG[VP2Dd*=.fM"53&a)g5X%=m4?GJ\1c7$C0/+t2qD8(-$VZ2)JUi8/5!VP/:&[ug;ZBVo
+;?0Yo;Z9Mr:esna;>jAn;cNZnr_`_nr_WMirDEVmr_WVlr)*Mnr)3Pn!)i\m"&r9"<;]\n;Z'Al
+;Ys>h;#=,_;#aDm;#X8i;#4&g;#X;p:f1%d;>!cb:B45g:]=)h:]*ue:]F8f;?'Jm:C0cl:JOY]
+:esh]qbI2ep.tZank]'Xr_NMis%i;as&&Mer_EMjr)*Jl!)`\ks%rborD<PjrD<;er_NYn;Gm<f
+!)`Vkr_ikr;,R6hr_jG/:Jjte;,L7j;+s_X91hcL6VmVVr_`Yms&8n^r]pWN5XIg:62s4M62s1K
+5SQLN5X.Cp5<hD!5?1]L5X.Iu85E+^;X%?W=Su.t<<6&trDWl!<`W5t<<#np;uoosr)NbrrDWMi
+r)*Gkr_Wkt;c?Rl;1ee"!ec8]re:K0Lku%es,$f7rf$l:!07&>!g&P,rfR;GPl?pKQC%T<@[W[S
+S"-">St;RITqS3UUnjiaVl-JnWiN5'Xfnt5Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>aihlOcHaea
+dF6Upf%8R-g=tE=h;@/KiT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`n
+o_sFAJcFL)J,~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf"o,O8\@K0L=T8'npA=O^o`+O\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.-9OMj5T(Wi8EMLh;-l@g=k32f@JL%eC2jndEg+`c-4ASb/hZE`l7kHs.&tUrgNkT"dk^G
+R$X0;QMm0FQmQF6Nei:1I=-NWBs"A3VP0EEQ'@;cKn4]"G'ALgJq8Q,KSG/7L]4jq]7GKuOdql0
+G'\LaIt`Q6rf[2Cs-!DE!g&J&rf$`6!0$i6re^T/s+^H*re(9*q1SBop4`U%K`6]%KER!^KS>-Z
+K`6W'K(sorJdR'\Jq8H'J:E&tIenNpI=2!Ard=`ord=Zkrd4iqH$O^^qg&3frd"Kfs*+Kf!."Qi
+r-A<grcnQiH$T72rH\Ef!."Nhs*Ocnpj2=Srd"<cs*O`ks*FfpI=D0DqL/EmrI4Wn!.OlppjW0k
+s+(*"s+1]2Jq8N*K7ec-K7ei2LAlu+M>rJ5Mu8P6NrP1?OV!"jH?jg^H$=1BDK0N/D=r&L;#X>k
+;Z0Po?27b*>6%e(=TDY(>Q7h,>$:i,s&TWMa]VeN=_Wi(\$iZKrM0Fgqk=+dV#7(dVYd:kW;`^c
+d/VDmcHZ4/rQP5`rQP2_!6Y)YrQ#)_b0%j)aSj3^JV&LQK*$^[L&Qi,LB*/0M>rG5MuJ\8N<#"<
+O*m%OOcklkPE_>tQBml)R$jD3S"#q=St;RITqS3UUnjiaVl6SpWiN5'Y-5(6ZEpmE[^NZU\[oGd
+]t_=u_SX71`lH0Bb0/#RcHjncdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X60n*ol;o()DE
+o_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf#l'LDP*1r+;H!MgrV$-]rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ
+!U/_GjsoKRj5].YiS`YOhVI#CgY1B6f@SU(eC;sqdF$:ccHXSVbK@oIa2Z)NKDpPtK)gMuJcC9#
+J+\<q<,l_c@9WY;&li"bIscNdF)u>=CM.0e?s[&AraZ"=raZdVAS,M6NK&mJJ8fLSEdVS:D/XB8
+FF*\,!dK!9rHRs[rc\NhF`qqNFmjGNEr^=NFTHT*rcA6`EcZ:"F8p7aF)l;@EH(hqqJc4J#&\?t
+E,]`6qJc=MrbhaSno"ABs(q^N!GlWOC]J>LDZ"AND#S;OD?4Tjr,)+Erb_LLq/>b?rbq^Pr,;OO
+!,qjSs)7dRpi-=TEW'kVEV=AOEVskUEW:(VErgB*rc\3`s*+NhpNlje"EJI"DJoGj#\[a]ARo7[
+^LmC?r_`YmrDN_p;>sDk;?Tin:f1*h;Ys>i;#O6#:m@5?:JakkDi9O2LkkkaqMP0.q2G--qj@GQ
+q4%DQs-`_NrL*VOrL*5Ds-N_N!gf:ArKmPOs-Ee<JqEuS!ec8]reCH.!/UW2s,$f7rf$l:!07&>
+I#sJQP*2#mPa.N"QC!u+R@9S6S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY7:Za7$I[^WfX]"G\h
+^V@V%_SjF5a2lBFbKS5VcdC.geC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf!r,_pr`9"frqHBbqt9s\s7?0Zs7--YrU9dS!:BdPs6B[MrojII
+kPjTljlGI^io8qTi8<DIh;$c=g=Y$/f%&:"e'cXkcd'h\bfe2PaN2EA`V`a-<;TYs<)Z`n;?0Yk
+<#dJI1+t1./1`D42F0Vm5!:qf3&``P1,1I9/1rdV1DM`(1c%g":/-:i/j;KV8P`/[:fC7irDEDh
+r_Wep:JXearDE\q<)icor_`ep:f.$dr_`_nrD3Jkp/:Za"&r9#<;]\m;YEud:]X?grDE2`s&&em
+s%iSiqGI5gr_`Yks&&Jdp.tZ_!)NMfr_NPjqbdAis%iYis%`_l:Jajd:Amuf:A.K_;"IKX;#X8i
+;#X8a:]OAd;#X5j;#F/k;GmBhs&&eor_`PhqGI5g!`;inqbR8iqbmGms&/hnr)3PnrDX>);G^4e
+;GpIj92%uP8P2fJr)!Air_i\ns$6TM"[>7=6:!p:5lX.M5Q3n^5sdh$4Zu"o5X@Y8<C&l75=.q;
+;>sJY=nl+u=8Ptr<<?,u;uTbp<Vo_q;u'Dk<W5tr;tj2h;>sJm;$Tut;c6MEJqEuS!ec8]reCH.
+!/UW2s,$f7rf$l:!07&>I#sJQP*2#mPa.N"QC!u+R@9S6S"-%@StD[LTq\<XUnsrdW2ZesX/rG+
+YHY7:Za7$I[^WfX]"G\h^V@V%_SjF5a2lBFbKS5VcdC.geC<($f@em3gtgfDi8ESSj5f=ak32'o
+lKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQK&!P5oB=9/*ppA4I^o`"I[o)J7[nGVhUmJuYRm/QAOlMg#P
+ki_-kk2k\'j!E^Di8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5ogrgj(Zr1!YR!h#FC
+rg<hTQ^@W9!13JJs-G.)QB6fLG'\OcA9+ZJVP0TKQBR;bKnFi$H$=I]It<3)K7nu6LkiRQrjrSJ
+Cn[,ZG'JF_JV8f<r0$uAs-!DE!g&J&rf$]5r/1Z7M26ueL]<,,L&Q`*L%p>oL%^6%KnTGZqLf',
+KS5&5KS9>WrIXfqs+:9%!ePuSrdb#us*jfo!I]@pIJnNnIJnQlHiABnH[5U:qg&3frd"NgrceBe
+!."Qir-A<gqg&'`rH\Be!."Nh"+,ECHh_pTHNJM=H2`-hH2W$hHiA?kHNJSCIf=cmIfFiqIenNo
+If4]mIK4lsIf=isJGk$!K)L8tK)^H,KSG5:LPYncreg`6rJUl=NfT6_rK7,/rd"oqH['@CE,KN,
+DfttSr_`\nqc!N#qHX&)!*K2&!*]>*s&fA+=oMP'<t*0l=^#!3E0Ic?[^<==U]@1fU&q*cV"pkd
+VY?tgcgfB^cN2>9qTJi]rQG/`rQG5`prWHTprWPds+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8!f`5#
+rf7)AOoCLEPEc'3!LB)OQtr+YS"#q=St;RITqS3UUnjibVl6SpWiN8(Y-5(7ZEppG[^WcW]">Vg
+^;%J"_Sa@3a2l?EbKS5Vcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQGS"HlV[;YU1aqXsm\rq$'Ys7--YrU9dS!:BdPs6B[MrojXN
+kND!ijlHF$.,s4Di8<DIh;$c=g=b-1f%&:"e'cXkd*Bq]bfe2PaN2EA`PmI^KS9&O!.srroRQsk
++*DR>@UE8D?XQl>IscQeG]RkCC1_'f?sd2D>@V,QAH$-BB4bagr/D.h?[?^=BkhL&EHH;JHM2Xa
+GQ<$eGkH=fG^"=SF`hkMFo6=]F7jYREr^=NFTHT*rcA-]rc7sYr,MjYE,b_pqJc4J#&\?tE,]`6
+qJc@NrGDURnS\8A!,VXMs)%^N!,_UNrGDOMrb_XPs(qXNoPOYGq/5tGnS\>Er,2CMrbhaSrb_^S
+qJc.JrG_aUpi-7Qr,VaUrc7mWs)n<ar-&-crd"<c#((`FI=6*QrGN!XChI9jARo:\BDbU*;?'Pk
+;u]_p;#O;l;#aDl;Ys>j;#F0":m@5?:JakoFGl'7Lkknbqhk0,qi(B0!1<VN!1N_Qs-itUqO%5L
+rL!POnsKHDrKdJMs-WhQs-Wh:s+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8!f`5#rf7)AOoCLEPEc'3
+!LB)OQtr+YS"#q=St;RITqS3UUnjibVl6SpWiN8(Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa@3a2l?E
+bKS5Vcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]k
+qtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQIns&T:k7Rm.OpA4I^o`"I[o)J7[nGVhUmJuYRm/QAOlMg#P
+ki_-kk2k\'j!<XCi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5pq<VBDl;ZKeo<W?%u
+;uBMn;uBVp;]IbT1G::-/1iG33']\k4Zb\c2`3BK0eb77/MAs[1D_l(1c70K1eg\>9h\&M4YoT(
+:Jjnc;c<KiqGR;i"Ahli:f70h!`N&tqc!Mm!`;cjqbd>j!)`\ks&&Mgpeq8o<E3#r;uBPe;>sDl
+:B45i;=m]b;>sAl:]4,d;?'Jl;>j;k;>!c[:]=,h:]*ue:]F8h;#jGl:]F2h:B4/h:]F2g:]4&^
+:]F8^:\did:]=2i:\IWb;>3od:B45e;>j;m;,U<j;>a8j;#jMm;>sAo;,U:hr(mAjqbmGm!)i_l
+rDNYoqG[Glr_NSlr_s,!9MS2Q8Ou8I;#X>l;YsAq5XIb$5lO(M62j.L62s1K5Sl^Q5X.Fq5<hD!
+5ZLfM5X.J#8P`2];Gla_pfRPt!)r_nr`&qtr_rhrs&B)!<Us,f<W?%r;tj2g;>X8k;u_CJJH1<#
+K*$^[L&Qf.LPUccM>rG5MuJY:NK0%uNrb?)rfR;GPl?pKQC%T<CRLW\S"-%@StD[LTq\<XUnsue
+W2ZesX0&M,YHY:;Za@-K\%&u[]=bhk^VI\&_o9U8aN2NIbg"GZd*^:jeCE1&f\5'6h;-rGi8N\U
+jQ5Odkiq?slg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:gK+\%0)_^;'YLqXsj[rq$*Zrpg$XrU0gUmHso>s6B[MrojXN
+kND!ijlHF$-K="Bi8<DIh;$c=g=b-1f@JI$e'cXkd*L"^bfe2PaiMNB`Pocergj(ZrL<eT"IYXE
+Q^Ic?!go=@rK[GMqj@>K->B$9Mh6;*It20EXf/+pSXPq3Nf/[JJUD`eG(5!mJ:`<)L4t><rjr-A%
+:<^[^67&mH[L?rLQ.GmP5UUEP5gXGOH5G$N;AM6N;\\7MZ8M3L]<,+L&Zi)L&6PrL%g?%L&Zi+L%
+g9"K`Hf*KDgDsJcC?%JHg^WJUi9#J,XonJ,F`nHiSTnI/\KkHi\P=rd+Kfrd+Qhs*4QfrceEgrd
++Kf!.+Wi!dK!9qKW!brHS6d!df<Br-J?fs*FTi!.=Ec!d]-;rd+QhqKi0gs*XcnqL8El!.Oco!.
+Olpr-nZqs*jrss+(#u!.t0#s+16%rdk?,KS>/8LPYncrJLW5rf$l:s,[2AqiUl+%!d5FH?X4FDJ
+O'+\9.^Hr_`Ymqc!Mo!F/k,>lS".=T)A&>5_\*=TM]/r`K2%&'2jq>$>'QS%#l8['<N)U\phfUS
+O^]V>d@dVZG)hn^.<^!RAsbb5fcabPfZ`b5f]Zao'6UaT-hiJH(0#K)L<'KS>-ZL'!-dM#N82M?
+&S6N!G?&NfT6_OHKO*F-DiRQ'R`&R$a;1S"#q=St;RITqS3UUnjibVl6SpWiW>)Y->.8Za7$I[^
+WfX]"G\i^V@V%_o0O6a2lBGbK\>Yd*^:jeCE.%f\5'6h;-rGi8N\UjQ5OdkNV6rlg4!*mdKW6na
+Z2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:g;TOSt:DP#G7VqXsj[rq$*Zrpg$XrU0gUmHso>s6B[MrojXN
+kND!ijlHF$.H9=Ei8<DIh;$c=g=b-1f@JI$e'cXkd*L"^bfe2PaiMNB`PocJK7npQKDpJsJbXco
+Ij\3;E+rce?sd>E=+YmKH?OFPE,00#AR]"P>?YNG@q0%YAS,RdB9)qM%p*%CM0Ph2DJsH8G'J@\
+HM2X[GkH=aG^"=Sr,qFLrc8']n9+bQs)S6`F*%>$s)\$W!c`0ur,MRPphp7PDf9UoDu+GNDuFPR
+Dt.`DD?"GPCBA<hD>e;IDZ+GOD#S;OD?4Tjr,)+E!,_LKpi#\?rbq^Pr,;OOrbhjUDf>Mlp2U%M
+rGhXPs)IpVrc.mWr,Vp]F`m\,!I&_dG5umeH2;jeHiJKlIK"0oDJsB/Ch@6iA7K/8B)YX+;>sJj
+;u]hs;#O;l;#aAo;Gg?h;>sDi;%QQgPtk+O:h+d/Mi*=G8Vr<$MYE&+N;AG5Q^IW;!1N_Qs-itU
+pm;&Lr0[GNnsKHDrKdJMs-WeP!.Xuus+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8#E=b(O,oBaOoCMb
+PE_>tQBml)R$jD4S"-%@StD[LTq\<XUnsueW2ZesXKAV-YctC=Za@0L\%0&\]Y(tn^VRe)`5Ta:
+aN;WKc-FY^dF-Lne^i@)g=k<;h;7)JiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^qhLp@e7TrqQNh
+s8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:p+hr^QbWrq-3]rUTsXs7$!U!q,ICrp9[N!:'RJ#3b75k2tdd
+ro5<aiS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHXSVbK@rJa2Z*;`;N^2<;f_q<;T\q<<#ns;Z0Mo
+<;f`C0K1gC/h8J(/N>UR5X.Fo4?GJ\2Dm6E0/"k/1GgjA1G^jE2)I-`r_3bo7S-6:7o)rY:f:6j
+;Z'Dg;Z9Mr:esk`;>sJn;u]et;c<Nls&&kp;#4&h;?0Sn;#X>d;Ya8k<;okt<;fbo;Y<od;#a;k
+;#O8`;#aDl:]O;i;#4&h;#X>j:]OAd;"d]a:B+,g:Amug;#F/j;#X8j:B+,i:B"&h:B"&f:A.K_
+;"IKX;#X8i;#X8h;#aD_;#O2c;>j>k;?'Pn;>a8j;?'Pm;?'Gr;,U:h:f73g!)`Vks&/nqqbd>j
+s&8\l&5uG&;G^@k;,U+]9hJ&N:.,"Wr_`Ymqc!Mo!^T%9r^$TNr]pKLs$-HI(I:;N5!;+p5X@Y8
+<'`c65=A.?;,U:h3pg)E=9;Q&;u0Jm<<-"s;Zp'"<E)uh<;fhs<;fbh;Z0Ji;?9^Grdb$"!.t0%
+!ec8]re:K0Lku%es,$f7req)ANfK0]OH>V(P&lhOQ'IZ$Q^F/.R[]e:SXuFFTV8'RUSO]^Vl-Jm
+WiE/&Xfen4Z*UdD[^NZU\[oGd^;%G!_Sa=2`lH0BbKJ/Ucd:(fe'uq!f@\g2gYL]Bi8ESRj5f=a
+k3)!nlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEF`mJct\qu$3crVHHfqY19)\[oJg^Vg%QrUp0^rq$'Ys7--YrU9dSs6]gPs6B[Mrol-#
+kND!ijlGL_j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaiMNB`Pod4rLNtYrL<eT"IYXD
+Q^Ic?!go=@rg*SNs-WYL(hfD#M1^/'IXc$DXJi"kSXPk/NJ`IDIX1p;s*bi;J:`H-KnbA<]"5Mc
+?Y<tbF5;%bI"?p)MZ&\5P5gaGP5gXKOH5E]NJrhnN<"q9MuS\7M>`5*K`Hf)L&6PrL%g<%L&Qc)
+L%p?$L&Zi+KDgE$JH15tJcC?%JH:@Rrdb#urdO`o!.OiorHnTnrI"TkrHnTjrd+Hes*FWhs*4Qf
+s*+Nhrd+He!.+Wi!dK!9qKW!brceEgr-AEkI!bd;s*=WjmX#"]H$TC8rd"<cs*F`nr-eHkrdFfq
+qg\Tos*acn!e5ZJrI=itpOW?rs+13%#(qS_L5(J>re^Q1s,6o9s,@/AO,oBarK7)B!/gc'%XEDI
+G&hG=Dej-,G&pJVr_`Ymqc!Jn!EEA&>lS".=T)A&>5_Y-=]ej1r`K2%!Q`C^=p\G_U:7V?['?j1
+r1X7fUnmd^s/,Og!m]-<n^.<^!RApab5fcabPfZ`b5f]Zao'6VaT?p@J,XuuJH1<#K*$^[L&Qi,
+LB*/0M>rG5MuJZ_NK0$[O-#KdP*2#nPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Y-5(7
+ZEppG[^WcW]">Vg^V@S$_SjF5a2lBFbKS8Wd*^:jeCE.%f\,!5gtgiEi8N\UjQ5OdkNV6rlg4!*
+mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEF`mJct\qu$3crVHHfqY1&PrfI8FPEl,FrUp0^rq$'Ys7--YrU9dSs6]gPs6B[Mrol0$
+kND!ijlGL_j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaiMNB`Pod4KDpQ#KD^>rJbsuo
+Ii)1*ChI0^?=7/B<e5^IH$=@NDe`oq@UEF?>7+kLA7K+\AS,RdBDmeu=C#3?AuTN]DJsN<GPujg
+HM2XZGkQCbG^"=SrcJ9cF`m.ps)\3^n9"_Qrc8-_F*%"p!c`0urGhgU!,qgTq/?:Ns).mVrbq[Q
+qeuFN!,qFGr,)IMs(_[PD/K8g!,_UNr,)FLrb_[Q!GuZND<u09Dt%ZDDu=MMDuOYODu+GHEW0qU
+EVOMQEVskUEVskUErpH+FoHObGBWt0!-nKgqKi0g!.=]m!If7lD[pZ'DJX#tAn>L_@qK:K;#X>k
+;YsDl;uourr_ibms%rhq;,[9gr_WPjs%j/hPtk+O;.tB9Mi*@HLAHf$Mu8P3MuS_;Q^F0:R/i]O
+S,\oXR$m`:!1EbPrL*5Ds-N\Ms-NbQs-Ee9It.HJs+(0%rIY0)Kn]M\s+^T1re^Z4!/pi8I#X/H
+O,oBbOcklkPa%GuQC!u+R@9V7S=Q7CT:hmOU8+N[VPg>jWN*##Xfek3Z*L^C[C3QS\[oDc]t_=t
+_SX71`lH0Bb0/#ScHstee'uq!f@\d1gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGp%A%P
+p\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEF`mJct\qu$3crVHHfqY9th"BAAg7Rm@Lrq-3]r:9mXs7$!Us6fpSrp9[N!:'RJ0^.]_
+k2tddjQ#:[iS`YOhVI#CgY1B7f[na+e^W'rdF$=ecHXSVbK@rJa2Z*;`5;IQpf.2j!*&hqs&AYi
+(G@[%0J+b*/M9"?5sRXt4$#A\2Dd-D0`<X+1bpoe1Dr#,2Dm<c9i"JS8kDWM<DH@f;,U7h;c?Rl
+r)*;gr_`\l$;XJq;,U:j;cH^pr_iYmpJCrh;>sDk;>3ua;u]hr<<-"s;uKVc;$0Wj:Jh!es%i\k
+pe^rer_NSjrD<>fs%r\lrD3Jkp/(HYr_EJhrD*>fr_WMi!)WYjs%`Sis%`Sir_EGgrD*&^r_W2^
+q,%&dr_WSir)!Air_NSlp/(`a!)WJgr_WVlr_ibnqb[;ir_i_ms%iep;GpBi:]OAi;ZBYq;Ys>k
+;Z9Vg<<#c+:Jahc:fC4a:/";S8OPsC;#X>k;YsDl;uou`r^$iU5X7P"5sIU45Sl^O5<_4p5<qM"
+<E)7L5<hV2:Jk"f;,d9n!*JtupK.Dsr_rYmr`/kp!`W0"p/D#lr)EVps&Aqqp/:idqbdKEIt.HJ
+s+(0%rIY0)Kn]M\s+^T1re^Z4!/pi8I#X/HO,oBbOcklkPa%GuQC!u+R@9V7S=Q7CT:hmOU8+N[
+VPg>jWN*##Xfek3Z*L^C[C3QS\[oDc]t_=t_SX71`lH0Bb0/#ScHstee'uq!f@\d1gYCWAhr*JQ
+j5f=ak3)!nlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k9j\@K8c^;7e0>5hV(p&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+kqVDbkN:pgjQ,@]io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'h[bKJ&MaN)<>`Pf[2rLNkUs-itU
+!LT5QR/WKWR$X,)Q^@Z<r0JUBB:4j:Is?EhJ7`JpVPU)YR$NekKS4o(H$4=\J:W6&K7s5X!f+@u
+rjrT0B4u:,G^4[eKnYDFr/pc;!0dDFs,d>DNrG%<N;JV5MuS\7M#`A2LB*)$L&?VsL%g<%L&Qc)
+L%g6%KnP-YK*$UUK)U<$JGXltK)C3!JH(,uIf"TpIf4]mHiSTnI/\KlHi\S>rd+Hes*FZis*4Ne
+s*+Nhrd+Kfrd+Kfqfr*crHJTnH?sj^H@1'dr-A?grd+!Z!d]-;rd+QhqKi-fs*X`mrI4]n!.Oco
+rdOlqrI4`q!.Olrs+'Zks+1E,KnY89L]3/-MZ8S?N/`gWNfT6_OSt=?OqEn2I!pEiG^+CLD/O6,
+DL$A$r_`Ymqc!Jnr`/o%s'#J*r`K5'r*02'!ErY*=T;G3aN7Xi>%<;e\$rfQZ*=,"!McIiV>d:i
+V>d@fVuG!Acgf?accsbZpri]]rQG/`rQ>2`pW<?Sr5ntes*jutrdb$"!.t3&s+LE+re:K0Lku%e
+#E"FtN/WaUNrG(?OHKO*E0HNOQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/gWN)u!Xf\b1Yd(O@['mEP
+\[f>b]tV7s_8=+/`Q-'Ab0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5f=ak3(smlKdg'mI'H3nF?&>
+o(2MGp%A%Pp\4[^s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k6iOH>TePE_?!rDEXgrq-3]r:9mXs7$!Us6fpSrp9[N!:'RJ
+1$If`k2tddjQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BIjK`$K!K)1&o
+JGamD<`3pRA6rJJ?=?l8J9uTgF`_S=Bk1a`?X6i<@U`kXA7T7_B4YZPN=0i6?tEtdCi435Fa<k2
+s*FBapiuOY"*f$5G5cXaG5l^RF96N*FRXDQFT-=^FE@(p!-.sVs)J$W!,qgTq/?:Ns).mVrbq[Q
+r,;LN!,qFGr,)IMs(_XOD>e8ND>S5KD>nAOD>nDQD#A/9DYe;?DZ4SQDYnANDYnALE:n5ME;jkP
+E;sqUErC"TErL+[FT-F\G5c^cGlN'cHN/?iIJnU+FDl/:Df'?-An,C`@q04b;#X>k;YsDl<;ons
+;ZBSl;#jMk;>sDj;?'H%Pa,$?:f_CcMi3ILLPG_aoo&a,!/pc6rg3YPqjIJQq3qDRRJ*$JRJiNO
+RIZaFQi36MQiEHQIK+crJ,XuuJH1<$KE$W)L&Qf.LPUccM$JorMi<USNK4"!!K`HCP&QVLQ'IZ%
+R$a;1S"#q=St;RITqS3UUnsrdVl?\rX0&M,YctC=Za@0L\%0&]]Y2%o^qmn*`Pom=ai_fNcHab`
+dF6Uqf%8R-g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@n=\q#C0iqY^6hr;HTd
+rdk*#s4dR(~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k-f<`N1$<;oer7K,aVp&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+kqVDbkN:pgjQ,@]io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'h[bKJ&MaN)<>`Pf[2rDiVlrDN\q
+r)N_q!)rhqr)4[l0/bU?/1N2&/N5RR5<_7m3]K&V1bg^</hJ\21GU`b1D;T&1c%j#:JFM?8kM`P
+:/Feb;H!Eks&/blq,72hr_WSk"]A8t<)cfp;Z0Mo;Y<oe;#aDd;Ya5k<;fhs<;fbp;Y*`c;#X5j
+;#X>l:]O;d;#X>k:]O;i;#4&h;#aDj:]OAd;"d]a:&n)f:B"&h;#=,h:]F2h:B4/h:]F2h:]*u]
+:]F8_:\[cc:]=2i:]4,e;>!ca:\[fd;#aDl;ZBVl;#aDk;Z9Mr:f1+g;>a5j;>O/k;c<Kis&/eo
+oMcB!:Jk"d;Gp@e92A5S8P)<Hr_`Ymqc!Jnr`/qa#=1U>5=%S"5Q*hd5sIRt4[)(q5sSFL5s[_#
+7SQZU;Gp@j=]eg0rE/espK7Gpr_r\nrDibo!`W0"p/M&lrD`_qs&Aqqp/:idrDNZDs*jutrdb$"
+!.t3&s+LE+re:K0Lku%e#E"FtN/WaUNrG(?OHKO*E0HNOQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/g
+WN)u!Xf\b1Yd(O@['mEP\[f>b]tV7s_8=+/`Q-'Ab0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5f=a
+k3(smlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`#eRa`^r+47cIDeprq$'Yrpg$XrU9dSs6]gPs6B[Mrol?)
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SMe6S=KSJrgNhS
+s-W\O!1<bPqj@>K2enkKO+i"2I"-]\YH"LtTUV@9NerLDI<g']JUi6&JV8]1L5(D:]"5McTX/6J
+FEi+ZJ:rW6NW,%<On=h:OTCQ)rf-r:qi(T7repf6!f;_hreLN.onE9rp4`6q#).__KS5&5pOiO#
+re1<(!eGrTrdb'"qgea!r.+p"It.BFqgSTprI+Efrd4Wl!.4Zjqg&3frd"NgrceBe!."Qir-8Km
+H$Xa\H$T72rd"Herd+Tird4Qhs*=QhmsG([rd+Qhq0N'fr-\HkrI4cps*jiprI+`prI+m!J:E#s
+rI4ftnUUpsK7nr4L51TaM>W81MuJ_9NrP1?OSt=@P5g^XP*:BDH[L3cG'.S>CMdm+JUdYrs&/\l
+r`&ks!ENJ(>6%e)=TDS%>Q7e+>$:i,s&TZNa]hqPCQ>^0\$iZKYl(3qU].%kUSOZ\rh]Ukq5=2:
+s3LDc!71Vj"4,6:bk]H[bl>lbbl,]bb4s*TaSs9]I/\QoIfFosJH(0#K)L<'KS>-ZL'!-dM#N5F
+MMmCON/`jXO,oBbOcklkPa.N"Qi<@`R@B\9SXuFFTV8'SUnjiaVl6SpX/rG+YHY:;Za@-K\%&u[
+]Y(tn^qmn*`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*ol;o()DE
+o_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`s,dMKPE_B"R@X:Srq$'Yrpg$XrU9dSs6]gPs6B[Mrol9'
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SLnYr.Fs"s+10$
+qLSHmrI5niFDu#)?=.&I@T\84I!U!ZF)c#/@q&eN>?YKG@Us$KAHQOWAS(h"$Zq53@qKIkCiFH<
+Gkl^dHM2XYGkcOcG^"?0FoHRaFmsJRF*-kn!d&L(rc@^Ps)J$Ws)J$W!,qgTq/?:Nqeu@Nr,:q>
+r+uFMrbDOND>e8ND>S5LD>nAND?"MMD<l*9Dt%ZDDu=MMDuX_ODu+GHEW0qUEVOJQEVjeSEVskW
+Er^=\FoQUdF`qs-GQ2pfH2;gfH[Pd?qL/rpE,TZ6DJX#tAn>L_A8lJd;?'Pj;uTbq<<Q?#;,C*f
+;#jMk;>sDj;?'H%Pa,$?:g7srMi3ILLPGecoSWd0Mi7Ci!1<bPs-W\Os-iqV!1NkU!LfGNR/EBP
+R/NHER/WHNQN*9PR!em]s*jutrdb$"!.t0%!ec8]re:K0Lku%e'T.g,N/WaVNfT6_OcbfiPE_>t
+QC%T<AXT$WS=Q7CT:hmOUSO]^VPgAlWiN5'Y-5(7ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbg"GZ
+dF$FmeCN7(g"P39h;7&IiSrnYjlY^gkiqBum-O--n*fc9nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTd
+rdk*#s4dR(~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`s&K,!rDW_o!(?fUrq$'Yrpg$XrU9dSs6]gPs6B[Mrol9'
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SK5Ppf.,h!*&qt
+pJh)i(,7a)1+k(-/M/S66U<q!4Zb_a2Dd6Fr[n@-1GgjD1]B3D2)[<J9hnDV018N.:/Fba:Jt0j
+;Z9Vp;Z'Df;Z0Jm;#O8k;u]f";c6Ij;Z9Vo;YEuf:]OAd;YX/j<;]_r<;fbp;Y*cc;#a;k;#O5l
+:f$j_r_`Yk!)NPiqGI8hs&&8^pJ:`_!)NMfr_NPjr)!Gjr_NPhs%iYir_NPhr_NJfp.tZao2#-X
+s%iVjr_NPjpJLW\r_EMjq,.,fs&&bns&&Yi!)`YlqGI/e!)`MhqbdAkr)<Gk!)r_n%oQ8&;,U1g
+;G9bY9M8#N9)_]f;Yj>k<;ol)<^K)<5X.J!5sR[55QX595Q3hY5<qM"<E)7M5=%h9:f1+g;,d3k
+qH<Ppr`&kqqc*Pp!`W)rr_ikt<E8cmr)NbrrDiksrDWDfrDEPl!.=cos*jutrdb$"!.t0%!ec8]
+re:K0Lku%e'T.g,N/WaVNfT6_OcbfiPE_>tQC%T<AXT$WS=Q7CT:hmOUSO]^VPgAlWiN5'Y-5(7
+ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&IiSrnYjlY^gkiqBum-O--
+n*fc9nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7Qo7^V[t2bgG,&>$+j.oDJ1Znc/+Vn,MeUmJZAQlg!d7
+kqhPdkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8,u=s-s%W
+pmM)J!13MKs-FjUB:G-DJUDorIqNGtWMZJaR@'4uM2$V2GBe:\It3-(re1H0KSI):]*l$2Rr`e!
+I=[$(M2qFos,lr:s,dMIO,f6[N/[Xn!0$o8"H&%mLku"b!/C0#qh4ZspP&m+KS+o1Kn]8S!/:E*
+s+:T.JqAQ)J:N3$rIFs#r.+p"It.BFqgSTprI+Wl!.Ffnrd4TkrHe?drd+Qh!-nKercnEgqg&3f
+s*4ZjH$T72rd"Kf#C1WAH$O^_Hi&*hH2W'XHNJM=H2`-hH2`-iH2i3iHi&3hI/n`pI/n`lJ,+Nq
+It3#tr."3e!J5t'Ka*9eLl$tGM>iD2MuSe:NrP1>OSt=AP5g^KP*;)oMZ/&'H4"h7DJsE.DMj!B
+;>sJj;uTbp<W6%u>6%e)=TDS%>6A#1>$:i,#Zk-LaBMhOF-cg7"Lb\BY[d[,rM'FgUSId`s.o^m
+q5=/9s3LDcs3L\k"4#08bk]HZbQ,ibbl,]bb4s*UaT'B^HiJKmIK+crJ,XuuJH1<$KE$W)L&Qf3
+LPUbCM2I1Krepl;NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-JnWiN5'Y->.8Za7$I
+[^`lZ]=bhl^VRe)`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*ol;
+o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7QnaPEV5sR%'eK;Gg:hoDJ1Znc/+Vn,MeUmJZAQlg!d7
+kr.bgkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8(\UK)L?%
+K)L9#K):,nJH(*A>uPi_BOP4S?sm#9Jpr)mG]\"FBkCmb?X6l?@q&qZAH$-AB4YZPN=1A[FD#<&
+D/XH;G^B.3s*FBap3?CY!dJp4rH8-`rcS!X!-S'Ymr\eUF)l;BF7XDPEW0qWEW:"XDuFYNDuX_P
+Du4MODuFPRDt7fCD$=`kCM[j)rG;@Kr,)FLrb_[Q!,VRMlYcN:n8A5DrGMLNrbhRN!cW'rrG_LN
+rG_aUpMg"Mqf2OS$ZgE4F`_bKG'.qNG5c^cGlN'dH3/G@I/\QhIK4TkE"-`'Des#sB4YU`F)OoQ
+r_iVlr`&hrr`9%qrD<PmqGI5gr_`\ls-3OZ$;b,SN/NUOM2-gap5Ap-repT2s-WePs-W\Os-iqV
+s-iqV!LfGNR/<9OR/NHER/`NOQN*<OHiJKmIK+crJ,XuuJH1<$KE$W)L&Qf3LPUbCM2I1Krepl;
+NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-JnWiN5'Y->.8Za7$I[^`lZ]=bhl^VRe)
+`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@nO\
+s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7QIn<;ohr;?g-*77K^8oDJ1Znc/+Vn,MeUmJZAQlg!d7
+kqhPdkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8,hFq,78m
+r`/bnrDOac/iPUA0.JM(/N>UR5s@Fo4$,AY1bga>0J5"81,Ahc%Poq"2)@s$:JFMA4u?#1r_N\p
+<)HNk;Z9Vp;Z'Df;YO#o;H$Oo;c6Ii;Z9Vn;YErg:f7!c!Dubi;ZKep<W5tt;uT\c;$0Wj:Jh!e
+s%iDdr_`Yk!)NPiqGI8hs&&_k!)`GdrD*DgqbR2ds%iSgr_NMir)!Gjr_NPhs%iYis%iVhr_NJf
+p.tZaoM>6Yr_NMir_EMjpJLW\r_EMjq,.)e!)`\m!)`Shqbm;gr(mAjpeprcs&/eoqGdJnqG[c"
+;,C+e:f1.g:Ad`e8k`)Zr_iVlr`&hrr`07i5X.J!5sR[55QX5:5Q3hZ5<qM"<E2=N5=8"=:f1+g
+;,]XR=T2Ip=T;D$<;ohn<;ol'<)Z[m;c?Xq<VKJi<<-"s<W?%s;tj2g;?'PoHiJKmIK+crJ,Xuu
+JH1<$KE$W)L&Qf3LPUbCM2I1Krepl;NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-Jn
+WiN5'Y->.8Za7$I[^`lZ]=bhl^VRe)`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjj
+l0@U$m-X60n*ol;o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUpf9_8O@8cdpt7l!%:l=BP.brpg$XrU9dSs6]dO!pf.:
+rojgSkND!ijlPR`j5T%si$I:;h;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQC`Pod5_SO%&r1*eV
+qjHl>+`(h[OGA@2IXZ$EAuqr-Un!m>P`(6NJ:)QbG(5$nK7ejVL'!-l])K;LMj_;7T6Yd5JqSu@
+plPN<oTK6:"H\\)NfF$sr/C]8regf7M>i>0L]<,&L&-JsL%pE&Ka!-^K7no3pOiO#re1<(!J,k%
+JcC6$JUm]M!.t-"!e>cMrI4Wns*joprHnTnrI"TkrI"Qiqg&3frHSBfrceBe!."Qir-A9fs*4Zj
+H$T:3rd"He#C1WAH$O^_Hi&*hH2W'XHiA<jHN&3gH2r6iHN/?lHiSNlI/SKnIfFfrIe\EhIKY.N
+J:E%GJ+/!iK7s5X!JZC-M>rJ3MZo'!NK0$[rK-u?!0[8Ds-3PK%tT.VH[C']F`)&6Chdg+K)S[E
+;uTbq<W#nt>Q%\)=SuA*=]ej1r`B_5=NJQf>$?6C\$rfS['HoMqP*q`rhKRkVZ!FmV?!OjcMu5a
+d/MAkcj%e?bfn8Rb5BHWbl#Wab4s*Ua9Kb4H@(!dI/\QoIfFosJH(0#K)UE&K`?c+LB!#/M#N6L
+MMmCON/`jXO,oBbP*2#mPa.N"Q^F//S"#q=St;RJTq\<XV5C/gWN)u"Xfek3Z*L^C[C3QT\\#Mf
+^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"O`
+p&Ojcq#C0iqY^6hr;QZdrdk*#s4dR(~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUpecPEV8tR\-IXY>\=r;H!)Vrpg$XrU9dSs6]dO!pf.:
+rojgSkND!ijlPR`j5T%si$I:;h;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQC`Pod5_SO%&rdt*$
+qgnd!qgnHk(fjUVD.R*Z?sm);<e5^HH?OCNDJE`o@:0"<"CknNAS(jQ!bZ+brJ_2%G)C?jC2S!1
+FEW!*Hi89aH1cFYGli57G5ZR`G5cXZF9$IYFRXGQF9$CNEWC+YDuanWE;skTE;FMPDZ"GME;OSP
+D?+VGDZ"AOD#\8PCi+%gC]J>LDZ"AND#S;ODZ"A:DYe;?DZ=YQDZ"GPDYe;OE;skUE;OVTE;aeT
+E;sqOE;FVQEVsh[FEM_JFSp:]G5ldcGlN'eHN/<lI/\QeILgO=E,KT3DJNcpAn5@\A8qNGqG[Am
+r`/ks"]/&n;Gg?g;>sDk;?'JmPlFMd:h>$5Mi3ILLPAq+Mu8J4MuAV7MZA_6R/`NQR/<<ORf8fU
+RfAiXR[No;pR1T>s-N\M#+'X^H[C-frdFfqs*t#us+(0%re(6(s+UK-s+^T1reYQNMi3OQNK0$[
+O-#KeP*;)oQ'IZ%R$a>3S"-%@StD^MU8+N\VPg>kWiE/&Y-5(7ZEppG[^WfX]=bhk^VI_'`5Ta:
+aN;WKc-FY^dF-Oof%8O,g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6Hjrr)HfJcC<$g])d~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUp4jr_rhp"]JQ1@73Q`7fW&Ync/+Wn,MhUmJZAQlg!d7
+kmQ_<kN:pgjlGI^io0mp-/[S8h;$c=g=b-1f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8*h^<;0;k
+<;onq<;fbq;BIVI2D[!<.P!)13&X&e5!:tg3B&iQ1,1F8/h]%:1Gf"e%lH7&786QQ9K#+"77^3N
+;#X>p;,U:jrDNYos&/blq,6ra$;sf%<)Z[l;,U:jr)3/a!E)km;?B]n;Z0Mo<;oer<;T\q<<#ns
+;Z'Dl;#!li:esk`rDESjq,%&frD3Jir_WDf!)WYlrD3Jkp/(]`!)EDer_EJhrD*>fs%rSir_NMg
+s%`Vir_NPhr_NGepJ:cboM>3Xr_NPjr_NPjpJLW\r_EMjr_WYlrDEMi!)`_ns&&VhqGR5gr)!>i
+!)`\mq,./irDWSmr_r\n!)rkr%o?,#:Jt(i:eaYX91hcK8cDWa;uTbq<W#l%5X.M"5sR[55S-4H
+5<_7q5<qM"<E2=N5=A*B;#aDp;,][M=T;P#=Su1t;u9Pn<<6&tr_`hs<)lrm<;0Dl<;fbi;Z0Gs
+;L3Y9H[L5?IK+crJ,XuuJH1<$KE$W)L&Zo-LB*/0M/S90Mi<USNfK0]OHG]hPEV5rQ'Rc(R$sM6
+S=Q7CT:qsQUSO``Vl-MoWiW>*YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0
+gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>s+14)s*t~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??a&B)Q.c-tG,kNhO&>$+j.naZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$[F=h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^Rb@o
+!h5XIrgE,?-#&j8O,&7/DJNotBWJ,2UR[g>OGegFJ9uQeJ:N6&Kn=u3L4k<[]*k=(WM#`*G^P0u
+M2V(hrK6f:s,dGGO,f6[rf$c7!0$o8!/g`2rJ1B,p4`BspP&Bs!el;\rdt6)L%g6#L&Qc*K)pOT
+rdk*"!J,e"JH1<"JHC@OJ,OinIfOrrIJeHmIJnQmHi8?jHM`!fHN&3iGlDpeGQ<$gHMi'fH38G;
+H$T72rd"Kf!dT*<rd"Njqg&6frHdpZ!d]-;rd+Qhrd+TirH\QmI!^5=I/89kIeeKhIfFrpJ,b&h
+JH:CVre1W4LP^kDM2@+Irepf8s,I&=!0@)?rK6u@s-3MJ&!)0dIX6BdG&_;9C2.O%FoG;9;uTbp
+<Vfbp=TDS%>6A#1>$:i,&6DuTaBMkVJY]ca[^NQJY]0K6rM0@f!i;cjqkj27!71>br6PDf!6kGc
+!6Y5_q98]Y!6Y)YqoJ_^s*OcnrdFfqs*t#us+(0%re(6(!/:E,s+^T1reUZ5MuJZKNK0'\OHGZg
+P*;,qQ'Rc(R$sM6S=Q7CTV8'RUnjiaVl6SpX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'AbKJ/U
+cd:(feC<%#f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`n
+oDX=@JcFL)J,~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??as-+"YR@U+PY-G:;;Gp@inaZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$R@<h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^]&fb
+KDpK"JH1<#Jb4I2<HE.qA7/SE=]\X)J:2cjG'%\>BP(d`?X$e6@g?RTAS#LcAWHbL$[6cCGC4.?
+E,fuBH1lUbHLuLUGku[eG^"?/FT?UaFng(YFnp.KFTQZ+F74,LEW0nWEW0qWDuFYODuOYPDu4MO
+Du=JQDt7fDD?"GPCB86grG2INqel@LrbVRNs).^Nl>HH:n8A5DrGMLNrbhRN!-%mTs)@mUs)@sW
+r,D[UpMg.Pr,VgW!-%pWr,Mp^F`heJr,r$_s*+Hes*=Ng!IK4nIIqt"I=#pPDJsK3ChI<jA7T1\
+B)Y^*;uTbp<Vf_s;,[0dr_O8*;Gg7ePa"s><,-rBMi3IML5&t/Mu8J4MZAY3Mu/nAQN3ELRK&`T
+S,8WSRJ3*ERIHUDQi36KHN/?lI/\QoIfFosJH(0#K)UE&KE-`*LB!#/M#N53MMqImBT8%5O-#Kd
+P*2#nQ'IZ%R$a>3S"-%@StMdNU84T]VPgAlWiN5'Y->.8Za7'J\%&u[]Y(tn^qmn*`Pom=aihlP
+cHjkbdaZdsf@S^0gYCWAhr*JQj5f=ak3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6Nl
+rU^#>s+14)s*t~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??a$<:#&;H$\'@:E\Sr^?lXnaZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$R@<h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^\q.)
+;tj8k;uTZL0K1gD/hJJ33&ifR5sIRt4$#>[2)R*B0/"q71,:[B1GgpH2)@s&:J<K!4uPr+:Jq*h
+!)`\mr_rhps&8qqr)*8fpJD/n;cH^p;Gg<i;?0Sn;Y3ff;H$Nk;ZBSo;Z9Vp<;oer<;T\q<<#ns
+;Z'Dl;#X;l;#F/m:esk`rDESjq,%&frD3Jir_WDf!`2`kr(mAjp/(HYr_<Ghr(d5es%rVj!)WYj
+s%`Sis%`Phs%`PhrD*&^r_W5_pe^rcr_WSi!)WDep/(`a!)WYls%r\l!DlSk;#XAm;>O,h;>a>i
+;>X2g;?0Sm;?0Pi;?'Pm;uK\q;Z]iq;u0Gr<E)su;uKN"<)QRg:/+AS8kVSO;YsDl<;fhn<WkZR
+5sR[35Rp"B5!M:t5s\LN5s[b)9)_Wi;H$Fk5P/(W=o2=u<W5qn<;oku<)`co!)rkspJgrgrD`\n
+pJUrerHeKjs*Xfos*jutrdb$"!.t3&s+CB+reCH.!/UW2!K)g7N+e32O,oBbOcklkPa.N"Q^F//
+S"#q=St;UKTq\?YV5C/hWN*##Xfen4Z*UdE[^WcW]"G\i^VI\&_o9U8aN;WKc-FY^dF-Ooe^rF+
+g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVc?eJcC<$g])d~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_s2>/`d+I4;l2BuQ='A[,=Rc7Ws6fpSrp9[Ns6BUJ
+3p>bik2tdejQ#:[iSi_Qhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbKJ#KaN)<>`5BI.^q[XuSXc1=
+rgNhSp6bZB-@0BrOc!deDJO$&BWeA5VP0HFQ&^fVKn"GnG_(EuJqSf4L4tGKrOWE<NlI'FH$k-s
+L5kherK6f:s,dGGO,f6[rf$c7!0$o8!/g`2rJ1?+p4`BspkAKt!JQ4*KCsltL&Q`-K7\Z+rdk*"
+!J,e"JH1<"JHC@OJ,OinIfOrrIJ8-hHi8?jHMVpeHN&0iGl;jdGQ<$gHMi'gHN/6lG^4T2GlE!f
+GR&M?H?jd^H[GL5mX+qYrd+TirH\HhrHeEhrI"Nk"+5NFIeeKhIKG"LJGXiqJF\6mJqSgVKa<Hi
+M2@%FM2I2iMuSb9NW5%;OSk7<PQ-mGPnB=7I!g9fH?FFKDf0<*D/XGmqc!Gmr`/bp!*B/&!*K/'
+"'J`/=o;D%aT#HOB8EUt\$i`PZESNMUA^kbU^*`nVPU,dVTnq^!71>br6GGhbfp(0s2t;`q98`Z
+!6Y&XrQ#%bH$T@7s*F`nrI+]p!.Xrt!eGrTrdt9*Kn]M\!JcL1M/8'-Mi<USNfT6_OHG]hPE_>t
+QC+&-R[]e:SXuIHTq\<XUo(&fWN)u"Xfek3Z*L^C[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Ln
+e^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$
+gAc[~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_&X/HGS"Z^\Yd1R>Y>/"n;,Zo]n,MhUmJcJPli68L
+kr.bgkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JI$e'cXkd*Bq]bfe2OaN2EA`Pf[2_8*h#^A<HT
+JbFTs>ZGi^BDl$6=W:IpJ:)`gFE2>:BkCmb?<^ZF@qB1^AS5XfB6O65$@ZuVFae(BE-$/IoR$R`
+om-4TqKW-eGBW_'q/lUYqK24L!H`DNEWC+YDuanWE;skTE;FMPDZ"GME;XYADYn8ND#S2NCi0,e
+!,_UNrGDOMrb_[Qr,(_:qJYh?rbqdRqeuLPq/?:PrGM[Tqf2US!-.pUs)IdPrc.mW!-/!Ws)IsW
+!crL,rcJ'\s*"Eds*4NgrHeKjrdFEfrI#6!E,]`6DJa-#An>O_@Us%Jqc!Gmr`/bp!EW1o;>sB*
+;,U7f:m@2?:K_RiN/NUOMMHpoqMY0,qhkH@qNq;MR/33NRf/`QRK/cLR/36?R/`NQQ3);VH2W'h
+HN8HlIK+`rJ,Om!JV&LQK*$^[L&Qf-LPYqdCl4./N/WaVO,oBaOcklkPa.N"R$a;1S"#q=StD[L
+U8+N[VPg>kWiE/&Y-5(7ZEppH[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S^0gYCWAhr*JQ
+j5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14(s*t~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_&Q;S);H@"0@U`bR>sCbI77QeEn,MhUmJcJPli68L
+kr@nikN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JI$e'cXkd*Bq]bfe2OaN2EA`Pf[2_8*h#^/S))
+;u]hs<V]Vo;[?8K0/bXA4$#G%3#";;5sILq4$#;Z2)@!B0.nk61Gpuf2#fHB2+1/79M@E/5t=[H
+;>3ub;uT\n;>=&a;$Bir<)cdor_WYnrDESmr)!GlqG@5jr_r_ms&&eos&8nr!`N&tqc3Yq!)rkp
+r)*Jjr_WYlr)!Pm:JXgc;?'Gf;#X>j:]O;j;#4&h;#aD_;#O/i:A[ic:&n)f:B"&h;#F/j;#X8j
+:B+,i:B+,h:B"&f:A.Ha:f6j\pJCibr_WVjs%rJfohbW`rDEPj##S2m:Jakbr_ibnqb[8hrDNPj
+qbR8ir_ibnr_`bo;#=,h;Z0Pn<<#ns;ZB\m<;TZ-<)?Fh:f1(g:eaPV91qiI6W3e[rD`brq,RW"
+5s[b#q`t*Es$6TMs&K%a!Coi_:]sZp;,]aQ=T2J#=9)=t<<?,u;u0Jm<<6&tr_`_pr`/\lq,R;k
+r_rPhs%riBH$T@7s*F`nrI+]p!.Xrt!eGrTrdt9*Kn]M\!JcL1M/8'-Mi<USNfT6_OHG]hPE_>t
+QC+&-R[]e:SXuIHTq\<XUo(&fWN)u"Xfek3Z*L^C[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Ln
+e^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$
+gAc[~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^#P?$\e_K3Km/HAVm-*P6=]\`)n,MhUmJZDOlN$5K
+kre1mkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:g&,
+S"#lFRJ<0DQR-TfD/*cuC2[m'B4nBGVPTuQQ^3\iLOsu#H$"OgJqJ]/KnkA;rOWH$PeDjIG^Fpn
+KoM/bOSt=8P5gXIOH5B]NW"h7N<"q:MZAY5M#E,-LA$>uK_U8rL&m!]rIacr!/:E*"+u2VK)U?$
+J,t4OpjiKsIt.BFqgSTprI+Efs*O]lrHe?drd+Qh!-nKercnEgr-A9f"F56:H$T:3rd"Hes*FZi
+rd4Qh!."Nhrd+Wmo6UObH$TC8rd"Khs*=Tir-SBir-\WoI=D$B!J#[rIKG"LJGOcpJFe=(JqJ`0
+KnY8;Ll$qDM2@+IMi7Rns,@&>O8Y1=OT:RDP6@&4PE_=1PnKCLPC@n,H?sj\EGTT2Ci"!3;YsDl
+<;fhn<rQ2#=TDS%>6A#1=]tZ)s2b4E$>ts3\$rfS['HobrM'7cqkX.d!m8a3q9Audp<```"4#08
+bl5fcb5KNZbkoQ`b4j$Wa96^3G^4T5HN/<lI/SKnIK4lrJ-(:RK)UB6KS>,7L51P?M2@+IMi<US
+NrG)JOHG]hPE_>tQ^F/.R[]e;St;RJTq\<XV5C/hWN*#$Xfnt5ZEppG[^WfY]=bhl^VRe)`5Td<
+ai_fNcHaeadaQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<h
+qu6NlrUg)?s+14(s*t~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^&bM?UT;/BhZ*LX=Xf83q;Gg?kn,MhUmJZDOlN$5K
+kr7hhkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:jGr
+oRZae*aW)W>[(?7>?P*1=+YmKH?aINEGK3!@piVJ>@V2Srac^SBP(k:NK&s:F,=jdC2@g/Fa3J(
+rd+6_om$=Y!dJp4pN?:RrcS'Zn9"bRF7+&KEW0nWEW0qWDuFYODuOYPDu4MODs_H>D#eDOC]A8M
+D#8,JD>nAND?"MPD<Ys7Dt%ZDDuFSNDuX_ODuXeSDZFbSEW0qWEVsbUEV=ANEW'nXEW0nWEVshY
+F*)R'FSp:]G5ladGl;pdH38MAI=:a:r-]0+I;s1CDf9N0B4Y^eA7K.^;YsDl<;fhn<rQ1q;>sB+
+;,U7f:m@2>:L&"!NJi^PMMHpsHiAp(N/RLhr/:Q@pmCoG!1NnVr0dYSRdujERIHUDQN`\!G^+LZ
+rHeKj!.=`ns*artrI=s#JqEuS&;5akL5(J=Ll$tGMMmFPNK4"!@??V7P*;,qQ'[l*R@9V7SXuFF
+TqS3UUnsrdW2ZetXf\e2Yd1UB[C3QT]">Vg^V@V%_o0O7aN;TJbg+M\dF-Lne^rF+g=tE=hV[8M
+ioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^"nYYi<*EW-@K^+G>Zt8/70#gVn,MhUmJZDOlN$5K
+krItjkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:dKF
+p/:rjrDiYms&1"%4$5Vd3BB2[3&ic]5X.Co3]]2Y1bpg?0.nh51,C`c1_MZ(1ege@9K,.#77g9P
+;GpFj;u0Dg;uT\n;>3ua;$Bir<)cdope_#hr)!GlqG@5jr_r_mr_Wnu;cH^r<)Zck<<-"t;Z'Dl
+;#X>l;#O5n:esk`rDESjq,%&fq,$obs%r_mnPK0[!)EDer_EJhrD*>fr_WMir_NMgs%`Vir_NPh
+r_NJfp.tZaohY<Yr_NMir_EMjpe_)h:J^^]s%`Vkr_`Yks%s(u:/=\_;,L4g;>O,g;>jDk;>X/i
+;>sJm;?'Mq;,C*e;>jDk;u]hs;u]bq;u9Pj<=2]*<DZIf:fC:i:B!oi91hiF;YsDl<;fhn<rQ2#
+5la.H5lEqI5lX.M<W>>m6V1!J;,L4i;,]bQr`B/'qcNi#r)iqtqc*f!;c?Xp<W,nr<<-"s;?Bcr
+<VBDf<Vobn;u';p;0R80H$T@7s*F`nrI+]p!.Xrt!eGrTrdtc8KnY89LPL\BM2I1KN/WaVrf:KL
+OcklkPa.N#R$a;1S"#t?StD^MU8+N\VPgAlWiN8(YHY7:Za@-K\%0)^]Y2(p_8=+.`Q-'Ab0/#S
+cHstee'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`n
+o_sFAJcFI(J,~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7?K:dFmI?li-8\m-3Wlj&]Dd='4nYmHsl=s6B[M
+rosIH!9a@Ds5c6$j5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]UYL]R[TY4pmCcA-#[[<BkhC"D/3isBrS)/U7Id@P)G0OJp_ihGCbBtK7nr3LP9LB]*jC^Tq%Ws
+H[LI&M2h"drK6i;s,d>DO8b.;N;\_9N;e_8MZ/G0L\uo%L&$DtL%pB(KnP-YKCsltL&Q`-K7\Z+
+rdk*""+buRJGOfuJ:E(HIf"TpIf4]hI/eQlI/SBgH2`-hH2VpgG^"H4HMi'fH38G;H$T72rd"Kf
+!I9"jGli;=Hi/0iH2W'WHiA?kGlW0iH2`-hH2i3hHi8<mI=2$B"+5NFIenNoJGFZoJGOcoJFnBt
+JqJ]/KS>/9r.tB0s,-i7rf$l:s,[,?rfI2Drf[JJPEV5qrKS(_Q^F/.MLBo"H?saYD/F3.C2Im1
+r)<Pnr`/bprE'#$r*'2)=T2J%=:`Kp>[)B=[^W`S[^<?EKVJ@=qP=(d"3Sg2c2#Wbch>``cN)8i
+bl>lcb5KNZbkoQ`b4j$XaSpD`GlN'fHN/<lI/SKnIK4lsJH(3#K)^K'KE-`*L&m'creY?HMi<US
+NK0'\OHG]hPE_>uQ^F/.R[]h<St;UKTqeEZVPg>kWiN5'Y->.8Za7'J\%0&]]Y2%o_8=+.`Q$!?
+b0/#ScHstee'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zj
+rqu`no_sFAJcFI(J,~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7@(nS=uj_Yd1O=XfA:rVbU,e;,ZiMmHsl=s6B[M
+rosIH!9a@Ds5burj5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]_mBTJc:3"J,=cr?N4:/>5q_T<`ad#H?j^VEc,W)A7JtQ>[1cK@V'+_B4kd[NK&s3EdMqWC2@g-
+Fa&0%HiA?aH1cFYGlr;8G'<V&qK2a[q/l+K!d&L)n8ePKrbqjWrc%mUrc%[OrbhXPqf)IOm;Di=
+s(q^N!c2^jrbMXQDJf>irGDOMrb_[Qr,(_:qJYnAs)7pT!,qjSqeuLPq/67Pr,;RRrc.mU!-.pU
+s)IdPrGhgW!-.sV!-.sX!-A$ZqfVp^s*+BdrHeKks*aQhr-eNm!-eE]rb`!VAnG[f@q&t\r)<Pn
+r`/bprDru$q,./g'N%b*:f*CA:JYGENK&jSMMd1DBm]i<!/pW0rJUW@pmCoG!1NnVr0mYRs-WhQ
+iL'Y3rceBes*=Qhs*F`nrI+]p!.Xuus+13%s+C?)!/:E,!JcL1M.qj*N/WaUNfT6_OcklkPa.Q$
+R$a;1S"-%@StMdNUSO]_Vl-MoX/rG+YctC=ZaI6N\[f>b]tV7t_Sa=2`lQ6DbKS8Wd*^:jeCE1&
+g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTdrdk*#s4[L'~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7@((;cm:5@U`bQ>?Y-1=[5DF77Q_5mHsl=s6B[M
+rosIH!9a@Ds5c&tj5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]Mql);ZKer<W5tt;u9NI4$5Se4$#D_2`N]Q69m^t4?GP^2Dm6F0.nk11,:XA1c7*I1cnE-9J8.c
+1eCD<r_`_npJUcb!)i_lpepob"]A8u<)Z]i;#jMl;?'Pk;$'Wo;u9Gt;,C+f;cHasr`&Ym"&r2s
+;Z'Dl;#X>l;#X>l;#a;k;#O8k:]=/j:]4,h;>F&b;?'Jm;=RK]:B4/e:]=,h:]4#k:JO\^;#F/j
+;#X8j:B+,i:B"&h:B"&f:A.Hb:f1'^:\7K`:B45j:B45d;#sKhpJClc!)WYlrD3Yp:ejb^;#F2e
+;#O8j;Z'Di:]OAl;Z9Pn;?0Sn;#O8h;Z0Mq<)Z`p;?0Ym<;KSq<)rlr%T$"u;G^7e9h\5R8k;NA
+r)<Pnr`/bprDs#%5Pm_F5Q="J5n?sp5s[q2:/=_a;H$Fk6V@>\s&eqsrD`Yo"]SE!<)clr<;okt
+<;oeq;tO&b<Vobh;u]bpGQ2pfH2W'hHN8HlIK+`rJ,XuuJcC?%KE$T)L&Qf-LPYqdBo7h-N/`gW
+O,oBbP*2#nQ'Rc(R$jD4S=Q7CTV8'SUnjlcVl?\sXKAY0Yd(O@[C3QT\\#Mf^;%M$_o0O6aN2NI
+bg+M\dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6Kk
+rVcBfJcC<$gAc[~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^"4c5gli$2OlK/$)#3"QH>$"g.rTsRMs6BUJ
+s6'IGroQ-#jQ,@]io/kSi8<DIh;$c=g=b-1f@JL%eC)ald*L"_bfe2PaiMNB`Pf[2_SO"%^:h1k
+S=BMHp6bWA-?*j>C2.HtDJXo<BWS2/VP0QKQB@/\K7J>pG(5-rJq\l4L5:\]rjrZ?Njk%tH$t3r
+LQ.CWO,rgmrfR,A!0R5C#*G"/O,f3ZrJ^]7!0$o8!/gc3r.k3)pP&Hsq1\Tu!el;\rIafs!/:E*
+"+u2VK)U?"J,t4OqLJ]uIt.BFr-n]qrI+Efs*O]l!.4]kqK`*ercnKgrHJ9d!."Qir-A9f"*o-:
+H2DjcH2VsgH$]I8!d]3?rH\Hhr-J?h!.=EcrHeKhqKi*c!.+Qird=`os*Xip"+5NFIf"WpJ,k)u
+IKb4MIXcluqg\QpoRR!ordt?,KnbA<r.tB0s,$f7rf$l:!fi>&rK.&As-!DGs-!DGs-3JIs-NbQ
+&Xf#SIscTgH[9mWCiXE0CMn:m;uTbp<Vfbo=8uD#>6.l/r`T5&&6[)r>[2]L[^W`S[^<?EMk^-E
+qP=(drlP8cc2,`cch>``cN)5hbl>lcb5KNZbkoQ`b4j$XG5ZXbGlN'fHN/<lI/SHpIXckHJH(0#
+K)UB1KS>,7L51P?M2@+Jret?HNfT6_OckllQ'IZ%R$a>3S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J#_SjF5aN2NIbg+M\dF-Lne^rF+g=k?<hV[8MioB+]k2tjkl0@U$m-X60n*olH
+ncA@Srq-?dp\4X]s7u]kr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^".uBhYPtd8Y,\CrVP^2e;c6Ij;Z5t^li68L
+l2TrIkPjU#jlGL_j5T%Vi8EMLh;-l@g=k64f@SU(eC;podEp4bcHOJTb/q`F`l5m6_SX.(^V7Co
+]DR9ZJH1<!JH16!J,Om>?<g`=>Zt96>%:T6JU_umGB\+ID/!Qk@UEAE@q9%YrFZ(C&q5h"NdPf$
+FeihkEH65IH[C'bo6^I_qKW'crH\'\rHSWmH$OXYGBS0)Fo$4ZFo$4LFTQZ+F7=5MEW9tYDfPbq
+s)7mUqJZ=Mr,;LPr,:t?qec@Ls(_XOD>e8ND>S5LD>nAND?"MPD<Ys7Dt.]HDf0IdDuX_ODuXeS
+DuO_TEW0qWEW'kVEVFGNEW0tYEW'hVEW'nXF8L(UFoQXbGPugcH3&A?rdFKhr-eEj%WZK,DJsB/
+Bk:mgAR]1^r)<SorDi\pr)`o#qGI8h(f=1.:f*CA:JbYPNK&jSMMd1DD0q5#Mi7CgrJUT?pmCoG
+!1NnVr0mYRs-WePigBahrHJ9ds*=Qhs*F`nrI"`rIt.HJs+(0%rdtT3KnY89LPL\BM2I5jN+7j-
+O,oBbP*2&pQ'Rc(R$sM6S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta;aND]M
+cHaeadaQ^rf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6Nl
+rUg)?s+14(s*t~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^!`iK3raH.@?!:<1=BJX-r^HiVrTsRMs6BUJ
+s6'IGroQ*"jQ,@]io/kSi8<DIh;$c=g=b-1f@JL%eC)ald*L"_bfe2PaiMNB`Pf[2_SO"%^:h1k
+<;'5k<)rosrDWYo!^8\.rAkKM3%m6K5X@Rs5!1h`2`ENIr\+=(r\=I0r\P?J2)Ij":J<Z/5Y4sQ
+;G^1e;H$Ij;>O2b;ZK_o;>=&b;$Bir<)cdonkoEbqb[>kr_r_m"]8)n;H$Nn<W?%n<<H3!;H!Ei
+s%r\ls%r\ls%r_k!)WVks%iVj!)NPis&&_k!)NPiqGI8h!)`5^r_NPhqbR2d!)NMfr_NPjr)!Gj
+r_NPhs%iYis%iYir_NGepJ1ie;,Hp]oMGQ`r)!/c!`2ZgpJClc!)WYlr_WVl"&DZf;#=,e;#O8j
+;Z'Di:]OAl;Z9Pn;?0Sm;#O8i;Yj>k;?0Ym<;0Dj<";\u;,:+h:f'hY9MA#N7/U!_<;fhn<r?&!
+=SkA_5Q="J5n?sp5se%6:/=_a;H$Fk6V@2Xs'#8%r)EPn#ZO`$<)cjt<)ifr!)rkps&8Phq,R;k
+p/D!7rHJ9ds*=Qhs*F`nrI"`rIt.HJs+(0%rdtT3KnY89LPL\BM2I5jN+7j-O,oBbP*2&pQ'Rc(
+R$sM6S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta;aND]McHaeadaQ^rf@S^0
+g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrUg)?s+14(s*t~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]"5;\sm/HAQlK8**%cH=*iE08c='4hUlg*j$
+rojLJkNDj,3p#G`j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtbER[TY4p6bfF!1<bP1N75KC2%BtD1@(KB<.u.Un4!AP`:NTK785nG^tI#K7er5LPCYt]Y'Z"
+\Y?$II"-g(NVnn;O7SJ3Oo:ICOoCLJOcYWbNfB%sN;\_9N;e_8MZ/G0L\uo$L&$DuL&$K'L&Zi)
+KD'ruL&Q`/K7\Z+JV!`L!J,dtJHC@OJ,FcnIft4KI=-J;I/eQlHiSNmHMVpeHN&0iGl2afG^4U]
+r-A9f"*o-9H2;dbH2VsfHMr-hHhVjcHiJKeHi&-hH2;jcGlW0hHi8<lIJeKmI/n`nJ,b'!J,Xm"
+IsultJGOcpJFe<lK)UB'KSBD\!JlO1M#W;4MMqFls,@)?O,s7$!0R8D!0dDFrf[>HrfmPNQ^@Z<
+&=JoFI=-?gH?OILDes6(Dfu"Wr`&hrq,[GqrE'&'r`]M/=BSg1r`B_7aN7[tKVl2e\$i`PZETLd
+r1j.brhTV:rQ>/aqTf,ep<```"jP67bfe3/b5KNZbkoQ`b4s*YFoQX`GQ2pfH2`-iHiJKmIK+cr
+J,Xs'JV&K+K7no3re:T3Ll$tGMuJZJNK0'\OHPcjPa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-
+Yd(L?['mEQ\[oGd^;%J#_SjF5aN2NIbg"G[dF-Lne^rF+g=k?<hV[8MioB+]k2tmll0@U$m-X60
+n*ol<o(2JFrq-?dp\4[^s7uZjr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]%&'W%Yd(I:X/MkkVPF-e$;OJs;,ZcIlg*j$
+rojLJkNDj,2<Eo[j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtcSK)C3"K):-!JH(,tJ-94b>ZtD3=qk@R<`Xd"I!TsWEc5`*An5=W>[:k<AH?FUrb)b$NK%q$
+Lj4PdD/aN<Gl2pfHM)XaHMVpeGlE!]Gl;pfGQE)7rceBcq/uLTs)n-ZnoatSs)[[Ms)J'X")i0u
+E;jeTE;FMPDYnAME;jbVDK"o[qec@Ls(_XOD>e;ND>eAMD>nAND#eJOD<c$7Dt7fGDuX_LDuX_N
+DZFbSDu=PSEW0qWEVsbUEV=ANEW'qVDuanUEWC1YFT$=^FT-F_Focf3rH\Bgs*O]mpO<$gqL8Ho
+!.+W`s).pUC]7oJAR]4arDW\prDiYorE&r"qb\5-;,L4g:f*CA:K2+]NK&jSMMd1DEdNb'Mtr80
+MZB%>QhZsER/i]TS,A]TRJrTPQfOP6FoQX`GQ2pfH2`-iHiJKmIK+crJ,Xs'JV&K+K7no3re:T3
+Ll$tGMuJZJNK0'\OHPcjPa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J#
+_SjF5aN2NIbg"G[dF-Lne^rF+g=k?<hV[8MioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4[^
+s7uZjr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]&6W:I@U`bP>$+g,=B/I+=[2mS#"ItGlg*j$
+rojLJkNDj,2<Eo[j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtcI;ZKeo;uK\p4>AoY4$#DR/iY^S5!M1l4$#;Z2)I'C0.ee31Gq!G2)I3K1egh@/j;NZ92/8\
+;c?OlrDNVlr)38fr_ibnpJUib"]A8u<)Z]c;?'Pk;#jMn;uKVo;$9]m;H$Nn<W?%n<<H3!;H!Ei
+s%r\ls%r\ls%r_k!)WYl!`2Zgr_NSjr_WSkrD3JirD<>fs%i\mn50*[!)EAdr_<GhqbI/es%rVj
+!`2Zgr_EJh!)EMhs%`PhrD*&^!`2`jp.t9Vs%iPhq,./g!)NPi!)`Yjs%iVj!)`_ls%rnp:/=\_
+r)*;er_`VlrD<Sl;>j;k;>sJn;?'Mq;,C'f;#O8i;Yj>l;?0Yl<;0Di<!ZE!;,C+f;c?Bh9E.Ta
+7/^'`<;fhm<rH+u=StGa5Q3qI5mLCh5sn1::/Cjd"B//q78!P^r*&u#s&Jtrqc*bu;c?Xpr`&qt
+rD`hrr_ibpoMkWdqc*;gs)n?brHJ9ds*=Tis*OcnrdFfqs*t#u#D%JYK7ei1L&Qf1LPUeDMMqIm
+B8qq4O-#NfPE_>tQC!u,R[]e;St;UKTqeEZVPgAlWiN8(YHY:;Za@0L\@K2`]Y;.r_SX71`lQ6D
+bKS5Vd*^:jeCE1&g"P08h;7&IiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#C0hqY^6i
+r;HTdrdk*#s4[L'~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpg9Tm-O-,lK8**%H-4)iS`SJ?!CE4=R,2M
+klU)3kPjTEjlHF$1ZIBPi8EMLh;-l@g=k64f@SU(eC;sqdEp4bcHXSVb/q`F`l5p8_SX.)^V7Co
+]=PPBRf8`KR/`NPR/`L/EGfW-NeDk3It)'CWi;niS!]P(MM[+>I!KmZJV&N+K8,)8Ll/gWEjM"S
+S!SGJK858CqiLf<nrWj5rK@,A#Ek41O,f6[NW"h6N<Y?"Mi*@IM#<&+LA$>tK_gDuLAuu-K`-Pt
+K`?c*KE[![JV&H(r."g!JGOfuJ:E(HIf+ZuIXQWlIJ8-hHi8?jHMVpeHN&3gG63#5GlE$eH2`*l
+H$FU[qfr'brceHhHN&3iH2r<jH2r6gHN/?lI.hpaHN/9eHMr*hHN&6lH@,X=s*ainrd=cqqgSTr
+rI5!"It)osJGOcpJFe<lK)L?%L&Qi0LkgeBre^Z5rJ^c9s,[)>q3(cAs-3PKs-E\O!LT5PR/`Qc
+Jp_rmH?j^TD/aE/C2\2m;uK\p<V]\o=8Z/+=^,*6>$+p2=oMM6=ie]iCQ#='\$rfS['Hp'r1j+a
+s/#b;rQ52bc-?.2s3LDcr6GAfr6,)^r6+u]qTAl]q8rYYs)n?brHJ9ds*=Tis*OcnrdFfq!.Xuu
+s+(0%rdt6)L&Qf1LPUeDMMqImArVk4OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-MoX/rG+YctF>
+['d?P\[oDc^;%J"_SjF5a2lEHbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tmll0@U$m-X60n*ol<
+o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$gAc[~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpgGsYd(I:X/VtmVPBsdV$Nll<)ZXk;X3QG
+klU)3kPjTEjlHF$1ZIBPi8EMLh;-l@g=k64f@SU(eC;sqdEp4bcHXSVb/q`F`l5p8_SX.)^V7Co
+]=PP)K):,uK)U?$JcLB!J0A6)?!M,S?=72M<`ad!H?aRREG]H'A7AnO>$GKHA7T7`rFl4j$X8.(
+OaMUnD/aQ?H2DsfHM;aeI!bj=qK`$a!."6^s*4WiH2W!eGQ)d^FTHT*qfMg[qK2:Ns)e9^n8ePK
+s)8'YEH#mrDuO_PDuOYODu=SRDZO`om;Df<!,VXMs)%^N!H)cQDZ"AOD#S;ODZ+GMD?+VDDYe;F
+D?+PPD?=`oDYA#KDYe;OE;a_PDuanWDuanUE;sqPE;jkUEWC+YDuanUEWC1XFT$=`FEMa*G5lgc
+H2i3jHN8HlIJA9hIJSElIhI9_F)Q#9Df'<(AnP[c@qB7N;uK\p<V]\o=8Z/A=]&$m;,L.e;,U:g
+:m@5@>&]7VNJi^PMMR"1I#EpXMZ8V7Q2I!CR/33NRf8fSRK/cTR/<65R/_:.FoQX`GQ2pfH2`-i
+HiJKmIK+`rJ,XuuJH1<$K)pXZre:T3Ll$tGMuJZINK9-^OcklkPa.N#R$a;1S"-%@T:hmPUSO`a
+Vl?\sXKAY0Yd1UB[C3TU]">Vh^VI\&`5Ta:aND]Mc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak32'o
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14(s*t~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpg%rraH+>>$+g+=B/H$=U/%s77K^8lK\?4
+!pJh1roO7CjSn0oio/kSi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMNB`Pod4_SO%&^:h1k
+]".6-rD`_X'JV3k/1iJ42aBSk4Zb\a2E!BJ0eiS[s"Y9G1c.'G2Dm?d:G"Ff5Y4dJ;,L.eqGR;i
+r)38fn5B0]"]A8u<)Z]d;>sJj;#jMm;uT\p;$Bcn;H$Lnr`&qtpf.Ap;c<Kis%r\ls%r\ls%r_k
+!)WYl!`2Zgr_NSjr_WSkrD3JirD<>fs%i\mnPK0[!)EDer_EJhrD!Jk:/=\_qbd>gs%`Sis%`Ph
+!)EJgrD*&^s&&Jcq+q&er)!Dhr)!2d!)WYjr_WVlrD<Jhr_NSlr_Nbq:ejb];#F2e;#X>j;Yj8i
+:]OAl;Z9Pn;ZBPp:Jamc;>jDi;u]_q;u'De<V]T*;,:%d;c?Oh9MA)P8P;HM;uK\p<V]\o=8Z/+
+=[55:5X.Iu5lEtR<E)7P8PW#Vr_Wht;,TkU=o2D"=oMG"<;KVo;ZKem<<6&tr_ibpo2PTeqGd5g
+s)e9`s*"?bs*4Qhrd+Tks*Xfos*artrdb$"!.t3&!JH1+L'<?gM2@+JretHKO,oBbP*2#nQ'I]'
+R$jD4S=Q7DTV8*TUnsueWN*##Xfen4ZEppG[^`lZ]=bkm^qmn+`Q#s>b0/#RcHjnde'uq"f@em4
+gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Wirqu`no_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rUL`fm-X6-kMtR]iSieUiSWJHgeh6X='5Id
+s60LGroO7CjSn0?io0mp0AkXBh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",A?Rf8`HR/WElI@lmkMLg/)JV.QGWMQGaR[98!M1pY5I!9gcJc:97KS+o4LmkrgOdWe?dWg1j
+KnkZ`OT(=3OT(C@P5C@AOSt1>NW"h6NW4q?Mi*@IM#<&+LA$>sK_pK!LAuu-K`-PtK`6]*KE6^W
+rIOls!J,duJHC@OJ,=]mIfOrrIJ8-hHiABmHiA?fH2`-hH2VpiG^"FZHMi'eHN/3iH2;dbH2W!c
+Gl`5<pNlgcs*XTgq0N'dqg/0c!IB+lHMr3kIJeKmIK+crIft4MIt3(JIfOrsJ,XurJ,OohJc13&
+KS>0YL]<21M#iKlr/:`;NfT8"OS=nCPE_;sQ'Rc'qj8%bR$jA%IXQTjH$41CDf0B,DK\tW<;onn
+<r?%t=T2G->?Y34=^"u-=:\QUaBWbL['mHQ[^NQKYd")$qP=.frlGAebK@uNc-?.2s3LDcr6GAf
+r6,,_qoel\qTAl]qoSeYrcS6arHJ9d!."Nhs*Ocnrd=isIt.HJ!J,k%K6)^"Knb>;Ll$tGMi<US
+NfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UgF[^WfY]=bhl^qmn*`Q#s>aihoQ
+cHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nac8Bo^r.U!quB_rqQNhs8)ZjrVZWm
+o_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rUL`+Yd(F7Wi)\jV50raVPU&_Ude6\;,[DX
+s60LGroO7CjSn0?io0mp0AkXBh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",A'K):,uJcLB#K)^E#J21DREGfGu?!q)N=&j`sHZsRPDes&sA78eK>@D#PA7]@`AnPe&NK%k!
+M0,G,DJsT?H22gdHM;dcI/eNhH16(YGl`/8rHS<crc\-\!H`D[FT-FYFRsYTFT6FOErU.ZDuahU
+E;jeTE;FMPDYnAME;XYDD?4TlqJ?CPCMRa'D>n>QD/O4iDZ"AND#S8ODZ+GMD?+VCDYe;HDZ=SP
+DZ=YTDYJ)LDY\2NE;XYOE!1)uE,fmqDuanPE;aeUEWC+XDuanUEr0tWFoQR`FoQUdGBeB2H2i3j
+Hi8BfIf+WjIf=fsJGt*1H?!nBE,KK,AnP^d@Uj"KrD`brq,[DprE0&%)c9F/;,C+e;Gp=fPa,$N
+Fc26=Mi3IMLk^Y3Mti20MuJtBQ^Ic=pR(fF!1NnVr0dVRrL!GJl^7WmrcS6arHJ9d!."Nhs*Ocn
+rd=isIt.HJ!J,k%K6)^"Knb>;Ll$tGMi<USNfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2cl!
+Xfek3Z*UgF[^WfY]=bhl^qmn*`Q#s>aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*
+mdKW6nac8Bo^r.U!quB_rqQNhs8)ZjrVZWmo_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rULS0@U`bO=]\X+='/U.>$4s0=Z-1I!(QtP
+s60LGroO7CjSn0?io0mp/`5F@h;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",B>;uT`7.Q]OG0eFn,/MB%>5s@Fp4#o5Y2)?s@0J5!W1(Q2t1c$sG2FUA:2a0Js<)EQl!*&_k
+r_`SkpJ^NYrD<_r;cH^p;Y*cb;Ys;k;Z0Pn;?p&q:f1+h;cN`r!*&\m!E2nn;?'Jl;?'Jl;?'Jm
+:B45j;>sAj:]O;j;#X>e;#4#l:f1(d:\.E^:]F2e:]=,h:]4#k:JO\^;#F/j;#X8j:B+,i:B+,i
+:B"&e:A7Nc:f1'_:]!ug:]!ug:]+&b;>sAi:]OAj;#a>f;#aAq:JO\];#=,f;#O8j;Ya2i:]OAl
+;Z9Pn;?0Pm:]F8k;$'Qk;>jDj;u]_q;u'De<VKGo;c-Ek:^Kup91qrO8kMKMrD`brq,[DprE0&%
+#!bC<5<hCurBUZg<'`rF:JO^b;$9fp;H$3b>5MJ#<W5to<W5nt<EArr!E<"s;ZB\o;ufqn<;T\l
+<;KPlFT-F_G5ZXbGQ<$fHN/?lI/\NqIXckHJ,t4Qre#9FKnY89LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(OA[C3QT]">Vg^VI\&_o9X9aN;WLc-FY_daQ^rf@S^0
+gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HkrUg)?s+14(s*t~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1$]mI'B*jndsHhqm2FgXt"W>$+j.kih4/
+k5XNCjSn0?io0mp/`5F@h;$c=g=b-1f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^:h1l]",BN
+Rf8`HQo(.VCndA\Lk0l$Jq@X7W26AaR[91tMhck4H[0d`JV&Q/KnbA<MS$N?Ybe"lR<sF8Ll7>i
+OSk1<OT1C;OSt=@P5LFCOH9="r/CT6rf$l7s+pT.r.ap!pk8R!q1ep's+L?'pOrO"s+CE*K)L8u
+J,t4Oqgeg!It.?ErI4frr-e<e!.4Zl!.4]kqK`*ercnKgr-&6fH$Xf8H2W$kH$FRZqfr'brHJ<g
+rd"Ni!.4Hds*Ocnpj;g_s*=EdrcnNjHiA<kHiAEmIJnQmIJeQoIfP#pJ,OoqJ,XuhJc:<%K`6]3
+LPCS>LkpnEMYrG5N<5-$O8b4@Onk.FPEM,oQ'IZ$rKdSQQ^@Z<&Xf)VJpVlmH$=FNCiX?,CN<AQ
+<;fhn<r?%t=Su>%=p%l0>$:i,%p?up>^;dH[^W`S[^<?EYl:EoU]RC6aSs9cb0.rMbKS6.cMu5a
+d/D8kcHZ:1s2t5^qonr\s2t8]s)\-\rcS6arHJ9d!."Nhs*F`nrdFfq!.Xuus+,NKK7ei1Knb>;
+Ll$tGMi<USNfT6_OckllQ'IZ&R$jD4S=Q7DTqS3VUo(&gWN*#$Xfnt6Za7'J\%0&]]Y2(p_8=+/
+`lH0BbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlYail07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0i
+qY^6hr;QZdrdk*#s4[L'~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1$]Z*CI4W;`[nV#[CkU^EroUJ=]a;,ZWA
+kPjWDjT+B@irS/urnoBchVI#CgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd
+\c.3XJbaorJ2:G3H#db5@9d/K@9.l,H[BsZEc5`,ARo1T>ZtQGA7]@bBP2$mNf@1jI!:9qCi=?:
+GC'%2rHeEhs*FZkrd=`mqK_RTs*=Hcs*+HcqK;gZqfMg[piQ.Ns)e9^n8ePK!cW'rrc%jTrc%^P
+rbhUOrG_XPn888DDYn;ND#\8OCi0,es)%^Pr,)FLrbVXQrGDIM!,q=DqJZ.Hrb_UO!cMsop2BtK
+qJZCQrGVRPs)7pV!-.pUs)IdPrc.pX!-.sV!-.mVr,hm[rcJ0_s)nHfG^014s*=]mI/SKgIf4]k
+If4cpJcC<3F)Gr9DJX*$AS#Ia@V&L;<;fhn<r?%t=Su;3:f1(d;,L4h:f*FB:Le_MNW4q:M?J`i
+L4"pTM?&S5Pld8<R/WHHR/33NRf8fTRfAfSR/!$9R/_7+FT-F_G5ZXbGQ<$fHN/<lI/\QoIK4ls
+JH(1IJqJ]/KS>/8LPUeDMMmFPNK0'\OHG]hPa.N"R$a;1S"-%@T:qsQUnjlcW2ZetXf\e2Z*UdE
+[^WfX]=bhl^VRe)`Q#s>aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8B
+o^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcFI(J,~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1-`@U`YI='&L+r`K5)r`T5(#[9M^7R]f1
+ki_s-s5a7Aro4%=iVqaehqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"h
+\[hQ8s&/Ph),qt=3ArZI/1E,%/iGpZ5!;%k3]8oR1GLT_/eTlo1GgpG2)I-J9i3H!4uGu1;"IT`
+;>X8e;smQ_;$Bir<)cdoo25Kbqb[>krDW\n#>n;o;,U:j<;okt<;0An;c<Njr_WSks%r\ls%r_k
+!)WYlr_NMi!)NSjr_`GeqG@Al;,L.co2,E^s%`Ger_<GhqbI/es%rVj!)WYjs%`Si!)EMh!)EJg
+rD*&^s%rbmpJ:Z_r_NGgs%iPhq,%2i:J^pcs&&_kr_NAe"]8)k:JXg`;>a8i;>sJg;?'Go;,U<k
+;?'Mo;>j;j:]XEir_`VlrDW_os&8bnp/Uid&62\+:/Fec;,BkX9M8#N8Q5UfrDi\pr)`i!r)j1f
+5X.Iu5lEtR<E)7R92JAZr_Wes;,U=br`]/$!*&hqrD`\p!*&qr!``9%qc*Yr;uTYp;uBSp<VTPj
+<Vobl;u^q;FT-F_G5ZXbGQ<$fHN/<lI/\QoIK4lsJH(1IJqJ]/KS>/8LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;1S"-%@T:qsQUnjlcW2ZetXf\e2Z*UdE[^WfX]=bhl^VRe)`Q#s>aihoQcHjnde'uq"
+f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8Bo^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcFI(
+J,~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jWs6]pQk5FB@iXb)-hqm5Gg=F]saBVkM
+=6KSFs5a7Aro4%=iVqahhqm2FgtUQ:g"=p.f%&:"e'cXkd*Bq]bfe2OaN2E@`Pf[2_8*h"]tD"h
+\[f5=Rf8`TR/`NKR/WF/Hto7?PDFd>IY)9GXf/%iS=5b,M26q<I<g$\JV/Q.KSG/8LP`XUR@:aN
+k'DE,LPUtQOnk+:O8P+=O8=t;OoCOAOTLW*O8Y(=NW"h6NW4t;M?/Qir.k3)p4`9prIt$$s+UK+
+rIaitre:B*!J?"&JbjooJHC@OJ,=]nIg(:LI=-HkpNusfrHnTlrd+Eds*FZiqf`$brd+NgrHeKg
+!."EcrH\Ber-8<hHhMacHiAEgHh_peH2;jcH2i6jHMr3kIJeKlIJeNpIt7<DrIFirrdaQj"bMAZ
+KS5'WLB!&/M#W;3MuAV7NW5%=O8k=AOoCLDOo1CBP6R8:Q'R`&QMm-QR$X2-RJiQcMgg#$H?XRS
+CM[g&BlJ2o<;fhm<rH+u=Sc/<>$+p2=]ea-=ieZkJ>0K\\$rfR['Hp?USI[]"/X&YaSs<\b6,o1
+bg$%1!71>brQbMibl#Zab59B]bQ>u3bkoQ`b5B?]ErL.YFT6L`G5ZXbGlN'fH3/G@I/\PDIXcit
+J:W9'K7ei1Knb>;Ll$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0M
+\@K5a]t_=u_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MG
+p%A%P!;HHes7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jW"0o&2WVrapV%9H"UnjiaVPKrXRo3-]
+;<Rr@s5a7Aro4%=iVqaghqm2FgtUQ:g"=p.f%&:"e'cXkd*Bq]bfe2OaN2E@`Pf[2_8*h"]tD"h
+\[f5%q18Hqrdk'!+C.ujE,9&n?sd>C<e>dIH$4:LDJ<]oA7/\I>@V2SAnM$T%VTI7NH00!Gd;.'
+E--;Mp3Zaar-SEh!.4]ms*Oclr-A-`!."?as*=Hcs*+HcqK;gZqfMg[piQ.Ns)e9^n8ePK!cW'r
+rc%jTs)@dPrbhUOrG_aS!cDppmV_o=s(q^N!GlWOD#\ANDZ"AND#\>PDZ+GMDZ=YDDYe;IDZ4MO
+DZ=YTDYJ)LDY\2NE;XYOE!(#tE,kbo!-.pU!-.sVrc.mW!-/!W!-.mV!-A'[rcS0]s)n?bs*4He
+s*=]mI/SKmIK4fpIf4]jIf=fsJGt,uJcL&oE!pQ"Bk:me@Uiq\<)ifrq,[GqrE/o!s%rbmrDESk
+s-3X`BR]r?s,6o7",M\dI//X"Mu8h?QN!9OQhZsDRJiWRRfAfRR/**JQiNKEQiM1+F8^4\FoQX`
+GQ2pfH2W$jH[L5?I=H]qIt3'#JV&N,KS5&6L51SAM2I4MN/`jYO-#NfPE_>uQ^F//S"#t?T:hmP
+USO`aVl?\sXKAY0Z*L^C[^WcW]=bhl^VRe)`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Oe
+kiq?slg4$,n*fc8nac8Bo^qhLp@\L\rV6Egs8)Zjrqu`no_sFAJcFF'J,~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jW"CbbC=BPQ+s&f>*r`KV4>?kE:>$49_
+7RcM>k5XNCjSn0?io0mp0&POAh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`Pod5_SO%&^:h1l
+]",A]r)<Plq,@8l*@ER$2)6j:.kE;42*jJk4Zb_c2`<NL0eb750/>?_1_Vc(2)@*a:GG$u7Slr[
+:fL=j;cEHhrDEAgq,?ra!)renr_Wes<)cdoo25Kbr)*JlrDW\ns%rqr;,U:j<;okt<;0An<)WWk
+r_WSks%r\ls%r_k!)WYlr_NPjs%iVjr_`GeqbdAis&&;_r_NPhqbR2d!)NJe!)NSjr)*Ghs%`Ph
+!)EMh!)EJgrD*)_!`2`jpJ:Z_r_NDfs%iPhq,.,erD3Jkr)!DhqG7An:esh^:f.!crD<JjrDNPj
+!)ien"Ahrm;H!Kk!`DllrD3Ags&&\lrDN\or_req!`N&tp/Uuh"B/8u<)ros#ZFPq;,L7h9hkRY
+"&)*^<;fhm<rH+u=Sc/%5X.L45lO%S<E):T9MeM\r_Wes;,U=bpf[Vrqc3Sor)Er#;c?Xq<`])t
+!E<"s;?0Yn<<#to<;ol!<)lrq<;TSoErL.YFT6L`G5ZXbGlN'fH3/G@I/\PDIXcitJ:W9'K7ei1
+Knb>;Ll$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0M\@K5a]t_=u
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MGp%A%P!;HHe
+s7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6pB]kN1jgkN(X_iSXXk'\qBkd)sAD
+='A^-=Q\`+jQ#:[io0mp1uI0Gh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^:h1l
+]",A][[NYQR$di=pm<n)IV>7=NeW"6IXu*FX/W"lSXGe,MMR">H?aX`K7\c/K8##8LPrc]\"'(i
+H$k*pLQ.FZrfR&=r/^c;r/^c;rfR2Cr/gu@rf@&=!0-r9qi(`;Mi*@Ir.k3)p4`9prIt$$s+UK+
+rIaitre:B*!J?"&JbjopJcC6#J,=]mIg(:LI=-HkpjE*grHnZnH@#C4s*FZiqf`*eH@#O8r-JBf
+!."HdrH\?dr-@s]s*Ocnpj;g_s*=EdrcnNjHiA<kHiAEmIJeKlI0P.KI=?WpJGF]mJGt&sJFe?l
+K)^K'K`?c*LAlu.L]WEkMuJ\7N<#"<NrY:@OoLUEOo1CBP6-u6Q2R!KQi<9gQ^F,,R@9S4R@9@i
+I=$BfG]n"BDJWs&G#\E?q,[GqrE/ht(g'pE=]ea-=ieZrLoIhk\$rfR['Hp?USI^^!2]Y7s2b8`
+r6#,bc25cdch5Z`cN2>8r6,,_qoeu_s2tDdqo\u^rlP1[s)S-\r,hs]s*"?bs*4Qhrd+Tk!.=co
+s*artrd]'@JqJ]/KS>/8LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9
+Za@0M\@K5a]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF?&>
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6q57Wi2kqWhuViV50o`VPg;dTq.X=
+:/Xqd;Wd*%jQ#:[io0mp0AkXBh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^:h1l
+]",A][ePFRK)1$BJ6l5tE+rfg@:3ME=+YmJH?XFMD.mQn@pN;D@Us"\A7]EQBF\a9=+bdAKkbFD
+F*;hUI.hpcHMi-gH3ASBI!^5>HMr-cGlN'bGlN'cGlN!eG5?@\F8U.ZFng(NFT?O_F7=5ME<U<"
+DfBW6rbqgUr,2UTDuFSODu=SRDZXfpDu+>OD>A&MD/T2e!,VXMs)%^Ns)%aQr,)FLrbVXQrGDIM
+!,q=DqJZ.Hrb_UO!cMsoq/6:QDuOYNDuXeSDuFYSDuXbVEV=AOEW0qUEW0tYEW'kRErU4YFT6L]
+FT6IcG'A1UrH\Eh!df<BrI+]ps*alqr-eBis*k$!rIOlu%t8P<Df9N1CM.6kARf4_<;fhm<rH+u
+=SQ&!;#O8k;#cd^<c*KgNW4q:M?AZhL4&iT#E+k4Pa%GuQMm0NQhZsDRJiWRRfAfQR/30KR/`KQ
+R.lsIEW:(ZF8U.[FoQX`GQ2pfH2`-iHN8HmIK+`rJ,Xt>JV&N,KS5&6L51SAM2I4MN/`jYOHG]h
+PEhE!Q^F20S"-(AT:qsRUnsrdW2cl!Xfen4ZEppH\%&u\]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&
+g"P39h;7&IiSrnYjlYail07L"m-X60n*ol;o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6p4u>$5$5>[%&.$!LP<?!LW==]drg
+70uHGjlGL_j5T(WrnoHehVI#CgY1B7f[na+e^W*tda?IhcHa\YbKJ#KaN)<>`5BI.^q[Us]Y(hd
+\[]*I;u9Ji;uKZ;-nmV=1G:4//1rk>5X7Ot4$#>Z2`*6C0.nk41GUdCr\Op=1c8#Z2a0)k;#X;o
+<)QXor_rVjrDE;eqG[)cs&8kor_Wer<)cdoo25HarDESmrDW\ns%s)!;,U:j<)cjt<;0An<)WWk
+rD3Jkr_WSks%r_k!)WYlr_NPjs%iYkr_`GeqGI8hs&&;_s%iYiqbR2ds%iMe!`)Whr)!Gjr_NPh
+s%iYis%`VirD3Aep.k`d;,I!_qb[8fr)!Dhr)!2d!`2ZgrD<Mkr(mAhq+q8m:JO\]:f.!cr_WPj
+r_iYks&/ko!)WYl!)i_l!)WSh"].uk:f1*f;Ya8k<<#ks<;'>i<<#kt<)``prDNqu:f0ta;,C$e
+9*7dZ6WF"aq,[GqrE/hts$-KJr]pch<'s5O:esmd;$9fp;H$3`=oD=t<W#hp<<Q9";cHcr<r>qu
+<)`co!)rhqr`/bnr`/tt!*/nqrDW`9s)S-\r,hs]s*"?bs*4Qhrd+Tk!.=cos*artrd]'@JqJ]/
+KS>/8LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a]tV7t
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF?&>o(2MQp&F^cp\jme
+q>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpUorl/q3nl0%'dio/hQhqd)>e'6"O
+^:LdZ>$+j.ro=%<38rfRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bc-4ASaiMQD`l5m6_SO%&^V.:m
+]",A][^MWmR@*o=qj@DM+FSWMR?NYcIXcftBP+3?VP'HGR#[,[L4OYqGCY6tK7s5Y%Z-"R]Si#e
+No521K8>DHrf[8CqN1W9s,d8A!0I&<r/go?!0[8B!0I/?s,I)=rJ^T4",i%nM#<&+LA$>rK`-W"
+LAuu,K`6VuK`6]*KE6^WrIP!!!.XrtqgecuJ,=]mIg(:LI=-Hkpj<'grI"Wls*FNerd+Ti!-nEc
+"*f*;HMr-fH2r6cGl;peGl2jZH2r<kI/A6kH@,F5s*=HerH\Eird+Qks*aclqgJKnpj`0krdXot
+o7?pnrdt<+Knb<\LAlu.L]iTnMi<VoN<#";O8Y1@P5^UAOp$u5Pa.O2Q3ihBQ^=),R@9P3rL+4K
+IXQQhG'7bADf'3'EHD+Zq,[GqrE/es(KspE>$+j-=ie[%O0H($\$rfR['Hp?U].(gV>J=5aT0K]
+b5fc_c2c2ad/;2jcHQ40s2t8_rQP&[!m8X,rGhjXs)\*[s)n?brHJ9d!."Nh!df<Brd=frJ,Xt8
+JV&N,KS5&6L51SAM2I4MN/is[OHG]iPa.Q$R$jD4S=Q7DTV8*UUo(&gWiE/&Y->.9Za@0L\@K2`
+]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hVd>Nj5]4^k3(sml0I^&mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpU6_XJr5"XJr%nVZ*D&Vl6MiU7[sC
+QB[S3;c-Ciro=%<1u[BNhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bc-4ASaiMQD`l5m6_SO%&^V.:m
+]",A][^Ps^!.t-"s*uk0>ubl^Bk(FV?t*5=IX?BbF`MJ<Bk:gb?!CNB@qB1_B4tplB9%seF,>(D
+Ci468GC0=:o6UXeH[C'bHi/3gHiA?iH2;dbH2;dcH2;dcGQ)daFTQZ-FoHI[FT-FXFS'\UFT$:N
+ErU+_E,TZ6DfG\os)@mS!H;uUDZ"GNE;jbWDJsIiD?+PLD?4TlqJ?@OCMRa'rG;LNrGMOMrbVFJ
+r,2OQmr%u?q/61KrGMXRs).XN")r0rDYe;OE;OSQE;jeHE;sqWE;jkVEWC+XDuanUErU4YFT-F\
+FT6L`GQ2peH2`*kH[L5>I/n`qIK+cnIJSBpIsultrIOlus+:f'E,]`6Chm]qAn>O`AnM$Bq,[Gq
+rE/es!Er=u;?'JmPmpr;LQ.:PMi3IMLk^Y3reg]5rK[DIs-3SMrKmSOpmCoG!1NnVr0mYRqj@8I
+rL!8ErGhjXs)\*[s)n?brHJ9d!."Nh!df<Brd=frJ,Xt8JV&N,KS5&6L51SAM2I4MN/is[OHG]i
+Pa.Q$R$jD4S=Q7DTV8*UUo(&gWiE/&Y->.9Za@0L\@K2`]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+
+g=tE=hVd>Nj5]4^k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpU-\>?Y69?X3M3!a8i7ra#V1>5hY.
+=@>SI77R::s5Gloi8EMMhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ#KaN)<>`5BI.^q[Xt]Y(hd
+\[])Vr_r\lr_r_o(apgd2Dd-@.kE5(3&Wuc4Ztkf2`EWN1G\q^(,I^'1Gh!G1c7-b:c:I$7p8_d
+;,U@lr`&kqs&/korDNSkoht]dqGI;lr_i_or_i_m"B&2u;c<0`rDNVl!)i_nrDEu":f1+g;cH^r
+<E/]m!E<"q;?'Go:Japf;#X>l;#a;k;#X>k:]F8k:]F8j;><ua;?'Jm;#jD_;#a>k:A[id:&n)e
+:B+,i;#F/j;#X8j:B+)i:B"#h:Amue:A7Nc:f1*a:]!uf:]!ug:]4,b;>sAj;#aD_;#a8j:]4,e
+;>sDk;>sJj;?'Mp;,I6h!)ibm!E)bi:]F8k;>jDf;ZKer;ta5h<;]Yr<)Zcn;[uZ$;,C(d;G0\V
+91hiN6iL*]<rH+u=SGr!>!N!Or]pch<(';Q:espe;$9co;H$3b=o21r<W,np<<Q9";cHcq<rH"u
+<;f\p;uK\p<Vf\n<W5tt;uK\p;uL_9ErU4YFT6L`G5ZXbGQ<$fH3/G@I/\NpIXh?ID1R:kK7no3
+L5(J>M2@+JN/WdXO-#KePE_>uQ^F20S"-%@T:hmPUnjlcW2cl!Xfen4ZEppH[^`lZ]Y2%o_8=+/
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7)JiT&tZjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!Us6<MJl/gsbio/hRhqd#:d*'DD
+]XYDWZW^L5=QAE"iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_8*h#]tD"i
+\[f5Y[^H+&!1<\NrL!SNs*ZP4RZWGZI"$TsAn7m=W1TNJQ&UZSJUMfgG(G9sKnG/7Lkgi!Ek%@(
+W1&'_L51feP5^U?OSk1=OSFn6OSP"=OSt7?NW>(;N;AM9N/EIKr.k3)p4`9prIt$$s+UH*re'ru
+re:B*!/(3#s*t*!rIFlu"G22UIt.?ErI=fq!e#HEpNusfrHnTlrd+Eds*FZiqf`*dH$]F7r-AEi
+G^912r-A9dr-@s]s*Ocnqg/BjH[GR7s*=EdrcnNjHiA?iHiSTlI/\O!I!pElIXcitqLABms*sut
+oR[$ordt3(r.Y0*s+gT0",`"pN;\b7O84q8Op.&6Q'@Q!rg*SL#*tUAQ^F20rgE_R&Y"`-I!U-a
+GB.M;Dej!'G#_Q<<rH+u=SQ%r>5hS8=ie[,QFF<2\$rfR['Hp?USIdaqSrZYaiaP)!6k;b!71Ac
+r6GDhbl5cfb0.rMqof#`pWET[ao$/XErU4YFT6L`G5c^cGlN'gH3/G@I/\NpIXh?ICk71jK7nr4
+L5(J>M2I4MN/`jYO-,TgPEhE!R$a;2S"6.CTV8*UUo(&gWN*#$Y-5(8Za@0L\@K2`]tV7t_Sa@3
+a2lBGbg"G[dF-Lne^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<h
+qu6NlrUg)?s+14's*t~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!U"KSW,XJl&o8uJYfVkg&YR@';(
+OcYW%;c-HQio/kSi8<DJh;-l@g=k64f@SU(eC;sqdF$=ecHXSVbK@oIa2Z*:_ns7*^V@Ip]Xt_b
+\@/iRoR[!ls'@?XEc#H!?=72N<E=TsH?XIQDeiur@piPG>@V2RAS#OfBP1t<?%d<CK7[oWF*;j,
+I/&'gI/83dHMr3iHMr-cGl;paGQ<$bGQ;seG5ZR`F9$I_F8U.ZFng(NFT?O^F7F;NE<U<"DfBW6
+rbqgUr,2UTDuFSODuFYRDZO`oq/-1Lq/-4MDYn;ND#\8OCi0,es)%aQqec=Ks(qaRrGDLNrbq7C
+qeu7Irb_UO!cMsoq/?:PrbhRN!-%gRrc%jTrGVaVpMg+Os)@pVrc7sV!-.mVs)\*[s)n6]rcS6b
+s*4QhrH\KkI//3jIf"QgIKG"LJGt,sK)UB(I;s6*D[L;pARoC_@q94P<V]\o=8c7r=oDP&;?'Jm
+PlY99rf%5CMi3IMLk^Y3I/T!$Q2[!KQ'V$/qO%>PrgWhSs-`bO!1*PLrg<AFr,M^Vs)\*[s)n?b
+rceBes*=Ti!df<Brd=frJ,Xt7JV&N,KS>,7L51SAMMmFPNK0'\OcklkQ'IZ&R$jG5SXuIHTq\?Y
+VPgAlWiN8)YHY==['mEQ\[oGe^;%M$_o9U8aN;WLc-F\`daQ^rf@S^0gYCWAi8ESSj5f@bkNM0q
+lg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`no_sFAJcFF'J,~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!U"C,5??X*J3%U*+C?XR8J>Zt<6
+=BAO(r^Ah:j5T%Vi8EMLhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI.^q[Xt]Y(ke
+\[])V[Jj,&;ZB\m<#d;90/bXA0.SS*0/b^Q5<V+j3]K&U1b^U8/hSpY1D)H$1GpsG:,=gl1e^\B
+:Jk(hr)EYos&/ems&/emohkfh<;ohm;ZB\q;Z0Po;Z9Mr;H$On;Z'Al;YO&f;Z9Mn;Z'Jl;?p&q
+;,U:j;cNBh!E<"q;$9]k:Japf;#X>l;#a;k;#X>k:]F8k:]F8j;><ua;?'Go;,C'[;#X8j:A[id
+:&n)e:B+,i;#F2i:]F2h:B4/c:]4&_:BF?i;#!i_;#X8g;#a>h;#*ri:esmc:]OA_:]jKg:J^pc
+qbdAirDEPlr)*Gk!Du\h;#jGi:BjWk:Jakb;>jDc;tX/i<;BGm<;KMo<)``l$WBnr9hS2Q91hTP
+<V]\o=8c7r=oDP'5lO%S<E)F[:f'qar_Whs;,L4`9)Vog<;fhq<;]`!<)Z^p<W#ns<<,ts;ZB\o
+<;oku<)`]or`/nrrDW_qs&8i8rc8$[r,hs]s*"Bcs*4Qhrd"WmI!kpA!IfOtJ8BdgK7ei2Knb>;
+Ll%"IN/WaVO,oEdP*;/rQC+&-S"#t?T:hmPUnjlcW2ZetXfek3ZEppH[^`lZ]Y2%o_8=+/`Q-'A
+bKS5Vd*^:jeCE1&g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6Kk
+rVcBfJcC<$g&HR~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U=RPPClfdEiio9"WiSNDDe'5tM
+^:C\ZZa$^:>$+j.iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$]tD"i
+\[f5Z[^EK1R@*l<s-WbO21985S</MXH%(?sBOn->Un3s@P)bEUJphlhG_1O#KnG,6LPLc"Ocm\C
+h0OL%LP_+TOckn*Ont1;O8b79O8=t7OT:LAO8k4?NW"h4N<G2uMM[/eL])u$L%p?#L%g?%L&Qc)
+KD1'!L&Q`*KDgB#J,k)tJGas"J:E(GIf4a"IXQWlI!ta:!.4Zls*F`lq0E!drd"Bb!dK$;rH\Bg
+!IK.fGl;pdGl;p[H2r<kI/SEkH2r<eHN/9eHMr-hHiJBlHiAEmIJ\EkIK+]pIK+fsJGOcmJ,k)s
+JFnEmK)^H*KS>,5re:B,s+gW1s,$l9N/[aq!07&>!0I#=rfRAGP*;+.Pl6jOPa.Q#Q^=*;RJrZS
+Rh(j:I!g6aG]dnADe`s"QW<i^rE&r"pK@Gu!F&b,<tSTVaF'Pf[^NZS[^EKJYcsmtrhTV7qSrZY
+aiaP)!6k>cs3LDcr6GAfrQG,]nB:fMr,M^Vs)\-\s)n?brHJ9d!."Qis*F`nrd=frJ,Xt;JV&N,
+KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@9V8St;UKU8+N\Vl-MoX0&M-Yd(OA[C3TU]"G_j^VRe)
+`Pom=aihoQcHstee'uq"f\,!5h;-rGi8WeWjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0i
+qYU0hr;HTdrdk*#s4RF&~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U"n&LrY,eK"VG*qfWi;tpUS"$C
+Q^!VoO,f3Z;Gg:hiS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$]tD"i
+\[f5Z[^EL<JHC@QJc1*>>uu8kCh7$[?XdJG<I]@@GB@nECM.3g?X$c?@q>RM!,2@E$ttW;EfP:E
+Ci=<8GC0:9p3Zacr-S9dr-SHir-A-`rH[pXrc\6_rcJ-\r,hp\piQ.N!-J0\noF_L")r0sE;XYS
+E;a\VE,T[nDZ"GOE;jeUD?+VOD?+PLDYS)KD#\8OCi0,es)%aQr,)FLqJH.Js)7@DqJZ1Irb_UO
+s)7pTq/6@SDf0IhDuXeRDuO_TDuO_UEVOMOE<'tUEW:%ZEW0nWEVa_UF8U+[Fo-:\FoHUbGR&M?
+H?jg`H[PX;"+GZHI/SKgIK=qKrIOitrIYW3Ec>u9DJa-$An>L`@XhDR<rH+u=SGts=o_e+;?'Jm
+PlYEBrf%5CMi3IMLk^Y3I/]$(Pl-gGPQ@&9o9fBB!1NnVr0dVRqO%;KrKmMNpQtkur,M^Vs)\-\
+s)n?brHJ9d!."Qis*F`nrd=frJ,Xt;JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@9V8St;UK
+U8+N\Vl-MoX0&M-Yd(OA[C3TU]"G_j^VRe)`Pom=aihoQcHstee'uq"f\,!5h;-rGi8WeWjQ>Uf
+kiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s4RF&~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U"R]W*@:&n89Nte/?t!JO?<^T:
+=]\X(<E)sd77B])i8EMLhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xt]Y(ke
+\[],W[C#p3r_i_oqc"C\0fV'I0.\P'/M8n<5sILo4$#8Y1c-p?r\"4+">hnk1Go(g#Z!?A5XnpQ
+;GmElrD`\ns&/emr)*Mlohkcgr_rkrqGR8j!)ibo!)ien!)iep!)i_ls&/Sgr_`ep;H!EkrDEkt
+:f1+g;c?Zf<<?,u;Z0Gq:esk`;>sDl;>sDl:B45j;>sAk;#a>k;#X>e;#4&h:]aKj:\.E_:]=,e
+:]4#g:]!lg:Jamc;#jGl:]F2i:]F2i:B4/g:]4&^:]F;e:\moe:]!ug:]4,b;>sAj;#aD_;#X8g
+;#=)i;#F2j;Z'Dj;?0Ph;#jGf:]=2j;>jDd;ZKei<W?%g;u]f#<Du[i;,@0f#>@c`8kDWL<V]\o
+=8c7q=oDM*><kIQ5mLCh7nZZT:Jh$f"]A2p;G'R\=TDCr<;fhq<;]`!<)Z^p<W,ts<<,ts;ZB\o
+<;ol!<)Z`o<;ons<;]\p<;pk7EW1"YF8^4\FoQX`GQ2mfH2`-iHN8HmI0"eHrd\s=JqJ]/Knb>;
+Ll$tGMi<USO,oBbP*;,qQC!u,R[]h=StMdOUSO`aVl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'A
+bKS5Vd*^:jeCE1'g"P3:h;7)JioB([k2tjjl0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBj
+rVcBfJcC<$g&HR~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6_&tmd'&sj5]4\io&_Lf$VUX
+^Ugk\Za$^;XfSR+=BOM=hYu=cgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKKR$dQ5s(a6VQ]?iMIsur`Bp,KqURms@Oc,'PJUD`fItE6+L5:S=M2SudZ]q&ZGC"dn
+M2hIrs-!ADpQ5?7rfHo9q2kK9!0I/?s,I)=r/CN4"H87sMMV.breC<(!/1<)pk8X#pP/^%re19'
+pOrR#re(9(rIOru!.Xuuqgeg!It.?ErI=ir"+>QFIJ8*hHiAElHN8BfH2i3jGlW*eG6<)8H@#R9
+r-A?gq0;g_rcn?dom6Xbrd=]lrd+Tkq0N'dqKi*c!IB+lHMr3kIJ\EkIK"TqI=?\FJGOcgJG"Kn
+K)^H-KS>,5KS>-ZLB!#9Ll%"HMi<USNK0%uNuX7DOHGWeOHGZgP*(liPE_8pPa.JuQ'@Q!QBmm:
+Qi`\CRJiTQRgtmBI=-BgGBS"CDf9<'E;<Q5=8c7r=o;J'>6%h*<t\ZWaF^4s[^NZS[^EKJYcsmt
+V>eL2`ra?(b5BE_bko]cch>``cN)5gbP]NQbPuM[E;X_UErL.YFT6L`G5c^cGQ<$gHN/<lI/\Np
+IXh?IDh3LmK7nr5L51SAM2I4MNK0'\OckllQ'I]'R$sM7SXuIITqeE[Vl-MoX0&M-Yd(OA[C3TU
+]"G_j^VRe)`Pom=aihoQcHstee'ut#f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9o()DEo`"Lb
+p@n=\q#C0iqY^6hr;QZdrdk*#s4RF&~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6^0[Ycb"(VPgDmri-^4V4sNL
+R$EhrO,f3ZN/NTm;,Z?0hYu=agtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKKqLSKns'IC#E,&oj@:*GF=)i_<H?aOOD/*Zo@p`MH@Uit^B4tskBkiZ5Jol0gC2Ip1
+G'Wt4p3Zacr-S9dr-SHir-A-`rH\!Z"F569G'<h,s)e0[rcJ*]pN6(N!-J0\noF_L")r0sE;XYS
+E;a\VE,T[nDZ"GOE;jbWDJsIiD?+PLD?4TlqJ?4KrbDLNrG;IMrbhXNrbVFJrGMUQmr%u?q/61K
+rGD[TDJo8gs)A!Uq/67PqeuIQrbqdTrc.^PpMg4SEW'kPErU4ZF9$I[F9?Z/GBa%2s*F]j$@7&G
+I!pBjI!pBirdFforI+Hi!IoXuJc(,rK+3$DDfBT2CM@BnB4>C_q,[GqrE/htr*',)r_`\ls-3V!
+J,YE:N/NUOMMR"AI!gj9PEc!1rfdGKQh-U@R/i]TS,A]TRJN<NQMm0LR/!$JDuO_REW:(YF8^4\
+FoQXaGQ2mfH2`-iHN8HmI0"eHrd\p<JqJ]/Knb>;Ll$tGMi<XUO,oEdP*D5sQ^F//S"-%@T:qsR
+UnsueWN*#$Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tH>hr*GPj5]7`k3)!n
+lKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HlrU^#>s+14's*t~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6^!V@UWO@=V4kD?=75O@:3AF
+>$+j,<E3!tr`'+j7Rl=nhYu=cgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKK;cEZnrDWVn)FHqQ2)-d9.kE842EO2h4Zkbd2`<KK0eY.3r\FL1!&aa4"u]433'K)k
+r_NYo<)WTmr_r_m"&Vlk;>a>l;tj2i;uTbm;YX/j;Z9Mn;Z9Sp;Z'Dk;YX,d;Z'Jl;Z9Pm;?9]q
+oMkrl;c<Qk#uFDn:f1%b:f1*h;#a;k;#X>k:]F8k:]F8j;><ua;$9]m;,:!Z;#a>k:A[id:&n)d
+:'+3f;#F/j;#X8j:B+)i:AI]a:A7Nc:f1'a:\moe:]+&h:]+&b;>sAi:]OA_;#X8f;"[Zc;Z'Dj
+;YX)h;#3rj:/=Y^;#X>j;Z'Gs;H$Il;cNBh!*&Jes&Aqs!E)_l:^9ci9hS2P9254_rE&r"pf[Mu
+s'#Lg5lO(L<<Yld:f'qar_Wu";,L4`8m,%i;u'Dl<W#ho<<H3!;cNZqr`&tu;uT\p;uK\q<W?%u
+;uK\p<W5tq;Z]p:DuO_REW:(YF8^4\FoQXaGQ2mfH2`-iHN8HmI0"eHrd\p<JqJ]/Knb>;Ll$tG
+Mi<XUO,oEdP*D5sQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"G[
+dF-Lnf%8R-g=tH>hr*GPj5]7`k3)!nlKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HlrU^#>
+s+14's*t~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fmR(?suAjQ>OaiSiYHe'#bH
+]XG2QZ*1@6ri61$>$+j.rnT?bgY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9GR$dW7rbMOK/89fdIXZi\Br\21Tq.R;PDt<OIsQBaJV&W0KnkA;Ll8m@P/N=9H[UO%
+M3%Rsrf[;DpQ5<6s,d#:plPN<"H\b.OHBI&s,R,=rJ^W5"cS@tMM[/eL])u%L&$E#L%g?%L&Qc)
+KD1'!L&Q`.K7SQ(JbjorJHURUJ:N.GIf4crIKP"GI=:^7s*OclqK`'ds*4Thr-&3eH$]I8rH\Nl
+H?o=2rH\?dr-@s]!.4]mrd4Ti!.4Kes*=HercnZnH[C'bHiAEmIJ\EkIK+ZsI=?ZqrIFfqoRQXd
+s+:6&!JH1+K`?c+LAlu.M$8cpMi<XTrf7#>q2kW=!0[>D!0[;Es-3PKs-3PKs-<YOrL!VQrL3bU
+rL+4[IsuZiH$F@HDf9?&DKYhWrE&r"pf[MurEK8&#$K$gM6"+prO*'@['Hp?USGfI`l@nrs2Y5_
+b5BE_c25fdch>``cN)5gbP]NRb5cGZDuXeREW:(ZF8^4\FoQXaGQ2pfH2`*jH[Pg@!IfOtJ9-9n
+K7ei2L5(J>M2I4MN/`mZOHG]iPa.Q%R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3TU]"G\i^VRe)
+`Pom=b0/#ScHsteeC<($f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fpS'X4^=VPpMpX/`5$Vk]lR
+R?j%uNfO*urego:;Gg:hrnT9`gY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9Gr.4]p!a]5@r`oM6ra-FM<`ss%H['^UEc,W'ARf"O>@V/UAS1pS%;9I9H#epeX_hur
+FEi--I.r!dI/J?fHMi-gHN&0jG^'(1rH\!Z"F569GBWq-s)e0[rcJ*]pN6(N"E\^*F*$nmrc&9a
+DJsK4Df0K3E,bbo!H;uTDZ"GOE;jbWDJsIiD?+PMDZ=PRDYe2QChmg&D>e;ND>nGMD>nAJD>nGP
+DsqT?Du";MD>eAPDuX_NDZarsDJo;hs)@jRrc%jTrc%gUr,;[VE:n5LDuanSErL.ZFT6L[FT6Oa
+GQ2pfHN&0jH@,I8!e#HErd=]npjW6m!.b'"r.=`s%toIRE,]`5D/*ZoB4PL_B)>X-=8c7r=o;J%
+>6%P";#cd]D2%qJs,.5AM26n@I!h-APa)*2rfdGKQh-U@R/i]TS,A]TRJW?QQ^3s9Qi<BJQN1q&
+DuXeREW:(ZF8^4\FoQXaGQ2pfH2`*jH[Pg@!IfOtJ9-9nK7ei2L5(J>M2I4MN/`mZOHG]iPa.Q%
+R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3TU]"G\i^VRe)`Pom=b0/#ScHsteeC<($f\,!5h;-uH
+iSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fpS&n50N=]o!8?XR>S@UWPI
+>?P$.r)EVpr^?fVrnTBcgY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg\[],W
+[C!9G;c?Tm;uBVo74q%s6n^&@/1rk?5<qCq4$#A\2`!3B0J4q51,^pF2)@*H2GQ:q5Y"sT;H$Fk
+;Ya;l;uBMq;,C(dqbmGmpeq,jr_rkrqbm2fs&/ko!)iep!)i_lrDNDfqbmAkrDNVlr_`bq<:j/l
+<)Z]n;$g&p:Janb:Jancr_WVj!)WYlr_NPjs%iYks&&MeqG@Al;,L+bo2,H_s%`Ger_<GhqbI/e
+s%rVj"Ahli:/:da!)EAdr(cu^!`2`jq+pi`r_NDfs%iSiq,%,gr_NMis&&;_r_NGgmSWs]qb[Gl
+;,L0d:]F2i:]F8k;>a>j;uT\o;tO&i<:Wue<<#r2<)lq!;bp4f:fC7f9h\5Q8k;>H<rH+u=SQ%s
+>5_\*5lX.M<<5ZdrD<Jj#uXVt;G'P[;H$Ni<;onq<;]bq;ZKhq<rQ)$<)Z[mr_rbps&B%ur_rbp
+r`/qsrDN_rDZ4SSE;OYTErU4ZFT6L`G5c^cGlN'gH3&A?rd=frJ,Xt>JV&N,KS>/8LPUeEMi<US
+O,oBbP*;,qQC+&-S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\@K2`]Y;.s_Sa@3a2lEHbg+M\dF-Oo
+f%8R-g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcFC&
+J,~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6LKajlP[fjl>@Ygss]k
+_S*FcZE^U:Y5YL%WB$oS=]ee^gtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Poa3_SO"%^:h1k
+]",>[[^EKKZE]dapm:tq05>38BP(k*JnJbsW2?8WR[B+pKSY/)H?OpmKS5&7KnkMB]W@<hW-E`@
+KntbPP5LIAP5g[=OSk1>OS=h3OT1I@OT(=@NrG%;N;JS7N;e_9M2;(brJ('#q1S^#pP/^%re16&
+pk8[$re(E+JUi<&qgeWr"G22TJ:IEErI=ir"+>QFIJA0iHi8?lHiJEgH2i3iH2MmdGlN*hH2`-i
+HN8BfGl2jcGl;p[H2r<kI/eQkH2r<fHN/9eHMr*iH@,X;rHnTnqgABkrd4cqIXh<Hqg\6gp433q
+rIb-(re1<*s+^Q/reUl;Mi3ORNK0%uNrb?'qiCi@P5^UBOoU^FPQ7!JPlI!KQMm0MR/`TRRfAlT
+RfAidKmnDrH?XROD/X6'Cj#YVrE&r"pf[Q!r*02+r`B-@"-Kmu\,E`B[C!6DYbRu4`Q#ppa8a3]
+aiaP)!6tDdrm1>cr6GAfrQG&[p<3DPrbqdTr,MaWs)\-\s)n?brc\EgH$TC8!IK4nI;s^cJ:N3&
+K7ei2L5(J>M2@+JN/`jYOHG]iPa.Q$R$jG5SXuIHTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)
+`Q#s>b0/#ScHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60n*ol;o()DErq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6KoiW2ZesXT#7,WhlAY
+R?s,!NfO*urepc52Mk@0;Vg-_g=k64f@SU(eC;sqdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr]Xtbc
+\@8oS['R'Crdjlqs'Gb4rEU:G>@Cu@<e#LDG]\%JChdKl@UEDFAn5IaB)ZHCBF9`JFE`=OD/jW@
+H1u^\Hi8?iHNJM=H2W'eHi/3iGlW*gGQ)jcH1Q:\H2i'gG5ZR`FSp4ZFT$@VFS0bZFE;JDF7OAN
+E=$Q$DfBW5DJsH4rGV^T!,qdQr,;OQrbhjUDf>Ji!,_OL!Gu`OD?"GPCB86grG;LNrbhUMs(qOK
+rGMUQmr%u?q/61KrGD[TDJo8gs)A!Uq/67PqeuIQrbqdTrGh^Ro5XbK!-.pW!c`7$rcA'\s)n3\
+rc\<cs*4Qis*=Wj#((`EI!^6frd4]ord=ZmpjN6nJGk&tK)(&tKE-2pE!^E!CM.6kAR]1^r)Wbt
+rE/htrEB,'s'5P"s-3V+M>`G6M[G>uLk^Y3I$9bYPl-gGPQ@&9nsK<B!1NnVr0dVRqj7GOQBqK9
+rg<SLrGMUQrc%dTs)S-\rH/'^s*"Bc!dK!9rd"TlI/\P6IXcluJV&N,KS>/8LPUeDMMmFQNfT9a
+P*;,qQC!u,S"#t?T:hmPUnjlcW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg+M\dF-Oof%8R.
+g>(N@hr*JQj5f=akNM0plKdg(mdKW6naZ2@oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcFC&J,~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6LJ*=]o!8?XR>SA7AkM
+>?Y-/<)Z^p<;]`T<)Z4T7bukSg=k64f@SU(eC;sqdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr]Xtbc
+\@8oS['R'Cr)<Jl,"+jf6UX:06UE@X2`<lb4?Ybe2`EWN1GLO9/i5=@1Gh!Hr\Y$X3'8uj:Janc
+;c<?hs&8hn"&Vlk;>X8k;Z]io;>O/j;uT_r;u'>f;uTYq;,[Bl!)i_lrDNDfqbmAkr)3Plr_`er
+<)iNj!`W)rrD<kt:JXea:esnb;>sDl:B45j;>s>k;#X5j;#X>d;#4#k:f1(co2,E^s%`Ger_<Gh
+qb@,er_WMir_NPhs%iYiqG7&bpJ1ie;,I'aq,%&dr)!Dhr)!2dr_NJh!)`8_r_NDfmns$]r_`Vj
+s%rbmqbR5er_NPjs&&_mrDW\nr_ieroi1uknl,Nes&K(us&K&!s%j)#:f:.f9hJ&O8PDPM<rH+u
+=SQ%t>5VV)>R!GZ5ZLfV:]4,h;$g,t;,U"Y;c6Omq,I>nr)ESor_ierr)Wes##nN!;H$OnrD`es
+!*&qrrD`brs&AqqrGMUQrc%dTs)S-\rH/'^s*"Bc!dK!9rd"TlI/\P6IXcluJV&N,KS>/8LPUeD
+MMmFQNfT9aP*;,qQC!u,S"#t?T:hmPUnjlcW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg+M\
+dF-Oof%8R.g>(N@hr*JQj5f=akNM0plKdg(mdKW6naZ2@oCW%Ts7QHerV6Egs8)Zjrqu`no_sFA
+JcFC&J,~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTkTgk3(mhjQ,=Wf[7gY
+^:1MVZ*:F7XK/D%WMl\jUnmuls4T0[f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9GZ*9U_qNh2JrbF*#Bk_6nAn>RcAZDZ)TUD47NJiODIscNcJ:iK.KnbA<Ll%I]]StWm
+I=I$.OT(F@OoCODOnXt8O8k=9O84n;Oo1=>NrY4=NW4t7N<"q:MZSclM#E,-LA-DtK`6]!LAuu,
+K`-Q!K`6])KEQmXJ:W:KJGk$%Jq8H&J,4WmJ,as"I=-Hkpj<'grI"Wls*FNes*FZirHJ9d"F5<>
+H$T@7!df6=q0;g_rcn?dom-Ubrd=]lrH\Hjpj2scqKi-d"aYNBH?sr;HiSTlI/\QnHie_FJ,Fip
+J+eBoIt3(CJc13%KSBAXs+UK-s+gW2s,$i8N;eh:NrP.@OH9:#qiUi?s-*AFs-<VMrKdSQR@4#B
+".PaJRJrZSRgkC,J9u]fF`M;=C2%ILr`8u!rE/htr*'&'r*98's2Y2-rjVj7$FR7IYcsq!`Poj:
+qoA`X!6P,]!6tDdrm1>crQbMibl,`[b5'6YDZ4SRE;X_UErU4ZFT6L`G5c^cGQ<$gH3&A?rdAR2
+It3'#JqJ]/Knb>;Ll%"IN/WdXO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmWiW>+Yd(O@[C3TU]"G_j
+^VRe)`Q#s>b0/#Scd:(feCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]
+!;ZWjr;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTk,rWN3)$X/i>&VkKZM
+Q]mPmNrG%:MuSYpM26qB;,L6Fg=b-1f@JL%eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_
+\$i]OZa-j?JV!WIs'Gb4rE]G-(L:6K>CV$GG]\"HCM79i@:*;FA7T7`Ac??BBF8ZuM0#V4D/jZA
+HhMj]Hi8?iHN8BjH2i3gHi/3iGlW*fGQ2pdH1Q:\Gli57GPu[`FT$:[FT$@VFS0bZFE;JDF7OAN
+E<0uqrGMdUDf9UnDuXbVDuFSNDuFYSDZXfpDt.]GD/T5fs(q^Ns)%^Ns)%aQr,)FLqJH4LrGV1C
+qJZ1Irb_UOs)7pTq/6@SDf0IhDZFbRDuO_TDuO_REVseLE<1#urGVaVqf2gZEcQ5BrcJ-^qfMj]
+rc\EgH$]I8s*F]l"akZEH[L2;I/\QgIfFrsJc:8sKD^B4Km[lZDfBQ/BP(gd@q're<rH+u=SQ%s
+>5_\'>lRY#PlQ%+NW4nAMM[.DL4"B4rfm>GrfdDKnX03A!1NnVrL3bSqj7GOQBqK9rg<VMr,2LP
+rc%dTs)S-\rH/'^s*"Bcs*+Nhrd"TlI/\P0IXcluJV&N,KS>/8LPUeEMi<UTO,oBcP*;/rQ^F20
+S"-(ATV8*UUo(&gWiE/&YHY:<ZaI6O\[oGe^;%M$_o9X9aND]McHjkbdaZguf@\g2gtgiEi8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"Lbp@n=[p]1-hqY^6ir;HTdrdk*#s4I@%~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTk5%=^56>?t*_Z@piSI
+>$"a(;c?Xpr)GjY;c?Xp77Kc#g=b-1f@JL%eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_
+\$i]OZa-j?;cH[oqc*Sa*CN7`6UX:.6UO1/5sILo4?>G\2Dd'@0.nk41,Llf2#fE@1bLpU7oW;^
+:fC7jp/D#jqbmAiqbmGm!)ibmr)3Pns&8tspepufr)3Mm!)i\k"&`&q;Ya2e;Z0Pl;ZBVn;?Bcr
+<:j/k;c<Qk#uFDn:f1%b:f1*h;#a;k;#X>k:B45j:B45j;>3oa;?'Jm;#jD`;#X8j:Adoe:B+,e
+:'+3f;#F/j;#X8j:B+)i:AI]a:A7Nc:f1'c:\did:]!ug:]4,c;$'Qi:]4)i;=RK^:]!u^;#jGi
+;>jDl;>a5k;,I*bs%`Sir_WVlrDNVnr_i\noi1uknl,Kd!*0"t!*/qt%9$)#:f:.b:/+AT8kMeV
+<rH+u=SQ%s>5_\'>Qd>X<E2Zh;#X>l;ZBVo9)V]a<;onq<;fes<;oer<;]er<<Q9";GpHj<<#qu
+<;ohp<;okt<;fbnDZ4SRE;X_UErU4ZFT6L`G5c^cGQ<$gH3&A?rdAR2It3'#JqJ]/Knb>;Ll%"I
+N/WdXO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmWiW>+Yd(O@[C3TU]"G_j^VRe)`Q#s>b0/#Scd:(f
+eCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+f`-I~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTkNikNM*ljlPR]gX=6_
+^U^bYZEUO8XfJM&WMcShrM0Fgr`Cl,f@SU(eC;sqdF$=ecHa\XbK@rJaMu3<`59C-^q[Us]Xtbc
+\@8oS['R*DYcsL^r0RGL"`.siC2%G^AcQEAAg1\oA"8mOP`1EOJphoiGCbC#KnbD=LQ&j0Nm+/a
+I=Hp,Nr,";OoLUDOnb%9O8k=9O7JD1O8Ot;N;JS7N;e_:MM[/fL])u)K`Hf*L&$E$L%^9$L&Qc(
+KDC3"L&Zf0K7\Z)JV!]Krdk*$"+buQJ,=]nJ,XluI=-J;HiSNlI/eQnHMVpeHN&3gGQ2miH$Xd^
+rHeKj"+#6;H2DjbH2W!cH1cI`HiAEmHi/0iHhi!fH2;jcGl`5<rd+Qks*aclrdFcn!e#QJrIFfq
+omd*nJ:R?Ere(*$s+UH,#)A"kM2I1Krf-o;rK$i;!KiK@OT:RDPQ-jMPE_;sQ2R!QQ^F/.R@9QB
+RK/cSRf/]dQ%X[7I!BaSCiO?-CN!6SrE&r"pf[Q!rEK)&"'<RbTDl=u[L0FLZ`p[0UrC<m`r!gV
+a8j?Zb5ffacMl/ad/D8kcHQ71!m8X,qo\o]s2tAb!,_UNrbqdTrGhgWs)\0]s)n?brc\EgH$TC8
+DgQk[I=?WpJ:N3&K7ei2L51SAM2I7NNK0']OckonQ'Rf)R[]h<StMdOUSOcbW2cl!Xfen5Za7'J
+\@K2`]tV7t_Sa@4a2lEHbg+P]dF6Uqf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T
+!quB_rqQNhs8)Wirqu`no_sFAJcFC&J,~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTjRNX8]1/X/rJ*WM5uQ
+Q^!SmNrG"<N;\Y9M26ucLGMe*;V9UQf%&:"e'cXkd*L"_c-+;QaiMQC`Pod4_SO%&^:h1k]",>[
+[^EKKZa$a=JV!`Ls*k)X?XE_;s'#J/rEBh<>?Z2jEc>`)@q8qP?!ClOrau1D$tj=8EH..kJ8K7H
+G'W_-p3ZacrHnQjrd"Niqg89fs*4ThrHJ9drH\!Zs*=Wh!I&_dFoHL]F8g:[Fn^"NFTcf-EcZ<m
+ErU+\E,TXmDZalqDfGYns)7sVrGMOOrG_^R!H)iID?+VRDYn8SChmg&D/K8gs)%^Pr,)FLs(qaR
+rGDRPrGV.BqJZ1Irb_UO!cMsoq/6@SDf0IhDuXeRDuO_TDuO_SEVseKEVj\TEVskWEW:%ZF8g:\
+FoQO`FoHIdF`qqPGBj"1!.+EeqgAEl!IfOoIKG"LJGt,uK)1,tK`6Z+Jogp1"`A-kAS5TRAH,^/
+=8c7r=oDP&>PVM+:mI;or/L`7#)\7nL5()'rKR5FrfdDKnX03ArL<bSs-`bO!gf4=rKmMNrKdM$
+qelCOrc%gUrc8$[rcJ0_s*"Bc!dK!9rd&L0I!pElIXcluJV&N,KS>/9Ll$tGN/WaVO-#KePEhE!
+R$a>3S=Q7ETq\<XVPgAmWiW>*Yd(O@[C3TU]"G_j^VRe)`Q#s>b0/#Scd:(geCE.%f\5'7h;7&I
+iSrnYjlYail0@U$m-X60n*olHncA@Srq-?dp\4[^s7u]kqtpBjrVcBfJcC<$f`-I~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTk6a>$P?>?t*_[ARSkL
+>$+g);c?Xpr)N_ps&B"u!*&qe0%ee-f%&:"e'cXkd*L"_c-+;QaiMQC`Pod4_SO%&^:h1k]",>[
+[^EKKZa$a=qGdJn*C`Ic6UO7/6:4+,6UaC069@.f2`EQL0eb43/M]*\1_2H#1cA)d4[;S6:Jt"f
+;H*6f"B/2r;,R9is&&Yks&8qqr_`Sks&8qss&8_kqc!GkrDN\oqb[Jo;c?RlqGI5i!`MuprDWVl
+s&&bns&/nsoMkoj;Z0H#:esk`;,C%b;,L.dr_EMjr_`Yj!)WYj!)WYlpe^fas%ibo:f$[Zr_EMh
+qbR2ds%iPfs%iYkr)*Ghs%`Sis%`DdrD*&^s&&Sfq,%&dr)!DhrD<8dr_NMis&&;_r_NGgohb]c
+qbd>jr_`\l!)NPiqG7)cs%iYkr_`Vls&8nprDN\qp/M)lo2GE`s&B)#<W,r/;c$=h;,U4a92&)R
+8kW2crE&r"pf[Q!rEK)&"$fjd9DhWc;?'Po;?'8e;u'Dl<W#hp<<-"t;ZKhq<rQ)%<)Z[m;u9Po
+<<-"t;uK\p<<-"t;ZL\3DZ4SRE;aeUErU4[FT6L`G5c[eG^4T6H>e.XI=6QnIt3'#JqJ]/KnbA=
+M2@+KN/`jYOHG]iQ'IZ&R$sM7SXuLJU8+N]Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lH0CbKS8X
+d*^=le^i@)g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?
+s+14&s*t~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM!p]"5roFjRh:9`g
+^Ugk\ZE^X;Y,eV&W2HJgrM26EU8"EX=P)-SeC;sqdF$=ecHa\XbK@rJaMu3<`59C-^q[Us]Xtbc
+\@8oT['R*DYcsMmQi<9TI;,?gBPD,WAcuXQ@q90MA/gD_L4Xf!H@pg%KnY>;KnkP+Su@S(H[gR#
+M3.Rsr/q#BrfQu;n;m.%qiC]8!0$f7!0$o8s,$f4rJ1<*r.P-(re:3%rIss"s+UH*rIap!re:B*
+"bVDXJ:W:KJGt-"JcgRSIt.?ErI=fqrdFQhs*O]l!df6>qK`*ercnKgrce?drd"QirHeKj"+#3:
+H2DjbH2`'dH1cL`HiJKmHi86jHh_peH2;jdGl`5<rd"Qkrd4]oqgABkrd4cqIXh9Gr."Ejs*k$!
+p4<3qqLej&rJ(?.s+pl9Mi<XTrJpi;q2kN:s-!8Cs-3PKs-<eQQC!u+rgEbSrgEbSr1!_T%>]FZ
+I<g!VD/X6*BPhki=8c7s=oDP%>PVP(>lr)QVZ+('[Ka.HZ`p[0V#J=5`r!gVa8jB\b5oi3qp,2e
+p<`fb!RApfb5f]aao'9abKA#Nb5H2SDZ4SSE;X_UErU4ZF96T.G5c]2G^4R\H@(!dI=6QoJ:N3&
+K7ei2L5(J>M2I4MNK0']OckomQ'Rf)R[]h<StD^NUSO`aW2cl!Xfen5Za7'J\@K2`]tV7t_Sa@4
+aN2NIbg+P]dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zj
+rVZWmo_sFAJcFC&J,~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM&*g6tX0&S-Whc8V
+Q^*\oNrG"<N;e_;MM[.FqhP0*/lUBQe^W*tda?Ihcd'h\bKJ&MaN2B?`PfX1_8*h"]tCtg\[],W
+[^<BIZ*:H`r.+cr"^Y5R>[:S5>l._+>[%,0)JWkp@p`PKAn,CaAnPagB4tIkIrqf0DK0`AnpL.X
+rI"Qjs*FZird+Efs*F]j!-nHds*4HeoQ^C]s*+QgG5cX`F9Q`-F)uGFr,qaUolUCZF)l>CnoFbM
+!cW'qrGMdUDf9UoDuO\UDuFSODuFYPDt@iHDuOYOD?"GPCB86grG;LNrGMRNrbVRN!,hdQrbh[Q
+mr&#@q/61KrGMXR!,hUNs)8$XDJo;h!-%gRrc%jTrc%dTr,D@LqeuOTr,VgWrc8![rH/-_FoHL_
+FoQXbGPZUbH3&A=qg86gs*afo!.Ffps*k$!rIOp!qLea"rIt9)$$L<,DJj6)An>ZTA,p3>=8c7s
+=oDP%>PVP(>lp9sJc(N-M[#&qLk^Y3I/T<.Q2QpIQLU@?R/i]RS,SlVRJW?PQ^7Q9"IPOCQ^@Yf
+qelCOs)@mUs)S-\rH&*`G'<k/H$FU[H?spbI!pElIt3'#JqJ]/Knb>;Ll%"IN/`jYOHG]iPa.Q%
+R$sM7SXuIIU8+N\Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lQ6DbKS8Xd*^=le^rF+g=tE=hVd>N
+j5]4_k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HkrUg)?s+14&s*t~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM''`b/?t*_\An#(O
+>$+g);c?XprD`hsr_req!*0"ts&L^Af@JL%eC2jndEp4bcHXPUb/q`G`l5p8_SX.)^V7Co]=PP_
+\$i`PZa6p@YkqE!;ZeI'3^id2'1G8U6:=1-68g\W0eP%11,:[C2>o?;2Cp[K7p&Sc:]+/a<!#ur
+;Z0Je;ZB\q;Z9Pk;ZB\p;ufkm;Yj>k;Z0Mo;Ys>k;?Bcp;Ya2i;?Bcp;Z0Pl;ZBVn;ZBYq<:j/k
+;c<Qk$W'Vp:f1%b:f1(d;#X5j;#X>k:BXKi:Jame;><ua;$9]m;,C'[;#a>k:A[id:&n)e:&n)h
+;#O5k;#X8j:B+)i:B"#h:Amue:A7Nc:f1'c:\did:]!ug:]4,c;$'Qi:]4)i;=RK^:]!u^;?'Jj
+;>sJm;?'Jm:]=2e:]4&g:]F8k;>a;l;uT\n;u]hk<<-"h;ts>k<W#nt<=Mc%;,U:g:J4AT8kM`C
+rE&r"q-!Z"r*/u%s'5\+>tt5nr_`\ns&&egrDWMkr`/kqrD`hsr_iku<`T-"r`')#;c?Rmqc*Sq
+!`W)sr)<f!<)lmrrGDFLrbqgUr,MaWs)\-\!d/[0rc`X4H$O^^H[C-gI=?ZrJ:W<)K7nr5L51SA
+MMmFQNfT9aP*;,qQC+&.S"-%@T:r!SUnsufWiE/&Y->1;ZaI6O\[oGe^;%M$_o9X:aND]McHjkb
+e'uq"f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#
+s4I@%~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6BXKroOjShUg&n
+_7[7aZa-j>YH4b(W2KWkrhM?FU7n<VUnaYdeC;sqdF$=ecHa\XbK@rJaMu3<`5BI.^q[Us]Xtbc
+\[T#U['R*DYct;/Qi<:*KR[a/S<JbAAnGUdAn,:[A7]4\A7]@aBkh=-J:`E+KnkG<Ar*FU_3C@:
+It``?PEYj+r/puAs,m)<q2bQ9qN(Q9!0?o:qi:`;rf$o:qi(T7repf6!/^Z0r.b-'!/1?*qLng$
+p4iU$re16&qLng$s+CQ.Jq8H'Jc(&tJc:6'JUi6"qgSKnrdOippjE*grHnZnH@#F5s*FZi!dJp5
+rceEgq0E3kH?ja[H2DjbH2`'dH1cI`HiAElHi86jHhi!fH2;jcH2i6kH2r<kI/eWlI/\QnHiebH
+J,OoqJ+eElIfP#nJH1<$K)pXXr.P$'s+pZ2",`%rNW"n9O84n8Oo:IAPQ-jJQ'D95".#:?R/NEQ
+Rf/ZQRf8fSRLbF.H@1$]Ec>o6C2%R/=',?&q-!W!rEK&%rETG1Xo>g.[Ka.HZ`p[;V#J@0`ra?(
+b5BE_bkfWach,Qccd'c5bPfQ]b5]ZaaoH8VD>S5MDuO_SEW:(ZF8^1^F`qs-G6W;;H$Xd`I/\P8
+IXcluJV&N,KS>/9Ll$tHN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2(p
+_8=.0`lQ9EbK\>YdF$Fme^rF+g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`noDX=@JcFC&J,~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6:-ZXfSY.Y,eFm
+S!]M(O,o>#NW+h:MM_=gr.k3)/;I-QeC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@YcdqTrdP;b?WMAlDJ*3Z>?Y50>6J,6>$4u,=oV\*>81@Q@qB4`AnPaWDL$AaH%BjPF*;iu
+I.hpdI/J<kHN&3hHMW!gHN/6jGl;jdGl2jZGlN'gGQ;pdFoHIdF*)JEFEIG'p2p"N"E\^*F*$nm
+s)A*ZDf5Ml"`A6sE,T[nDuahTDZ"GOE;OSMD?+PODZ=YSDYn;ND#\;ND>n>QD/O4hDZ+GPD#J5N
+DZ=SQDZ+MCDYe;IDZ4MOD?=`oDY\2QE,TW3qJZCQqeuIQrbqdTrGhaSp2TtK"`\R'EH6+!EW:%\
+F*)O#FoQR`FoHOdGBeCXrH\Eh!IK.iHi/9jIJnWpIK"]qJ,b&tJc:9#K)gN&KDgK&L&?T7HZF+E
+Df'9%AS,I_A7ntFrE/kur*'&'pg!c'!FCNYNW4n@MM[.DL4t$SPl-gGPQ@&8nX06B!1NbR!h,OF
+qj7DNQMm0MR/WEPD#J5JDZ4SRE;aeVErU4ZF96T.G5c[iG^4R\H@(&=I<0jeJ:N3&K7ei2L51SA
+M2R=ONfT6`P*2&pQC!u,S"#t?T:qsRUnsufWiE/&Y->1;ZaI6O\[oGe^V@V%`5Ta;ai_fOcHjnc
+e'uq"f@em4h;-rGi8WeWjlY^gl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVc?eJcC<$
+f`-I~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6:3\?=./RB4k^]
+>[(<2<)cdq<;fes<;ohm<%q<Q=&i3heC;sqdF$=ecHa\XbK@rJaMu3<`5BI.^q[Us]Xtbc\[T#U
+['R*DYct;/<;of%.k*242DQsR6iKCQ6U^o?"%5LC6iKFO5Qrbq0f:aEr\P-L6SL\i85;rY;,^=i
+;H$Nd<!-#q:f.-gs&&hqqbmDl!)ienr)3Mms&8tsq,7&fr_i\n!)i\ks&/kq!)iVis&&ns;H!Hl
+r)3PlrDEYp<:j/k<)WZl$W'Vp:f1%b:f1(d;#X5j;#X>k:BXKi:Jame;><ua;$'Qk;=[Q_:]F2e
+:]F2i:]4#k:JO\^;#F/j;#X8j:B+)i:B"#h:Amuf:A.K`;>O)`;#X8g;#a>i;#!oe:]=2j;=[Q_
+:]!u^;>sDj;>jDm;#jGk:B45e:]4&f:B45j;>jAm;uT\n;u]hk<<-"h;ts>j<W6#'<E)pt<Dufo
+;$'Ne:&[cf8jl`^rE/kur*'&'pg!c'!FAP!;#X>l;Z9Mn9)_cb<;fhq<;]_r<;oet<E<-!<rQ)!
+<;ohn<<#tu<<#nq<<#tt;ugb5D>S5MDuO_SEW:(ZF8^1^F`qs-G6W;;H$Xd`I/\P8IXcluJV&N,
+KS>/9Ll$tHN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2(p_8=.0`lQ9E
+bK\>YdF$Fme^rF+g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcFC&J,~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJs5t$ViRuT!
+_nNXfZa-j>Y-"_(W2KTjs.f^kU7qCW.FZ_mdEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@Yck2.Qi<9WJpqI*R?E;WItIZ3,%>%mARf4\A7]@aC27KqB4tsjAnPXbB=>+1U;(u'JVT/F
+rKI,Ar/puAs,m&;qN(Z:qN(Q9rf?o;qiCc;s,I&;r/C]8rJL]6M>W/-LAZ`*K`6]%K`-VuLAuu,
+K`-Q"K`6Z2L4k54Jq8H'Jc1,tJc:6'JUi6"qgSKns*joppjE*grHnZnH@#F5s*FZi!dJp5rceEg
+qKi0g"F>?<H$T:3rd"HerH\'^s*Ocnrd4Tis*OQfs*=HercnNjHiA?iHiSTlI/\QnHie_GJ,Fiq
+J+eElIfP#nJcC?$K)pXXrIb0)re:`7LkpnEMMmFQNW"n9O84n8Oo1CAPQ$gHPm<P=QC!u+R@*i=
+rgNhUqO.nWJ:)ZiF`_S=DJ<g&Qrj5gq-!Z"rEK&%rE]D/!4Dg8rO*'@['R!@YGB+U`Q%eq!m&L+
+r6#)aqp,/dp!E`b!R8jebPfQ]b5]Zbb5Q5VD>J/MDuO_SEW:(ZF8^1^F`qs-G6)r6rd&7)I!pEl
+It3'#JqJ]/Knb><M2@+KN/`mZOHPckQ'Rc(R@B\:StD^MUSO`aW2ZeuXfen5Za7'J\@K2`]t_=u
+_SjF5aN;TJc-FY_daQ^rf@\d1gYL]Ci8EVTj5oFckiq?slg4!*rpL6anac8Bo^qhLp@e7Zq#C0i
+qY^6ir;HTdrdk*#s4@:$~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJ'X"[DXJ_b]
+R$NnsO,f3ZN/W[QMM_:fs+^W0L\uo,L]<)Xe'cXkd*L"_c-+;QaiMQC`Pod5_SO%&^:h1k]",A\
+[^NQLZa$a=YH@eSrdP_l?<2/fCh7'`@U!#?>$G-5=^"s2=BSf*>7t%A=^"s1='/L\JTQ0uC2Is4
+GOBkYHN8BfHiAEjHN8BkH2`-iHN8HlHiA<lH$K:3s*4HeoQ^@\s*+NerH8-^"`nd,F*)O%FnTqN
+FTcf-EcZ<mErU+\E,TXmDZt#sE,]`6rGVaTrGMOOrG_XPoksbIrbhUM"`.siCi+%gC]J>LDZ+DP
+D#J5NDZ=SPDZ4SCDYnAIDZ=SPDZ=VTDY\5NDusrqDYe8OE;OSQE;jeTE;X_SE;";KE!C<&EcH)>
+ErL%ZEc_5%qK2d[rcS6a!-eBdrH\?fr-S?hqgANpI=;*DrdXrurdk$"s+:<'rIb*&re:3%$%I#8
+DfBQ/C1h2YA-%3^rE/kurEB/(pg!c'ra#S_r/L`7#)\7nL5(D0rfm>GrfdGKQgpI@R/i]QS,\rW
+RJWBOQMm0MR/`NPD#S;JDZ=YSE;aeVErU4ZF96T.G5c[dG^9:7BR>,TI=?ZrJ:W<)K7nr5L5:\C
+MN!LRO,oBcP*D5tQ^F21S"6.CTqS6WV5L8kWiW>*Yd(O@[C3TU]"G_k^VRe*`Q$!@b0/&TcdC1i
+eCE1'g"P3:h;@/KioB(\k2tmll0@U$m-Xf@$h3]Wo(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14%
+s*t~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJ'4PNdBOkLT
+>?Fs,<)Zar<E<+"<;ohm<!--$<E8us.FZ_mdEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@Yck2.<;of*.4R)41bp^8/1s:V6ppr?!(6`P!^T.>r]pHI&O&HF5sRRs9K,*o8l/A];H$Nn
+;ZB\f;uooprD3Pm;H!KmrDNVn!)ienr)3Jl!E<"n;Yj>k;Z9Vp;Ys>k;ZBYq;Ya2i;?Bcp;Z0Pl
+;Z9Pm;?9]qoMkok;Z9Pn;#a;s:f1%b:f1(d;#X5u:f1(d:JXe`:JXe`r_`GeqbdAis&&>`r_EMh
+qbR2ds%iSgr_NPj!)ibmr_NPhs%iYis%iYir_NMgp.k`d;,I*bpe^udqb[;grD<;e!`2ZgrD3Jk
+nPK3\r)!)ar_WPjrDNYm!)WVis%rMerD*Ag!)WVkq,72js&B"u!*&hqs&Ako!*&_l!E<"o<;ons
+<WH.u<;oer;#X;q;GKnZ:/1^]!*B,$q-!Z"rEK&%rE]D/!)NMhr_`\nr_WYfrDWPlrDieqr)E_r
+r_ir"<`N.#rDiepqc*Sqs&B"srD`ess&Au6rb_LLs)7mUrGhjXs)\-\!d/[0rc\BfH2`,'H[L6i
+IXcluJV&N,KS>/8Ll$tGN/WaWO-#NfPa.Q$R$jG5SXuIITqeE[Vl6SpXKAY0Z*UdE[^`lZ]Y2(p
+_8=.0`lQ9EbK\>YdF-Lne^rI,g=tH>hr*GPj5]7`k32'olKdg'mJcP^nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFAJcF@%J,~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJs6(HbinMo&
+`4rmk['Hs?Y,nY&W2HJfV59u`US=HUr1X1brLt[ed*L"_bfe2PaiMQC`Pod5_SO%&^:h1k]",A\
+[^NQLZa$a=YH=r+QiE@(J:V@(P`UWLJqJehXK>rCAR]+ZAS,LdCMINpBP;$jAn>LaB6'WDMq`T0
+KSY]dPP^O@OoCODOnXt6O8k7:O8P+<O8G%9O8k7?NW4t8N<"q9MZJ]lr.k3)rIt9)re:6&rIss"
+s+UE)re('#re1W4KS4u0JUi<&rIFlurIP-&J:E(GIf4crIf=ciI/eQlI/\HhH2i3iGli57GQ)ge
+H22aiH[:!`G^9.1rd"Kfr-A0c!.4Wi!.4]mrd4Ti!.4Nfs*=HerH\Eis*=Zlrd=`or-\Klrd4cq
+IXh9Gr."Ejs*k-$JUr@IJcC?%K*$^YKDpN(L&Qi,L]<21M>rJ7N/daqrK$c9r/pr@rKI5F"dP=;
+QBmm:R/WKRR/WNPRfAlPRLPU:J:)]eFE;;:Chda)rE/kurEB/(q-<l(rE]J2rO;a6$FR7JYct=,
+`5T^8qo8cZaiaP)!6k>crm15`s3C\irQ>2`rQ5#\s3(FXrG;IMqelCOs)@mU!ci@'rH*4*G'8(R
+G^+L[H@(!dI=6QoJ:N3&K7el4L51SAMMmFQNfT9aP*;/rQ^F21S"6.CTqS6WV5L8kWiW>*Yd(OA
+[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1ieCN7(g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14%s*t~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJ'^2d*Xf8%a
+R$X"uOH,<[N/W[QMM_:fs+^]2LPCN^LB!&.L+.n4dEp4bcHOJTb/q`G`l5p8_ns7*^V7Co]=PP`
+\$i`PZa6p@Yck12rdb#u%piXCF_tr*?=IDS<e5j+>Q.h(=Tr&6>?b65r`Th7='&F0FaeD3D/XH;
+H%(21I._jbI/\HmHMr-hHN/?lI/\KkHN/6hGQ2pcH1Z@\H2i*hG5ZR`F9Q`-FE;MFqfVXTp2pFY
+F)q8$o5akN!cW'qqeuLRs)7jT!,qgRr,;OQr,;4FrbqdRqeZIPCMRa'rG2INr,2IMs(qXNs).jR
+rGMUQn8A)@q/61KrGDXSDYS,PE,TW3qJZCQr,;RRrbqdTr,MXRp2TtKs)S*Y!-8'Y!HN8\FS0eV
+G5Z[`H2W'fHi/9gI0+kGIK"]qJ,XusJc:9$KE$Q&KDgK'L%g6#F8g+aDJX!"An>I^AGoX+=oDP&
+>PVP&?2\(0?i,i_MuSY;Lk^Y<I/]B.Q2[!KQ'_'/qj@GQqj[VS!1E\Ns-EVMs-Wh%rG;IMqelCO
+s)@mU!ci@'rH*4*G'8(RG^+L[H@(!dI=6QoJ:N3&K7el4L51SAMMmFQNfT9aP*;/rQ^F21S"6.C
+TqS6WV5L8kWiW>*Yd(OA[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1ieCN7(g"P3:h;@/LioB+]k3(sm
+l0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14%s*t~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJ%HqA:Bk:^W
+>?P$-<E)rq<<-"t;u0Gq<E<+"qG\iid*L"_bfe2PaiMQC`Pod5_SO%&^:h1k]",A\[^NQLZa$a=
+YH=r+<<#l+-Rpc-1bp^7/M/Y96:(T;!(6ZNs$?ZM'gFrI5<qJ"5Wq:m1He309i4Y`;,^Em;ZB\f
+;uooqrD3Pm;H!Kmr)3Pn!)ibmrDNPlpeprer_i_os&/_ks&/kq!)iVir_`bq;Z'Jk;ZBVn;?9]q
+oMkok;uTYo;#a>j:^'Wk;,L.dr_F##;,L.c:Jak`:Jakb;Gm3cqb[Dk;,Qj[r_EMhqbR2d!)NMf
+s%iYkr)!Gjr_NPhs%`Vir_NPhr_NMgp.k`d;,I-cpe^rcr)!DhrD<8dr_NMis&&>`r_NDfp/1fc
+r_`Sks%rbmr_NPjpeUi`s%iSjpeq,js&B"us&Anrs&Akos&A_kqGdDns&K5%<)Zco;[l]&;,L.e
+:eXSU:/"8PrE/kurEB/(q-<l(rE]J2qb[8hs&/ko!DlDe;u0Jm<W#ho<<Z?#;cHduqGmMnqG[Gp
+r`&nrrD`ess(hRLrb_OMrbqgUr,DdYF*%;%G'.tOGB\:VH$Xd`H[L6iIXcluJV&N,Knb>;Ll%"I
+N/`jYOHG]iQ'I]'R@B\:StD^MUSO`aW2ZeuXfen5Za@-K\@K2`]t_A!_SjF5aN;WKc-FY_daQ^s
+f@\d1gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6(?`jPA>/
+`k]3q['R$AY,nY&W2?DeUnsl_U]$nbUApqdUA^c2cHOJTb/q`G`l5p8_ns7*^V7Co]XkYa\$i`P
+Za6sAYck12XT"P>Q@41SS!K"_IY!-*BWS;5V5.R2A7]@aBkqEsAnbpiB4YXbAnH1U^m'%jJ;/rD
+plkW=r/q#BrfQu;qN(Z:qN(Q9r/^c;qiCc;!0-u:r/C]8rJL`7M2;+cr.b0(s+LB*qh4p%p4iU$
+rIk0&qh4s&s+^Q,"bVDXJ:W:NJGk&uK)^B'J:E(HIf+]qIf=cjI/\KlHiSNmHM`!fHN&0jG^'+2
+!."Bd!IK.kH2;dcH2VsfHN&3eH2r<iHN/?lI/\KkHN/?fHN/9eHN&0jH@,X;rHnTnqgABkrd4cr
+It.EIr."Ejs*k0%JUr?%qLSWtrIb'%!/:E,s+^f7M2@+JN/[[prK$c9"d+n/OHG\(P5^[BPQI,9
+Qhd$JRJiQSS+W3[M10l"H?F7HE,06&EHPCZ=oDP&>PVP&?2\+/?i@J4[L9LM['6d<V8U<k`l@qs
+!m&L+r6#)aqp,,cp<`ic!6tJc!6Y8^rQ5,`rbMIKrGDFLs)7pVr,DdYF*%>&s)e<brc`L0H$O^^
+H[L6iIXcluJV&N,KS>/9Ll%"IN/`jYOHG]iQ'I]'R@9V9StD^MUSO`aW2cl!Xfnt6Za@0L\@K5a
+]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\
+q#C0iqYU0hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6(*YY,\7f
+R$X&"OH5B\N/NROMM_:fs+gW/re:B,s+^W0L&-NLcHOJTb/q`G`l5p8_ns7*^V7Co]XkYa\$i`P
+Za6sAYck12XT!_UIp66'F)Yi$?2e=<=+PpNH[8lo=WCOH>[(B7>$5$4=]ea,<ap62H"q5:Ed)hZ
+IXZ_7I._jaI/eQnHN&3iHN/?jHiSNkH2r3hGQ2pcH1Z@\H2i*hGPu[aF9Q`-FE;MFqfVXTp2pFY
+F)q8$o5akN!-%mT!-%pUs)7sVrG_dTrbhXPr,DRPoksbIrGMOMs(q^Ns)%aO!,_UNrG;ONrGDRP
+rb_UOs)7@Dqeu7Is)%^Pp2BtMrbhRN!-%gRrc%jTrc%gUr,D@LqJZFTqJlOUrcA0`G5HC^FT-F_
+FoZabGl;pdHMr3gI/&-hIfForJGt,qK)UE$KE-`!KFW-EEGfZ1BkM'iA7B+^=SZ+u>5_\$>l@t,
+?N+=/NW4q:M?J`iL4t$SPl-gGPQ@&9nsK<B!1NeSs-`qUqO%;KrKdMOrbMIKrGDFLs)7pVr,DdY
+F*%>&s)e<brc`L0H$O^^H[L6iIXcluJV&N,KS>/9Ll%"IN/`jYOHG]iQ'I]'R@9V9StD^MUSO`a
+W2cl!Xfnt6Za@0L\@K5a]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N\UjQ5OekiqBum-O--
+n*fc9o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6'dPBkCdY
+>?P'/<W5tt<<?-"<;ohm<;fhq<%CsJ<)lq!<mJq4bK@rJaMu3<`5BI.^q[Us]Y(hd\[T#U['R*E
+Yct=5XfVM$'N6A.3]8iM/LrJ,0/l3`5!;"q6::`=s$7Dc5<_=t5<qG!5Wq7l5!VY6:/Onf;cN`p
+r_ibpoi(uk;GmBhr_ibpr)3Pn!)ibmrDNPlpeprerDNVn!)iYjs&&kr;Ya2h;?9]or)<Mks&&bn
+!`N&toi2#l;uTYo;#a>j:^'Wk;,L.dr_Enu;,L.c:Jak`:Jame;>F&b;$'Qk;=[Q^:B4/e:]F2i
+:]4&f:]F8h;$]uo:JOY\:JO[a:]F2i:]=,_:BF?i;#=&_;#a>g;#a>i;#*uf:]4)i;=[Q_:]!u^
+;>sDj;>a;m;,I6fs%rJdrD*Ag!)WVkq,75ks&B"us&Att"&r9"<;f_t<)Zaqp/CferD`o"<E/]k
+#uFJr:f(%c:.n1X8c_=^q-!Z"rEK)&rE]A.ra5P!r_`\ns%rkp92eaf;u9Pn<W#ho<<Z?#;cHdu
+qc*Vqr_rYm!*0"ts&8kq!*0#6rG;FLqelFPs)@mU!ci@'rcJ0_!-\?cFa/1WH?spcI=6QoJ:N3&
+K7ei2L51SAMMmFQNfT9aP*;/rQ^F20S"6.CTqS6WV5L8lWiW>+Yd(OA[^N]V]=bhl^r!t,`Q-'A
+bKS5Vd*^:keCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6Nl
+rUg)?s+14%s*t~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6(?`k24b7
+a2,I!['R$AY,nY&W2?DeUnsl^UA^eaUApqeUAU_aTH_S%aiMQC`Pod5_SO%&^:h1l]",A][^NTM
+Za-g>YH=q.X8\G<IXe&YPDb'AIt35bXJr+rU77R:O(Ms<CM7<mBkV*kAn>LbFaTFKd<U4lLQ.Gj
+PPUIAOoLUDOnb%7O8b1:O8P+;O8P+:O8k4?NW+n7N<"q9MZScmM#E,,LAci+K`6]'K`$PtLAuu+
+K`6W$K`6]*LAuo-K7a&Qrdarurdt0$!e>cMr-nNm!.OoqrHnTnrI"Tkrd4]mrd+Hes*FZi!I/hf
+GlN'cHN/<pH?ja\H2DjcH2`$hH$]I8!IB+kH2r<iH2r<kI/\KkH2r<fHN/9eHMr-hHiJBlHiABm
+IJ\EkIK"TqI=?\DJGjukJGt$#J:W6$qLSTsre(0&s+UK-s+gW1s+pi8Mi<YpNWG3$rf?r<!0R/?
+s,dAGOco^-qiq,G!LB)OQiNKPR/NHPRK/iLRLYgIJU;ciGB7_@Df'0*G5>A?>5_\$>l@t,?Me+/
+[h#pV[^NTN['6d<V8U<k`l@tts2Y5_b5BE_c25f^chYrfcN)5gb5f]`ao0B[C]/)KD>S5NDuO_S
+E<:0%F8g:]FT?UaG6)r6rd&L0I!pElIt3'#K7ei2L5(M@M2R=ONfT9aP*;,qQ^F20S"6.CTV8-V
+V5L8lWiW>+Yd(OA[^N]V]=bhl^r""-`Q-'AbKS8Wd*^:ke^i@)g=k?<hV[8Mj5]4_k3(smlKdg'
+mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HkrUg)?s+14%s*t~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6'sUk,Y>M
+R?s2%OcPK]N/R[ms,$`2!/LQ.re:B,s+^`3Knb>9rJ(<*,0S-NaN2B?`Pf[2_8*h"]tD"h\[f5Y
+[^EHJZEUR:Xf\\*rdb#T/9l,OBOP7V@UrJiIXQQgF`VM==]ej4>?Y-4=^"s2=BAR3Ap&EmCMe$4
+G^fXA!IfIdI.Vd_I/S?oH$Xd`Hi/9hH2r6iGQ2pcH1Q:\H2i*hGPu[^FT6C^FSg4TFS9hYFE;L%
+F7XGPE<U<"DfBW6rbqgU!,qgTs)7mSr,;LPr,;OO!,q^OrbqaQr+uURCMRa'D>n>OD>\;GD?"MQ
+D>nGPDt%Z@Du";MD>e>QDf5>g")r0rDYe8OE;OSQE;jeTE;X_SE;";JE;stTE<^H)FEDYKG5$.Z
+FoZabGl;pdHMr3hI/&-hIf=irJGk&uJcLB$K)L?$KE-_tKFN6IE,TW1CM.9lARf:aqH<c#rEK)&
+rE]A.qd9;]$&je#MMd4EL4t$SPl-gGPQ@&9nsK<B!1NeSs-`qUqO%;KrKmFtrG;IMqelFPrc%gU
+!ci@'rcJ0_!-\?c!I/nhH>e.XI=6QoJ:N3'K7nr5L5:\CMi<UTO-#KePE_?!R$jD4SXuIHTqeE[
+Vl6VqXKA\1Z*UgG[^`l[]Y2(q_Sa=2a2lBGbg+M\dF-Opf%8R.g>(N@hr*JRj5f@bkNM0qlg4!*
+mdKW6nac8BoCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJcF@%J,~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6'dPk%8%-
+>?P'0<rQ(u<W5ts;u0Jm<W#hr<W?"u<W6#E<E./aaiMQC`Pod5_SO%&^:h1l]",A][^NTMZa-g>
+YH=q.X8Z)u.2Y''1bgU5/M8Y56:!e!4?PVa2aThr5sRX55Q3nW5sRV"4$GW(:/Fhd<)`cqs&8ko
+!)rPis&/nqr_`\ls&&epr)3Pn!)ibmrDNPlpeprerDNVn!)iYjs&&kr;Ya2h;?9]or)<Mks&&bn
+!`N&toi;#jr_`\ls%iVj"]%rl;,C*g:]=2s:esk`:esk`;#X>f;#4#j:f1*g:]OAe;"mcb:B+,g
+:B"&h;#F2i:]F2i:B4/h:]F2h:]F2_:BF?i;#F,`;#X8g;#a>i;#*ri:esmc:]OA_;#X8g;"dcb
+;#X>i;?9WkrD*DipJ:`_s%`VkrDEDhs&8nrs&K(us&K"srDN_r;uTbi;u0Jm<<?3#<:s2i;ZBQ"
+;,9t^:.n2O91/PYrEB/(q-<l(rEfA.r)!Ais&/ko"&MWh;Z9Vl<;onq<;]bq;Z]p!<r5ks<;ohm
+;ufqt<<#nq<;^P1D#S;KDZ=YSE;abXEcZ=$FT6I`G5c[dG^9:7DgQk[I=?ZrJ:W?*KS>/8Ll$tH
+N/WdXOHG]iPa.T&R@9V9StD[LUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_o0O7aN;WLcHaeadaZgu
+f@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4)sHJJk2t=A
+aMYa&['R'BY,nY&W2?DeUna`\U]$nbUA1G]T`(KYaMu3<`5BI.^q[Xt]Y(hd\[])V[Bm3FYct=6
+XfSS'Q\0^$U77@$JpW'%LhEihV5BuXS<f4mKSG,,B4tskAnG[dA7oqH]8aOPJ;&f@ooo-5r/pc9
+qN(W9qN(T:r/^c;rJq)AO,f6[rf$c7s,?r8!fDhjrJ1<*rIt9)re:9'r.Xj!s+UE)re(-%rIt9+
+s+CE*K)L9"JGt,uK)^B'J:E(HIf"TpIf=coHiSTnI/\KlHiSNmHMi'gHN&3fGlN'bH3S_BH$OX[
+H2DjdH2W!fHN/6lH@(#<H2r<iHN/?lI/SEkHN/?fHN/9gH3&A=rcnNjHiA?jI/eWlI/\QoHie_F
+J,FipJ+eEmIft:QJUi:JJc(-"KDgK&L&Zo-LB`QkM2I4LN;AP7O8G"=Oo(7?OTgo1P*2#mr072G
+"dYLAR$a6=R/E?QR[Nf:&=]2\Oaqk.H['^QD/O*'DnPsMrEB/(q-<l(rEf>-rjN6C\$i`Q['['A
+YGM6:rl4rXs2Y2^qo\uaqp+o]r6PPlcHXT4b5f]`ao9H[C]/)KD>S5NDuXeTEW:(ZF8g91F`qqP
+GBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG
+\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8Bo^qhL
+p@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4&Er<?k2rP4
+R[9>(OcYT_N/R[ms,$c3s+gT.re:B,s+^T/r.P9.Knb;8rId=daMu3<`5BI.^q[Xt]Y(hd\[])V
+[Bm3FYct=6XfSS'J7;hdH#mk7?sR5OAQ=>3H[0jZF)c&/An5@X>Q.b9>$4s/=BAmNLin\pDfKoG
+r-n`rII_dVHi&3jHi/3hHi8<lHi86oH$FOWG^0.3o6C:\s*+NfrH8$[s)S0^qfVXTp2pFYF)q5#
+oQ'tO"`SBuE,T^pDu+GQDuOYPDu=SPDuFPRDu4GNDuFSOD$4ZjCM[kdD#8,KD#eDND>nGPD>nGQ
+DsqT@Dtn5MD>eAGDuXeVDYe;OE;OSQE;skUE;X_RE;";KDujs!qJlOU"ES[-G'<V&s)nBdr-80c
+rHeEhrd=Hgs*jorrdarus+16%rIXs"!JH*sKF`ckIrfRIDf0?(BOt[`A=36srEB/(q-<l(rEf>-
+rJ_,BMi3ILLk^Y<I/]B.Q2[!JQLU@>R/i]QRfJoVRJWBOQN!6JC]/)KD>S5NDuXeTEW:(ZF8g91
+F`qqPGBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE[Vl6VqXKA\1
+Z*UgG\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4&Er<?k2p,Y
+>?Y-1<`N*u<E9#tr_rVls&Jtrs&K(us&K&!s&K(u:fYTV`Pod5_SO%&^V.:m]",A][^NTMZa-g>
+YHG"/X/],L.5<kA1GCC2/MAb85s[_"4?Y\a2`*9H0ebgW5!D4s5sRUt4$Gl!8kr5[;Gm?ks&8ko
+!)rVkrDW\nr)*;gs&8qqr_`SkrDWJhqG[>jr_iepqGI8j!E2nl;>sGo;c<Nlr)3Plr_ibp!*&Vk
+s&8nos%r_k$W'\s:Janc:f'q`;#X>k:]F5k:]=2i;>F&c;?'Jm;>j;k;>3o]:]=)h:]4&f:]F8h
+;#jGl:]F2i:B4/h:]F2i:]F2_:BF?i;#F,_;#a>g;#a>i;#*uf:]=2j;=[Q_:]!u^;>sDj;>jAn
+;,HdYr_EJh!)WSjqbmGmrDWo"<)cjtrD`_oqc*So!)iYlpf%;p<)iBd$rBf!;GU+b91qiK92>@e
+rEB/(q-<l(rEf>-r)!Ais&/ko"Ah`i;H!Kmr)EYqr)EVp!*&qr!`W3$qc*Vqr_rbp"'&<"<W5tt
+;uTbnC]/)KD>S5NDuXeTEW:(ZF8g91F`qqPGBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEd
+PE_>uR$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWA
+i8EVTj5oFckNV6rlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroOgS
+ai(p)[Bm0DY,nY&W2?DeV#@%gUAgkbUA1G]TECgXT:c(R9>n`b_8*h#]tD"h\[f5Y[^EHJZEUR:
+Y-"e+Wi:JsBUkHOL4au.K4SYsW26;_R[TJ%M2-k:I!^U&LPh"HMi3U<SAhRSI=I!0Oo(=<PP:7;
+OnXt7O8k7:O8Y1:O8b7>O8b1>NW4t7NW4t:MZScmM#E,+LAlo,K`6]'K_pJtLAuu+K`6W%K`-W)
+LAuo-K7a&Qrdb!!rIY'#!e>cMr-nNm!.OoqrHnTnrI"Tkrd=Zjr-A<grd"Eds*=Hes*F`lrH\9b
+rd"Kf$$giCH$O^_H[:#;Hi86jHiAEjHiJBlHhi!fH2MshH[>[:"aYNBH?sr;HiSTlI/\QnHie_G
+J,OoqJ+eEmIft:QJUi:JJc(-"KE$T*K7s5XreCH.s,$c5!fN"sqMkQ:r/_/GOH>NbO-#J%OTL]0
+PPg[DPm*J?R$a5,rg<\Q".5LFRIcjISGo&gR"Kg9H?XLRD/X<+CR4m$rEB2)q-<l(rEf;,s'Yl9
+$F[FP[^EKLYct=-rl"fUrl>&[!6P,]!6tAcp!<Wa!RK'jbl>idb5KE^b5#iOD#S;KDZ=YTE;aeV
+EWC1[FT6I`G5c]&G^4U]H[L6iIXcluJV&N,Knb>;M2@+KN/`mZOckomQ'Rf*R[]h=T:qsRUnsuf
+WiN5'YHY==['mHS\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(sml0@X%mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroORL
+S!]M+P*(fcN/R[mreU]4LPPk`re:B,s+^T/pP&R!rI[:c`5BI.^q[Xt]Y(hd\[])V[Bm3FYct=6
+XfSS'WF'"4FDu#+@:3ST<E4X"H[BsXF)Po-ARo4V?>!k_BP@?Y$"8"<KP>@DF*E!0IfFosIe.sX
+Hhr-iHi89iHi8?kHiJBoH$FRXrcnBeo6C:\s*+NfrH8!Z!HWA[FnTqOFTQZ+ErC(OErU+_E,TZ6
+DfG\oqJcIQrbhXPr,DRPrGDURr,2FNrGMRNs(q^Ns)%aO!,_UNphg"Jrb_[Qrbq:DqJZ1Is)%[O
+qelIRrGMdWDf0IhDZFbRDuO_TDuO_SEVseLEVaVSEr'eUEWgH*F`qs&FoQXbGPudbH2W'fHi8?e
+I/n`oJ,OosJcC?%Jc:9#K*-^XKS/lL!/:E,#D@2=DfBN/C&V`E@fUuU=oDP'>PVP&?2\+*?iOO5
+N<tQ%Mi*@IL5(D0rfm>GrfdDKnX03AqO7JRrL*VO".,=>QhbFqD#S;KDZ=YTE;aeVEWC1[FT6I`
+G5c]&G^4U]H[L6iIXcluJV&N,Knb>;M2@+KN/`mZOckomQ'Rf*R[]h=T:qsRUnsufWiN5'YHY==
+['mHS\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroORL
+>?Y-2=&i4!<E9#ts&8Yk!*/qrr`&qtr`/u!s&K%trDbhq_ns7*^V@Ip]XkYa\@/iRZa6sAYck43
+XK/A#-n-l12DHm9/M8\81-n,g4Ztnf3]ArR0etF9qDAR92EX2j9MA5Y;YF&g;?0Yi<;TVo;Z0Jl
+;?0Yp;Z9Vp;ZBVl;Z0Ph;Yj>i;ZBYq;Yj8h;Ya2h;?9]or)<Mks&&_m!E2tj<<6&tr_`\ls%a#!
+;,C%b;,L.d:JXgd;>sAk:]O;j;#X>f;#=,i;#aDk:]OAe;"mcc:B+,g:B"&h;#F0!:esk^:/=Y\
+:/=Y\:B"&h:A%Ba:f1'f:\IWa:]+&h:]4,c;$'Qi:]4)i;=RK^:]+&_;>sDj;>a;l;#F)h;"d]b
+:B+,i;#O8g;ZB\o;ufqt;ufqs<;f_u<)lpt<;ohr;Yj>h<!6-!<E)re;[l]);Gg7e:/">U91hfL
+r)ru%r`f2'rE]A.q-X/0rD<Jjs&/ko"Ah`i;H!Kmr)EYqr)EVp!*&qr"'&B&<;]_r<;ohp<<#r#
+<)lmsr_ierq.oqFrb_OMs)7pVrGhjX!-A-]s)e<brc`4(H$Xd`I!pElIt3'#JqJ]0L5(J?M2I7N
+NK9-_P*;,qQC+)/S"-(BTqS6WV5L8lX/rG,Yd1UB[^WfX]=bkm_8=+/`lQ6DbK\>YdF$Fme^rI,
+g=tH>hr*JQj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroOgS
+jMepH\$NBFYH=h(W2HJfV#@(gUApqcUA1G]T`:YaSc,/YSO^K1^V.:m]=GJ^[^NTMZa-j?YHG"/
+X/`.tJ8(L>NJ3"7J;%X8XJVegSsu(2O,/LDJ:2m"LPUeFM2R@KJ=i[jH%1O&N03t"rKHl:plYB6
+r/^i;qN(W;q2bN:rf@&=rf$o:qMbK6regl9M26ueL\li*L&Qc*L&?W$L%g?%L&Qc(KDgK%L&Zl1
+KnP,3K)L6#JGausK)^B'J:E(IIenNoIf=coHiSToI/\KkI/SBhH2i3iH2W!eH2;gkH[:!`G^4T3
+GlE!fGR/S@H?jd_H[:#:Hi86jHiAEgHhi!fH2MsgHi83jH@,X;rd=`or-\Klrd4cqIXh9GrI=Nk
+rdXs!rdalsr.=s$!ec2YrIt9+s+gW2re^u>NK0!YNK0!Yrf?r<rK$u?rfI8FPEYp/rK[DK$C@-H
+Q^F,+R$jA0rL*>I!LoVXSIV6]ML^,$G'7qED/O*'DuNo<>5_\%>l@t,?M\%-@/jXC\$icS[^EKM
+Yct=,rl"fUrl>&[!6Y2^!6t;ao?RK`bfp(0!6Y8^phThErb_OMs)7pVrG_mZF*%>&EclPKGB\:W
+H$Xd`I!pElIt3*%K7ei2L51SAMMmFQO,oEdPE_>uR$jD4S=Z@HTqeE\Vl6VrXKA\1ZEppH\%0)_
+]Y;.s_Sa@4aN;TJc-FY_daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqYU0hr;HTdrdk*#s474#~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroORL
+jHu:!PEM#fNK!gnre^W0rItK0L5(J=LA-E#K`$K$JOdMj^V.:m]=GJ^[^NTMZa-j?YHG"/X/`.t
+?WM5eBk(U[@:N>gJUMfhGBInECM%-g?sd;RB4bgiBPD0jBR+s%D/O?9GCBC<s*t#s!.FKenU(.\
+rHnNis*O]lrd4Zk!."HdrH\!Zs*=Whs*+HbqfDm\FEIG'p2p%O!d&L(rH%UOs)A9_DfBZ6E,T[j
+E;skUDZ+MNE;XYQD?+VQDZ"GODZ+DUChmg&D/K8g!,_XOphftIrb_[Qrbq:DqJZ1Is)%^Pp2BtM
+s).[Os)@mSrc%jTrc%dTrG_IMqJZITEr0kVErU1`FEMbLFSU(ZG5c^aGl;pdHMr3hI/\NoI/SHn
+If"WoJGk$#Jq8LOK)^H'K)L>oKE-`(L(/iZE,]`5CM@EnAn5C_r`T2'rEK,'rE]A.qHs2/s'bqe
+$&je#MM[.DL4t$SPl6mGPQ7$>R/<<JRfJoVRJ`ERQ^3s4C]/)KD>S5NDuXeTE<:0%F8g9%F`qqP
+GBeCYH?spcI=6QoJ:W<)K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V8StD^MUSOcbW2co"Xfnt7Za@0M
+\[oGd^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07O#m-X60n*olHncA@Srq-?d
+p\4[^s7u]kqtpBjrVcBfJcC<$f)L7~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroORL
+jB>\g=B8F$<E8us"]JB#<)clk<;BPo<WH.u<;KTb^q[Xt]Y(ke\[])V[Bm3FZ*:F7XfSS'WMh7!
+2Dm6C/M&M,3'ono5!;%j3&iiR1bg^<0JkXE2Dm<K2(C^P2c*4F;Gp@ip/Cuhs&8\lq,78krDESm
+r_iepr_rPhr_rSiqG[;is&/nqqGI/gq,./iqG[8h!)`\m!E2tj<<6&srD<bq:JXea:f.-gs%r_k
+!)WYls%iVj!)NSjr_`Yk!)NSjqGI8hs&&_k!)`JepeUlas%iSgr_NPjr)!\q:JX_\:JXab:]F2h
+:B4/^:]F8h:\IWb:]!ug:]4,c;>sAj;#aD`;#X8g;"dcc;#F2h;?9WknPB0[s%iVjrD<et;,U7h
+;H$Ne<;f_u<)lpt<;ohr;Yj>h;ufkq<:3Zk;Gg:h:f1"`9M>=Vr`T2'rEK,'rE]A.qHs2/s'bn'
+r_Wr!;c-Cg92e_dr_r_or`/kqrD`hsr_ir"<`N*urD`hsr_rbprDiksr_rT-rG;IMqelFPs)@pV
+!ci@'rcE1'G'8(RG^4R\H@($fI=?ZrJV&N,KS>/9Ll%"IN/`mZOckomQ'Rf*R[]h=T:qsRUo(&g
+WiN5'YHY==['mHS]"G\i^VRe)`Q$!@b0/&TcdC1ieCN7(g"P3:h;@/LioB+]k3(sml0I^&mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4^R
+jQ+.j\?rQGYH=k*W2QShV#@(gUApqcUA1G]T`:VbSt,bMs.'(Z8"?'<]Y(ke\[])V[C!9GZ*:F7
+XfSS'WMl_lS<8haJ:N6*B!/24VPTiPQB$u_KS+f%I"d<2Ll7+KNJaLMOHb*CKo(hRPPLC@POjt3
+Oo(7<O8b.CO,f9^NfO+"s,d/>"-/G'OSt7?Nr=q;N;AM6N;e_;MM[1GreLB*re:?)s+UB(qh=d!
+s+UH*re(-%rIt9+"GMM^K7a&Q!.b'"!J5n$K)^B'J:E(IIenQmIK"WoIK"WnHi8?jHMr-hHN&3g
+GlE!aH3/G>HN&3eGlE!fGQ<$gH3AM>I!^2<Hi86jHiAEgHhi!fH2MshH[>[:!IB+lH2r<kHiSTl
+I/\QnHiebHJ,OoqJ+eEmIfY(Nrdalsr.=s$s+CE*K`-W)L'!-dM>iA5Mi@Ll!07&>!K`BAOSt7?
+OSt=APPg[BPl[5=rg*SN#FLpIR$a;/RJ!$KS,JoXT)YDmNIZA&H$==LD/=$'Dcp6B>5_\%>l@t,
+?MRt-@/XO5\,Wl<[C!=?YQgoA`5T^8`r=$Ya8jB\b6#o4c2#ZVcN;D9bl5faanKTLD#S;KDZ=YT
+E;jkWErU4\FT6I`G5c]0G^4U]H[L6iIXcluJV/T.KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTqS6W
+VPgAmX0&M-Yd1UC[^WfY]Y2(p_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*
+mdKW6nac8Bo^qhLp@e7TrqQNhs8)Zjrqu`noDX=@JcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4LL
+jQ)YnP`h/hNJrepMZ/G4M#N2,LB!#/LA-E#K`$H&K)C3"K)`J9]=GJ^[^NTNZa-j?YHG"/X/`.t
+Vl"NOC1CX[@UiGjJ:2ciG'%\>C1q-f?sR.=B)cKPBPM6qHB35uD/XH=HMW*iJ,artIIhj]HN8Hk
+Hi&3gHiJElHiJHuH[L3fH[:!`qfr-d!I/n]GlN'gGQ;seFo-7^F*)O%FnTqOFTQZ+ErC(OErU+a
+E,T]7DfBW5q/H@Ps).aQqf)IOrbhaSrGMLNrGMRN"DhjhCi0,eqel4HrGMRN!,hdSn8A)@q/64L
+r,24H")r0rDYe8OE;OSQE;jeTE;aeSE;";KDujs!qJcd]F)uGGG'8"MqK;g]rce9brH\?frd4Tk
+rd=corI"Zpqg\Qp"+buRK)U?#K)^K'K)UDoK_gE6KmRfYE,KN.B4kge@qAeGr`]8)qHWu)rEf;,
+ra>\5rf-r9!fDhjre:K%Q'D33rKI;JnX06B!1NbR!1NnTr0RMOQM51nD#S;KDZ=YTE;jkWErU4\
+FT6I`G5c]0G^4U]H[L6iIXcluJV/T.KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTqS6WVPgAmX0&M-
+Yd1UC[^WfY]Y2(p_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*mdKW6nac8B
+o^qhLp@e7TrqQNhs8)Zjrqu`noDX=@JcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4@H
+jQ'HG=BAQ&<Vobq<<?-"<VKJg<W6#!<W5tk<WB]K]=GJ^[^NTNZa-j?YHG"/X/`.tVkuC01B&g@
+/MB"M5s@Ls4?>J^2Dm6E0eY4;2)R<Lr\Y'<3'To,:/Xnc;H-Wp;u9Jm;uTYp;tj8f;ZK_n;#jMj
+;tX&g;tj2h;ZTcpr)3Pn!)iVis&&kr;Ya2i;Yj>h;?0Sm;?9]qoi2#l;Z0Gs:esnb;,C*g;?'Jm
+:B45j;?'Gk:]O;j;#X>k:]O;j;#4#h;#X>k;#aDe;#X5j;#F,g:&n)g:B"&h;#=)t:esk^:JX_\
+:JX_\r_EMhoM>H_rD3,`r_NGgs%iSiq,%2i:J^pc!)`;`r_NDfp/1fcrDEMk!Du\_:BF9e:]=2c
+;?'Po;ZTirpf.2j!*&qt!*&qrs&/Ykr)E\pr`&;a&QDb1;G^1e:f1"_9M8#N7p0!o>5_\%>l@t,
+?MRt-@/XO5;#X;m;H*Ql!D?Aj;ZB\n<;onr<;]_r<;oet<E<-!<;okt<;ohp<;fhs<<#nkC]/)K
+D>S5NDuXeUEW:(ZF8p@^FT?UaGB\:WH?spcI=6QoJ:N3'K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V9
+StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^V@V%`5Ta;aihlPcHsteeC<($f\5'7h;7&IiT&tZk2tjj
+l0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7u]kr;6KkrVc?eJcC<$f)L7~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4^R
+jQ,@]\[AcJYH=n+WMcViV#@(fU&^nbUALVbTV;@Xs.9FcSXc7AqOIDO4h.r/[C!9GZ*:F7XfSS'
+WMl_lV50l=I=Hj&B<A,0VPK`MQ]I/_KS+f%H\I93M2R7KNKoIC\9N@NKoD,mPPLCAPQ$^FOnb+2
+Oo:C>O8b1>O8P%;NrY:?O8b1:O8k4CNK0!XN;AM6N;eb8M?/QireLB*re1K.K7nr4rIk$$pP/^%
+re19'r.P$&s+UZ1KS4u0rIFs!rdbE.JV&N+Jq8K'It.EGqgSTprI+Zms*alord4Wl!.4ZjrH\Eh
+rd"Herd"?ds*Ocl!dK!9qfr*crceEgrd"]mH[L0drHnKh!.4]mpj;j`s*=Qhs*O]is*Ocl!.4]m
+!.F`lrdFcn!e#QJrIFfqp430m"Fu&SJ:RNJr.=s$s+LE)r.Y0*s+pW2!fW+tr/L`:s,RPLO-#Ea
+O,o<^O-#J&OT:R@Pl-gEQN!3PR$j<>QiNQIRK/lUSH,8[T+$j4I=-?aFE228D/=.h>5hb%>lJ%-
+?MRt-@/XO5@fNn?[^WZO[/R96Y/J8t`Q#ps`ra?(b5BE_bl,f`cL]?`cHON3bQ#]aCA2NBD#S;L
+DZ=YTE;aeVEWC1[F9-N-rc`""H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEdPE_>uR$jD4SXuII
+U8+N]Vl6VrXfen4ZEpsI\@K2`]t_A!_SjF6aN;WLcHaeadaZguf@em4gtgiFi8N_VjlY^gl07L!
+m-O-=mfi4No()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$ec1.~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4LL
+jQ,@]Q'7>jNJrepMZ/J4M#W81L&d#.LB!#/LAQZ)K`6]'K`6W'K)C2sJhX^C[^EKKZE^X;Y-"e+
+Wi;qpVPU)`@U<MQ@on51I!^-]F)c&3B4PL\?!_,UAnYlWBaJcuO,RgkEH6;Oq0r<ms*jrqpO)[]
+rd=]lqgA0cs*Xin"akZDH?sl6GlN$iG^8n*s*=Tg!-eEbqfDm\FEIG'p2p%O!d&L(rH%UOs)A9_
+DfBZ6E,T[jE;skVDZ"GME;XYRDZ=YRDYnANDZ4MQD#\8OCi0/f!,_UNq/-(JrG;OPrbq:DqJYtC
+qelIRrGMdWDf0IhDZFbRDuO_TDuO_SEVseLEVj\UEH:nqs)J<bFEMbMF`dJ&s*"?brHS9drHeEh
+rI"Wns*XcnqLAKp"+buRJGt,uJc^RVK)UDpKE-`&LAll8Ir]LIDf0B)B4YU`Ac5g3>PVP'?2\+*
+?iFI3@K'a9NW4n<MM[/gL'!'oPl-gGPQ@&9nX06B!1NeSs-iqTr0[M!pM9_Drb_RNs)7pVrGhjX
+!-A-]!HiSbG@u/GH?spcI=6QoJ:N3&K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V9StD^NUSOcbW2co#
+Y->.9ZaI6O\[oGe^VI\&`5Td<aihoRcHsteeCE.%g"P39h;7)JiT&t[k2tjkl0@U$m-Xf@"n;'Q
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14#s*t~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4@H
+jQ,@]=BJW'<W#hn<VKJj<<?-"<W,r"<E)rf<B[k#[^EKKZE^X;Y-"e+Wi;qpVPU)`/hAV-0/l6a
+5!D+l3B9&X1c$j@0/#.=2)d?L1c.-R5Yb!J;,C4jr`&kqqbmDls&&hqq,I,f!)i_l!)iYloMPZf
+pJUuh!E)ko;ZBYq;Ya2g;Ya2i;Yj>h;?0Sm;?9]qoi2#l;Z0Gs:esnb;,C*g;?'Jm:B45j;?'Gk
+:]O;j;#X>k:]O;j;#=,i;#X>k;#aDe;#X5j;#F,g:&n)g:B"&h;#F2j;#a;n:/=Y\r_NPhn5''\
+rD3&^!)NJgs%iSiq,.,e"&Vlk;=RK^:]+&_;>sDj;>jAn;,HXUrD<;es&/kq#?4W$;cH[p;uTbp
+;ZKer<<-"t;u]bk;uBVp;u]h`;uK\r;uTW";Gg1a9M8#N8c;il>PVP'?2\+*?iFI3@K'a9;#X>l
+;uTVp:fI?ks&0#!;cH`p<W,np<<-"t;Z]s"<W5ts<W,kp<;fhs<<$_-C]/)KD>\;ODuXeTEW:%Z
+F8g7^Fa!b.B6\]JH@($fI=?ZrJ:W<)KS>/9Ll%"IN/`mZOckomQ'Rf*R[]k>T:r!SUo(&gWiN8)
+YctF>[C3TU]"G_k^qmn+`Q-'AbKS8Wd*^:ke^i@*g=tE=hVd>Nj5]7`k3)!nlKdg'mJcPXnF?)?
+oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>%H=h'Z*1:2Wi;qoV5:!dU\LS]U&:S`T*1aVS=H/LS-#1MSGJ`TS,f&XRQ.XZZ*:F7XfSS'
+WMl_lV50l\TmqcNB<A,2VP0KLR#m5]L4al#H\@-1M2R:ON3T(Ufm/(#LQ.MoP5LIBOopo2P*,O&
+nWEg4qi:uBO,o<]NK0%pO8Y+:O8Y+=N<"q6N<"q:MuSY9M26ueL\li+K`m']KS>-YK_gDsLAuu,
+K`6W&K`$Q(L'33`KS+mPJc:6+K7\]+JUi6"rI4Wn!.Olprd4]ord=Zkrd4]mrHeEfs*FZirHS?f
+q0E6lH?sj]H$T:3rd"Kfr-ABjI/J?iH2r<kI.hpbHN/9hHN/<lHN&0jH@,X;"FGNDI=;!?s*alo
+!e#NIr.+`qp43-ls+10"qgnZs"bVJ]K7ejUL&Zl/LPUfdM?&S5N!53"NK&sYqN(Z:s,[2ArfI2D
+qNUoCqj.8Ks-WhQrg3\RopYoNr1+OnT:_^HSXG+ZI!KmWE,BQ0D/WT]rEK,'ra#J/q-X,/rF,V5
+s0i->\$`TMricI,`5MYorPnu\aiaP)!6k>brQb#\!mSs5rlY;`rbD1CrG;IMr,2OQs)@sWs)J*\
+rcE+%G'8(RG^4U]H[L6iIXcluJV&N-KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTq\?YVPgDnX0&P/
+Z*UdE[^`l[]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0gYL]Ci8EVTjQ5Oekiq?sm-O--n*fc9rpg*]
+o`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s4.."~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>#3(i0O,]*VregZ2!/UW0#_n+iL5(J=L5,V[s+LB*rIk0&rIXruqL\]t34#oqYck43XK/A#
+W2HMhUnaZX?t<hKJpr,pGB@nHD/!Wm@:*;HAnG[hB5)*oJ9uaECi499G^o:5s*aWhom?^drHnBg
+qKr3hrHnQj!."Hds*4ZjH$T%,s*=Tg"*\p2Fng(VFnTqOFTQZ+ErC(OErU.VE;skPE;skVDZ"GM
+E;XYRD?+VRDYe;MDZ4JVChmg&D/K8g!,_XOq/-(JrGDRPrbq=EqJYtCqelIRrGV^T!cMsoqeuLR
+qeuLRrbqdTr,M[Sp2TqJqJlLTs)S?cG'8"MFSg4[G5ZX`GQW59H$T@7rHnNks*aoprI+NlqLJNq
+qL\a"oS!6uqM+s&%YJkBEGfW0BkCpd@q8bHrEK,'ra#J/q-X,/rF,V5s,I&:!fDhjre:E,qN_&E
+!L9#HQiNKMR/E?PRerTSRf8`RR/UjpC]/)KD>\;ODuXeUEW:%ZF8g9#F`qqPGBeCZH@($fI=?Zr
+J:W<)KS>/9Ll%"IN/`mZOckomQ'Rf*R[]k>T:r!TUo(&hWiN8)Yd(O@[C3TU]=bhl^r""-`Q-'B
+bKS8Xd*^=le^rF+g=tH>hr*GPj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWm
+o_sFAJcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>"6*Ea<rQ+t<<#qu<rH%o<;T\q;ufqr<rQ(f<W5oUZa-j?YHG"/X/`.tVl$;dUS=G60/#1K
+5X.Fq4?5G_2`!6D0J>(91c73K2)R9O4Z?;6;,U7hrD`_o!)ibms&/kqs&&hqq,I,f!)i_l!)iSj
+lVd^\!`DrqrDNYos&/\jr)3Pl!)ibm!)iVkqbdDkrDEYp<:s5l;c<Qk##J)l;,L.dr_`\ls%`Vk
+r_`\kqG@/gr_NSjr_WJhs%r\lr_NSlp/(`a!)WVir_EJhrD*Agr_WMis%ikp:/4S\:B"&h:@V-Z
+;#X8X;#a>i;#*uf:BXKk:f1*\;#X8g;"dcc;#F2h;?0S]:]+&b;#jMg;uTbp;ZKer<<-"t;u]bj
+;uTbp;ZKe`;ZKep<<,ts;$p6!:esbW84uNX>5_\%>lJ%-?MRt-@/XO3@fK:(;?'So;#sKlrDNYp
+!`N&tr)N_qr`'#!<E/rr!``9$rD`esrDW\pr)E_rrbD1CrG;IMr,2OQs)@sWs)J*\rcE+%G'8(R
+G^4U]H[L6iIXcluJV&N-KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTq\?YVPgDnX0&P/Z*UdE[^`l[
+]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0gYL]Ci8EVTjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;HTdrdk*#s4.."~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5FIGZEUI4X/W"pV59u`rM0.^rLs7a#+qQ]T:VXFrgX._S=H(<SGJ]TSGo#RRPV(IX/`.t
+Vl$;dUS=HTT:TbuVPU)^R[0.rMM6b7H?t:"LPUeDN/MJE]9/D,JVArAPEYj+r/puArK6o=mu[U3
+qMt`=O,f8"N<#"8O8Y+9O8k7?NW4t6N<"q9MZ\inLku%cqhG-)"GDD\KSBAXqM"Zus+UH*re(0&
+r.Y0*"bhV_K7\^OJc:6$KDpH'JUm`LrdO`o!.Olprd4]ord=Zkrd4]mrd+Ngs*FZircnBeq0E*h
+H@#R9qfr'bs*+NhrH\KkI/A9jH3/G>HiAEbHiJElH2W'gHi86iHiJBlHiABmIJ\EkIK"TqIXckG
+JGaokJGt$!J:[]MqgnZs"bVJ]K7ejTK`d'bLPc"f!fN"qr/CZ8!06o:rf7#>s,d8C!KrZCPl6mE
+QM[$IQiNQJRK8nJr1+RoT:_^HSXl@AL44PsG'7hBE,09.>5hb&>l@t-?MRt-@/XO1@Kp>O[^WZO
+[/R92Xi/0W`VmgYaN;U&b5fc`c2Q#ZcN;A8bl5faCA2NBD#S;MDZ=YTE;abXEcZ=$FEDYKGB\:V
+H$Xd`I!pEmJ:N3&K7nr5LPUeEMi<XVO-,ThPa.T&R@B\:StD^NUnjlcWN*&%Y->1;['mEQ\\#Mg
+^VI_(`Q#s>b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssf
+q>^<hqu6NlrU^#>s+14#s*t~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5F7AOH,9XMi.Cg!/UN-!euJcreCB*re1<*rIk-%rIXruqL\`u!.t-"+0DWFWi;qpVPU)`
+U7n6PSl^JjH[9pXEGfN(AR](S?2J7DC2$UkLj"5bDfU#HIt.$<s*aWhom?^drHn?fqKr6irHnQj
+s*=NercnNhH1Z@\H2i*kGBS+OpiQFVp2p%O!d&L(rH%UOs)J'X!-/!Ws)7^Ps)7pT!H2rVDu4MO
+DuOVSDuFSMDuOYQD$4ZjCM[kdD#8,HD>\;MD#eJPDt.`ADtIrEDuXeTDZarsDJo;h!-%gRrc%jT
+rc%gUr,DCMqJZITEr9qVErU1aFEVhMFEID&rc\6aqKW$crd+NirHnTnrd=]n!.OcoqLJQrqL\a"
+oS!6uqM+s&%u,jmFE);=DJNouB4GI_>5hb&>l@t-?MRt-@/XO1@Kp>%Mi3ILM#N,/L&.)6PQ@&9
+pm;&Jr0[AL!1NeSs-iqTrg<Y!pM9_Drb_UOs)7pVrG_mZF*%>&FEMbNGBe@XH?spcI=6TqJ:W<)
+KS>/9Ll%"IN/`mZOckomQ'[l+S"#t?T:r!TUo(&hWiW>*Yd(OA[^N]V]=bkm^r"".`lH0CbK\>Y
+dF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`noDX=@
+JcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5F(<=8c,'<)Z^q<E<0!<VfYq<EB&ur_rktrDiu"<)i?e!*&hos&:kXXK/A#W2HMhUnaZX
+TV%f65s@Iq5!1ea2`<NK1,(@<2)R3K1c7*=2*OK':/Fbb;H$Ln<;]\p;Z9Pi;?0Yl<;0;k;Z0Gm
+;YO,e;?0Sb;Z9Sq;H*Nlr_iepq,.)gs%rborDESmqG[8h!)`\m!E2tj<<6#rrD<bq:Janc:f.-g
+s%r_kr_W_n:J^g`r_`MgqbdAir_`Yk!)`Gds%`Vkr(m;e!)NPgr_NPjqbdAi#u=;l:JOY]:JO[S
+:]F8j:[M!Y:]+&c;$'Qi:]4)i;=RK_:]!u_;>j>i;>jAn;,H[Vr)!/cp/CujrDN\qr`&qtr_rhp
+pf%/ks&/ts;cN*^!*&hq%TZM);,^:g:eaYX84uNXr`f5(rE]D/q-X,/rF,P3!Fnt*;?'So;#jGj
+;ZB_r;ZKep<W5ts<<Z?%<)Z^pr`/nr!EE+u;uK\n<W-\,C]/)KD>eAPDuXeTE<:0%F8g9'F`qtQ
+G^+L[H@($fI=HctJV&N-KnbA=M2I4MNK9-_P*;,qQ^F21S"6.CTq\?YVPgDnXKAY0Z*UgG[^`l[
+]Y;.r_Sa@4a2lEHc-FY_dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\
+q#C0iqY^6ir;HTcrdk*#s4.."~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F=Ci308aX/`(qrhTUjrM0.^rLs4`s.B=_s.0%W"e1sLS!ofAS+rHNR4P;7VPU)`U7n6P
+St;IAV59`OQB[DcKS4o'H\R92MM[.IN,=okZZpkLLPq>pPQ$a>OoLU@Oo1C1OT:L=NrY4<NVSY6
+Nr4t<NrP+=N;AM6N;\Y:MM[.FreLB*s+LT/K7no3rIk$$pP/^%re19're10&s+U]2KS4r.K):,t
+JcLH&JcUFQrdXrsqgSWsIf4]pI/eWoI/\KlI/eNpH@'u:H2i3iH2`'fH2`*tH[:!bH@(!bH?a^\
+qfr'bs*4Kgs*F`nr-SEhs*O`moQp[dH$Xc7HN&6kHN&0jH@,X;rd=`or-\Klrd4cqIXh<Hr."Ej
+s*k0%JUr?%qgnZss+:H-K7ei1r.P</LPUeEMZ/P2N!,-#NfT5"O8P%<Ns(Q,Ockq)Pl-gDQMQsJ
+QiNQJRKAtKSGf#YScPITrLFOlT:CjhI=$0]Ec5l2C2e?#>P_V(?2\++?i=C3@JOC4@g0?M\$`WN
+ricR.`5KX6`r=$Ya8sE*r6#)aqp#,co$7H`bfn8Rr+btArbVRNr,2OQs)@sWs)J*\rcA0`G5c]-
+G^4U]H[L6iIt3'#JqJ`1L51SAMMmFQO,oEdPE_?!R$jG5SXuLJU84W`Vl?\tXfnt6Za@0M\[f>b
+^;%M$_o9X:ai_fOcHjndeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jme
+q>^<hqu6NlrUg)?s+14"s*t~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F.>i/WfrMu/A2M"ui)LAlo*K`?`-KS+sVKDgDuJbjulJJtJbVPU)`U7n6PSt;IAH[9jW
+E,TN(ARo1T?2eIHBP2!mBjPq<M/$pIFEi65J,XopIJSElIJA3_HiJKlHh`!bHN8HkHiJBlH2Mpd
+Gl`/8oQ^@\s*+WiG'.s&FSp:TFSBnZFE;L$F7aMQEW9tXEW0qWDu"APDuX\WDfBW5qJc@Ns).jT
+rbhOMrbh[O"DhjhCi0/f!,_UNs(qaRrb_OMrG;OPrGV7EqJYtCr,;USrGV^Ts).[Os)@mSrc%jT
+rc%gUr,D@LqeuRUEr9qVErU1_FEMbLrcJ$[rc\6aqfr-drHeEhqL&9j!.OcoqLJNqqLS^"oS!3t
+qM,!'s+V,@LkKnjE,KN.C1q6k@q04W>P_V(?2\++?i=C3@JOC4@g.jMMi*CJre:N/Q'I[6Q2[!K
+Q'_95s-N\Oqj@GQqO7JRrgEeRr+btArbVRNr,2OQs)@sWs)J*\rcA0`G5c]-G^4U]H[L6iIt3'#
+JqJ`1L51SAMMmFQO,oEdPE_?!R$jG5SXuLJU84W`Vl?\tXfnt6Za@0M\[f>b^;%M$_o9X:ai_fO
+cHjndeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+14"s*t~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F(<i;HX[<)Z^q<E<0!<Vf\o<rQ+u;ufqs<WH/!<:Nuf<;ohp<<#ns<#V^5VPU)`U7n6P
+St;IA5!M.j3B9&V1bga=0E*g@2Dm<K1dXDl9MA2Y:f:4i;H*Qo!)renrDEGi!)r_npJV&ir)!Gl
+pJ^re!)`>cr_ihq;uKVn;ZK_k;>jDm;#jMl;#jMj;u9Gm;>jAn;cNEi!E2np;$Kim:f1(d;#X>l
+:]X?gr_W_n:J^g`r_`\l!)NSjqGI8hr_`\ls&&Jds%`Vkr(m;e!)NPgr_NPjr_X/';,L.d:JO\]
+:/=\^:/:=Tr_WVjmnj$[!`2ZgrD<;er_NMis&&>`r_NGgp/1fcrDEMk!Du\]:]!ua;#jMf;ZKeq
+;ZKer<<?,u;uT\h;u]eu;c6NY;u]ho<<H9';,[?i!`2Zdr^m8`6sEml>lJ%-?M\%-@/aU1@fKpA
+:f1(d;cEZm!)WVl"]JB";c?Zm<W?%t<W?%t;ZKer<W,kt<E/rr"&r9"<;fhpCA2NCD#S;LDZ=YT
+E;jkWEWC1[F9-N-rc`I/H$Xd`I!pEmJ:N3&K7nr5LPUeEMi<XVO-,ThPa.T&R@B\:StMdOUnsue
+WN*&%YHY:<['mHS\\#Mg^VRe)`Q$!@b0/&TcdC1jeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3
+nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcF7"J,~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5F@Di8C`=X/`(qVZ*FjU\UY^U&L_bTDtJ_SbeiVS,8ZNS+rHOR4NiQL4H+rUS=HUT:VXE
+S"#h:S!K%nLkLJ4H[^['MMR1HN/_h9b0kN`KSkcePQ$a4Oo1C2OoCI=O8Ot;Nr"h8Nr4q<NrG%<
+N;AM6N;\Y8MM_=gs+gK+s+UE)!/:E*q1\Qtre:B*re(3'qh>')"bhV^Jq8ONJbam%JUi9#IsukE
+J,WCD;ufkq<!cQ*='/U-='&a9rF#J.rEoS2ra5k8H@'sbrd+Tiqfr$a!I/ngH3&A?qg8?hrd4Wl
+oR$U`r-J<grH\Eis*=Zlrd4]oqgABks*OlrIXh9GrI=Nks*k*#JV!fNqgn]ts+C?)!eZ/Zr.Y0*%
+YojsMMd=LMi3OPN/WaUrJpo=r/Uf<s,d8Cs-*;Dr07;KQ2R$KQiEBOQiEHQRJ30MRfJuVSc55ZS
+c>8lT:VX5I=6BeG&qV?Chn$:qHX#*rEf>-ra>\5qI9D5s'u8@\$`WNricR.`5KX6`r=$Ya8sE*r
+6#)aqp#,co?RNac-4E/CA2NCD#S;LDZ=YTE;jkWEWC1[F9-N-rc`7)H$Xd`I!pEmJ:N3&K7nr5L
+PUeEMi<XVO-,ThQ'I]'R@B_;StMdOUnsufWN*&%YHY==['mHS]"G_j^VRe*`Q$!@bKS5Vd*^:ke
+^i@)g=tE=hVd>Oj5]7`k3)!nlKdg'mdKW6naZ2@oCW%T!quB_rqQNhrqcQirqu`no_sFAJcF7"J
+,~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5F.>i8BUoMu/A1M#2u)LAuu+K`6Z*K`$K#K)1&rK(aa:?>a:]V50l\TqS*MSt):>R<E[k
+Ch[KmARJbNB4koWB*rBf@W7I%Bl7s7H2N0kIf+WjIf=ciI.hpdI/SEeI.VadH?oC4s*=-Zs*=Wh
+!I&_dFnp.WFnTqOFT?O\F7aJQEW0nWEW0nWDtn;ODZt#sDfBW5r,DL*oh>?Xs&/qr;uKSp<)`co
+r)<Pl!`<fPrb_RNrG;OPr,;.DqJZ"Dr,;RRs).mVrbqgSqJQ@QqeuIQs)7mUr,M[Sp2TqJqf2RT
+#BP!/G'8"MFSg4ZG5ZXaGQ`58G^4T5HN&9eI/eWpIenQjJGk&rK(FZpL&-Q'L&Zo-L]</>LO!lY
+D/O0(B4b^c@qb^Dra#J/qHs50rF,P3rF>k<s,6o7!/UW/",3#*QMd$JPQ@):pmD&Irg<SN!1NbR
+!1NnTqeGk@rbVRNr,2OQs)@sWs)J*\rcA0`G5c]'G^4U]H[L6iIt3'#JqJ`1L51SAMMmFQO,oEd
+PEhE"R$jG6SXuLJU84W`W2ZeuXfnt7Za@0M\[oGe^;%M$`5Ta;aihoQcHsteeCE.%f\5*8h;7)J
+ioB(\k2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14"s*t~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5FIGi8@U7<E)mq<)lq!rDi\n!*0#!s&K%t!*/qt!``3!nl>Tes&8kqr_jmc0J"]MUnaZX
+Tq@pJS=?"94?>M^2Dm6E0J>+:2)[Dm2$l*+4[;t>;,:%frDNSmqbmAiqbdDmq,I,f!)i_l!)iMh
+r)3MkoMY]fqGR>l!)iVir)3Ag!)iYlqbdDkrDEYp<;';n<)Z]n;$Kim:f1(d;#X;o:esk`r_W\m
+:\did;?'Gm:]=2g;>rKQ2u5K62uY`82uY];4?GScpcS=7"ZoRZ;,L0g:]F2i;#a;[:]F8j:[_-[
+:]!ua;$'Qi:]4)i;=RK_:]+&_;>sDi;>jAm;!h'U;#X;l;#O8b;ZKeq;ZKer<<?,u;uT\g;ZTir
+r_i#[!*&hqs&T/$!*9(r"Ahrk;+pj[!(?Zgra#J/qHs50rF,P3rF>k<s%rho;cEZm!)WVl!`N&t
+r_r\os&Atts&Atr!*&qtrDWet<;of"<)lms<E8p2pM9bErb_RNs)7pVrc.sY!-A-]!HiSbGA_YN
+H?spcI=6TqJ:W<)KS>/9Ll%"IN/`mZOckonQ'[l+S"-%@TV8*UV5L8kWiW>+Yd1UB[^WfY]Y2%o
+_8=.0`lQ9Fbg"G[dF-Opf%8R.gYCWAi8EVTj5oFckNV6rlg4!+n*fc9nac8Bo`"Lbp@n=\q#C0h
+qY^6ir;HTdrdk*#s4%(!~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>&)uR,i8EMMX/`+rVP^2dV#I.bUALVaT`1S`T)YA]S,f&WS-,7LR@4&Cr1!JMrL"XSP_F['
+TU_aMTq@pJS=?"9R$a5#Lkg\8IX?BoreLu@M2R@6G,<Z5JqSuCrKI/Bm#h70s,d;Cnr`j3r/Ui<
+rJ^f;qN(Q7rJpr=rJ^f9qMkN6regf7M>i>1L\uo+L&Q`*L&Qc$L%g?$L&Zi+KDgK#Ka3?dKnP)1
+JV*iO!J5n%JcLH%Jd-dVJ5fNJ<;fbq<;ohn;ufkq<!cQ*='/U-='&a9rF#G-ra5\3"CGPE?X<V:
+r`oM/r-8-b!I/nhHN/<lI/J?jH2r<jI.VaeH?jf6HN&6kHN&0mH@'saHiAEmIJeKlIK"TqI=HbF
+JGaokJGt$!J:[]Mqgn]ts+C?)s+:<)r.Y0*$AXFoMMd=LMi3OPrepi:rJpo=qi1Z;rf@2DP*>a,
+q3CrF!13YMs-EeSR@3f<s-s%YrLNqZrLNt[&YGYdT:V'oIX??aF)c,5Ci@#b>lJ%-?M\%.@/XO1
+@f9g8AH0.=[/dT5YQ_/I`5T^8rl>&[!6P,]!6kGe!mJp6rm(,]!m]$6qeGk@rG;IMrGMXRs)@sW
+s)J*\rcE%#G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UKUSO`aW2co"
+Xfnt7ZaI6N\[oGe^VI_'`5Td<aihoRcd:(geCE1&g"P3:h;@/KioB+]k3(sml0@X%mI'H3nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu-HlrU^#>s+14"s*t~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>$0'q&i8EMMMi3JiM>i>.L\c`*L&Qc)K`Hf(KD^>sJc:8oJK.s5@pi>\F/#A%T:VXES"#h5
+R$VT#AS#7W?!_.AB+&BeBk(_$T58FcG'a+:r-nQlq0r?lpO*!f!.+Hfrd=ZkpjD^\!IB%gGlN'f
+GQ<$_GlN'hGQE#3rcS!XrH7gUpN6IXqfDCM!-/!W!-/!W!,qXOs).pUDuE<.9DqQ[9D2'Y9E%lf
+;?9`qrDNPlrDE\o;H!BhrG;OPr,;IM!,_OLqeu+Eo5FYHqJZCQr,;RRrbqdTrGhaSpMp%Kqf2RT
+#BP!/G'8"MFSg4ZG5ZXaGQ`58G^4T5HMr3dHie_FIenQiJGt,sJcgXYKS0#PrIt*&!/:E,s+gT0%
+Z-!hEcH&9D/3cqA7T2:r*95,rEf>-ra>\5qI9D5rF?%iMi*CJre:N/Q'I[5Q2d'KQM6dGQi<BLR
+JE<RR[KT@CA2NBD#S;MDZ=YTE;jkWEWC1[FDc5EG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEMi<XVO
+-,ThQ'I]'R@B_<StMdPUnsufWiN5'YHY==[C3QT]"G_k^r!t,`Q-'AbKS8Xd*^=le^rF+g=tH>h
+r*GPj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcF7"J,~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>#iah%i8EMM<E/rr!*&hqqGdJprDj##<)clq<rZ/"<:Nu`<;f`;-86r"0f_+cTqS*MSt):>
+R@'A.2`3BI0eb761c7-LrA=jJ6oe(=;G^:jqGR>lqbmAiqbmGmqGdJn!)i\m!)i_l!)iMhr)3Mk
+oMY]fqGR>l!)iVi!E)eo;ZBSo;Z0Jm;YsDi;?0Sm;?9]qp/M,m;uBJs:esnb;,C*g;$0Wj:Jh$f
+!DlSf;#aDl:]NBM2Z>Z72Z>Z32uko:2ZG`82ZGo>3WM8:4S_,B4?GYfr&Y'F:Jah^:@V-Z;#a>[
+;#X8j;#X5j;#*uf:]=2j;=[Q`:]!u_;>j>i;>jAm;=.0V;#X;l;#O8];ZKer<<?,u;uT\g;ZTir
+r_i;c!*&en!*&hqs&T,#%Tle0:Jt"b:JaeY8P2QLr*95,rEf>-ra>\5qI9D5rFGq*!`2for_WYl
+rDE\q<)iiqqGdMpr`&qtrDNbs<E8uss&B%ur_ir!<E3!uqeGk@rG;IMrGMXRs)@sWs)J*\rcE%#
+G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UKUSO`aW2co"Xfnt7ZaI6N
+\[oGe^VI_'`5Td<aihoRcd:(geCE1&g"P3:h;@/KioB+]k3(sml0@X%mI'H3nF?MK!V>s_o`Fj]
+p\ssfq>^<hqu-HlrU^#>s+14"s*t~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>&E;[-i8EMMhPmHOVP^2dUnn!bqP*n]s.K@`s.97]!1a"Ws-s+ZRf8`SRfAlRRK/cTRf/Wr
+J!5S;BqCiVL7t62St):>R[BJ/Q'I)XJp_ljK8GMDreh)"F*E\?H\-p-OSk=?P3S20P5g[COSP"=
+OSt=?OSk.>Nr=q;Nr"h7NrP.ANfT4mN<"q:MZJ]lreUQ/r.b3)re(?,KS9,SpP/[$s+LE)re1-%
+#DRqdKS+l-K)L6$Jq<oQ"BJT(<)rfp!EE+t;u]hq;uBVp;uTbr<<lQ+=BS^,?XNb>q-O&-s'>h8
+?sm>IrEfJ/!aJr7r*0/GrH\NlI!kj=s*F]lrI"6as*=Kfrd4Wi!IB+lHMr3kIJ\ElIK"TqI=?\E
+JGaojJH(*"J:[]MqgnZs#(qS^K7ei1r.PE2LPUeDMMd=LrJUZ6"c\P%NfK1tNW>.>O9:W.P*>d-
+q3;&JQ'R^5Q3<PAR$jB;Rf8cVSG\oXT)>/VT)P>jOb%n,H?aILE,0</Qi:7g?2e1,?i=C3@JXI3
+A,Ts;AHTEL[C#q;"g,_]`Pojra8a3\ans6]bl5lebQ,oecL]?_cHZ3#pM9bErb_RNs).mVrGd7+
+F)uGFF`qqPGBeCZH@($fI=?]sJV&N-KnbA=M2I4MNK90`P*;/sQ^F52S=Z@GTqeE\Vl6VrXfen4
+ZEpsI\@K5a]t_A"_o9U8aND]McHjnce'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MG
+p%A%Pp\jmeq>^<hqu6NlrUg)?s+14!s*t~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>$0'q&i8EMMhM[9fM>i>.L\uo+L&Zi*K`Hf(KD^?$JHLFRJUm6@/7*.%?rhDkCh063St;IA
+S!o_3Q^*hK@pr_L?=[_`BkM-o?=RSiJo,IKGC9=<r-nQlq0r<kpjE*grHe?fs*XclpO)U[!."Ec
+!."Nf!."9_s*=Whs*+HbpiQIWp2p%O!-J*ZoPsqOrbqjWpi-7,s%EAar_*2^r_*5aq+LKV"A;E^
+92#7_r)*Sp<)`cor_ihq;uKSq;,U<a;?(S3DZ=SNDYe;EDZ"DQE;4AODYe8OE;OSRE;jeTE;aeS
+E;";KDujs!rGhdVs)S9aG'8$-FSp:ZG5ZXbGlN!fGlN'fHMr3eI/eWpIenQjJGt,sJcp^ZKS+pO
+K`6]%L&cr,LAlu-M#N5>IWBFIDes0&An>I^J,W^O?2e1,?i=C3@JXI3A,Ts;AHRjJMMV7d",3#*
+QMZpJPa;'2rg3VOqjI8L!LfGQCA2NCD#S;LDZ=VTE;ad)EcZ;DFEMbMGB\:WH?spcI=6QpJ:W<)
+KS>/9Ll%"IN/`m[OckonQC!u-S"-(BTV8-VVPgAmX0&P/Yd1UC[^`l[]Y2(q_Sa@3a2lEHbg+P^
+dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$
+e,Op~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>#iah%i8EMMhGjJQ!*&epqGdJps&T,!!E<(s<piuc;ufkr<;f`H-86r"0fV$G0;5#0St):>
+R[BJ/Q'F3^0eb761c7-L1c7-W6q'R::/Fed;u'>k;u0Dl;?'Po;uKSo;u0Jn;uKVn;u]bo;#jMe
+;Zfop;,[?ioMPZfqGR>l!)iPgr_ibn!)ibms&/_mqbdDkrDEYp<;';m<)`]l"].uk;,L0g;$0Wj
+:Jh$f!DlSi:]i[92E:[orAFU5!]N"qr\sd6r\s^6!&sj7s#9s9s#g<Br]Bs=q)ngB4$5Y'3rhGB
+56!_F54hYN;#a>Z;#a>j;#X8d;$'Qi:]4)i;=RK_:]+&_;>sDj;>jAn;,H[VqG@2hs%r\l!)iAd
+!*&qts&8tsr_i\n!*&bmrDEYp<:!N`<;]bq<rQ2"=T21t:^9im:/+>Q8P]7irE]D/qHs2/raGY4
+rF>e:rac1/:fC<l;#jGk;?9]qrDN\qpJh2mrDW\qrD`es!*&qr!*&qtqJ,b?rbVRNr,2OQ!-%mV
+I<'CMFEDYKG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEMi<XVOHG]iQ'Rc(R[]h=T:hmQUo(&gWiN8)
+YctF>[C3TU]=bhl^r"".`Q-'BbKS8XdF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s3q!u~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Lio/kSi8<GKh5I6KVPU-gV#I.dUAU_`TEUsZSt2FBr0mbXR[X,A!LfMSRfAcURf&R(J!>V;
+C7LcUM1^M<St):>R[BJ/Q'IStP'q_5LPCVAMi*F?G'][$IY*<4q31`>nr`m4rfR5DrfR/@qN:c=
+s,m8AqiC]8s,Qu;r/Uf<!fi>%oSij0regf7M>i>1L\li+L&Q`,KnP-SL%g?%L&Qc*KDpQ#KaEKf
+KnP)1JV&H(qcWr$"BST'<*&lq!EE+t;u]hq;uBVo;u]hs<<ZE)=BS^,ra5Y4!FK./?N+:4?=3\>
+!+#P0r`oV2>?kG2>6eD;>[2T%I!kj=s*=ZlrI"6a!IB%gHN&6kHN&3iHiJBlHiABmIJ\EkIK"Tp
+IXh9GrI=Nks*k*#JV!fNqgn]ts+:H-K7ei1r.Y0*#D\+lMMd=LMYrA4N;eh:NW>.:Nr>%@Ockq*
+Pl$^GPl?pKQBhB6s-EeSR@3i=rgWqXpRV2Qr1=IcJphrjGBIhDChmsT>[786rEfA.rF#V5q-s>5
+rFGh;"1P\G[/R91Xi14X!65#Ys2Y2_r6,,arltJe!6tMgo?RE^qeGh?rbVRNr,2OQ!-%mVGB.bG
+FEDYKG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEN/WdXOHG]jQ'Rf)R[]h=T:qsRUo(&hWiN8)Yd(OA
+[^N]V]=bkm_8=+/`lQ9EbK\>YdF-Oof%8R.g>(N@hr*JRj5f@bkNV6rlg4!*mdKW6nac8Bo`"O`
+p&Ojcq#C0iqY^6ir;HTdrdk*#s3q!u~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Gio/kSi8<GKh2;#breUH,rJ(-%!ec2Xre(3%"+c&TJc(&hJLuCYCgpdQFE220@Us)BS=?":
+R$a5*Q'@Jq?X@AXAnPdiBk_!eBmXT4EH?>QqLAElr-eEjrdFQhrd4Tir-SHkr-S3doR$U`qfi*d
+rHJ<fp3?U_s*4Qf!d8^/piQIWp2p%Os)e0[oPsqOrbr![E,\QIrCmMj9h\5Q91qnU9E%Q_9E%W]
+9D;*_92&#P9E%lg;?Kco<)``ns&8qq!)rkp!)`_nqb[>kr_Wnu;,C+d;,_B3D>S5JDtS#GDZFbO
+DuX_ODZFbRDuO_TDuXeSEW'kMEVsePEW'qXF8p=_G'3e+r,qp\r-/0cs*+Kfs*=TirHn?f!e#NH
+r-n`rJ,Fg"It3'#Jbt'!K*$^YKD1&tL%g?$L]3,-M%5&VE,TZ2CM@BmA7U-o>lJ%-?Me+.@/aU1
+@fBm9AGg!@Mi*CJrItB=QBqE5!L/rFQi`S?Qi<BMR/i]ORfJoSCA)HBD#S;LDZ=VTE;ad#EcZ;D
+FEMbMGB\:WH?spcI=6QpJ:W<)KS>/9Ll%"JN/is\OckroQC+&.S"-(BTqS6WVPgDnX0&P/Z*UgG
+[^`l[]Y;.s_Sa@4aN;TJc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DErq6<b
+!;HHes7u]kr;6KkrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Fio/kSi8<GKh>U=Q<;BPj<<#qu<r>tq<piuc<<#ks<;]ZF,qg_t0fV$G0.\b1St):>R[BJ/
+Q'IStOt\RH2)I0L1c7-E6q'X?:JanemSa$]!`Drqr)3Pnr)EYorDNVn!)ibm!)iJg!)iViohkcg
+qGR>l!)iPgr_ibn!)ibms&/_mqbdDkrDEYp<;';m<)`]l!DlSk;#jGk;$0Wj:Jh$fs#10B2Dm?M
+2`<Vm2Z5N52?Gfq2Z>Z62Z>Z33;kc82ubf949@T*3rV5;4S_,?48qA@3se#55<_7o4?bqnr]^3T
+r_NSjmSNmYs%r\j!)WJgr_NMi!)`8_s%iPhp/1fcr)*Gk!Du\]:\die;?'Jm;?'Pc;ZKer<W?%u
+;u]bo;ZKel;uT\[;ZKep<W6%u=8c5'=]83qrD3_p9hS&M8R,O"?2\+,?i=C3@JOC3A,Ts9AHPe+
+;cEZm!)WVl!E2tr;ta5h;uTeq<<#qu<;oet<)lrqCA)HBD#S;LDZ=VTE;ad#EcZ;DFEMbMGB\:W
+H?spcI=6QpJ:W<)KS>/9Ll%"JN/is\OckroQC+&.S"-(BTqS6WVPgDnX0&P/Z*UgG[^`l[]Y;.s
+_Sa@4aN;TJc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DErq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Jio/kSi8<GKh;-k`VZ*FkV#I.eUAU_`TEUsZSt2FBrgO"YS"#lGR08nFR$a<?RKAnGRe`@'
+R"(KTJn^^AObJC?L5;t$S!o_3Q^*i#PEM&iL4tG?MMd7LZZ^i:GC>.#Nfs4%r0$W5r/gr@rf[;D
+r/gf<plPB6!07#;!06o:r/Lo@NfT6]oo/s1regf7M>`81L\li+L&Qc*K`Hf%L%^9$L&Zi+KDpQ"
+Ka!3bKnNT5qcO>2>?P'0=B&:$<E3("r)<\s<;fbp<;ohn<;oer<;ol#='/U-=8lS,@/jU6?2It-
+?NFJ?ra5b5?2e10?2\%+>6S89>[1H9r`oGL!d]3?rI"6as*=NgrHnNh!.+Wk!.+Wls*afmrdFcn
+!e#QJrIFfqpON6ms+10"qgn]ts+C?)!eZ/Zr.Y0*!f)Sgr/1B0!0$o:pl><7"-Jb0PPg[BPlR'G
+Q2R$JQNEPBRJE<MRfJuQSbo#TT+%*>I=$6`F`VG<Ci41j?2\+,?i=C3@JXI3A,Ts6AcK.<[/R91
+Xi14X!65#Ys2Y2_qoer_s3(Jfrm(/^qJ,_>rbVRNr,2OQ!-%mVEcQ5BFEDYKG'A.TH$Xd`I!pEm
+J:N3&K7nr5LP^kFN/WdXOHPckQ'Rf*R[]k>T:r!TUo(&hWiW>*Yd(OA[^WfY]Y(tn_8=.0`lQ9F
+bg"G[dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6hr;HTd
+rdk*#s3q!u~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Hio/kSi8<GKh;-l`M>W2.L\uo&Ka!-^JqAW-rdt*"s+(-!s+'`ms*u"nDdd$RFE),,@:NhZ
+Jt&6uR$a5*Q'@JqOc]NS%VTKgBnKu5ODAZRFaALcqLAElr-eBis*aWhs*OZirHnQlr-S3do6UI_
+qfr-drceEgp3?U_s*4Qf!d8^/piQFVpiQ4Ps)e-Zol:+R:/Cd_rD!5a"\ME[8kVeT9DqK_9E%W`
+9*.^Y9D;*_92&#P9E%lg;ZBSp<)``nr_r_ms&&bnr)!Glr)!bs;,C+g;c6Lj;>tJ0Dt\)HDuXeV
+DZFbRDuX_PDuXeSDuO_TDuO_SEVseMEVsePEW'qXF8p@^G5cU\Fo?L]GQ2pfGQ2pfH2W'fHhr-i
+IK+cpIfb(KJ,Om#It3'#Jbt&rKD:,uL%g?$L]*&-M>rA?J9#RIDes0%AnGR`Ac?!6?Me+.@/aU2
+@f9g8AGKg:M?&J2L'!X+QMQjHQhQjKQC!s;R/EBORf&ZOCA)HBD#S;LDZ=VTE;acsEcZ;DFEMbM
+GB\:WH?spcI=6TqJ:W<)KS>/9M2@+KN/is\P*2&pQC+)/S"6.CTq\?YVPgDnXKAY0Z*UgG\%0)_
+]Y;.s_SjF5aN;WLc-F\`daZguf@em4gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^
+s7u]kr;6HjrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Jio/kSi8<GKh;-jb<;9Ji<;KVm<piud<;BH";C4+J.PNb;1G16X0+C4:S!o_3Q^*i#PEM&i
+rA>!A2)R3J6UXRA:JXkgpeq&fp/:ifr_i_or)E\pr)3Pn!)i_l!)iMh!)ien!)ibmohtfgqbmGm
+s&/VhrDEYn;Z0Jm;Yj>i;?0Sn;ZBYq<;';m<)WWks%r\l!)WVk"].3=3B&tt2[))s2E!KRpbr+/
+r\jX4r\ja7qDeF3s#9s9s#^BF3]T8#48V/94o[VC4T7DK4?btn5!;"j5!T!0#!G.54]"sNm83gY
+r_WVj!)WJg!`2Zgr_WVlnkf?^qb[#ar_WMirDEVlmSEXTs&&ems&&eoo2>Wgr`/tts&8qqrDW_q
+q,@8jnl#Nfq,78mrDihtrE'#$rE0,!r_WPh"ADH\8PB%grEfA.rF#V5qI9D5rFG_8!`2for_WYl
+rDEYp<;oer<;'>i;uTeq<<#qu<;oer<;LA'C]8/LD>\;ODZFbTEH6)@F*)MHG'8(RG^4U]H[L6i
+It3'#JqJ`1L51VBMN!LSO-#NfPa.Q%R@9V9StD^NUnjlcWN*&%Y->1;['mHS]"G\i^VRe*`Q$!@
+bKS5Vd*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWm
+o_sFAJcF4!J,~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Kio/kSi8<GKh;-lAVPa?hs.oXhrM'4`r1F4cSt;LDSGo#WRf/ZPR/WKUR[KS4rL*\Qs-Y!s
+J!5G:Bq1KML4Y/6Lomh`VjNj<Q'IStP*(ieNfApQre^uEFb6W>JV8f?rf[2CqNCE3r/gc;r/gc;
+plPE7!07#;!06o:r/Lo@NfK0\oo/s1regi8M2D4fs+gK+s+UH*p4`3ps+UK+s+C<(qLo)T>$>'3
+>5MG/>$G*3=BJR&<`]3"!EN5"<!--"<E8urr`&kqr_rqt<)iiqs&B"u#$4o0=BAj:ra>b5!FB(/
+?N+=3?3FVC?sd4=?N+7/>l7e7>[(E;>?Y69>[:W>Hi/9aHNAG<qg/6g!.+Wird+ZlHiABmIJ\Ek
+IK+ZrI=?\EJGaokJGt$!J:[]Mqgn]ts+C?)s+:<)qh50-LPUeDrJLW5$Asb!Mi<XSNK&sXqi1oB
+OH5KbOckq+Pl$aGPQ@&6rg!GJs-NbQs-`\OrL<hWpmq>Spn&(iRY6*:H$=FRD/F*+E*ZcK?M\%.
+@/aU2@f9g8AGKg:B)f7=[/R91Xi14X!65#Ys2Y2_qoeu`rlbAerm(2_qeGe>rbVRNr,)RSE,bbq
+!HN8\F9-N-rc`C-H$Xd`I!pHnJ:N3'K7nu6LP^kGN/`jYOHPckQ'Rf*S"#t?TV8*UV5L8kWiW>+
+Yd1UC[^WfY]Y2(q_SX71a2lEHbg+P]dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DE
+o_%nNp@nO\s7u]kr;6KkrVc?eJcC<$e,Op~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Iio/kSi8<GKh;-lAr/(?-rJ1<*q1Sj&KDpH&KDpK$JH16!J,XuoJc($K?#3nW<-3%nA7/tZ
+AqYbeI@-CgQ'IStP*(ieNf@[aBPD."ASm$7DfTuIrI4]pqL8?jq0r?lpO*!fr-J<grd=ZkpjD[[
+!."Ec!."Qg!."9_s*=Tg"*\p2Fng(VFng(PFoQR\F89hX:JO^a:&n)h:'F?e9h\8Ur_*>c9`@Wb
+91o.UrC[)_r_38`s%<;ape1f`9MA)PrDW_o"Ar&o;cEWmr_r_ms&&bnr)!GlqGI8hs&8qqs&&eo
+!)`W3pMTnIs)@aOs).[O!-%gRrc%mUrc%gUr,DCMr,DXT!-8'Yr,N$`FED\LF`_a&Fo6F]GQ2pe
+GQ2pfH2W'gHiABmHiAEmIK+cqJ,XlsJ,OotJ,b$!Jc(,rKD:,tL%pE$L]3,.M>i;<M1TefE,TT/
+BkM&WAH,s7?M\%.@/aU2@f9g8AGKg:B)d_gM#E&0Q'Ra4PlR0GQii\@QC%T<r0dGN!1Wk#okXPC
+rb_RN!cN$srG_jYF8g7^Fa!b.Ed2kUH@($fIXcluJV/T.L5(J?M2R=PNfT9bP*D5tR$jG5SXuLJ
+U84W`W2ZeuXfnt7ZaI6N\[oGe^VI_'`5Td<b0/#Scd:(geCE1'g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcF4!J,~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Kio/kSi8<GKh;-lA<)iZnpJh)kr)W2br`&\l+&XF=.4[)12)6g90J>(E5sdc&R$X)'P`q8m
+OH5E]2Z>Q?1H.Zi852rX:fI0fqGHubpJ^uhs&8hns&/nqr)!Glp/:rhpeg]^!)rho"]8/q;c?Tj
+;$'Qk;>sGo;,[?is&/\lr)3Pls&/kq!*&Yl!E;tp;?'Jl;&2tg2``lX3&roX2`EWQ2)R9O3&W`S
+2u5H32?,T22uY`62u>Q72uY`82ubf949dl.3]T5_48V/94TRZ,r]L-@!Bi[H56!_G4[8m/rB:-D
+mnj!Zs%r\j!)WMh!`2ZgrD3Jknkf<]r)!,brD<GirDEVmm8*RTs&&bls&&eooMbch!*0"tr_iep
+r_reqpeq/jr_ierohtiiq,78mrDiesr`B,%qcOD.;,C(b:esk\91hcK?![G9qHs50raGY4rF>e:
+q.9S<!`2cmr_WYlrDEYp<;oer<;0Am<;]\o<W,ns<W,knC@uBAD#S;LD?=`qE;abWEc_5%!HiSb
+GB.qRH?spcI=?ZrJ:W?*KSG5:M2@.LNK0']P*2&pQC+)0S"6.DTq\?ZVl6SpXKA\1ZEpsI\%0)_
+]t_A"_SjF6aND]McHjkbe'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jme
+q>^<hqu6NlrU^#>s+14!s*t~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Kio/kSi8<GKh;-lAgSXtHrhTOgrhB=arLj1_s.97]!1a%Xs-ikRs-NeQrg<_R!1<_Qq3W[_
+PCe=!SskanJVJo9YH=h&UnsECQ'@JqOcYWaNJrgQM1<.GMk>BKL5(ljOT:RBPPLC4Oo:C<Oo1=;
+Onb%8NrY4>N<#"8O8Fq>O,f9]oo/s1rJL]6M>i>2L\li+L&Qc!L%U0&KnP,3rIk0("'f&6=T)G$
+=Tqo1>$G*3r`B/"qGdPs<W5r"<E)ptr)<Vpr_req!`N&tr_rhrs&B2&='/U5ra5\5s'Gh6?![>6
+s'Pe4!+5_5!+#P0r`oS1>?q)1!*oJ,!Er_,>R"J=>?b?;I._gdH2DpdHiA9nH@(!bHiAEmIJeKl
+IK"TpIXh9GrI=Nks*k*#JV!fNqgn]t#(qS^K7ei1r.P9.LPUbCr/(l?MMm@MMi<USNK0"qNrG+>
+O9:W.P*>j/qj%,ErK[AJs-NbQrgEVOrL<hWpRV8Spn.PY%%2m"I<p'[F_u&5CiB;ZqHs50rF,P3
+raYn;q.9M:s0Vj6ricF*`;[aSa8a3\b59B]blZ,4bl,i\chqPNC]/)KD>eAPDuXeUEW:%ZF8g7^
+Fa!b.Cj:5OH@('gIXcluJqJ]/L5(M@M2R=PNfT<cPE_?!R$jG6SXuLJUSO`aW2co#Xfnt7ZaI6O
+\\#Mf^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCW%Ts7QHe
+rV6Egs8)Zjrqu`no_sFAJcF0uJ,~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Jio/kSi8<GKh;-lAg\m!-M#<&+LA6H(K7\[RK):*#J:E%IJ,XuqJbssJ?>O"U<-<4s@UNbX
+B7tkdI<p7,Q'IStP*(ieNfB!VB4tV-L2qc\E-$2MrdFcprdX<ardFQhs*OZir-SHkrHn<eo6UI`
+qKN!crceEgp3?R^s*+WiG'.s,F9$I]FSp:VFS0bVFSg.XErSrA:/=V\:/=V[:]=,h9`\!_rCm>e
+92,7U"A;?Z92#1Ts%E>brCd/_s%E,\s%EAcr)<Pl"&Vrp;uKVo;uBPn;>jDa;$0]p;H!Kk##\;q
+:f1).photIs)@dPs).[Os)@mSrc%jTs)@mUrG_IMrG_UQr,VgY"*A^0FoHL\Fo6F\G5umeGQ2pf
+H2W'fHiJKnHiJKmIK+crJ,XosJ,XuuJ,b$!Jc(,qKDC2uL%g?$L]3,/M>`80M$\iVE,]`3CM@Bm
+rac"7qHs50rF,P3raYn;q.9M:s,$f4rItB=QBqH6s-EDH!gf4=rL!MNqjRFtokXMBrb_UOs)7pV
+rc.sY!-A-]!HiSbGAMMLH?spdI=?ZrJ:`E+KSG5;M2@.LNK0'^P*;,qQ^F21S=Q7ETqeE[Vl6Vr
+Xf\e2ZEpsI\@K5a]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13us*t~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Kio/kSi8<GKh;-lAgJmrJp/D#lqc<)ar`&_ms&(3k/h/;(2`<HF/28h46:4"%4[#-sQ'@Jq
+OcYWaNJrfR2(1OQ7n6AS;>3ua;?'Ph;u]ho;uBVp;uBPn;ZK_n;#jMf;u]bk;>!fe;uKSt;,U:j
+;c<?er_`bo;Z0Jm;Yj>i;ZBVo;ZBYq<;';m<)WWks%j(`3]]8[3]B&Y3B&qs2[))s2)[ERr\aj;
+2Dd;f2Z>Q92E*TTrAX^6rAXU5!&sj7s#9m=s#U0?!]iD)q`O[;!'C-Ar]:*CrB:9G4?`U+r&sp@
+oMGQ`r_WVj!)WJg!`2Zgr_WVlr(mAhq,%&dr)!)ar_WMir_`bo;!q-T:]OAl;#aDm;Y3of;ufqt
+<;oer;Z9Vo<;9Al;Z9Sp<:s2i<;KPn<;fhr<rQ/#=Sl8#=9;E!;>a5n9M7uK9`AAp?iFI3@JXI4
+A,Ts6Ac63B:f:3j;#jGk;ZB_p;u]ht<;KSu<)Z^p;cN`rrD`esr_r`0okXMBrb_UOs)7pVrc.sY
+!-A-]!HiSbGAMMLH?spdI=?ZrJ:`E+KSG5;M2@.LNK0'^P*;,qQ^F21S=Q7ETqeE[Vl6VrXf\e2
+ZEpsI\@K5a]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MQ
+p&F^cp\jmeq>^<hqu6NlrUg)?s+13us*t~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4RLiSi_Qhqm5Gh;$f?g=iC"rhTOgrhB=arLj1_s.0:_S=KSJs-inSs-WeP#+1aER@'A0rKmSO
+rg57'R!k-LJSCU>NeN%;Knuh5Wi;kjR[KD)PEM&iO,f3YN/EI:VSSO>I=m<2rf[;D!0[5CqNCN6
+!K`H@OSY+<OSY+7OSb+=NrP(=Nr"h6NW>.>NqJA3N;\Y8MM_=gs+gK+s+UH*p4`0o&VYmkK7nn`
+>[(H<>?Y06>?Y5/=U&&3>$G36=oMM+<*!%!<;]br<rQ(u<<?-"<;]Yp<;ohq<!#ut<;f`%<)lq!
+='/U5?XNe?ra5\2qHaD6?=.&I?sd4<?N+44>[(H<rEK;,r`]D,>Q.k0?!LT<r`oJ-q0Vp`rd4Wi
+r-SBi!.FfnrI"ZnrdFfrrIFfqpON9n!e>iQrdalsrIY'%"GDD[KS98Ws+UT1Ll)%e"cJ7rMMmDl
+N;\b6Nr>%=O91Q-PPpaCQ2QsGQ2[*LQiEHPRJNBOS,SrPSc,/TTDY>lS;DcDHZsXTDf9B-DdHcI
+?iFI3@JaO4A,Ts7Ac66>B*#EIrica3`5T^8a2c9AaN4A'rQG2b!mJj3rm(5`rbD%?rbVRNr,2OQ
+s)@sWs)J*\rcDt!G'A.TH$Xd`I!pElIt3*%K7el4L5:\DMi<XVO-,ThQ'I]'R[]h=T:hmQUo(&g
+WiN8)Yd(OA[C3TU]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9
+rpg*]o`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s3gpt~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4RLiSi_Qhqm5Gh;$f?g=hC?rJ:B,r.b!##D@\[JV&K)JGt*#J:IQIrdXot"+buQJbjmM>\meT
+<-*"nA7/nWAqGV`IXHE_FDmD-P*(ieNfB!VMMYYgNHo8TEccMRIXZ]nrI4`qmXG1apO)serHeBg
+rd=ZkpjD^\!.+?`!."9_rd"Ng"*\p2FoHI_Fo6@ZFng(OFT?O]F8o&>:Jah_:B"#l:/=SZ:]4#h
+9htU\"&)E^8c)*d91hfL91hiK8kT(Us%NAar^m/`pe:]\s%N>hrDNYms&8hn!)rens&&_mr)!Gl
+pegufs%rkr;,L0f;>b>/DuXeODuX_ODZFbTDuFYSDuO_SEVseMEW'kQEVskWEs$N,G'3e+r,qp\
+r-&-crce?ds*=Qhrd4Zms*OcnrI"`rIt.EG!.XuurdOs!Jc(,qKDL8uL%g?#L]3,0M>`8.M$\i[
+EGoc5CM@Kqrac%8qd9>1rF,S4rF>e:qITV;rFZ.gM#E&0Pa7X7Plm>;QBq94!gf4=rg<SNr0mV"
+o5">Arb_RNs)7pVrc.sY!-A-]CisoFGBeCZH@($fI=?ZrJV&N,Knb><M2I4MNK9-_P*;/rQ^F52
+S=Z@GTqeE\Vl6VrXfen5Za@-K\@K5a^;%M$_o9X:aihlPcHsteeC<($f\5*8h;7)JioB(\k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HkrUg)?s+13us*t~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4LJiSi_Qhqm5Gh;$f?g=l=%pJ_,mqGuu`r`&_m.T.TG.4Qu/2)6g90JG.G6U3h!4?GP^P`q8m
+OH5E]N/WXN/iu<f9MSG_rDWJhqGI5iq,@8lqc!Gmr_rbnr_ieprD<PmohtigpegQZs%rkr;c?Tg
+;>sGo;,[?is&/\lr)3Pls&&ns<)iQk&QDY+;)gQs3B0#\3&irX3B&tq2Zkoq2E:Um">qtk1c>+f
+r\a^6r]'m9rAOX6qDeF3s#9m=s#U0?s#L-AqE4d@!'^BF!B`IB4T7DL4?btn5!;"k5!M704T[f1
+4oIPF5<f'0q,%&ds%r\jpe_&g:]4)i;>j>k:\[cd:]!u_;>sDi;>sGo;,H[Vq+q&gr_WSks&/Mg
+qc*Djr`&Mgs&A_kr`&\l!*&nsrDrr"!*K,$r)aG/:f1"c;,C%_91hfN?=*M9ra>\5qdTM6rFGb9
+rFZ"@s&/hn!)WYm!)rkrr_rhs!*&ep"]SE!<)Zcq<W,l!<E)mqrbD%?rbVRNr,2OQs)@sWs)J*\
+rcDt!G'A.TH$Xd`I!pElIt3*%K7el4L5:\DMi<XVO-,ThQ'I]'R[]h=T:hmQUo(&gWiN8)Yd(OA
+[C3TU]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lb
+p@n=\q#C0iqY^6hr;HTdrdk*#s3gpt~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr!4@
+jQ#:[iSi_Qhr!;Hh;$f?g=k5VUnsmdU]."bU&L_bT)tUTSc5/YRg,=LR$jA0R/<6MQiNKPR/*'u
+D3BF&BUtHLK7\f3MQO"ZVPBoWR[0%lP*(ieNfB!VMM\@(aj,*ZKSPQdP5pdFOT:RBPPUI6Oo(7=
+OT:RDOo:C=Onb%8O8k7>N<#"9O8"\-NW4t:MZJ]lreUT0qhG*(s+L*"onEm/KO.ng?!CN=>[(<6
+r`^+@=^#!3>$5$6>Zk33='&=$<E<+!<;TZ!<`N*u<E9#tqbmPq;cEZp!`N&trDN\qr`/u""Bf/@
+?XNe?s'Pe3pg3u-s'Pn8?![G9r`oV2>?kG3>Q7t->Q7n+>6%q+>Q7t,>Q0!IH3/G>HN&9iHMi-h
+HiSTnI//0kIXh<Hr."HkrdXs!rdalsrIY'%"GDD[KS98Ws+UT1Ll)%e"cJ7rMMd>kN;\b9NrP+=
+NX1]+O-#HcP*2%.Pl$aDPl?sHQ3*D?R/WNNRf/`SSG/TRT(elSTF@EPJU;cgG&qV?C2@hc?i=C3
+@JXI4A,Ts7Ac66=B*)bS[/R96Xi/2t`lH.!a8j?ZaoKZbblZ,4bl5ofcN)8eci7bOC]/)KD>\;O
+DuXeUE<:0%F8g9*F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMN!LSO-#KePa.Q%R$sM8StD^NUnjlc
+WN*&%Y->1;['mHS]"G\i^VRe*`Q-'AbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`noDX=@JcF0uJ,~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjq["=
+jQ#:[iSi_Qhr!;Hh;$f?g=k5:r.t?-r.b$$%YTOhK7\Z*Jq8H&JUr?$rI4`qoRJGmCgUXOFE)&)
+@:Nh]K7\N!H?aUUEG]BPOcYWaNJrgRM0sN1Rqlk]FEr<6If=coIfFobIK4fiI/eQkHMr3gI/eQl
+HiSNlI.VadH?o70s*=<_s*=Wh!I&_dFoQO`Fo6@ZFng(OFTQZ+;>sAq:Jak`:JUg`!_lEcrD!Af
+:Adfl9MJ,O8P2QH9DqH`91o1V"%l-V9)_K`9`7W_9(u$Z9*%^crDWYms&&epqbdDmrDNVlr_iYk
+!)iShrDNYm"B&)o:f.*fr_NT4r,;RRq/?:NqJQ@QrGVUQs)7mUrGhaSpMp.NqJlFRs)\3^!HrVb
+FSp:ZG5QOaGl;jdGlN'fHMr0jI/\HmI/SKnIK4lrIfFotJGt&uJGb#oKDU>uL%g?$L]3)0M>N,+
+M%#)`EH#i6CM@KqA7]<K?i=C3@JXI4A,Ts7Ac66=B*)b(M#E&0Pa7X7Q2R$CQi`V?Qi<BLRJiTS
+C@c6>D#S;LDZ=YTE;jhYEcZ=$FE_kNGB\:WH?spcI=6QoJ:W<)KS>/9Ll%"JN/is\OckroQC+&.
+S"6.CTq\?YVPgDnXKAY0Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYai
+l07O#m-X60n*ol<o(2JFp%A%Pp\4[^s7u]kr;6KkrVc?eJcC<$df4g~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_GjqQq<
+jQ#:[iSi_Qhr!;Hh;$f?g=k6T<W#hr;u]hs<W?)"<W6%c<W#ho;^s=O-n?o.2DHg90JG.G6U<n!
+4ZbY`2`-\[OH5E]N/WXN1Hn-%9MeSa;Z0Ph;YX)h;YX2j<;TVl<<#np;ZBYq;Z0Jm;YsAm;Z0Mo
+;YX,Y;?Tip;H$Kf;>sJj;?'Po;ZK_o;uBPn;?'Mq;cH`i<W>/^4#m4"#rjq*3&s#Z3]K+r2Zkoq
+2`Udp!]N"qrA+I22>K002#oQ53;tl92Z>Z33;bZ82a..&#!4k+3BB2_q)e[@55m_F49.JB4T7DL
+4?btn5!;%k5!M7.4TIVA55dYE55nCX:]=2j:B45e;$'Qi:]=/j;>j>j:\did:]+&`;>sDi;>jAm
+;!q-T:]OAk;#aDm;YF&b<;KPn<:j,h<;0>i<;KMn<;]bq<rZ5$=Su=t=:A8/;,C(d:f'n[8kDbS
+?i=C3@JXI4A,Ts7Ac66=B*)aE;Z9Mn;#X>m;uTbq;u]kt<;TYs<)Z`p<;onr<!63#;eg(=C]/)K
+D>\;ODuXeUE<:0%F8g9*F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMN!LSO-#KePa.Q%R$sM8StD^N
+UnjlcWN*&%Y->1;['mHS]"G\i^VRe*`Q-'AbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0plg4!*
+mdKW6nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`noDX=@JcF0uJ,~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-)!0i>
+j5].YiS`YOhqm2FgtUT;g=b,SV5=0drhB:`rh0:`!M5k[SH#&ZR[O)@qj.;Kqj.;Kqj/gMP(J=#
+S<]%fJ;/c5Y-"UuV4a<GP)Y?VL4kVKNJrgSM5$$:T6Pg=L67`"P5pdFOT:RBPQ$^FOo:I9Ont15
+OT:L>Onb%9O8b1>N<#"8O84h-N<"q:MZJ]lreUT0qhG*(s+L*"pP/NMs',M.#?k56>?kB:=oDM1
+=^#'7=]nj.=&]*!"]\N#;cH`o<W?,"<<#tt<;TSq<)Z`p;ufkr<;ohr<<#tu<s2W7@:3IA@/jU6
+?2%\*?NX\C?=!P:ra#P/!F8t.>6%q->Q7n+>Q7t,>Q7t->6%q->Q/pKHiA?jHiA?kHiJHnHiAEm
+IJnQmI/n`qI0+kIJ,XurJ+eEmIfY(NrIFcrrdt0&s+CB)re13'",;SeM>W52MuAM5MuJ\5N=Co-
+NK0$[NfT6_OHG]irKR5Fr07/Frg!VPR$dl@qjRJQrLEVQrgrkVq4J.gNdc>'G'7qHD/=!+r*TG2
+raGY4raYn;qITV;r+H"B!O]<6YQh5J`Poj;a8X-[ans3\bl5igbfe60cMu2jcMZ#XC]/)KD>\;O
+DZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StMdOUnsuf
+WN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6
+nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-($4N;
+j5].YiS`YOhqm2FgtUT;g=b-UM#N2.LA?Q&K`?Z,Jq8N)r."csqgSQpr."csqg^.sCg^[OFDkl(
+?Y!YXK7\MuHZsURDJNs!AR^^]NJrgSM0X)lI;<_BFF*q7s*jrqr-eWqm=#%`qgAElrd=`mr-J<g
+pj<0jI!g;?I.M[bHMDaaH1lL_H2i*iGBWt.!d&R-r,hjZpiQ7Qr_Wbo;,L0g:BF9e;#O/k9hnL_
+:'"'arD!;b#>If_8P;ZJ8c)-X9*e-]8P2TJ92&%W9E%N`9DD3[9E.uj;uKVo;#sQnp/:ler_iYk
+!)i_l!)WYlrDNYm!)ien!)WVks%ihq:f1).rc%XNs).^Ps)@pTrG_aSrc%jVr,D@Lrc%[Qr,Ms^
+FED\LFoHL\Fo?L]G5umdGQ2pfH2MsjH[:$drd+Wmr-\TpJ,F`sIt3(JIfP#sK)(&pK_pJtLAlu&
+M"ul9L3moZE,KH*BP1jdAc,p7@/aU2@fBm9AGTm9B)H<@BE=!IrIt<:r07AMQ^4!:QiNKNQi`V?
+Qi<BLRK&`FC]/)KD>\;ODZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#Nf
+Pa.Q%R@9V9StMdOUnsufWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQ
+j5f@bkNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-($4N;
+j5].YiS`YOhqm2FgtUT;g=b-R<W,nr;uK]!<`N.#<r,hr<;]_r<;KVp<&%BP<)Zap;_0UP.P3S9
+0eP%30/#XX5s@Fp4#o5X2)?s@O,o9ZN/NNL4??#-;,:%gr)<Agpe_#hpf%2lqc!Dls&8hns&/nq
+r)!GlqGRAlr_ieppJLHY"Ar&p;c<?er_iVjs&/kq!)ibor)3Pls&&ns<)i]o#<Y(14$>\c3W:uC
+3]K)[3B0&ZqDSd>2E*TR2)[BO2D[8h1B9912?5]82Z>Q72E1Upr\sg7r\s[5!&sg6s#pBE#!4k+
+3BB2_pcJXA5!;(+4T.>B4[8p0"?ek05<es-!'L*ArB19J5!;&)r_WSipe_&g:]=2j;>j>k:\did
+:]+&_;>sDi;>sGn;=76U:]OAk;#aDm;YF&b<;KPn<:j,g<;0>j<;BJm<;ons<rZ5$=Su=t=T;G2
+=A_pl;,U4e:.n2M9Di/r@/aU2@fBm9AGTm9B)H<@B`D!0;#jGl;?Bcr<;oet<)lrt<;]_t<)Z`p
+<;onr;ufqfC]/)KD>\;ODZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#Nf
+Pa.Q%R@9V9StMdOUnsufWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQ
+j5f@bkNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaFhqm2Fgt^Z<g=b-1f;5;BU]."cU&L\dT:VVPS->CPS"#k7r0[AJrKdGLs-ESL.;=]j
+K:SKsMhle8L52n5VPU)^SX>V%M2?t>JU`Z<N/NO"R^JZ4JVJpXPlHsIP5g[EP5LODP44S7OHKI&
+mZI:+qiCc;s,@#=qN(B2oo/s1regu<M27"ELPPb]re:B*p4`?t!*oJ.s'5S0$<pb>>Zk36>?kB:
+qH=S<>$5!1=BAF&='TE[BN8#1<)cjsr`/u!"'&<#<W5tl;[$0#;c?Xpr_rhrs&B8(=(#KH@:0"A
+s'Gh6?![84ra5\5!af5=ra,V1r`fG/r*'/+rEB8*r`fD-s'#S/>?kG4>6%q,>Q7n,HN&9iHN/<n
+I!^5>HiSTnI/\O"IXQZnIXZcsJGOciJH(*#J:W:NJGXosK)UB*KS+o1K`$N,L51SAM>W52MuJV6
+MuJ\6N<#"<NW"kAO-#HcP*;+/Pl?pKPa202rK[AJ!gf:ArgEYPrgWeTpmqGVoq2&Q%ABGUIscTe
+FE;J>C2K.5?iFI4@JXI4A,Ts7Ac66>BDQ9A[/R96Xi/2t`lH.!a8j?ZaoKZbblZ,4c2Q#gci;;i
+cgbfLD#S;LDZ=YTE;jkWEWC1[F9-N-rc`""H$Xd`I!pHnJ:N3'K7nu6LP^kGN/`jYOHPflQ'[l+
+S"-%@TV8-VV5L8lX0&P.Yd1UC[^`l[]Y;.r_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$dJn^~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaDhqm2Fgt^Z<g=b-1fDLI(L]3&(L&Qc)KDpK#J,k)qIf=irJH(,sJ1=K0?=J)!DJ3Te
+@q9/&JphulG]n+GChREk@:EZ)N/W[O>'GUICiFH<Hi8BlIfFioIfFocIfFioI/\QoI/eQkHMi-b
+HieYBHiAEaHN8BeGlE!^GlN'hGlMskG'.qLF`m\*!HWA\Fng(TFT>><;?'Gn;,Hs^#Yn/k:/=V[
+9ht[^!DH,b9+"Ep?<9fm8kDTH8cD?[9)qT`8H;B^9)qZ`9E%N`9DD3\9)qoi<;ohr;?]oq;,L7j
+p/:ofrDNPj!)ibm!)WVkrDEYn;Z9Mn;#O8k:^0cn;,L4f;#,&0DYe8OE;a_RDusrsDuO_UEVaYK
+EW0qQEVsh\F*)MHG'3e+r,qp\r-&-crceBerd"Hg!IK.iHi/<gIfFltJGjruJ:[ZNq1JKrqM"Zu
+reL6(pPB9+EcH#7CM@HpA7U,f?iFI4@JXI4A,Ts7Ac66>BDQ9AM>`//Pl-dKQC!o(rKmSOr0RPP
+QC%T<qj@GQnSA)>rb_RNs)7pVrc.sY!-A-]!HiSbG@u/GH?spcI=?ZrJ:W?*KSG5:M2@.LNK0']
+P*;,qQ^F21S=Q7ETqeE[Vl6VrXfek3ZEpsI\@K5a^;%J#_o9X:aND]NcHjndeC<($f\5'7h;7)J
+ioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HlrU^#>s+13ts*t~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaDhqm2Fgt^Z<g=b-1fD/GG<;oer<;KSp<r,hr<;]_u<)Zaqr)NSm),i%<.4R>:1bgU6
+0JG.I5sRUr5!(ba2`3Dj0b,msN/W[O8No1+:Jakd;Yj>e;Ya2i;Ya8j<;]\m<<#np;ZBYq;Z'Al
+;Yj;l;Z9Vp;YX,Z;ZBSq;H$Kf;$'Wo;Ys>j;?9]orDWVls&&eo!E2tq<<53Dr]C<F4?PVbr\t!@
+3&itu2uku82ubc>2`N`R3&ggp"$/D"2#T312#T?42uY`72#oT63<(r:2Z5T32uko92?5l=4o[YE
+3r_5?3WM8;4T@VE4o7A@3se&65<_7o4?Pekq`OsB4o7GA4UF>:5!;%k5#4sNq,%/h:]4)i;>j>k
+:\[cd:]!u_;>sDi;>sGo;,H^WpeUrfr_WVlr_iSk!`Drqq,I/g!*&VirD`Mir`&kq!)i_n!*&ns
+r`0##r)s&%s&]/$s&T_3='/R&;G^1e:eshZ8kMbU?iFI4@JXI4A,Ts7Ac66>BDQ<?;#jGl;?Bcr
+<;oet<)lrt<;]`!<)Z^p<;onr;ufqgC]/)KD>\;ODuXeUEW:%ZF8g7^Fa!b.B6\]JH@($fIXclu
+JV/T.L5(J?M2R=PNfT9bPE_?!R$jG6SXuLJUSO`aW2co#Y-5(8ZaI6O\\#Mg^VI_(`Q$!?b0/&T
+cdC1jeCN7(g=k?<hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@
+JcF-tJ,~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfDhZGU]."eU&L_bT)kOSrLEkV!h,OFr0[AJr0@>LrKdDK.qsrk
+K;"d"NJ)b9LM3imVPU/_R[B8!MM[(@J:ET=NJiX%CR0'iJVT#FQ2[$IP5pdFOT:RBPQ$a7Ont1<
+OoCO;Onb"=O,j1"rf7#<qN(B2oo/s1repf6s+pf5LPPb]re:B*p4`L#!aK&<r`on:?!LW?>[(H;
+>Zt;0>Q7k/>?P-6r`Tk<>$5$3=BJO;H\RN<MhuRcrDWet<;ont<Wc?$<E8uspf%#gs&8qss&B5'
+=(#HG@JsU6?NOP>?2._/?sd;L?iF@2?N4=1>lS+.>Q7t->6%k+>Q7t.>6A&5>[7)/s'#G*s*O`k
+s*FfpH[Ga>s*ains*alq"atiKIt3(GJ+nKmJ,b*!JGXorK)^H+KS+o1K`$Q(L'!-dM>W57Mi*FM
+Mi7RnrJgi;s,Hu;s,[2A"Hek2Pa)-3qipuCs-<eSR$a;0qO7DQqjdGPs.8nUpn/.kU7mZuH[C$[
+EcGu3Cm&0)@/aU2@fBm9AGTm:B)H<:BF2&NYct7J`Poj;rQ"u\qoSo_rlkMgbK^%3!71Vh!717P
+r+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeEMi<XVO-,ThQ'Rc(R[]h=
+T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0gYL]Ci8N\UjQ5Oekiq?t
+m-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfDLI(L]<,)L&H])KE$Q'Jc1*!J,+QmIfP#tJ,OmH;eTHFG]Rb;
+@p`bX=+c*RI!g-\Ec5c.An5@Y@;0FjMhtVEH>7;;F`dM/rdOipr-eWqm=#%`qgAElr-\Hhqg8-d
+"+,EBHiAEbHNAG<q0;map3?U_rceWkG'.qLF`m\*!HWA\Fng(XFoG;<;$Kio:f("c;#3uf:B+*$
+:/=V\:/4MY9MA/S8kW5pB`;fLCL:$>9)_E]8c_RWr_!5`r^d)^r_*8brCd,^s%E/]s%EAjs&Atr
+s&'"t;Gg:i;ta,h;>jDj;?'Pi;>jAs;,U:h;,C*f;>sDl;#jMn:]OAjDZF\ODuXeTDu=PSDuO_U
+EVaYKEW0qQEVskWEs$N,G'3e+r,qp\r-&-crce?ds*=Qhq0W$fq0r3js+1-#q1JKrqM"ZureLK/
+!/^T/pPBB;M1'A_E,KK+C1h$fI:)t]raGY4raYn;qITY<r+Ge<!/^Z/!0mGIs-EYNrg<\OrKmYQ
+QC%T<qjI%kr+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeEMi<XVO-,Th
+Q'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0gYL]Ci8N\U
+jQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfD/GH<;f_q<:a,i<;fhs<;oer<;fhm<%BFN-S%8;1bpX50JGIR
+5sRUr4ZbYa2`3BG1,(C?2)U;K8P;ZM:Jk(i;H3Kkpepla!)iVkr`&bnqGdDkr_ieprD<PmqG[Dl
+r_ieppJLKZs%rkr;c?Ti;>jDh;?'Mp;c<Qmr)3Pls&&tu<)l(Cr]CEI3]oJd4?5M&3!VH'3B9&Y
+2`gan%lQ@+2`3TU4$,Sh4?GS_2#T321c>4i!&sm8r\X[6rAag9rAOX6qDeF3s#g<Es#^KI3]T2]
+3]m."!Bi[H4oRPF4$5Y)3se#55<h=p4Zkklq`OsB4o7GA4oRYF4Tdf05=#$As%iVj!)`Yjs%iGe
+r_NGgpJLodr)*Gk!Du\]:\dfe;>sDk;?'Pj;Z]iq;u'DZ;uK\i;uK\q;ZK_n;u]hr<W6&!=T)D&
+=T;J$=T;J&<Y/>7=]eR":f'qa:ejYT91rXk@/aU2@fBm9AGTm:B)H<:B`1d.;#X>o;cH`q;Z]ou
+<W,nq<<6&tr`&ksrD`B(r+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeE
+Mi<XVO-,ThQ'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0
+gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!nO0CrhKIes.TIcrgs4_Sc5/ZS,SlURJiNNQh6UDQS4_bK7]ee
+PDt3DK8=3BXehqkTpqF5Nf&UIKn,&@NfB'(@r-(+IY<K9Pa%GuPa)02!0[>D!0[8DrfZc5qN1W;
+r0$l<plP?5s,R)<qiCN4oSij0rJLi:M2@%DL\li*L&Zi"Ka)^+?!^cB?N".<>[CZ>>[(E9>$G37
+>Q%_9>?Y67>Zt96=BK6^NfT-Yr/1W-DHm*>s&B%ur`',&<E3!u<W5tm;ZTitqc*So!*&qts'P_5
+rF#Y4s'5Y3?i"+-?iXR4>ln><?2e+/?2\"->lIt->5h_2>[(E9>?b?;rEB>,>?h)1#[(85H?spb
+I!bg>!.FfnrdFfq!e#NHpODmes*k'"Jc1,rJc:9$K*6j[K7npUL&Zl:LPUeEMM[4JMi*FMMi7Rn
+rJgi;rf-l:#`k(/OckolPa)04qipuCs-<eSR$a;0qO7DQqjdJQrgrhUq4Ie]TV;@Z%&&f7I!^-]
+Ec>r4Cm4j+raG\5rF>h;qITV;rFbn=rb2J>Yct8/`<"!!rQ"u\qo\l^s2tDerltMirQb%Nr+u@L
+qelFPs)@sWs)J*\rcE.&G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StD^N
+UnsueWN*&%YHY==['mHS]"G_k^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s3Udr~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!nN0areUQ/!/C<'re1<(rdt-#rdXuupjW!fs*u&.BOY@nF)>W#
+?X[MIJqAAuH['[RDej&tARf-IC&_oR<E`gABl.j2GkldfIf=cYIK4fnI/eWmI/\HmHMW!bI/SEk
+I.VadH?o=2rd"3^rd"Ng!I&_bFoHI`F*.;%q/cXA;uTYq;,[9gr_WJfr([>i9hnI_:&R`f<+0W]
+qJ6FM>#%[^8P)NGrCR;f9M7uM8P)PQ9)qZa9DqK_9DV<^9Dqch<;ohr;?]oq;Gg=jp/:le!`Dln
+r)*Jlq,.)gs%rns;,L.drDEMir_`\ls%rkpDf0IhDZFbTDu=SSDt\/DEW:"REVskWF8p=_G'3e+
+r,qp\s*"QgGB\<2GQ)jeH2W'hHNJM?HN&6kI/SKhIf"TrJ:W:NK)(&oK_pJtLAco&M"cc+MZ8M@
+I;s4FDJNs#An,D$ra>_6qdTM6rabk:rFZ"@ph9Y@rJ(68s-EYNrg<\OrL!VN!13\Pr0d1mr+u@L
+qelFPs)@sWs)J*\rcE.&G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StD^N
+UnsueWN*&%YHY==['mHS]"G_k^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s3Udr~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!7psG!*&nqs&AVjs&Anr!*&qrs&Attq,A@i/Li512Dd0@/2&\:
+6U<n#4$>Yc3B&fN0etF?2Z>Q>77U$G9i"Vb;Z0Sl;ts8c;#jMh;u]ho;u0Jm;ZK_p;ZK_o;?'Pk
+;u]bp;ZK_i;#sQnoMY]ds&&kr;Ya2g;Yj8j;?9]or)<Pls&&eo%Pg114$5Sf4?P\f4?GSbr\t'B
+3''&Z3W;#82uY`82[q`/4Ztnj4Zb_f4?GP]r%e=0rAO[7r\jd6!&jd8s#9m7r\s[5r\j^;!'U<D
+#<Fk*3]]>b4o.8C5<_4nrB(*B4T7DL4?bto5!D+l4[2(+4TIVA55[SD56!eG49If55<o*D!DlSe
+;#a>e:]aEf:]+&_;>sDi;?'Mp;,H[Vr(mJk:f($g;#X>l;Yj>l;?0Yk<:!Q]<;0>j<!#ur;Z'Jn
+<;ons<WQ9(r`T8'r`B)$s&]2#!EWD&=U\D0;,C(b:f'k[8P;bV@/aU3@f9g9AGTm9B)QB;B`;`F
+;#jGl;?Bcr<;oet<)lrs<;fhs;uTbq<W5tiC]&#JD>S5NDuXeUEW:%ZF8g9$F`qqPGBeCZH@($f
+I=?]sJV&N-KnbA=M2I7NNfT9bP*D5tR$jD4SXuIIU84W`Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<
+b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhrqcQirqu`n
+o_sFAJcF*sJ,~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U"4l#PV#I.hUApqeT`1S`SckUSS=?#IRf/ZSR/<6HQ2m3IQ5u<V
+LkBK;Ss>1cI>3SkXKA=rUS+'EQ&^]WL4k&7rf%5E>[qViGC>.!OStCDQ2[$JPQ-gGOoLUBPQ-g8
+Ont1;Oo(=;Onb%7O8k7?NVee3NqA;2N;\Y<MM[1GLPPb]re:B*q1T0$G^*M"?<gfC?!dJ8s',_5
+>[(B8>PD;0=^,*5>%DuBOH>N^N;8A4HY<=Ws&K(us&K)"rDihrpeq;p<E3!ur`&nrs&B"u"^YPE
+@:E[D@/jU6>le8=qHa//ra5b6?M[t->lS+0>Q7k->?q/3s'#G,!Erb->6A&5>[753!*]A+s'#A(
+"'U)!HiABmIJnQnIJSEeJ+nKnIfY(NrIFcrrdt0&!ec2Yre13'%YfapM2I1IMMd=LMi*CMrf$c7
+!07&<rJpo=#*=t1P*;,prg!AFqj%2Is-NbQ!1E_QrgW_RqORVWp7M/R!hZ-Zr1XXoOb.t,G'.hE
+DeX!NM>gr[@fBm:AGTm9B)QB;B`)QMZ*:I7`l5p:a8O'Zao9H_aT0K^c2Yrec2Puicd'i/C\qrH
+D>\;ODuXeTE<:0%F8g8tF`qtQG^+L[H@($fIXcluJV/T.L5(J?M2R=PNfT9bPE_?!R$jG5SXuLJ
+U84W`W2co#Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hVd>Nj5]7`k32'olKdg(
+mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcF*sJ,~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U"4l#PM>i>2LB*)*L&H])KDpK$JcC8rIK4fqIK=qIqgTT9DIm9Y
+H#dh:@:!GT=+Z$OI!U$ZFE))0ARo7Xrb2^SBieJJASZ1(FF!Y0rdOlqkC*DZqgABkrI"9br-\Kj
+"FPQCI!kR5s*=ZjqKVsap3?U_s*+QgG5QL^F9-H)qfVgYra#P&r_ibn#Z=Mr;,:"b:Jgm`r([_t
+9heAX9MADpDJsH2Ci/ua"(G;'9)M9[8dJ'`91qlK8P2VS9)qZa9DqK_9DV<_92baf!*&qrs&'"t
+;Gp@i;ta,g;?'Pk;?'Po;>sDk;>jDm;$9co;,C*f;?'H#;,C+e;G^1e;G^1eqelIRrGVRP!,qOL
+pMp4Ppi67Qs)\3^!HrVaFSp:[G5lagG'A.TrHJ9ds*=Ng"+,?@HN&6kI/SKhIf"TrJ:W:NK)(&p
+K_^>sLAQc%M"lf,MZ/GBMMZ_%EH#c0Bk_0hA:87m@JXI4A,^$8Ac66>BD?0<C&WheL&@59QN!6M
+R/WHNR/`HPQi<BORIt@mD#J5KDZ=YTE;abXEcZ=$FDQ)CGB\:VH$Xd`I!pHnJ:N3'K7nu6LP^kG
+N/`jYOHPflQ'[l+S"#t?TV8*UV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2
+gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$d/SU~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U!nPoOqc*VqrDW_qo2Pcir)E_rrDWVoqG\Ii/1NA72`*6?.ki\;
+6U<n#4$>Yc3Ar`M0etF?2Z>T67KuO\:Jane;uBVk;ts8d;?'Pi;u]ho;u0Ji;u]bo;#jMj;u]bq
+;ZK_i;#sQno25]g;GpFkq,.)gqGI8j!E2no;uKSt;(sa\4[&a+"?S_-4?WU(r]'p<!':*>r]'j8%
+Q67)2E!NW5<_7o4?Yehr]C-B!^/V(r%e@12?#N62uY`82?,T53<(r:2Z>Z33!2)t2EUn#!'U<Ds
+#L<D3]]>b4o.8C5!M1nrB0s=$9^U<5!D+l4?ktkr&k$Bq`ap@!C&dI4UF585X7Ou5Z(<Qq,%)eq
++q/h:/=[`;"mid;#F2i;?0P]:]+#k:JakbrD<Mks&/\ls&&hqq,H]Zr)EGir`&nrr_iYm!*&qts
+&T/$rE9/&rE'#$s&]2#!EWD%=oVS4;,U4e:/=_]91_`L2u[7^@fBm:AGTm9B)QB;B`)TD;$Kiq;
+GpFm<;oet<)lrs<;fhs;Z]ou<;okt<:t&(D#J5KDZ=YTE;abXEcZ=$FDQ)CGB\:VH$Xd`I!pHnJ
+:N3'K7nu6LP^kGN/`jYOHPflQ'[l+S"#t?TV8*UV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa@4aN2NIc
+-FY_daZdtf@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJ
+cC<$d/SU~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J1f%&:"Unjc\U7n9RrLa+]!M,b[S,SlTRJrTOQi<9PQ'Ra7Q2?jq
+MLfH7SWnq`KntS"XfSCrVOs9BPE1TVKn4]2NfB$YJ7NP:H%:U&P5LREQ2d*JPPgUCPPgU?OT:R>
+Ont1<Oo(=;Onb%7O8k7?N<#"9O84h-N<"q:MZ\inM2;.dr.b3)!/16'#'P99G^!FurEfM0"C>A?
+?![G7!*]A+rE9Y7>$>'5=^#'6Apoi,Pl?aFNK!Ui!f1r,r_s)%<)cjt<`]0!r`&Vjs&B)!<W5tt
+;u]f"<F&p<@/XO5@/jR:?<piC?i+.0?i=@4?i"(->R"J=>?b98>l@k/>$G37rEBA->?kG4>6%q,
+>Q.e4=]eg1>$66#I=;'As*XrtIt.HH!.aiopON9n"Fu&SJ:RKIrdt-%!JH+)K`$N,L51SAM>`;3
+MuAM5MuJ\5N<#"<NW"n;Ns:].P*2#mPl?sFPkp[FQ3<PAR$jB?Rf8fPSGJfVT),&ZT`1SZT`:Ya
+TE(\aUApu!TostSI!9^TE,KH,PB()?qdTP7rabk:rau+Aph9S>rb;_DYct7L`Pom<rQ"u\rlY8_
+!6bAd!mJj3rQYGicM),OD#A/JDZ4SSE;jkWEWC1[FE_kNG'A.TH$Xd`I!pElIt3*%K7el4LPUeE
+Mi<XVO-,ThQ'Rc(R[]h=T:hmQUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg"G[dF-Opf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$ci8L~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J)f%&:"rJ1N1L5,V[rIk0&rdt*"s*t*!qgSNmqgSHm)fTCs<HrV(
+An#=`AQOJ7I<p9bF)c,6Bk:g_?i4UDA6`VUCN"9:I.r'YIf=iiIK4fmHiSTnI.Vd_I/J<kI.M[c
+H?o@3rH\*]s*=Wh!I&_bFoHI`F*.;%s)\HL?!L]B;cEZnr_`\l#uOMr:esn_:JXga:]F/u:JOVY
+:/kbDEc>r7DZ+GJC]eEY;G-jYr^m;d9MA)Or^m,^s%<>crCd)]r_*,^qbml%;c?Rl;,L4g;,^Ef
+;Z9Pn;Yj5j;Z9Mn;#F2h;?]oq;,L.drDESkrD<Pmr_NSmr_Nbq:iC8kE;a_QE;shWE,kYlpMp4P
+r,MaWs)J!Xs)\3^!d/[/rcJ'\r-&$_!-nHds*4Qhr-A?ird+Qj!.=`npjW-js*t*#rIXp!pk8Hs
+pkJ[$"GhhhLPPkbqM>90M2;.f!/gc4%XiD;Df0<(BkCjcIU$;iqdTP7rabk:rau+Aph9S>rbDFe
+!/:?9s-EVMs-WePrg3bRQBqK:s-`UsqeZ1Ir,2LPs)@sWs)J*\rcE@,G'8(RG^4U]H[L6iIXcm!
+JqJ]0L51SAMMmFQO,oEdPEhH#R$sM7StD[LUSOcbWN*#$Y->1;['mHS\\#Mg^VRe*`Q$!@bKS5V
+d*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#
+s3L^q~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J)f%&:"r)Nbrr_rhro2YfirDiksr_rhrqc3So*AT/r0KD$I0J>%4
+0fVNd5!M.m4#o;[2)@!B0/YZe2$P^(92/2Z;>sMk<;KPj;YErf;Ya8j<;TVk<;KPm;Z9Mn;Yj>k
+;?9]opJLrg!)rMf"Ar&p;c<EgrDNJhs&&kr;Z'Jn;Z8EN1&sK949n#24$5Vg3]d4!!BE.;3<2&<
+2[_T(2`<TR4?l(r5!Js/s#^WM4?P\e4?Pbi3]6jl!Al\52Z>Z82Z>Q72E1Ups#9p8rAXU5!B2q6
+4:=;74?>M`3BB2_4?`R(!BraI4oRS@3s%Q/5Q3kH4T@SF4T%>C4?`U+r&t'E#!P154?btpr]^EK
+5P\.U:]!rk;,C"`:]+&`;>sDj;>jAn;,H^Wq+q&grD<Mks&/\ls&&hqq,H]Zqc*Air`&nrr_iYm
+s&B"ur`0##rE0,&r)Wr%=',?$s&T2&r`Kk9='&L%;,L.c:JjhY84lQ2@:B%BraYq<qITY<rFbn=
+r+Z.Fr_Wbo;c6Nm<;of#<)lms;cH`q<<?,u;u9ShC\qrGD>\;NDuXeUEW:%ZF8g9*F`qqPGBeCZ
+H@($fI=?ZrJV&N,KnbA=M2I4MNK9-_P*;/sQ^F52S=Z@GTqeE\Vl?\sXfen5Za@0M\[f>b^;%M$
+`5Ta;aihoQcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zj
+rqu`no_sFAJcF'rJ,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+iuR.<i8EMLhVI#CgY1B7f\"g-f%&:"e"rk8US4BSrLa+]"eD0QS!ofER/r\CrL!SNrKdJK!g]+9
+rg!GJ.#Eh4BqUoWM1UA7LM3lmV5L,^R[94uM2I"=IZ08FNfBNsE--JXKnfDf!1!PJs-*ADrfd8C
+qN:c?qN:W9rK6u?q2tH6q2YW<NK&tqO8"\-N<"q:MZ\inM2;.dr.b*&s*"Efrc\BL?2S"9?!^fC
+?<g]??!LS2>Q%_9>?P-4>&AkXPa.JsOHGWarepl6MYN)5J8SRj<)ros!EE1u<W,nl;ZKeq<W?%u
+;u]hs?2n42@/XO4?j0nD?!UcDqHj,."(,>>>l@t->lS+0>6A&5>[784$!LP;>$>08>?Y50>l%\(
+=oqi/=oMS1=^$3$I=-HkIf=isIfFroJ+nKmIfk4PJ:RKIrIY'%"GDD[KS98W"GV\fLl(nas,6l8
+rJ^f;rf-l:rf@)A!g8b2pQYT@$C$gAQC!r*R@0M3rgNhUq4.;Ps.9(Z!20=`q4R_Z!MH.aU(F)q
+UnO!&I!^'[FDl)6CoDLR@fBm:AGTm:B)QB<B_uNAC'1cGYc[oEs2Y)Z!6P5_s2b8arlkMgbKTt2
+s3LRXq/#tGqelCOs)@sWs)S-\s)e9`E-?GLG^+L[H@($fIXcluJV/T.KnbA>M2I7NNfT9bP*D5t
+R$jD4SXuIIU84W_Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8Mj5]4_
+k3)!nlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Wirqu`no_sFAJcF'rJ,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+itgY5i8EMLhVI#CgY1B7f\"g-f%&:"e,>+&LAZc(K`?])K)L6(J:W6$It.BFrI+]p!.FiqrI=i[
+).6KhEc#Dr@qB1PK7SDtH?aOODej$!@praBBa8a'@q][sF*7,'nUCIeomQmhoR-=Yr-\Bgs*XHc
+!d]-;qfr'bp3?U_s*+QgG5QL^F9-H)rH8-Es'5b4?!UB.rDNYm%oQ2#:f("b:Jae^:Jah_:Amug
+:('ck=D)buF)l5<DJoDis(hCG!bPS1qapcZ"%u<\9)_E]9)D9[9)_K]9`@rj;Z9T&<)Z^n;Gg:h
+;,L4ipJV#g!`2cmqGI8js%rbmr)*Djs%rns;,L.drDESkr_WYnr_WVls%r_ms%rZ4qeuXUE,fmn
+Dujrtq/QFRr,MaWs)J!Xrc80`F`qp,FSp:ZG5-:]GlE!eH2r<kHN&6kI/JEgIf+]qJH(0%Jq8ON
+KD:,pL&-Q#LBNEgLkgcbM#E/6MM[.FM2:q`%"<8:DJa0'BP(ddKj+@_raYq<qITY<rFbq>qe>tC
+re:E,r0@;Jpm:uI!gf4=r0[@sq/#tGqelCOs)@sWs)S-\s)e9`E-?GLG^+L[H@($fIXcluJV/T.
+KnbA>M2I7NNfT9bP*D5tR$jD4SXuIIU84W_Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.h
+eCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Wirqu`no_sFAJcF'r
+J,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+itgY5i8EMLhVI#CgY1B7f\"g-f%&:"e,<;H<;oer<:j/k<)ros$rp8,<E)pr;cH^r<E/osr_s.W
+/1N>61bpa:r\#BQ6U<n"4?Yed3B&fP1,:L@2DmBM1d=]/:/Fed;,U:jr)EJjr)35c!)iSjs&Ako
+qGd;ir_ibn!)iYlr_ibp!)iPgs&8Pf"Ar&p;c<EgrDNJhs&';);GpFl0JG791,C^L55mYL4Zkeg
+4?GVbqD\^@3B9&Z2`E_p2Zc$'62a%L5!]*1!B`OE49%GB49%DF5!1b\r\FU42)Y@ks#9s9r\Xm<
+2`E]U2`L[nr\s[5r]C0Br]CQO4?P\d3]T5^4$5\'49Rf35!;(.4Sq2I4?bto5!D+l4[2(,4o[YA
+55dVM5!M4o4Zkkl5lO"J5QO)7rD<Miqb[;i!`)Qer)!,brD<JjrDEYn;"%3P;#aDl;YsDm;?0Yk
+<;]\p;YF#i;H*Ekq,@8ls&8kor)3Vq<W,r!='5H)s&f5$!a&N*r)Ni"=T2J'=T2A2=Ai$n:ejb]
+9M7uL:Fl<OraYq<qITY<rFbq>qe>tC"&_un;#XDm<;of#<)lms;cH`q<<?,u;uBYmC\_fED>S5M
+DuXeUEW:(ZF8p@^F`;MJGBe@XH?spcI=?ZrJ:W?*KS>/9M2@+KN/is\P*2&pQC+)/S"6.CTq\?Z
+VPgDnXKA\1ZEppH\%0)_]t_A"_SjF6aND]McHjnce'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-X91
+nF?&>o(2MQo`Fj]p\ssfq>^<gqu6NlrUg)?s+13rs*t~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+*TH&9i8<GKh;-l@g=k64f[na+e^W*td\W_6U7n:ZTDtJdSXc1=R[X2CrKm_SR$X,*rg*JIs-3MJ
+/=)QdClF*`Tp_%"K8>>=B<A54VPToSQB@2bM2$S4N/`gWNiJ2HGC>$sLR%Osrfd8Cs-*ADq2t]?
+qN:];qN:]=q2tH6q2YZ=NK&sYr/^W5oSij0regc6re^W0r.b0(!-nHfs*+Nhra#;*s'5S0r`fD-
+s'#J+r`TP2>$5!PQ^F';PR!D6P)bN]N/[al!f;hmq25E&BN.r2<W5tt<r>tr<;BGm<;]br<<#ks
+<;p2'?N"=2@/jU6>le8=qd'8.rEoV4r`oM/ra#M.s'>Y/s'#G-s'#q9>?Y68>$P99>$>-8?2@e)
+=pS85=]np3=^##-IK"]uIXcitq1&*gs*k-$JUi:IJc13#K*6j[K7npUL&Zl/LPUf^MZ8V6N;\_9
+NrG%9NrP1?OoLUEPP:=?Pm<P=Q'Rc'R$dl@rgNhUq4.>QrgrtY!hc0Xq4R\Y!MH.aUAgqfU^a#_
+IsZNeG'%YAD/>_grF5_8rabn;rFZ%Aph9V?qeH+Gs0)L*rl4uYrQ"u\rlY8_!6bAd!mJj3rltSk
+CMWW[r,)=KrbqgUrGhjX!-A-]D0:#FGB\:WH?spcI=6QoJ:N6(K8#&7Ll$tHN/`jYOHPflQ'[l+
+S"#t?TV8*UV5L8lX/rG,Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$cMrC~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+(ZOE3i8<GKh;-l@g=k64f[na+e^W*tdf,%(LPCQ]L&Qc*KE$Q%Jc1-!J,XonI0+kGIK"[GIsuiH
+BOb(fEc#DsB4b[TJUi/rH['XPDJNru@pre\Bkh?rJ9$9UCiFH:npU%Ws*s]j!.Ffns*a`koR$Oa
+qKi3ioQpXcH$T=4!I8qhH1lL_H2`$gGPlU_F9Q`-F`gqqrETY7?W9s%;Gg<j;ZBSu:f1%b:esmd
+;#a>k:B+*&:/=Y[?upI5F)l;?Df0H0D/O4hC\MWH@T?%t8cD<c9M7uM8P/nRqb-iZs%E8`r_rhp
+s&8qss&8hn!`;iopJV#g!`2`lqGI8js&&emr)*Gks%s,$;,L.d;,L4h:f.'er_Nkt:f("d:f'r+
+qeuXUE,]gkE:S#KErU.XErL+^FEMbLrcJ'\r-%jZs*4NgrH\Hjrd+Qjs*Xcnq0r6krdY-&Jq8N*
+r.FctpkAR!onWO&qhb9-p5'3,Ec>o5Ch[QpAS$<rrF5_8rabn;rFZ%Aph9V?qeH+Gs+UN-r078J
+pQtlH!gf4>rL!V#p2'YDqelCOs)@pVs)J*\rcE""G'8(RG^4U]H[L6iIXcluJqJ]0L5(M@M2R=P
+NfT9bPE_?!R$jG5SXuLJU84W`W2co"Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<
+hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+(ZOE3i8<GKh;-l@g=k64f[na+e^W*tdf!2G<!#ut<;TYq<;T\o;ufkr;ufqp<!$'!<;fhs<!Xs*
+.ks%A1,(9Y0,ul<69[Rq4ZbV_2`<KI1,(UE2)[<P5!2S8;,L<k;?0Yn<;BJj;YEuf;Ya8k<;fbj
+<;KPm;Z9Mn;YsDk;?9]opJCrh;tNrk;,U:j;c<HhrDNJhs&&tu;Go5'r\4L11G_2m49.PD4;^4C
+3]T2[3&rrX3]]8]3&ifT3&`cS4@):25QO)7rB1-Eq`Fg?s#^6C"$Jh/2Z>N42#fH42?5]82ZGZ7
+2?5]82uko92Z>Z72uko:3;u&?49%GC4TRZ,r&Om@4?`O'"$\t44oIM@3se#55<h=q4Zkklr]L-B
+!'L-B!BiXG4o[bH4o[VF5=#34s$-ZN5XJ<H:]!rk;,9q_:]4,`;?'Jk;>a;l;!q-P;#aDl;YsDm
+;?0Yk<;]\p;YsAm<;f_s;H$Nk<;BJl;ufkp;Z'Jn<;fhu='5H)s&f5$!E`G#<WQ9(r`T8'r)X/+
+;Gp=f:/4SYrC[,BrF5_8rabn;rFZ%Aph9V?qeH+Gs%rbmr_reqr_j##<E)pr;cN`r!`W)trDil5
+p2'YDqelCOs)@pVs)J*\rcE""G'8(RG^4U]H[L6iIXcluJqJ]0L5(M@M2R=PNfT9bPE_?!R$jG5
+SXuLJU84W`W2co"Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'o
+lKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7n9f[na+e^W*tda?I;U8"@\TDkDbSXZ+;Rf&TPR/WHMQMd$HPl6jrClNmt
+Tq.@%K8##7B<A25VkfoPQ]I/bL4t8/Mi3UTNK9C4c[CD"LR%Lrrfd8Crfd8CqN:f@q2t]=!KiK?
+Oo(=;Onb%6NrtE%NK3ptpl>?5!06i6!0$l7!fDhkreLE+"GM#DGBa%3s*+TO?![G9!FK.3?3O\B
+>[1T?r`]n<>?b97=^,*8>%*)QR[KH?PR3P9P)bQ^NJr[MreLW4Mi.=g"bq),<)lrt;up!"r`&tu
+<W,nm;ZKer<=Do.<E)mq>[1Q??=%%=@JsR<?X@#D?=.(;?3+>=ra5k9?<piAr`ot<>?kH>>?b97
+>?kB:>5_Y*=oMY*=oqo5?27_)>5_V(=p8&4>?P'Wr-n]sq1&*gs*k-$JUr@KJc(-"K*$^YKDpQ&
+L&Zl5LPUeEMM[4JMuJV5MuSb7N<#"<NVnh:O8k@BP5g^IP`q=/PQ@&6rg!MJs-<VM!gf:ArgEbS
+rgWbSqORVWqOde\!2'([rLX.aTqVFZrM'q"V50fLIsZQfF`_SACMfA9raPk:rabn;rFZ%Aq.T\?
+r+c+Es0)L*rl4uYrQ"u\rlY8_!6bAd!mJj3rm(:TqJH(HrbqgUrGhjX!-A-]s)eHfGB\:Wrd&I/
+I!pHnJ:N3&K7nr5LPUeEN/WdXOHG]iQ'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0
+`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC<$cMrC~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7n9f[na+e^W*tda?HuLPLW^L&Zi+KE$Q$Jc1-!J,XooIK+cpIJnUD<bYiK
+G]R_6@:`t\<IoXLH[9jVEG]K*A7K(VBk_?sBlJ3KR;HnbFFNb.np^RfomZmg!doEEpjDa]rd=Qh
+!.=Ec!d]-;r-/6fGlE!^GlE!gGQ;scFoHI`F'JWKra#P1r_rhpr_Whs;,C+d;Z0Am:espd:BsTj
+:/4S`BQjAt!HW;\E;skVD$"TlD#A)CC]\<V;>Wra8cqa[8kT(Sr_!)]r(?r]r_38hs&/hp!`W)s
+r)*Vo;H$Ng;?Tin;,U<h;?'Po;?'Jj;>jB#:f:.f:f("d;Gp@grD<Pmr_Nnu:f("d:f'qa:&Al0
+EVFGCEVXYSF8p=_G'3b*rH8$]s*"QgGB\<2GQ)jeH2W$hHiA?jHiJKlIJJ?jJ,OosJcC?"KD:,q
+L&$JqLB*/,M>W2)M>rGBM10JaDf'<)BkCpeHq+*EraYq<qdo_<rb)%?r+Z(DqeQ4d!/:?9!1*>F
+s-NkSQC%T<ph]eDqJQ:Ns)@pVs)J*\rcJ0_"Eo!5G^9:7DL6bZIXcluJV&N-KnbA=M2I7NNfT9a
+P*;/sQ^F52S=Z@HTqeE\Vl?\sXfen5Za@0M\[f>b^;%M$`5Ta;aihoRcHstfeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7b5f[na+e^W*tda?JA<W?%p<W5tq<W,ns;ts>l<W,nr<=)VU/gi,/2_m'<
+r\"d@6pa+%4$5P`2`EWN0etE\2@26"5!M_;:f11krDNYor)EJjr)35c!)iVkr)<Ypp/Lofr_ibn
+!)iYlr_`bq;YO#i;H$Ne;?]oq;H$LlqGI2hqGI8j$8F4g0/51:1GM'Wr]C]S4?GYe4Zk_b3&rrY
+3&s&!3WD&=2?#N=3'9Jn5sRa85QX/655dY?48q>I4$5Vg5!1e^r\FU42)Y@k!&sm8r\Xm<2`E]U
+2`L^or\s^6"$Sk14T7GB49@Z.4T%5B4$5Yhq`FsE5<V1.4Sq2J4[2.p5!;"j5<V+krB10C4o@JE
+4[/j.s$-KG$p6a>5X.Iu5X.M"69tEE"Aquj:J^pcp/1idrDEJj!)`5]!DlSi:]jKi:f73gr_`\n
+qc!Mm!)r\mr)<Vnr_inu;cH`q;u]bq;u9Pi;uT_r;uKVk;ZTitrDir#=T)A&=T2D%=T;J$<rZ5$
+=T)A&=Su8"=9h`$:f'n^:JLd\!%InVraYq<qdo_<rb)%?r+Z(DqeQ4/!)WYnr`&kqrD`eq!*&qt
+!`W)tr`/`0qJH(HrbqgUrGhjX!-A-]s)eHfGB\:Wrd&I/I!pHnJ:N3&K7nr5LPUeEN/WdXOHG]i
+Q'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$cMrC~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag(E#jf@SU(eC;sqdF$=8U7n3OrLO:cS=>t9R@0G1rL!VOqNh)Fqiq)F-u4lp
+Jt\ZuM1^S>LM3fiWi2_aR@'(sLl$h9IuB;IO,gWUNS]&8LPYJbs-*ADrfd>EplYQ=qN:f>plYH:
+q2tH6q2YZ=NK&sYrK$`6rf-r<q2GB5rJL`7M2D4ereCGu$[-c>GC"LYGB[A"?2%Y@>@(W?>[(B9
+>?P'2>$G9:EKlu^R[KH?PQI&3OT(7BNJiXMqhY90pko9*D-L"?r_rnu<rQ)"<)riqqGRAnqGdi$
+>?kE=?!^iE@/aU5?j9tE?!UcD?i+1.?km$S?!LW??!LT=>[:T=>?Y69>?b97r`]A+r`fD+!*fG-
+qHNr&rE0M3=^#$5=BL*'It3(HJ+\?lIfk4PJUmWKr.=s$s+CB)re13'%YfapM2I1IMMd=LMi*CM
+rf$f8!07#;rJpo=#*=t1P*;)orfd2Cs-<SJ"dPC>Q^=*<R/i]TS,&TNSc>;XTCnlTTDtV^UApth
+Uo"'d%\],;H[L'\FDu58D/i0WraYq<qdo_<rb)%?rFu1EphTo6!3Z=@s2Y)ZrQ>/^!6kGe"3es4
+cMMGQD>A)KDuXeTEW:(ZF8g7^Fa!b.D0U>PH@($fI=?ZrJV&N,Knb><M2@.LNK0']P*;,qQC+)0
+S"6.DTq\?ZVl6SpXKA\1ZEpsI\%0)_]t_A"_o0O7aND]McHjnce'ut#f\,!6h;7&IiT&tZk2tjk
+l0@U$m-X91nF?&>o(2MQo`Fj]p\ssfq>^<gqu6NlrUg)?s+13qs*t~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag(2lhf@SU(eC;sqdF$<rLPG_\s+LE)s+:3#rIFirs*jin!.OfnrdH7qBjY7m
+Ec5T!AnGUTJU`/qH?F:LD/3cr@pi_[C27U"KnaZLDK0cBl@&PYrI"`rIt.-?qL/-dp3Zacm<ekZ
+!."Ke!I8qgH1lL_H2i*hGPlRpFB`!R>[:T@>?tQ@<)cdo;>jDl;#aDm:]=/j:Amro:/=Y\:L/$c
+GQ)^cF)q8!s)7mRs(qRJ!GlQGC]\0N:&@N^8cq^[8kT(Sr_!)]qb$l]s%N;gs&/bns&')!;Gp@h
+;H$Nh;Z9Pn;Yj5j;Z9Mn;#=,h;?]oq;,L.dr_`\n!)WVk!)iem!)`_l$W0_s:Jae^EH#l:EVj\T
+EW0qKEVXYSF8p@^G5ZO\Fo?L`G6<#4GBj(1s*4QhrH\HjrHeKjs*Xcnq0r9lrIFit!.t-$q1SNs
+q1eNs!/UK.r.t-)rJD)AIrfRID/<p#B4PRc5%=M$rabn;rFZ%Aq.T_@r+c"Bs+UN-r078Jo9TNE
+Q^IYdphfhErbqgUrGhjXs)\0]!HiSbGAVSMH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPflQ'Rf*
+S"#t?TV8*UV5L8kWiW>+Yd1UC[^WfY]Y2(q_Sa=2a2lEHbg+P^dF6Urf@\d1gtgiEi8N_VjQ>Uf
+l07L!m-O-.n*ol;o()DErq-?dp\4[^s7u]kqtpBjrVcBfJcC<$cMrC~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag'lZef@SU(eC;sqdF$>?<<-"p<W5tr<W,nq;u'Am<Vobp<@BCN-n7572)-^:
+0/,:O5sIRr4?5G^2Dm<H0ebLE2E!ES6:b9T;,U6g;Z9Vm<;BJj;YErf;YX2[<;TVn;?9WmqG[;i
+pJCui;cE<d"Ar&q;c<HhrDNMis"XI+s"XO/"u/;)4?Pbir]C3E48h2>3!)*"3;toD3&W]Q3&`oa
+5l<qJ5lX%K4T7MD4SLr:4:=554?Ykk3]AoP1Go(gs#0m9s#0j6s#(!=3&iiUr\j^6r\t!=5!D./
+4T7GB497T-q`4g@4?Yk*497T0r]U6Cq`=jB5!T$1s#g<Fr]L0C!^&V/rBC-Bs$$]O4Ztnk5=#34%
+R<6D5XI_%;,C(d;,9q_r_W8bs%rYkr)*Pm;"%3X:]jKi:f70fs&&eoqc!Jlq,I8jr_ibp!E<"s<
+<#nr;?0Ym<;KPm<<#nq;Yj;l<W,tu<rcA%=TDS'=8uD&=8Z)(='/U/=]nj/rE&o!%9$,#:ejb]9
+h\/N:*jBKA,^$9Ac66?BDH6>C&D`@C]@63;#XDn<;fbo<<#ks<;ol"<)ZarqeZ%Eq/61Ms)@pVs
+)S-\rcA0`G5c]&G^4U]H[L6iIXcm!JqJ]0L5(M@M2R=PNfT9bPE_>uR$jG5SXuLJU84W`W2ZeuX
+fnt7ZaI6N\[oGe^VI_(`5Td<b0/#ScdC.heCN7(g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@o
+CW%T!quB_rqQNhs8)Wirqu`no_sFAJcF$qJ,~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%e`"g=k64f@SU(eC;sqdF$=eU8"<QrLX%Zs-j(YR@3r>s-NVKqN^uCs-5!_Oai%W
+RZiY`L5(P"XfA@uUn*s?NfK$RL4Xo7MiNgE_6B&EI"[-3nWX-@Pa%C0P5^[FP4t+=P5:=@OS=n8
+P5178OSt4?OSt7?NW5%:O8"Y9NK0%oN<"q:MuSY7M>i87H?XUXGBeB3Gm&A9?<pk5?4:1H?<pfC
+>[(H;>?Y81=V+eBBo8IOS=5k5Q'@PuPEM%,NWkE#M2@+HqhY90pko34H>*:Xs&9#!<rQ)#<)lrs
+<;KMn<;feu<`N/u>lS+0?3+D@raGb5"CGJA?!dM;r*BA1ra5n:?!U]??2Rq7?!LT<>$G6:>?Y50
+>Q7n+>Q7n,>QA(+>Q.h)=UA87=^#!3=BJ^VqLA0g!e5`Nq18Hqs+C?)!/(9(r.PH3LPUbCMM[4J
+MuAM5MuJ\4N<5&uNW"n;Ns:].P*2#mPl?mCPlI$JPlI$KQ2m9NR0&bDRf8fPSGSlVT),)OT`1S`
+TE(\]UAq"fV#R8#Tp:1WI!TmWEH#`2EDHLCrabn;rau.Bq.T_@r+bq@s0)U.a2Z-ta8a6[b5]Qa
+b09k0"3es5D"_`@DZ4SRE;aeVErU4[F9-N-rc`7)H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEd
+PEhE"R$jG6St;UKUSO`aW2co#Y->.9ZaI6O\\#Mg^VI_(`Q$!@b0/&Td*^:keCN7(g=tE=hVd>O
+j5f=akNM0plKmm)mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF!pJ,~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%e`"g=k64f@SU(eC;sqdF$=eLPLV=rIt3&!.t-"rdalq!.OlprI4Zms*cA&CL1Fn
+Ec,Q"AS#IUJU`)oH?F:KChm`rARf.aBkhBeNeDUjD/s`Dq0`6jnU:=ar-e0cqL/-dp3ZacqKi3i
+oQpUbH2MpaH1lL_H2i*hGQ)^f?!CQ<>Ph\3?;a^#;Gp@h;Z9N!:f1(d:JXea;#=#s:ek&-H$FOW
+G'.qKErL"XDuOSUDJX*'qJ5_>!b#)$r(6l[!)*;`r^m,^r(HoZs%<>cqG[Dlr)<Vn!)`_n!Dubo
+;u'>k;$Kip;Gg:f;#X;l;Z9Mn;#=,h;ZBSp;GmEis&&eos%r\l!)ibl"&Vlk;>sDl:BO?f:iZ5K
+o5XSHrGr'_G'8$-FSp:ZFp*#4GB\<1GQ2pfH2)^cHiJKlIJJ?jJ,OorJcC?$KD:,pL&$JqL\Zf)
+M"cc(M@GDkEc>r6Ch[QpA7T7:raYq<qdob=rb)%?rFu1Ep1j_`L5#Skrg*2C!g]0hp20SBrbqdT
+rGhjXs)\0]!HiSbGA_YNH?spcI=6QoJ:N3&K7nr5LPUeEMi<XVO-,ThQ'I]'R@B_<StMdPUnsuf
+WiN8)YctF>[C3TU]=bkm^r"".`lQ9EbK\>ZdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?sm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s3:Ro~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%JMtg=k64f@SU(eC;sqdF$=e<W6%r<W5tq<W5tr;u0Jl<W#hr<<jj(.P!S<1bek]
+)`U2N5<h7m3BB,X2)R*D0/b^G2C:RP7nlcV;>F)i;uK\i;u9Je;?'Pi;t*c_;u]_s;,U<h;uKSp
+;c<?es&8Pf"Ar&q;c<HhrDNVl!&+=*s"Om81,1L=1Hdoa4?Yn-497N,r](-A3B&rY3;toE3&`fS
+2`X,h5sYB7"@,1:5<f'0"["q24$,S"48M)>4p=)12Dd3HrAFU5!&sm8r\a^6s#C$;r\j^6s#:-?
+4Zttlr]L0As#^?G4?NL&r]C*BrB(3G5!D+mr]L0As#L6D4?c"/4p*r14[8p.r]U9D!'U9Es#hDe
+4Zttn5<V.l4[21s5<hCt5<qM#5X@\5:eje^:f-d]!)WSjrDEYn;"%3X:]jKi:f70fs&&eoqc!Jl
+q,I8jr_ibpr)E\pr_ibpr)EMkr_rkrr)3Dj!E<(s<WQ9(r`T8'!*B,$!*B)!#?P#1>$>'2=Su7t
+=:A,*:f("`:J4>Q7nk?0A,^$9Ac?<@BDH6>C&D`>C]@68:fL@l<)iiqrD`bp!*&qt"&r2uD"_`@
+DZ4SRE;aeVErU4[F9-N-rc`7)H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UK
+USO`aW2co#Y->.9ZaI6O\\#Mg^VI_(`Q$!@b0/&Td*^:keCN7(g=tE=hVd>Oj5f=akNM0plKmm)
+mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF!pJ,~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rol3%kN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bU7n6PSt;LDS=?":R@3o=!13SKq3CiA*.F*%JrH1_
+MhQn@M.`oiVl$5[R?`kkMhZt<IuF;d#]-TTR!3q2KTQ.ss-<8A"-o+7P5UUDPQ?u2mZIL1plYH:
+q2tH6q2bN7s,R&=pPo<7NfNmo!0$o8s,%)=LO"/hH$FOXrcn`pGB[D"?!gt<?41+H?=.#D>[CZ?
+>?h)1'3JF@@>:AESXc1<R@';)Q'@JqOoC@GN/NOMM2@+HqhY90pko<7LNHs)<W5qt<rQ)#<)lrs
+<;KPn<;ont<WQN4r`oG.s'G_5s'bk6!+5Y1s'P_2"^PJB?sm@@>le29r*0S7>[(E9>$P<:>$Cl/
+!*T;*s&oJ.>[@,/!*]>($!LJ7>$>'2=BSf)J+A-cJc(-"KDU?"Ka*9eLPUeEM>E)0MuJ\5N<#"<
+NW"n;Ns:].P*2#mPl?mCPlI$IPR3V@QC!u,R@'G3rgW_Rqjm\Wqk*h[!294]rh'4`!291^"/DZe
+V#I2$VP99*I<g-\F`D>:Dffi+rabn;rau+AqIohArG(t?#&LNJY/eQ%r5SfYrlY8_!QrXcc2Z#`
+D>%lGDuXeSEW:(ZF8g9,F`qqPGBeCYH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPckQ'Rf)R[]k>
+T:r!TUo(&hWiW>*Yd(OA[^WfY]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBu
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$c2W:~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rokipkN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bLkph@re1?*rdt3&qgn`sqgSTprdF]nqgBDhCgUUd
+F)G]$AS#ISJU`&nH?O@KD/!WoA7K'HC'[glML'&UEccR)IK+crIK"WbIJeQlIIhpaIK"ToHi&3b
+Hi8?YHNAG<rHS0ap3?U_s*+]kF^86V?2e+.?2n45>uFU"rDEnu;G^4g;,U1cr_WSis%`Si!E3\2
+Gl`/6rcSKfF)l8?E,Y_ms(h[NrbD:FoP=SC>uCMkr_!2`s%<5]s%<5_qb$l]qG[Akr)<Vn!)`Vk
+s&8_ks%rts;,U7g:f.-g!)iens%rVjrDE\n;GmEis&&eos%rYkrD3Sn:f($g;#a;n:/=\_q/GqF
+pi?@T"*A^0FoHL\Fo6C`GBWh,s*4Qhr-ATpH@'sbH[L5>IJJ?jJ,OoqJH1<$KD:,pL%pDqLB*/-
+M>W2'M>N/@Mi)t(E,KN/BkV-jA7ebMrabn;rau+AqIohArG(t?")N[GL&I;8QLpO>D>%lGDuXeS
+EW:(ZF8g9,F`qqPGBeCYH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPckQ'Rf)R[]k>T:r!TUo(&h
+WiW>*Yd(OA[^WfY]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$c2W:~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rok]lkN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4br`8nrs&Ahpr`&nrq,I8lqc!eI0.JG02Dd,d0,ul<
+5s@Lq4?5A\2D[-E1+tLC2)ZpH6:jpK;,U?k;Z0Pk<;0>f;YX)h;Ya8b;ufko<;TVn;?B]n;YsDj
+;YO#h;H*3c"]8/r;c6Ni;>sH9;(jRV1,1O>0etI=1G_3Y4?Pek4?GYf4$#A^3&rrZ3;bc?2`Nc]
+77-l;s$6QJ!^8_0r]C3E4T7DB4SV#74T@SL4ZbY^1Ggrf2?,Q72uY`62$>fr3&`ep2Z>Z83;kuJ
+5!1qh4$#Gb4?Yegr&OsC4$5Yhr&asCr]U3Bs#^6A"$8V/5Q3hK4Zkklr]L-B!BWIC56!bG55m_F
+5Q<nH4:=A=5X.Iu5<hD!5sYE8"&;Wg;!q3Y;?0P^:]+#h:\mof;?'Pj;u]bk<;]\o;ZB\n<<#nq
+;?0Yn<;KPm;ufkp;Yj>l<W,r!='5H)s&]8&rE'&$r)Ni"=T2M(=TDS%=8Q,"=Ue2':esq`:.n5P
+8PUaFrabn;rau+AqIohArG(t?#]*@8:fL@l<)iiqrD`bpr_rr!<)i[1p29hIs)@mUs)S-\rcEF.
+G'8(RG^4R\H@($fI=?ZrJV&N,Knb><M2@.LNK0']P*2&pQC+&.S"6.CTq\?YVPgDnXKAY0Z*UgG
+\%0)^]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%P
+p\jmeq>^<hqu6NlrUg)?s+13ps*t~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1[aYtm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHW#ST)G2dS=>t8R$a5-R$[f>qj.#Br0/UYP_+U%
+RZrecItrhnY,S@uV4F$>OGSjNKn"W2NfK*BPfL@]I"[0;qN^T8r0./Fs-!GGmZIO2plYH:q2tH6
+plGH7s,R&=oT&^+!0$l7!IB"iGnkRJGBnIYGBeCW?<piD?=.&G?X@#ErE]G.s'$7B>?G!3As&[V
+SXc4=R@0D-QBd\uP*#['!K;s8MZ8P5MYi22M2I2cMZeuhD-L$>;uftu<<-"t<W,ns;ZKer;u]hr
+<<-)!?N+4/?2n45?XR8MrEoV4r*KD1rE]h:?=.&I?X@#D>[@>6$sQtB>[(E8>$G69>$Cl/!*T;*
+s&oJ.>[@,/!*]>(s&oM->$>).=9Mc/=+>_kJGFcpK)L?#K_pK'L'!-dM>2u.MuJ\6N<#"<NW"n;
+Ns:].P*2#mPl?mBPQ7!IPlI!RQC!u,R@'G3rgWbSqORSVqk*h[!294]s.B=arh9.^rhKLhrh]Xl
+&#,8>I<p3^F`MD:DK8E]AG]s:B)ZH>B`2ZDCA)H?C]UcCrl4lV!6G/^s2b8`rQP>drb_7ErGV[S
+r,MaWs)\0]Dfp5HGB\:VH$Xd`I!pElIt3'#K7ei2L51SAMMmFQO,oEdPEhE"R$jG6SXuLJU84W`
+W2cl!Xfnt7ZaI6O\[oGe^VI_(`Pom=b0/#ScdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg(mdKW6
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcF!pJ,~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1@FPsm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHV-!re:B*s+:<'rdb-$JV!cMqg\TnqgSHk)d[>g
+@T@GcBk(L\AQXP6IX6<_FDl#/B4YU^@f:$I?ZV?gCN"67Hhr3jIK"WbIJeQlIIhpaIK+ZpHi&3b
+Hi8?YHNJM=H2`'bH1lL^Glq>V>[@;5r`oV2?!gq;;[QE";,U7h;,C.g;>a8j:]F2i:B=L8rd"Ng
+$?pW9G'%eGEH,r9rbV[OD#S5LCAVcIChrZZ!bGJ.rCQu\s%E>`r^m,^rCd#[!_ZEhqc!Jlr)<Vn
+!`;iorDNYoq,75i##J/p;Gg7er_WYnr_`\lr)*Dj$W'_u;,C(d;,U:h;#F2f;#aDm:]sQj:/=[b
+;#G;(EVXYSEs6Z.G'.nKqfVg[pila_rd"Hg!.4]krd+WmrI+KjrI=crr.4m"s+C*"q1\Qtp4r[(
+qhb9-oniO&s,.DEIWKIHD/F$%An5Fa4_/+#Ac66?BDQ<?C&Mf?C\qoKL5#Skr0I&Crb_7ErGV[S
+r,MaWs)\0]Dfp5HGB\:VH$Xd`I!pElIt3'#K7ei2L51SAMMmFQO,oEdPEhE"R$jG6SXuLJU84W`
+W2cl!Xfnt7ZaI6O\[oGe^VI_(`Pom=b0/#ScdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg(mdKW6
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcF!pJ,~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1%+Grm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHTDd<<-"s<<?-"<W,ks;u'Di<W#fE-86r#/iPXC
+0.\b02afts5<M%g3&icO1GUU:2)dBN00MTp:/=Ya<;0>h;ufkp;Z0Pi;Z'Dl;?9Wmpf$od!)rbo
+qG[;iqc!DjpJCrh;tNrk;,U:j;c<Hh"]I*./hf!Y1B0'?1,1O?1Hmub4Zkki4Zkhe3rV/>2uu$!
+rAjm;"$&Y87/B1L5lEnI55[MD4ZrX(s#g'<qE,!H4Zthb2)I/g2$#TorAOX4"?&1u3&gdor\jm<
+5!Js/$U-^94$,Ja4$,Sf48_,B4?GYg4o@DE4[)"lrB1*As#U0A!Bi[H4pF/44?ktk4T.DD4$EL*
+!BiXG4o[_H4oRPO5<qIu5<qIu5X7Y$r^$QLmSWm[!)`2\oMGQbr_iVls&&hqqGdAkr_ibprD`bp
+rDNYor)EPls&B"srDNGis&K"u!EWD%=o2>$=8l8#<sMi1>$>'3=BPN'pfIN!rD3hu9hnAU8P)T"
+A7YRKrFZ%AqIohArG)%AqeQI6:fL@l<)iiqrD`bpr)EZ4o5=MFrc%dTs)S-\rcE($G'8(RG^+L[
+H@($fI=?ZrJ:W?*KS>/9Ll%"IN/`mZOckonQ'[l+S"-%@TV8*UV5L8lWiW>+Yd1UC[^`lZ]Y2(q
+_Sa@3a2lEHbg+P^daQ^sf@\g2gtgiEi8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]k
+r;6KkrVc?eJcC<$c2W:~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rokipkN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-2fOrga7`S!oe6R$df<s-NeQr0I,Cr0/X[PD"L#
+S<o4eJVT%pY,\@tURdd<OH#'OK7JK1NfK*HRE3<oItWK?QMHg:PQ6pGPl?pKP`kHsrfHo;r0$r>
+!K`H=OSFn:NW5%:O7\J.N>.>0MgBVnH$FUZGBnI[H$X[Y?<pk9?N"71?N".9>[(H<=^+s1DjpZs
+s.'OeR[KP/Q'R]#PEM%,NWG)sqhkE1s,-]0!f;elpPT-4H>$=X<;]_r<;ons<<#ks<;ohr<<#r!
+<aG]2rETA.ra#\6?smFA?iXR3?3"@2?3+><ra,t>?X6rB>[:T>>Q.n->6e>7>?kB:>$Co0!*]A+
+r`];+rEK;*s',M,#[(>6=^"s3>$:i,s&fA)=8[RKJ,+WlJc(,uKDgK#L&Zl2LPUeEMM_4frepf8
+rJ^f;rf-l:s,RJJOcklkPE_8qPPLFCQ2QsIQ2d-QR$jA0RJr]OSGJfTT),)YT`:_ZT`1Y^UApqe
+U&q*cV#I4jVZ3P(UQ^=XH?jXUEc5i3F&-?DAc?<@BDQ<?C&Mf?C\_cIYcduFr5SfZrlY8_!6Y;c
+!6k"OrGVXRr,MaWs)\0]!d/[0rc`I/H$Xd`I!pElIt3'#JqJ`1L5(M@M2R=PNfT9bP*D5tR$a>3
+S=Z@HU8+N]Vl?\sXfen5Za@0L\@K5a^;%M$_o9X:aihlPcHsteeCE.%g"P39h;7)JioB+]k3(sm
+l0I^&mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAJcEsoJ,~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rol*"kN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-1orKnP,3K7\^SJbaioJ,artIJ\KkI2cL/@UN2X
+E+r`gA7\hoIscQfF`VP?C1_$d?t0(L#\%q>P&"uVFFEq5s*aino6pOcr-e0cqL/Bks*OZkpNugc
+m!AbZH2`'aH1uOaH!^GS"C58;?![A7%8p,';Gp@i;Gg=h;,U<j:]X?hr_EVk;-S5BGli57GQ)dc
+Es-N'EH#jqD#nEgr+l:HqeP_<!F]"+8cME_9DqK^8H;B]9DhB^9E%id;uKVm;uTYr;,U?k;?0Yk
+;ZBSu:f1+g;,L0c;#jGi;>sGq;,U7gr_WVls&'"s;,L.d;>O)o;,C(b:eje^r_NYlE,ber!-%[P
+q/ZIU"a"m1G'%j'Fo6F_G5ug`GQ)jeH2W$hHiA?jHN8HlIJJ?jJ,OoqJcC?%KDC2pL%pE%LB*)+
+L]3,+M>i>'M>N20M[tc'IWTOHD/=!%An>Le5\0b'rau.BqIohArG)%Aq.p(dL&I;7QN!3NQM[$>
+DZ+MPE;X_UErU4[F96T.G5c]-G^4U]H[L6iIXcluJV&N-Knb><M2@.LNK0']P*2&pQC+&.S"-(B
+Tq\<XVPgDnX0&P/Z*UgG[^`l[]Y;.s_Sa@4aN;WKc-F\`daZguf@em4gtgiFi8WeXjlYail07O#
+m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13os*t~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rokcnkN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-5i\nPoBcr)>'k0InV+2Dm6B/2/_96pX"#4$5M`
+3&NHH0eb:=2Dm?F5!i">:f:1goi(cf!)renrDWPjr)*Aiq,@#es&8hpqG[8hr)<Jjpe_)j;cE6b
+s&/nqqb[JN0J>(5r\FL.r\FL0"?eq24?`[+!^/Y-r](*@3B0&Zq`+[?62j:K5m0G;5<qF0497T-
+r]:!>s#g'<qE4^>"$/=r2#T942E1Olr\Xg;3&ifTr\jd8"#rG-55m\H5!;%-49%AA3s%Q-48h2C
+4$5Se4o@DC4[/j.r]L0A"$/M*4o@JG4Zknlr]L0C!^&V/rBC-Bs$$KHr]CQP5<qIu5<qFu5XIa8
+62s1M62XR[;"dcb;?9Wkmn`jX!)NJgr_`\nqc!Mm!)r_nr)<Sms&8kqr_rbns&8hp!E2nq;uTbr
+;uBPj;u]es<W,r"='/T(=o2>$=8u>#<sMi1>$>'3=BPK&pK.o.:f'n`:JOYY91qiO,\6d`rau.B
+qIohArG)%Aq.p(/;#F;l;uK\p;uK\dDZ+MPE;X_UErU4[F96T.G5c]-G^4U]H[L6iIXcluJV&N-
+Knb><M2@.LNK0']P*2&pQC+&.S"-(BTq\<XVPgDnX0&P/Z*UgG[^`l[]Y;.s_Sa@4aN;WKc-F\`
+daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13o
+s*t~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g(>RZug=b-1f@JL%eC2jndEp4bcHOJ'rga4_S!ob4R/WEPQM[$IQM?aCPT>4:KRmd*
+R#crQLkf`HY,A.lSsbt/NJWIFJ:W]>rf.2Q[bQ4\KST8dr072Gqiq,Gr075H!gJn3mudU2plYH:
+r/h&BOcfI$plGH7s,R#<q2PH9rJp]5!K;@(Gm/G=H$OXZrd"Ng#('Z^?!goEra5\3&78aJ?!U]?
+>?kE:=]]pBT:c+S'V1_]R@'>,QBd\tP)t`cNf8pSM2D.freUZ5M>W/2M2I2bMZ\omFCG/Jr)E_r
+rDihr!`N&tr_j)%<E3=1?=$uErETA.s'>e7?smFA?iXR3?N4C3?34D=?N"72?2n.:?!LW=>[1Q>
+>?Y2/>QS,5>5_Y,>$G51>5qh-?2e(->5h_4>$5$3=^"s2>$Co-s&fP.=''p&It.?GqLSQrrIb'%
+qh>')"c%njMMd8eMZ8V7N;\_9NrG%:NrP.@OHKO*s-!GIrfd2C!1!JH"-o1<Qi<?PRJr]OSGSlU
+T),)YT`:_ZT`(S^UAgkdUAptgV#I4jVZ!D%UQ^=XH@'aVEc,`4GC07!rau.BqIohArG)(BqeZ1I
+!O/d+`r3pXao9H_aTBW0c1GoODuFYQEW:(ZF8^1^F`qs-GAh_OH?spcI!pElJ:N3&K7ei3L51VB
+MN!LSO-#KePEhE"R$jG6SXuLJU84W`W2ZeuXfnt7Za@0M\[oGe^VI\&`5Td<aihoRcd:(geCE1'
+g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEsoJ,~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g*8K<&g=b-1f@JL%eC2jndEp4bcHOIcKnP,3JqEuQpON6mpO<'h*.2"-@pi;XE,/ul
+AS"tpK7/)lF`VS@C1h-g@:K1M#AeX:X(uWoF7t(^IJnQbIJeQmIIhpaIK"WoHi/9dHi/9XHNAG<
+rcn6apim-N?!L]@?!UcA?=!P:!FK75;uBPn;?'Po;>X/m:/+MpHMi'gGRAS:G'%eHEcH&;DuOVR
+C]\BeCAhrHCAhr;C]\9T;>j)d9)hQ^9)hH_9)VE\9)VZa;uT\n;uBMn;uKVo;u]_q;uKVo;?'Jm
+;ZBVo;#X;l;Z9Mn;#=,g;Z9Pm;#aDm;Z'>k;>j;n;,C(dr_WPhrD3VlEH,r:pi6(Ls)S?cF`qqN
+FSg4YG5ladG5?F_GlN'fH2r<kHN&6kI/SKgIf=iqJGXm!JqJ^OK_L2rLAcl-LAQc*M#)u.M"?K#
+MZ&J5N"(VmFDu/8ChdTpA7TC[r+5k>rb)(@rFu4FpM9YBr+uIhK`.26QN!6MQN*<DDZ"GOE;X_U
+ErU4ZF96T.G5c](G^4U]H[L3hI=?]sJV&N,KSG5:M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L8k
+WiW>+Yd1UB[^WfY]Y2(q_8=.0a2lBGbg+P]dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$bl<1~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g(>RZug=b-1f@JL%eC2jndEp4bcHOI4pf6i`qGmGm-m^Pt.PNb=1,(7500)?c5!;"j
+3BB,W1GU[>1,h*K2)%9V=%uLf;Gm$arDWbqr)3JlohkcgrDNGip/M&jr)EPlqGR8jqbm/cs&8_k
+!)rbms&/nqrD<_P0eb760`Eg-1&`pP1GgmO5!1qj4Zkeg4?5G_3&rrX3B/uZ3&ru^6UO706U<s7
+5m'>:5=#31!'U<D"$Jb,3W;);3rhD<48M)<4Tdc+2Dk@i!]Dtrr&4R4"?&5!2`L^os#9s@r]^?F
+$pHg:4?GVc3]fDd4?NL&!'C0Bs#pBE!BiRC4oRSC49%>D4$5\kr]^<E!'gHFrB10D4oISE4T[f1
+4oRYE4:+/85X@V!5X.Iur'C?J"[PCN;,C*`;>sJn;#jGk:B45`:]+#h:]!uf;?'Pk;u]_q;u'Dj
+;uTYp;uK\p;uBMn;uK\q;ZK_p;uT_r;u9Ji;ZTitr)Ni"=T)D&=9)G$=:&&0<``@)=BSg2r`K5'
+r)`Pn%9ZM':esna9hS)N9hdD@Ac?<@BDQ<?C&Mf@C\qrGD#mL1qc*SorD`bps&AW.r,;OQr,MaW
+s)\-\!d/[0rc`:*H$Xd`I!g?jIXls"JqJ]/L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl6Sp
+XKA\1ZEppH\%0)_]t_A!_SjF6aN;WLcHjkbe'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+13os*t~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Slo"+ol07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2#SXc4>R[KP1rg3VMrKmGJpm(fB*,h*rKP-jE
+NeDq;M.`rlVP^)YR[9+qMMQt<JrTbi#`k4Ta*WAkLmIIoqNLuFr075H!gJn3mZIO2pQ>B:!KiKB
+OTCQ+plP<4rf$o<r/^`8!frA&rJpc7s)@s`!I9"jH2i*fGmAS??=$oC?=*S;s'?1B?<^]@>ZtB;
+>$G*bTV2:V)4mCiR[KS0Q^*l%PEV,jOcGH]N/EIKMMd8hMZ/G5MM_4dregK/s,7)2D-Kt=qc*Vq
+r`/nr!E2ts;Zg!(?![G9!FK13>lS+0?N4C0?iXR3?N4C2?3OV@?=.&Gr`p+@?!LW=>[1Q>>?Y06
+>[1K:>5_Y,=^,,0=oqo5?2\"->5h_1>$5$3=^"u->5hY(=TDS'<rdaIJGOipK)L?#K_pK'LB!&>
+M2I1IMMd=LM2I1KMi<VnN<#"<NVnh:O8k@BP5g^GPl?mGPQ6pHPQ7!IPl?pKQC%T<!1EhUq4.>Q
+rLWkXrh0:bpRqGXr1a.`"/;QcV#@+iVZ!FmW"#McJUMcdG'%Y>DK'iJrFQ"@rFc"@rFu7GpM9YB
+q/$/:YPlK>`rO6\b5]Qab09TtqeuFPqf2XVs)\-\!d/[0rc\BfH2`,%H[L6iIXcluJV/T.KnbA=
+M2I4MNK0']P*2&pQC+&.S"-(BTqS6WVPgAmX0&P/Z*L^D[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdt
+f@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Slndtml07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe1_KS+o/Jq<TFrdXWjrd?2B=DhVX;g*1r@UEYX
+<e>mNI!BdUEc#Q(ARf.XC27R!DKCGpCN"69npURerI"6cr-nQlo7$Oas*XfmrI"Wl!.+Nhr-[jX
+"+#6;GkcR]GQh,J?!^fCr`oe9>[:ZB?X@);r_rbn!)`_n!`;imqG7;i9l,0'r-8]qGBJ(OFE;MC
+EGoc5rb_[O"`%jeCMR\aC]/#HCB86enSA8;=AAcdr_!2`!(m/^r^m#\s%38gr)*Po<;]\o;Z0Pm
+;ZB\o;ZB\p;?0Yp;ZBVo:^']o;,L.dr_WYnr_`\lr)*Dj!`2clr_WVls&&np;,R0d##S2n;,C+d
+rD3Ag!`)R1pi64P!-A-[s)\3^s)nEcFSg4YG5lagG'A.TrHJ9ds*=Qh!.4]krd4ZmrI+KjrI=fs
+r.4j!!/(*#pP&EtreLN.qM5'+qhY</o83:#rep`6%>fOSE,TT/CM.6jASYWNAcHB@BDZB@C&VlA
+C\qrDD#oBErK[;Hrg3SLpMTkHrG_XRs)S-\rH&*`G'<k/!I/nhH=hMOI=6QoJ:N3'K7nr5LPUeE
+Mi<XUO-#NfPa.Q%R$sM7StD^MUSOcbW2co#Y->1:ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(
+g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEpnJ,~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln%Jfl07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe3+<UWo_<W,lG/hnh*0K1jD0.SY.3(#tp4utee
+3B&iQ1GLX?2`<NN0g.Tj9i4ee;,[-er`&nrr`&nrr)3JlohtE\pJh,jrD`eq!)iboqbm>jr)38d
+!E)kl;?0Ym;ZBYt;Getqr\=F+$o'Ln1,1O>1G^jN5!8g-'KeQA4Zb\c3B0#Y3B/uY3B0#b5stW>
+"@5:<5skQ:#=(R>4Zkeg55[PC3WD,?3W;)<3rhD;48M)<4T[Z'2Z5N52?Gfq2?#N52?,W92uPW9
+4?Yk+55m\J5!1qh48q8H4$5Ve3]]>`3rV8A4oRPE4Zr[+rB1*As#L6D4?c"/55m\F5Q3eD4TRW-
+rBC6E!'^BF!C&dH49e#869d\"5Q3qG5m0G=5X80?;>sJn;#jGk:B45`:]+#k:Jakbr_WSks&/_m
+s&&hqq,I8jr_`_prD`bprDNVnr`&nr!)iepr_rkrqbm;i!E<(s<WQ9(r)j)'=',B'rE&u#qcNo$
+rE&Pl!a/Dsr_WVi"\_Q]8kh&=AcHB@BDZB@C&VlAC\qrDD#mL1qc*SorD`bp!*&]1qeuFPqf2XV
+s)\-\!d/[0rc\BfH2`,%H[L6iIXcluJV/T.KnbA=M2I4MNK0']P*2&pQC+&.S"-(BTqS6WVPgAm
+X0&P/Z*L^D[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTnjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARadeihR@'B@QiE?QQ'Ra8Qi!*CQ2d'gD4$32
+B:YKPL4P2;LSq8OVkflNQ]R/_LP181NW+qCR?4\XI"I!*p6GWCq3CiA!1!JHrfmMKP4"J4OS4h8
+P5CC8OSOq>NfB$Yr/^`8!frA&rJpi9$ZL**H?sj_H$OX[H2`+/H$FXA?<poE?=.&G?!^lF?!CT?
+>[1K>>&'J"rh0:`(7q(fR[TY1Q^3r%P`q5kOcYT_Mhm4IreUZ5M>`>0M>N,.MYN,/Mue3:r`&ks
+"]eW&<)lrs;uoosr_io'>[:Y7?N4@4?2e+/?2e11?i4:3?i471?i=:2?2e.G?X@&E?!LZ?>[(E;
+?!LT<=^#'8>?Y5/>6%h*>Q7k.>?kJ4>Q7n+>Q.h+=oVY-=^#!3r`B2(=Su8"JGOipK)L?#K`$Q(
+L'`WkLl%"HM2I1KrJLW5s,?o9!07#;rJpo=s,m>Es-!GIrfd>G!0dDH!1!MIrfmMMQi<?QR@=,E
+qjdMRrLWkXrh0:bpRqJYr1a+_"JVZdUnn!d!2f^m!3#mp&#58=IWp!ZF)c):E-d+IAc?<@BDZB@
+C&MfBC\qrDD>e>PYPlK>`rO6\b5]Q`bPQ2RDu=SOEW1"YF8^1^F`qs-G6)r6rd&R2I!pElIt3'#
+JqJ`1L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl-MoXKA\1Z*UgG\%0)^]Y;.s_SjF5aN;WL
+c-F\`daZguf@em4h;-uHiSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+13ns*t~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTljlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARab,1sJb4KlJ+S3iHm`$9B4"S[Ebf2oAS,J%
+Jp_okGB@kBBkCpd@UX"eC27m2KS=5]F*I>,rdXor!.FfnomQaer-e0cqL/BkrHnNkpj;mcm<\q]
+H$FT/H2Vsl<*!%*?!^n;>n::J?XI,H?=-W1;c?Rl;cEQks&&bl"]8/m=E]&jHMr*iG]s(/"a"g,
+EH,srD?F`lCMNf^!buLcrbMFHrbLq<!FSn+8cD?^9E.T`9)_E[9*.^_;>a>l;ZKeq;uT\n;uKVo
+;uKVo;uTYp;uT\p;?'H!;,U:h:f("e;,[Bjs%rSir_`eo;GmEis%rborDE;cs&&em!DcPk:]=/m
+:JOSWqJlIS!-A-[s)\3^"*Jd0FS^.YG5lagG'A.TrHJ9ds*=Qh!.4Zjs*OcnrI+KjrI=fsr.4j!
+s+C-#pkANureLN.qM5'+qhY</o83:#repc7reh;CI<'4DChmd!An5Lg@:a$LB)ZH?B`2ZDCADZB
+D#%rHD?,@gQ2HsIQi<<JDYe;LE;OYSErU4ZF96T.G5c[dG^9:7EI3(]I=?ZrJ:W<)KS>/8LP^kF
+N/WdXOHG]iQ'I]'R@B_;StMdOUnsueWN*&%YHY:<['mHS]">Vh^VRe*`Q$!@bKS5Vd*^:ke^i@*
+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s3(Fm~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjThjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARao,6.<;'>l<#[DE/h/S82)?m:0/#"F5s@Io
+4ZYV_2`*?H0erYc#W4D$4%N(C:f%'gpf%)is&8nr!)renrDWAeoMbK`rDW\pqG[5grDWVlpJCrh
+;u';k;u9Jm;uS?J1&im.0JYE^1C#Zk1Gh9Z4Zr^,s#^9Er]:$=%QHI/3'9/^6q0O26ps@,qEb-H
+"[5(34$5\)49.J@3<;0$r]9U3!B`OC4T%>D3]Ano2?#N62?,T62?#T72ZGo>4Tdl25!Js/!BrXF
+48h5>49%>C4$#G%4T@SD497T-rB:*As#^6A"$8V.5Q3kG4Tdo34?WR*!BWIB4omf1r]L9H55dVD
+56sP?5<qIu5X7[762s1P5sRCiqGI5ir_WYlr_EMjoM>B]"&D`i;>sDk;?'Pk;uT\j<;]\o;?0Yo
+<;ohp;Z9Vo<<#ns;?0Yp<<#no;Z'Jn;ufqr<rZ;#=TDS'=8l>#=8c8!=oVV'=7]Pn<rlK&r_Nr!
+:/+DT8ki&8AS(jQrb)+ArFu4Fq.okDq/-(J!)WMk!)rhqr_r]3qJZ:Nqf2UUs)\-\!d/[0rc\Bf
+H2`,0H[L6iIXcluJV&N-Knb>;M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L5jWiW>+Yd(OA[^WfY
+]=bkm_8=.0`lQ9Fbg"G[dF-Opf%8U/gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln[nll07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaIAWdR/N?OQMm'KQMm0KQM6[EPUC@5N.bl:
+RZE;VL5:UuXJ_kgSsu+1NJWIEJqJr@OH6`.Z)N,&Jqs;irg*GHs-EJGqNLuFr075H!gJn3mZ@L2
+p6#99!KiKCOnOn3O8k1>Nr+n8NWP9%O8P%<E!UH&H?sj_H?jc7H2`*mH$Wb&>l@tC?X@#D?=.#D
+>[:T=>[(NUU8"<RU&LYcSt2AMRf8WQPld,2O8b7@N<5#pM>`>3M#rQkM>iD1M>N)/M>iD.MuJY<
+L3$a%<;ol$<`N.!<E8oq!)rl$s',P0rE]M3?2e+/?2\+0?i4:3?h.M0?X@#D>[1Q>>?h)3s',M+
+s',P.r`T;+rEB5*s&oV2>[:T=>[.22r`fD+r`KA-=^#!3r`K2'rDs##=o*^JK)C9"K`$Q(L'*3e
+M2D.f!/pf5s,6o9rJ^r?NJrjVrJpo=s,m>Es-!GIrfd>G!0d5CrfmJLrg*\RR@=,EqjdPSrLWkX
+rLj1apRqMZqkF"^s.]Og!2TUjs/,go!3#dm#GRB4I<KjWF8g([DL##hrau1CqIokBrG).DqeZ.H
+q/-29rPniW!6G,]s2k:Yq/?1MqJlLTs)\-\s)n?brc\BfH2`,+H[L6iIXcluJV&N,KSG5:Ll%"I
+N/`mZOHPckQ'Rf)R[]h=T:qsRUo(&gWiN8)YHY==[C3TU]"G_k^r""-`Q-'BbKS8XdF$Fme^rI,
+g>(N@hr*JRj5f@bkNV6rlg4!+n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s3(Fm~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaF]"pnpg^ioR86;Hrt<"@o[\mCh@$bAS"qo
+I<p0_FE)87AnGU`@q]UnCkHb]K5>LJGk?IbJ,XlsIJeKcIJeQmII_jaIK"WnHi8?fHi/9WHNJM<
+Gl;mfHMi$o<`N1#?!^fD?iF=H?X6uE?X@);<)Z^n;Gg@i;,U7g;Gg<i:]aKl?2]-KH3JS=G]e1P
+rcA6_EGodoD?=TiD#.iLC27R!CMWi_rG1k<"DD%;8P/nRs%<Ab8cD?^8H;B^9E.oh;>a;m;cN]o
+rDNSmrDNYorDEVor_ibpr_ibn!)WYms%rkp;,U<i;#jGf;$'Qk;>a8g;>*fh;,C(b;#X8i:]sQh
+:/"=ZEW'nXF8g4[F8p=`F`qs(Fo?L]G5umdGQ2pfH2W$hHi89jHiJKlIJJ?jJ,XurJc:9$KDC2p
+L&6W'L]3&*L]3,#M#`G2M><&.MuSb5M[kMjEc5l6Ch[KoA7]RDAc?<ABDQ<@C&MfBC\qrFD>A&L
+K_q&7QMm0MQN(juDu=SNEW1"YF8^4\FoQXaG6)r6rd&C-I!pElIt3'#JqJ]/L5(J>M2I4MNK9-^
+P*2&pQC+&.S"-(BTqS6WVPgAmX0&P.Yd1UC[^`lZ]Y2(q_Sa=2a2lEHbg+P^dF6Uqf@\d1gtgiE
+i8N_VjQ>Ufl07L!m-O0/n*ol;o()DErq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$bQ!(~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln7Vhl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaSo3;;ufqp<<#tu<:s8k<#[DD/LrM81bpa9
+0/#"85sIRq4Zk_`2`*BH1,Ahe#;nD&4@i1E;#F5c;uK\p;u]hs;uBPm;tX&\;ZTitpf.5krD`eq
+!)iepq,72jqbm/cpeh)jr)*nR/M&G-0/5+60JYH^1'KHj4[)"kr]LHL4?P\c3]d4!#WFb'4?Q)&
+6::`?pd"sH5=#!+!'C$;"?JP'3]cgn!B`OB4T.DE4#o4s2?#K82)[Al2$5ct3&^[s"?eq34[/j.
+!Br[G48_,I4?GVc3]fAa4$5Vgr]L$?!^&V.r]:0B4$<C(s#pBGr]L0Cs#^9ErBC-B!^Ak4r]CNO
+5X@\#5<qFu5XPE8s$-]Q5X.4fr)*Gks%rbmr_EMjoM>9Z!)`_lr_`\nqc!Jlq,I8jr_`_prD`bp
+rDNVnr_s#!;GpFlr_rkrq,7/i!E<(s<rZ8!=TDS'=8c8$=8c7u=oVV(=7]Pj<sDT#:f'q_:&[cf
+9hZsHrau1CqIokBrG).DqeZ.Hq/-1/qG[GnrD`eqs).XNr,DLPrc8$[rH/'^s*"Bc!I/nhH>IqU
+I=6QoJ:N3&K7ei3L51SAMMmFQO,oBcP*D5tR$a>3S=Z@HTqeE\Vl6VrXfek3ZEpsI\@K2`]t_A"
+_o0O7aND]McHjnce'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>^<h
+qu-HlrU^#>s+13ns*t~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l8md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaI8NarKmPMrK[DKrg3PKqN_&E$#Z)dKP@'H
+PDFhiM&U-0V5C&\S!T=uMMR%?K8kqQOL:.TUjRfHLQqV#r0@8Iq3CN8!L&]7OoLO:Oo:FEOcY\(
+OnFh4O8k1>Nr+n8NY@J6NfT3\EcH&=EI<(ZH?sj]H$K:5s*>,]?<poE?=.&F?!^lF?2\%.>6.uH
+rhBFc$DF)aSt2FAR[TY2rg!nVP)t`dOH5B[MMh@hregT0s,-`2qhP6/regK/repr/Cg'g;<W?)&
+<E)pt<W#er>lIt,>QA(/?3+D>r`oG.ra,V3rF#Y4r*BA1oj/28>[1Q>>[(H=?!LT;=^539r`T;+
+r`Te7>$G06>?kH>>?kB9=^(f/r`]>)"Bnr3>$:f+!*T8%!``?(rdk!!r.Fs$r.Y0*s+^T2re_)A
+MMd=LMi*CMMi<VlN<5&uNW"n;Ns:].P*2#mPl?mGPQ6pCPl?pJQN!3PR$jEBS,8`QSc,/VTDkM_
+U%b5ZU&(M^U&UkeUB%+hV>mFdV[oJ_J:2ciF*)A=D/XbsAnM$Tqe5tCrG).Dr+u:Jokjc5rPniW
+!6G,]!6P+Vqf)@Nrc8!ZrH/'^!-\<b!I/nhH>S"VI=6QoJ:N3&K7ei2L51SAMMmFQNfT9aP*;/r
+Q^F21S=Q7ETq\?ZVPgDnXKAY0Z*UgG\%&u\]Y;.s_Sa@4aN;TJc-F\`daZdtf@\g3gtgiFi8WeW
+jlY^hl07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$b5Zt~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l7md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaF]!@J,k)nJG"BjI2c7-An"eaEc,JsB4baW
+JUMomGB@kDC1q0i@q5LQ#]568KRdlYEd.,(rdXrss*ainomQaer-e0cqL/BkrHnNks*F`lqg8?j
+!IK4[HNJM<Gl2h/H?jd;<`E+#?X7#F?<piD?<plD?XI2><)cdo;,^CjqbdYp:f1"b;-SGHHO4tD
+H?ja[GBJ(OrcANgEGoc5D/F0+Ch[Y`B`MiFC&D]GC\qlGC[Q!RA6;Pt8P2TJ91hcI8kMZH8kVfU
+;H!HjrDEYp<;]\o;Z0Pm;ZB\o;ZB\q;Z9Vp;ZBT!:f1+g;,L.drDNVl!)WDe!`2`krD3Ml;Z9Ph
+:]jQk:f73grD3Ags%WYi92'@(EWC1ZEWpN+FEMbMq/u[[qf`$brHJ9ds*=Bcs*OcnrI+KjrI=fs
+r.4j!s+C-#pP&L!reLH,qhP-+oSNR)rJC?-regc8pkoZ9HuX(CDJO!"An5Ih6=sj/BDZBAC&MfB
+C]&#HD=qcHK_^o3QN3?KDu4MLEW1"XF8^4\FT?U`G6)r6rd&F.I!pElIt3'#JqJ]/KnbA=M2I4M
+NK0']OckonQ'[l+S"-%@TV8*UV5C/iWiW>*Yd(OA[^WcW]=bkm_8=+/`lQ9EbK\>ZdF-Oof%8R.
+gYCWAi8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2t@l~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l7md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaAl7><;fho<;okt<;'>k<!b-2/1WD61bpa;
+r\+g>5s@Lp4Zk\a2`3HI1,Aed#WFn085E)[;c3-brD`YmlVd@RpJh)ir`&nrs&/hpqGR8jr)38d
+pJM)l;Go%D/-dm_0J>.71,Jnb!&=I/r]^<E#!P144ZYSar]1!<s#1?G4[_b/6UO706U3t)qa(3G
+s#^$=oJln4niHn85!Ad*rB13C3&^^mr\jd6s#0m7"#`/!4o7>D4[)"mr]L9G4oIJ@3rV5@3XIl/
+3]fGd4ZtniqE=g?r]C-@"$A_25Q3hN4[)%o4Zkk*4TRW-rBC6E!^8b1r]^<D#sCL=69d\"5<qL3
+62s1T5sR[p3B0l5r_ibn!)WYjs%r>`qG7/hrD<Mks&/_mr_iPkr)<Sm!)rhqr_rbnr_req"B/2r
+;cEZp!)r\krDN_r<W#nt=8Z2$=T)>#=9)G#=Sc/$=BG)rpf@u+;G^.a9MJ8T8kVfR-Y?uiBDZBA
+C&MfBC]&#HD=qcH;"[cf;u:M1E;=MQErL.YFT6I`G5ZUcG^9:7D0pYYI=?ZrJ:W<)K7nr5LPUeE
+Mi<XUO-#KePEhE"R$jG6SXuLJU84W_Vl?\tXfen5Za@0M\@K5a^;%M$_o9X:ai_fOcHsteeC<($
+f\5*8h;7)JioB(\k2tmll0@X%mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13ms*t~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN'^9rKmJKs-<VMrKmPMs-E_Oqj%2G.[+_9
+Mh#Q8R?E>WKo(Y!Xf&(lTpq=2NJ`IHJqArAOH-9$Z_2YsK85_Wq3LoCs-EJGqNLuFqNM#EP4"J4
+OS+b8Oogc-OT(C8OSY"?NfB$Yr/^`8#EOn+E,]f:E;P"]H3SY@H?ja^Hi@=R?X@)Hra#Y3?s`b9
+s'$"OU8+KXTV8$NT:VUDR@9TDQiE?WP`h)gOH>N^MuJV2M>rJ1M>rJ1M>W/0M>iD,MuS_BMg/l6
+<E3("<`T,u!*0"tr`oG,r`fG/ra#V4?N"./?2e10?iFI5?i441?hIb*>n1+F>[1K<?!U]>>$5'7
+>Q.h+>Q7k,=o;G)>[:Y6>6.l1rEK;*s&fA+=oMV'=9)M&<s)Q+=B59Nr.Fp#rIt9+!f)Sgre^u>
+MMd=LMi*CMrf$`6!fW+urJpo=#*=t1P*;)orfd>G!0d5CrfmJLrg*\RR@=)DrLE_TrLWkXrh0:b
+p7VGZq4de\s.TOhV#I4jV?*Tlp88IpO*lA%G]RqFE,KZG<+]cUqe5qBrbD7ErG;@Jo54Q3r5ScW
+!6G/^!m,A!qJc4Lrc8!ZrH/'^s*"Bcs*+Nhrd&F.I!pElIt*!!JqJ]/Knb><M2@+KN/is[Ockom
+Q'Rf*R[]k>T:qsRUo(&gWiN8(YHY==[C3QT]"G_k^qmn+`Q-'AbKS8Xd*^=le^rF+g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#s2t@l~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN&j_rIFotq1/Kpp4!!h-Wb;#?rqSmD.[0d
+AS"knI=6EdF`;86BOk^b@VTXnC4C8WIr0.FGO^.^J,XlsIJeKcIHl:XIK+]mHiJKnHN8BgHNJSA
+I-Z+[H?f=4%XM2X<`W4+?=%#H?X@&Hra$UP?=7/><)Z^m;,^=h;G^4g;Gg7f;,0tmI=-EhHiA<p
+H[9p]G'<h,$?U<-E,TW2DJX*)rbDCGs(M@FrFu=JqeH+GmVE#A?rT]hr^m2a9)_E^9)hK^;uT\o
+;>jAn;cNZnr_a&$<)Z^n;H$Il;uKVn;u]bq;u]bo;?'Po;?'Gm;>sJm;?'Jf;$'Qk;>j;l;,[?i
+qG78k:f($g;#O2g;#a8n:J=GTErL.ZEWC1[FT6O[FoHR]G5umdGQ2pfH2)^cHiJKlIJJ?jJ,Xur
+Jc:9$KD:,pL&6W(L])u(L]3,*M#`G3M>iD1M>E,/MZAY.M\(ViEH#f3CMIHnAS5pMAnPcRB`2ZE
+CADZDD#8)@D?,@dPlR-LQNEIkDu+GJEW1"XF8^4\FoQXaGQ2mfH2`,,H[L6iIXcitJ:`E+KS>/8
+Ll$tGN/WdXO-,ThPa.Q%R@9V9StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^VI\&`5Td<aihoRcd:(g
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEmm
+J,~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN%:\r`&eqrD`Yos&Strr_t<u0eOq13AiTH
+/h\n52F0Sl4$G_d3Ar`O0ekFA2`<NQ5!DJ4:f:7i;Y!cd<;KP_;X[QY<;]\p<<#ns;Z9Vj;Z9Vm
+;YO&_;@ZVX.kE2$0J>.60/57<1]B-A0f(XB5!D+n4Zttk4?GJ_3][-u#<=b*6psL56iKLP6Mj(K
+579V94$5Yg4?GYf3][1!p,N+6q`=d?q)\X?5!Ad*rB13E3]Hsos#0j6"u\=r2EsDhq`G0J5!;%m
+4Zttm4T7G?3rV2F3]fA`4$5Y)4o[YA4o[VN4Zkef3]]>c5<o-2s#gBH5PdMD4$EO+s#g?Gr]L9H
+55mYL4[25!5<hCtr]pBI$p[*D5X.7g3DraP;,I6fs%r>`qG7/hrD<Mks&/_mr_iPkr)<Sm!)rhq
+r_rbnr_req"&i)q;uKYq;u'>i;ZTitr)Ni"=T)A&=Su8"=9)G$=SZ+j=SPtr=9DGt:f%'brC[8h
+.V<=+qe5qBrbD7ErG;@Jo54P)p/D)lDf>Jkpi6:RrcA$[s)n?brceBe!."QiD0pYYI=?ZqJ:N6(
+K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE\Vl6VrXf\e2ZEpsI\%0)_]t_A!_SjF6aN;WL
+cHjkbe'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?
+s+13ms*t~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3uQi!*KPlR-GQN3?KPq&#^PAk5oKl!KQ
+P)"UEM2Q#LW2QJbS=,V&MMI"@JrPePOK4SPT6c*AM#EV7QMd$IQMHg;PlHpIP4"G4OS+b7Op$o/
+OHG[uOT(:@OT(:CNfB$YqiCZ8"-7MCErL"cH@(!bH$Xa^G^4R\rd+]o?=*P:#[LbC?XI)E>[@>6%
+<SGBUSFKTTqJ$NSXl8LRf8ZRQ3rh=O-#KcNJi^PMZ/G4M#N55Ll%"HqM>30qhb3+rJLB.req>@F
+'r!J<`N1$<)Zar<)ig$rEK;,!+#S1s'Gb4r`oJ/ra,S2ra>b5r*BA1oj7Z(rETA,&6rLG>?b66>
+[(E9>$G37>$:c,s',P0rEB;*>5_\*>5qb*=oqi1>5hV*='8Z'<rlE'rdt*$r.P$&re:K0Ll)+g#
+`FRuMi*FMMi7Rnqi(Z9NK*mss,RAGOcklkPEc'1rfdDHq3:lD!1*VN".5LFRf8fTSGJfUT)##XT
+`:_ZTE(\\UAU_bU&h$brM9RmVl'*a&"nr1H[9mWEc5u9EdUi!BDZBAC&VlCC]/)ID=VTEDZI!=`
+rF'\aND[%E;+AOErL.XFT6L`G5c^cGQ<$gH>._RI=6QnIt3'#JqJ`1L5(J?M2I4MNK0']P*2&pQ
+C!u-S"-%@TV8*UV5C/iWiW>*Yd(OA[^N]V]=bkm^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JRj
+5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTcrdk*#s2t@l~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3uJGaooJGjumIf=aD=]8sC=F"t)ARK+^
+B2sP3I<p-]F)Yu1AS,F^C2.O#J96HoD/jT@J*_XaIJnQdIHc4WIK+]nHiAEfHiJHoH[PX9!.=Ec
+!.+Qg$s?Y6<`W4+?=$uE?=!M9%:<LM?scl4;c6Lj;c$?h;ZBSn;$Tj'IXZZlH[Pd<s*+Nfrc\9`
+!HW8[E;sbXDJO')C&VlFC&_lFC%c<?C\qoJC\;KGBNn>*r^m;d8kDQFr^m8h;H$Nn;Z9Pl;ZBYq
+<;fbo;@$6#;c6Ll;H$Nm;Z9Vp;ZB\q;Z0Jl;?Kcm:f73ir_`\lr_`\lrD<Vm;,R6f!)ibmpJCle
+s%rVhr_Ntu:/4JV965/pEcZ=$F9-N-q/u[[r-/0crce?ds*=Bcs*OcnrI+KjrI=fsr.4j!s+C*"
+pP&R#rJ1?+qM5'+qMG3/s,$]3qhb0,s,-l7onsB?KmI`XDJX*&B4PReD+/)Mqe5tCrbD7ErG;CK
+no"JG!/136!g]1>qJc1Krc8!Zr,hs]s*"Bcs*+Nhrd&:*I!pElIXcluJV&N-Knb>;M2@+JN/`jY
+OHPckQ'Rc(R[]h<StMdOUnsrdWN*&%Y->1;['mEQ\\#Mg^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<
+hV[8Mj5]7`k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcEmmJ,~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3t<;fhq<;]bq<r,hq<#dM>/h8Y:2)?p=
+0/,+=69mau4Zk_c2`3EI1,1`e2@DN/5"ACG;H$Fi;H!3e!)iPimS`LPpJh)ir`&nrs&/kqq,72j
+rDEYp;YX,a;ZABJ/-[d_0eY481&Ea*1]KWF4?Ykk5!(kf3BI+!#rjq*4@M\.7RKQB7/fLS5sdp:
+5n#tC4Zb_g4Zkhg4$5P"3;,?43rD&>4SUu=4[/^)rB13D3B$dm!&jg6"u\=r4$Gklq`FmB55RJD
+5!8g+q`=a=#!+h,3]fGdr]U9Dq`XsA#sCC54$#Da4[)+056!bI5!M7.4TRZ.rBC6E"[5(45!M70
+4:+5;5sRY"5X.M!r'C?J"[PC<3B0%u;>j8j;"RQ\;#aDl;#X>l;YsDl;Ya;i;uTYp;uK\p;uKVn
+;uT`!;c6Lm<W5tt;u'>j;ZKhq<rZ5$=T)A&=Su7s=SQ%s=9)M!=SZ%q=:\J0:esk^:JFJT9MA/0
+B4q*Trb;@Hq.oqFr,)"Bs).m6pJh!.pMp1QrcA!Zs)n?brceBe!."QiBmY5UI=?WpJ:N3&K7nr5
+L51VBMMmFQNfT9bP*D5tQ^F52S=Q7ETq\?ZVPgDnXKAY0Z*UgG[^`l[]Y;.r_Sa@4aN2NIc-FY_
+daQ^sf@\g2gtgiEi8N_VjlY^gl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+b5Zt~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=Qi<9NQ2[*KPmNbCQBml'Q^=#(r08ar
+PELQ6N.Yf;SWSb]M2I+%Y,S:rURRR7OGemLK7T&DOH,9bZ_2VsK8KMkr0@DLQBqE5s-EJGpQYT>
+s,uf4!0Hi8rfR8DrfI/BooT'3"-/A#Nr+n9NrF,!E<:*,HiA9kH?oL9!IK.lHOO4d?=7&G?sd5H
+?XR4>>lS(>>^iTHU8+KVTV8$NTV%eSRK/`SQO9%CP`h)iOcPK\MuJV0M$&QjMMh7e!/gZ1qhY3.
+pP]$0"Fk5k<E9$!"&r2t<;Tr!>Q.k-?iF@4?XE_:s'>V1ra5V3s'P8%s'>Y0&RAXG>?kH=>?b65
+>[1K:>$G51=o__(=p%u6?!RA5#?b56>?b?9>5hY2>$5$4=]ed-=]tZ("'JZ*K)UE#K`-W(L'!-d
+M>iA5Mi.Ik!fDnorf$`6!fW+urJpo=#*=t1P*;)orfd>G!0d5CrfmJLrg*_SR@9TDS,JlSSc,/T
+T)bP_U%Y/SUA^eaU&h$brh]UkoVW4uVjr`oH['aUEc5u9Fa/Q9B`;`ECAM`ED#A/CDYe8OYPcE?
+`rX<)rc%RNrGqmYr,hs]s*"?b!dK!9rd&[5I!pElIXcluJV&N,Knb>;Ll%"IN/`jYOHG]iQ'I]'
+R@9V9StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^;%M$`5Td<aihoQcHsteeCE.%g"P39h;@/KioB+]
+k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcEjlJ,~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=JGt#uIf=iqJGXilIf=aE@8plK<HrV%
+B45IdAQFD2I!p9_F)Yu0An>C[CMIX"DKU\`D/sZAIt-d5!.FfnomQ(RqL/Bkr-SHkpNlshH[P.+
+!.+Wi&6`4==&rC&?=$oD?!goF?s`h?s'Pe)"]SDt;H$Nm;?'N';,C+f:1Sj'I=-BhI!P^;s*+Nf
+rcSBdFEDR&E!C5tDJj9,C\qlEC&_lFC%c<?C\qoJC\2EEA6;S*8de9a8OuBD;,L.f;cEZnrDEMk
+!E2tr;uKSo<;ohr;?Kiq;cEWmr_ikr;cEZnr_`Yms%ren;>sJm;?'Jl;?'Jm;$9]m:f($e;#F2g
+:]OAj:]OAl;#O2h:]O;j:B!ogEcZ=$F9-N-q/u[[r-/-bs*+Hes*=Bcs*OcnrI+KjrI=fsr.4j!
+s+C*"pP&R#reLB*qhP3-q2,*.!/^W2qhb0,!fMqnoSX6=Mh?:pE,KN,BkCsgBPVVbB`;`ECAM`E
+D#A/CDYe8OK_gr7QC%Sip2U%OrcA!Zs)n?brHA<fH$TC8FF/C`I=?WpJ:N3&K7el4L51SAMMmFQ
+NfT9aP*;/rQ^F20S"6.CTqS6WVPgAmX0&M-Yd1UC[^WfY]Y2%o_8=.0a2lBGbg"G[dF-Opf%8U/
+gYCWBi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$ao?k~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=<)`cq!*/nq#$"W%<E3(#qGmMo-RUAp
+.PWqA1,(@70ekRR5s@Iq4#f8[2)I'C0fM!L2E*f`7o)u[;uKPn;Z'Ji;Yj>X;X[QY<;]\p<<#nr
+;ZB\l;Z0Pl;YX,c;?eg./M&D(/H.C(0FTZi0ekF=0etR@5!;+/4o[_G4T@DM3]T/\3&rr^7R]^7
+7fGdT7/K=N5mBS=5<_4m3rV5F4$5Ve3][!qp,N+6r&ap@q)\X@5!Ad*r&k'A3;bW62Z5N43s%Q0
+55IAA55RJD5!Aj+q`=a=#!+h,3]fGdr]L6DqE50J4Zkhg4$#Gc5!T!0"$Jh35PmVD49.PC55dVH
+5!M4pr]L3Fs$?ZL"$f(95l<qJ5R0S?5<h+f3)KTM!)WAb!DZGf;#X>l;#X>l;YsDl;Ya;i;uTYp
+;uK\p;uKVn;uT`!;c6Lm<W5tt;u'>j;ZKhp<WZ?)=T2J'=T2Ct=SQ%t=T;P"=SZ%t=9)M&=:SD5
+;,9t_:/">S8kViT8Gd*"C&MfCC]/)ID=qfCDZEW/<;pk1EW'qWF8U.[FoQX`G63#7H2`,3H[L6i
+IXZcsJ:W<)K8#&7LPUeEMi<XUO-#KePEhE"R$jD4SXuIITqeE\Vl6VrXf\e2ZEpsI\%0)_]tV7t
+_SjF6aN;WLc-F\`daZguf@em4gtglGi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+13ls*t~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:QBqN8s-<bPPa%I1Q3*D=QMm*KPTH$O
+KPca#K:eWqL4Y5<M/')jWMZG[R$EbmLk^S6NrG(FOdibaH@pp/PkLCAQMd$IQMHg@Pl-aEP4k"<
+OSb.?OSP"=P5UOBOoUXDOT1I9OSb(=NrG%8O8k4sG]e+LEH#l:H[0j^G^+OZH?jd^H[L6J?=7,H
+?XR2H?XI2I>[(H=?APVXV4s`YTV%pMTDkG]RKf.EQ^<u%Pl6aENWtH#MMm=HM"ul1Ll$tGMY)c&
+M#E5)MuS_CMg/l7<E<1&<`<5u>l@n,>R4YC?=$uF?!LY6?2e11?iOL9?XR5Jr*BA1oj/><>[1Q>
+>?b?<?!LT;=^,-8>$>-7r)s2,>$>/0>mOY>>?Y05>?bA3>5q_3>$5$4=]ed-=BYQ'"Bef*<eL='
+rIt6*!f)Sfre^i:MMmCOrJUZ6qi(Z9NK*mss,RAGOcklkPEc'1rfdDHq3:lD!1*VN"dk^HR[]fE
+SGSlUT(nrXT`1YZTE(\\UAgkaU&h$brMBOkoVW;"Vl-D[MLKnsFEMP@EH62HMYq/eC&VlDC]/)J
+D=qfBDuXbVYPcE?`rO6SEW'qWF8L(ZFoQX`GBJ.UH$Xd`H[L6iIXZcsJ:W<)K7nu6LPUeEMi<UT
+O,oEdPE_>uR$a>3S=Z=FTq\?ZVl-MoXKAY0Z*UgF[^`l[]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@\d1
+gYL`Di8N\UjQ>UfkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6HjrVcBfJcC<$ao?k~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:It.HHs*t#upj`0ird>_o<G>fKGB7V4
+@:s4b=+PgLH[0aTEG]H&AR]-JC'eZpGDD2qEcQGSrdX9`s*alooR6"RqL/?jrHnQlpNm$jH[L0f
+m<]=hH!FQW=]SO'='f3=?=!P:r*LCN@8g-(;c-Cj;,L4h;,U:h:f(#(IsufmI!U2<HN/6iGQ2jc
+F9$=[E;j_\D/=$(C27QuC&VlFC&VfEC%lB?C]%uKC\2EECLC-@9)hNd8k;`SrDEPmr_i\lr_`bq
+<;]\o;Z0Po;Z0Pm;YsDj;ZBVo;Z9Mn;#O;l;$'Qk;#X;n:f1*c:]jKi:f@9ir(mSp:f("c:f70f
+s%`VirD<Jgs%EGc9`B/.FoHR^GQ)jeGQ2peH2)^cHiJKlIJJ?jJ,b&rJc:9$KD:,oL&Hc*L\li'
+L]<2,M>)o(M>2u#MuJYFMh6.lDf0B,C1h-kC2A"iB`;`FCAM`ED#J5DDY\5NDut]WPl-dHQM#7r
+ErL.WFT6L`G5ZW-G^4R\H@(!dI=6QnIt3'#JqJ]/L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdO
+UnsueWN*&%Y->1;['d?P\\#Mf^VI_(`Pom=b0/#ScdC.heCE1'g"P3:hV[8MioB+^k3(smlKdg'
+mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJcEjlJ,~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:;cE6dq,RDn-RLAs-n7271GCI80JGFP
+5X%@o4?5A\2Dd0D0fM!L2E!]_:/Fec<;]Vn;ZB\k;ZBSo;Z'Jk;?0Yb;XdWY<;fbq<<#nr;ZB\l
+;Z0Pl;YO&e;ZABN0J*/S!\uJar\=F.,;Cr/0etL?5!D(l5!;(l5!(bc3B9&Z3BBDp77K^86pj:/
+7/B4T5sR\"5<_4lr]C?G4?G\f3qYK,3<2,<48qA@49%DF4$>bjq`Od>!^&M&r&"O62*1[t"$Jk4
+4o7>B4[/d,!Br[F48M#;49%>C4$5Y!4oIMB3s7T,5!M:/4p+#54[/g-!B`OD56!bH5!Aj.r]CKN
+5=%V#5<qFu5l<qJ5RKeB5<h.f3''i3;"m`e:/=[`;#X>l;#aDl;YsDl;Ya;i;uTYp;uK\p;uKVn
+;uT`!;c6Lm<W5qt;ts8j;ZTitqc<\ur`K5'rE&htpK@JtrE9#"q,dPts&o2#%9$)":JOVY9M7uQ
+9M\:YB`;`FCAM`ED#J5DDY\5NDu``1<:t80ErL.WFT6L`G5ZW-G^4R\H@(!dI=6QnIt3'#JqJ]/
+L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnsueWN*&%Y->1;['d?P\\#Mf^VI_(`Pom=b0/#S
+cdC.heCE1'g"P3:hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZWmo_sFA
+JcEjlJ,~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_toYtPl?sFQMm*KPUVfZJq/u5Jt\Zu
+N/!1FLhEfhW2QScR$EelL5:P9Nf]9^VQ,Z]H%^j.rfm,As-EPIs-<_OQBqB4qiq,G!0mAEooT69
+mZII2!0R8B!0Qr9qMt]<NK*gr"*f!1F8g.iE-chUH?jjbH[9p`H@1-fra#e:?!guI?!dM;#[LY=
+>[EDiVl'Hfs.KCcrLX+\Rf8]hQC!r'P`q5lP)t]aN/<FMM2-h@M"ul1Ll$tGMY)c&L]E;2MY;u-
+N!Y2Z@9$?0<aK$8r*0;->[753s',b7?X@&G?=!P8s'>V1ra,e9?XR5JrEfM2oj7Z(&6rLG>[(H=
+?!LT;=^#$6>$Co0s&oD*rE9;->[:Y6>6.l1rEK8)%9Zk;>$>'2=BAR,='&N&<ruB'<W7[ML&Qf.
+LPUfdMZ&G5N;eb6N;\b9NrG%:NrP.EOHG]hPEV71PQ$dHPPLIBQ2d0MQN`bER[T_8rLE_TrLWeV
+s.K@bpn7Y\pnIe^qk==jUnso`V5:'ZVuN\*V433gH?aRRDf0Q8GB/T?B`;`FCAM`ED#J5EDYe;K
+Dum/]rPnlXpi67QrH%jXs)n?brHJ9d!."Qis*J[3I=6QoIt3'#JqJ]/KnbA=M2@.LN/`mZOckll
+Q'Rc(R@B_;StD^NUSOcbW2co#Xfnt7ZaI6N\[oGe^;%M$`5Ta;aihlPcHsteeCE.%f\5*8h;7)J
+ioB(\k2tmll0@X%mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13ks*t~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ghW6!.Xuuq1&0g*IVC'CL1CmF)G]&
+B4b^UJUW#oHZsLNChRBl@q09QCCGN<FHC<ZF*W1_IXck5If+WoIeS9TIenKmI/SEkI/&'dI-l7c
+?!CH6=&r@'ra$+B?!q&H?X7)I?XR5>;cH]p;@HK$;,U7g;Gg7e;/Ca]IfFcpI/\EoH[0j\rc\Tj
+FEDSDE,]apD>nANCBSBdBPD2[CA_cIBPD/XC%lB?C]/&LC\)?SB3S5*8kVfT:esna;,U7h;cEZn
+rDESms&/nsr)<SmrDW_os&0&";c?RlqG[8h!`;inr)*GkrDEPj!Du\m;>O,h:B=9irDEDf"&Vlk
+;>j>k:B4/g:]O;j:'=6`9M'@$FoHR^GQ)jeGQ2peH2W'hHiA?kHiJKlIJJ?jJ,b&rJc:9$KD:,o
+L&Hc*L\li'LB*/,M=ui'M>W52M>iD)MuJ\8N=LhtG&VA:Chm]rAnPjlF8fkPC&VlDC]/)JD>%lD
+Du4JRK`./7Q2#@tErC(VFT6L`G5ZXbGQ<$gHN/>1I!pElIt*!!JV&N,KS>/9Ll$tHN/WaWO-,Tg
+Pa.Q$R$jG6SXuIIU8+N]Vl6VrXf\e2ZEpsI\%0)_]tV7t_SjF5aN;WKc-F\`daZguf@\g3gtgiF
+i8WeWjlY^hl07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$aT$b~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_c-&(q,JD6-7:Gr.QTIE1+k460/c-^
+5!M1n3B9#U1bpg@rAFm?5=SCE;,C3f;#jMn;u]bl;?'Pl;uBPn;tEoT;tj8i;uTbr;uTYp;u0Dj
+;u9Jf;?'ND0J>%1/1`;&1,:R;0f(R?1GLX?0etLJ4[(tk5<V1l4ZYSa3B0&Z3^?147K,[S7/B7M
+62s1[5<V+j4?Y\e4Zkhg3]K.m3;5E53r;#=4T%;?4T@VA4T%>K4#o2V2Dm?S4$*=%"$Ab34o7>B
+4[/d,s#pEFrB'm;r]C-@!BWF94T[`/4T%8B5!M:-4omf1q`XmAs#gNL4Zttn55mYL4[25!5X.Lu
+r]pEJs$-iU5X7Ou3&ru[pJ1ic:J^mbr_`\ls&&bnqG[Dlq,I8jr_`_prD`bprDNVnr_s#!;GpIo
+r_rkrpeq,j!E<(r<rQ5#=TDS'=8H%m=oVV%=o;Ct=8l>$=nu/0<`Dmm:JOYZ9hJ&R:/+@[B`;`F
+CAM`ED#J5EDYe;KDuid6qc*?1rGqjXqfMj\s*"?bs*+Nhrd+TkDgZt]IXcitJ:W<)K7nr5LPUeD
+Mi<USO,oEdP*D5tQ^F21S=Q7DTq\<XVPgAmX0&M-Yd1UC[^WfY]Y2%o_8=.0`lQ9FbK\>ZdF-Op
+f%8R.gYCWAi8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2b4j~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi5BnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_Y]VrPlI$GQMm*KPUr#]J<PP&BUtHH
+K8,/;BWeJ9VPKfPQ'./_LPCG6O-#Eo[#_J;K8,>JPa%C2PkgUDQN*6GQMHgDPlI!KPl$[EP5^RD
+P5CCAORnS7OSt=@OoUXDOT1I9OT1@AOT(:BNfB%sNs^5ZGB7bBE,]iDHMr+5H@'saI!^3fIpQGh
+?sR,H?sR)G?sm5D>@)cXWhuVeUS4C[TGX;oT:;:<R@0D.QB[VtOcklfNf8mQMMd8fL\Zc.Ll$uf
+MY)c'L]E;2MY2o,N!XuM>ZP0<?X6l?qHWu's',b6?X@&G?=*V9s'>V1ra,Y5r*TG0s'PJ+ra#G,
+$!UY?>[(E8=^,,0>5qh+=o__(=oqr7?2e%0>$5#,>Q.e6=^#!3>$>$1=&rI+r)X#'<E<+"rIt9+
+s+^W2M>iA8Mi<RPN;eb8N;JV7NrG%9NX(W,OcklkPEc'1rfdDHq3:lDs-E\O"dk^GR[]fFSGA`T
+T(noXT`(SZT`:_[U&^naU'IHhV50o`V5Ed\rMU:(RY-!5GBIqDE,frCEfXmIrb;@HqeQ.HrGD:H
+qeu:Ls)A(C`W!mWa89lSErC(VFT6L_G5ZUdG^4T6H?":ZI!pElIt*!!JV&N,KS>/9Ll$tGN/WaV
+O-#NfPEhE"R$jD4S=Z@GTqeE[Vl6SpXKAY0Z*UgF[^`l[]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$aT$b~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi8CnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_LMQ6s*k$!pj`$e-[f<;?s-HOE+iZk
+An>"pJ:2cjG'%\@C1Use@UX%gCj1SVO_f#YH2W0UIf+WnIe\?UIenKmI/J?kI/A6lI!^5<I/80i
+I.qt(?<g`;=B8F&=']*<?!UfD?XI,J?sd;MrDW\n!`MrnrDF&$:f:kSIsuinI!U0erd"]oH$FRX
+rc\<`#BFd&Df'?0D>e;NCBA6aB`2ZECAMWEB`)T=CA_lGC]J8AC_1,Z:.eA];G^.b:f:1g;H$Nm
+;Z9Pn;ZB\q<;fbo;Z9Vp;ZB\q<!#ur;Ya8d;Z0Jl;Z0Ji;#aDl:]O;i:]aEh;Z9Pe;#aDl;#a;l
+:/Cjc!)NSh!)<DbqfVj\rHJ3bs*+Kfs*=Ngs*FlpH[:$crd=]nq0r9ls+'utrdt0&pk8?preCE-
+qhFs&qMFm&qhb9/s,$`4oo&d-rJ_AEJou!LD/*fuAS,RkApA!&rb;@HqeQ.HrGD:Hqeu:Ls)A$l
+rKR>Iqf2OSrH%jXs)n<arHA<fH$TC8EI3(\I=6QoIt3'#JqJ]/KnbA=M2@+KN/`jYOHPcjQ'I]'
+R@9V8StD[LUSO`aW2ZeuXfen5Za@-K\@K5a]t_A"_o0O7aND]McHjkbe'uq"f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+13ks*t~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi5BnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_XCJ"<>ea_0.Jb22Dm0@/h\k96U<n"
+4Zkbc2`<KLr\=C1!]`P9r_WVmq,./ir_ieppeh#gs&8hnr_rGe!)rhqo2GB_r)<Vps&8nps&8em
+r)<Sm!E2nk;$A[.0J4t0r[e"&"u7th1,C[ArA"I=4Zu".4W?RH4?>J`3B0#Z5"8"17R]d76UF..
+6UF.,5skQ:"[YI=4Ztq,4U3u14$,Pd3B6stp,Me,!':!=r]L-@"[+t04[)%+4Sq8D3]K#UrB($?
+r]:3E5!M4-497T/q`OsD4T.A=3rM,A3]fIp4o[YD3s.T.5!Sg+qE=d@s#gNL4Zu"n55mYO4[21t
+5X.M!5<qL362a(K56Nr+2`j(t:]F2i:]4,g;?'Jm;?'Pi;u]_q;u0Jk;uTYp;uK\p;uKVn;uT`!
+;c6Lm<W5qt;tj/k;cHcp<WH5#=T2G'=T2Cu=S5es=Su>#=SPts=T2It=:eP5;G^+a:JFPU8kr,T
+8SDf:C&VlEC]/)JD>.rFDu"APE</m7r)EQ5r,VaWqfMj\rc\6a!dK!9rd&R2I!g?jIXcitJ:W<)
+K7nr5LPUeDMN!LRNfT9bP*;/rQ^F20S"-(BTV8-VV5L8kWiW>*Yd(OA[C3TU]=bhl^r""-`Q-'B
+bKS8Xd*^=le^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTd
+rdk*#s2b4j~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slp^7*l07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SVP&Q'@PuPE_;qPa%GuQBd`$qir[r
+PCf'PDe>Q)Ne`1ALhNomW2HD^S!T:sMMQq>Jrl%S['c%'H%Ud/Ocbh+PQ$gBQ1UC=Q2?gGPlR'G
+P5pdEOT:RAOoLO3OoLUDOoLOCOnFh9NrY:@O!KaFNK0'JH[0aTEcH#=H$Xd^H[0j^H@1*eI!pKn
+?XI2I?=71??N4CA?<g`>DQBe:VPBl[T`1YbTE:aYT)P/fR@';,QBd\uPECodO,X$p!/^]2r.k*)
+!/UW2s,-]1!/UN/qhY3.oo&j/!fM;CrEf\6>?b?<r`fJ.>l@n,>QJ,;r*KA-s'>V1ra5\5r*TG0
+!+5D*s'>J+$sd+B>?P*5>?Y37>[783!*T8($sR"C>[1K:=]np4>?q/2s&fY3=^#!2=BAO+=o;>)
+<`N1#<E/sPs+^W2M>iA=Mi<RQN/NXQN/[Xns,R)<rJpo=#*=t1P*;)orfd>G!0d5Crg!MLs-EnV
+R@0M5S,SrQSH>CRT(elUT`Lg[qk3q^n=foXrM9Iis/,=ari#jr&Z(tKI!^-]Ec6#:F*_hlWG-)G
+CAM`FD#J5GDYnAKE;FSS`W*pXa8U)VErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8
+Ll$tGMi<XUO-#KePE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>Y
+dF-Oof%8R.g>(N@hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#
+s2Y.i~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SZ8#pODmc-[f?=@9HQPDe`fkAn>"o
+JUVulF`hYABkV'fA797hCkIFcP&,)ZH2E$iIK4f_If+WoIeS9TIf"QmI/SElI/A6rI!^3fI!^6f
+I/A6jI//-h?3XY<>$"a(=T)M5?X6rD?X[AN?XI5Kr)3Vo;u9Jl;#jeuIfOrrHN8HmHN/7!G^"@T
+G'.kJEcH&:DZ+GPC]eEfCMNf]rFu7Gqe6%FqJ#_>qeQ1Is(hFH!,_XM!c).KrDEer:JXea;uTYp
+;uKVn;?'Pn;ZKeq;uKVm;u]bq;u]eu;c6Ni;ts8h;>sJm;>O,h;>sAl:]4)j:Jh!eqbR8ir(mAj
+r_WVj!DZGi:]O;i:'"!]r_*65rHA-`rHJ<drcnHgr-J<g!.+Wk!.=`nq0r9ls+'utrdt0&pk8?p
+!euD`reL?)r.b9.qhas&qhb<0re^T2pP\s.qi)2DJ9,[IDJO!#B4bgnApT)DC&VlDC]8/KD>8#G
+Du+GLEW)+%Q2Ye$ErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8Ll$tGMi<XUO-#Ke
+PE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>YdF-Oof%8R.g>(N@
+hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2Y.i~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SY_?qc+V8-86o+0/kaD0.\b02FBbo
+5!1qg3B&iR1bga?r\b!A5Y"[K:Jb!b;?'Pn;ZK_i;?'Pn;uBPn;tEle;uTbf;ta2h;u]hr;u]bq
+;u0Dj;uTYq;c<Hh$nj=h0.nh-.P*8.0JNJ]!])Sfr\FL0"#<&(4T7JU5!1ti3]]8\3BB8l7R]a8
+77I2Cs$ZlSrBgHKs$6NG#!=t/4Zkegpc8%-p,W"3r]L-@"["q14?bq*4Sq8J4?>Yh4?GVe3]d4$
+r]^0@!^8b0rB10F4oIJ=3rM,C3]fGe4S:l;4T7DE4?Ykmp-/@:rBC0C&3i?B4Zkhi5<hG!5<hCt
+5X>65r]pHI!^8S&r]:$Ss%`SirD<Gi!)WYls&/Yks&&hqqGdAkr_`_prD`bprDNVnr_s#!;H$Op
+r_rkrpJV#i!*/qt!*B,$s&f>(r`Au!mTKNkpK.>rr`Skq##nJs:JX\ZrCdAj92&/rC&VlDC]8/K
+D>8#GDu+GLEW8u:<;pn8ErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8Ll$tGMi<XU
+O-#KePE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>YdF-Oof%8R.
+g>(N@hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2Y.i~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l;md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO%dPlHpIPl6gGPlI$HPl?pfP]h(a
+DeGZ/OGACEMe9,pW2HD_R['+uM26n?LAm5@]s*X+H%Ug1OH>V(OoU^FPkgU:QMHgDPlI$KPl-^F
+P5UOCP5LIAOS"Y8OT(C@Op$o/OHG[uOT1@AOT(=@NWtJkIX?B_FT-7oE-ZeWH?spaH@'paH[:-i
+?sd8K?N+=3?N4@B?sR#A@&p?.WMZGcU7e4ZTG=)lT:D@=R@9J.QBdc$P*:ugNfAsRre^]4reCE.
+rJ13*!/UT1s,-K+r.k?0rJL9+s,7&KP(.9G?Nsb>>[:W?>l%\)>lS10?34D;>lJ%.?N4C4@/OC2
+?N4@4?2%\*?27_0?!LT;=^,,0>5qh1>?Y35=oMS7>[:W?>[(B8=^#$6>Zt>1=oDM-=]ed,=BYN&
+"]eT'<E+_PLB*20M?/ZorJUc8N;\b9NWb?%NfB%rNrP.EOHG]hPEV71PQ$dHPPLIBQ2d0MQN`bE
+R@9V7rg`bS!hPsSpRhDX!MH.`T`1YSUAq"eU]RBiVX^S`W;W\,UR?UZHZaLPE,or@HZbjXC&VlE
+C]/)KD>8#HDu4MIEW=#X`r'lTF8C"XFoQX`GQ2pfH2`-iHN8HmI0"eHrd\m;JqJ]/Knb><M2@+J
+N/`jYOHG]iPa.Q$R$jG5SXuIITqeE[Vl6VqXKA\1Z*UgF[^`l[]Y2(q_Sa=2a2lBGbg+M\dF6Uq
+f@S^0gYCWBi8EVTjQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$a8^Y~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l=md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO$:Ie\EdIfFgC?sQl;<H`@tA70%_
+=+Z!PI!KmWDfKQ*AS#C_CMRaFKQiSqE-6L$II)F\IK"]jIHc4WIK+]nHiAEkHiJKmHi/9gHN8Hj
+HiIIV?<gZ:=8l52?!^lD?=.&G?sd;L?=@2?r)3et;c6Ll;H!Kk!`ac$rdP3&I!^3fH[:!brco6&
+G'8(OF)u>@E,TW3D/F**CMR[#CAMWCC&VlEB`MoEC%uH?C]8/MC\_cHD>\2PGB%1trDNYk"&Mim
+;ts5j;>sJn;ZKeq;uBPm;ZK_p;u]eu;c6Ni;u0Am;c<QkrDNYm!DlYk;#aDl;#a>j;#a;k;#X>h
+:]OAj;#aDl:]aBf:B"&i:]4#l9M.uO96L2VrHJ'^s*=Ngq0N*hrI+KjrI=itqgn`us+C*"p4WR&
+KnfS^qM+p'!/UN/oSWO&s,-`2regK/r/CE1&;YmXDf0B-CM.6kBl.R5K5(="qeQ.Hrb_FJr,;IO
+p2U%qr,V^VqK2^Zs*"?bs*4Qhrd+Tk!.=co!IfOtJ8TpiK7ei2L5(M@M2I4MNK0']OckomQ'Rc(
+R@B\:StD^MUSO`aW2cl!Xfnt6Za@-K\@K5a]t_A"_o0O7aN;WLcHaeae'uq"f@em4gtglGi8WeX
+jlYail07O#m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13js*t~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l;md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO%T<;olF<&ZZj1GC^E1G::40fDEd
+5<_1l3]T,W2)I$C1,UsI4?uD6;,:%epJLofr_ieppJLrgs&8hnr_rJf!)repo2GB_rDW\ps&8qq
+s&8blrDW\n!`MuprD<_S0ek@60)dC..ki_50etO>1,Jkas"jX<s#giS4Ztni3]T5\3'')j7RmAG
+!CfNW6iTRP6N9=P6:(T8!'^BF#s::44ZYYd3B9/!3<2,>3VGH+3<2,<48h;@3s@`04?Pbiq`Oa=
+&48`K4Zkef4?>Mb4?GYg5!Aa)s#pEFrB10F4o@D=3rM,D3]fGe4ZrC#!'L3A!'U<GpHJU?s$$HG
+rBC0C!'gHHr]C?J5=%S"5Q*kF62j.J5Q<\F3]T5sr_<GhrD<;es&/Yk!`DrqqGdAkr_`_prD`bp
+rDNVnr_s#!;H$Opr_rkrpJV#i!*&kss&]2%!a/W-r`Au!mTKQlp/h5qr`Shp&6Dk.:esh\:JFJS
+9M\>V;/-#EqeQ.Hrb_FJr,;IOp2U+2s&Ao:r,_^VrcS6arHJ9ds*=Tis*F`nrd=frJ,Xt9JV&N,
+KS>/8Ll$tGMi<XUO-#KePE_>uQ^F21S"6.CTqS6WV5L8lWiW>+Yd(OA[C3TU]=bhl^r""-`Q-'A
+bKS8Wd*^=le^rF+g=tE=hr*GPj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTd
+rdk*#s2Y.i~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPlqjQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&PE_=,PPpaFPQ-mIPpUZpD/a3Y
+RZWAYM2>lKXJ_tkT:2+.Nf&XJKnPPJO1M0SPBhe6NrG.=OTCW/r07)DoToKAs-E\Mqih)Grfm>E
+!0[>Drf[5BrK-]7s,d5BrfR8DrfI/BpQ,oJOH5HaO,o<OIXHHeFE;O&E<gc8H[0p`H[5R:s*b3$
+?sd;L?!gt<?41.J?X6o?TW>,mW29Kg$_j>gTV/!OSXZ(9RJrQPQ3NV<P*(ieN;eb8M?o&pLPLV=
+LPUcbLB*/,M>rD2M>iD2M>rD0M>i>1M>`>)MZB1ERKAClAc?$@?!CQ>?!LY4>6S27?!LZBrE]J0
+r`oJ/ra,S2!+>\2s'G_4!+#>*r`oP0?2@e2>?Y04>[(B8r`oG+!*T;)$!^bA>[1K:>$5&->6A&3
+>$:f-#[(83<``F*='5H'#?Ff*<)cePM>`>-N;\b6NrP+:NrP.EOHG]hPEV71PQ$dHPPLIBQ2d0M
+QNrnGR[T_8S=K>E!hPsSpn%PZqk<n[rh8eTs.fRh!i;cknYcAb!35sr&YPJ?H[0^UEH#o=H%((3
+WbQ;FC]8/LD>8#HDu=SHE<:1"`VsoUF89qWFoQX_GQ2pfH2`*kH[L5?I;XL`J:N3%JqJ]/Knb><
+M2@+JN/`jYO-,TgPa.Q$R$jD4SXuIHTq\?ZVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=+/`lQ9EbK\>Y
+dF-Lnf%8R-g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#
+s2Y.i~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&Ie\EeIf=aB@:!)><HE1sART4`
+<J,jNI<fsWE,KH(ARo=\ChmjDIX-BZE--EtII;R`I04qHIX_$>l@/SXs*X`ks*X`ks*Xinr-\?f
+!.=cm#@V"H?<^W9=T2A$>le8;r*TJ3!+5_5rDWhs;H*Bh!`=8ordPH-I!g9fI!^0cH$OXYGBJ*.
+F:WD3EH#i6DJa9-Chmj&BkmEVrFu:HqIoqEqJ#b?qeQ1Is(hFHs)%dPrc\HfD.6QF;?]lm:f1.i
+peq,hs&/kq!*&kprDNVns&/kqr`&nqqG[2f!)remr_ibn"&Mij;>sDk;>sAl:]4)j:Jh$fqG7An
+:esna;,R<h!_uNdr_WVjrD!Ph9M%iJG'<h.qKW!brHe6c!.=`nq0r9ls+'utrdt0&pk8?p!euD`
+rJ19)r.b9.qhas&qhY<1qhb<0pP]$0qi(T9r/Cr;IWB@EChmebB*N-kCjgtOCAM`FD#S;HDZ"GN
+E:e,OEg2gfEr:"SFT-F_G5QRaGlN'gH3/G@I/\P3IXcluJUrE*K7nr5L5:\CMMmFQNfT6`P*2&p
+QC!u,R[]k>T:hmPUnsrdWN*#$Y-5(8ZaI6N\[oGd^;%M$_o9X:ai_fOcHjnde'ut#f\,!6h;7&I
+iSrnYk2tjjl0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HkrUg)?s+13js*t~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPcnjQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&lr=!b(cO</1GLgG1G::40fMHc
+5<h4l3]T)V2)P:es"t'?4@)J6;,:(gp/1fer_iepp/(ffr_reorDWAes&8kqo2GB_r)<Vps&8np
+s&8emr)<Sm%oZA';)9p\0/"q0/M&G'0`Eg*1(c;t0etO?1-Rla4Zkhi4?PYcr&G$O7n,p:77B[7
+r^6]R!(6]O'gP&M69me#5!;(m4$>bi4?GSa3BB4q3VGH,3<2,<48_5@3s7Z/4?Pe'4T.GA6O5tB
+4Zb_g4$#J&49@Z04o.8C4[(tjr]L<H4Zr[)q`=U9"$A_04S1f83rhDB5Q*bH4[8m/s#p?F!'U9E
+rB:*Cr]C?I5X@\$5Q!eF62j+W5<qFt4ubSa3BKu3rD<;es&/Yk!`DrqqGdAkr_`_prD`bprDNVn
+r_s#!;H$Opr_rkrpJV#i!*&kss&]2%!EiP'=8Q+f=oVUt=8l>%=nYqt=o;A6=&Vsm:JFMW91hrR
+:J=DYC23T\rbVRNphp"Jr,D:J!ch4<rc7pXq/lUYs*"<as*4Qhrd"WmI!kpADLR(cJ:W9'K7ei2
+L5(M@M2I4MNK0'\OckllQ'Rc(R@9V9StD[LU84W_Vl?\sXfek3ZEpsI\%0)_]Y;.s_Sa@4aN;TJ
+c-FY_daQ^sf@\d1gtgiEi8N\UjQ>UfkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$a8^Y~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ9h&m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$PEbO"-^9m>Ec5i1S=5RpKSbMC
+XKA@uUnF6IOH,6TL5(ACOH6fITpBtWKDpr2OT(@CP*>d-r0?`:rg!AFrg!MJrf[>FrK7,Cr/pr>
+oo]99s,m>E#*G(2OH>TepQ-_aOH5HaO+Mn2I!U$\F)l8=EI<%YG^+R^H$XgbI=HZn?XI2I?"!P:
+(g^HPQE@3gWMZJeUS4EUU7e-PTU_L?R@4&@rg!tXPECuhNf8mRMi3IMrJ1W4L5(J>M#E)/M#)u.
+M#E21MZ&D1M#N81M#N80MYN,.RJrWZR>#Zi?XI.=>Qe>;>?b;/>6A,9?!mP:!+#S/s'>V1ra,Y5
+qHjA3?XI,Fpg3r*q-<o's&oA+s&oJ.>[783!*T;)!aAr:r`fP0>$+r+>6A&3>$:f-#$G&1=&rI+
+r)X8,<E<+";c8L1Mi<YmN!#'"NK*jrs,Hr:s,RAGOcklkPEc'1rfdDHq3:lDs-E\O"IPUGR[a;H
+opu,Sq4@Y[r1WqZs.SnUs.fRhs.o^mnYcDcpo+gsP(7n)FE2G@EccSSGGD3RqeQ1IrGDCKr,;LP
+ol9nM!6+kWq/lRXs*"<as*4Qhrd+Tk!.=cos*e[3J:N3&JqJ]/Knb>;M2@+JN/WdXO-#NfPEhE"
+R$jD4S=Z=FTq\<XVPgAmX/rG,Yd(OA[^N]V]=bhl^r!t,`Q-'AbKS8Wd*^:ke^i@*g=tE=hVd>O
+j5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEaiJ,~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ'\$m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$q1&0gr-]u$?<^Q6FE;;1@V04b
+JqAH"H?XIODJNotA7]4dChn`SJ:DEVFEr:_rd=Efmsb1_rdOTil@/SXs*Xcls*X`ks*XinrHnWo
+I/A7&I!]@4?s[,D>Zk-0<E<I4?=!M:#@:eH?t!AL;uT`#;c6Ol;H$Nm;?h5oJ:N-!IK"TpH[Pd<
+s*4Qfs*"B`s)J'X#&\?sCi+$*rb;IJCA)?>C&_rIB`MoIB`MoEC&)N?C]A5NC\V`GGl;jdFpi"j
+;c6Lj:Jakc;cEQk#ZFW!;,U:j<)icorDNVns&&ks;uT_s;c<Hjs&&hor)*Po;Z0Jl;ZBSp:f7*d
+s&&bl!)NPi!DcPj;$'Qi:]=/p;,C%b:f1*h:]aBf:Amuh:]4&g9E.Td8P42Nq0;pbr-J-b!.=`n
+q0r9ls+'utrdt0&pk89ns+^N.qhG$(!/UK.onrBuregH.rf$c7!06u:rf.5=I<':ED/3kbAd)pe
+C4CnOqeQ1IrGDCKr,;LPol9nM!0mD&q/lRXs*"<as*4Qhrd+Tk!.=cos*e[3J:N3&JqJ]/Knb>;
+M2@+JN/WdXO-#NfPEhE"R$jD4S=Z=FTq\<XVPgAmX/rG,Yd(OA[^N]V]=bhl^r!t,`Q-'AbKS8W
+d*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+JcEaiJ,~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ'\$m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$m8X*c(cO</1GLjG1+t760JZ!]
+5!D+m3]T)V2)P:er\ag>5Y:rP!`Drppegodr_iepqGI8hr_`Skr)<;es&8hpo2GB_rDW_qr_rhp
+s&8emr)<Sm'2qdb2)$a=0.nk/.kE5*0JY@=1&Ng,1]K614qKh>4?Yhi4?>J_3&ird7n,uI7K5jV
+6iTRR6iKFP62j+M5<f'0$TgC54Ztnh3]T5^3W;);3<2,>3Vk]83W;#43<2,<48_5@3s@`04Zkhi
+r&b!C4ShDT69mat4$5Vd4$,Pd4[)(+49I`14ZrX*"["k.4?GY&3r:uA4?Yhi4S:i;4T7DE4[)(p
+rB:3Er'(*Cs#pEGrBC-B!^Ak3r]C?I5X7V#5Q!eF62X"J56sG53'')^3`&ZI;>=&k;H$Nj<;]\o
+;?0Yo<;ohp;Z9Vo<!6,t;cHcr;ufkj;?Bcr<W,tu=8Z2!=8H%e=TDRt=7TGn=nu/2<`2dk:JFPW
+91_fP;+sPYCAVfGD#J5IDZ"GNE:n5KEWB&9F89qVFoQX_GQ2pfH2`-iHN8HmIK+b1It3'#JqAW-
+KS>/8LP^kFMi<UTO,oBcP*;/rQ^F20S"-(ATV8*TUo(&gWiN5'YHY:<['mEQ\\#Mf^VI_'`5Td<
+aihoRcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+13is*t~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^?q+2P]h+bD1n^SO,8LFMMl8O
+VP^/]R[B>#MM?n?KohCYU9^,OH%gtMO8k=?OTCW/r07)Dn!=!=qiq&E!0mGG!0[>Drf[5Br/gW7
+s,d5BrfRMKOH>TeOH>V$O;O+AO,oBRI=6KgF`VVDE,^,KH?sd]I!U,<HQ.?]I:6Mj?s[2J?XI,H
+?sd5FQ`R<jWMubjUn[g]#G@]_T:DC=RJrTQQOT4EP*1rfNf8mSN/NRLreLN0#)S.kL51P?rJ(B/
+qMG6.rJCN2re^T0rJCQ1",VnlM>iD/MZK65r0dPQ!g8%Mra5Y0s'>Y/!*]>*"'Sr8>l.k,>lS+/
+?N+:3@/4.4?=.#E?2.b+?2.\)>Q7h5>$G06>?kE;>$>)-=ohl7r`f_5>$4s2>?kB:q-*f#"'8N+
+=o;>$<rH#'<)AL3NJrgUrepr=NfB%qNW>(;NrP1?O9Lc0P*;)orfd>G!0d5Crg!MLs-EqWR@9S6
+S=K5Bs.9(Zs.K:`qOmk^m\9`VrhTRj!2fan!3#Rgs/>[k&?;@dIsQB`EcQ&:Fa&+TU8n*+rbVRN
+qJQ4Lr,D@Lqf;UUq/lRXs*"<as*4QhrHeKj!.=co#(D&OJ:N3&re"g9Knb>;M2@+JN/WaWO-#Nf
+PEhE!R$a>3S=Q7DTqS6WV5L8kWiW>*YctF>[C3QT]"G\i^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEaiJ,~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^AEETIf"O0@:!,?@X<$0B4>Fb
+B3Be7I!U!XEH#`,rac(>rbMjcKR//cEccVSr-\3dmXG(^s*j]jl@/SXs*X`ks*Xcls*XinrHnWo
+I/A6oHt-Pl?X*M5"BSW)?=!P:s'Ph6ra5n:?sm>?;uTbr;uT\p;[$&t;KRJ@rI=]ls*Ocls*,?(
+G'8"NFE2DAE,TZ4D/='+Chda#C2%>XBEDm]C&VfEC&_rIB`MoIC&_rEC&)N@C]A5NC\hlIGQ2pd
+GQ2gfEFi>Q;ZBMn:f@9kq,.;l;GpHm<;fbo;Z9Vp;ZB\r;uT_s;c<Kks&/korDEYp;Z0Jk;ZBVo
+:]O;i;#aDl:]O;i:]aEh;#X>l:^Tup:f1(d:JXea;>sAn:/=X`:]O;i:'"!]r_!5`r-/?iG^+LZ
+r-J-br-eBirI=itqgn`us+C*"oS*="reLB*r.k<.qhb!'qhY<1qhb<0regc8qhtH4rJgf:rJgc9
+&<2EkEGo`2C2%9lBl%[%H\;32rbVRNqJQ4Lr,D@Lqf;UUq/lRXs*"<as*4QhrHeKj!.=co#(D&O
+J:N3&re"g9Knb>;M2@+JN/WaWO-#NfPEhE!R$a>3S=Q7DTqS6WV5L8kWiW>*YctF>[C3QT]"G\i
+^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-Bg
+rqcQirqu`no_sFAJcEaiJ,~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^@"u#<?X7X1G^OB2DQs=0JG7?
+5sIUt4ZbY`2Dm9G0etXF2`a2mr_W_r;H!3cr)3Mms&/emr)!Djr)3Gkp/1lhqc*/cpJh&hs&B"s
+s&/kqqbm>jr_a##1c$d>0J5"3r[\=/0ekF<1,:O>rA+C/&jANB4?Ybi4?P\d3]T5]6V'a;r^HiV
+!(?fRs$ZlS'gtAT5s[b&5X.Lt4[)%j4$>bj4?G\&3W2#73Vk]83W;#43<2,;48_5@49%J>497f9
+q*PTW5X%7l4ZYVc4?Pbj55@;B5!;%+4Tdf.4$<L("$/M)3r1o=4?`[+p-&F<s#U6D55meG56!eD
+56!eG4odbD55dVG5<_:149[o55X@Y"r':0Gr]pHI#!P"+3]]>apJLT^qGdAkr_`_prD`bprDNVn
+r_s#!;H$Opr_rkrp/1rj<)ris!*B)#r)`btmTBNlp/h5q"'8T+=8H%u=nu/'=]JEu:JUm`#>.Z_
+:/FVJ;#>&-D#S;JDZ"GNE;";KEr:"SFT$@^G5QRaGlN'fHN/<lI/\NuIXcitJ:W=OK4]djL5(J?
+M2I4MN/`mZOHPcjQ'IZ&R$sM7SXuIITqeE[Vl6SpXKAY0Yd1UC[^WfY]Y(tn_8=+/`lQ6DbK\>Y
+dF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#
+s2P(h~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol9'kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:fbqqi_#Cp6-eGGB%GNAY#$E
+Jqf2>BW\20US+0FP`UfZLP1>AOcbg5P*L<GK_gc0OT(@CP*>d-r0?`:rg!AFrg!MJrf[>FrK7,C
+r/pr>ooT69rfR2C!g/S+rfI5COo(7>OU.&$JU`,rH$49.E>EJ<H@($cI!U3eI!pBmIXY[3?XR2J
+@/O@K?<r;fXfSS'Vkp2bU8"?TTV%mMSt)7;RJrTQQO&k@P*1oeNK&nrM[YK"LPU_ALPUbCLkpf^
+LB*/,M>rD0M>rJ4M>W2.M>rD/MZ&J5RK&ZORJrWbR>Z<&?XI)D>[:Z@>?Y50>6A&6?![>6s',V0
+?![D8s'Pe6pL!r+pg3u+pg!i'"'Si2>Q.h+>Qe87>$5#-=p\G>?!LW=>$>$3rEB;+=o2A+=]ed,
+=BYK%"]\T'<)HKkNW4t;NUr21O8k=@P5g^GPl?mGPQ6pCPlI$JQN*9UR$jD3S"-#@Sc>;XT)bP^
+U%tA]U$\QSU].(hV#[C_VuN^gW=Z)#NI?+uG'%_EE-ZbQGbqG=C]8/KD>J/KDu=SKEVjeSF89qV
+FoHR^GQ2pfH2W$jH[L5?I0"eHrd\X4JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQC!u,S"#t?T:hmP
+UnsrdWN*#$Xfnt6Za@0L\@K5a]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N_VjlY^gl07L!
+m-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$`W(G~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol3%kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:jJppO<!fs'R0Y=^b6LDJ<Nj
+B4Y+qI=-<aF`VM=BP(dc@V]drEJ/OaDK9iFH[GX;p3lCYr-eQnpjMCUqgJHkrHnQlrHnNk!.4Tj
+r-KVt@U`\M>Zt94='&C-?=%#J?s[5J@:<PQ?slo4<E)pq;c<Tn%8p&%CP%+gIt3#tI!gAAHiSNm
+H2i*qGBS.PF`_YEEH(nq$>aQqD/=!'C2.Hrrb).B"DMO`BP@<Xs(_OIs(_RJrbD=Eq.feBs(q^N
+rG;CUrcnEds)n]kD.?[G;G^.c;>sMi;?0Sn;?Bcr<;fbn;Z9Sq;H*Kmq,@;ks&&_m!E2np;>jDm
+;?'Gm:]4,i;>sDl:]=2j:B45j;?'Gm:]=2j;$9]j:f1*h:]jKg:J^sd!)NMfs%NGc#Y7R4G^4OY
+H$T=6rHnQlrd4TlpjW0ks+'uts+:6&pk89ns+^N.qhG$(s+pQ/oSWU(s,-]1regH.rf$i9rJpl:
+qMl,GKR%QSDJX'$B4ksqChe?NrG2CKrGDCKrGVUQpMp(Nr,_[UrH8*_r-/0cs*=Qh!df<Brd=fr
+J,Xt2JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@B\:StD[LU84W_Vl?\sXf\e2Z*UgG[^`l[
+]Y2(q_SX71a2lBGbg"G[dF-Oof%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol3%kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:j#8r`(4&2Dd3>0/k^C/h\q5
+2F0Vm4[(qf3B/lQ1GU[C2E3W]7SloZr_iepp/1T_r)*AgqbdAkr)<;e!)rbooMbH_rDW_qs&8qq
+r_r\lr)3o"1c$sC0/>.50)dC(0/51;r\=L11&`s.1B]Hs5!1t,4V9e>4#o;\3C$,+7n,s:77K[5
+r^-ZRrBpTO!C9'N5R]h>4[)"i4?bnk4?>S!3W;)73Vtf93WD)53<2,;48M)>4o@G@6MNnR6:!h!
+4$>Yd48qAB4odbB49Ic14?WO)s#^6Cs#^->q`=pC4Ztnip-&C;s#U3Er]g?F!'U9Er]U9Fs#p<E
+rB1NQ5!D+l4?Ykn5sR[35lF"J5lEnO4ubSa4$,M";>!la<;]\o;?0Yo<;ohp;ZB\o<!6,t;cHcr
+;ufkj;?Bcr<W#kt=8Z1u=8Q+f=oVUt<rcA#=8Q+u=nl)2='8R':ea_[9h\5U9288W7T',"rbVOM
+qJQ7Mr,DCMqf;UUq/lRXrc\3`s*4QhrH\NlI!kpA!IfOtJ7jFbK7ei2L5(J>M2@+JN/WaWO-#Ke
+PE_>uQ^F21S"6.CTV8*UV5C/iWiN8(YHY:<['mEQ\\#Mf^VI_'`5Td<aihoQcHsteeC<($f\5'7
+h;7&IiT&t[k2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13hs*t~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo==rl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tBU,PQ-g?P9u$7P(\I$R?NS`
+Ll$q#Xf8.mUS!m>O,JgOKnPPMOH$#uQ$J"8Nqn_9OSt:BP*>g.qj$W9s-<GFrfmJJrK@5ErfR2C
+rK7&?oo]99s,m8C"Hee-OcfI$s,fR#K7JH$I!TmVEcQ/>H@(!`H$apdH@:6jJ:;rT?X[;J@:*AJ
+?sd8HCTab@XK/@uUnj`ZUS4BST:hjJS=5n7r0RbUP`q;nOH,<[reh8DM2I%CLPU_ALPUbCM2:t_
+!/UH-!/UN/!/g`3$AaInLl$tGM26tEqhbB3r0[PPqO.AP"dta3FCAPT>ln>;>Q.h+>6J,6?<pk7
+?3OV>>?kH>ra,V3s'YY0!FB.4?2e.1?i==1?27b*>6A&3=^1l/r`oG+!*T;)%pWCG>[1K:>$+s3
+>?kB9=o2A.=]ed,<`rL*=T);*<E<+!;Gg9hNW"k;O8FqCO,f6]O-#HdP5^XFPl?mGPQ6pCPlI$J
+QN*9UR$jD3S"-#@SH,8XTDtS^U&(G^U$SKRU].(hV>mFaVuEXdW=YttLOFJoF)u>BFF8:VHr[9I
+C]8/LD>J/KDuFYLEVskTF80kVFoHR]GQ2pfH2W'hHN8HmIK+`rJ,Xt=JV&N,KS>/8LPUeDMMmFP
+NK0']OckomQ'Rc(R@9V8St;UKU84T^Vl6VqXKAY0Z*L^D[^WfY]Y(tn_8=+/`lQ6DbKS8XdF$Fm
+e^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo47ql07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tF>opjW'f-Y-M!@UW5UD/!Kl
+B4Y(pIX?BcG&hS=BP(mf@r,ssDL?YWCiXTBHN&9hI.i!VIf+WoIe\?UIenKmI/SEkI/SElI/eQl
+Hk:^RH[B:5@UW\N>Zt93=&rB$?3OVA?XR8KraGh7#[pY3<)lmr;H!Km!`Dj!rdt0#s*k9%I!g?i
+I!^5>H2i-gG5l^bEt<;2E,]]3Ci*s)C27U"C2*Z\rb).BrFl7Frb2FKBkmQ[s(VOJrbD=Eq.feB
+s(q[M!,VUX!-nKercnHes*"Eb");4B;Z9Jm;>sMj;?p,u;,U:j<)icorDNVn!E)ko<<#ks;Z'Jn
+;ZBVl;?0Yn;>sJn;?'Gm:]4,h;>sAl:]4)j:Jh$fs%i\kr_WVl!`2Wgr_`\l"&DZf:B")i:]4#m
+92%rM8P)JOH2W'eHiJKmHi8BfIf4crJGXotK)UDtK_0ruLAco(LAco-M#W;3M#N8'MZ&D3MYi8/
+MYN,/N;\b8NrG%5NY%)%G&_D:CM@HpB5DF"CeKH\C]8/LD>J/KDuFYLEVskTF80kVFoHR]GQ2pf
+H2W'hHN8HmIK+`rJ,Xt=JV&N,KS>/8LPUeDMMmFPNK0']OckomQ'Rc(R@9V8St;UKU84T^Vl6Vq
+XKAY0Z*L^D[^WfY]Y(tn_8=+/`lQ6DbKS8XdF$Fme^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo47ql07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tF;Cs&Jemr`/tG'JM$f0K(aB
+0/#%72FB_m5!:tf3]R*r$SjFq2E*KY7nc]U<;oho;Ya2c;Z'Dh;#=)i;Z'Je;?0Ym<:a&_<;fbp
+<<#ns;ZB\m;Z0Mu2DR'E0ek?\/cR@*.ki_71GSka$o'Ln1,C[@5<_1l4[/j-!':*>"Zo4F84Q/K
+705qH7/fOR7/]IX5sRb&5X7P"r]UWO4?G\i4?Ybd47tW63r(c:3]['ss#C'=pGi47q`FU9!'U<D
+rB^NP6MNnO6:!k$4?`[*r]L3E!'U0@"$Jh14T%>E4?GVer&ap>q`Fg?!'U<Dp-&C;!BWID5Q*bG
+4o@MD4oRVF4oISC4oRYF4o[VG5!VF05lF"J5RTeA5<_7k3]T2^3B@%8oi(]dr)<Sm!)rhqr_rbn
+s&8kqs&&ns<)ros!)rSh!E2tp<WH5!=Su7t=RK>l=R]Di=Su=s=T);,<)QOf;,'eZ9)_Ne:/!QB
+rbMLLrb_LLrGVXRpMp+Or,_XTrcS3`qfi'bs*=Qhs*F`nrdFfq!.XuuEe/gpK7nr5L51SAM2I4M
+N/`jYOHG]iPa.Q$R$jD4S=Z=FTq\?YVPgAmWiW>*Yd(L?[C3QT]"G\i^VRe)`Q$!?b0/#ScdC.h
+eCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAJcE^h
+J,~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol9'kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"hr0.)Bq3*.`KU%:GBpt<E
+L44o6B<A23US=?JPE1Z\LP:DDOcYutO-Y'BKT5_e!0I/A!0[5Dr0?c;!1!>DrfmJJrK@5ErK7,C
+r/pu?oo]99rfR2C!g/S+rfI5COo1:MMM6Y3IscThF`VPDDfPc&)L6XUI!U-fIXciq?sm>K?=.)H
+?s[2J?XBS3ri?=)W2?AdU8%X\rh(.#SXc.:R@'D0Q^<r$PEV)gNfB!UMi*CKM>i20L55Y^reUW2
+qM,',q2#*-qhY<1rJ:c8LPL\AM2I2iM>W52R/E?PR/*0LRK]+AIr/P"r`oS3?!I;3s'#V0>?tQ@
+r*BP4>[(H=?2e11?iOO0?iFC3?2\(0?iFC2?27b)>Q7h+>Q.e->?kG4=qb%B=^#$8?<g`>>?Y-3
+>$G69>$:`+#[(83=&rI+='5E&s&T+us%rcUr/Lc<qi:T8s,d8Ds-*GHs-*GH!0d5Cs-<SLs-EqW
+R@9S6S=K5B!1s"Yr1WqZs.SeR!2KLg!i;ckoV_\en>R"sRY-!5F)u;>EHcbUG(*MnC]8/LD>J/K
+DuFYMEVskTF80kVFo?L]GQ2peH2`-iHiJKmI<0jeIt3'#JV&N,KS>/8LPUeDMMmFPNK0']Ockom
+Q'Rc(R@9V8SXuIIU8+N\Vl-MoX0&P.Yd1UB[^WcW]=bhl^r!t,`Q-'AbKS5Vd*^:keCN7(g=k?<
+hV[8Mj5]4_k3)!nlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcE[gJ,~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol<(kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"hJ,OirIK"]lI3rQ7DId3V
+Ec>`&?Y3kMJUW#mG]e(GCM@Bm@q0=lCNFZBIVa%IH2`-iHi&3aIIDXSIJeQoIIVd_IK+]mHiJHq
+H[L0erd4]mrHo-(Ht[)%@:<JK>[(B5=B8K%?N+:5?sd:>@1$C@;cQaq;c?Ol;uTZ#;14%JJUr?$
+If4]pI/\EoH$FRXrcSfpFE;JCEH#l8Ci+$)ChmhcC&huGB`2TBB_uKHC2%EsCA_fGC&huHCA_fA
+CAVfHD#\8NG5HIbG^"B2GlN!eFp3#.B3\>4r_WSmq,.2kr_`er<)ifpr)*Yr;H$Ikr)E\ps&/eo
+s&/kor)*Po;Z0Jl;ZBVo:]O;h;#aDl:^0]l:Jak`;#O5l:f%'es%rho:/Cjdr_NYk:JUmcs%iSg
+#>[ua8kDTFH2N!dHiJKnHN8HlIJA9iJ,b&rJcC?$KD:,lK`Hl+L\cc(L]<21M#`A2M=c])M>iD/
+M>iD-MuJ\6NW+t<NV/;DMhQ4kDJX*&AnPgoD/4&_K5:I&rb_LLrGVXRpi64Pr,_XTrcS0_r-/0c
+rd"Khs*OcnrdAj:It*!!JUrE*K7nr5L51SAM2I4MN/`jYOHG]iPa.Q$R$jD4S=Q7DTq\<XV5L5j
+WiN8)YHY==['mHR\\#Mf^VI_'`5Td<aihoQcHsteeC<($f\5'7h;7&IiT&tZk2tjkl0@U$m-X60
+nF5u=o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?s+13gs*t~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol?)kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"h<)iispf.5ms!K$F/1WA4
+2)?m90/,:O5X%=n4#o8[2)R3F1,_'L3B]l-:Jt0i;uKVi;>X8e;>a8f;=RQ`;u9Pc;ts>i;u]hs
+;u]bp;uBPn;Zep81,Stb$8=(b/M/M)0JYC<r\=g:1,C[@1GV-X4?WU+!]rP-r](9G77Tm=7n,s:
+7fGgO6NTS?6N04O5<qF24U=/54ZY\d4#o@o3WD/;3<M<&3]['ss#C'=q)SC7r&ad<"?ek14@B!4
+p-T!M5sRUs4oRPC49@Z055IAD4[)"kr&k-E4$,S&49%A=48V/64oIJF4[)(prBC6ErBC3Ds#pEG
+rBC-B#!Y:74ZkhjpH\[Cr':9H#sLR63]fD`3`/fH;uBVm;uTYp;uK\p;uKVo;uK\q;?Bcr<W5qt
+;ta)i;cNWps&]/$r)`btmTKQln5oQjqcW\rr)XJ4;Gg7d9he;T9h\8U:/!NAC]8/LD>J/KDuFYM
+EVskTF80kVFo?L]GQ2peH2`-iHiJKmI<0jeIt3'#JV&N,KS>/8LPUeDMMmFPNK0']OckomQ'Rc(
+R@9V8SXuIIU8+N\Vl-MoX0&P.Yd1UB[^WcW]=bhl^r!t,`Q-'AbKS5Vd*^:keCN7(g=k?<hV[8M
+j5]4_k3)!nlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcE[gJ,~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloFCsl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(kerKI/BqNE7_K:%FKBUkEJ
+KRno8B!&&0V50]OQBI2aLPUSEP*2u5[]k%-K8fMbs,d5B!KrZDPl-gCQMQmHQN*6GPl6jIPl6dG
+P5^UDP5LIAOS"Y8OT(C@Oo^],rfI5COo:@]M1pP2J:2`eFDl2?EI<.\HZsj_H[L6hI=6To@/aL6
+?=<Y;$snprXf\\+Wi)\hUS@a]rh(1'St2@<R@0G1R$X/)PEV,iO,f3WMi3FLM22"_"GV\fLl)(d
+s+p`3qM,',m>:k!#)A"jM2I1Ir/1K@r0[PPq3h5Ns-WtIH=pUa>m"D=>?h)1"^>/6?!^h6?3FM;
+>[:Y7?N4C4@/++/?N4=2?34D=?i==2?2\%.?2e+/>Q7hC>$G06>?kE;>$>'4=^#!6?<g`>>?P*2
+>5h_,>$:`+#[(83=&rI+='5B%$W^8-<)?IgO,f6]O8P%:O8b7@P5gaFPQ6pGPQ6pCPlI$JQN*9U
+R$jD3S"-#@SH,8XT)bP^U&(G]U&LbdU%"cVU]$tiV5C-_Vu<R^W=YnoIX6<^EcGu<G^F^VJ6AuQ
+D#S;KDZ+MPE;=MOEr:"RFT-F]G5QR`GlN'fHN/<lI/SHoIXh?IC4UtgK7ei2L5(J>M2@+JN/WaV
+O-#KePE_>tQ^F//S"-%@T:qsRUnsrdWN*##Xfnt6Za@-K\@K2`]tV7t_Sa@4aN2NIbg+P]dF6Uq
+f@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloFCsl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(kerI4`o!.O`l-=pV*ARnb]
+EG8liAS"nnIXHKgF`_V@BkM$j@r-"!K6<!3C3"HBrHeHiqgA*comZ4TqgSQnnUC=_s*Xcls*Ooq
+I!g;?HiSNlHjY:8AR]+W?<g]<=T2AH?X@)G?=7,I?t!DN?t!JB<)cjr;c6Ll;Gp@hDhE[oJUi6"
+rI"s!H[L-bH?sg\rc\`nF`_\FF)c/:D/=(gD#\8TC27NsBPD2ZB`)NBB_uKEC2*Z^qe>nArFu(B
+rbDLMrbDLMrc\0_!-nKes*4Qfrc\<a")h[O;Z9Jm;Z9Vk;?0Yo;Z9Yp;uBMr;c6Ol;YsGn;ZK_n
+;ZK_p;>jAn;c<Tl#uXVu;Gg:f:esmc;#aDl:^9cm:Jak`:f.-gs%i\kr_Ner:esk`;,R<h#>S&i
+:f'qa:]4#h:J:XY!D,c[HMi-iI/eQnI/\QiIf+]qJGXotK)UDtK_0ruLAco(LAco-L]WEhM#N8'
+MZ8P3MY`2/MYN,/N;\b9NrG%0NY%)"Ec5l4C2%?nCMdp$E(Yc^D#S;KDZ+MPE;=MOEr:"RFT-F]
+G5QR`GlN'fHN/<lI/SHoIXh?IC4UtgK7ei2L5(J>M2@+JN/WaVO-#KePE_>tQ^F//S"-%@T:qsR
+UnsrdWN*##Xfnt6Za@-K\@K2`]tV7t_Sa@4aN2NIbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckiq?s
+lg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloOItl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(ke<;onm<;olE-RLT".krt@
+0eb.30fDHd5<V.l3]K,W2)I'D2E3WX5!i%A;H-Wl;uT\j;>sJf;>*fd;=RQa;u9Pb;ts>j;u]hr
+;ZK_p;uBMr;`-Ee2#]32/h\jV/-msd1,:X@0JbH^1'KHh5<_1lr]LiU4ZbV`3^H8+84Q-=77B[6
+7/0.K652^M5X7Ls4Ztnh5!1tj4?>Pa3]T1k3WD/<3<VB'3]]:u3;5H43r;#<49.PC4T7_F6M<eH
+63BM=4[&d+"?\h15!Jd)!^8b0r&kBL4$,Pd4$5Se3]d+!r&k!B!'L'?rB('CrBL9Fs#pBG!BiXG
+4o[\G4o@MB4U4285!;%k4[8p2!'gBHrBUNN5<qL356a)/3]fDa2Y9rG<;]\p;ZB\o<;ohp;ZB\o
+<<#ht;cHcr<:s,i;cW]q!*B&"rE&kumTKQln5oTkqH<SqqH"51<)HFe:/">S:/"G[9M76<rbVRN
+qel@NrG_RPr,V^VpiQLXrHA*_rcnHgrHeKj!.=`n!IfOtJ80XeJqJ]/Knb>;Ll$tGMi<USNfT9a
+P*;,qQ'[l*R[]h<StD^MUSO``Vl?\sXKA\1Z*UgF[^`lZ]Y2%o_8=+/`lQ6DbKS8Xd*^=le^rF+
+g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcE[gJ,~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c.fjP5UUEOscHVJSU-r
+BV(TPLOtDALodYVV50]OR$3PfM26hHOHHT,[BY",JrK>_!0I/A!KrZEPQI/9Q1pUAQ2['LQ2-[C
+Q2[$JP5pdEOoLUCOo:C7OT:LAOoCLEOc]R)(Qac@OGf$MJq&5rHZjLOE,flEH@'sbHiAC4I=?To
+I=GX3?sd5J?XR2I?XS&[Y-"h-XK&1oU]-tpTqJ*PTq@mHS!]ZDR1#CKQ^*buOcPTbN/RXl",V_b
+K_pH*L51SArJ:K1s+pZ0",M_fM"lf.Ll%#bM>rD3LB<9gM>`>3Qi3<LR/iWMRJrZTR0/h2FC>#Q
+!F/k.=p%u4>$Ul0"C,/8?![D8!+5_5q-X/.s'>Y2s'5V3rEfM0r*05-r`oJ-"^5&3>?Y5/>Q7n,
+=oMS3>[:W?>[(?6=B\o->Q7k'=pJ24=B8O+='5E&$<C,+<E)gl:l^Ttr/U`:s,d8C#*P16Pa%Gs
+oT]B@s-EYN#+1gIS"#q<oUPuRqO[b\r1Wt[rLs7c!28nV!2KLg!i;ckp8@hemAU_uTTahNH$=CN
+EHHYUH?4[>XDIlQqJQ:NrG_RPr,VaWpiQLXrHA'^s*4QhrHeKjs*Xfos*artrdY$#K)UCAKS>/8
+LPUeDMMmFPNK0']OckllQ'I]'R$sM6SXuIHTq\?YVPgAmWiW>*Yd(L?[C3QT\\#Mg^VI_(`5Td<
+aihoQcHsteeC<($f\5'7h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+13gs*t~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c.'MI2ZHmB4=h_E,/um
+B4tn.J:DolF`VP@CM.9kAH$BMJTQ^/CiOQBqg/6gr-\3d!e,QGpO;IWqgSNmnUC@`s*X`krHnTl
+rd4]mrd5#dBP(^^?sR#@>5hS3<aK*>?=7,J?t!GO?iFI>;cQdr;c?Rm<;oc0?\<u_Jq8H%Isl]m
+I=-EgH[:!`GlDpeFp`A6F)l;?Df0H/DZ4JOCC"WfBP1skBPD2ZB`2TCB_uNACAV`FC'86cCMIV_
+C&D]GC&VlGC]APUG5HI`Gl;gfG^"B2G5cUgCLC%;:f1*h;u0Al;uBPn<;ohm;ZBYr;H*Kms&8qq
+rDW_os&&_m!E2nn;?'Mo;>O,g;>sDl:]4)j:Jh$fs%i\kr_WVl"Ahii;,R<hs%`Si"&Mci:]*rm
+:J+8Q8P)?srHnNks*OcnrI+NkrI=crr.4m"re(!!oS!:"rJ16(reLK/!/^]2re^<*s,$]3qMG60
+pP]!/rf$o<rf-H.&rh]rEGo]2C1h0nD/F*%Db5Y!rb_LLrbqaSq/Q=QrH%aUrcS0_qfi'bs*=Qh
+s*OcnrdFfq!.Xuu!J,k%K5cKtL5(J>M2@+JN/WaVO-#KeP*D5sQ^F//S"#t?T:hmPUnjlcW2cl!
+Xfen5ZEpsI\%0&]]Y;.r_Sa=2a2lBGbg"G[dF-Oof%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c,V&<$t[F-Rp\s0fV$H
+0.\e30ge5k5<M%h3B/oS1c$mG3&ir^6;CBT<)iWks&/Vhs&/ems%rVjp.t`dnl#Hcr)E5cpf./i
+s&B"s!)iepr_a#!2)R9H2)-d>r[n:(/M&XU1(uGu0f(R?1GU^A1Hmub4?Yhi4[&d)#<bRI84Q0>
+7fGgV7/'%Q5sdn(5X7X74psM73^,\g4$#Da3]c^is#U'<rAjp=q`+U9!]W2$r&Fg>4$*4"rB1!F
+qEjmCs$@,[5X.Co4$5Vg4[)%mqE+jD4Zkk)4o[VD4T7DE4?GSbq`F^<s#pBEs#g?GrB:'@rBL6E
+"?eq44[/j.s$$HGrBC-Bs$$HG#!>%55X@Y"rBU?J"[YL@5<qL556sM<4ukYd4$#:n;u9Pl;Z]iq
+;uBVp;uKVo;uT`!;c6Ll<W,ni;?9]rqc3\uqcNeuqH32hs&eblrE/r"pfRGqrE0(u%o?"s9he;S
+9heAZ:/!K?D#S;JDZ4SQE;=MOErC(SFT-F]G5HL`GlN'fHN/?lI/\QoIK4lsJ,t4Qre#0CKnb>;
+Ll$tGMi<USNfT9aP*2&pQ'[l*R[]e;StD[LU84T^Vl6VqXKAY0Z*L^D[^WfX]=bkm^r""-`Q-'A
+bKS5Vd*^:keCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcE[gJ,~>
+JcC<$JcGNFlMgYYqu$Ei!3uJ!rVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[[ier0%#BrK8IK
+F**+jSXGRnKnsJVKWV,KUn+$BOc53SLP1>COgU=YT6Yp=N:W,1OT(@CP*>d-s-<;Dqj%2Is-<GF
+r0@;Hs-*JGrfR5Dr/pr>nWEg6!g/S+rfI2Brf$l0s*c/?HZsRQE,foFH@'scH$k!fIXZ]oJ:M$7
+?sd8K?=7)H?X`r:s/dNIX/VtlUna]ZTqJ*OTUqaFR[BP2R[KM/QBdYtOcYZbN/NVmMZ/>0K_pH+
+L51P@M>`81M#`A1LB<9eL\ci-M"HN3LkgbAM2@+IR$X2,rL!/Ds-iqT!g/"Mr*BD/>PhS(>kq\-
+>[(G3?2e.4?XR;Mq-X/.ra#P1!F9(2?N+7/>QA(/>lS%-=o_e+>5qe0>[(E8=oMS8>[:W?>[(B7
+=BSg3>[(B7qcX8.=BJU)=BAU,rDs5(<`N*s;,Bp`Nr>%=OT1ICPQ$dHQ2$RDQ2QsIQ2d0LQNihF
+R[]e:SFrHQT),&ZT_tM\T_tJbU7n:NUAq"eU]RBiVYI(dW9U>oWh59"H?XRUF)c>UH$FLf=02C<
+qel@Nrc%[QrGqgWq/lUYrHA'^s*4NgrHeKj!.=`n!e,WKrdY$#K)UC7KS>/8LPUeDMMmFPNK0']
+OckllQ'IZ&R$jG5SXuFGTq\<XV5L8kWiN8)YHY==['mEQ\[oGe^V@V%_o9X:aND]McHjkbe'uq"
+f@em4gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$_uG5~>
+JcC<$JcGNFlMgYYqu$Ei!0@'TrVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[[*;oR/#p?t!MS
+F`D5-@V&YBBnC_[H?F:KDJEisA7T1eCkZncIr'(FGkuadHN8BkHiAEbIJ/-WIJ\KlII_jaIK"Wm
+Hi8?lHiAC/HYR8.A7K%U?<pc<=B8O*?=$uG?s[2Ira?=E@:E\E<)Zap;c6Om;,L9kKE$N4JUi6!
+I!gBkH[L-cH$TC6s*"QgF`hg*EWU2uDuOVOC]S<crFl4Ds(MFHr+Q%As(M7CrG)1CqJ-"Dr+c7G
+s(_RLrcSEeG'.tOqfi'brc\EgGBa%0s)eEeF(eeV;>sMj;?0Yn;ZB\t;c6Qj;ZBYr;H*Nnr_reo
+r_rhps&&\l!)rhn"B&)p;Gm6dr)!Jk:]!uf;?'Gm:]=2j;$9]j:Jk!g:^Bil:JO_^:esmc:&n)h
+9E.Qc84@lPrd=`ms*Xcnq0r9lrdaots+:9'pOr3ns+^K-qM,!)reLQ0reUQ1onia+rJLE-!/gK.
+rJ^T4muA!>LO!lXD/<s#B5)@$Che#_LAl&eDZ+MQE;=MPEr:"SFT-F]G5HL`GlE!eHN/<lI/SHp
+IXckHJ,t4Qre"g9Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rf)R@B\:St;UKU8+N\Vl6SpX0&P.Yd1UB
+[^N]V]"G_k^VRe)`Q$!?b0/#Scd:(geCE1&g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s+13fs*t~>
+JcC<$JcGNFlMgYYqu$Ei!*&mnrVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[YX>oMcbm5!CGH
+3&WNF/MK.D4$c%o4Zkbc2`<NM1GU]a3!;E27o<1U;ZK_k;>sGn;>j>h;>*fd;=RQa;u9Pb;ts>j
+;u]hs;u]bp;ZTcUr\X^31]B'N0.ee-/M&V31G^dA0etO?1GU^A1d*ua4?Yhi4Zk\b3rMPS84Q-=
+77K^67/K=X6:4++6:*n%5X563%Qum95!:ti3]fA_3]]8\mlCD/r&O^:!'0p9pGr"1s#g*Eqa1!D
+rB^NM55dVD4o[\H4ZiO'"$Jh14T%AA3s%N+48qAB3r;#94T@SE497T/r&t!@!'^BHrBC6E!'^<D
+"$\t54oISB4o[_G4o[VI5!VD!5Q*kH5nZLM5sIV"5<qFt5!M(g3]fA_2>L2J<;]Yp;Z9Su<)Zaq
+;cEWms&8nr"B/2r;cWcqohkfi<Voes=8Q+t=8Q+g=oVUn=8l=u=nl,!=8Q,!=TVQ$;#X5i9aFEf
+9hnJW9f5cHD>S5LDuO_OEW'qUF89qWFo?L\GQ2peH2W'hHN8HlI0+kIJ,Xs!JV*lRAqYkmL51SA
+M2I4MN/`jYOHG]hPa.N"R$a;2S"6.BTV8*TUnsufWN*#$Y-5(8Za@0L\@K2`]t_=u_Sa@4aN2NI
+bg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTd
+rdk*#s24ke~>
+JcC<$JcGNFli-bZqu$?gs02P#rVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VR%rf[5DrK7/'
+rGs*"CM[d&DJNs"XehnjU7.I6NJ`RJKS5JMXcTo]H%:L)nW*[3rK.,DPPg[EQ1pUAQ2['LQ26aC
+Q2[$JP5pdEOoLUCOo:C7OT:LBOo:FDOc]R)$B:"$K7\T&H[9pXrbqmdI/\I!I!pEjIXlfnJ:IN*
+s'Gt<?XI,H?_RJ%s/cI+Wi)\hV#I.hTcB_tTq7gER$jD3R@'>,QB[PrOcb]aN/W[QMMd2eL&Zi'
+L&Zl/LP^ldM#N59LkgbALkgbAqhY</rJ:N3q2#*-reC]7Q^F,+R$[];o9oWIrL!qNH=gJj?X@#B
+qcWu(qd'M5?<pc>>[:Y7?3=PB@:8n<s'>q9>[:ZB?!^n;?N+7/>lS+0>lIt-=o_e+>5qe.>[(G2
+=oV\*?2n.1>?_#/"^5,8>?Y2,>5q_0=BAO*=BAW'<sMc*<E)mo;,.%M$]gC1O-#HcP*;)oPl?sD
+PQ7!IPlI$KQN!3TR$jD4S"-#ASc>;XT)bP^U&:SYU%+lWU]$tiV5C-bVu3LXWW/t3W18`oH?aUS
+EcQMYH?OOs>H_m\qelCOrG_UQrGqjXq/lRXrc\0_rcnHgrHeKjs*Xfos*artrdb$"Fb56uKS5&6
+L51SAM2I4MN/`jYOHG]hPEhE!R$a;2S"-(ATV8*TUnsueWN*##Xfnt6Za7'J\%0)^]Y;.r_Sa=2
+a2lBGbg"G[dF-Lnf%8R-g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6i
+r;HTdrdk*#s24ke~>
+JcC<$JcGNFli-bZqu$?gs,[3WrVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VQepO**j@U]7D
+!FB%0>8gXF=+YgIH?jRPDej'"A7T1dCjpD\IV`tDGkHC^HiJKbIJ83XIJSEkIIhpaIK+]nHi/6k
+HiAC7CMIKm@U`_O>[1E5<``X7?XI2J?t!GO@:3JP@8g*(rDNkt;c6OkHi8TsJcC3,IXHQmI=$?g
+H?jf7GlMsnG'%eHEcH#8DZ+DUChmj'BkdEW!,):Es(VFFrFZ1FB5%0VrG)1CrFuCLC23]]rbDFH
+!GZcUFoZ[`Foc`/r-/0cqfi$_s)eHfGAq%nr_W\o;u'>k;uKSt;cH[n;H*Ei!`MuprD`bprDNYo
+s&/koqGR;i"]A2p;Gg<f;#F2i:]O;i;#O8h;#aAq:eje`;>j;m:/=Xa;#a>i:B+)i9)_B_84<H)
+!.4]mrI+KjrI=fsr.4m"s+C'!onEF#rJ16(reLK/!/LQ0re^-%q2#*/p5Am.qMjs(s,RhOKm.KR
+D/<s#BPVR'C28)jKl(](DZ4SQE;FSQErC(TFT$@]G5HL_GlN'fHN/?lI/\QoIK4lsJH(1CJqJ]/
+KS>/8LPUeDMMmFPNK0']OcklkQ'IZ&R$jG5S=Z=FTq\<XV5L5jWiN5'YHY:<ZaI6N\[oDc^;%J#
+_o0O7aN;WLc-F\`daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$_uG5~>
+JcC<$JcGNFli-bZqu$?gs&K*rrVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VQ<p/E8$5!D(l
+4?P\c3]]5[1I42h4?bec3Ar`P1GU[E3&Eca7o<1T;u]bk;>sGn;>j>h;>*fd;=[Wb;u9Pb;ts>j
+;uTbr;ZK_p;]%DM2Dm9I0JG.5/M8S+0JYC>1GLU>1GUcc1(?$'4Zkhi4?bki4#o>ir^R#Z7n<PI
+"%YgI7/91M62j4N5lX%Q4[)%l4$>b+4:+&13]T5^3&rrXr]'s>o/Ze2rAjd:!'0s:rAaj=rAjm=
+qE"[DpI"gEp-\gG"%,@>4oIMC4TR`0qE+jC5!;%+4TIVB48q>C4$*7#rB(0D4?Yk,49.SC4oIJC
+55meF56!bL5!;%m4[&R(rB:-D"$Jb/55IMF5=#-4r]glV5X.Is5<_.h4#o>Zqc!Akpeq>q;cH^p
+;uKVo;uT`!;c6Lm<W,nj;?Bcr<W#nt=8Q+t=8Q+f=TDRn=8uCu=nc"u=8Q+u=VFk9:f'q_:/+DV
+:/"DY9i!fKD/K/frbqaSqJlISrH%dVrH8*_qfi$as*=Qhs*OcnrdFfq!.Xuus+,<EK7ei1Knb>;
+Ll$tGMi<USNfT9aP*2#oQ'Rf)R@B\9St;UKU8+N\Vl-MoX/rG,Yd(O@[C3QT]">Vh^VI_(`5Td<
+aihoQcHstee'ut#f\,!5h;-uHiSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+13fs*t~>
+JcC<$JcGQGli-bZqu$9eric=trqZHdrqHHdr:U*^s7?6\s7$*YrpN/@mHs9,lg!d"l0.<mk2k[a
+j5T%Ui8<DIh:pZ;g"=p-e^W*sdF$=dcHXSVb/q`F`l5m6_SX+'^V.:m]",A][f2KjP5UUCOsP0l
+FE;G=Ci+!(Df'3#XJhtiT:M@6NJiRHKnPSLQ&i8BG^tC)muRF/!g/Y0r072GpQkQ=qipuCs-3PI
+s-!ADs-!;BrK.&A!0[/?!0I/ArfSLgOHGK^N/E:?IXQ]iGB7hFEI<+XH[C0hIXQZoI=?Zr@:3L=
+?NYb[YHRr-'!/(1V59u^US+<ST:V[HSXZ"8rL!qXQBm_uP)tferJUf9MM_:drIt9)qh>')",D\h
+M>`81M>rA8LPUeCLPYha!/UT1s,-W/$&=b0QC!u*Q^F-:R/*-MRf&TQRf/WTLNEE$!F8q,=ohi5
+r*KD/"^YG<>[:Y7?3=PB@:8q=ra#h8>[1TA?!Uh:?N+7/>lS+/>lS%.=o_e+>5qe/>[(E9rE0J2
+>[:T>>?Y04=Bb].!ErY'>5q_0=BAO*=BAW'<sr&.<)lmp;GTrHOH9C&"d+t3PE_=2Q2-XEQ2QsI
+Q2d0LQNihFR[]e:SFrHQT),&ZT`(S]T_P5OUAq"dV#I7dVu<RXWVrh0VjrHgH?aUSFE2eYH$+:t
+>H_o@DZ4SRE;FSQErC(TFT-F]G5QR`GlN'eHN/?lI/\QoIK4lsJ9$3mJqJ]/KnY89LPUeDMMmFP
+NK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a]t_=u_SjF5aN2NIbg+P]
+dF6Uqf%8U/gYCWAi8ESSj5f@bkNV6rlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#
+s24ke~>
+JcC<$JcGQGli-bZqu$9es,R/?rqcWiqtU0bs7ZB`s7H?_rpp*Z!:^!V614.-m-O''lKRQskN:pg
+jQ#:[iS`YOhVI#Bg=k64f@JL%eC)ald*Bq]bfe/NaN)<>`5BI/^q[Xt]Y(hd\[]*IIe\<rHt$Pn
+?sm5Gr`^=H>$+dUIX??aG&qS<BOt^a@r,q"Eef'YEH6<rHN&9gI.i!_IdVX\If+WcIf"QnI/J?i
+Hn0PkCMRZuA7AtS?X-f<=&rF1?=%#H?smDN@:<PP@:E/7<E)mq;GpFk;eH#]s+:9%s*t&rs*Xus
+H[C/>Gn54GG^"@TF`_\GEcH#8DJ];hrbVULrb):Eqe,tBrb2=Gr+Q"@!,27DrG)1CrG)@Js(_OI
+rb;FIrcA-_q0)d\s*"<a!-nBbrHA3`#^:N/?VsWs;,d6f!)rhos&0#!;c6Qj;?Bcp;Z0Sp;u9Go
+;c6Nm;>X8j;$Bip;,U7gr_NSlr_WMir_WVjrD<Jjs%i\kr_Nbq:esk`;>j;r:/=V]:esn`rD*Ag
+#>.QZ8kDH=HiAEkIJJ?jJ,XurJcC?%KD1&lL&Zo+L\cc)L]<21L]3,/M=HJuM=lf*N;JV&Nr>"O
+MhQ:mDf'<*B4u.#Ch[U0:k`c`DZ4SRE;FSQErC(TFT-F]G5QR`GlN'eHN/?lI/\QoIK4lsJ9$3m
+JqJ]/KnY89LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a
+]t_=u_SjF5aN2NIbg+P]dF6Uqf%8U/gYCWAi8ESSj5f@bkNV6rlg4!*mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6hr;QZdrdk*#s24ke~>
+JcC<$JcGQGli-bZqu$9es&8turqcWiqtU0bs7ZB`s7H?_rpp*Z!:^!V614.-m-O''lKRQskN:pg
+jQ#:[iS`YOhVI#Bg=k64f@JL%eC)ald*Bq]bfe/NaN)<>`5BI/^q[Xt]Y(hd\[]*I<W?%u<<6'!
+rDXt)5<_1m4$>Yb3]]8\2*jGj4?Ybd3B/oQ1,CXF2`!W_7o0+]nl#Ndpeh&hs&&_kr)*2b!)`>c
+"&i)r;u9Pc;ts>i;u]hs;[$&t3AiZPr\OR.$nX+a/hJV/1,1R>1,8b`!AcM11CH?04?Pbh4Zkhg
+3C!L5!(d)Zs$crW"%5ID6N'7T6:=1-5skQ9!C&dI4Tdf.4?`[+"?SY(3][."!'1$<s#C'?q`+X9
+q)SI9rAjm="$&D'3W(l83WD/=3<2,=48qMG6MEkD6M<eH63KYD5sIO34T@SE4omc-r&b!C55IDB
+4T%;?4S_);4T@MC4oRSD55dYC49.SD5Q*eG4T[f155m_A4odhG4oRYF4TRZ.rBLKM5X7P!r':EM
+5<qL356*nH49%AA2?$PO<;'8j<<#nq;ZB\p<!6,t;cHcq<;'2k;cHcp<rZ8!=Sl1s=RK;l=Su5#
+=S>er=SQ%h=Sl57>$+g&:esh[9h\8U:/=SW;E@`nqelCOrc%^RrGqjXq/lUYrHA*_rcnHgr-JBi
+s*Xfos*artrd]$?JqAW-KS>,7L51SAM2I4MN/`jYOHG]hPEhE!Q^F20S"-(AT:qsRUnsrdW2cl!
+Xfen4ZEppH\%&u\]Y2(p_8=.0`lQ6DbKS8Xd*^=le^i@*g=tE=hVd>Nj5]4_k3)!nlKdg'mI'H3
+nF?)?oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcEXfJ,~>
+JcC<$JcGTHli-bZqu$3c!3cC)rqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtl,[
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$l:"!0[>Fr/qn<
+G&qYAE,9B-Ci=0(AZ_l-V4sKHP`L]Xre:`?OdME?S9TO7Mu8V9OS+\4O91Q-PPg[EPlR-KQ2HsB
+Q2?gCQ2d*JP5pdEOoLUCOo:C3OoCLcOcYW`N/*+<It)onGB7kGEI<1[H[:-iI=-EjI=?]traGh6
+ra5h8?sp&7YQ(^1XK&7sV59r]U]-ndTDkDcSXPq7R@4&As-<VK"-Se0Nr=n=Mi*=Fre:B,rIt9)
+qh>')",D\hM>W20M&D,)Ll$qCLl%[iU5kV8SZf*6\WDu#H?ja]rd"Ni%s`JJH#o+/NjlO$X0/"m
+OnP4BRf/WUP_!ZM?NFJ;qH<l(qd'J4?<g]=?![D8"(,GE@/=70?3OV>?!^fBr*KD/s',Y1>[1S6
+>lIt*>5MP&=V+b@?!LW=>$5!1>$>-7>$5#+>5qb*=9)D$<rcA$<t\P5<E3!p;,BoHOH>TeP*;)o
+Pl?sEPlI$IPlI$KQN*<OQj&nHS"#q<opu,SqO[n`TqS3Sqk3_Xo:l8[r1j=hrhfIgrM]Ok!35gn
+!35pqrMomu&Z2%JH?j^WF)cJXI!KgYRourmDZ4SRE;FSQErC(UFT$@]G5HL`GlE!eHN/?lI/SHp
+IXckHJ,t4Qrdt6)L&Qg;LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTqS3VUo(&gWN*&%Y-5(8
+Za@-K\@K2`]Y;.r_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tH>hr*JQj5f=akNM0plKmm)mdKW6nc&([
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEUeJ,~>
+JcC<$JcGTHli-bZqu$3c!0@,=rqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtu2\
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$gb\IK+[!@:N_R
+?XI(;>7OnA=B0s$I!^*\Ec5c-B)Z?@C^4p$L4!cUEd.G-!.4Kes*F`lrd4Zmp3cpirI+TmmX=n[
+rI+9dqL/BkrHnKj(i=&'BkCpb@:3GJ>Zk32='o?B?s[5L?sin@!b#PJr)EYos&&krJc:<%JdI!Y
+J:DroIXQQird+Ti!IB"iGQ2daEr^4ZD[C;uDJa6+Ci!j$rFl1CpLjP@r+Q"@#&%^bC2%EsrFugV
+G'81PGC+UeJ<,J'DJ/l\")2F]B`;WRAn>grC5.IpJ:MrpFEmS)rHA3`#^1H6BN\2/;,dBj!)`_n
+!)ren!`N&spJM&k;H*Nns&8hn!`Mupr_`Pjqb[Dm;,R0dqbdAis%iSir_`\l!)NSjs%rnq:/Feb
+r_WVis%`_n:Jajb:'j]g91qiJ7mq`PrdFQjrI=fsr.4m"s+C'!onEF#reL?)rJ1E/!/LN/re^3'
+pk]!.oo&d-qi1W9"-&>$NV&8.NtI>(F)Pr5C2%?sEc#]-Bmid2r,2LPrc%^RrGqjXqK2[Yrc\0_
+s*4NgrHeKjs*Xcn!e,WKrdY$#K)UB'KSBD[A;>ttM2I4MN/`jYOHG]hPEhE!Q^F20S"-%@T:qsQ
+UnjlcW2ZeuXfek3ZEppG[^`lZ]Y(tn^r"".`Q-'AbKS5Vd*^:jeCN7(g"P3:h;@/LioB+]k3(sm
+l0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13es*t~>
+JcC<$JcGTHli-bZqu$3cr_rktrqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtl,[
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$l99!*&qtr)=t+
+5<_4n4?GSa3]]8\2*jJk4Ztke3B/lQ1GU^F2_dH]85E/\;Z'Gn<;'5j;Ya2h;?0Sm:]OA`:]OAa
+;Z9Vl<:Wu_<;fbq<<#kt3BI-t"uJ+l0JG.4r[eC,0etI>0ekI?rA"R51,D'U4?`U)!]iG5rC6lZ
+8,bsX8,bmf6UF1.6pX.,6:*t)5X7Ou55dYE4T@PE4T7AA3W;&@3B0%u3rV,=3WD/<3<2&63WD,S
+3BB/]3]T5^5!M:q5!;%o4[D7e1]BlE7f5dW8,bsW6O,D&0g.]a5X563!(6`PpI"pH"%5I@55m\D
+4Tdl24$3@&s$$9Bq`Fd>q)eO;!]rM-r]C3E5Q*bD49.PC5Q*eG4TI\D4o.>B5PmSZ5!;%k4[;7u
+5X.M!5<qP$5sdk&5<qL557KkA4ut_e4$#AY;cH^rr`&Sis&B"srDNYor_s#!;H$OprD`Jg!`N&u
+r)Wi!r`B2(=Su7s=RK;l=T)>$=S>hj=oVS(=nl)!=oMP$=oDM9=&W!m:/+JX92J>V:/+G[3E,in
+rbqdTqJlISrH%gWrH8*_qfi'brd"Hgs*OcnrI"`rIt.HJ!J,k%K)pXZre=s=Ll$tGMi<USNfT9a
+P*2#oQ'Rc(R@9V8SXuIITq\?YVPgAlWiW>*YHY==['d?P\[oGd^;%J#_o9U8aN;WLc-F\`daQ^s
+f@\d1gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2+ed~>
+JcC<$JcGWIli-bZqu$3cs8)buriH1rqtU3crq?<`s7H?_rUL$[nF6GG#4CmGm-O''rolE+kN:pg
+jQ#:[iS`YOhVHuAg=k64f@JL%e'cXkcd'h\bKJ&LaN)9=`5BI.^q[Us]Xtbc\@8oSq31f@-$=<P
+Ec>r9DJF!)Ch@:\Wi;kiS=,V(N/3:FKohFOT!Fl1It<OUO8b76O8P(@Ockq+PkgUBQM6[APkpXJ
+P`q;oP5ULCP5CCAOT(@BP4Xn:P5gOcNK/aHIsuinH$=@PEc?GTH@:6kI=Q`tIt*$#@U`bS?XN_=
+!J%<OYQ(^.X/`(pV5=0ds.KFcrgs7`S=9DEs-O+ZQB[VtPECufNW+k<MM[,cL&Zo+L&Zi&L&Zl-
+M#N80L_Po>O.3&bPBq_5N14d$BPV<sCM7>VBE)N]BPD0oB4kmiB4bdf@q9(_BP)jLH#mk_\%A@5
+RJrZRR0T1@H=gMk?<mJ5!*T;)!*oD-s'5\2>?h)4ra#\6?t!I>?iF@8?!LW??=!J8r`oY3>?b?<
+r`oD+rEB2)!aJr6rE0\8>?tN>>Zt95=BSg3>[(?6qcX8.=BJU)='&L+r`9P0<)lpt;,C(_7Zijs
+PQ$gGQ26aFQ2QsIPlR-LQNrnGR@9V7S=K8Cs.9(Zr1X"\pn@;Rs.fOgs/#^lpS\"hql0Rpq5OCo
+ql0Oori6[2V3?FWH?XLQEdWpoH$+M)=Kh[@rbqdTqf2RTrc@mWrcS3`qfi$as*=Ngs*OcnrdFfq
+s*t'!s+(0%re#*AKnb>;LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&gWN*#$Xfnt6
+Za7'J\%0&]]Y2(q_8=.0`lQ6DbKS8Xd*^=le^i@)g=tE=hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?
+oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEUeJ,~>
+JcC<$JcGWIli-bZqu$3cs8)YQ!;ZNes7cNdrUp3_s7?3[!qGdLrpL'ZmHs9,lg"K639]Pfk2k[a
+j5T%Ui8<DIgtUQ:g"=p-e^W'rdF$:ccHXPUb/hZE`Pod5_SO%&^:h1k]",>[[^GmYs*Q,&@:EVP
+?=$l@>$>'1=+PjLI!BaSE,B<$An>LhChS'KIVWkBGPlddHhD^bHiAE_IJeQ_IJJ?iIIhpbIK+]n
+HiAC-D/3m$An5=X?s[,C>$+m.?sm>M?sin@"CknM@q5I:!E2tr;ZTd/rIYQ2JUr?%I=-HlI=$?f
+HN&0mH?aXYG5ZLdF)c)9Df5Mjs(_[PC23`]s(;=Frb(t=!,;=Ds(<-]B4u!uGB8%ZNG`HGEH?P;
+@prbR?smF=@fBdA@UW\S@UW\P@JsRD?X[AMDJa)u@;:OSI!9f5G5l[kG'J7N@ocE';H*Kk"&Vro
+;uBPm;tj/k;c6Qm<<#nm;Z9Pj;Z0Gq;Gg=h;>j;k;>sDi;?'Jm:]4,h;?'Gm:]=2j;$9]j:Jk!g
+:^Bil:JXe_:esmc:B+,i9*n0^84>akI=?WpqgSKnrdaots+:9'pOr3ns+^N.qM+s(s+gZ1rJ:H0
+o8<="s,-N.r/CQ5s,R,=!fi8"oT&d/&rhfuF)Po4CM7BtG&1u0DLYE8rGMUQrc%aSrGqmYq/lUY
+rc\0_rcnHgr-JBis*Xfos*juts+(-#!.t3&DM3^uL51P?M2@+JN/WaVO-#KeP*;/rQC!u,R[]h<
+StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^VI\&`5Ta;aND]McHjkbe'uq!f@\g3gtgiEi8N_V
+jQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$_Z,,~>
+JcC<$JcGWIli-bZqu$3cs8)Xm!;ZNes7cNdrUp3_s7?3[!qGdLrpL'ZmHs9,lg"K639]Pfk2k[a
+j5T%Ui8<DIgtUQ:g"=p-e^W'rdF$:ccHXPUb/hZE`Pod5_SO%&^:h1k]",>[[^Gp2r_t.,4[)"l
+4?P\c3]]8[2aK_o5!1nf3&riQ2)I-L2_RE]85E)Yqc!Jnpf%/iq,./is&&/[o2>Te!E<"p<:a&`
+<;]\p<$XF^2E!BJ2)6j>0/"q//LrS21,C[?1c-sE1G^jD5!;"j4Zkn,49@K.7fGn&7Ros;77Ka7
+6UX:/6psC.6UO+)6:!k%5sILq4?Ybh5!;"jr]1<E3]]>^2`E]Vr]1$>r\ss>3]d1!s#Bg7'KeQB
+4[;4e77B[9786KM:/"AU9MPI\r_NPg"\qcc:/=[b:(^;s:J=JV9M82N7n#d21He#fqa:?Ls$QuU
+5Wq4lr]LBJ4ZkefrB1'Cq`OpAr&am?q)eO;s#UQM4Zkhi5<_4n5!Am-!BiXG5Q*eG4TI\D4o.>B
+5PmSi5!;%k4[21t5X.M!5<qP$5sdk'5<qIu5X.Is5!M%i4$#AY0NJ*Op/Cujs&8kos&8nr"B/2s
+<)rlrp/1rj<)riss&],#r)`_smTBNlr`B&#pfIJtoi_)ms&oA(qcWi#"^"f';GU'e9aOKf9M\AU
+9iF)OrGMUQrc%aSrGqmYq/lUYrc\0_rcnHgr-JBis*Xfos*juts+(-#!.t3&DM3^uL51P?M2@+J
+N/WaVO-#KeP*;/rQC!u,R[]h<StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^VI\&`5Ta;aND]M
+cHjkbe'uq!f@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$_Z,,~>
+JcC<$JcG]Kli-bZqu$3crV?irY-"h-X/i>sq#:$epAO[ao`+O]ncJ@NnG_lEmd9E.m-F!&l07Ep
+k2tddj5].Xi8EMLh;-l@g=b-1f@AC#e'ZRicd'eZbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZhfmb
+OsPdKMfE]PChmp+Ch[UcWMl_kSXGh+N/ECFKTVCCT$NpOI=R38qiC`<p5f*4!KiTCPkp[CQM6[A
+PkgUDP5pdDOT:RBOoLOBOT:R8OoL@LMM?_4JUMceGB@kFEdI_3!.Ffp#Ch2RJUh0;@/aL;@:3DL
+@'?a4YQ(^2X/`+qUnj]ZU7qOY*1idmR@9S4R@'A-Q'@MsOcb`aNf8sWM2I%AKnfJY!/CH+s+L6&
+s+VVVOINS>I"[B:DJa-&BP;$kC2.HtC1qF!C2@[%D/F+gCBeTlD/O90DZ"8MD>n;VD/<p$BPM3q
+CAqcLAn?U@DiV;urg==bR[T"Q?XI,E>$>'4=^#!5qd0;."^G89>[:Y7?3=PB@:8q=ra#Y3>[755
+rEfJ/s'5S.s'>Y0qcj)(r`]Y5>?b65=BSg2rEKA->5hY.>$G69>$:`+s&fP.=&rC)='5H'$W^8,
+<E)jn:eO<BPQ$gGQ26aFQ2QsIPm`nER$X2.R[T_8S=K8Cs.9(Zr1X%]pS%5Rs.fOgrh]Ukp8@qh
+s/?!sri,msql0Ooql0Oor2UO3T9=_PG]n1NEe0p1Fa/A*=KcU[rbqdTqJlLTrH%jXrH8*_qfi$a
+s*=Ngs*OcnrdFfq!.Xuus+(0%re"s=Knb>;LkpnEMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*T
+UnsueWN*##Xfen4ZEppH\%&u[]Y2%o_8=+/`Q-'AbKS5Vd*^:jeCN7(g"P3:h;@/KioB+]k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13ds*t~>
+JcC<$JcG]Kli-bZqu$3crV?NirJgf8s7lTfrq?<`s7H?_rUL$[nF6GG7.0I0m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#CgY1?5f@SR&eC2gmd*L"^bfe/NaN)<>`5BI.^q[Us]Xtbc\@8oS['TUWrd4iV
+E+WNbr`^@I>$4s0JUW#nH?=4JD/!WpA7KIm@<e/fCN+<;qKi-fp3Q^brd=9br-n*_pjW0io7$Oa
+s*Xfm%X`24CMIKn@:<PN>[(E9r`B5-?XN_=raGh:!+bt+r)3TKrIYB-JUr?%I=-Hjrd4Wj#C1W@
+G^"@SFoHI`EcD"rs(r$XD/F'(D/*g"r+H+DB`2T8BFf''G_BsKD/s`.@pi\Q@:T4E$"IFS@q91^
+AS#NQAcQE@AcZOXrau1@rac+@Ac6-=@K9p;@fKgJ?Z'UeD2*C[F`qtRG\^V^:f73i#>nAs;,U:j
+;uBMn;ta)j;c6Nm<;ohl;Z9Pi;Z9Mn;Z0Jk:]ODm;#=,i:]O;i;#O8h;#aB#:eje`;,C%b:eje^
+r_WVjrD!_r:.e,M8Ou67IXZeEIf+]pJGauuK)^JtK_:'!LAlu)LAco-L]E5/M#N8&MYW,.MY;u+
+N:i2&NqeYLNJDh#Df0B+BkM@9D/3m*J5(`8DZ4SRE;FSRErC(VFT$@]G5HL_GlN'eHN/?lI/\Qo
+IK4lsJH(0#K)UC;KS>/8LPUbCM2I4MN/`jYOHG]hPE_>uQ^F20S"-%@T:hmPUSO`aVl?\sXKAY0
+Yd1UB[^WcW]"G_j^VRe)`Pom=aihoQcHstee'ut#f\,!5h;-uHi8WeXjlY^hl07L!m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$_>f#~>
+JcC<$JcG]Kli-bZqu$3crV?Nir_rkrr_idkrqHEcrUp3_s7?3[!qGdLrpN8CmHs9,lg*j#l0.<m
+k2k[aj5T%Ui8<DIh;$c=g"=p.e^W*tdF$=ecHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKqGmMo
+"=GuW4Zr[(s#CrV2a]hp5<V(h3&riR1c$pI2_I?a852rY;Yj>k<;BJm;?Bcp;Ys>j;?0Sc;#4&\
+;?0Yk<:a&_<;fbq3WCuA2)I'E0eY6[/eKTc.l&h71,1O@1,:XA1c$pNr&b-G4?>Sa8c)!^7R]a8
+6ps??6iTOl6:"",5XIe'5<qLu4Zkhi4?bni4?Y_e3]R+"rAY!?3&ioZ3][-u!BE4=3WD)=4W$@I
+1.4Q#7SccP9hnGZ:/4JX:/+GX:/=[\;#aDl;#aAo:espe;?'E*:esnb;GL%b:/F\[:/+5J68Uki
+r^$`T6pj7)r]L3Ds#pKI4$3C'!^/_2q`XsArB's?qE+X<s#^-@"[>164[)%.497T/r]g?Fq*"L:
+r&t'Dr]L6FqEP*H5skN9r]guY5X.Fr5<_+g4#o;Y0iV-G;u]hs;uKVo;uT`!;c6Lm<W,nj;?Bcr
+<W#nt=8Z1u=8H%e=TV],=8Z1r=8uD"=TDS$=o2>"=oVV$=o);9=]\R!:JOSX9h\;Z:JOSV;EIfp
+DZ4SRE;FSRErC(VFT$@]G5HL_GlN'eHN/?lI/\QoIK4lsJH(0#K)UC;KS>/8LPUbCM2I4MN/`jY
+OHG]hPE_>uQ^F20S"-%@T:hmPUSO`aVl?\sXKAY0Yd1UB[^WcW]"G_j^VRe)`Pom=aihoQcHste
+e'ut#f\,!5h;-uHi8WeXjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+_>f#~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs/l=%rN-%nrq?9_s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$/ki_*j
+jlGI^io/hRhqd,DgY1B7f@SU(eC2jnd*L"_bfe2OaN2B?`P]R0^q[Xt]Y(hd\[T#U['R+8PQ-dk
+Jng:$BqCfTM1LPABWS84VPToTR$*JdLPLSIP&-T2S9TF6MuJb7O8b76O8P(@Ockq+PkgUBQM6[B
+Pk^ODP5pd=OoLO6OVj.@Nf8gMJq&?"H[0dVEcQ8MH[U6hIslbEILUjYIplep?XI2K@9m<+rNH7(%
+BQV0W2?AcU8+HVTV.qVScP=KrgF1^R$X,(Pa%>nO,s:"s,?u7re:?+qh5$)rIt9))MO?;O/g<dJ
+r4MbCMI["BkqKuC2Rg&DJsH4r,Dg]EccI$EW:(VF8g25FE;MFF)c2?F)l8@D/='.Ci4$(BkV9qA
+nGV)G&E2=RZr>>?X@#B>$>'3>$5'8r*KA.s'#M/?2\(3?XR;MqHs5.#@1S>?!U]@?2e10?2n10>
+6.u7r`oA*s'#D+$!^\=>$4s1=^#&/>QJ&4rE9,(!a8`0r*','#$=r-='/O+r`9,$<W5r#;c-Cd9
+E(1TQ2?gFQ2[$JQ2d-MQi<?UR@9V7S=K5Bs.9(Zr1X%]pS%5R!2KIfrh]Ukp8@qh!i`,sri,msr
+2KUoql0Rpr2]gu';qI\J9cB^EcZ8TP^7CrJ<m7>DZ4SRE;OYSErC(VFT$@]G5HL`GlE!eHN/?lI
+/SHpIXckHJ.$p[JqJ]/KS>/8LPYqdCl4.0N/`mZOHG]hPE_>uQ^F20S"#t?T:hmPUSO``Vl6VqX
+KAY0Yd1UB[C3TU]"G\i^VI_'`5Ta;ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5OekiqBum-O--n
+*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$_>f#~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs,Ho7s7cNdr:U*^s7?6\s7$*YrpTmT!:BdP!UK%MkrS%kk2tdd
+j5].Xi8EMKh;$c=g=b*0f%&:!da?FfcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZhf+MHmE*!
+BOk+cEbo>rB4b7sIslTgF`_V@CM.9jAT)EdGa<_mE,p-tHN&9aHN&9kI.;X_Idhd\If+WdIenKm
+I/\HrDJa0'B4_'N$XI(E=]nj/=^PND?iFI3@K'a;<)rlrs&0"t;fdWjK.2D'Jq/B!I"$KjH[:$c
+H?a^[GB\4QF`_bJEGof7DJa9-D/F')Ch[WuqIob=qe-a\EcZbmDf0T,A7B"V@UWbT@q9.]A7b^O
+$>4$cB52*pBkqO$p1k%MCMIQtC27QuC2%D]BEr-^An>RcA7Y[Ls'cCE@;TUcC4UVNAlql,rDEhs
+;Gg:h;H*Hj!)rVi!`Mupr`&kqq,7/gqbmDj!)ibmrD3Jlr_WJhs%r_krD<JjqbRGn:esh_;>j;r
+:/=Y^:esn`rD*Ag#>Ic]8k;?:J,FcnJ,XusJcC?%KD1&kL&Zo,L\cc)L]3)0L]3,.M=c]#M>iD,
+Mu/J+NV&8)Nt[M/H#[b=C2.EqF*VS9CiFfXKl6m.rc%aSrc7sYqfMdZrc\0_s*4NgrHeKjs*Xcn
+!e,WKrdYB-JqAW-KS5&6L51TaM/8'-N/WaWO-#KeP*;,qQC!u,R[]e;StD[LU8+N\VPgAmWiW>*
+YctF>['d?P\[oGd^;%J#_SjF5aN;TJc-FY^dF6Uqf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s2"_c~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs&Akns7cNdr:U*^s7?6\s7$*YrpTmT!:BdP!UK%MkrS%kk2tdd
+j5].Xi8EMKh;$c=g=b*0f%&:!da?FfcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZhd]%<$We@
+/hA_:2D['>0JPLS5X%Cq4?GM_2Dd9H1H7?E5Xe4=;GgHi;uTbh;Z]io;Z'Dl;ZBVc;#=,];ZB\k
+<:a&`<;of*3'&rT2Dd3H0eb:7/hd2U%Pogp0ekF>1GUaB1c$pNqE+j@4@Da>8,l-[7fl+K7fGgT
+6iTRS5lX1X5XIb%5<qLu4Zr^,r&js>"#r>&3Vtc@2`NcW3]]8]r\t6F00MH_5;G_u;,@0d#>\#f
+:Jae];#X2t9i+Y]:f0q`:/Y"dr_WVj#>e2k9hnGZ;#F,h:(9on:Jjqa;,U7h:f(%drD=/':JFSZ
+7mo^"5XRk'5!1qj4oRYE48q>B4oRYC4o[YB48qA=48h;A49%DK4$5Vh5<V.n4oIM@5Q*eG4TI\D
+4TR`2r]UBH5!Sp-!'^?ErBLNN5X7P"6N'1Q5X.Lu5lEnP5!:th3]],Sp/:rjr_reos&8kq!`Mup
+r)<Ypp/1rj<)riss&],#r)`_smTBTn=',<%qH*Yur)s&%qcWi!r)s&%r)rbts&TD%:ejbZ9hbO\
+#>\&f9Mn_eDZ4SRE;OYSErC(VFT$@]G5HL`GlE!eHN/?lI/SHpIXckHJ.$p[JqJ]/KS>/8LPYqd
+Cl4.0N/`mZOHG]hPE_>uQ^F20S"#t?T:hmPUSO``Vl6VqXKAY0Yd1UB[C3TU]"G\i^VI_'`5Ta;
+ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC<$_>f#~>
+JcC<$JcGcMli-bZqu$3crVHKg"8JsuX8]4!WrVkkp&F[aoD\=\nc/+XmfDkDrp2o9lK[Wuki_*j
+jlGI^io/hRhqm2FgY1B7f[n^)eC;podEp1ac-+;QaN2E@`PfX1_8!b!]Y(ke\[])V[Bm3Fqih&C
+,_p/pJ;0_dOc5$QM2Q&JUo'rZSXY\$MMR(@Kop/^c('$*Jr9Pe!06r;!0Hi6qiCi@PP^U@Q2?mB
+Q2HmAQ2d'LPEPj+!0[8Bs,d5B!0[,>'pO`>Nf8jMKReQ"H['^UEcZYVI!U2=IL:RTJUi<%@:<VP
+?iFF8?ZE<Qri[TMXfSV'Vl$;bU8+HVTqJ'NT:MI>R[]b6R$a2)Q'@GoOH5B]repl8M>;o%KhS#&
+U:-;?NH&iOChd["C2Ig*Df0N5EcQ,?F)lAEGBS1TG^4^cI"-ZtJ:E&tIXccnI=6HjI!L!]GBS.R
+GBe@SFa%tOF`qeIFE2L&DZO`lrbMOK$ta3cIW1:PAmSbI>$Cl-!Ere,?N+71>6.u7r*BJ4?t!I>
+?iF@9?!LW?>[1S5?N4=2>lIt+>l7h+>5DG,=]eg0>$Lu2!F&b+=Tqu5>?Y04r*','#$=r-<``@)
+r`9P0<E)pt<)?If9L>&1Q2?gFQ2[$JQ2d-MQi<?UR@9V7S=K5Bs.9+[!207`r1NeXoV25Yrh]Uk
+p8@heri,msri,aoql0Rpr2]as&u_CZH[0gXEcQD^JU2B^L7,!DrbqdTr,M[Urc@sYrH8*_r-/-b
+s*=Ngs*OcnrI"`rIt.HJ$\<n]K7ei1Knb>;M#N6DMMmFPNK9-^OcklkPa.Q$R$a>3S"6.BTV8'S
+UnsrdW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`Q#s>b0/#RcHstee'ut#f\,!5h;-rGi8WeWjlY^g
+l07L!m-O0/n*oi:o()DErq-?dp\4[^s7u]kr;6Hjrr)KgJcC<$_#Jo~>
+JcC<$JcGcMli-bZqu$3crVHKg!VhZON;e_8pAFU`o`+O^o)J7[nG_kWmd:#?5jR_#l07Epk2tdd
+j5].Xi8EMLh;-i>g=b-1f%&:"da?IhcHa\XbK@oIa2Q$9_SX.(^V7@n]=GJ^[^NTMZa0CT,\'hg
+?Xn;$CM@<mAnY7rH[:![FE257B4YXaA8G;+Q@*IdEd%2'!.4?ard4WlnpUCan9t(\rI+9dqgJHk
+&8l<$CM@Ho@q&hP?<gZ:=BPQ0!FB.3@1$IR@q&tZ<)lpt<;f_r?%i0/!.t0#!IoLrIK+X)H@'s`
+H$X^ZGBS.PFEM\Frbi3_D/F*+D/=$(Bkh?rph9S<(NX_GKl1gNA7T.X@U`hXA7]=aAS,ReB`;`G
+CAr#VCM[g(D/XB6F)uC"E=?f)E,fi7D/=!(D/3qbCaa%7C2@[$C2.NuC2%BqAnGRbA7K+X@Ua+_
+DM(nc;Gg=i;,U7g;GpHj;?0Yh;?Bcp;uTbq;uBMo;c<Qkqbm;g!E)en;#aDm;#=,i;#a>i;#X>h
+;#aAp:ejharD<Mhs%`_n:Jaja:&n#f8cqXT6ot<rr."]rrIP!#s+C'!oS*="reL?)reLN0s+gT0
+rJC0(pkf!-pl#!-oo8R'ooB`EL3ITSCMIQrC34<0Bkqd=LkYhHrc%dTrGqmYqfMdZrc\3`rcnHg
+r-JBis*Xcn!e,WKrdYB-JqAW-KS5&6L51TaM._^(N/WaWO-#KeP*;,qQC!u+R[]e;St;UKTqeE[
+VPgAlWiN8)YHY:<ZaI6N\[f>b]t_=u_Sa@4a2lEHbg"G[dF-Lnf%8R-g=tH>hVd>Oj5]7`k3)!n
+lKdg'mdKW6nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcEOcJ,~>
+JcC<$JcGcMli-bZqu$3crVHKg!VfUi;ZBYqpAFU`o`+O^o)J7[nG_kWmd:#?5jR_#l07Epk2tdd
+j5].Xi8EMLh;-i>g=b-1f%&:"da?IhcHa\XbK@oIa2Q$9_SX.(^V7@n]=GJ^[^NTMZa0C,(agje
+.4mM;1,:L;1,:aR5!;%k4#o5Y2)P:f#WOJ+77^0N;,[-e!*&Mf!)i_lr_`_no2#Ebqbcr_!)r\m
+o2GB_"Zn\'2DmDl1]oHd0/!2Tr\FL."u7ni1GUdDr\OO:r&b'C4@r*C7fZ*Z7fc%JrC$ZQs$R8^
+5XIh(5sdh%5=%Our]L]Q4Zkhi4$,Ja3B9&[3V>??3BAo[4[1\m85N#T9`@`e:JLg`"\VTc:ejdb
+:]F/u:JOY\:JO\^;,U4f;>sDk;>j>k:DHW%:/+P\:f("d;G^4f:Jjqc:/atdr_j>*;,L.d;,Bt_
+:I[Z,5<V..4o[\I4?GY'4T.JA4TIVB48h;<48h;A3se#24$5\k4ZttmrB('DrBL6Es#g?Gr&ssA
+!^/_3q`XsCr]U9H#=1U>5X7P!6N'1N5X565s$$iU5!;(j4?GSa2(SK$!*&qrr_ibprDWhs;H!El
+!)rSh!`N&ur)Nf!qcNbt!E`M&=RK;m=BGB%q,[Pur)s#$qcWo#qH3f#qcWSq&m&(1:ej_Y91quR
+:/FY[:/Y"hrbqdTr,M[Urc@sYrH8*_r-/-bs*=Ngs*OcnrI"`rIt.HJ$\<n]K7ei1Knb>;M#N6D
+MMmFPNK9-^OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`Q#s>
+b0/#RcHstee'ut#f\,!5h;-rGi8WeWjlY^gl07L!m-O0/n*oi:o()DErq-?dp\4[^s7u]kr;6Hj
+rr)KgJcC<$_#Jo~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqHJorN,msrq6<`s7?3[!qGdLrpN>EmHs9,lg*j#l0.<nk2tdd
+j5].Xi8<DIh;$c=g"=p.f$r3uda?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZEX7js-!Ct
+,&Dg_TUh:)KSteHAuqr.V4O-COH><VLPCPGPdJc-G^=surJgi;rK$u=o8ig2!g/Y0r07#Br0I)B
+rKR&A!gJn3r/guBqiLl?rfI2Dq2l8RP)bK\Lk^S3J:)`fG'%\FJ,F^-J:2lrItE6%@UWYQ?XI2L
+?X^,8YQ(a)X<+@=V59r]UnaWWTV8!LSsu1<R[TV2Q^<u&P`_&iO8Y%>N/NJjL&d#+LAurLSrA`+
+PD>3=E,99(Bk_I#Ci4*0EH?2DG'8+YJ;&]1rIt9)s+C<&s+(3&Jc(&tIf4cqJ-CFQIt3'#rdY*%
+J9lP?GQi;9GBJ(PrH&TiEH#o;CiF3(CM%m4NOE"orE0/)>l7q->m">9>[@55!aoGEqHs5.!+#S/
+!aT&:rE]S3>[:V6>Q%h(>7Fb?>[(E;>?b64=]np4r`fJ.>5_S,>$G68=o2D&=VY%?<`W:'=BJX+
+<`N+!<)c[j:J=6Cqiq)FrfmGJs-EVNs-itWs.&_P!1s%Z!20:aqk3\WoV25Yrh]Ukp87qiVuEXo
+WW&ptWVNRkWW0!rX88n6X/DA@I!BjYF`Dl&I!Ba[Pan_VDf9T6qf2UUrc@sYrcS3`qfi$as*=Ng
+s*OcnrdFfqs*t#u!J,k%K5uX!Knb>;Ll$tGMi<USNfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnjlc
+W2ZetXf\e2Z*L^C[^WcW]"G_j^VI_(`5Td<ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5Oekiq?t
+m-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1nYb~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqQALs,6l6rq6<`s7?3[!qGdLrpN>EmHs9,lg*j#l0.<nk2tdd
+j5].Xi8<DIh;$c=g"=p.f$r3uda?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZEX1R(h$cZ
+?t"8$D.mBkBPCLuI=$9_F)c&6B4h-S#]+C6R!iagF*7D,!."Nhs*=3^rd4ZmnU:=an9t(\r-e3d
+qL'!(E,KK-C1_$d?sm>J>?Y-1=CM,8$"@:N@U`kXA5uV-<W>u";H/:%rIb-%rdk&s#(CrHI!U-d
+rcnosG'A+PF`_bHEGf]5qec@LrG):FqIh!nDf^AFDfoZ%@:NbV@qB1^AS,RgBPM<uD/=-0G'.qN
+rH8!Z"*J^-F8BqTEW'hVEW'h`EH#l:EGfZ2ChmneD#S5MBbG/pBP;$kAnGR_@q&k]@;LWp;Z0Jm
+;?0Ya;?Bcp;uTbq;u'>j;>jAn;,[?i"&_uo;>j;p;,U4e;,[<h!`2ZgrD<Gis%its:f("d:eska
+rD3Sl:/=[b;#a>i:'aWj9hS&L845Z=J,XusJcC?%KD1&kK`Hl+L\cc)L]<21L]3,.M=c]#M>iD-
+Mu&D)NV&8'Nu*h7Jou!KCi!g!Dh)_CBPi*IKnXG`E,b\orc8!ZqfMg[rc\0_rcnHgr-JBis*Xfo
+s*jutrdY$#K)UCCKS>,7L51SAM2I4MN/`jYO-#KeP*;,qQC!u+R[]e;St;UKTqeEZVPgAlWiN8(
+YHY:;Za@0M\@K2`]tV7s_Sa=2a2lBFbK\>Yd*^=le^i@)g=k?<hV[8MioB+]k3(sml0I^&mI'H3
+nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13cs*t~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqQ=f"&i)r;uZIio`+O]ncJ@NnG_lGmd9E.m-F!&l07EpkN:pg
+jQ#:[iS`VMh;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-h3<?Xh"
+6n0]H2DR!=0ekFA5sILo4?>G\2`3HJ1GUpG5t"7?r_`Dgs&/Dds&&hoqGI;jpe^Z]o2>Teq,Hub
+pf%;U3B7!r&N)@#0ek@8/M/M*1,1O>0ekH^1BTKj1Hte$rB(0C4@i'C8,l*_7n,s:7K#US6iKIX
+5sRb'5sdm:564#6rB:*A#<b.13]]8^3;bf53#4>64[(Vj85N)U9MSAY:/"AX;GKt`:&[lp:Jjqd
+;Gg=i;,L0e:'FEi;,L.dr_`\ls%iYk!)`\k!)`Yjs%iYks&&\j*DoX2;,C%d;c-Fk;,U:j9i+V\
+:IRT+5Wq:p4Zbb(49.PD55[PD4Sq5>4Sh/<4T7DK4?GYg5<_4o5!Am-!'U9FrBC6E!'^<Ds#pEI
+rB:3Gq`XsCs#gNL5<qM#5Q*hI6N'1^5X.M!5<qFt5!D1p4?>M`1bef*!*&qrr_ibprDWkt;GpHl
+;ufkj;?9]qqc3\ur)ihtqH3/gq,mGor)ru#qcWr$nlbTg(Kjg<;GU%^:.n5T:esk]:/=hf;f?Sn
+E;OYSErL.WFT-F^G5HL_GlN'eHN/?lI/\QoIfFosJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]h
+PE_>uQ^F//S"#t?StMdNUSO]_Vl6SpX0&M-Yd(L?['mHR\[oGe^;%J#_o0O7aN;TJc-FY^dF6Uq
+f%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEOc
+J,~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p8mql9^uri6+moCMqOs7$*YrpTmT!:BdP!UK%Mkrn7nk2tdd
+j5].Xi8EMLh;$c=g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:l]",>[[^EKKZE^WsrfdAF
+rG2FL*h&@TKo:eFB<A,1Un='BP)bBVLP:GGP.S<$H$Y(!qi(Z;O,s7"nrN^1!KiQBPkp[CQM6[C
+PkUICPQ?u2rK7,Cr/q#@s,m>Er/hJUPE1fcN/3.>IXlckG'*_)#(CuJI=6KkrI5!%J:D!:@K'U:
+?t!B$Z2Cg)XTY]'W2?BhU]7%fTGsMpSsu4>R[TV2Q^3l$PEM#hO,]-ZN/igNLP>SZ+If('[tKd"
+E,BE)Ci"!*Df0N6EHHJRJVf2;LPLV<L5,\]s+UQ0LAll3KS+o/Jq8N)rI=ltrdOirq1/Krs+(*"
+s*t*#qgeZk(3k%HGB@qLFE2MGE--5AFDbi0P]CZPr`K8*>Pqh,>m+D:?!L\5?34JB@/=70?3":.
+>QA(/?3":1>lIt+>l.b*=pnS>>?kB9=]nj0>$Co1!aAi3r`KD.>?kB8=o2D&=VFn<<``C)=BAR)
+<E)st;c-@f91SrFrK[DIs-<VM$(%$IR$jD4S"-#BSHGCQSt>eNr1X%]p7_/R!2KFerh]UkoV_\e
+ri,ms!3,anr2K[qr2]Uo'<7stJUD`dF`V\b\U/REH^gh2YPrM<EW1"XF8L(YFoHR^GQ)jeH2N!g
+HiJKmIK+`rJ,OluJV*lREeK.#L5(J>M2@+JN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&f
+WN*##Xfen4ZEppH[^`lZ]=bkm^qmn+`Q$!?b0/#ScHstee'ut#f\,!5h;-rGi8WeWjlY^gl07L!
+m-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$_#Jo~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p2Ks,6o7s,6o7!qc*UrUU!Y!:^!Vs6]mSrp0[OlMg$2ki_*j
+jlGI^io/hRhqm2EgY1B7f[n^)eC2jndEg+`bfe2OaN2B?`P]R0^q[Xt]Xtbc\@8oS['R'CY^H@s
+ra5Y4,'.X:@V9:d<e>aHH?aIMDJWruARf7fCl+%!Ci+38H[C'brd"NirH[s[s*O`mnpUFbn9t%[
+rI+9dr-]#pDes<-C1^sb?t!AI>5_P*@:3GNra5t?@:E\UA7S[;<W>u";Jq2ArIb*$s+(&r!do?B
+rd4Zjs*4Qf!-\<`s)J'V")i'oD#S;OD#J)LBPIHZs(NBbF*W7iDKU/8@prhV@qB7`AnGajCMRd,
+G^012rc\9`!-\<`r,hs]s)\6^r,VgYr,M^Trc.jT&ohr5EcQ5AEcH)<Ec#Z0DJX*)rbMLJ$u'Be
+BkV0j@ps^q@>=_X!E)kb;?Bcp;Z9Yp;u'>j;>jDm;#jMn;#jMm;>j;m;G^3f;$9]m:esmd;#O5k
+;Z'Ak;%QQ":Jjqb:Jak_:JXea:esmc:'aWj9hIuK845]@J,b&tJcC?$KD:,nK`d!^L5,Y^qM,!)
+s+gZ1rJ:H0o8<="regN0q2Fs*oT&R)s,[nSMh,neDJO!$Bm>VSChmp;KS>-ZE;OYSErL.WFT-F^
+G5QR`GlN'eHN/?lI/\QoIK4lrJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>
+StD^MU84T^Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_SjF5aN2NIbg+M\dF-Lnf%8R-g=tH>hVd>O
+j5]7`k3)!nlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEOcJ,~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p.e!`MuqrDWjjoCMqOs7$*YrpTmT!:BdP!UK%Mkrn7nk2tdd
+j5].Xi8EMLh;$c=g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:l]",>[[^EKKZE^W5r)Fn.
+779R67Q3.[0/5.91dXAi4$>Vc3&`]P1G^dH2Ea>q:B",j<;KPl;Xm]\;?0Sh;#*rg;Z9Pb;?0Yk
+<:a&c;uf#Z3=n,-2)R3H0ek=6/1iA(0etN`1&j$51,C^D1Gf"nr]L3D"$&_?8cD3`8Ou?A77I/C
+!CK3Q6ioY>6N'1]5X.J!5<V+k4$5Yf4?Yeg48q8@3;tu<3<(uQ3&<``4[hn9;,'_[9heAW:JFMW
+:&[lf;#4&k;cH]n;?B]l:]*rh:Jk!f:]XEir(m>irD3Jkr_WSi"]/&n:f($d:]sQj:JXgd;%c]'
+:fC:i;GpFj;bp1`:ddZ74oRPA49.PD55dYE4T7DC3]m='q`F^<q`=sD5<_4n55dSD4oIVD55@AA
+4odkF55[SD55m\I5<qJ"r]gQO5=.^862j+N5<qI44pO;83BB2]2)"c(s&/kqr)<bs;GpHm<<#nl
+;?Kco<)riss&],#r)`_sm906eqH!Z!rE9&#qcNo$nQGKfs'#P-=&])o!)*;b#uFJp:.n5Y<Duiq
+E;OYSErL.WFT-F^G5QR`GlN'eHN/?lI/\QoIK4lrJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]h
+PE_>uQ^F//S"#q>StD^MU84T^Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_SjF5aN2NIbg+M\dF-Ln
+f%8R-g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEOc
+J,~>
+JcC<$JcG*9qYg<hp\XpcrV??c!V`\mWrT6uX8VVhnGr(Xn,MeUmJcHBlg!d"l0.<mk2k[aj5T%U
+i8<DIh;$c=g"=p.e^W*tdF$=dcHXSVb/q`F`l5m5_SO"%^:_+i\[f2X[^<BHZ*:EpPEV/mrG)FM
+C]8&fLOt>?B<8#,US40FPDtKWLkUPFPG5C`IX-L"q2P62o8ig2!g/Y0r07#Br0I)Brfm,A!gJn3
+r/guBqiLl?rfI2DrK/:jP`LlcN/*+>I=QZiGB@nIFF8LaIXcfpI=?WqJq/A[@Uf=Ds'Pn7ZEaA3
+!3Z='"0&5tVu3=iTbO/lT:MRCS=H%9R$j;,Pa%AoOHGV'NW4q_MMHq?L4t>9U6hF7M3DpuDJO!)
+D/=02E-$2MIu'#@M2I1IM>i;2L]3&,L&Ql-LAlo+KDpK&Jc:3!If=irJH(3#J-(:PJc:2tJbsur
+JcC6>JU;ZeH?j^YF*2MGF`VSDGBe1GDO>K_ZWUL<rEfJ/r`oJ/r*BG3?srh<ra#S1qHX#+!+#S/
+r`f;*r*02)$s["@>[(B7=]eg0>$Lu2!F&b+=oMV+>$:`+s&fP.<`W:(='5H'r`'5';c6Ih9hI=.
+rK[DIs-<VM$(%$IR$jD4S"-#BSHGCQSt>eNr1X%]p7_2Ss.fIe!i;]hrhf=cri#gqoW%hgri5ms
+p8f".TTFbPH$=CPG*.W+G'JM.XK8V/E;X_TErL.WFT-F^G5QR`GlN'fHN/?lI/SKnIK4lsJH(0#
+K)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\?YV5L5jWiE/&Y-5(7Za7'J
+\%0&]]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'7h;7&IiSrnYjlYail07L"m-X60n*olHncA@S
+rq-?dp\4[^s7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$JcG*9qYg<hp\XpcrV??c!;HJOs,6o7s,6f4rUU!Y!:^!Vs6]mSrp32AlK[Wuki_*jjlGI^
+io/hRhqm2FgtUQ9f[na*eC;spdEp1ac-4ARaiMNB`PfX1_8!b!]Y(hd\[T#U['R'CYciG&I=-EK
+ra-mX?X6oBA79(_=+PdGH?aOPDej$!ARf7eD0^hdCi"-8H[C)3H1Q@]HiJK`IJeQaIJ83gIIr!e
+I2$[>Ci+!'An5@Y@:!2D>$"g.?X[@A@K0a7@fBm<<;ont<<#ku;MKo(KDgB&J:@KG!IfFoHiJBk
+GSkXLG'8"MFE)5;E,TW3Ci+$*D/3m%C2.J]BGYi7H#@VJAS#@]A7T7_AnPglCMRj3G^043rcn?b
+!-\0\r,hp\s)e9^rGhp[ErC"WE;aeSE;stXF8^.ZEW:(`EcH)>EGk_ls(q^Nrb;sWB5)'pBOt\'
+A7:-g;,U?[;Z9Yp;u'>i;>sJn;#jMn;#jMm;>j;u;G^1e;,U7g:f1*h:B45h;#jMn:]jKi:f73f
+$;aSr:Jak_:JXear_NJf!`)Qcr^d;b7m\hXJ:RTLs+:6&pk8?p",)A_LAco)LAco-L]E5/M#N8&
+MYN&-MYW2+N:`,/NrP+7Nq&/GOH#*HF)Gl2C1qC/EGfQ,DL[LrKnXLDEW1"XF8L(YFoHR^GQ)je
+H2W'hHiJKlIK+`rJ,XuuJH1<$K)pXZre>-BLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmP
+UnjibVl?\rXKAY/Yd(O@[C3QT\\#Mf^V@V%_o9U8aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5f=a
+kNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$JcG*9qYg<hp\XpcrV??c!;H@g!)r_nrUU!Y!:^!Vs6]mSrp3#<lK[Wuki_*jjlGI^io/hR
+hqm2FgtUQ9f[na*eC;spdEp1ac-4ARaiMNB`PfX1_8!b!]Y(hd\[T#U['R'CYch%)<<YcZ6psL5
+r^7\Y/2&b95s@Io4ZbYa2`<HK1c%-N3C-84;,L6j<;TVk;Y!c\;?0Sh;#4&h;ZBVc;ZB\k<:j,e
+<#IbX3B/rU2Dm9H0ek=7/M/M*0etL=1,:X@r\FU41,Jnmr]C6F4?<C4r^R&]7n6,L7K,^T6iKLR
+5la7N62a(K5Q<nH4:OG94$,Pe4$,Ga3]T2[r]1BH1d4)Y7S-EO9ht[^#>\/k9i"P[;#XDf;ZBYr
+<)`]m%oH/!:/=V[:Janc:esk`;#=&_;#X8g;>X2h;?'Jm:DZi':esqb;c6Lj:f1%d;c6Rl;,1%X
+69kH2s#^9Er]^9Ds#g9Bs#U-Aq`F^<q`>!E5!M1n5!Am-!'U6ErBC6E!'^<D!BrdJ4p!l25PmSD
+55m\P5!V=u5sIV#5=%X75nQ@H5X.Lu5!M4q4ZYYb3]Jo<r)<Vns&8hp"&i)q;uTbr;ts5m;,^Fo
+r)Wi!r)ikuqH3,frE'&$r`K&!s&f5&r)i5enQHN/=BJHs:/+GX9MJ>Y;,0eZ;Z0MoE;X_TErL.W
+FT-F^G5QR`GlN'fHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;,qQC!u+
+R@B\9SXuIHTq\?YV5L5jWiE/&Y-5(7Za7'J\%0&]]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'7
+h;7&IiSrnYjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$K)b3:qYg<hp\XpcrV??crqH)ds/c7&s7--YrpNJImHs9,lg*j#l0.?ok2tddj5].Xi8EMK
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k\[f5Y[^EHJZ*:I8P*>m.rbEZnCMR["
+B4bh6BW\2.US4-EP`CZXLk^VHPDlT/IX$BsN;8J/Nq&20O91Q-PPg[@Q2HsCQ2[$AQ2d'LPEPm,
+s-!;B!0I2Bs,n7^S!T;"O,SsOKnY),I=-6[F`h_QH[C3kI/\WrJ,Op*@:E\R?sd;LEjDqJYPtX8
+XJr1sVPBr^UnaWWTV.pJSc5,ZRf8[+Q^*buP)tcfNf8sWN/WUKLP:JJO.Eb9Q#gt_CM[m*DK'T;
+GC5+%M2@+IMi7Okre^Z2!/LN-s+LK.M#N2.L(AriK7\`-JUr?%IsuirJ:IQKrdk*"rdk*"qgnWp
+rIFs!qgnd!!df0;rc\?brcAQlF)cAGFDblZEGSlcra,P/s'5S0qd'>2@:8q=ra#S1r`fP0>[1S6
+?34D;>l@n*>l@n+>5VV)=peD7=]np4>?kE;>5_S,>$G37=o2D&=TV]+<rQ/#=T2D%<W5r$;c-Ce
+90`E@s-3PKs-<tXR$j>0R[]e:SFiBPT),)WU&:SXU%P/[U\ghgV50seVY$ecW;`dgWr8prWr&jh
+X;%S*Ndl>!G'%bSUj[Q4G_D]lXfnr+EW1"YF8L(YFoHR^GQ2peH2W'hHiJKlIK+`rJ,XuuJH1<$
+K)pXZre>NMLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@[C3QS
+\[oGe^;%J#_SjF5aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?)?oCV\J
+p%J+RrV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$K)b3:qYg<hp\XpcrV??crqHGOs,6o7s,6i5rJU^Gs7$$V9()*6m-O'(lKRQski_*jjlGI^
+io/hRhqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`5BI.^q[Us]Xt_b\@/iRZa6p@Yc`A%rd=]P
+!aoAAr*:.O=+YjHH?aRRDej#uAn>LiD/OiKCMe*7r-J$]nTt4^!.=<br-n3bp3usgo6q7!FDu,6
+Chm]rA7K%U?s[)Ar`K,,!F]C8A,g$<A-$1>r`/tts&/u+L4oMXrdt0$!.Olp!IK7nHiJBkGlN!f
+FpW85F)c,9E,BK1rbVUO%r5oqCMINrDfBuVEI2;.@f0a?B4u!pDfto$rce<cr-&-aq/uXXr,r$]
+!-A*Z!crC&rc.sWr,M[S!HE/YF8KtXF8g1\EH;%u!-8'Y!cDjlrbVRK$u'HkB5)'nAn-:!@8ZGj
+!`Muqr`&kqqGR;ir)*Sn;H!?grD<Mks%j&";Gg:f:f1%b:Jgpcr_O2&:f("c:JXea:esna:/4S\
+;>sAi:B+)q9hn8P8Ou3.JGk'!K)UDtK_0uuLAlu)LAcl/LkgcaM#N8&MYN&-MY`8+N:`)0NrG%5
+Nq&20O;*\0HuNt>C2.I%Jo5F>CN4l\K8#$WEW1"YF8L(YFoHR^GQ2peH2W'hHiJKlIK+`rJ,Xuu
+JH1<$K)pXZre>NMLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?)?
+oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$K)b3:qYg<hp\XpcrV??crqH=g!)rborDimfs7$$V8ac!5m-O'(lKRQski_*jjlGI^io/hR
+hqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`5BI.^q[Us]Xt_b\@/iRZa6p@Yc^t(<<P`Y6q0WB
+6l@a;5sRXt5!(bb3&NNL1Gh*O2EsZ*:f1%frDWhs<)iiqqbm5g!)i_npJV#gpe^far_`_no25Qe
+q,Hras&9Xo4#f5\2`3KM1Ggj@0eY+1/1iXV0`X!*1BB6er]U3B!BWID8cM<\8H20[7fGjU6i]UR
+6j#bA6:1Z;!C/mK5QsA94Zbbgr]:-C3rM,K3]T2[3]0&a5"A+>:&[id9a49e9MS>[;>X;m;ta)k
+;cH^pqbd_t:esk^:/=\`;#F)h:B"#i:/CX]r_EMjr)*>fr_W_n:J^sdrD*Sn:Jaqf;uTW,;c6Fh
+;,gFi:/XDG4$,Pf4[)(.4o[YD49%>A48qA>48_5?3s[l/4?Ynl4[)(.49.SD5Q*eG4TI\D4U4/8
+5<_7o5!Sp-s$$HG$9g^>5s[_#5X.M#rBUZR5<qFu5<hF34p=#/4#f)Ir_rhps&8hp"&i)q;uTbr
+;tj/k;cHcp<rZ8!=Su7s=RB8i=9)G%=Sl2"=T2J#=R'&Z>5h_/=&r0n:B!rr9MSG\:JOPW;c$=i
+;uCY7ErU4XFT-F^G5QRaGlE!eHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[FGG[/M2I4MN/`jYO-#Ke
+P*;,qQC!u+R@B\9SXuIHTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y2%o^r!t,`Q$!?b0/#ScHste
+eC<($f\,!5h;-rGi8WeWjQ>UfkiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$
+^]/f~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHdrMoq"ql9^uriH7*Yd+2r!q,ICrp0[OlMg$3ki_*jjlGI^
+io/hRhqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck2-OoT:s
+D#S2PC1h3nrFQeAVkKWIP`^u`LP:GEP.6d5H?asoN;&>.Npr,/O9(N.r07#Br0I)Brfm,A!gJn3
+rK7,CplP]BS!TS*rf7/>L4b*WI0=k?F*2R'I04kHI=;*E!.b$!!b#PHra5k;@%Xa/rNH4&!3?*u
+!N)XkU]dHcTV8%XT)Y>]SGnp-R$X)&PEM#jO,f3ZN/`dPLPD:`]7c8dEc,].Df0K7Fa8@gM2@+H
+MMd7JMZ/P3MZ8M7Ll$reL]<):LPUbALkg_?LPCM9rIY*$rdY'"IXh6Fq18Qrr.4]pqLJ^"JV!cO
+s+;,@IX-0`G'J7TEcZJHEccGFDfUYOMI'Wf?2n10?2Iq0?XR:@?N=F3?iF@3?2\"6>?kH>?=$oB
+>l@n*>l._<>$G69>?k?8=]eg0>$G39>[(D1=Tho4>?Y2/=pJ88>$5!1='#<%s&f;&s&Bn8<E)po
+;,0ePQ'@Q!QBml(R@0G1S"#q<o:>oQqOd\Zr1NeXoqMJ]q4n"erhf=cri#gqoW%niri5gqrN-%"
+qQ(I7XJq\JH['dUF*<>TH[9gZNgd,MY-._Cs)S*[qfMj\rc\3`rcnHgrHeKjs*Xcns*artrdb$"
+!.t3&!JH1+L2Vj'M2@+JN/WaVO,oBbP*2#nQ'I]'R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C
+[^N]V]">Vh^VI\&_o9X9aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5f=ak32'olKdg(mdKW6nF?)?
+oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHd"cS@tMMmDjMYrA5N/di*!q,ICrp0[OlMg$3ki_*jjlGI^
+io/hRhqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck2-I/RIQ
+?N=F2>o6gP>[2Z'G]n.HD/*]pA7KInLNRTOCiOOoHLuLPH3/G@I.D^`Ie%p\If+WeIMm6IEc5f3
+CM@Bk@:<PO?<^Q7=(#EF@:<POr*o\:!Fo+-<<Q6";gO/sK`?](K)^B$IKFqHIK"TsH@'s`H2Vsp
+G'.nLEcH&<Df0IkD?"GPC]A,`BlJ3NDg#f,A7K.]AS,RiCN"6<GlDpbGQW/7GB`t0r-&9eF`heJ
+rcS-\qfMp]F8BqVE<'tTEW'kVErL.REWC1ZEW:(YEW0t\E,BK0rbVRKs(MaOCM@HoAo_<qpeh)h
+peh/l<)ifpq,75ir)3Pls&/ko!)ienrD3_r;G^1e;Gg<i;#a;k;#4&h:]O;i;#X5t;,C%a:esh^
+:Jjsf:]=)u:JOYZ8kMZF6p6-QJqErRq1S?ns+^N.qM,!)s+p]1reUN0o8<="regQ1pl+^%q2Y00
+s,R&=rK%bTMhH=mDJX*%BR#_XDJ<m2IYWN.K`,ojErL.WFT6L_G5QR`GlN'fHN/?lI/SKnIK4ls
+JH(0#K)UB'KSBD[Dhj.*M2I4MN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5C/hWN*#$Xfnt6
+ZEppH[^`lZ]=bkm^qmn*`Q#s>aihlPcHjnce'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4$,n*fc8
+nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s1eSa~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHdr_`_pqGd>l!*9*f!q,ICrp0[OlMg$4ki_*jjlGI^io/hR
+hqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck0.r`'.k6psL5
+7Rd/A"@GC:4?NO&%Q-(#1c.3O4$H,0;,L:kpf.5kr)3;g!)ibop/1lfpe^c`mns-aq,Hub'0J?<
+3&irX2Dm<H1,(C:0.e_,0`Eg.0JW>Yr]U3B$9CUI8Ou?A8Ou?Ar'gWR$:@3K6U=%*6U3t)r]gEJ
+s$$HG!^8b/r]L3B(HOW>3B9&R4[;J-:/+GV:/4MX:/4S[;>*rh;tj/i;uTbm;?B]l;#X8j:]XEi
+r(d;fr_EPi:\[cc:]4,j;Yj5h;?'Go:Jamc:]F/i:]=2j;?'N,;c6Ij;,^=i;G^4^7RK!p4Zu",
+4o@AB3]m='r]:0B4$3@&rAt6F4?Ykl4[)(.49.SD5Q*eG4TI\D4o[\M5X%@p5!M7/4o[_G4U"#7
+5=%S"r]gKK6N'1N5X534s$$rV4[2+m4$#AY02kbI;u9Mr;c6Omr_rkrp/1rj<)riss&],#r)Wo$
+=o;Ch=oMP'=8l>!=8uD%=o2=e=nZ&!=oDP&>6S24<)?=cr_*_p:K("a:/4V`:JaqerGhjXrc@sY
+s)n<ar-/-bs*=Qhs*OcnrI+]p!.Xuus+(0%rdt6)L&QgFLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.
+R[]h<StD[LU8+N\VPgAlWiN8(YHY:;Za@0L\@K2_]Y;.r_8=+/`lH0BbKJ/UcdC.heCE.%f\5'7
+h;7&IiSrnYjlY^hl07L!m-X60n*oi:o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc!;6,f!3H1%!j8`2rilO1md:#?!UK%Mks+Cpk2tddjQ#:[
+i8EMLh;-l@g=b-1f@JI$e'ZRicd'eZbK@rJa2Q$9_SX.(^V.:m]",>[[^EKKZE^X;Xf_Sc$B0RQ
+Chmg$CM7EqrFQdXAnIO!Q'.,`LPLSIPECs9QZmt5MY2u*Npr,0O91Q-PPg[@Q2HsBQ2d*APld26
+P5UOCP5g[EOscBROcc*!Q]I5fNfJjIJU`,rG^"7NFF8OcIXQZpJ:N-$JUr>[@:K1C).?pYZEUO:
+YHP(1XK&;"WMQAbUnaWXTVA(XSd1gXS=,e4Q^7T6!g&P,rf._QNf8dPR[&eNG&hA7E,Tc;G^G.#
+M#E21M?&M2MZ/P6M?8]nMZ&D3M#<&,L]N9ereCo:KS4u2Jq8K'J:E#trI=s#J:RNJs+'utq1/Bo
+qh"d!s+LE)'SM*cH$FOXG]e1OF`VSGFE;>=E/jd$!*oM/qd02-!+,Y3ra#S1rETA,"C,5<?=!P8
+r`f>+qcj)(&R8OE>[(B7=]eg1>$G6:>?Y50=Tho4>?Y2/=oqo3>5hYJ=B/C'=BAU+=&r=#<E2so
+;,0bSQ'IZ$Q^=,.R$jG5S=K;D".l'TT),)VU&:SXU%P/[U\U\cV>d@aVuEXoWV*:jWVrjnX8f:"
+X8T-sXVIn6R"g'7G'.hLO2-*fF*j4B<i`C+rc.sYrcA!ZrcS6ar-/-bs*=Qhs*OcnrI+]p!.Xuu
+s+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y->.9
+Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc"SI\1Mi7Ljr/:T6s,I&=!Uf@SliHG;rolZ2kN:pgjQ,@]
+io&bPhVI#CgY1?5f@SU'eC2gmd*L"^bfe/NaN)9=`59C-^V@Ip]XkY`\$i]OZa-j?YH=r+Hj41k
+?XR5I?N".I>[:W??!CNUEcH#5B4b^bD/O32M108\F*R\1nTjVM!IK4aIJeQcIJ&'fIJ/+>F)c/:
+DJO$&ARf.W?XI)C>?=p7?t*SQ@U`hW@UikX@oQE-<E)ss<)\PKK`?Z(JHgXRIXQZlIK"TmHN&0h
+G7&M9FE;JBDfK]5DZ4MPD#\8`C2S98F_G?!@q9.`AS,XmFE_s,GlN!fGQ;seGl;j`Gl;ghG'.qL
+FT-F]FS^+\FE@G%!crC&pMp.N!HE/YF8'_TF8p7`EH?/?EVjeVEW:%_Df'?-D/9)bs(DUPBPD!g
+@Vkm=s&&Phs&Aqqq,72hrDNYms&/ko!)ienrD3Sn;G^3f;?'Gq;,9ta;#F0-;G^1c:esna:Jaha
+;,9ta:eje^:f1%b:]=)s:JOYY9h@oI6U-0SrIap!p4WU'Knb?\L\cc)L]<21L]3,.M=ZW"M>iD0
+Mt`2"N<,'!qi:H4rJpi;qiDGOMh#qhDej*$CNttYCh[^7J5-#rrc.sYrcA!ZrcS6ar-/-bs*=Qh
+s*OcnrI+]p!.Xuus+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\
+VPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ>Uf
+kiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc!qfGhqGd;ks&T/"!Uf@SliHG;rom)>kN:pgjQ,@]io&bP
+hVI#CgY1?5f@SU'eC2gmd*L"^bfe/NaN)9=`59C-^V@Ip]XkY`\$i]OZa-j?YH=p+<)k@q6q0R5
+6psK=6k_[C3B/lR1c$mJ3&*Q`9i"Vc;cEHjr_r\lo2GZer_r_ms&&PfqGH]Z!)r\mohuhm4$#A]
+3&``P1c$m@0J>+3.kED01,:O=1GgpErA4R<4[&d,"Znk.8kDVR7g2IT7n,p9rBpWQr^6uY6:4%*
+5X@[7570Y?5!D(l5!:th4oRMX3]fD`4?bPj:/4MX:/"AW:ej_a;cEHj!)rhq"&i)q;uT\p;u]_t
+;cH^pr_ibpr_`hq:f'se:]OAj:]=)j:JO[[;#X5j;#X>l;Ya,h;>O,g:]=,g;#O/t:esna;,^=g
+:fL=kr_Wko9L:R!5!Jp.r&Y!A4$5Y(3s%H)48_5>3s.N*4?ia-!'^?D!'U9Fr''s?s#pNM5!D./
+55[SD56!bG55meI62j+Q5sI\&5sb?4!'gHH#sUR;3BB,V0N1pI<!-&s;cEZp!)rYjs&/qt<Voes
+=8Q+t=8H%d=oVV'=8l>!=8uD%=o2=e=nl2!=oDP$>8:=C;G^1b9MS>Y:/t%b9heA]3DWONrc.sY
+rcA!ZrcS6ar-/-bs*=Qhs*OcnrI+]p!.Xuus+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>t
+Q^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($
+f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq6)f!3H1%!j8`2riuL/s0GYjlg*j#l0.<nk2tddj5].X
+i8EMLh;$c=g=b-1f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:_+j\[f2X[^<BHZ*:F7XfR\KMh7+L
+CM[a#BP2#WAccXXAc?BSOc>9SL51PIEh9Y-H%(F*nr<O,nW3[2!KiQBPkp[CQM6[EPkC:DP`q8n
+rfR5Ds,m;Ds,dh_QBmSmNK/jPK7SQ&I!Tu8F8gOeIf4a"JUi9&JV!f0#@LtJ@:5&"Z2Us5YHY.2
+XK&;"W;`P#V5'cZTV8$NT:VUFS,Sf]Q^*f!PEM#gO8b.PNM;`QQBH<4E,0E4FE2VPK8GH_M#N52
+MZ/J3MY`81M?o&rM2@%ELPU``L]W?fM#N20L&Zf/K7\]+JGt&tJ,k0!JGaruJGOilJGt,sK)('!
+K`-K8JU2ZfGBS.PFED\JFEMY>FE!9=>l\./?2S%,?iOI4?iF@3?2\%.>6%q,?2e+.>Pqb(>Q7k=
+>[(E;>?Y04=BSd1>?kE;>?_#/"Bo#6>$:i.!*fG+s&gCF<E<1'='/R+<`N+!<E)jn:JFA6QC!r+
+R@'D3S"0/B".l'TT),)WU&1MWU%P/[U\U\cV>d@aVuEXoWV3@jWVrjhX8]3rXV\.=Um6FUGB\%I
+JWtY1GBJ>*U0+P#Y&XG]s)\'Zs)n<ar-/0cs*=Ngs*F`nrI+]p!.Xuus+(0%rdt6)L&QgGLPUeD
+MMmCON/`jYO-,TgPE_>tQC+&-R[]h<St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J\%&u[]Y2%o^r!t,
+`Q#s>b0/#RcHjnce'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!+n*fc8nac8Bo`"O`p&Ojcq#C0i
+qY^6ir;HTdrdk*#s1\M`~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq->MMi7Ljr/1Q6rf-i9:[IE5lKRQskND!ijlGI^io/hR
+hqm2EgY1B7f[n^)eC2jnd*L"^bfe/NaN)<>`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/I!fO6Ch@$\
+?M[t->QJ&4r`]nNCM7?kAS#^cG_g`_E-$:'HLH.LHN/<lI.D^`Ie/!\If+WhIMR'GE,BH-CM.9i
+@:<PN?!CH5='o<C@/XO9A7B$I@fTL-<<cE&;c@UhL&?W(K)^B&It%BF"FPWEH@,X;$[?rAGBe7P
+F`VSCE;jbUDZ+DaChn38MK*lRB4YUaAnG[iD05Vu#^CQ<G^"@VGBa%2rce3`rce?brcJ0_rH.gW
+s)S3]F8g4[E<(%TEW9tZEH?1!F80eUF8g4[F8p4]EcZ=$ErU.UEY35-D/F')Bk_<tBPD0n@qB.e
+qbmGkq,75l"&i)r;u'>j;>jDm;>sGo;,[?irD3hu:f("d;Gg:f;,R<g!)WSj!`DikrD*o":Jah`
+;,9ta:eje^:f70es%Wns:/4MY8P)HD67MndqLnNq",;MaLAco(LAlu.M#W80M#N8&MYN&,MYrD+
+N:)]&Nr"h6NrG+7O:mP0JTGaGCMIU(H>dV9C2JKQ:&]eGEW1"YF8L(ZFoHR^GQ2pfH2N!gHN8Hl
+IK+`rJ,XuuJH1<$K)pXZre>BILl$tGMi3OQNK0'\OcklkPa.N"R$a;1S"-%@StMdNUSO]_Vl-Mo
+X/rG+YHY:<ZaI6N\@K2`]tV7s_SX71`lH0CbKS5VcdC.heCE.%f\5'7h;7&IiSrnYjlY^hl07L!
+m-O0/n*oi:o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$^Ai]~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq-7iqGd;k!EN5"<<#rnm-F!&l07EpkN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%e'cXjcd'eZbK@rJa2Z*:_ns7*^V7@n]=GJ][^NQLZE^X;Y-"d)<%04M/OW&&
+6io_D7/fRR2@MH"1,CaI4$Go":/Y'i;ts;l;u'>Z;uBMn;><u`;=@B_;u'De;\V>U3]T/Z2E!EL
+1bpa=0/+t./2AsZ1B0012#]931c,+or]C?G4[Mb48H)*k8Ou?@77BU56psC16UO1-6UL]9s$%Pi
+5<h=o4[(tj4$>Ye3]]5a5Vku+:JFSX9MSDZ:K70hqGdJnrDWkt;GpHm;ZBZ!;H$Ln<)`cos&8ko
+!)`Vir(m>fs%`Yj:\[cd:B45i;#sQlnPK3\s%WVk:f.*d(Jmt+;Gp:d:ejea;GU4j;c6Oj9MIo3
+55dVE4T%8I3]oMd3]fDa3]m7%rAt9G4$5Yi4Zttlr]C0Er'1-Ds#g?Gr&k'E5lNqK4[)+-4TI\F
+4WlsS5=%S"5X@V#6:!n&5sRY"5=%Lt5<_=q4ut\a3\qfS<!-&s;cEZp!)rYjs&/qt<W#nt=8Z1u
+=8H%c=oVV'=8l>!=8uD%=o2=e=o)>!=oMV$>Q7k0=BAHt;#X0!:/"MZ:/4MY<E)%U;GqN6ErU4X
+FT6L_G5QRaGlN'eHN/<lI/SKnIK4lsJH(0#K)UB'KSBD[E/07+M2I4LN/WaVO,oEdP*;,qQ'Rf)
+R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*UdE[^WcW]"G_j^VI_'`5Ta:aND]Mc-FY_dF6Uqf%8R.
+g>(N@hr*JQj5f=ak32'olKdg'mdKW6nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEIaJ,~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUp#f!3H.$!j8`2rilI/rj2U2rom,?kN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+P)Y-_N.dms
+C1q6nrFQjZB4YdkBPD7!Ckm[uO`?c3R<a13MN3_fNVnh+O8b4AP*>g.q3ClDpQY`CoT]KBPEPp-
+rfR8Drf[;Ns-E\I$BC+'KnFr-IsZE`rc80iIXHbHIfY+NrdbK0JRW(s?sm>M@'[)CrilF+s/cL,
+WiN.tUSIga!29Cb-(gj&St;RCR[KS1Q'.ArOcYZcNfKg,XG33fF`)&9FEMhVKntQ`M>`8/M#`G4
+M>iD2MuSb9MuJS8Mi*AiL]W?fM>N,.LBE9bKnTGX"G))RIt.HJ!.k&us+10"qLSWrs*t#urdjot
+qLeg$"G;;XK7a)R'nV!^H[0dWF`qnNFEMbLD09i9?!U_7?2It+?iOI4?iOI4?2e+/>6%q+?2n1.
+>Q%h)>Q7n)>7=\<=]eg0>$G39>?b;0=oMV6>$5$4>?b97=]nj,<rQ2#=;4h;<E3!u<)ZUj9hII6
+R@0G2S"#r@SH>CRT)##VU&:SWU%P,[U\LVbV>d@hVZ<UkVuEXoWVELkWVidgX8]3qXV@qAWh5B(
+H$ORTF,%2QHZsX^T<#'mY5WJAF8U.ZFoQX_GQ2peH2W'hHiJKmIK+`rJ,XuuJH1<$K5lQuKnb>;
+Ll$tGMMmFPNK0'\OHPcjPa.N"Q^F20S"#t?StMdNU84T^Vl-MoWiW>*YHY:<ZaI6M\@K2`]Y;.r
+_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;QZerdk*#s1SG_~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUp2Kqhk?1!0$o:qi:Z:rom#<kN:pgjQ#:[iS`YOhVI#C
+gY1?5f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+HtQl-BOZ./?Me"F
+>[(H:>[(E;>[:TGA7]R_GEmMjE,g,LHgQ+JHN&9kI.VjbIe/!\If4]kIM[*IEH,o8D/*]o@U`bQ
+?X-f<=BJs?@:T:G!+bt:"&r9"<W5r#;MKp[L&H])K)^E%Ig(7LI=6KjrHeHgrceWiFEDSEEH(nq
+'lIl*Ci+<>Jo?$MBOt^bB4u!uF*;a&GQ2pfGPudcG5umeGPHF^GQ2jdFT-F^FSBnXFT-@\ErU+Z
+EqaPREr0qRErL.ZErU1_EcH,@rGhmXr,MdYrc8$Y!-A*V$uB]oBkqEsC2%-g@q#=6s&&Phs&9)!
+;H$Nj;Z9Pk;?0Sn;ZBSo;Z9Pl:]OAl:^U&t;,L.d;,C%a;#4&h;#X8j;#a;u:f1%b:f'n^:Jape
+:]F2h:C'Zi8P2QE68X>kK_:$#L4tB\L\cc(L]</1L]*&.M=ZW"M>`>0MtW+tNVeb5O8=n9O7nYJ
+NJN"%DJX-'Bm#GRDeWs)JVf0]K`6#lF8U.ZFoQX_GQ2peH2W'hHiJKmIK+`rJ,XuuJH1<$K5lQu
+Knb>;Ll$tGMMmFPNK0'\OHPcjPa.N"Q^F20S"#t?StMdNU84T^Vl-MoWiW>*YHY:<ZaI6M\@K2`
+]Y;.r_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lb
+p@n=\q#C0iqY^6hr;QZerdk*#s1SG_~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUotcpf7;ms&K&"rom/@kN:pgjQ#:[iS`YOhVI#CgY1?5
+f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+<%01N/hK+D6q'L37K,[T
+6iKLR6iTI[6UW[b1H7BX77L)P;ZBYs;H$Nk<;ohl;X[Q\;?0Sh;#4&X;?0Yk<;BJm49dl.3]T/X
+2Z>N<1,1I90.e\*r\=F.s"a[52#K004oRPJ4$>Yt8kDSQ7fu=R7n3GG"%#FF7/TCP62<bc5<qCp
+5!D+k4$5Pc1d4)l8P`&U9heDZ:/Fth;Ya8e<;ohr<;]\o;YsAp<)Z[mr_rbns&&_kr(m;e"&DZe
+:]=/j;>X/j:Jh!e!E)ea:]O;j:B")g:]=5j;ZBZ-;G^7e:f:+f;H6Xl;c-4]6q.)<!'L0@!':*A
+#!4k-4$#Gbr&js?s#L?H4[)"l5!Js.!BiXF5Q*eG4TI\D4U4/85<_7o5!Sp-s$$HG,!S=W5s[_#
+5sIV$5s[b%5X.Lu5sIOu5!M4p4#oA^1F?(#r)<So!)rYjs&/ntqc<_ur)ikuqH3)es&f8%r`K&!
+s&f8'qcNMo!*K#!qc`i!r`]/&rE9>*<DZCcrCmSn<)6=c9hSGb;uT\oErU4YFT-F_G5QRaGlE!e
+HN/?lI/\QoIK4lsJH(0#K)UCBKS>,7L51SAM2I1KN/WaVO,oBcP*;,qQ'Rc(R@9V7SXuFGTqS3V
+Uo(&fWN)u"Xfek3Z*UdE[^N]V]"G\i^VI\&_o9U8aN;WKc-FY^dF-Oof%8R-g=tE=hVd>Nj5]4_
+k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HlrUg)?s+13`s*t~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^r2Th!rN6+&!O&a,Z2M$-Zi[S>ZMrucjlGI^io/hR
+hqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`59C-^V@Ip]XkY`\$i]OZa-g>Y-"h,Wi:c?Ne_8?
+S!&YBAn>RdC1q0mBkV3qD>nAOCC+m>c^f9*Jr5SKrJ^f9rf-o9r/L]9m>q:/!g/Y0r07&C!LB#M
+QKaY:P`q8nrfR5D-]sRTS"#_0OcYW_M2-_8JU`&mG]\(LI=6TsIt3'$ItE6(JqINA@K'X;@?@e#
+Z2Lm;YH4h+WiN.sUSFZ^US4BUrh'@cSt;MPRMqQ[Q'.>qOcYZcR@pd>Sp#6uE-$&DI"R63M>i>/
+M>i>-M>`;3Mu/G;Mi*CNMi*AgL]E;.M#W51LAll6KS>&0JUi6"J:N4KJ-:FRJUi:IJc1*!J,Xut
+JbaooK*?s^JqAW,rdk!!&VGLYH['dZF`V_IF`hS;F)d6=?2It+?iF@=?X@&E?!LT=>?bA1?2n1.
+>Q%h(>7t+D>[(E;>$5!1=BSg3>?kE;>5_V'>9mBT>$>-7>$>'3=BAO)<``C*=&r=$;cZjs:f:%^
+6(++/S"#rASc,/UTDYD\T_G/QUAq"`U]@7jVYm=lVY[4iW;`dkWr8poWq<@kXSAn5Y-5%2WLAiq
+G]n1LGDNqZH$"=bS[PTuY5`PBF8U.[FoHR_GQ)jeH2W'hHiJKmIK+`rJ,OluJV*lR#)%\aL5(J>
+reYZQMi<USNfT6_OckomQ'IZ%R$jD4S"6.BT:qsQUnjibVl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u
+_Sa=2`lQ6DbKS8Wd*^:jeCE1&f\5'7h;7&IiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$^&NT~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^qhk?1s,?r:!KN0=Nr4t<NW>(<k"Fgsj5].Xi8EMK
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tD"h\[],W[C!9GYct:4XfJJ$@rQ-m<-N@u
+B3ebJ?!I;5"^P>;>[:Y4>RGJ<HYRM?G^Fd`HLQ4IHN/?kI._pcIe/!\If+WlIfFKhEW9nhD/*]p
+@q&hR?X6r?=]f'?@:NaF@h)sX@q9([<)lpt<Duh9LAlo*KEd$ZJ:W6#If4ZpHi89jH2i*pH$=FR
+FE;JBE;jbhDJa62G_0m`BP:sgAnYptF*2\Nrc\*]"*f$5GQ)jcG63#5GPuadH2MpdGQ2geF`dV*
+s)e3^!-\9_s)\KeFE;MDEcH-pE<(%XErpB'F80eUF8g4[F8g1[F8'\[F)l;BF)l8@rcAinDJj9-
+CMIR!C1q?l@qB.d;Gp@hqbd\u;GpIn;c6LlqGR;ir)3Pls&/kos&/korD<Mks%iep;Gg<i;#a;k
+;#4&h;#X8j;#X5s;,C%a:esh^:f70es%`Si#Yn)g9M%fH6TP$sp4`I"rJ16(rJ(H1LPPhare^6(
+q2,$,rJU?-mZ%+(rK$`6rf?c7'TnK:K6hKRChd["G`ZcZC2.a>Mhq@cs)S-\r,hs]rc\6arcnHg
+rHeKjs*Xfos*artrI=p"K)UB,KS>,7L51TaM/nK3N/WaVO,oBbP*;,qQ'Rc(R@9V7SXuFFTqS3V
+UnsueW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6aN2NIbg+M\dF-Lne^rF*g=k?<hV[8MioB+]
+k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13`s*t~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^qc*>jrDWet<r,nsk!nInj5].Xi8EMKh;$c=g=b*0
+f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tD"h\[],W[C!9GYct:4XfJJ$-o3G+0fV$H0`FHD6UX=0
+6q%#A%73EL5X7P"3'9Q!:Jk$h;uT\p;uTbn;uBP[;u9Jl;>sAl;>sDf;=@B_;u9Mp<E/io$p6[7
+3]]8\2E!BK1G\q`"YMAX/M]'[1'06g2#]9=1,CdN4Zkki4$>u(r^m)Z!_GpPrC$iW5t".1rBgTP
+62j+L5Q*hW5<q@o4[)"k4$,8`5"8-C:]F/h:B48j;uT\j;u0Jl;uTbq;uT\m;[63!<)Z[m;cEQk
+"Aqum:f.'cs%`Si"AV`g:f.-gr)!5emna*^:/4U_:]jKi;,R9iqbn,(;,L.e;,U7k<Dujh92%`2
+4[&^)$9C724?GSc4$#Gbr&js?s#L-BrB:0ErB('DrBL6Es#g?Gr&t'D#!b@94[)(or&t$C#!G19
+5=%S"r]h8a6:!n&5sRY"5=%Ou5X%=r5!M+i3AiAc;uT_r;u'>k;ZTitqc<_ur)iku!E`M&=R9/j
+=T)>#=Sl/"=T)D"=S>kt=SGts>528">5MP$=qb%?;c-@d9MJ2S:Jsta:/+A[;cN`os)S-\r,hs]
+rc\6arcnHgrHeKjs*Xfos*artrI=p"K)UB,KS>,7L51TaM/nK3N/WaVO,oBbP*;,qQ'Rc(R@9V7
+SXuFFTqS3VUnsueW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6aN2NIbg+M\dF-Lne^rF*g=k?<
+hV[8MioB+]k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13`s*t~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$/ir2p"%"L#&7Z*O>7rj5k8ZEga?Yck4ij5T%U
+i8<DIh:pZ;g"=p-e^W'rdF$:ccHOJTaiMNB`Pf[2_8*h"]Y(hd\[T#T['R'CYck12XK&;!Vi?CE
+U7@I,L5_"$Anl!jBkh<qC2Nrds(_n'NlIf;H\%*8rJgf8s,Hu9q2GB7mZ7C0s,d;Eqipl@rg)f6
+s-!GGrfR/B.@ZioQ&q/hNJW@AIt<&rG^"7PEd`@eJqAQ*Jq8Q,JqJ\b@pi_P@:6G@ZN%-1YHY2/
+X9Yc+Wi)VeUnms_,bUj(T:VXES!f_3QBdYtOcb`gNjsk1GB7kFFEDhZKSbPALl)%crJCQ1r.tH3
+M>`;3MuAV7N<"q:M[,3!Mi*=HM2;.fpkT31Knb;9KnFu.rdX`o!.k*!q18Qr!.Xuurdjls!eZ/Z
+rIY0)KnTGXs+16%r.4s%K`6T8IX?BcG^"4NGB.kMDJaE3?N+7/?3":/?i+10>m=P<>[1K;>l@t.
+>l@n*>l.b*=p/)7>?kD3=UA25>$>-8>[(B8r`T5)#?k86>$G37>5hY?=B/C&=BAU+=&i7"<`N'p
+;GKnSR[]f>Sc,/VT)bP^U&:SXU%P/[U\U_cV>d@jVuNXjVuEXoWVELmWVWXpWrT0oX8]3rXVn:D
+Y-5(8X/;;=I!0^SEIX%1H['XWN17)NriZ6Ar,hs]s*"<as*4QhrHeKjs*Xfos*jutrdYB-JqAW-
+KS>,7L51TaM.hd)N/WaVO,oBbP*2&pQ'Rc(R$sM6S=Z=ETV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT
+\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCN7(g"P39h;7)JiT&tZjlYail07L"m-X60n*olHncA@S
+rq-?dp\4[^s7uZjr;6KkrVcBfJcC<$^&NT~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$/Hr/1Q6rJgc9r/Ui<rJaL0Mi6WUio/hRhqm2F
+gY1B7f[n^)eC2jndEg+`bfe2OaN)<>`5BI.^q[Ur]XkYa\$i]OZa-j?YH=q.WiE"qB4=ncF)G`&
+BkULMr`fG/r`oJ/r*0MDE05Q_Df^,LrHe$[s*+NhmX"hY!.=Eer-n9doR?aerI4cg'6.u/Df'9&
+An#1V?sd/B=]ng7@JaR6AH--IA5lQ/<)cdpL5(D9rIk3'"G))SJ:IQIs*Xfms*F]js*+TjG'3e+
+s)A$XrbqgS'5r_HHtR,(B4bjmE-$2FF`qtPFoHR]GQ2mhGBS30GRAY<GB\:UGBe@XH2;dbG5ug`
+FT?O_FoQX_FoQOeF`_\GEcV+u!-7sV!-8'[rc8$[qJuUWrc8!Zs)J0^FE@;!rc83_F)uABrcA*]
+rc8WjDf'<-Chd^#Bk_<l@q9%Hr_`Vl##S;t;H$Onp/:lerDNYms&/kos&/korD<Mks%rVjs%ihq
+:JXe`qbdAir_NPj%8Ter;,L+b:f'n_:Jame:]=)q:JOYY9hIuJ6p:O&onE@!reL<(rJ(H1LPPkb
+rJC0(q2,$,r/:6,mu@1(s,Zl6rf?f8rfInXO,JX7Df0?*BlSB>DJX!%G^kX*re18lr,hs]s*"<a
+s*4QhrHeKjs*Xfos*jutrdYB-JqAW-KS>,7L51TaM.hd)N/WaVO,oBbP*2&pQ'Rc(R$sM6S=Z=E
+TV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCN7(g"P39h;7)J
+iT&tZjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBfJcC<$^&NT~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$.grD`hsrDieq!``9%qc<burE'$Z8E/Udi8<DI
+h:pZ;g"=p-e^W'rdF$:ccHOJTaiMNB`Pf[2_8*h"]Y(hd\[T#T['R'CYck12XK&;!V_'DR3AiWJ
+0JYCB6U^o@&k#)S6:4()5X.Lg4[MY7;,C.hqbdDmr`&kqpepHWqbmAi!`2`kr_WGgmns-aqc!Sr
+<;]Z44?Ybe3]T/X2Dm9G1,(@8/M/M)1,:X@1Gf"es"XX11H#.p#Wt114A&4;8P&hNs%!,ZrC%#\
+6:=416UX=/6N'.S5<qIu5X.Fqr]CZR4>&c]7S-BO9hnGZ:Jq!fr)3Djq,I>l"&r9"<;ohq;Z'Gr
+;H$Ll;Z9Vl;Z9Mn;#=&g:'scl:/=Y^;,U:h;>j>i;?'Jm;=IE]:\mof;>jDm;uTYq;cN`p&5l>#
+;,L7j;H-Ol<(]_S6p:H0$9C714?GSb4$#Daq`Oj>!]iD*rB1-ErB('DrBL3DqE=jB"$f%64oRYD
+4TIVD4p=)55sR\$r]gTP5=.Y%r]gTN5X7V#r]UTN5Wq=n3]T#Lr_req!)r\ks&/qt<W#nt=8Q+t
+<rlE+r)i>hs&f8%rE/qu!*K5'qH3Jps&f"us'#,!r`]8)q-"J:>Zt3,:Jae\:/+D[9M\>V:/=bd
+rDNW9r,hs]s*"<as*4QhrHeKjs*Xfos*jutrdYB-JqAW-KS>,7L51TaM.hd)N/WaVO,oBbP*2&p
+Q'Rc(R$sM6S=Z=ETV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:k
+eCN7(g"P39h;7)JiT&tZjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBfJcC<$
+^&NT~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?8k!3H+#s/lL.Yd(I=rNlO2>-kN>Z*:L:Y-+n.
+Wi4k5hVI#CgY1?5f@SR&eC2gmd*Bq]bKJ&LaN)9=_ns:+^V7Co]=PP_[^NQLZE^X;Y-"e*Wi;no
+V50fSQ&LHTMMnO9VIsRWBk_=!rbVUM#\nplUj%-9M2qOop5Jj-s,QQ/!0I2B!KrZEPkLCBQKj_;
+P`q8nrfItZ>aq1IP`_)hN/37BJUr5rH$=@RFFF.>!J#e$JIdEcKS*`D@pi_P@>(tnZEaA4!NiI&
+X!t-MVk^#_UnXTWU7\-PT:VXDR[]_3QBIJsOcl*&Q()r>EcH/DH@pp-rJ:N1re^T0r.tE0qMG0.
+!fN"rrJg]5#E+IqM2@%FM>;r/M26rdL'39dK7eaQJ,t4QrdY!"rIF`q!.t)us+16%rdk-&r.=m#
+rdt6*K`$H&Jbt'!K`?](KG&ufH@'m]H$4:SF*)25Df]i&?2\+0>m"G??XNY9!+#P.s'#J.rE]G.
+rEK2)r*02)%:!+A>[(B6=]eg0>$G82>6%k+=UJ>:>?Y06>$>-6>5hY==B/C&=BAU,=&i7"<E3!r
+;G^+[S+`EOT)"uYT`(S]T_G/QUAq"aV#R:jVZ*LmVYd:iW;`dkWrB!lWqWRnX9,N*XST%:Y-5(8
+ZEpU.Q@aC.F`DJZ[=ERHG'TFFX/l6&!-A'[s)n<arHJ9ds*=Qhs*OcnrI"`rIt.HJI=[!%K7ei1
+Knb>;LkpnEMMmFPNK0'\OHG]hPEhE!Q^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7'J\%&u[
+]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf@S[/g>(N@hr*JQj5]7`k3)!nlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\ssfq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?5Ir/:N5"-/A$Nr+n8NW+i.MM[1Gi8<DIh;$c=
+g"=p.e^W*tdF$=dcHXPUb/hZE`Poa3_SEq#]tCtg\[])V['R'CYck43XK&;"Vl-AeGB7Y8@qTFg
+JU`(H>QJ,7ra#J-#[;%oIVN_>GC0:7nTk.Zs*=$YrHeNloR6Xdp3lO]rI+]p,#36%E,]]5ChdTq
+A7AqS?<pc;=BT'B@q&qXA7K+\@q9(Kr`/tt(K5%&L4t>7KS>)3K7\W)J:E&sIXHNiHiA?kH2`'g
+FoHIqEc>r9DfBW?DgQ/2An>OhD/j[sG5cXaG6W55F`qqPG5ZUcG^'.1#^:N;GBS.RG^'.3rd"Bc
+rceBcrcJ3ar,r$_r,r$]!HiM`F8g.\EcH-tE<(%XF8g1[F8g4[F8p:[F8p:ZF8p7\FT$:ZEqOMR
+FT6F^FT6CoEGo`3D/<p#C1h9j@q0%Y;,R9is%req;Z9Vg;ZBVl;ZBVn;?B]n;Z9Pl:]aKj;#F2j
+:^9io:JXea;,I6hs%r_k&5H"t:Jah`;,9ta:eje^:f.*ds%Wns:/4JX8P)HD6%nrcrJ(9+q1em(
+s+p]1reUN0oSWI$rJLN2oo/<um>h1,!g&J(qN1]=rfRqUM1BS`Chmd"FcgZ^C27U6J;ApYKE-)k
+FT6L_G5ZXbGlN'fHN/?lI/SHpIXckHJ:3!#JqJ]/KS>/8LPUbCM2I4MN/`jYO-#KeP*;/rQC!u+
+R@B\9SXuIHTq\<XV5C/hWN*##Xfen4Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M\dF-Lne^rF*
+g=k?<hV[8MioB(\k2tjkl0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$]`3K~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?4hrD`hsrDieqs&T"us&T,#r)R%[hqm2FgtUQ9
+f[na*eC;spdEp1ac-+;QaN2E@`P]R0^q[Us]Xtbc\@/iQZa-j?YHG"/WiE%rVkp1L2)@'B1GUdR
+6:!t*6ps@.6UF((5<qIq4\8FH;,C3e;?0Yp<<#nk;XIEZ;Ya2i;#4&X;?0Yn<<#r%<)Z^O4?`[)
+s#L*;$8jXq1+t:7/hJV+rA"@/rA5$?1GUaK5!;%k4$,`#8kDSQ8,c$c7RT^7779L26UguB!(6QI
+s$%,]5!;"j4[(M_1.b89:/+JX:/:dd!E2np;uBPj;uBSq;cN]o!E<(u;ufkq;Z'Jn;?9]or)<Jj
+s&&\i!)WVis%Wep:f1(f;Gg<j;#F2j:]OAk:]aKj;>3od:\mof;>jDm;uKVl;uKVo:CL&u;c-@k
+;Gp+Z8OZ&F3rh>@48_,>48q>D4Zkk+3s%H)4T.DD5!Am-!'^<Fr&t-E55[PK5!M4p4ZttnrB1`T
+4[)%m4[;7s6:!h$5sIY%62j.L56=)762`tQ5s7Fm3]K2W;uT_r;u0Dl;ZTitqc<_ur)ikus&]8(
+r)i>hs&f8%rE/qu!*K5'qH3Mqs&eMgr`T;+oih?!'3J:7:/=SX9MJ8d:/FYZ9MSJe;>sGnF8U.[
+FoHR_GQ2pfH2W'hHiJKlI0+kIJ,XtHJV&K+K7no3L5(J>Ll$tGMi<USNfT6_OcklkQ'IZ%R$a;2
+S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2
+gtgiEi8N\Uj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEC_J,~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!3?%"riQ^6Yd(L>Za-pD['[-DZ2V!-Y5bS.
+X/W"nUnjd@gY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qp
+VPL#^ToXkaN/Od<W2QPhBkV6uCi+$)CMK'6RWj%-LAm54NV/8,N<#"-O8k=AOoLREPPg[$Q2d$J
+P5^Rm?(7:KQ'%5kN/31AJ:N&qG^+CRIsup#JUi?'JV/T+K7dWC@UNYP@&j44r364&$*1),X/`(m
+USO[`U)or#Tq7jHS!oh6Q]mSrPGaDTNcfPhEcZGQKS>2:M"li+M"HQ%MZ8Y4NVn_9Mi.@fr.kK4
+Ll$tDre:Q2L4k21r.+furdY!"rdaot"G22UJq<lNrIY!#rIP$%re1<(s+CB+qh+ct&VGaiK7ei1
+Knb>9Kmn>pG'S?3FU!#1CMn*1?2\+0>m+M@?=.(:?3":0>lS%.>l@q.>l7h)>l7h+>5VS/>$+p0
+=]nr+>6%k*=oV_(>5qe8=^"s2=B/C&='&L+<rQ))<)lmt;,9nX1&.=<T)"u]TV8'RU&1MWU%P,[
+U\LYbV>d@lVu<LiVuEXpWV3@lWV3@dX8B!pXW+FHZ*L[AZ`^@#P(It&FEMh`V0[H2H$Z'ZX/u<'
+!-A*\s)n<arHJ9ds*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<StD[LTqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uq
+f%8R-g=tH>hVd>Nj5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_
+s*t~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!/g]4!0$i8rf6o;!07#;;N-NlMM[1GLPCM:
+K\Y>9g=b*0f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tCtg\[],W[Bm3FYct:4XK/A#W2HMgUnXPt
+@qTLhJq/8tH[8q$rE]D-#?u4uH"h)8FoHaeHLZ:[GQ<$VHN&9kI._pcIeJ3\If4[&9ltJtEGfZ2
+C1h-hra5k9>[1E6raH%@@UiqZ@Js[EA5lQ.<E)prJVJo5L&HZ3K7\]+J:N,uI=?SBHiJElH2i*n
+GBS+OFE;I$E!:K,MKNTGrau=MDfTt!FoHRaFoQUbGQ)^kG'A.RG'A.TG^'.1"a>38G'8*.Gl2jb
+Gl2dcFo?L^FoQX\FoHF^ErBtXEr9nWErC(XErU4\ErL+]EcZ=$Er0nXFSg+ZEr:"WFT$:\FSg.Y
+FT67gDJa3*C1qBuBk1^b@o<2&s%rhr;H!KmpJV#gqbdDkr_ibn!)ienrD3Jkr_WPjs%ikr:esk`
+;>sDl;?'Jm:Cp8s:f'q`:f1%b:f'n^:Jamd:]F/s:JOYZ:/"5M7mej&L&Hc)L\cc(L]<21L]3,/
+M=ZW$M>W80MtDtsNU2]&O8G%;OoCLYPECl\IW97AC27X.Kl:gCCMeWTLP,SZ!-A*\s)n<arHJ9d
+s*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!*&nss&AttrDWet<r5tt<rZ7u<rH#ggtUQ:
+g"4j,e^W'rdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@8oSZa6sAYcb+0X/`.tVl$8cU7j@s1,CaQ
+69mat5"%_(r^6WL"#rM8:]=5j;u';k;uT_r;tj2V;u9J];=IH`;uBVp<=)W'1H[f^3]]8\r\b6D
+1,:L80.ne,0etL?1,Jkc%l,jp1H[i`4Zkee7S69E8H)*]8Ou?@rC$uZ6psC16UX=0pHTT\4[)"k
+2EX5q9i4\_:/4bc;Gg:h;H$Ll;Z9Vn;Z9Su;H$Ln<)`cq!E2tr;u]ks;ufkr;Z'Jk;ZBYq<;ohr
+;?Tor;,L0g:]=2i:]F/k:Jape;Ya2h:]OAl;#O8j;#aDk;#=&f;#sKjoMPZfqbmDl%T-"u:f1+h
+;H6Xl8kMZCrAt!?r]C$=s#^3B!BiRE49%AA4T7MD55mYF4[/g/qEFg?rBC6Es$$HG"$A_04T7Mh
+4[21r5s[_#5sIV$5sR\$5X.Lu5sIOu5!V:q5WLha1E]XqqGR>l!E<(r<WH4u=Su7s=R9/j=T)>#
+=Sc)!=T2J#=SQ%u=Qrua>5qb&>5qh,>5qb*<!?#m9MJ2UrD*Vm9h\Ma<)NWm!-A*\s)n<arHJ9d
+s*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*ZqlTn$!O&a+ZMq0C['Hs@Z*1@6Xf\\*WMcSg
+Una[`Ti%JTT@VQBeC)alcd'h[bKJ#KaMu3;_ns7*^V7@n]",A\[^EKKZEUR:Xf\Y(WMl_lV50l[
+TqIC(N,#JpV5C#[S!K4RD/=$(C;?O$FErClrJpl:pP]03N/[UmrJpK1s,d5B!KrZEPhhW)PQ-dp
+>]?7%QBmSpNK&dLKS"`(H[:!\Fa\aiJq8E(JqAW-JqSbc@q&hT?XWi=!3uO-%'Qb6XfAG%WMcMd
+Undm_&tbkjSt;IAR[]Y1P*2#pZ\aukrcJ<gI"d:QLB*/(M>rD(M>`;;Mi<USNK0$YNVeY8Mi.Cg
+r.t<.!JcF/L]<&/K7a)R!.b$!!J#b"JGausK)^E%J,k0"K)gN%KDpH&KDgK'K*-d\KS9;VrIY$$
+s+LE)"GDJ_L5,\]re(c4H[Bs^GBJ(PG\h89FDq+a!+#S1s'PY0!+#P.s',J-ra#P/rEK5*qcj)(
+"^G89>Zt;0=92Q.r*'/)rE02+>[./1s',G)!E`G&<Y&86=B8I&<Dupt<DZOg8O!!ArgrnW"JDH^
+U7qLXpS%8Ss.f@b!2]Xk!2oalqksIms/G[k!3,XkpT+1mr2ot$*3ZWQZEpmE[B6?uNdZ+qFE;bc
+UO79-H$uBgX/Q$#rH/'^s*"<as*4QhrH\NlI!kpAs*jutrdY$#K)UB'KSBD["c%njM2I5jN+J!0
+O-#KeP*;,qQ'Rf)R@9V8SXuFGTqS6WUo(&fWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J#_SjF5a2lBG
+bK\>Yd*^:jeCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"Lbp@n=\q#C0iqYU0h
+r;HTdrdk*#s1JA^~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*Zr/1Q6rJgf:r/Ui<rJ_/CMi3IMM26qAKn]GX
+7Y?;Ef%&:"da?IgcHaYWbK7iH`l5m6_SO%&^:_+i\[f2X[C!9GYct=5XfJJ$W2HMhUnaWWTP8(R
+<e>jMH['^UE,Jrer`f_5P'V+^D/j]Erd4WjpiujcqK`'brH[gW!IK4dIJ\KgII_jeI47lnF`VSD
+D/O0)BP(a_?sm;I>Zb*:@U`hV@Us"X@q9(ZA5uW/<E)prreLN-rIb]5K7ST(It2usI=-BgI!^5>
+H2i*hG5cUjFE2>>DKCMPI;/[o")VpsFT-I^FT?UaFoHR_FT?XbG5c[cGl;gbG62r3GPudbH2Djd
+G6<)6GBNe+!-S6`qK2d[rc8'[rc.sYrGhjXrH%sYp2g1QrH%s[pN-4Rs)\3^qK)XXrc8QiE,KN1
+CM@QuC1CaaARk[:"]82r;H$Nf;ZBVk;ZBVo;ZBSo;Z9Pl;#aDm;#O8i;#a;l:f73gs&&emrD3Gi
+r_Eht:esk`:JO\^;#O2i:'scl:/+GV8kDN>2u87-LAco'LAlu-L]E5/M#N8&MYi8-MZ&J*N:;i$
+NrP+5Nr+n8OSk7?P5^XYOGnm?E,KK+C2\?MDJX$'Dh*Y"rIk,ks)n?br-/0cs*=Qh!df<BrdFfq
+s*t#u!J,k%K)pXZre:T3Ll$tGMuJZHNK9-^OcklkPa.N"R$a;1S"-%@StMdNUSO]_Vl-MoWiW>)
+YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S^0g>(N@hr*JQj5]7`k3(smlKdg'
+mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*Zr`/qss&K"s"BAK(='#<%"BJN'=',6!pJk#?
+e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]Y(hd\[T#T['R'BYck12X/`.tVl$;dUS4BS1,C^F6U3dt
+4utbc3C?/"5X7Y-5"A7B;,^Bl;u';k;uK\h;XRKZ;Z'Al;YEuV;?0Yo<<#tu2$Q0+4$#A_2uY]G
+2)@!B/hen//28n71GgmFr\P-@0etRJ5!2"l3]fl)8kDSQ7fu=R7n3GG#X_!I6ps@0777&>!($HH%
+6Qd+5!DJ5:ejk^;,U9i;ZBVo;?0Yp;?0Ym;Z9Sp;Z9Ss<)Zaqr)<Vps&K%t!)rkpr)<Vn"]J;t;
+cH`n;Z]io;>a2s:f1"b:ejb]:f1*e;Z'Df;#aAr;Gg7e;,R6fr(d;hrDDoZs&/nqqbRc#<)QRm;
+cZL^8OGj,4$*@&r&Xj>r]CBJ4?P\e3]d7&s#pBGrB('DrBL*ArB:0E'gFlG4[)%m4Zkkj4?btn4
+[24s5s[a75SlXO5sR\$5X.Lu5sILt5!D4q5<:hc1Fr<"s&/nsqc<_uqcNbt!E`M&=RB8k=T)>#=
+Sc)!=T2J#=SZ,!=S,br=SGtr>5VOs>5q_==BA<q:/+MY9i+bb:/+JV<)Z^kr_i]:s)n?br-/0cs
+*=Qh!df<BrdFfqs*t#u!J,k%K)pXZre:T3Ll$tGMuJZHNK9-^OcklkPa.N"R$a;1S"-%@StMdNU
+SO]_Vl-MoWiW>)YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S^0g>(N@hr*JQj
+5]7`k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+13_s*t~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:fof!j8`2rNcC.s0;U.s/lU/XK8J&W2?Bi
+UBRBcTqJ$Mrgs.[s-cI)cd'eZbK@oIa2Q$8_SX+'^:h1k\[f5Y[^<BHZ*:F6XfSP&W2HMhUnaZX
+TUqaGBWS51VPB]PQB@5eMMZ+`CmMMmH@U_HNrG%;N;e_8N;eb8N;/D3NqAD3OT1ICOoU^DPhqZV
+P`q;8SXZ"3QB78jNeiFBJ:E#qH$FOVIsus!JV&N*KnY,1KnEiE@UNYPHi:;MYmR_<XK/G'X/`.q
+V#I,/U8+KWTV8$MSt2==R?j/%Vj`mCG]n1MGCY@%M>i;/M"ZZ*M"?K%MZ8V8NW"n:NVn_:Mi*Dj
+M>`80M#rKiM#E)3L4t>6K(jiqJGt*#Jq<oQ!eZ)Vrdb*%K`6W(K`?](K)LB&KDL9$KDpH*K7nl0
+K`6W(L&H`,KnfS\&;GmmH@(!^G]n.NG\_)3F)h1c"^G>>?=.(;?N4=/>lS%->lS+0>l@n*>l.b*
+=pnS>>?kB9=BSa/>$Cl/s'#D)rEBD.>?Y68r)j\8<E<.%=BJU*<E3"!<Du^l:/"%RSc,/TT*1g\
+U7n:YT_G/QUAq"aV#R:jVZ3RlVYd7mW2ZcgWW9$kWqi^kXT#@"XragPZEggD['d<MXJVJEH['[T
+FdK.`I!0^ZLS2/WX8]:$FT6L`G5ZXbGlN'fHN/<lI/SHpIXckHJ.$p[JqJ]/KnY89LPYqdAVuD)
+N/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5iWiE,%Xfen4ZEppG[^WcW]"G\i^VI\&_o9U8
+aN;TJbg"GZdF$Fme^i@)g"P3:h;7)JiT&tZjlYail07L!m-O0>mgJXTo()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$]DmB~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:g#Grf$i9rJpl<!07#;$B0n$MMd7ILPCP;
+r.G'&qgqOnJ:Q"mcHXSVb/hZE`Poa3_SEq#]tCtf\[])V['R'CYck12XK&;!Vl$;dUS=HTSt;KQ
+JU`&nH$4:LD/<s"AmAPHFbtH]E--AOHN&6kHL?(WGlE!WHN/<lI.Vj`IenK_ILJnnFE2A@D/O3*
+B4bWP?j0kB>?G!9raPk;#%D(Q@q0%ZrDiks!+c(are:B*!J?"'JHULQIsleFHl[Q]H[C'aH?a[X
+F`heIEc?8IEIV\9BP2'uF*)\OrcS<dG5cUaG5cX`G5cUfG'A+QFa!b.rHA3b!d8d3r-8-br-86c
+!I/hbFoZaaG5?@]F9HZ,F)c4!ErL(YErC(XEqaYRErC(WFS^(SFT6C^FSg.WFT-=_FE;O&D[L>t
+CM7Ht@UrqZ@fB7/:f:4i;H*Kk!)`Vks&&\ls&&eos%rbor_`Ykr_`\lr)*Jj!`;`hr)!Ais%r_k
+$r0Vq:Jaha:esk`:eq!c!)WYjs%Wns:/4MX9M%fH6Tk=$rJ(9+qM+s(reLQ0reUN0oSWO&qhk?1
+o8N4!pQ#64q2Y93rfI#>rf[/B'9J*)H#RS8C1r*RF)G`-CN=ubL])o*FT6L`G5ZXbGlN'fHN/<l
+I/SHpIXckHJ.$p[JqJ]/KnY89LPYqdAVuD)N/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5i
+WiE,%Xfen4ZEppG[^WcW]"G\i^VI\&_o9U8aN;TJbg"GZdF$Fme^i@)g"P3:h;7)JiT&tZjlYai
+l07L!m-O0>mgJXTo()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$]DmB~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:g%gr_rktr)E\r!`rE'r`B,"r`AttoMtih
+8'oT-c-4ARaN2E@`P]R0^q[Us]Xt_b\@/iQZa-j?YH=q.WiE"qVPU)`U7n6OSt.c+5s@Cn4ZYV`
+2`EQN5X@Y!5u(6T<;oep;u0Dl;[$-!;c6Llpeq&h!*&Pgq,7,fs&/Vhmnss#<)cdq<AQg$4ZYVa
+3B&iS2)I*E0J>-Z/H[^_0f/ec))F-,1,1R@4?Yej4utr"8kMZG84Q0@84H)J7K,[\6UX:/77BR.
+5lO%_5<qIu5<q@h4u5f-9i+V_:f("fqbdMn;GpHm;?0Yn;Z0Po;Z0Po<;]Yr<)lrs;ufkr;Z'Jn
+;?9]or`&hp"]SE!;,L0f:]F8r:Jah_:/=^c;>O/l;,U9f;#X;n;G^3h;?'Jg:]+)V;ZBZ3;Gg7e
+;,C(b:Jt(f;GpLo8kVcL6p!Fkq)SL;r]C6F4?WU)!BN=A4T@PE55dSD55d_F4odhE56!eG4psS=
+5!;(n4Ztnj4Zr^-"[,%85X7[85QjA;6:!p:5S-.F5=%Ls5!D+p5!M+i3]&Mg;Z9Sp<;T_r=8Z1t
+<rlE+r)i>hs&f8%rE/qus&f8'qcN\trE/_qr`Ju!r*&u#oih>t'NeF;:JX\Y9hnSh:JOVY9MJJa
+;c*HkrcJ0_s*"?bs*4QhrHeKj!.=`n!e,WKrdYB-JqAW-KS>,7L51TaM.MR&N/WaVO,oBbP*;,q
+Q'Rc(R@9V7SXuFFTqS3VUnsueW2ckuXf\b1Yd1UB[C3QS\[oGd^;%J"_Sa@3a2lBFbKS5VcdC.h
+eCE.%f\,!5h;-rGi8N_VjQ5Oekiq?slg4!+rpL6anac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#
+s1A;]~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$3\Xf\c*XTGZ/Z2Cm<Za-j@Yck75Xf\\*
+Wi2ejrhBXkTqS-PTDkG^SHPFNR[KQAQU-q&Q'B8+_SX.(^V.:l]",>Z[^EHJZ*:F7XfR\KWMcYj
+UnaZXTV%gHS"#kCV4sTPR$<VkN/<@SCQ>crH@LU-qMtQ7rf$]3s,?c5rf6T2s,d5B!g8b2r06f<
+!1*#;%?k+hS=#V.OHPT`M1pZ_J.d0UG^"C^J:W9'It30)KS,#3K`5Ep?t!E<Za6sDYd(L<YH4h*
+XK/A#VZ*CkUB70bU&L_bSd:mVR[KG-R^e7SG7&A6IY3N8M2I.GL\uu*M#`G3M#`A'M>iA;Mi<XU
+NfT3]rJg`6re^c6MM_=gre^Z2!JuX1LBiNdKS+l-JV*iOr.+fur.=s$rdkB+JqSf0KS5'YKE$N'
+KDpQ'KDL8uKDgH*K7nr5r.k3)s+gW/(5IQjH?sj]G]n1GDJX31?<piA?=$uGr*KD/r*98+rEKD0
+>[753r*9/(s&oe8>?b?:>$+p0=]nr+>6%k+=TDY)>6.o3r`]5&"'AQ(<rQ5$=8Z&'<)umm:.UqH
+rLWeV"JDH_TqVCWpS%8S!2K=bs/#^l!2o^kqksInk,S<ZpT+FuXKDE'+L&,VZEppF[C*HOZ`Kmd
+K6h]`FEr\9J:)QdH^(,+WiZ3&s)e9`s*"?bs*4QhrH\NlI!kpAs*artrdb$"!.t3&F+f7%L51P?
+M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(O@[C3NR\[oDc]t_=u
+_Sa=2`lH0BbKJ/Ucd:(feC<($f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nc&([oCW%T!quB_
+rV6Egs8)Zjrqu`no_sFAJcE@^J,~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$0[Mi7Omrf-o;rK$l9$B0n$MM[1GL5(D9
+rIk3'qgnj"JGt&uJGt&tIQYTf_SX.(^V.:l]",>Z[^EHJZ*:F7XfQkrWMcYjUnaZXTV%gHS"#jp
+H['aVEc,Z-BP1mo?#kaNCiOOqH2i3iHN8B]H2MpdH1#t[H[L56IJJ?hII_h/:Ngi#E,fc5Chm]p
+A78kS?!^`;>%1rN@q9%Y@q&tYrabq,"B9f)LPGe^s+CT/JqAQ)J:RWJs*P`5I!^3dH$Oa]G]n4Q
+FE;JCM/m?FC1h7"F*.D,s*4Nd!I&_`FoHR`FoHRaFT?UaGQ)d`GPl^^H22[bGPlXaGQ)adGBWe)
+"E\^,EcM%us)J$Yr,_mYs)S0\q/cLTrH%mYqfDFPrGr!]Fo?F\F8p@^F8p=^DuOV`Ch[ZuARf4\
+A5Z9%:fI0fs&&\ls&&\ls&&bn!`;inr_`\lr_`\lr)*Jj#uOMp:Janb:f1*h;#a<":/=\^:esna
+:JXe`:B"#h;#O/j:/Cja#Ye&f8Ou?;Kn]J[reL<(rJ1E/!/LN/re^6(r/(9-rJU9+nr<F)r/LT6
+pQ,<8qiUoAplcDQM1BVbChd["G(jpRC2.U3J;],8re1;ns)n?brHJ9ds*=Qh!df<BrdFfq!.Xuu
+s+(0%re#9FKnb>;LPUeDMMmFPNK0'\OHG]hPEhE!Q^F//S"#q=StD[LU8+N\VPgAlWiN5'Y-5(7
+Za7'J[^`lZ]=bhl^VRe)`5Ta:aN;WKc-FY^dF-Oof%8O,g=tE=hV[8MioB(\k2tjjl0@U$m-X60
+n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVcBfJcC<$]DmB~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$-Z<W5tt<W,ns<W6%u<s2Q(<``B"<rZ/"
+<qfVm<!#ut<;oes<)`co.E06B_SO"%]tCtg\[])V[Bm3EYck43XAVrqVl-AeUS=HTT:VUCS!lM>
+4qKe93B/rS2)I?[4[DV6;c?Zo;Z9Vn;YF&b;Z9Vo<:j,`;Z9Pl;?9Wmr)!Jm;t*Zb;uT`%2*O,b
+3]]8^2uY]Y2)@!A/MJe//MT":1GgmE1c7*F1G^mO4?Pej3_)b68P/nP!_5dPrC.2a6pj@26pj@1
+77'1%r]q)[5X7Ou5VbPn:/Oe`:/Xqer_r2^r_reorDN\qr)<Vpr`'&"<E)rs;?0\m;uK\p;u]f(
+;c6Ii:esk`:Japf;#X5j;#X>l;?0Sn;?Kip;Gm9es%rkr;,L0h;#jGf:BOEj;,[BjnPTEe;H!Hl
+!)`\k$VsMn:esna;c?Rn;uTAl8O>L"48Lu<48q>D4Zkk+3rqB(rB(-E5!Am-!'^<Fs$$HIr'(*C
+rBC6Es$$BE!B`OE4paA;5X.S$5<qM!r^$NKs$$QM5=#02#sga>5WUka1f@6N;ZKep<rZ7u=Su7s
+=R92j=T2D$=Sc,!=T2J$=SZ,!=S>nq=Sl7t>5_S)=BY<#s&o>)'NeF;:JX\Z92A;Z:Jab]9hnVd
+<)EQls)e9`s*"?bs*4QhrH\NlI!kpAs*artrdb$"!.t3&F+f7%L51P?M2@+JN/WaVO,oBbP*2#o
+Q'Rc(R$sM6S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(O@[C3NR\[oDc]t_=u_Sa=2`lH0BbKJ/Ucd:(f
+eC<($f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`no_sFA
+JcE@^J,~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!:Tif!j8c4qQ^[;Yct:5Xf\\+Wi;nl
+U8+KXrh0CdT:c+S"J)'PR[O/Bs-NbOq3ClBp65H<,F+.#VPL#^TqJ$LSXc1<R$a53Ssbk+NJ`OK
+PA5,fS:#[8MtrD4NW+k;NK!ams,?c5rf7#>rf6f8rfI,A!KrZEPhqZR?(IORQ^!SoO,]!LK7SW'
+I!U$^FanplJV/Q+KS>&3LP1@i@U`bS@/dJMZEpd?ZEUL5XfAD%Wi;hiUnjc\U8+HVTV2:Us-jFb
+Jt]rEGB\4RI>!E8repf6!/^N-rJCQ3!f;elnqm=&s,7#=O,j4#!07&<r/CW4"Gr"mLku"ds+g]4
+M#E)3L4t;6KDgE#Jc1,uJc13#KE$N0K7\`.KnP,5KnTAVrIk3'qLnd!!/1?*re(9*q1es)r.b?.
+LPPk`'Rb@UH?aXVF`)&4CiWfe>[C`E?XN_;!+#J,!*fA+!F8t.>Q%h)>Q7n)>6\85=]eg0>5VS)
+>5_V'>PhV'=oVS*<E<0"=92K(r`'2&<Dumq:JFFZT(no\TVA0SU&:SXU%Y5\U\LVbV>[7kVu*@h
+VZE`qjf86ZoW/%prN6I1Yd(L>Za@*I[JdNJXf7nTIWp!XFaT%AI<fs]J=W:4X8T1(FEM_LG5ZXb
+GQ<$fHN/<lI/SHpIXckHJ,t4Qrdt6)L&QgKLPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+U8+N[VPg>kWiN5'Y-5(7ZEppH[^WfX]=bhk^VI_'`5T^9aN;TJbg+M\dF-Lne^i@)g=k<;h;7)J
+iT&tZjlYail07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s185\~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!UksFN;eh:Nr>"=Nr=q;N;e_<MM[.E
+LAlo*KE-Z%JcUFQrI=itrdXfoqgJ<gpj43&AlY_(UnXQUT:VUDS!o_3QZdLmDJj3&AnGpcA8H[0
+E,tl%!.+Wks*F?`s*4Ngr-83ds*FZiq0E$fr-ABjI.Vj`If"QbIM>P#F`MJ@DJa6*BOkU^@:*>I
+>Zk2.@L?XUA7K.[@q'"[Ac5X/<<%^RLAlo+KHu/%JqAN'It)oqI!g?iI!^0bH?ja[GBS.OBR#A\
+C2.EsE--4!H2i-hG5c^_Fo6F_FoHRaFT?UaGQ2jdG5umeGQ)gfH$K12q02m`rHA-`"*Sm4G56:[
+F9$C[ErU.ZErU1dEcZ;BEcZ;BEr'kUErC(WFSg.UFT6LYF9$I^FT6F^F9H`.F*)R(FqAV2DJa3*
+C1q0f@q9+I;,C3d;ZBVl;?0Sk;?0Sn;ZBSo;Z9Pn;#X>k;#O8k:^']m:JXear_WVls%r_k"\qii
+:esmd:^9cm:ejb]:Jh!c$VjJn:/4MX9M%cG6N)Z<L\cc'L]</1L]3,.M=ZW'M><&.Mt2huNVJP2
+NVnh0O8k=>OoLU<P8'+<L44,ZChd^(G(jmPC27a;J;AsYKEQC>F`qs,GQ2mfH2W'hHN8HlI0+kI
+J,Xs!JV*lR!JH1+L3/3,M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8*TUnjlcVl?\sXKAY/
+Yd(L?['mEP\[f>b]tV7s_SX71`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'
+mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!:Tnds&K%ts&K"u#$4i+<E3+%r`0)#
+<`]3"!*8hor`&nrs&AnpoMYN_q,/Cf.4_9kUnXQUT:VUDS!o_3QT[Dk3]K#U1c%3X77KgD;,d?i
+r_iepr)3SppJ^odr_reqpJV,m;cE?e!)`\m!`;inrDE#]s&0>*1d4#a3]T2]2`3KNr\F^3/hen0
+/cIL*1]B622?#E31^-$)4?bhgr_!2^r^d&Z!(d&X,Xk*g6UX7-770L15!VA!5sRY"5;bVh7o)lV
+9iP%i;H$Oo;cE3as&8qqr_reopJV&krDa&$<E3!s;H!<hrD`eqrDWnt;,L.cr_WVls%r\js%r\l
+s&/ko"]A8t;,U9f:]XEkqbdAiq+h2k;,L4h;,R0frDWYms&8qqr)<Sl"&Mcg:]4*#;,:%d;c6Rp
+8kquO6omCiq`=a=r]C3E4T.>A3rD,?55mYF4[/g/s$$EHrBC3Dr&uYp5!D+m4?Yhi5!M4p5=%M"
+5sIV"5=%V%5<hCu5<qFu5<_=r5X%=r3]T5Xr_iesr)Wi!r)ihtqH3)e!*K2$r`K"us&f8'rE/ht
+s&ettqcNc!q-!c$rE'&&qcWu&pKIQ!&QVh-:/+GU9i+ba:/+JV;H$]q;?V)aF`qs,GQ2mfH2W'h
+HN8HlI0+kIJ,Xs!JV*lR!JH1+L3/3,M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8*TUnjlc
+Vl?\sXKAY/Yd(L?['mEP\[f>b]tV7s_SX71`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bi8ESSj5f=a
+kNM0plKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpTff!j8`3riu^4ZEga>YPt[3XfSV)
+WMcSfU8+L^U&UbaT)YA]S,o(Hrg<\Os-EPIr06o=rK8FrMh..JLngZ;T:VUDS!ob4Q^3o)P`Cf_
+M2@F]F+Tg(H@^s5pl>62!0$c4!0$]4q2Y93rfI/Bs,mAGr060*(L:@<S=,b/Octf`LkCA3JU`,o
+G^+F^JGt*,K7no4Knb;7@UWaF@/tZRZi@<9Yd(I;Y,nb+ri-:'Unj`\USFQZT`1YbSdh6[S$ScU
+TQtj0GCY=(rf$i7s,-i5qM>*,r/(N3MY)c)M?AcqNK3pt!07#;rf$l8rJLK/reUT2rJ1E,s+CB)
+rIY$"r.+fu!J5t'K)^H'K)UB)KS>,5re:<(s+C<(re($"rdt3(qM"a#!/CH-!JlL0L])r>KnOl$
+H?j^TF)>c.DMMM&>[IA9rEfJ/oj%E!rET8)r`TJ1>?b?:=oMM)=^##->6%k*=oV_*=o_e+>5h\)
+=9)G%<rQ21<E<+"<)lms=&;[bSt>_L"JDK`TqVCWpn@ATs.fCcs/#[k!2oalr29Rnjf89[nuMhn
+rN7ELYd(L>Za@*I[^NTO[^W`JVO`ZnG]n4PR%9@fH$=RkTr4unrN?0C!-\<bs*4QhrH\NlI!kpA
+s*artrdb$"GCkI"KS5&6L51S@M2@+JN/WaVO,oBbP*;,qQ'Rc(R@9V7SXuFFTqS3VUnsueW2cku
+Xf\e2Yd1UB[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5VcdC.geC<($f\,!5gtgiEi8N\Uj5oFckNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcE=]J,~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpTfErf-r<"-8J'Nr+h8MZelmLPCQ_
+L&H]%K)^B%JGt&tJH(,rIf"QhI//+6F(Sft@qDF/Tq@pIS=>t8R$X,(F)Gc0BP1ppE+*R/CN"6:
+r-A<grd4ZkpNca_rd"Bcq0DUYs*F`nomQXbr-e6es%aAQF`VPADf9H,BObO]@:3GI>?P-=@fBj;
+Abos8<<lH6LPLV<KnfS[-%^c$Jq/B$IsufnI!pBiH[9saH$FRXG'8C^Edqk?C2@s4H$Xf6Gm8M;
+GBS1SG5HF[FoZ[aG5cX[G63#5GPudaH2i3iH2DgdGPu^`G5ugbGPQC]F9$C\EWU<&EW0tbF)l;B
+F)l;BF)q/!s)e3[s)e9^s)e'XqK2^ZrcJ-^s)\6`rH/'\s)e9`"*8R,FoHOcF`_g+D[^JuC27?i
+A7T^X:f10e;ZBVo;?0Si;Z9Pn;ZBSo;Z9Pm;#aDl;#F2i;#a>h;#aDm;#O2i:^g,r:Jjqa:Jae]
+:JXgc:Cg2r:JOYZ9h\8Q7m_rbLPP\[r.k0*rJC0(rJC?-rep<*oSrX+qi1Q7oT0!5rK7)BoTKrN
+MM6CqChmd"IXZT\Chmd-J;/gVK`?/pG5ZXbGlN'fH3/G@I/\QoIK4lsJH(1EJqJ]/KS>/8LPUbC
+M2I4MN/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5iWiE,%Xfnt5ZEppG[^WcW]"G\i^VI\&
+_o0O6aN2NIbg"GZdF$CleCN7(g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0iqY^6ir;HTdrdk*#s185\~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpKhdr`/qss&B)#<W6%u<<6-%rDir!
+<rQ,!<qo\n<<#ks<;KPe;YX,h;?0Sn;BdY@-o*>*US4BRSt2C@R[KP0QBaKk3&``P1HIQ`77U0O
+;u'>g;uTbi;uT\l;uTbf;s[E^;=7?^1^?3,4?GSa3]I$q%5Tgs0J>(3/hJh61Ggre2?,K61Go%m
+#<k158P2TH8cD9[8,Ym]779L26pj<?6lJ?T5sRY#5<hCk4u>l/:/=V_:f:4j;H$Oo;t*]b;ZK_p
+;uT\f;u0Jt<)Z[n<)ico!E<(p<!?2u;Gg:fr)*Jjr_NJis&',":f1(g;Gg=hqbR;j;Yj5j;#=#m
+:esk`;,L6j;>X8h;uT\p;uT\n;[-,s;,C(a:\mlh:Jjse;@$;r8kViI3]];!3r_;@49@Z.4T.A>
+497T/rB('DrBL9Fs$-HGr]U3D!^/_2r]L]Q4Ztnk5<_7q5X.P$5Q*h`6:!k$5sRY"5<qFr5X.Lu
+5!M7l3&=N6r)Nf!qcNbtq,m#es&f8%rE/nt!*K2&r`Jqur`JntqcNf"pK@Q"rE'&&rEB2'pKIQ!
+'3\L>:JX_Z:/+_g:Jak^9M\Vd<;]YoFT?U`GQ2pfH2W$jH[L5?IK+`rJ,XuuJTl]uK7no3L5(J>
+Ll$tGMi<USNfT6_OckomQ'IZ%R$jD4S"6.BT:qsQUnjibVl6VqX0&M-YctF>['d?O\@K2`]Y;.r
+_8=+.`Q$!?b0/#RcHjncdaZdtf@\d1gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSriH:*Yd(M5Ylh;:Z*4/0s/cI+
+X/`+qU\pkcT`CbaSckUSS=>rFR/N?OQMd$GPkL==OsQ3DR>lljStVgKSt):>R@'>,Q'@JqNJ`UL
+M3Dk&ST]=0M2[FRpl>62!0$f5s,?c5pl>02s,d5B!KrZDPlI$KQKOMW?<j%mR[BD'P)kQYLOt&,
+IscWfG'8IhJUi<'KS+o2KnP-Y@fBd9VuF%&Z3RY?Z*:C4XfMH$+K205U84QYU8+BUTqS*NSsu7[
+MKX8hG^P$tO,f3YNK*pr$&a[uM2@%EM26udM>2u%M>rJ4MZJcrqN(T7rf$i7s,-Z0s+pZ2reLN.
+!JQ4+K*?jZJqAQ)rIFlurdtK.K7ec-K7nr5re:?+r.G-*KS9>WoS!6ure:H-LAH`)L]</1L]3)0
+L])u-Kc#PuI=-?dG]e7MChmp.Dd6UU?sd8I?<pn9?1qP$>Q%h)>Q.e6>[(E;>?Y-3=BSg2rEK;*
+r`KD/>Zt?8>Q.h*=TV].=T2A#=92E'rDiks"'8>q:&1CaTV8*SU&1MXU%P,[U\LYbV>d=lVu*@h
+VZE`qjf89[o;qtorN6C/Yd(L?Za@+;[JmW7[hPs@SV_]=F`r%dTS7c<GC,XOY,eN"XoWZgrHJ9d
+s*=Tis*Ocnrd=isIt.HJ!J,k%K)pXZre>NMLl$tGMi<USNfT6_OcklkQ'IZ%R$a>3S"-(AT:hmP
+USO``Vl6SpX0&M,YctC=ZaI6N\@K2_]Y2(p_8=+.`Q#s>aihlPcHjkbdaQ^rf%8R.g=tH>hVd>N
+j5]4^k3(sml0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$])R9~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSrf$i9rJgl=qi(i>Mi3ILLPCQ^
+L&Qc*KDgE%JH16!J,XutJ,OinIJ8-cHQm36E+`^(G+kS#St):>R@'>,Q'@JqC1h0jAoD*jHYRA:
+Gku^cHN&9kHMVpaGlE!dGkcRVH3&A?q0i9lrdFWlr-e9f(/IYJG&qYCDf0E,BOtX]@:3DJ>?P-?
+r*p7J@q0%ZARneA<E<*uJ;8pZK`[!^K`6TIJV&H'J:E#rI!g?iI!^3dH$OXZGB\+`F)#N*C2S*8
+H?oI8r-89er-/0arH7jXs)e<bqKMd\r-A<grH\9br-&$_!-\<bqK;dZ!-A-[s)\-Zs)S0\rc8Wk
+F)uABF)uGFF)uGEEcQ5BrcAHhFE;JCF*)MFF89qXFo?F\FoQXaFTur/F*)PIFT-F]G5l[sFEM_F
+E,KQ0C2RWoA7K.Z;,d?i"&Vrn;>*oe;?'Po;#jMn;>sDl;>sDi;?'Go;,:!c;#aDm;#X6%:/Fb_
+:f("c:JXe_:/=\^;#X8j:('im:/+GV9h@iFLPP_\qhP**rJC-'rJC?-rep<*oSrX+qi1Q7ooK*6
+r/q#BnWOZLMM-.kChmd%G(k!UC27X4Jr#58rIb2oG5ZXbGlN'gHN/?lI/\NqIXckHJ,t4Qrdt6)
+L&QgKLPUeDMMmFPNK0'\OHG]hPEhE!Q^F//S"#q>StD[LU8+N\VPgAlWiN8(Y->.8Za7'J\%&u[
+]=bhl^VRe)`5Ta:aN;WKc-FY^dF-Lne^i@)g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9o()DD
+o`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s185\~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSr`/qsrD`o"<EB*!!*B,"r)N\r
+q,RDn!E2nn;u]hj;Y![,;Ca.O/hK+DTqJ!KS=?"9R$X,(P`q7h2`!6H3^cD-r_NSnpepufr`&\l
+!*&bmqc*2doMY]fqbmDjn59cQ1d4&c4$#A_2`<NO1,Lcc0EWpZ/Md8\"#Mkl2>o?;4?Yej4uu/(
+9)_E]8H)-X7K>mT6j5qE6pj7)r]gu[5X7+i7o*#W:estf<)Z]l;tNrf;>jAo;c6Nm;uT\f;u'Dr
+<)QXo<;fbh<;oet;Gg9g;#jGl:B45i;?'Po:]jQm;c3Nlqb[;jqG@5hrD*bs:Jah`;,L4h;,R0f
+rDW\n!E2to;[$&r;,C(bpJClc!`2`kr_j&&9hJ&M:..,>3r_;A4T@PE4T%;=49.SD49.SD5Q3kH
+5Q3hK5<_4nrB:9G5!Js/"$A_04T%DB5QF.M5Sl^O6:!n%5sRY"5<qFr5!M4q5!M=o3B@"<!*B/%
+!EiP%=8H%c=oVV'=8c7u=8uD$=oVUu=oVUt=o2>"=nl2#=oMP'=oV\'=nc)"=oDG:=]e^":eaVY
+9hnY^:ea_[:/k1k:]4/lFa!_-s*4Qhrd+Tks*Xfo!e,WKrdY$#K)UB'KSBD[FGG[/M2I4MN/`jY
+O-#KeP*;/rQC!u+R[]e:St;RITq\<XV5C/hWN*#$Xfen4Z*UdE[^WcW]">Vg^V@V%_o0O6a2lBG
+bK\>Yd*^:jeCE.%f\5'6h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Wi
+rqu`no_sFAJcE=]J,~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0sYmB*LnY-@i/!j])8riZ:'"g"c)
+W2HHgUApnfTV)1SrgWtWr0[JM!1*PJ!L/lJPl?mHPl$[COs6*DP`LZRTU;%*St2@?R@'A-Q'@Jq
+OcYW\LluV!N-'DuLAm/3NVJP2NVSJ4N;eh:N;eh3NW>.>NrG+=OT(@CP*>g.rg!JKo9K?AqN_(c
+*1`UfQBdPnO,f*OK7JH#I<p-\Fb#$pJV&Q.K7s5X!/1>\s'ZCF['R'EZa-jAZ*:F6XK2?#)5sF-
+U84QYUnOHUTV8!MJWHmuG^F^`JqK']O8b.>NW+n9Mu8G3M#E2*MY;l,MZ/P6Mu\n9Nrb?'rJgf8
+repc5qhb?/s,$c3reCQ0KnT>U!J5n$JGt*"K):0&JqJ`1q1eg#s+UH)re19)qh4s&rIt<-q2#'+
+r.tB0!/UW0q1]W6I<p3bG'.b@Ci=?!?!^oH?X@&E?N"1'>l7h(>l@n+=pnS>>?kB9=BSa/=^(f/
+!a8f3r`KD.>[(E9>Q.h*=TV].=T2A#=:8/2<E<.#<)cps:JCYX"JDH_U7qIWq4[JUs.f@bs/#^l
+!2o^kr20RoWTC/ZX8AsuXnf'uXo5C+YHY:;Za9Y<"1>MD[JmW6[hZ3MSsb1VG]e4fPb`bUH$Fe/
+Tt.5)rN6-DrHJ9ds*=Tis*F`nrI"]qJ,XuuJI-p\K7no3L5(J>reYcTMi<USNfT9aP*2#nQ'I]'
+R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['mEQ\[f>b]tV7s_8=+/`Q-'Ab0/#RcHjnce'umu
+f@\d1gYCWAhr*JQj5]7`k3(sml0I^&mI'H3nF5u=o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13\
+s*t~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0jVm>R#%NW"n;N=1])NJrgSMM[.E
+L5,\]re19'rIY$"rdXlss*surrd=cqrI+Zms*ainqg0Q(@VogjAp/-3C7^ucS!fY2QBd\uP*(ie
+An>jdB5qU%EclX&H2i3iHN8BiH2)X`H2Mp^GlW0iH2)[dH[PX;rdOlqqgSHkpO4Vf9m1Z"EH,l5
+D/3ir@preQ?X6l=>%;&Q@qB.\@q9(ZAS"kB<E<'tLkgcaL&Zi*K+*<_JUr?$IXQTlI=-GAH4G1F
+G^3b;JU;*ICMe*5GkuaaH2i-eGQ2jbFng.[FT?U\GPZR_H2`-gH2MmiGBS1RG5-:]G5HF^FT6F^
+ErU4YEWU<&Er0nXErL.YF9?T)Ec_/#"Eeg,Ec^nqs)n9^r,i!_rH8'\rcS3`!-eBbrcS3`s)8<`
+DJa-+@q9+]A5N,#"&Vrn;>*oe;>sGo;,[?is%r_mr_WMis%ikr:esk`;>sAl;>sDl:Cp8s:esna
+;,C%a:esh^:espd:B=3dr_<Vk:/"5N8,@u<L]</1M>i>0M=ZW(M>2u.Msu\uNVAJ1NW+t8NrY:=
+O8b7>OoLU4P7s"4JobjHC28!>KQ1jFCM\NQN/%7`!-\<bs*4Qhrd+Tk!.=`n!IfOtJH(0,JqJ]/
+KS>/8LPYqdFc)*9N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppH[^`lY
+]=bhk^VI\&_o9U8aN;TJbg"GZdF$FmeCN7(g"P39h;7&IiSrnXjlY^gkiq?tm-O--n*fc8nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s1//[~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0jVm8[0a<;okt<rH%u=8l7t<W6%o
+<W5qu;c<Kk!E<"p;?0Yo;Z9Pn;YO$5.jm,*/2fFF2)1\nS"#h5R$O#%PEM&iO#&UR5t"4:;,U=k
+pJUler`&eorD`Skqc*2doMYZerDNPjo25]I1d4&br]1QM2`<TP1c-p@1,(=4/i#3]2#fE61cG=i
+#r=\,4?bnh8P)PR8cM?]7fc.NrC-cUr'UTR6:Cf='0e`H5qP2^7nurY:fC4g;H$On;YsDm;?0Yj
+;ZBVn;ZB\q;ZB\p;Y<ug<;ff"<)lpt;uTbp;u]eu;cH]m<<#l!<)Z[mr)!Gjr_NJis&'%u:f("e
+;GmEk!)`\k!Dubj;#jGk:BaQl:esnbp/:fes&&ns<)i]ms&&hoqb[8hqb[;g%8]qu;G^7k92%uM
+9fY633r_;A4T@PE4T%;=497W/r]CKN5<h=q5<_7q5Q3kH5Q3hC55m_F49@Z.4oIPU5<qG"5sR\$
+5XIb&5=%P!5lO"J4pXA:5s@Lu3]T2!<rH,$=]kT'q,lud!*K2$r`K"us&f8'r`Jnts&ettqcNi#
+qcWu(r`]>)r`JqupK@Q"rE'8*=]e^):/Cj`#Z4Ds:es\W9N(jg!)WVl!-\<bs*4Qhrd+Tk!.=`n
+!IfOtJH(0,JqJ]/KS>/8LPYqdFc)*9N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'
+Y-5(7ZEppH[^`lY]=bhk^VI\&_o9U8aN;TJbg"GZdF$FmeCN7(g"P39h;7&IiSrnXjlY^gkiq?t
+m-O--n*fc8nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0sYmHs8BY-7],!O/d,Xp2#0XK&7t
+V>?ngTqJ'NrLO+^S=5lER/N?OQMm'KPl?sHPQI&5Pl$[COsHHTK9V%FTUV:-LQ.:_R[BJ.Q'IPr
+OcYWaNKS7&Kop_3KT(lgNVAJ3NW4t6Mu&D3NVeb9NVeb9O8b7@OoLREPPg[FQ2R$@Q2[*IPr;lO
+St2::P`_)hNJ<7CJqAH"H?jXVK7JN(JqSi1KnbA:Kk"S$?t+AeZEpjCZE^^?Yck11X8]+"W2BNg
+"JVZbU8%X[$(7*oR!F+,H\%%QNr>"CNfT3[NK0"tN!5)qMM[1Gqhb3-!K2j0M>rJ4MZJcrr/^l>
+!0@,=r/:W6rJLK/"c/"mM26udLB<3`K`-Q'JcLB$J-:FTJUrFPKE$W)K*$^\L\cc)L&Zi+K`Zp[
+KDgK%L&H])L&Zo+L\Zc+L\uu-M#rKgL\ZZ9LPUe;I!U*`F`;27CiGD??N+@3?N+42>[@&.qcj#(
+r*02)r*'A/=BSa/=^(f/r`];(!a8f4qc`r$s&f8$r`B;)<`N.#r_ru#=AVckTDtVbU&^naT_Y;S
+UAq"aV#R:iV?!OlVYd7kWT:)YX8T.!Xnf'uXo5C+YHbC=Za9S:!4Dd6rjVp;'s=I*OaVP!G'grn
+OaVP"HAJ8gZDt#)Y5NSEGlN'gHN/<lI/\QoIK4lsJ,t4Qrdt6)L&QgFLPUeDMMmFPNK0'\OHG]i
+Pa.N"Q^F20S"#t?StMdNU84T]Vl-JnWiW>)YHY:;Za@-K\%&u[]Y(tn^qmn*`5Ta;aND]Lc-FY^
+dF-Lne^rF*g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"Lbp@n=[p]1-hqY^6ir;HTd
+rdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0mWmHs8!r/L]9rf%8DNK&mTMi!7F
+L5,\]re16&rIY'#!.b&urdautrdOiprdOfo!doEEqgA?h,]I@)Ch%%#FDkl(Bkj-+R$a2)Q'7An
+OH5E]DHULfHu!\CG^0"/s*F]ls*FZimWe>KqKi0g!.=WkrI+`pqL8BkpjNWH9m1Z#Ec>o6ChmZp
+raQ.>?<pf=>%IJ>s()+?%TQP0<E!C_L51J:L4t;6rdt6&K)U<;IsufnI=6KjH?sp_H$O@NML0)T
+CN+?:rd"?dqKW'crHJ9br,qm["F#$3Fa!V*qKVp`s*FWhrHJNlG^"=TG'<Y)s*"9^!-J0\!ci@'
+rc8$[s)S'Zs)e3\r,`BhEcQ8DF`__JFE;JDF7s_TFoHL\FT?U[FnU"YFo?L`G6W&+DJj<,C&MQB
+HhgPA;,U7gqGI;jr_ibnr_iVjs%r\lr_WSkr_Nbq:esk`;>O,h:D$>t:f'qa;,C(b:f'n^:JXe`
+r_EPi:]=)m9hnAX84`]6qhP3-!f;_hrJC*&s,$N.s,6B*oSrU*qi1T8rK$r>r/^i=rK7)BrK@5G
+oTT<<'p4H/HuNt>CM]AgH>dV7CN=uXMhQl`K`-,pGlN'gHN/<lI/\QoIK4lsJ,t4Qrdt6)L&QgF
+LPUeDMMmFPNK0'\OHG]iPa.N"Q^F20S"#t?StMdNU84T]Vl-JnWiW>)YHY:;Za@-K\%&u[]Y(tn
+^qmn*`5Ta;aND]Lc-FY^dF-Lne^rF*g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"Lb
+p@n=[p]1-hqY^6ir;HTdrdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0mWmHs7?r)EMm!EN;$<r5nr<qfVo
+;ufkr;Z0Po<<#nq;Z9Vn;?B]n;YO$9/LW&%.kWkA2)6g?1n0r$R$O#&PEM&iO,f2[/42g":Jane
+;cH[oq,7)g!*&kpqc*Aiqc*2doht`erDNVlo2>TEs#h#X4$#D_2`<TQ1c$m@0eb74/i5?]1_)B"
+1c7*H4$>\h4[)G/9)_E^8-;@Q84WVJ"@Y^I6q%#A&4AfL5sIV"/j;Hh:Jak`;c<Tl"B&/s;H!Bj
+s&/kq"&`&q;uKVn;?'Mo;uT\p;u]bf;u]hr<W?%u<<H3!<)ifpr`&kqqc!_t<)cdo;Z9Pn;?Kcm
+:Jh$fr_`ns:f1+g;>sJm;?'Go;,U<f;?'Jm:]F5n;,C(dp/:fer_`bq<;BGo;Gg<h;#X>h;#X8j
+:^g3!;,U:k;bK_U8PD/B3rV5@49@Z.4T.A>497T/r]C6F5!Ss/r]gBG"$\t44o.AB4o@DE5!M4p
+r]gEKrBLHO5s[a55lNtT5!V:s5!D4q3BC4?=T;M(=Su7s=R92j=T2D#=Sc)!=T)D&=S>kt=S5ho
+=T2J%>5hb*>5qb)=T)D%=9)Lu>5qb*=T2D%<rZ>:=&_si9hnDk<)6:b9h\>^;cH[lrDNT<s*4Qh
+rd+Tk!.=cos*artrdY$#K)UB'KSBD[Dhj.*M2I4MN/`jYO-#KePE_>tQC!u,R[]e;St;UKTq\?Y
+V5L5iWiE/&Xfnt6ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbK\>Yd*^:jeCE1&f\5'6h;-rGi8N_V
+jQ5Oekiq?slg4!*mdKW6nc&([oCW%T!quB_rV-BgrqcQirqu`no_sFAJcE:\J,~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdP!O&a(Ym[e>Y-+n.XK/A"
+V5*p^"JMK]T:c+Ss.'.ZrgEbQrKdMMrg!MJrg!>EqNLrB,b0jIP_b$bS=>XsN/Wb!R@'>+Q'7Ao
+OH5E]N.0I/TR2*>NK!aopQ#64rf$c5pl,33rf6o9r/Uc;s,d5B!KrZDPlI$JQLpIAQN!-u>[(L*
+S=>e0OcYWbLkgV6IsuinGBJ([Jq&B'K7nl2L5(D9@q&qU@[I#!riu^4Yck42X8]+9WMcPdUSFQX
+Tq\6TT;/(#SU#U3ItW`BO8b1:O8Y(DNJrjUMi!=KreUW4rJCE/!K2j0M#`G4MuS_9NVeb;OH0="
+r/CZ6s,-T.",_qkM#E)0L4oMX!ec/WrIG3*K7SW,KS+pVKEHj]L55_^s+^`3KnY25re:B*!/(9(
+re1?,re16(r.k$&!/LQ0r/(E/q1em*'T.g$H['a[HZO(@BlK/>?XR8K?=*V:!aK#:p0@N""'f,:
+>l7h*=p8/8>?kB8r`B2(>5_\*>5_V(>PhV&=oVS+=&r@'r`Bb4<`N1"<)Zat:JROSTq\9TU&1MZ
+U%G)ZU\U_cV>d=lVu*@hVZE`qm&C&dqPsOqriH+$poFItr2p1,Z*L[ArNlX4['fnArO;g:(:h#Z
+UR['dH?OOaNhV/SH?X\"UoCDsr3$$Cs*+NhrH\NlI!kpAIsulsJ:N3%JqJ]/KS>/8LPUeDMMmCO
+NK0'\OHG]hPE_>uQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7'J[^`lZ]=bhl^VI_'`5Ta:
+aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjlY^gkiq?tm-O--n*fc8nc/.coCV\Jp%J+Rp\ssf
+q>^<hqu-HlrU^#>s+13\s*t~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdPr/LZ8$]U+(NJrdRMM[+C
+LAlo*K`6W'K)U<$JGt&uJ,t.MrdXrsrI+ZoqL/3fs*H#4B4>^hA9E!7Ch@BqC4_k@Q^*i"P*1of
+NfB!'WL\HQEHHJNp3?[bHi89jH0okKH22aeH[PX;rdOlqqgSNmq0j5X:/5tSFE);<D/4!%AR]+W
+?XI)C>$GKI@V#CH!+c(?rDa,$Fbb^,KnY88re1<(!J,k%JHp^SIXHQlI!km=$[?f<O*tb[D/j]B
+HMr-dHM_shH?jc5GQ2jbFo-=bGBS+OG56@ZGl)adHMr-fGQE)7nTXkQ!-ImT"`e[+FE;O&F96N*
+F8^4ZEs?`/FEDYJFT-=_FEMa&FT$@\FSp:YG5cXXG5cX`G5c^cGRJS3Df9N0Bk:daA:+/NrDESm
+!)`\ms&&eor_`\nqbd>hs&&blrDEMis%iDdr_EMhr(m_t:esk`:/4S\:f.-e!DZGi:B+#l9MJ)K
+L5,V]s+p]3s+pW1o8<R)pPT!/n;R"!pl>31rf6u=rfI&=rK.#@rf[5D!0m)=r/q_MKm7NPChn*:
+LN.3KCM\9KLPLT]K`62qGQ<$fH3/G@I/\PDIXcitJ:W9'K7ei1Knb>;Ll$tGMi3ORNfT6_Ocklk
+Pa.Q$R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2(p^r!t,`Q#s>ai_fNcHaea
+dF6Uqf%8R-g=tE=hV[8MioB(\k2tjjl07O#m-X60n*oi:s7-Heo^qhLp@e7TrqQNhs8)ZjrVZZn
+oDX=@JcE:\J,~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdPr)EPn!EN;#<r>ts<qfVo
+;ufkr;ZBZ";H$Ln<)Z`o;Z9Vk;YX*7/LW#%/1ik@2`*0C1c%OfR$X)'PEM)jO,f3Y.:5V9:/Y"i
+;uTbr;u0Da;u]eu<E)rm;uBVe;tNue;uKVl;>3ri2)@)g4oRJB3W:rL2)I*D0JP76/M8e71GgmE
+1c>1f#Wk.24Zl)'8P8tRs%!5^84Z8L7fGgj7RTU26ps=,5X@[h4[)D5:f1+h;Z'Dg;Z0Mo;Z9Sp
+;Z0Po;Z0Go;H$Nn;ZB\q;Y<uf<;ons;ufqs<;fbp<;ohj<<#nr;$9fq;G^3g;>sJm;?'Mo;>sJl
+;#jGl;YX,f;#X;l;"RZa;u]_r;cNQks&&hoqb[8hr)!AgrD3r#;G^4h;H-Rf92/#P3W2#;3rqH,
+r]L0Ar&b!C55dSM5!M7q5!;(n5<o-2!C&dI4o7GB4oIJD5!T$1s$-NL$p[*D5X@_&5X.M!5=#34
+!'^BI$9gU;5<1]*=BSa.rE&esn6#`nr`T8'r`B&#qcEf"r`T5&l<3scr`T5(r`f>)s&o>'r`T5&
+s&o)"s&f>(rE'#"s&B_8=B86p9hS,T;,g@e:/+GX<)crr;Z:n?GQ<$fH3/G@I/\PDIXcitJ:W9'
+K7ei1Knb>;Ll$tGMi3ORNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6M
+\@K2_]Y2(p^r!t,`Q#s>ai_fNcHaeadF6Uqf%8R-g=tE=hV[8MioB(\k2tjjl07O#m-X60n*oi:
+s7-Heo^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcE:\J,~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KKcs/u^2Xf\\*Wi2ej
+qkF+a!hc0Xrgs.\!M#YYRK&ZQQN3?MPlR'HQ2HmAP9c<PKp[mWTUqO6Mij![XKAV'QBd\tP*(fd
+NJq5gaI%0tJW,Q`NVJP4NW+n:MtN&/N<"q5NVnh8NrY:@OTCW/r072Grg*5BrK\:c?!LX*T:2(3
+OcYT^LkgY7JU`/qH$4@^rIPK3L4b59KnkFn@UieT[/@9/ZN%*0XfJN%WWK,sV#I.hUAghuU6h4j
+V0RH<Itj&LPECrfNfO!tr/Uc9s,-o8MuAP4M>E,0MZAY4M$/]mM2I2iMZSisNr4q@OH5B[NV\S8
+Mi*DfM>rJ5M$AcjL51P=K_pE%JcgRUJV3rR!/(0%",2JbL])r-L]3&*L&6Q'L&Zo-K`6Z/L51S@
+LPPMXre^T2s+pc4L]3&-LB<<iMYrA@LO=GnG^=1BDej9U?iFI5?N+43>[:Y/>l7h)>l7h*=p8/8
+>?kB9r`B2(>5_\)>5h\)>6.o3rE9D.=BSd/=]kZ(r`B\2=&r@%<)Ze!:esf[U7n:YT`(PaUAgkY
+U&^t`V#R:jV?!OkVYm=lW:?kfX8T'uX88jqX8]4"Xnf'uXo5C,YHY:;Za7%;ZN7G@rjMd7)S!>g
+]"5/IT:1@XG^+LrR%o1ZH?Xe-Ts1W!r3$'Ds*+Nhrd+Tks*Xfo!IfOtJ-LRVJqJ]/L&QgFLPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F20S"-%@StMdNUSO]_Vl-MoWiW>*YHY:;Za@-K\%0&]]Y(tn^qmn*
+`Poj<aND]Mc-FY^dF-Ooe^rF*g=k<;h;7)JiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0iqY^6ir;HTdrdk*#s1&)Z~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KWCrf-u<r/:f;MM[.D
+LAlo*K`6W'K)C3!J,b&tJ,OirIJeQlIJA18HYHr.C1VU4E,93(CMSKOJ:<fLP`h2lO,o9Z<1B/"
+CN"6<Gk64\HMi'SGkQFYH3&A?q0i6k!.F`nrdFWl),F"&FEV_FEGo]0CM.3g@U`_O?!LT<@q9-L
+@g6LTA7]@cAc5U7;M^*_LP:G:L&HZ)K)C0;IsuipIXZZlH?spaEcdIrC2Rp1FaAC]H@#R9qg/-b
+s*=oqG^"CVGBS0/Fo$:]GQ2j]GPcX_Gm&G=H$FW5GlE!fGkQ=^G^'(.!-IdQo5stQ#BY*2FEDYI
+FT-=_FEMa*F96T,FT$=aFEM_Jr,qdXqKMp^!-eEcqfhs_$[6Q.DJa6*A7]7]I/?h?;?'Mo;>jDl
+;#jMn;?'Po;#jMn;>sDl;>sDj;>j>k:\[cd:B=9er(m_t:esk`:JO\^:Jh!c$;OAl:/+GV9h7cC
+rJ1E/s+p`3rJC*&!/^E,s,6E+o8WO*qMkK7rf@&?rK$o=rK7)BrK@5Go99*8'U+T7JoYaFCM\EL
+KQ1mFCM\ENM2;%^s*+Kf!."Qis*Ocnrd=frJ,Xs&JV&K+K7nsXL2Vj'M2@+JN/WaVO,oBbP*;,q
+Q'Rc(R@9V8SXuFGTqS6WUo(&fWN)u"Xfek3Z*L^C[C3QT\\#Me^;%J"_Sa@3`lQ6DbKS5Vcd:(f
+eC<%#f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?
+s+13[s*t~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KV_qc3Ppr)N\rpf7>n
+s&8nps&0"t;cH`p;u]bn;uBPf;$e["1G1:@2`<HHr\PBX69m`#Q'@GpOcPQ_N($<,78QiZ<)`]o
+s&8bloi(iir`&Sir`&MgoMYZerDNPjq,.8O1Go(or]1'?2uY]=1bpg?0JEDXr\F[61GgsIr\Os>
+1HIW[4Zl;.8P8tR"\;-R7S$&K7f>ae7RTU26ps=,5X@(e5=n^K;#O;m;Z'Dg;Z9Vp;Ya8k;Z9Pn
+;ZB\p;Y*ff<)`cqs&K%t"BAE#;cN]or`&hpp/D;q;,L4i;c-@frDEPls&&_m!Dubl;?'Pi;#jMm
+;#jGk;>!ic;u]bq;ZKel;ZTcnr)!;grD<Jhs%rVj!)i_l"]\5h8kMeU3rD)>4oRSC48_2@55dSM
+5!M7q5!;%m5<o-2s$-KGr]UBH5<f'0rB1'C&jJQE5X7V#5sR\$6:!n%5sRY"r]^fT5<qCr4[24m
+3]U;ErE&htlWF3irE&u#qH*]!r`T5&l<3scr`T5(r`f;(!a/W-rE9,%s&o)"s&f>(rDru"r`'_5
+=]nj,9i"JY9i=he:ejY[9MeYe<DiZls*+Kf!."Qis*Ocnrd=frJ,Xs&JV&K+K7nsXL2Vj'M2@+J
+N/WaVO,oBbP*;,qQ'Rc(R@9V8SXuFGTqS6WUo(&fWN)u"Xfek3Z*L^C[C3QT\\#Me^;%J"_Sa@3
+`lQ6DbKS5Vcd:(feC<%#f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jme
+q>^<hqu6NlrUg)?s+13[s*t~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%MYlM$,YmIV:Xf\\*
+Wi;nlr1a1as.B@arLX%["e1sKR@'B>QN3?NQ2d*GQ2QsBP9Q-KClsTeTph:+KoD"mXKSS#USO*:
+OcPQ`N/V.XS991/M=ur(NrG%*N;8J1Nr>"BOHGZgP*>g.s-<SLop,KAr`gA6Ssbk-OHGN_Lkp_7
+JUi2sG]\+[JV8Z.L4oM[!JQC0@fp(I[']b;s0;g5YHG".Xo>=%W2?BiU]7(fTa?@1RB_'dItNH<
+rfdPKOcYWaq2YW<O,o>#N=(W&MMmCMMi*CKM>N20MZScmM>`>3M#`G4MuS_9Nr+kGOH,9YNJrdS
+N/`dTMuAP-M$8ZhL51P<rIY*'re(0$!/(9&qLnj's+^K-s+UQ.LAHW(K`6Z.L51M;L&Qf,L[U'!
+M>N21M#`A0LB*/0MYi;?N/<"1H?sjPDea',FT,YK?XE_;!aK#:p0@T$!F/k,>l@n+=p8/8>?kB9
+r`K2'"'Sr6>Q.h*=TM]1rE9J0>$4s0=]eg/r`9##%9?P2<E<*u<EPVa9VJ0XT`(PcU7n:QUAq"a
+V#R:cVYm=mW2]?fs/Z.!ri>prri?"!riQ4%!3Q1#s/l7&"0\u7ZMUs0['d=@[f3c8\/Moh]">VZ
+Vk/utH?sda^7gU9H[L$gTVB$!X8K+&GBeCYrd+Tk!.=cos*artrdY$#K)UB+KS>/8LPYqdE/KR4
+N/`mZOHG]hPE_>uQ^F/.S"#q>StD[LU8+N\VPgAlWiN8(Y->.9Za7'J\%&u[]=bhl^VRe)`5Ta:
+aN;WKbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4$,mdKW6nac8BoCW%T!quB_rqQNh
+s8)Wirqu`no_sFAJcE7[J,~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%LNW5%=NW"h9MZ\fl
+LPGb]re19'r.=p!s*t0#J:RQIrI4cpqgSNmpO"0"AlWVY<-NA#BOkgkJUrE%I!U+&P*(fdNf8p"
+?@6I)EcpYml?N#JqKi0g!.=WkrdOlqqgSQnqgKV^:JQ(UF)c/:D/3p"An,7Y@9m2E>$>EGA7K.^
+A7fBOAcQKC<<?,uM#N20Ka3?dKS+r2JqErPs*kZ1I"$NlI!U-dBQ8*KCi=64FF!h3rd"QiqKi$a
+s*=ZjrHS?ds*"Ebqf_j\s*4Hcqfr!`"F>?<G^974rd"Edq02j`!I&_cFn9\LFT6IaFE78""E\d/
+FERJ&rcS6_qK;g[rcJ3arcRsYm<AGP#^LT4E,TW1BP%0Q!+l(+rDESm!)`YlqbdAk!`MrorDESk
+s&&blrDEJhs%`Yl;>X2h:B=3drD3hu:esh_:JO\^:Jh!c!DZJj:B+#m9R'&sLPUccM#`A1M=ZT)
+M=ui,Msu\sNVJP2NW+t:O8b7@NrtK)OHBC&rK@/Ds-3/>qN;VXP)b9EEG]N.E0u<&E,BE,E.NV#
+LP>YZ"*]!8H2`-iHN8HmIK+`rJ,Xs!JV*lR"b_SaL51TaM/\?1N/WaWO-#KeP*;,qQC!u+R@B\9
+St;RITq\<XV5C/hWN*#$Xfen4ZEpmF[^WcW]">Vg^V@V%_o0O6a2lBGbKS8Wd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg(mdBQ4nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+13[s*t~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%L<;ol"<`N1%r`8nr
+r`8bns&Atr#?"K!;GpFm<;fbq;YsDl;YO#t.jur&/MK.B1b^R=1dh7-r]^mVP*(fdNf8oe8k;ZR
+;,d9i!)r\krDW_qr)3Spr`/qsp/CrioMbE\r_rbnr)*;g+#Pi15!;"i3]]8[2`<QO1,:O:0J4q/
+1G^mG1c@0J1As$54$5Se4A#NEr^d5`7n-!=r^QfS$q<WP6UX@05sR:j1J.RC!*&qqs&/nqrDE2b
+pf%2js%rborDN\oqc!Mor)<Jls&K"s"BAE";cN]or`&kqoi(uj;,R<k!Du\l;>sJm;>sJh;>sJh
+;?'Pj;=[WU;u]bn;#aAm;Z'Al;#X8i;#=)j;Gd<i##nSr92%rHrAsm=!B`OD4T@M@4:XP<4?Pbj
+5<h:p5!;(n5Q3kH56*nH4o[\I4[2.04oIJG4[)(o55mbJ5sRa85QjD>5sI[75l3bN5!V7q5Y4!q
+r`Antlrj?jr`B&#qH!Z!rE9/&kummcr`T2'r`fD+!aAi2r`K,%r`K2'pK@W$=BPQ(s&T,!'NA"0
+='8X(:JOV[9j^mq:Ja\Y9N;!iqbdN?G^4T6HN/<lI/\QoIK4lsJ,t4QrdtB-Knb>;M#N6MMMmFP
+NK9-^OcklkPa.Q$R$a;2S"-(AT:hmPUSO``Vl6SpX0&M,YctF>ZaI6N\@K2_]Y2(p_8=+.`Q#s>
+aihlOcHaeadaQ^rf%8R-g=tE=hV[8MioB([k2tjjl07L!m-X6/n*fc9o()DDo`"Lbp@n=\q#C0i
+qYU0hr;HTdrdk*#s1&)Z~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO#4(R>l*7Isrild6YH=q.
+XK/=uV>R(eU&UecTDb>aSXc.:RJrTRQNEJ>QM$O@PkpRfR#?W]Knl:hRZ3,aNKL<DVl$8aTpq=/
+O,f3Y?=n"qH@UeCNV\\5NU)Q#NVnh8O8k=AOTL]0PPg[FQ2[*CQ2['i?X$d+SXGe/PEM#eLk^S9
+JUi5sG]e1\Jq\i3KnfS\s+UN1raQ+=E4!!Y[/RB:ZEpj?Y-+h,ri-!sVZ!:iUApnnQ].H@H@:9s
+L6MP"s,mDFOSFk>NfT6]NrG%<N;ne=MMm@LM>W53Mi.IkqhkE1#)\=sN/WaVr/^l>!0-r9s,./A
+NJrgSMMd=LpPJp)s+^W0K`6W(K`-N'K)UE&JcLH$K`?c*L]<,-L\li(Ka<?cL4t>:LPCQ^L]<2/
+M>`81L]3,0M#`A2M>E)1M2;(b!/^Z4!/gc6rf$u<L40#H$"n<oCN+?&?sd7>?2n.0?2e(/>P_V(
+>Q7q.>Q%h)>Q7n*>6.u4rE'2*>$P99r`];(!a8f4r`TS1>$>$1=]nj/r`9##!*B,"##nN#=GBXG
+r1O%_s.]OeoV)>\pn[qdrh][nqkj:h!N<!gWWK6$Wr/ppWrB'uXST'sXT,F%Xotr4Z*L\4ZN7G@
+rO2[6*k8bk]">Sf^pgPBSVDT=H[C[<UOdf=G^GFHWNNA(r3$'E!."Qis*F`nrdFfq!.Xuu!J,k%
+K6)^"L5(J>M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*L^C[^N]V
+\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(feC<%#f@em3gtgfCi8ESRj5f=ak32'olKdg'mI'H3nF?MK
+!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>s+13[s*t~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO"7,7;l2H\BNW>(;N;ne=
+MMR%BLAlo+K`-Q&JcgRUJV!`LrdOrtJ+S3iIJ8+5EFiQo@qBe'DeWctC2e`RI=-<cG]dqdO,f3Y
+=C#EMCiFUcGlW*fH0TYKH22afH[L5;IK"]qIJeQoIJeO::JOZ,FE;DAE,KQ/An5F^@UNMK>[(BA
+A7]:_AS,IaAc?<@<<?-(M#N20K`Qp^rIb6'Jq3iOs*kW/I"$KkI!^3YEHRF]Df9`?HMDj_HMVpe
+H2r6iGlN!fFoZ[_Focf1rce9br-/'`qg&3f!."Ecrd"Kf!I8qgG6`A:GBe@VGBWt.!-IgRpiHX]
+FE;JCrcA*]r,r!\#'G$0F`heJrH/*`rcJ3_rcJ3arH8*_r-&-ap3-L]qfhs_rd"Nis*4upE,]`5
+D.R6gARoBN;Z'Ar;Gg=i;,U<h;?'Mp;c<Njs%r\lr_WPjrD<Mi!DlYj;#X5k:/Cgb$;jVq:/Fb^
+:/=Y^rD*Gh;#X2o9hnB!84SL4M<9]qMsu\tNVAJ1NW5%;O8+h7Oo1CBPQ$g?PPC:XPa@PqMhZFo
+Ci+$5JVJ/^D/3s2K85;<KD^E&GQ<$gHN/<lI/\QoIK4lsJ,t4Qre#9FKnb>;Ll$tGMi<USNfT6_
+OckllQ'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\sXKAY/Yd(L?['mEQ\[f>b]tV7s_8=+/`Q-'Ab0/#R
+cHjkbdaZdsf@S^0g>(N?hVd>NioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6Hj
+rr)HfJcC<$\Gq'~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO"7,7;l2FZ^<W?)"<W#np
+<W?+n<<-"q;Zouq;H$Qe;u]bi;%P9--nd&%3ArcN0JYFJ69md756!\P3foD_NJpA!92&/[p/M#i
+qbmDlr`&hps&Attr`&Sis&ASgohtcfr_iVjr)*SR1c51p"?SY*3B-mp#rFCk0/,"1/i,<^2?,K5
+1As$54$5Se5"Y`Gr^d2_7n-#J7KGqIr'^TRr^-lZ6:!7f1f+*J!`W&pr_`_pr_i_mo2>B_s&&nq
+;H!Hl!)iepr)ESmqc!PqrD`esq,@8lr_rYm!*0"t##eDs;GpFkqbdAkr)!Glpeh&h!`;cjr)*Ai
+r)*#_nl#Qe;>a8j;$Bip;,C+erD3>gqbdJm:f73i##e8i9MJ/Kr]:!>q`Om?r&k!Bs#^NL5!D1p
+4[)%.4odhH4pO;95!;%m5!Am/s#p9B!BraG4pXG>5s[b$6:!p75l<hP5!V7p5Xman=8H%b=oVV'
+=8l=u=8uD%=oMOf=o2>$=oDP#>6.o1r`K/&rE'&&pfdZ"s&]>(<`],u)H9X6<`N:(<_lIb9hS>_
+<)-+`9h\A`;c?Xlr)3Q>!."Qis*F`nrdFfq!.Xuu!J,k%K6)^"L5(J>M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*L^C[^N]V\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(f
+eC<%#f@em3gtgfCi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>
+s+13[s*t~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosHes0;U.#d1;3
+XK/A"VPO0brLj:cT:c%Q!M,_ZRK&ZRQNEJ>QMm'KPkgUCPl$XgSr88fLP;FoQB-cZN/asCWMcPf
+TUM44O,f3Y?=[tpIXm1ANW5%:NTuK"NVeb7NrY:@OTCW/r072Gs-EAD*L:#:?<s1oR[08$OcYT[
+LP1;/J:N#lGBe[jK7o!YL&Zl7LPUdr@q/l.[C!:>Zk0RL['Hp=Y,eV'Wi;qmUSFXaUC3cDTU`E:
+H@^d*P*>d-s-!JGOSOq;OSt4?NrG%<N;SV3M?/Wmregf7Mt`,/MZSlsNr>"AOH5KaNW+n9MuJ\;
+N/NSmMuS\2M$JilL51M;KS02Urdt3(r.Fp#s+UH-s+^E+qM+s&reC9)s+g`5MMh@hs+pZ0reUQ1
+s,-Z2!/gc4reLQ3rJUZ4",i+tNW+kFNIlS*H?jdPEbfQ38Gc!Q9)M?^>Q%e.?!LY4>Q.e5>[(E;
+>?P*2=BSi,>6A&3>$Co.s',G*)-L-F=BSd/=BAO(='&L*<EE4%<)Z^rG>:m3T`1VdU7n:QUAq"`
+U]@7iV?!OlVYm=mW2]?fs/Q."qlBUori?%"qQ9[s!3Q4&"L,/9ZEjA6!OT96[f!TW\@K2^]=Yen
+`5o*^TpUI[G^=b*TWWfmI!0t*U9CVtWr0"#G^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+J
+N/WaVO,oEdP*;,qQC!u+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6
+aN2KHbK\>Xd*^:jeCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]
+!;ZWjr;6KkrVcBfJcC<$\,Us~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosHB!KN0;N!5,s
+M26qBre:?)"+u8ZKDpH*JV&K)Jc(&tIfY"Jr-eWoqgSQnpO"0,AmoUg@sN69CLq0oCP%+eI<^'\
+FE2>:NfAuu>@M5^EHUYos*4Qhk]lfHq0E'gI//3jIfFinIK4fqILo=N:JQ(TFE)>=DJa0&A7T0K
+?iXO4>QSDGAGg$:B)Yd3<,m`nLED8)L4t;6K7ni.J:W9$IsufoIsl`mHsq8BPAG/VFa!_2q0Vm_
+qg&3f!."Qgrce9`!I&_dG62r3GPl^aGPl^bH2i0mH$Xa]qfr'bs*4Ngs*4Qfs*+]kG^+FVG5cUd
+FE;PGqf;g\F*%+urcJ9aEcV/#s)e'Z!d&R,q/l[\rcJ6`Fo?L_Fo?L\GP67]H1uR`H2;gqHZO.E
+DJa9(AS#@^8Gc!Q9)M<b;,U=j;Z0Jl;#aDl;#O8i;#a>i;#a>j;#O2e;#X5u:ejb]:Jak`:JOY\
+r_EJf"&*/p8Ge8+M?&S(N:W&'Nr+e9Nr4t6OSk7=P5gaFPk^I8OrBROR[oV&M1B\dD/F3@Ko0he
+DJF$9K8GA;K)C9&G^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+
+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+\,Us~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosG^s&Jnrm8X-c
+qbmVq;,U=lr)3Snqc!MmpJE(c.O[&'/3,[J2)$dA1dXPp5<_4n3BK2[NfAud84lTQ;>sMh<;]\n
+;YF&h<;oni;uTbg;uBMn;>O2j;uKVk;?'Po2%h]%5!;%j3]]8]2`<QO1bgX90`E^)1]K<32>o?;
+2)I-P4?GYm8cD?]8cM<^7S!GI#=V*N6q0U57K,[^7RA^k1JgqF;H$Hi;?0Yp;?0Sa;Ya8h;YsAo
+;H$Nl<;fbq<!lW)<)lps;cH^r<;KPl<<#np<!-&u<)ros$WBr$;,L4h;,U:h;>sJc;>jAo;,C*e
+;>O2i;=d]V;u]bl;#jMn;?'Mo;>sDi;>X8j;%-?!;,C.g<_l@\8kV_P8bYjT9E.-S4oR\G4TRZ.
+r]UZP5!D1p5!;%m5!Am/s#p9B!BraG4p=5;5X@Y#r^$EHrBL9Hs#gHL76*F+=R92j=T)>#=Sc)!
+=T)D&=Qiob=9)M%>5DG*>$4s0rE9,%s&o2%r)j/)='&F'rDiks)cK^:='8[0=B/'l9MS;\;ccak
+9MJ5W<)cpt:]+)kG^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+
+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+\,Us~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojIIYl:m7Yck12
+XK/A#Vkp0eUAgkdTE(V]ScbLOR@4&As-N_NrK[AHqN^uCr0&:bKp@UNAXo0PMN<aXY,nY$VPTuX
+R?WhnMi(kMBlSKJK]\9[N;JV3Nr4qAOHGZgP*>g.s-<SLpQbbas'@+FSXYq0OHGZdLkp\6J:`5s
+GBJ.]K7nu7Knb87Ll$qE@UinS['d9Irj3*?ZF$pAYHFt-WiE%srM9Ig%AIHs_ROl>Jqf/GOcu"*
+PQR,4Oc]L%rfI)>s,R)<!0$i6r/1H2s,$f7re^]6r/1N4",r5!NrG+<O9(B$rf$l8s,7)?N/`dR
+rJL`7M2;%c#)J%iL4t;5qLep&KS9>Wr.G3-KnbA=rJ(B/reL6&s+LN/LPGb`!JcL1M>`>2M>rD2
+L]<20M>rJ/MuJS9M26tEr/:Q3s,?o9s,ISMOFhk)H?a^LEGKN78P/YKqb-i\qb7&qr*02)$X6k?
+>?kB9=]ea.>5h_.>$5$4r`K8*>Q%b*=oVV(=TV].=T2>3='/O(=B8I&<)Zb1Zqm?grhBFdoqMJ]
+pn[qdrh][nqkj:h!N<!hWq`XkWrB'uXST'tXT,F&Xp)#5Yd(I=qQg=3[C*HOr3ml[\[oAa]>)/"
+aj/A?Vk/rtH[L'kS?@g!H[BpaTVK*"Y,qQ(!."Qis*F`nrdB6EIt*!!JV&K+K7nr5L51S@M2@+J
+N/`jYO-#KeP*;/rQC!u,R[]h<St;UKTqeEZVPgAlWiN5'Y-5(7Za7$I[^`lZ]=bhk^VI_'`5T^9
+aN;TJbg"GZdF$CleCN7'g"P08h;-rGi8N\UjQ5OdkNV6rlg4!*mdKW6naZYM#kR]\p%A%Pp\4[^
+s7u]kqtpBjrVcBfJcC<$\,Us~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojRLNK0!XrJ^c7
+#)\4lLPCM:qh+s%qLS]ur.+crs*artrI4`orI4`opO",u@W,mh;KZtsB52-rK7JH"H?saWEc5i2
+BP:FO@:a7pFR=A5GkQFZHN/<lI/89jIfFioIN<icIS`d8:3L`$EH,l6D/<ir@prhU?s[)A>[q;U
+rFQ4DAS>^gB)Yd5;i$6bL])r3KnP,3KS"jUJJ3Q`IXQZoI!p?>EK,ilDK'cCI!bg>pj;g_qK`*e
+!dT$8rce9`rHJ9bs*+Bcr-/-brH\9dr-80c!d]-:rHSEgGPl^cGQ2jcFTHT*rcA-]rcA6`FEDU!
+FT-F]ErpH)FSKt[G'.p'FoQX`Fo?L_Fo?L\GP67]H1uR`H2i3gHiAC%I;s4EDJa9(A7K+^8P/YK
+qb-i\qb7&fr_WVls%rVjs%ien:esmb:]O;j;#O2e;#X5u:esh^:esn`:JO\]rD!Pk9N[3CM2C>O
+s,6B*o8WO*qi(T9qiCT8qiUf>s-*GHqNLN6)jQbXSYN*HNeMh"Df0E5IuAGfD/<s)JqK#<L\l`)
+H2`-iHN8HmI=?WpIt3'#JqAW-KS>/8LPUbCM2I4MNK0'\OHG]hPEhE!Q^F20S"-%@StMdNUSO]_
+Vl6SpX/rG+YHY:<Za@0L\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY_dF-Oof%8O,g=k?<h;7)JiSrnY
+jlY^gl07L!m-O--n*fc9nc/.coCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+13Zs*t~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojOK<)lro<rQ)!
+<:Nrg<;]Yt;Gg:h;Z'Jm;Z0Pn;YO$(.O[&(/MK+@1GL[A1dXMn5!M1m4$#A"2@2iD8ki#X;,U:j
+pJh/k"&r2t;Y*fh<)lmso2GWfoMbZc!)`Vkr_reoqb[u(2E!?I5!;"i3]]8]3&WZP1,Ah_r\"4,
+&iDI%2)R3I2)I-I4?PYd8P)NHrCR#[)b*=f7Rom:77B[76Ua@1778Xh5YFpM;H$Fj;>!fe;t<i`
+;u0Dj;u]_q;u9Pn;uT`&<E)pt<)Z^p<E8fm!*&kpr`&kq#?4]&<)Z^n;Z'Dk;?9WmnkoBa!)`_l
+r)*;gs&&Acnl,Ncqb[>krD<Sn;>sDi;>*of;[cQ$;,C1g:eOAP9h@qN9)D9Z9`%Nc4Zkk+56!bT
+5!M7q4Zkkk4Zu"n4[&^*r]U<Fr]UWQ5X.P"5X@_&62X"H5Q="K4pF/76r#^D=R'&h=T2D#=Sl2"
+=T2J&=Qruc=9)M$>5DG'>5DD$=T;P&>5MJ%=T;J&<rH#?<)Z^p<EE=/@9Qf7;,C"\:/FYd9i"S\
+:/+\d;cQanr)*N?rd+Tk!.=coIXZcrJ:N3&JqJ]/Knb>;LkpnEMMmFQNfT6_OcklkQ'IZ%R$jD4
+S=Q7CTV8'SUnjlcW2ZetXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`Q-'Ab0/#RcHjncdaZdtf@S^0
+g>(N?hVd>NioB+]k2tjkl0@U$m-X60n*ol;s7-Heo^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcE4Z
+J,~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rok!XkNB+TYct73
+XK8J&Vl$8brhBCcs.KCar13q[S,SiUR/`NOQMm*IPkp[CPl?jkQA]I<L2*KPR#Zi[NNK@cVl$2_
+SsYh*NfAp]?YOJ)H\.6;r/L`:m>^Fjr/LT6r/^l>s,dAGPEYp/s-<VMqNWCnQ$Z_?>b7LUQ^!Vq
+OH#'QKn=l,I!^']G(YI%L4t>7KSPD?Ll)+?!ai=Br3Q^8ZF$pAYHFu+WWK/uV>R,"Tq&NVH%1F#
+N09?dOckolqiq,E!KiKBO8k:LO-#EaOH5H_NfB$WqhtH2r/:H0$B'e"MMd=MN/WaUrf@#>"HSS'
+NK*pqrf$l:!0$l7"H&%mLktqb",DVbL&6Q'K`Qj\r.G</KS5&6L51Q_L]N9erJ1?+!/LE*reLE-
+s,-i5regZ2!f2VerJ:B/p59$1M2@,gMuJS7Mi@Rn&<;g6OcklYI=$?dF)c/7DftnKqb-i\ohG?Z
+s&on;>?b?:>$4s/=]np5>?h)1r`K8*>Q%b*=oMM*=]eg/r`0/'=BAO*r`02&;cR#-:]@'gU%G)Z
+U\LVbV>[7kVu*@hVZ<^fWq`XkWr9!uXST'sXT,F&XoP[)Z2_-+Zi@B6[C3OA[fO"Lrjj/_^VRn2
+cdUUVY+_D@IX6BmOeSe*I!^'aKqkTOX/l-#rd+Tk!.=co!IfOtJ,t4Qre#9FKnb>;Ll$tGMi<US
+NfT6_P*2#nQ'I]'R$jG5S=Q7DTV8*TUnsrdW2ckuXf\e2Z*L^C[C3QT\[oGd^;%J"_Sa=2`lQ6D
+bKJ/Ucd:(fe'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$[f:j~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rojRLkN@kbrJ^c7
+#E"@nLPCP;L&6N'KDU6#Jc(&sIfb(KJ,OirIJnWmIK"WoIK"U;DIc^]@odhoE,&irBnCnfIXHEc
+F`MJ<Ch[O#>$kiUDfb8jiHY'AqK`3iI!kd=s*jrqqgK\n:/4N,F`_VBDJa3)B4b[a@UWSL>[(EC
+A7fFbARo=`BDuNB<<Q9WLkgfbL(/iiKS+r0K7ST*J:N)srdG<)HZXsgCN"08G^OmcHi/9eHi86j
+HiA<mH$Xf9H2`-iH2MmcG5QR`G5ldbGl;jcGl;pcHN/?lH2i-eH2i3hGl`/6r-80arH8-^!-A$Z
+!-S!WrcS3^!crI*qK2d]rcJ3aq/uUYs)n<arcS0_rHImYs*4ZjH$T=4s*=WjqKi3irI"p"Ec>r8
+D/<kaAH69;9)D9Z9_D-X:B+/h;?'H!:Jak`:Janb:f%'e!DcPk:]4*$;,9t_:esh^:esn`:JO\]
+;#X2m9h\<?8*,U.Msu\sNVJP2N<#"9O8=t8Oo:IBPPpaEPOXeVPEhK'SYN*cP`^iXG&M;8Dgd=n
+EH#f3DK:AaM21q\rd+Tk!.=co!IfOtJ,t4Qre#9FKnb>;Ll$tGMi<USNfT6_P*2#nQ'I]'R$jG5
+S=Q7DTV8*TUnsrdW2ckuXf\e2Z*L^C[C3QT\[oGd^;%J"_Sa=2`lQ6DbKJ/Ucd:(fe'uq!f@\d1
+gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$[f:j~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rojRLkN>iFqH!Sq
+s&APh!*&ho!)ien!)i_nrDNYor)3Mks&/hn+tG&l0.\h=2)?p>1G_<`5s[_!4ukYb2`EWO1J(24
+:f1+hr_`_poMk9Xr`&Jfr`&Mgohtfgs&&kp;Z'B+/Mo:>5!;"i3BB,[2`<QO1,:O:0E*R-1GgsF
+2)Y@i$oKju2*F#^4%W"991o1Ts%",!7n6$=77Ka87RTU36UX@21d=N+;,U@l;Gp@hohkcgrDEVo
+pJUle!E)en;Z'Jn;?0Ym<;ohq<;fhq;u]hr;ZKeq;Z]iq;Z'Gs<)Z[m;cEZpr_rbms&&horDNYm
+"B&)o:f.-g!)WYlr_i_m!`2`lrD<Vo;,R<js&&Acr_rhpo2GN`!)iens&/\joht]d$;aSs;c-If
+91qrGqF^WXr(QcXr(d8Ts$$cQ4Zkkk4Zu"nr]U3B"$Jh34oRVI5<qG!r]gZS5s[b%5X>63s$-cP
+5<V4t9fhTCs&f5$r`K"us&f8's&eMgqcEi$qc`i#!*]2$!*K5'rEB&#r`K2%!*9)!*EH0>;GpIo
+='8g;AQ`2?<)?=`9hnVc;,C+`9MS@^;u'>jHN/<lI/\NpIXh?I!J,k%K6)^"L5(J>M2@+JN/WaV
+O,oBcP*;,qQ'[l*R@B\9SXuIHTq\<XV5C/hWiE,%Xfnt6ZEppG[^WfX]"G\i^VI\&_o0O6aN2NI
+bK\>Yd*^:jeCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<h
+qu6NlrUg)?s+13Ys*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mrok!XkND!iYct:4
+XfSS'WMZPgrhB@b"/)9YT)>,]S!ob5rg<_Pr0IAJrKR/Dqiq,E,*e"8Ob/4ZR[9(kMN)8NXf/1o
+U7dm@P)t]^MSj(DFaJ^urf6u;rf6?)m#:h$qi:T8!0I2B!KrZEPl?pJQMHd^HsL#_T:D@;P`q>p
+O,/UGJV&H%H[0gere(?,L5,\]$&==nM.0n%EjW7P[/I94Yck42rMg@*V5'l_Unb<-PBqY/KoQ%o
+s,dAGPEYj-"-\k/OT(:@OSt7?OT1@ENfT3[NVeY5MYrD2M?/WmrJLl;N/NXRNK4"!rK.#=s,@&<
+MuJ\8N<"q9MuSY7M>i>2M#`G4M#`>1L&?T)KnfS\rIk3*!JQ:,L\ci(L]<,.L])r-L\uu-M>E,/
+M>rA3L]*&,MY;u2Mi!:JrJUZ4s,6i8"-/G(Oo:ICP6l\bH?spRF`(u8r(?o\r(QcXqbHr_s'#M-
+=oMM+=^#'7>Q%b*=Tqu5>$>'4r`T8's&oA(r`0,&=BAT&<WuH$<*?P&ntH,Zpn[qdrh][nqkj:h
+!N<!hWqrdkWrB(!XSK!rXT,C(Y-5)/Z2_-+ZNRYC[C3OB[fX(M\c0/_]YD;%b0\\nip*hLTTk(X
+H[L@;X07&#J9ZU-V6-l$X8B("HN/<lI/\NpIXh?II=[!&K7no3L5(J>M2@+JN/WaVO-#KeP*;,q
+QC!u,R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[dF$Cl
+eCN7'g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrUg)?
+s+13Ys*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojRLkND!ir/:f;
+MMd4FL]3&-KEQp\KS+pTK)^E"JGt&uIf=isIf=cpIenHmI/\QoHm*B<?Ya(ZG]I\;AnPj[Jq/;u
+H$FOSEc,`0BP3Q:@qfe$rcnKimWmc9pNcR\!IK4iI/n`qIJeNo?2dV4GB@kFE,T]4CM.3h@q&hR
+?<g_6A-Z[XA7f@`AS;!Sr`')/LkphBrIt<+rIbl:K7ST*J:E&rIXZcoJqeMdDfTuHrI"Wlqg8Ek
+I/\HoI!^5>H3S_BH?jd^HN&3gH3&;9rHJ6ar-/-`!-e<bs*+Edrd"Be!IK.kH2i3jH2W'hH22^`
+G6`;6G'.nJFERM'!-S*ZrH8-`!d/U,q/uRXq/uCSrcS0_rce9bo6L7Y!dT*<qg/KoI=?WnIJnTq
+EH(np"D;=Y@q>L0rCd&^ohG<Yq+q#f$;aMp:esk`;,C(br)!Ag'MqS%:f1%b:/Fb^:/=Y^:JX_]
+:/Lpbr_3EO8Ebs2Msu\sNV\\3NW5%:O8=t8Oo1CAPPpaFPOXh9P9-!UR\$=SYID60Ner7.E,BN7
+KntY,D/O--HA%-2L\c](HN/<lI/\NpIXh?II=[!&K7no3L5(J>M2@+JN/WaVO-#KeP*;,qQC!u,
+R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'
+g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrUg)?s+13Y
+s*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojUMkND!i<Vfbq
+<W5tk<W#hp;ZK_o;$p3"<)Z^n;Gg:h;u0Al;>sJn;'@G<-nZu#3AiTL0etOE6UF%&5!D"g4#T#V
+2)[rr928>]r)3PnoMkih!*&Mf!*&Jes&AVhr)*MlqGI;lrDNSk(+hC#1Hmr`4$#G`3B/oT2)6p@
+0J>%1r\G`U1c.'H1c%!G1c7EX3^62-8kVcJ8OuBB7S$'?7n#j977I2D#t%*K2`jN*:f10h;ZBVo
+;?Kco;GmBjrDW\n!)rViqc!MlrDNPls&&hqqG[Sr<)cdqr`&qtq,@8ls&8qq!E2nm;u]bp;u]hr
+;ZK_p;$'Wm;>sJm;#sQlr_WVls%i\mrDNMi!)iens&/kor_ibno25QerDN8ds&/Vh!)iVioMP]g
+;Z0N#;,C+f;bp(Z8kf.TrCd&^ohG<Yq+h/X4Zknl4oRYF4o@GB4odbE4pF8:5s[b$6N'4M5l<kH
+5R'D;4[)/-3pg&M=T)>"=Sl2"=T)D&=R0,d=T;P%>5;D&>5MG&=Su>$>5MJ$==RBQ<`N.#<`E!q
+;H-Xt>$bZMCi`c`=B/-o92JA];,g:c9hnGZ<Dusu;>X8kHN/<lI/\NpIXh?II=[!&K7no3L5(J>
+M2@+JN/WaVO-#KeP*;,qQC!u,R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'
+`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]
+p\ssfq>U6gqu6NlrUg)?s+13Ys*t~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mrok$YkND!ijlN\J
+XfSS'Wi)bkU]."fU&L\jT:VXFS=H.?Rf8`TR/`NQQ2m9MQ2m3LPkgU@PTucZJsD1KT:;41Ll7:S
+XKAG"Vk]uWQB@8gMMhG/P]V5&Ll_:jm>^Ikqi1H4rK$u?rfI5EPPg[FQ2d0IPph&e?<j(oS=,\,
+PE:l`LkLA3JUW&oH%^d&KnkJ>L5(J>M2@+"@:=igZid_C['T_:"L,)4XK2?#&#Z8!V50r^RuM]@
+Jqf;KPPp[DOTCW/q32)GOH>NaOHBI&rK.#>!fi8"qMYB2!K2p9MuS\1Mu8M:NK9-\O8b4@O8b.>
+NVnb7N<"q8M[PE!LkpnEMMd7HLkkt`r.P!&#_dqbKnkD;LPPhas+gQ/oS<I$r.t?/qMP0,reUT2
+rJCT5pP]*1re^Q2s,-i7!0$l:!frG*rK@2E"-f"6I/\HrG\_;:CioVKr(QiZqbHu`ohbZj!EiV*
+>6A&3>$Co."C#&5=^(f-s&f;(s&]8&r`9#"#ZXr,<`E!s=/YYapS7ecrMBRmqkj:h!3,Riq5a:j
+ri>dqr2^%'Y-+t4riuL/qm6=0s0Vj8r3l^:\c')`]thJ'b0\\pj6Q:3Z)++PJq&/pLml&5IX69b
+I\!7AXK8K"XoiusH[Pg@!IfOtJ-CLUK7ei2re><GLl$tGMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIH
+Tq\<XV5C/hWN*#$Xfnt5ZEppG[^WfX]"G\i^VI\&_o0O6aN2NIbK\>Yd*^:jeCE.%f\,!5gtgiE
+i8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Ys*t~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojXNkND!ijlQK#
+s,-u:M2-lbLAuo,KDpN(KDU6#Jc(&tJ,auqIfb(IIJnWfI3NcH?Z'IdGB@e?AnPgnJq/;uH[9jY
+EGfW/B4oV@GA(i6G5HUSH/NrBH22aeH[P[<s*jrqrdFiQr_F>RGB7eEDf0B-BOt[a@UNPN?!LuO
+AS5ZTAH?CSral.Cr`',:LkphBL]3#.L&HZ*JqO&R&:f7ZI"-ToGBn=GDfKoGI!ts@rd4Qj%=<JL
+H[L3fH[:!bH[:#;H2i3jH2W$iH$K=4"aG67G'A31GQ2jcGPcUbGQ)jdH2DpfHN8BkH2`*iHi/3h
+H2DjbGPu[eF`VVHp2g@YFEIJ(s*"Ebs)\9aG5QIbG'A+Qrc\?cqfVUUrcS0_rHJ0aoQg@Z"*o3=
+Hi&0lI=?YEIK"ZtIsuidrbhsVAnPXaBDkL$9_V9Y:ARcY;#a>i;#a>i;#X5k:f%$d$;XDm:ejb]
+:Jah_r_<\o:/=VZ:/$9(M?&S(N:i/2N/dXnqi1T8rf?i9r/pl>rfd>GrKHc7s-"RjQ^XPBWNitK
+a3Km.LO*rYE,KiKP]^n]D/=-?K8bS@qLersH[C/>I0"eHrdY0'JqJ]/L&QgELPUeDMMmFQNfT6_
+OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Yd1UB[C3QT\[oGd^;%J"_Sa=2`lQ6DbKJ/U
+cd:(fe'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6Hj
+rVcBfJcC<$[f:j~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mroj[OkND!ijlKM?
+<rZ1u<;'>i<;fbq;Z9Mo;H*Qo!E2nq;=d[!/Li,'/hK(A2)6j@1c.Ha5X%@pr]:NH3&``RK0Vk#
+:f1+hrDNVnnPfNf<8pgV<:j,^;ZB\q;AE&,;,Jo'1c%<Y4$,Ja3B9&Y2)I'Dr\4@)"uA"k2)I-I
+q_Sa>4Zb\k8P2TJ8kDTF8H)*\84Q2J7K,[[6UWgs7o)rYr_`_prDNVl"B&)o;GmBjrDW_os&8ko
+s&&bnqbmPo;,R9ir)3Vo;tj8k;u]hs<V]Sk<<#hr;uT\k;ZK_p;u]hs;ZK_p;$'Wm;>jDj;>sAm
+;GmEir_iVj!)ibm!`Dlmm8<p_qbm/er_iPh!)iVio2>Tc!)iep$W9o";G^4g:.n2O:&R`_9_V9Y
+:ARcZ:]NWW56!eD4T@SP4[)"m4?u+r5sR^562s1N5=#03r]pKH!C0BJ=oVV&=8l=u=8uD%=oVUh
+=o2>#=oMV!>Q7n#=oMV$=oMP'=8u>$<@:gI<)Z[n<)m"'?=IPaFF/RB>#nHs9M8,W9ik(c:/+GX
+;,gOr<)EHi"+#<@I/\NpIXh?I"bD8XK7nsXL2Md&M2@+JN/`jYO-#KeP*D5sQC!u,R[]h<StD[L
+U8+N\VPgAlWiN8(YHY7:Za@-K\%0&\]Y(tn^qmn*`5Ta;aND]Lc-FY^dF-Lne^i@)g"P39h;7&I
+iSrnXjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmo_sFAJcE1YJ,~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D$g$HP
+XfSS(Wi;nnU]."fU&L\jT:VXFS=?%=S,SiUR/WHPQN*<NQ3*>9PkgU?PTc0DQ&LQ2SXGXtN/in"
+XK/:rUS43FP`^r_M0P91Ed`Imrf?f6mZ$Rlpl564rK$r>s,dAGPEYp/s-3SMr08[Y?=$j-SXc+7
+OctlhM2?n:Jq8E!H$Y0sKS>,8Lk^V>MM[4J@q&l/rj2d8['[1=Z5'XKYcb(.X/`1tV5'l_WfW*_
+H\$s0rfR8FrK@/B!KrZBPQI#0OT(:@OT(=>O9CW+O,f7uN;e_@MMmCOMi3OOMZ&G8N/NXQrJV2F
+NfT6]O-#HaNfK0[NW"h7NV\P5MZ/J4M?\onLPLV<L&?T(L&6T/KnbA<L5(K]L]W?fM>i>2LB*)$
+L]*&'MYN&-MZ/P-N"_)*M2I4KMMm@LMi3ORNfK0]OHKO*s-*DGs-="IIX?EhF`258Dg2+QpeCZ]
+qbQ`Yr)*Jts'#S/=^##.=Tho4>$5&.=oMM*=]eg/rDrr"#ZXu-<`E$s<LEHRpn[qdrh][nqkj:h
+!N<!hWqrdjWrK+"XS8jpX9>Z.YHY81Z2V',Zi@B6[C3OA[fO"LrOO8f^r"+7dFR.8m.1#Q[B-*l
+KReDtJXELBK7/,mIXn/j\ZN$9r2p-JH[C/>I<U-iJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_Ockom
+Q'I]'R$jG5S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8WcdC.h
+eC<($f@em3gtgfCi8ESRj5f=ak3(smlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$[f:j~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D"6JU&
+N;e_;M26qBre:E,r.G'&qh"j!r.+crs*jlqrdFouIX^p;+_bD(B4XtaE,9-#C2/EPJ:DlkGB@nE
+D/3fs?ZhuSCiORrHiJBnH[:#,H2W!fH/j/HH2;ggH[L5;I/n`pI4]nR:JX`0G&q\EDJs?-BP1gc
+@UNSM>[1iNAS,LbAn>OcB4bdh<E<+?LkphBrItN1KS+r2JqO#Q%"E_RIsu`aF)#Q4FEme4!.Ffn
+rd4Hg"FGNDH[Ga<!IK.kH2i0jH2W'gGn#"DG^+FUGB\:UGBe=Trce-^rd"?ds*O`jrHeKjr-J?f
+"F,3;G^0+0s*"B`!-S$Xs)n<_s)n<arH8-`rH/*`qKMs_rH7dVs)n6_s*+Bcq0;sdr-A3b"*o3=
+Hi/9kIK+cqI/n`oJ,b$'G&VD=D/<nbAH6HB9__?[:A[iW;#F2g;#a>j;#X5k:f%$ds%`nq:esh^
+:esn`r_<GhrD!Dg9R,o]s,6B*o8WU,qMkK7rf?l:r/pi=rf[>Hr0-Z6s-"^mQ'[u4V5gf2_8ssS
+P`UfVFE2><Eds")EGo`0DJt,ZN/*1Br.G/uH[C/>I<U-iJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'I]'R$jG5S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8W
+cdC.heC<($f@em3gtgfCi8ESRj5f=ak3(smlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]kr;6Kk
+rVc?eJcC<$[f:j~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D!p/KC
+rDrqu"&r2u<:s8i<;]\o;ZBSo;Z0Pq;c<Kip/3%a-o*D-0K:pG0JbLA6:*q$4Ztng3]K&W2)R$O
+;bg(b;Z9Vp;Z'Jb<<#qu<;ohr<9$pW<;9Db;?0Yp;ZBT8/N,F@5!:th3]]8\3B&fQ1,:O;0.nn6
+1,CdE1c7/g1^Gs%4?>i$8P2YT8HD=Pr^R&]7n6&H71)CM6SU_o:Jjte;uTYp;uKVh;>X5k;uTYp
+;uKVo;>sJi;ZTcnrDNSm!`W)spJh/ks&9#!<;KPk<<#l";H$Ll;Z'Gn<;f_q;Z'Gs;Gg=i;,R9i
+r)*Jj!Dubo;#F/k:Jgmbs&&hojAPnS"]A8u<)QWh;?'Pk;=mcc;#jMn;u]bq;[H5s;GpFk:J+8P
+qb6cZr(d,bnPK-\!^8b1r&k!Cr]L9G4T7PF62j.J62a(I5Q<tO5<_1o9Cc6b=T2D#=Sc)!=T)D&
+=R0,d=T2J&>5)8$>5hY)>5MJ&>528"=T;J&<YJJ6<`N*t;H$Op='Ap>BPqs>Jr0J1%ouP':J=M\
+<`;di9MS8W<;f_q;#F2nH@(!drdB!>It3'#JV&N,KS>/8LPUeDMMmFPNK0'\OHG]iPa.N#R$a;2
+S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`lH0Bb0/#ScHjnce'umuf@S^0
+g>(N?hVd>NioB+]k2tjjl0@U$m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s0hrX~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D$g$I0
+j/oD`Wi;qpV>R%mTqJ'NT:VUDr0m_URJrTQQN3?NQi36MPkp[@PTc6JC6FBdSsl"'KSte%X0/G!
+TqJ$HQ'%&cMgq/2TmV9Br/^]7l](:jpPo*2s,[/@rfI5EPPg[EPlR-LPph&e?<j(nS!f\/PE:la
+LPLG4Jpi#nH\[?0L51YAKnbD@M2R7$@UZ57Zi[YB[/I94Z*:I9ri70AWMcSfUnj0uR!aF>MNF$c
+P*;)mP*(ojOckomP`q>qrKIJJOH>NaOT(=:O9(E%r/CN2rJU`6regf9Mtr;?NK0'[NfT9`O,f6]
+Nr=q9N<5-"N;eb7Mu\e6M?&M3L]<)-K`6]*L]<,/L]<,/LB3-br.tB.s,$c3p4r[(!JcL1LB<<i
+M>2u)M#iKjreg]5p5B'2MMhCkrJCl=N/WaVO,oBbrK@2E!1!PLr0Ib>H[0saCN=?1DG9h"r(d/c
+ohbB[q,.5s=oMV)=T_i3>$Co.r`B;)=]eg/r`9#"#Zb&-<`W4!<J^FE!2K@cs/#[k!2o^kr29Ro
+oW%_fpo=@ps/bprriH.%!j8`2rNZ@-r3HO5[C*HOr3l^:\c0/K]=u(ta3;r_hWF1rqYpL1Z)XL]
+K78;tL8h>GJUDliJ<Qe0YcXu'Y5`hKI/\P@IXcluJUrE*K7nr5L51SAM2I4MN/`jYO-,TgPE_>u
+Q^F20S"#t?StMdNUSO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?b0.uQcHjkbdaQ^r
+f%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFA
+JcE.XJ,~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D($4N:
+j,AnSMM[.ELPCP;KS4u2KS+pTK)U?!JGt#uIenQoIfFoiI3r`?<,6#EF`MG7@qTIUJUr5sG]n7O
+Df'9(BO?"JJ8K7JI!g9fI/\KmHLH+ZGl2jIGl2j_H3&A?q0`6lrd=cPr_NQ<rc8`lDej-'AS#@[
+@:!8G?=me\AnG]TAIN0`AnPaV<`O^,LkgfbL'33`K7nmVK)U<5IsucoIWL[%CiFH>I!pEjI=;$@
+!.4Tj!df<Ard=`ms*=Zlrd+Tiq0MsarcnHer-80apNZ[_qg/6g!IB%jHMr3fHMi$gGl2dcGR8S;
+F`_bKFEDYJqfMj\r,hs^r,i!_rcJ9cFa!\,s*4Qf!d8^/olg4T!d8d3qfqp^!.+Bbs*FrtI=6Kj
+I=;'Cs*aors*t'!rIG?,F)Z#8DJ!NnAS"R1:&Ica:\@QY;>F)k:esmc;#X8h:^^,r:JO_^:/=\^
+:f%'cs%iYi"&DWbD=<A^MslVuN<+utq2Y?3rf6r<qN1W;qNCT:nrj!9,a=R\S=ud[ZFdrpdFd@9
+P)Y?IFDl)8GD_<-EGfZ.DL-njM21q\s*F`nrdB-BIt3'#JV&N,KS>/8LPUeDMMmFPNK0'\Ocklk
+Pa.Q$R$jD4S"6.BTV8'SUnsrdW2ZetXKAY0Yd1UB[C3QS\[oGd^;%J"_Sa=2`lQ6DbKJ/Ucd:(f
+e'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0iqYU0hr;HTd
+rdk*#s0_lW~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D"6JV(
+j8N*Z<W?#";cH`i<Vobo;uTYr;,U?k;ufkq;$'Qk;>3s(.k)u%/2B1B1G:C;1H.Wd5Wq4m3]fG&
+2[2,g5=e:?;"R]Y<;onp<9$pV<;KPc;B8\6;Gf#(1bq6Y4$5Pb3B&oV2Dm6G0J>+50JkRArAFU3%
+lH1#2)RNZ3_)b58kV`I8GG^R71D^Q6UO"%;,C(e;H$Oor_rbn!`Mupqbd5g"&i)q;ts8d;ZTcnr
+)3Pns&8tsp/M&jr`&\lr)ESms&/eor`&nrrDNSmr_`_nqbmGk"]A2p:f1*h;#F/j:\R`K;Z9Mn;
+Z0Ms;H$On;YX,h;Yj8_;ZBVo;ZB\q;Z0N%;Gg7f;,^:c9M7uOpeCZ]r(lu^pJL`arB(*D55[PK5
+!M7t5X7P#r^$NKr'13H"?o%45=kELr`K2%rE/nts&f8's&ePhqcNi#rEAo!"Bnr2>$Cf+s'#5$r
+E0)$!EN5"<[h$J;GpFl<**:1@VKb'I"R<;P$(sk<)6=b:/Fke:JXh^:/4Va;cH^nqbmH@!.=coH
+[^HpJ:W9'K7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQC!u,R[]e;St;UKTqeE[VPgAlWiN5'Y->.9Z
+a@-K\%&u[]Y(tn^qmn*`5Ta;aND]Lc-FY^dF-Lne^i@)g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*m
+dKW6nc&(boCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+13Xs*t~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+irS/?ri-'uVPL!dU&^ndTECgXSt5eKrgNhRqNq2Ipm(W=+H(o9K8?+hQB-f]MMnX=WhuScT:D42
+OH#-UaN^H(H\D?Yq2Xa"m#:[ur/Lc<rK.#@!KrZEPlI!]QBclH?=$m.T:D@;PEV,lN/*/eK*-[T
+I!bjH!/LQ1!euMere^hf@q&lUqm?=-s03fQYH4e*Wi;nmUSP'0W-WlGMN<p`PEV/nPEM)kP*1rj
+PE_=1PQ$dOOcYZcO-#HaplGQ<NfF$s!f`.trJUZ6r/:?/rf-o;!frG(r/Lf;N;\_;NfB%rN!#&u
+N/R[m!JuX2LC8fhKnP,5KnbA<L5,MZs+gZ3rJ:K1s+pN,!/UW0reUQ/!JlU(MZ8P4M?&M4MZ/P,
+N;\\7MZ/M8N/`hrNrkE*Oo:FDPEl-6rg3\Rrg4%YI<p6dF_Yf4Dg2+Rr(d2dp/(T_pepfas&oS.
+=^#$5>5h\(=9M].=]ef*<rQ/+<``:%<`E!tH2=91V#R:jVZ3RlVYd7kWUm.dX7rXoWrT6oXT5I$
+XTGZ/Yl:p+ZM_$3['d<M[f*ZJ\@K/]]",Ge^qn(9e(ER@mI^;Srtj:kUS!HqJ:E$2U=4mGH[:'h
+Su&ZnX/c'"!IK4nI=$EmJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5C/hWiE/&Xfnt6ZEppH[^`lY]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\U
+jQ5OdkNM0plg4!*mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Xs*t~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+isOe(MMd7HLPLV=L&?T(KDU9#Jc1*"It7BF!.Ofp!.OTh,&Ln#CLUn!FDbi)C1q:5IsuckG]n7L
+DJa-%BU>-:Bl8!<rd=Tis*EsUj*:HHqKi0g!.=Wk"+GZ(?2dY"GQ2^jEGoc3D/3`pA7GOH#$tSH
+AnGUeral1BB)ZEG<`N1#MZ&A0L'NEcK7no1JqEuQ$\*VRIX[9/CiFH=HMr6nI!pG@HiSNjI/\Kl
+I/eQnHN/?lHN/9cH3eeBH$Xa]G^"B.GlN!cGQ<$gGlE!bHN/?jHMi-cHMi$iG^"B0GQ;pdFoQR_
+FoHI`F*.A'rcA-_rc\<arc\<arc\9b!d8d3rceEemrn_R!-\?cr-8$_r-J9d!.4]m!I]FqIJnWo
+I/n`qJGautJ-paFDJsH2AS,LaC&C^':Amu^;#4&a;YF&f;#X5t:esna;,C%`:f'pd:B=9frD!>g
+r_EJf!+YPVs,6B*o8WU,qMkK7rf?o;r/pf<pQP33s-*JG-^9m_S=uj^Zb+)sdb<X=k,jf*L3R`Y
+E,g;YTlk<mD/F6BKStY@KDU<&H[Pg@H[^HpJ:W9'K7ei2L5(J>M2@+JN/WaVO-#KeP*;/rQC!u,
+R[]h<StD[LU8+N\VPgAmWiW>)YHY:;Za@0L\@K/^]Y2%o^r!t,`Q#s>ai_fNcHab`dF-Oof%8O,
+g=k?<h;7)JiSrnYjlY^gkiq?tm-O-,mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmo_sFAJcE.X
+J,~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+irS.?r`'&";c?Zh<V]Vn;uKSu;cH^p<)Z`p;>sDl;>F*6/1;r#.P<_=1Ggd@1,D9_5s7@n3]oJ_
+2`<NO91qiP;,gNo;ZK_j;tO&g<W#hU;uTbm;tX$&;c58%2Dd3R5!1ti3]]5[2`<HH2#]3/0E3j0
+1Go(g!Al\51^l6(4Zb_t8P)NI8P)JP7fl.M8H)*d77K^77RBF"5YFrP;Z0So;uKSq;c6Ni;>jDm
+;u]bq;u0Dd;uKSs;,U:j;tO#h;uK\q;u]ho;uTbp;uT\n;uK\q;uT\n;Z]io;>X8j;$9co;,C-h
+;"7E^;?0Sl;?0S_;ZBSo;Z0Po;?Trt;GpBj;Z9Pm;Ys>`;Z9Mp;H$Qj;[69#;G^1f<)!9aqb?u`
+rD3,`qGI#cp/CuRr&k<L4[2.s5sRY$rB^HKr'13H"?o(65=YBMrE0)$r`Jtt!*K2&s&eSiqH3`"
+r`]#"!ErY)>5VP&>5MJ"=9)G"<\%-J;,L4i<**:2@qfn*I>!N?P*9EZ>#e<n9hnJ];-cso:/+DW
+;H-Rp<)EHi!IK4nI=$EmJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5C/hWiE/&Xfnt6ZEppH[^`lY]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\U
+jQ5OdkNM0plg4!*mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Xs*t~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D%cud4
+j5].XX/`2!VPU)`rhBCb"J;9WSXfYJrgEhTrg<SL!g]+;pQbT>,+aaHP_b$cS<]1lO,T"!Y,\Cq
+UnX<DQ]R2bMW;4RF*`Csrf?l8k`+tgp5T!1rK.#@!g8b2r075H*.EBE?<j(oSsl(3Q'7;gL51G6
+K7\T!I"d6-Ll)+e!Ju^5MuR8h@UQ[Qr3ZF.rim$<XfJM&WMcSgX,i0aIY3N=r0%#Bs-!DErK7;J
+PEM,nrKIPMOH>NaOH>OtO9^i+N/WaUN/[[ms,?l6pl,64rJpo>r/UZ6s,R,=!06r9s,?r8!/g`1
+!euD_re1<*pkS[$qMG*)!/UW0rJ:K/!JlU(MZ/G5MMqFj!fN"roo8p/!K2j7MZ\otNfX.#!0R5D
+"I,1;R$dl@!1NhR%%<$%I!g6^Ec>i79hkR]rD3/ar)*;gl;R^c!aAi4r`KA+='/O+r`K5&rDrr"
+rDj#";cIK0U&^taV#R:iVZ3RlVYm=mW2]BgqQ'@js/Q.$n>ubpYH\#2rj)I.s0Vg6!4Mg7s1&$<%
+(j6h_T:!Ng#2&]p&+^e(U:'8Q\Bs;I=\$%_1[/dGCkpOV73P.Wr&t"I/\PCIXcluJUrE*K7nr5L
+51SAM2I4MN/`mZOHG]hPa.N"R$a;2S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@[C3QS\[oGd^;%G!_
+Sa=2`lQ6CbKJ/Ucd:(fe'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DPo`"Lbp
+@n=[q#C0iqY^6ir;HTcrdk*#s0_lW~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D&*;m5
+j5].XMi*@JLPLV=L&?T(KDU9#JbjooJ,aupIfOrkI3NfH@;]XdG'%V;Anl$nJq8B!H$OUTEH,i2
+BP=`0M.gaHGlE*eHN8BUH/s5HH2DpfHiJKiI0!Y]r_NQ<)0L"@E,fc4CLq'e@:EYP?!V#QAn>Rc
+AnP`TB*DsM<`W4XrJ:B+s+CH+KS05T$\<eVIX?'UC2S$7HN&BjIJ/'fHi8?lHiJElHiA<kH1ZF_
+H22^bH2MpdH2`'gH2;jcHN8BgHiJBlHi&-hGm&G=G^+H1GQ;seFT?O]FTQZ+F8^7[F:*/6GB\1Q
+G'A.QG5ZXbFoQ[aGl;jdG5laeG'Eb*rcJ9cGB`t0!."Eer-S?f!.4]m"+>WHIJA6kJ,XusJH1<"
+JII-SE,T]4C1q3iB2),!:Amu_;#F2e;X.0\;#X5k;,@-e"&DZf;#O/j:f%$b##@ui:/+JcoSW[,
+mu6t"!fW+uqMtH4rJpl<qN1Z<plbB8n<,8bPa.W,U8P-#]>MkAg>:iNkNS4mMgonjE,]rRPEKs'
+E,'<:Jq]/=L4];V!.=coIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*D5sQC+&-S"#q>StD^M
+U84T^Vl-MoX/rG+YHY:<ZaI6N\@K2`]Y;.q_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=hV[8L
+ioB([jlYail07L!m-O--n*fc8nac8Bs7H<`!quB_rV6Egs8)Zjrqu`noDX=@JcE.XJ,~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D$K^@0
+j5].X<`N.!r_ierp/UrgrDWVl!*&nqrDEMis&&Yk$8*eV0In_82Dm9Er\OR@&j\ZD5<Cqf3&iiT
+2JGTT9MeSar_reopf$ibr`/hpi`#kVq,?ras"5o^1c%<Z4?Ybe3]K)X2)I$D0ek@80JtXB1c7*H
+2)R3J2)dZ]4$-&+8P2WI8P&hNs$cuZr^RDd7R]d86S^eo:Jjtf;YjAm;uKVo;u]bm;%$9#;GpFl
+;GpFl;H*KkpJ_#gr_W\o;u9Mo<W#hr;uTbq;u]ko;ZKep;u]bo;u9Ms;c6Ll;uKSo;>X5k;uTVu
+:f1%c;,C*e;$Bip:f1(fr)*JlrDEPls&&8`r_WYnr_ins;,^Em;Z0Pk;Ys>j;?0Yp;ZB\k;Z9Sp
+<;ohn<!cQ$:f11k;,'_Vr_<>drD3/ar)*;gl;R^Fs#gTN4?btp5sR[462s4J56*nH5lWtI6hsma
+=T;J$=Sc,!=T2J'=R'&d=T)D%>4u1t>5_V&>5VP%=T)>"<\IHP;c6Ii;H$Os>@1lTE-?\aMiNm_
+Pa#BU=]J<q:JFP]=B83n:/+J\<Dumt;c!9h!.=coIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#Ke
+P*D5sQC+&-S"#q>StD^MU84T^Vl-MoX/rG+YHY:<ZaI6N\@K2`]Y;.q_8=+.`Q$!?aihlPcHjkb
+daQ^rf%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc8nac8Bs7H<`!quB_rV6Egs8)Zjrqu`n
+oDX=@JcE.XJ,~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjT]jlGL_
+j5T%Vi2WcTVPU)`U8"?STV%jJSXfVIs-`qUrg3bRQBqN:!1*;Cq33%cLR3mPBqC`VLlI:OXf\S"
+Vkg#VR$<_mM2QSAbAr#\L]3A/Np2PjN:r8/NW>.>OSt:BP*>g.+-h2%?=-s/T:MI?P`q>nN/<4@
+K7ni,H?t:"Ko(VBM#E/:MMktS@UQXP['fn?r3H@-&?i4:X/W(rUgB5-Q[XOCNg'@'rfdAFrfR2C
+qih&Es-3VJOn"M7O,f1tNW4t9MZA_5MZeuuNJrkqN;nn9NWG6&r/U]7rJh/CNfK*ZNK&sXrepo9
+M2;.dre:B*"bh\dLPUcaLB<9gM>i>+M#`A0L]<20L]*&/LB*2*MZ&G9MM[1IMuAM7Mi<VeNW+k=
+Mi*CMrepl<OSt:AP5^XPPa.N#R$sJ3R@9TCRJiQ^IXHEfH#I\>E-=uOrD35cr)*>hnPf!Xs&oD,
+r`KM/='/O+=]ej0rDrr"$<C5/<E3!t=JDObqP=.frMKRlrMKIi!3,RiqQ'@js/Z1$nZ;kqYH[u1
+rj)I.s0N]P[^NZS[^W`U\@K,[]">\l`6$<SgYqAap&+Xc(U9s5O+i(4J;USeRY?-8G^l0ZXg>+0
+XS]4#I<p?lJ:N3%JqJ]/Knb>;Ll$tGMi<UTO,oBbP*;,qQ'[l*R@B\9St;UKTqeEZVPgAlWiN8(
+Y->.9Za@-K\%0&]]Y2%o^qmn*`Pom=ai_fNc-FY^dF-Ooe^rF*g=k<;h;7&IiSrnXjlY^gkiq?s
+lg4!*mdKW6nc&([oCW%Ts7ZKerqQNhs8)Wirqu`no_sFAJcE+WJ,~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjTPjlGL_
+j5T%Vi/3AJL]3#.L&H])KD^?#Jbss!IsukGJ,OipIfOrjI3EB9E+WQYF`D81BkM15JU`)pH?OFO
+Df'9&BjGkOBPh^3rd=Qhrd*gSjEUNHqg/6g!.=Zl(gL?B:ec.XFEDSCDf9K.BObO]@pr_M?"O"I
+s()4CBDuKMB4t@I<`P!4M26ucLAuo.K7nmVK)^B.Ist%2Oa_1gFaF%8s*jloomHacr-SNlI/SE_
+HMr-fGQ`;:G^4T6GlDshH?oL7s*=HeoQpXcH[G^;"FGH?H@#I5s*"HdqK2paF`_\HrH8*]!HiSb
+GQ2jdGQ)dbG6E)3G'A0/GkQ@]G5ZUgG'.qNGB`q/q0MscrHeKj!.=cos*jrsr-nWps+(-$s+13%
+rIOp!$Zg<,Df0-!AS#RN:Amua;#F2f;Xm]V<!,om;,@-e"&DZe;#X8j;#a>j:&n)g:B+&_MZ8V'
+N:W&*Nr"b7Nr>%9OSt=:P4t1/Ot;f^Q'n5<W3<VA`6?]`h;RGWkj%MtNei(+EH?/HNi%8GDJj61
+ItNK7LP1?XL&QLHIXcluJUrE*K7nr5L51SAM2I4MN/is[OHG]iPa.N#R$a;2S"-(ATV8'SUnjlc
+W2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(feC<%#f@\g2gYL]Bhr*JQj5]7`
+k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfs7u]kqtpBjrVcBfJcC<$[/YX~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjTRjlGL_
+j5T%Vi)N`U;c?Zh<Vf\n;Zouq;,U<i;ZK_p;>X/i;>X6+.k!2)/20"?1b^aA1dOGo4Zkkg4$!:!
+s"t!65>b0O;,[Blr)3;goi1rkqc)QRr`&_mp/:oC#rXUq5!D%k4$#G%3".Z$1G^d?0J>+;1c%&h
+1]TE31^l9+4Zb_t8P)QJ8P)JP8,l'X7fZ$X70Q.J-9XXkr_`YnqGdJnr_i_o!`Drpr)!Yr;c?Rn
+;cNZnrDN;es&/ems&&hqr)E\r!)rkrs&8nrr_iht<:a#g;Z'Jj<<#hu<)ZXlrD<r#;,U:j;Gg:f
+:f1'b;?'Mr;,C+fr)*GkrDESmr_`Sk!)ren#Z4Jt;c?Rk;,[Bl"&_uo;uKVn;u0Dh;$'Wo;uT\p
+;Z]io;>X5k;uTbr;u9Mo<W5r*;Gg7f;bKkY8ki&UrD35cr)*>hnPf!Xs#gWO4?bto5sRY"rB^HK
+r'(BL5X7Ot4@&gIrE'&$rE/nts&f5&s&eSiqH3`"rEAo!r*'#$r`]5&s&f,!r`9&!,?.T>;,L4h
+<ENI4ASZ:0IYEZ<O-,WjPa,ET=&Vsk9MeSf?N*_,9MS8Z<Dumr;c*?irdB*AIt3'#JV&N,KS>/8
+LPUeDMMmFPNfT6_OckomQ'I]'R$jG5S=Z=FTqS6WUo(&gWN*#$Xfen4ZEppG[^WfX]=bhk^VI\&
+_o9U8aN;TJbg"GZd*^:keCE1&f\5'6h;-rFi8N\Uj5oFckNM0plKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>^<gqu6NlrUg)?s+13Ws*t~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rokKfkND!ijlPR`
+j5T(Wi8CW7Vl-DfUnXQUTV%jJSt,YHs-`kR!gf4=rg*VNp6GH<,F=CBOG.>@R?<D\Nf.VSWMlYg
+St)15PE1]\AEqm=H@L^1NrG+6NpD\kN:i2.Nr>(=OoLREPPp_"H[T7/>Fh=TR[TJ)P`LcZL4k/4
+Jq8;qHA701LP^kFMM[1JMdp7+Fge]b[C*BKZi%*BZ*1:1X/W(sUp7Y4H[UX-Ockolqi^uCs-!>C
+s-!8Cs-*VNP`_+,O8t@7O8t@>N<kQ(N/NUQN/NYoMuSb5N<5&uNVne:O8P%8NVAG@O,f6[NJraO
+M2-k@re:B*s+^Q/q2"X!!/UW0oSEC%regc6r/:Q3s,6i5rf$N0repr=Mi3PnN<,'$rK7,C#a:L<
+QBml*R@=,C!LfGTRf8fVS-tO0I=-<[Ec>o::J^d_r)*Aioi(Tan5THlr`KJ-=BAR,=B\i*<rZ5,
+<``:$=&i4"U\pniV50rarhfXlrMKLj!N<!hWqrdjWrK+"XRN=nY-5)/Z2M!+ZNRYC[C3LB[f*]7
+\.-$^^;._1cdge0kj\<Dq#;/DZD=(NJq/<%Tt&.!IX?BkL7kBKY-"c$YQ'"OIXh?IE.NUnK7nr5
+L51SAM2I4MNK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%
+_SjF5a2lBGbKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?d
+p\4X]s7u]kr;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rok'ZkND!ijlPR`
+j5T(Wi8BHKLku%b!/:E*s+C<&!J,k#Jc($"IsukGJ,XoqIfOrjI3WZD@VK=PGB.P6@qo[XJpr,p
+G]e+KE,TQ,B2Z::IVj(HH[Ga>qKr3flZqN8qK_sarHeNlrI+]Os%ibkG'3e*%WH?)D/3cq@prkU
+?s[,EralRMAnPdjAnG^i=&r@2re^Z2s+UZ1L5(A8re(3%s+(K+IY!B/CiFNAHi/<lIf4]fI/eQj
+Hi\SAr-S$]r-A<es*4Thrd"KfrcnZnH$OX[H2`*iHiA?[HNSS@I!bj=!."Kerc\?crcJHhF`hkN
+F`_a#FT?UaG5ugcGQ2jdG6E/7F`hp*GlMsfGl2dcGQE#3r-/-`rce9b!."Eer-SEhs*FcoIJeQn
+J,F`sIt3(KJH1<$JH:@Rpjrm&EH#l7BP(jeAku4u;#F2g;Y<u_<:Eoc:]jKg:/Lpcr_NSjr_<Gh
+r_<Mj9hbGA",i%pMslVuN<5&uNV\\4NW"n:O8G%;OnY%5PP^LCPP^LDPEPp-/X)HcR\-@SYd_<b
+bgY8#i8`q^l0IZ$P`1?AF`DDCL6.^FE,KN1Ee8q#M2-c\L&ZQ%IXh?IE.NUnK7nr5L51SAM2I4M
+NK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_SjF5a2lBG
+bKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rok*[kND!ijlPR`
+j5T(Wi8@U7;c?Zh<Vf\m;Zfop;,[<j!)ienqbR8iqbeXi.Ocu#0f_*H0J>1;2F0Sm4Zkkf4$,D\
+2`*+':e+D\;c6Nm;uBPg;u0Jn;ts>M;uTbm;ts6(0.o+=1-Ri_4?GSa3&iiT2)I*Er%S.-s"t0@
+2)R3I2)R9U5!(t-8cMH`8cM?]7fZ$X7fl.M7/fU^6T@;':f:4j:fC<f<<#ns;Z'Gn;Z0Gm;Z0Mq
+<)Zcp;ZTlsr_iAes&/kor_`_pr)<l#<)Z^p<)`cqrDN\qm8Nm]r_inu;Gg9f;>sJn;?'J`;?'Mr
+;,C+er_iYks&/hnrDNYos&/kq&5lA';c?Rk;,U=j;c6Ii;cEZnrDWSkqb[Dm;cEZns&/ts;,I-f
+!)rkrr_rbpr`/tts&B5%:f1.h;>s5j92A@Z;#F2g;Y<u_<:Elm4[)%o5sRY!rB^HKr'(HN5X7Ou
+4?ltOr)`r#rE/nts&f8'r`JJhqcNf"r`\u!r*'&%rEB,%s&f/"rDrqu-W<o>:f1+g<`rX7Ao)L4
+IY3K7NKB<dP`q82=^+j&:JOV];cm$p:]=&m:K17n;cHWj;u_7HIXh?IE.NUnK7nr5L51SAM2I4M
+NK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_SjF5a2lBG
+bKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+itUM3i8EMLWMcYkV5'cYTV.pLSt2GKRfJlUQi`V?QN!3NQM-U>PTuc]K9h:HTpq:+KoD"(Y-4e$
+US+3FQB@8eMMf-hSp#I6NfO$uooAF!m#:UsrJgl=rK.&ArfRDJPa$TGr`oZ!SXZ.;rf\OfMMd4E
+KnY/0H[0plL51S@M27"FMMmC%@UkS0['[6K[']h=rj!'>YH=k+WMuhgQ]$-=Ko2#jPP^OCP66u1
+Oc]R)s-!8Cs-3_NP*(ierf@,@q2bcBOH>N`NW+q?O,f3Xr/CT4qi(rCN/`gWNK0!YNK*ptqi1T8
+!0@)=qiCc;s,-u:M26rcL&Qi,L]<21M$&QjLkttc!/gc4s,-f4!/UT/p4ra+MZ&G5MYi>3Mu\e8
+MZ&J5M?AcqNK*ptoo9!1s,I&=!frG)rfIPNPEV8sQBmo*R@=,CrL3bUrga"Z%%NfUIslWgG]%J;
+EL6Q!rDEMkpJ^ofpJpW^s&oA'"^"i/=BSc)<rZ5+<``7#=&i4"rhTLhrMKOkrhfUk!N<!kWWK6$
+WqrdjWrK."XRWFmXoY`1riuI.r3QF1rjD^5r3u^9%D'3d_8a[Fe_T9MnFleRrthrBTp1FbJV/uk
+fqa=LIs?O0VPpf%XfM<%!e#NIrd]<GJqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]h<StD[L
+U8+N\Vl-MoWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=+.`Q$!?b0/#RcHjkbdaQ^rf@S[/g=tE=hV[8M
+ioB([k2tjjl07L!m-O--n*fc9nac8Bo^r.U!quB_rqQNhrqcQirqu`no_sFAJcE(VJ,~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+isXl*i8EMLM26qAL5#SZs+C<&qLSTq!e5ZJrdXorrI=irp3e0-C12$k@sE$1Bk1mk<e>pOI!U$[
+Ec>l3BP;%=Q$m@bF*`32I/83hHL#k:Gl)d`HMi*mI!pEM?N*\5G]n.NEc5o6Ch[TrA7K+X?s[,E
+r+6%DAnP`TB`;$4FT%%$Lk^Y<L4t;7rdtZ3K7\Z+IrfaRC2\-:Hhr0jIf4]eHiSNgI/SEaHM`!e
+GlE!eGlDsgHN&0nG^4R\H@,U:om6[dqKi6jHiA<kH2`'cGPQC_F`dG%s*"Eds*+ZiGB\4Rrc\?e
+rc\0`s*+Bc!dAm6rce?drc\HfGBe?1GQN/:HN&9jHM;afI!pG@IfFoqIKG"LJGt*"K)U>rK)L</
+JoPaLDf'-#AS-Dg;#O8i;YO,d<;0D\<rPqq:B=3erD3Gi!)NGd!`)NbregZ4mu6jtqMtE3rf6r<
+r/gi=pQG97rK@2EqiWh#P*1riP*;,rS"QRWZ+.NfbgY4uhr<_Zkiq<ok*;!cIs>sTEdWtGKQ:sL
+CN"QPKo:bBK_gB(I=?\FJ9lcuK7ei2L5(J>M2@+JN/`jYO-#NfPE_>uQ^F20S"-%@T:hmPUSO`a
+Vl?\rXKAY/Yd(O@[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5Vcd:(fe'uq"f@\g2gYCWAhr*JQj5]4_
+k3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s0M`U~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+isF`(i8EML<)Z^pp/UrgrDNhs;,L4hr)<Slr)!Air)+(X.O[#&/NP^E1GCR?2a]kqr]LBG3]f5Y
+r\b!L7n6?P;c6Nk;uBPg;uK\n;ts>M;uTbm;u0Am/hd2\)a6DH4?GSa2`N`S2)I*E0JG.60JkUD
+2)I0I2#]?82a0Df6iK[W9E.T`8H20[7fGme7Roj777Amo7Sco[<)W]p"&i/u;u9Po;Zfor;cN]o
+r_`bo;Z0Pm<;ohr<<#km;u]bn;u]_u;,C+f;Z0Pr;cH`p;ZTirr_s&!;c6Ol;Y<rg<;TVn<!$'!
+<;fbq;?'Jj;>jDm;#jGg;#jMk;$9co:f($e;Z9Pn;Z0Jk;?0Yp;ZB\q;>sMo;$p3";c6Lj;,^Ck
+;Z'Jn;?0Sl;Z0Jm;ZB\n;?Kcm;,dEks&8qss&0%u;c?Xpr`/ttrDa2(:f1(d;G9bW925:[rDEMk
+pJ^ofpJpW^#!P7;5sRY$r^$QLqEG*J5<q=qpfRAos&f5&s&eSiqH3`"rEB&%!a8f4qc`r$r*'#$
+!*K)!rDj_7<)ZXj:f1(g<a&d<B5M^8IY3B3N/s)"OV!S6NEK@d;Gg4b:f1;(:espe:'OQn;cQgs
+;#4)lI=?\FJ9lcuK7ei2L5(J>M2@+JN/`jYO-#NfPE_>uQ^F20S"-%@T:hmPUSO`aVl?\rXKAY/
+Yd(O@[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5Vcd:(fe'uq"f@\g2gYCWAhr*JQj5]4_k3(sml0@U$
+m-X60n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s0M`U~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+it(/.i8EMMhVG*-VPKr[TqMCW!hPsQqjRt^R@'A.QBml(R$X-5Q1pLdLhhs(BUb?NM3!RQX0&:r
+USFNNR$EbmM29KXSTK1/O,j'tq2YK9s,QK+m>U[srJgl=rK%#Arf[;F07A:V?!a.pSXQ%4P*;#f
+M2$\7KS4l'I!UO%LP^kDLl$tHMMkqPA$<>J['d<K[/@6@ZE^U9X/r;#W1_1TI=[37q31]=s-*JF
+s,d8Cs-!8Cs-3_NOcb`drf@,@q2b]@OH>P%NrG(DNfB$WN/`hrMZA_7NW+t<NW5%=N<"q9NW5%=
+N<5&uNW"n;O8k7?O8k=@Nt%,/N/NUOLkg_?L5(J<reCK0qhY</re^T2s,$c5"c8+nM26r\M#W>3
+MYi;3N;eb6N;eb8N;nh8N;eh9Nq856NfT6_OcfX+s-*JJrg!SOR/WQSRJiQSS,/ZdS!oe9OFDV)
+H?*tADK8QMrDEMkpf%)iqGlNUs&TA+='/R-=o;>#<rl?$r`'"u<2BMirMKOkrhfRj!3#Uk!3?+!
+qlBFj!irE(pT4FurN6(%!O&a+Z2V',ZN.B2[JmW3[h$!Z]=kqqa3;r_hrX.op\a^a)#LS7ToFbW
+K7fl'_2F"pH[146V6@J6Y,hE&!IfOtJ89^fK7ei2L5(J>M2@+KN/`jYO-,TgPE_>uQ^F20S"-%@
+T:hmPUnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfC
+i8ESRj5f=ak3(sml0A97"mtaHn*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Zi>O~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+isar+i8EMMhVEsBL4t?\K`6W(K)1&sJ-LLPIXcitJ,XoqIfOrjI3NN=<+f`@F)Yu/C2%C5J:2`h
+H$44KDf'9%Ataa$B5M[7Hhr-dHiA?WH/s5IH2DpcHiJKn?3F)":j7*^F:N8.D/F'&ARf.X@UNMJ
+?2A.6B4h-V"BSW)L5Pqd#)7hcL4t;7rdtW2K7\Z+Is@)jDK9lGr-\QorI+]prI+!ZrHn0_qg&0c
+rd"Herd"NirH\?f!."Qiom6[dr-SHkrd+]mH$TC6qKDs`GPlX^FTQ`/FoHR`G6<)6GBj(1s*4Qf
+!Hr\bGlDp_GlN!bGlMsiG^4OYrd"Khrd4WjpNlpgIK"]nJ,ausJ,XruJc:9$JcCB%K)(&uJdZpF
+E,TT,BP(de:f.*frDNDhr)EMmi`6.X:JXa`:]F5k:]!li:JOVZMZ/P&N:i/3N/`hoNr"b6NrG+;
+OSk78P4t1?P5LM,P*;)mP*;)mP*(liPa.W,Tr+ot\\H//db!41iT'%^jlY[biR!dILO45dF*34t
+Oa2"cDJX<DKo(bDLP5MX!IfOtJ89^fK7ei2L5(J>M2@+KN/`jYO-,TgPE_>uQ^F20S"-%@T:hmP
+UnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfCi8ESR
+j5f=ak3(sml0A97"mtaHn*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Zi>O~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+isF`(i8EMMhVD+0p/Uofr_iqt;,L4hr)<Pkr_WPjqbe%X-RpZ!0K1gE0JkRA6:*q!4?ia*$og1)
+2)SH#7SZfX;c<HjrDNAgs&Aqq"]A8t<)cfn<8^^T<;BJj;B.;B2)I0S5!1nh3]T,Y3&`ZN0etI;
+0/5+91c72h2#fE92a0Ae8H)3\9)qQ_8H20[7fGmd7Roj777B(":Jt%g;Ya;l;u9Pn;u]hq;uTYq
+;,[Blr)EYos&B"rqG[Dlr)<Vns%ikr;H$Ln<;BGt<)Zaq;c6Ljr_iDf!*&kprDWet<;f_t;Gg7e
+r)*Aipeh&hqb[>krDEGis&&bnrDEPls&8qqs&8qp#?"K!;Gg=j;uBMn;uT\n;u]_q;>a;m;,I6h
+!`Drqr)*Yp:f11krDEVor`&nqs&8nrq,RGo#?=`#;,U@h9`@]b;#O8i;YX2g<;KVS<WbTQ5X535
+s$6HG!'^BIs#p6]qH*]!rE9,%lrj0erE9,'qcj#&!*f>(r`T/&r)s&%q,dPr(0+:2;,C(d;,^P#
+?=[bfFa8FfL5ChJrJhDJN/<77=B\a(:ejb_<)uor:]F,o:/Y"f<E2soqGREDJ,Xt6JV&N,KS>/8
+LPUeDMN!LRNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPg>kWiN5'Y->.9Za@-K\%0&]]Y2%o^r!t+
+`Pom=ai_fNcHab`dF6Upf%8O,g=k?<h;7)JiSrnYjlY^gkiq?srp0gUmdKW6nc&([oCW%Ts7QHe
+rV6Egs8)Wirqu`no_sFAJcE(VJ,~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnn%=hVI"cVP^-fT`CbbT)bJ^SGeoXR[O/B#a^jCQ^F/,QBq91qNN1lMLpk@LS(*%O+iOR
+XfSP"UnaTOR$*YlN/;P<`c?KXLQ;.jqMtQ9s,QK+mYpasrf7#>rf@,BrK8+IIU?GfStVaHR[',$
+Oc5*MKS>&2IslcnKntQaM$f/tM2R:L@U`iW\,E`6[/@6BZ*1=2XJr4sUQp1UL5_:ZPEPg,qi^uC
+s,m>Cs,m>Er0.,E#*Y13OH5HarK$i;!g/S+rf7)?O8b4BO,f8"N<"q:MuAY7NrG"<NrG%<N;ee:
+Nr4n7NrG+;O8t@@NWtK%N/NRMM#N/0LAcl/Ll$ufMZ&D/M?\opMM[4IM>i>2M>;r/M2I2dMu&D3
+Mu8P5NVeb4N<#"<NW5"=O8b7@OoLUEP6-u6QN!3OR$mrBrg<kWS"#rDSc>/fS=Q4@IXHNiG\h>9
+E;i`6;Ya8h<;]bd<pWoe<WQ<(r`B2)=8c2"=8u;*<E)st<2HGjVYm@lVYd:kW;!:lX8]-qX7rXo
+X8f9nXo,=&YH\#2rj)I.s0Vd5rO2X5s0rQM]=kqraj&;gi9'Csq#'a`(q$iJR#HcXKT3CVWeQ"L
+H%M!NV6mP1XK;9%s*t'!H%CR"K7nr5L51SAM2R=ONK0'\OcklkQ'IZ&R$jD4S=Z=ETqS6WUo(&g
+WN*#$Xfnt6ZEppH[^`lZ]=bhl^VRe)`5Ta:aN;WKc-FV]dF-Lne^i@)g"P39h;7&Ii8WeWjQ5Oe
+kiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu6NlrU^#>s+13Vs*t~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnn1AhVI"CL5(D9KS>*YK)gN"Jc($&IsuirJ:N.JIfFltIeA+4E+NHl@:aS&DJE]rCP..e
+I!U']FE289CM@EaF.$WVEd%G/qL&3fr-I[Sj`pZJqg/0e!dn<\r_O>QGBJ"KEH#c3CM79h@preQ
+?X@#MB`;TOB4tpiBkV-\=&t9<rJ;8DKnY88K7no1K7\`-JV/2oH#.JCGlE*kI//3jIf4]pHiST^
+HieYBHh;X]H2i-gH2`'eH2W'gH2W'hH2i3`HN8HkHiABoH[:#;H2i-fG5umdGPu[hGBS.PG'A0/
+G5c^cGQ;sbGlN$kG^"@VrceBes*+3^rH\Efs*"HfrH\Bgqg8?hr-JEkrd4Zm!.Fiqr."]p!.Xuu
+s+10$!eGrToRd-qrdtN/E,]`6D.[ElAc>R+;Ya8h<;]bd<pWoe<WZ&l:Amug;#a>j:&n)g:'+.J
+MslVuN<5&uNV\\3NW+t:O8Y1;OnY%+P6@&4PEM+.OYi8dQC=D>W33M=_8jmMf@o*>iT0([j5T"S
+h;+<^N.?1rH#n=pQ%sL$DJX39K7o/?LkLHXL&ZZ&J9c]tK7ei2L5(J>M2@.LN/`jYO-,TgPEhE!
+R$a;1S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6a2lBGbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$
+Zi>O~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnmn9hVI#e;uouuqGm>jrDW\m!)i_n!)iVi!E)el;BRM>-nZu%3ArZI0JbOO6:!du4?>J_
+2E*NQ1bCjd92AFY;ZK_b;uT\m;u9PP;u]hn;uKSp/hm8^s#q&Y4?P\c2`NcT1c-sC0eb::0/NSc
+!&X[4%5]q#2Ej;e8kDTH91qkU8H20[7fGmc7Roj775@(u;,U7ir_rkrr)EYoqc*Pn!`W0!rDW_o
+rDWPlrDN\oq,@;krDW\ns%ibo;H*Qoq,7An;cH`q;ZBVo;Y<rg<;fbo<!#ut<;fbq;?'Jj;>a>l
+;#sQlqGR2f!)ienqbmDjs&/emrDE\q;H!Kms&/hps&&eprDNAgs&&hor_a##;G^1e;,U=kr)3Pl
+!`2fprDWYo##eDt;c?Xppf.c&<E<.":Jk"e;GKkX9)_]e;Ya8h<;]bd<pWoe<WYQO5lO(L5l3bL
+5!M=t5!8gHq,[PurE9)$pK7K"pK@>pr`T2'qcibts&o5&r)j#%pfIJr"'&<!;>sDl;))$P>@;#X
+E-?MUJq]#=N/WaTN/EIGK7A>R>?Op':Jjqd='SX!:/+JY:fL@m<DudnqG[EDs+#BGJqJ]/Knb>;
+Ll$tHN/WaVO,oEdP*;/rQC+&-R[]h=StD^MUSO]_Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_=u_Sa=2
+`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[
+q#C0iqY^6ir;HTcrdk*#s0M`U~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!A5sh;-l@VPU$dT`q*]T:VUErga"X!LfGTR/WHPR/WHFQ2HjiUQ'nlL52CjQB?o^N+T2m
+W2-2]S!]P*NK/m`hq"9EIYIHUqMtQ9s,QQ-m>UXrrJgl=rK%GMP*19C?!^g0TU_O?rfdhRNJWCC
+KnP&0IXHNsreUT2s,6o7!K2j7@KF!JrO)X3!OK04ZOO4EY,n_(WM.@VIY3N?rfd>Eqi_8JPEV/n
+PEM(-O8tFBP5LOCPQm>6OcYWbOT(=;O9^o0OH5HaO,s:%!frA%rf-l8rf-l:s,I&=s,I#:pl5<6
+$]U1,O,oBbOcYZcO8Y+=N<>,tMM_+a!/^Z3reU`7Mi*DkMuJS7Mi.Fg!/^T/re^N1mYq.)s,R&=
+r/Uf:s,R,=!07&>s,d5B"Hnt4Pa;97!goCDr0mVS!1`kUs.'+[&"];\S;_lEHZsLMDf0Sn;Yj>j
+<;]bi<qob_=Sc,!=92T,rDrr"#Zb#,<**(!VPa6g!2fXks/5pspo=@ps/PprpT"7os/bgorN64*
+Yd",3rj)I.s0Vd5rjM^5&@f9^]=l#!b0JPliTKV"q>Kj`'XFa5O+i:BJsrmXOG8.1H%DH_Z+'_5
+qQG*lIt3'#JqJ]/Knb>;Ll$tGN/WaVO-#KeP*;/rQC+&-S"#q>StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_Sa@3`lQ6DbKS5Vcd:(feC<%#f@\g2gYL]Bhr*JQj5]7`k3(sml0@U$m-X60
+n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0M`U~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!8/rh;-l@L5,Y\",);ZK)1&qJGt&uJGt&rIf"NnIf+U<G\CK'@q9e)DJNctBNB_7IX69_
+F)c2;CM@F$Yb?G\E-6R,Hhr-hHhr'UH/s5IH2DpcHiICj:/=W0G'%hHE,TW2CM@BjA7AtU?X6rL
+BP1rVBE)WMBkV-[=&t9<rJ:]4KnY88KDgK&Jd?pZG`c]XF*E$2I/nZoI/n`fII2C_H[PI3%srVJ
+H$Xa]G^+L[H$FRZH22adH2W'gGlW0bHNSS@H[Pa<rd4]mrd+Qh!-nHd!-nKerHA0arc\9b!d8g4
+r-86ercnEfr-86cq0;marHS3brcnEfrd+TkrI"Wlrd=`ms*Xin!.=cos*jcnrIFlurIP'&K^s`q
+K`6T(Hi@shDJ3ZqA7e_;qG[>lr)NGkpfHfaqc<blrD3Gis%iVh!)NPg!)2m@oo0!2NV\\3NW+t:
+O8Y1:OTL].Oo(=/P5pjHPQ-d^OckomQ'[u5UT1N*]Yhk<e(<=0hVdAOrnn.@hV?oBhNX%WI!>R3%
+tfb$H?F+CCiOoWLlI7GK)11FIXcluJV&N,KS>/8LPUeDMN!LRNfT9aP*2#oQ'Rf)R@B\9St;UKT
+qeE[VPgAmWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=+/`Q$!?b0/#RcHjkbdaZdsf@S[/g=tH>hV[8Mi
+oB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`noDX=@JcE(VJ,~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!SAuh;-l@<)lpt<;]bk<;oeu;Gg:hr)<VnrDESm"&Vro;uBN<0.JA)/M0"@1c-mA1H%Qb
+5!1qj3]T8\2E*KNAP>Wl:fC=mkYq:Tr_rbphc'MRqG[Dl'J;'s2)@E[4?Pbf4#f5[2Dd6G1,/\^
+""uGg2Z5K52#]?:2Ej;e8kDVR9)qQ^8.\9\7Rp!=7moa62F1,8;GpBk<;ohp<;fbo<;fbq<W#eq
+;Z0Pj<;oer;YX2j;Z9Vo;?p&q:f1(g<)iWks&/kqs&/hn!)iPi#?"K!<)Zaq;uK\p;u]hs;ts5g
+;ZBSq;Gg<j;?0Yp;Z'An;Gg<e;Ys>g;YsDm;Z9Vp;ZB\o;Ya5o<)Z^n;>sJn;u]Yo;>sJn;uBPn
+;#sTprDWYo!`Mupr_ierr`/qsqc+/-<E)ss:Jk%i:J=DS8lAR`;uK\n<VBJg=6s&d<rbJa62s4I
+56a;95sIRq=Sc,!=T2J$=SQ#!>5)1r=T2J%>5MP&=p%o2=]t`-s&o5&r)s&%q,[i(=&r=#;Gg7e
+r_XG2=^5EJD/j`FJ:`K1M2@+IM26tAK7WuM(Kt$F:Jjk`:K17l:/F\\:JFbg;H6[p:\n"6IXclu
+JV&N,KS>/8LPUeDMN!LRNfT9aP*2#oQ'Rf)R@B\9St;UKTqeE[VPgAmWiW>*YHY:<ZaI6N\@K2`
+]Y;.r_8=+/`Q$!?b0/#RcHjkbdaZdsf@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^
+o^r.U!quB_rqQNhrqcQirqu`noDX=@JcE(VJ,~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rokNgkND!ijlPR`
+j5T%Vi8EMLh;-l@g=i<rTqS-PT:VYRSHPIPS!ocBR/`KQR/WEPQN!0LPl?pJPl6mFPTY`sOGRS?
+Q]R)`NK1*BVl6AaSsu%0O,o0V[DADWH\@OQO8Ft:O8k70NU2VqNW"k;O8Y._OaVU`?<s1pS=Q.9
+QBdSmM2-h=KS+l*I!g[(L5CkGMuJS7N/R[E!P,`<[0!_AZi7<GZa-g=Xf\Y+Tp0nQLlRacP`q;o
+P5:@DP*;.0P6I,3OcYZer0$r@s-!DE!0@,@s,[#<!g/Y.rf@,@rf@5EOH5G#N<"q8NW+t;NW5%=
+NW4t2N=1c+NK9-^OHP`fOH9="s,@,>Mi*DdM>`>2M><&3MMmCLrJ:H0rJ1Q5Mi*DjMu&D4NV8>1
+NW5%;O8P%;N<bK'NK0$[O-'@'s-!DG!L8uLQN<JAqjRJQs.'.]r1*hXrLOLiS"-">SUPp6H?X=I
+D0#MPr`&hrpK%/mpfQlcpfIQ"=T);#<sD],<)m""<;!0hVuWglWrK.!WqrdjWrK+"XR`LlXoY`1
+riuF-r3HC1rNuX6qR?L7&%T9`]tq\2d+@+6l0n9>r:'^q^WiRANJ<CGMR'dsMM(nT#DAeJ['Qm<
+X89#CIt3'#JqJ]/Knb>;Ll$tGN/WaVO-#KeP*D5sQC+&-S"#t?StMdOUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfDi8ESRj5f=ak3(smlKdg'mI'E2
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$ZN#F~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rokNgkND!ijlPR`
+j5T%Vi8EMLh;-l@g=h:9KnY25K7\^OJbjosIfP#uJ,OilIK+cpI3<B;<,#oCFDu&0BPVC8J:2fj
+H$4=MDJX*$B8;RrBlA+iHhi'hHhr'aGlW0bH/s5IH2DpdHRW6,:esi1F`_\HEc>u6ChRHl@q&qW
+?s[,NB4baiB4tskBk_6]='(B?rJ:Z3KnY88r.G'&rdk?&H?j=GFaEt6!.=co!.ONfqg8BlnpCFa
+q0E'gHN&6lH?oL9rHSNlH$OX[qK`?kH?jg`H@#R9!.+Nh!.=cms*FZlrHnQlrHnQjs*4Thrc\?e
+r-&-arHA<fGBWq/#'bE<G^4RZrHSBfrd"Eds*+6_rd"Kfs*4TjrH\Ef!."Nhrd4Tkrd4Zmrd+lt
+H[C-fI=6SDJ,aurJ,OotJc(*$K7npVK)gT%KDgK%K*m9aE,ff7Ch@9jB)>O+<;fhk<r5tn=R92d
+=T)%q:]O;e:&muZN:i/3N/`hnNr"b8Nr>%;OSY(>P5^UAP4"P6Pl6gEOqj1FQC+28V5po2^;S4A
+e(<=/gtgiCrn[Y2rnJ(@hVXd$MhHJ#H$+FpN/`%%rbVm\Jq])@Lk^QYKm%rrJ:W<)K7nr5L51SA
+M2I7NNK0']OckllQ'IZ&R$jG5SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=
+ai_fNcHab`dF6Upf%8O,g=k?<h;@/KiSrnYjlY^gkiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Eg
+s8)Wirqu`no_sFAJcE%UJ,~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rok<akND!ijlPR`
+j5T%Vi8EMLh;-l@g=fP+<;T\o<!#ut<;fbn;YsDm;Z9Pl;Z9Vn;AC`2.kN;+3&EEG1G^jT69dRp
+4ZYYdr\k*?2EsT":Jk"grD`Pj!*&Vip/:oh!*%`Pr`&_m">2>b2)G4p&Ni3;4#f2Y2Dd6G1,1L;
+0ebE_2%;H$2DmBL2E*f`4\JC=r_!5_rC@Dg7Rfm=7n6!:1-S6*:K.-ir_rbprDWVnr_ikt<E/io
+!E<(n<<#ks;Ya8k;Z'Jn;Z0Gp;H$Ooq,@8js&8qqs&&eopJ_)ipf.5kr_rqt;H!?gr)3Pl!)ien
+!E)kq;Z'Dl;ZBVj;Z0Gu;Gg:h;Gg:h;YF&b;ZB\p<;]Yr;Gg<j;?Toq:f1*b;ZBSo;YsDk<<#kp
+;uTbu<)Zcq<W,r.<E)su<`W$o;H6Ld92&"U;uTbp<VKPk=85na=nu2"62s4H56O/85<q=.=8uD$
+=oDIt=TDY!=o)8"=oMV%>Q%_+=^(f-r`T;)qHEf"s&f/"s&f;&"'/E#;Z'?';H?t-A8,q%GC4pm
+KSG8;Lkkta!J>t#IMc=%=]J?q;,C.l<`Vpi:/+GZ<)Zgu<E2ll;g*Y@J:W<)K7nr5L51SAM2I7N
+NK0']OckllQ'IZ&R$jG5SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fN
+cHab`dF6Upf%8O,g=k?<h;@/KiSrnYjlY^gkiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Egs8)Wi
+rqu`no_sFAJcE%UJ,~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[MrokNgkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k5TTqS-PT:VYQSc>/[R[O#>!LK2QQN3?NQ2QpIQ2[$IQ2[!kQApN[KSQ4h
+Q&^TWO-HcDVPU&]S!T;#N/NS?VOVdUJ<KPcpl>?7!06Q.m#:LprJgl=rfAX\IU-8dTq@mHS!B8'
+OcP?SL4b24Jpr)qLPUhEMM[7JMMd@MN+-8-\@&dE[/dT5Zi@BMZa-g=Y-"auaEN&`MNO3jQ'RYu
+PEM,nPa)*0"I,+6P*5a*r0$r@s,m_OOH5KbOcYZeOH9C&s,m>E!0R5ArfR5B!KW9:NVne:NW+t9
+N<#";N<"q6N<#"<O9C`.OH5J$NrG">N/NVmMZ8P5MuAP5MZ\inMMh@j!0$i6!K)a4M#<)1Ll21i
+s,?r8qi(N6repi:qi(N6s,R,?rf@,@rJpo;rJgl=rK%#Arf[;F!gK";rKmSQqjRJQ".YpRT)>/W
+T)P8YSI1@*I!^'SEG]Yn;uTbp<V]\n=8Q+O=o;>"<s)E%<`]!nrMT^qq5XFps/PprpT"7os/bgo
+rN64*Yd",3rj)I.s0Vd5s0hd5s1&*?%D0?laNW)bhrO(lp%eORrtr#EUQgUkMhRP6[[W)#H?k(&
+VPpl)Y-"i&YQ',tJV&N,KS>/8LPUeDMN!LRNfT9aP*2&pQ'[l*R[]e;St;UKU8+N\Vl-MoX/rG+
+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$
+m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0DZT~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[MrokNgkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k57L4t;6K7\^OJbafsIt7NJrI4QjrdOip+`D"&C11XsEGfN&Bkqa?I=-?d
+G&qYAD/*`sTRM3"D/jt!Hi/9hHhr'dH2W'aH/s5HH2N!fHiIIQ:_Z]MGBJ%MEH#i4ChRHn@UinW
+?s[1:B*r<bBPD0oBieAqN;\S9L4t>9L&?T(KDpH+H')fYEd.J1!.Ofns*jWhqgAElrd4]op3cme
+qKi$c"+#<?HMr*hGl;p]H2r<kHN/6jHN&9kH3/G@Hi86kH[Pd=rd=Zkrd"ZlG^+H3GlN!eGQ`58
+GBeB1G5umYH2`$gH2`'fH2DgjH$FUZG^4T5HMr-fH3ASBH[L5?IJeKmHi8<lIJnWpJ,XorJ,Ffs
+Jc(*"KDpQ'KE$W&KCsm)H?!nCCh@?lAQ)P,<;fhm<r?%r=P6jV:]F5k:]!lf:JUP@o8WU,qMkN8
+r/^i=p6#<:mZ[U6rfd;D)3^;LQC=D=Vld;9^W+LEe(34+gY:N=h;$fbg]-%Ih;I;QP`UfQH$"CU
+JshRJF`)#3DgI%jMhm2aL&Z[JJV&N,KS>/8LPUeDMN!LRNfT9aP*2&pQ'[l*R[]e;St;UKU8+N\
+Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^
+k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0DZT~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[Mrok6_kND!ijlPR`
+j5T(Wi8EMLh;-l@g=k6Z<;]bp<;fbk;Ya8j;>jDk;uTZD/1N&$.kWh=1,(C<1d48k5!;%i4$,>\
+2`<Ng5Y4XH:fC:l<)lms;cN3aoMX@@s&Akos">-G2)@E[4Zbeg3]K&W2Dm?H1GCO;0erVbs"t0B
+2)R3K2`Nua9M.nU9)qQ^8/"K_7Rp!>7n#j*5YXsM;cH[p<)ros!`MuqrD`bpr)EYo!E<(r;u]es
+<Vf\p;u]hl;u9Gm;uT\n;$0]p<)iWk!)iepr_`ep;H!Kms&/hprDEVoq,I>lrD`boqbd8h!Dubn
+;>X8j;?'Pn;>X8i;>a>j;$0]p;H!<hpeq)jr)<Pls&&eos&&Yks&8qqs%rboqc!Gm!E2np;[$-#
+<`E!rr`/kss&9M/<`W:&;bp7e;,'_W8lJ[f<;fhm<r?%r=P6jW5la1H56F)75=,9Ms&f5&r)ibt
+s'#/"qH3`"rEB)&s'#;&r`T;)q-*]!!*K/#rE'5)<`N*t;>j<#;,gY$?Y*qiF*N+_JV3rTrIk<*
+JU[NF)h*<g=Bnp*;,0n`;d`R#;,'e[9i"_e<Dugq;>O5kJ9ZWsK7ei2L5(J>M2@+KN/`jYOHG]h
+Pa.N#R$a>3S"6.BTV8*TUnsueWN*##Xfen4ZEppG[^WfX]=bhk^VI_'`5Ta:aN;WKc-FV]dF-Ln
+e^i@)g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?
+s+13Us*t~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it^S4i8EMLhVI#CgY1B7fV,"3T:_^HrLF"[R[O/Bs-N\OrKmJJplkcDrfeS!NeNdULS:0'NJERU
+B<JA8V5'`UR$NhnMMZ/=`H$BWL\$T$NrG(>Npr%qN:Do,NrP.jOFDY,?=8edSt2::P`h2jLl$e<
+L4b#+I!pg,M2I7JMi!=MN/NX(@CitVrjDj8[/RBA[C!9GYck44SYD?pJ;B6aQ3<J=Q'@O4PPg[F
+PQ-jIPQ$aEOnt7<P6$i/rfI/B"H\b.OH9C&s,m>E!0R5ArK7,@"-/A$Nr=t7NWP3#Nr=q=O,f8!
+NW4t8N<G9&OH>V'OSk.:N<+urr/(W8N/NRNp5Ap/rJUW1s,$Z2o8NU,s,6r;qi(N6!07&>s,[GG
+NfK0\NK*ms!0@,@s,m>Erf[DKQC%Q;!1EeSqjRbZSXuFDSGeuYT)G5ZSG\obRXT[4H#[hAD/rVT
+<V]\o=8Z1m=m9,`=TDP%<rQ2#<<6'#qksCks/GjprMopuq5a7is/Q.$nu_nos/uF,rNZ@-r3QF1
+!4Dd6qmZU8s1&ZO]>2A,cILY-k3MR2q>:0ZrtrkeVk&p)MM6hb\Z1^FH[C!jSZ9!-Xf\Z"YB,5F
+JqJ]/Knb>;Ll$tGN/WaVO-#KeP*D5sQ^F//S"#t?T:hmPUSO`aVl?\sXKAY0Yd1UB[C3QT]">Vg
+^V@V%_o0O6aN2NIbK\>Yd*^:jeCE1&f\5'6h;-rFi8N\Uj5oFckNM0plKdg'mI'H3nF?MK!qZ'V
+rq-?dp\4[^s7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it^S4i8EMLhVI#CgY1B7fS,$4K7ec-rIG!"JbO]nJ,OikI/n`qI3EcI@W#dhG]I_;ASPs\Jq/8r
+G^":NEG]K*B2s/BAo)L1pNujdqg80crd"Bepj)"Hpj)d`)1,[s?;XR:G]n1LF)Z#7CM7?k@q9%W
+?sR+;B+/HcBkM-pBkV3^<fN(:M$&KdKnfP[s+C]2JV/,mG\qGBHi/9nIXQ\DIK"ZrI=D0D!.Ooq
+!e,QGrd4frI!pGBI/SKlI/eQnI/\KiHMMpeHN&3iGlN'`HN/?kHN&0iHN&9kHN&9jHN/<lI/SEl
+I/J?iH2r6dGQ<$_Gk-.YGl;mgH?oC4!I8qfH2N!fH2W$jH[L8@I/eWmI/eQlHiSTnIf=isIfFop
+J,k0!K)^K%K`?])KE6^WrIalurIkT0E,ff6BP;!gAlSb0q,[Gqr)iSol!!d`"A_ij:J^sb!)NSh
+pPe^'q2YB4rf6o;rfHr<!0[>DrfZZ4rfdSMP`q;oP5^[FPS0=PT;/Eh[Ca5qc-Xnhf%8R-g&'M'
+gE,/+i8WeZTp:UlIs60\GDhW>GBIb@CiXuXM2[:HKDC4BJ:W<)K7nr5L51SAM2I7NNK0']Ockll
+Q'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0.uQcHjkbdaQ^r
+f@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`noDX=@
+JcE%UJ,~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it15/i8EMLhVI#CgY1B7fMkiK<W#hr;ts8c;u]_n;Z'Jn;B[\C.5<G,3]8lQ0JbOE6U<q"4?Y_c
+3B/rU2(Lmc92A>]r_rer"&r9"<;oer<:j,[;VG(L<;f`#/h\k81cdiar]C0ArAOg:1c$rd0aKHk
+1c@6L2)[;j2?,W84p"DM8cD?_8c2-Z7LM^W7n6$(5"AFG;H!Kms&92&<)lmq;H*NnrDWVnpJV&k
+r)N\ps&8qspf%,hs%rns;,L4hrD<Pmp/;#j;cEQkrDW_or_reos&8bnrDNbs;cN]or_`Aes&&eo
+!)rhos&&eo"&Vrn;>X8k;>O2i;#sQnr_iPjq,.2kr`&hprDNMir)*Sp<)iip!Dubl;u]hm;[-3$
+<E)mp<;okt<r>ts<rH),<)-:e;G0\V91i1_<V]\o=8Z1m=m9,`=TC_a56jG;5=%P9=BPQ*r)ibt
+s'#,!qcNf"r`]2'rE95)>5h[u>5VP'=T2D"=T;G*<`N'r;>j<$;H6h(@:j:nFEr:aJ:W=NKE$N+
+J:E#rIK"U6IXm$'?<LK3;G^:g;-$ds9M\DW:J=\f;H6ar;>F.3J:W<)K7nr5L51SAM2I7NNK0']
+OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0.uQcHjkb
+daQ^rf@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`n
+oDX=@JcE%UJ,~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i"=l'h;-l@g=k64f:ek1T:_^Hrga+\S!j8Crg3SNrg3YNs-<2?+HqOoObIG;R?*2bN/as@
+Vl6AbSsu(2OGo'[g!uX>ItmKSpl><6!06Q.mYp[qrJi+`IslcO??`!3St)45P`q/eMhd"?K7JE"
+I><W5Mi*CJMMmDlN;m>g]"#0I[f<c7ZOXCM['?j=YHFVBGCP7'OoCXHQi36MQ2QsHPl[,5rfdDH
+rf[8CqNC`>"Hnn0OHBI("d4t.O-#J&OoCLFOcY\&OTCQ)r/Uf:p5]04!fi>%rJgf8r/C];qN1`<
+rf6r:s,I/>Mi7Rl!/pi8repW3!fN"sr/:l=M27"FLl%#fMt;o'NVe\6N<5-$O8P+=O8Y+=O8k=A
+OoCOBP6.#8Qi<?PRJWHMS,]#\St2DKSHGCQSXfGF$%dSRG][k@Cii\R<rH+u=SGtp>3B,c>5_V'
+<rH)$<E*'!Vu<RnWV`^nWrT0rX7rXoX8f9mXo5C(YHY81Z2V'+ZN.E2[emQ5\.cEa]"Pu#bL"kr
+iof\!p%S=\rVl6b(pp`KQ&gc^M4(]VUl0\JH[CI@WO9"6YH%E%Ee&^mK7nr5L51SAM2I4MNK0']
+OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnc
+daZdtf@S^0g>(N?hr*GOioB+]k2tjjl0@U$m-X6/n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTd
+rdk*#s0;TS~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i!eN"h;-l@g=k64f7enWKE$Q&Jb4KjJ,auhI3EH;;effAF)c#/CM@O8J:)`iH$+:MDf'6%
+D5j1XCN4NFp3Zacqg7jZpj)%Ipj)d`ra,V#(LD<-FE;JADf'<*BOt^a@UNSM?Y=%`B`;ZAB`hF;
+NK!gms+UQ.LAZ`5KS+l/HBDo[F*E(^r-eNms*acnrd=cqrd=isI=;*B!e#HErd=Wlrd=]lrd=`m
+qg/'brd+TircnEf!IB+hHN&9kHN&3iH3JYAH$Oa`rH\Hjrd=`ms*X]jrd+TiqKVp`!dK!8qKW'e
+qg&-bs*=TgrH\Eh!."EcrH\9drcnNjHiA<nI!pBir-eEhrd=cqqg\Wps*srs!.k'"s+C9'rdt?,
+K7\`.r.G-*KS9)R$$1')DJEfrAS+s=<rH+u=SGtp>3B,c>5_S*:esmd:&n)h:ATq?NV\\5NW+t9
+O8b7:OT:RDOo:I1PQ$dKPE_8or0':.QC489V5pi/]Y_b5cI(+ieCE.%f\+s1f\,!5gtq#LjQ>[l
+PEUrUI!:!_JrbqHGAh>:D/t5^Mi3@GKDC1@J:W<)KS>/8LPUeDMMmFQNfT9aP*2&pQ'[l*R[]e;
+StD[LU8+N\Vl-MoX/rG+Yd(L?['mEQ\[oDc]t_=u_Sa=2`lQ6DbKS5VcdC.geC<($f@em3gtgfD
+i8ESRj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Z2]=~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i!eN"h;-l@g=k64f2P`J<W,ns;ts8c;u0Dj;uTZ*.k)u%/29.B1GL[@1IFJpr]CWN4?GJZ
+2`<L!91VlU<;ohr<<#r%<`N.!<)`cqoMb*SiD]bUr_rhL'/)1!2a9Ge4$5Sa3&`cS1c-sB0`Eg+
+2#oQ32$Z$"2a0E!8kK"Ts%3/[%n9&Z84Q0>3'^88;H$Om;Z9Sp<;ff";c6Ll<;TVl<;9Al<;T\p
+<;ohq<;KPk;ZBSp;GmEkrD<_r;c?Rm<;0>h;?Bfr;uT\p;u]bp;u0Jk;ZKep;ZK_p;>=#h;u9Go
+;,U<k;>sJn;>X8k;>O2h;>jDh;ts5j;uK\o;u0Ae;?Bft;uKVl;uK\k;u]i"<)Z[or)E_rr`/\o
+#uXVs;+sYV91i4\<rH+u=SGtp>3B,c>5_V$5Q<nJ5sP?OrE/hts'#,!qH3`"rEB,'r`]>)!*]A)
+oih8rpK7Gs"'/B#;Z'?$;c[%,@V9LrFa8=^IXckEJH()rHlmcdJ:`H/M-4%b<)QIc;,^Uu;GU"^
+:/+M`;HHjt<)EBhEe&^mK7nr5L51SAM2I4MNK0']OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'
+Y->1:Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdtf@S^0g>(N?hr*GOioB+]k2tjjl0@U$
+m-X6/n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s0;TS~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjThjlGL_
+j5T%Vi8EMLh;-l@g=k64f@STHTV%jJSt2FBS!f\3R/E<NR/WHNQLg=aR#HW\L52CiQ]?f[Mf#Po
+Vl$5_S=#V(O,Jmt^70:mK9Pecqi:N6!06Q.mYp[qrf/+NIXbX0ELr_nS=>k2PE:`[LP1;4JUi2t
+LPL_DMMm=JrJLf;@UZmYrO2a6rj*-C['[-CYHN/?Q$\(<O-c44Q2m9LQ3!8:rfmbTQ'R]"Pa7Su
+rK7/CplbT>!0[>D!g&P,rfR;EO8b7?Oo:FCOSk7?O9Uc+NfT3[NVnh:NW"n;N<5-$Nr=t;N;ee:
+NrG+9O8t@?Nr=t;NW>(9MuSb9Mu&A4NW+n9NW4q<Mi.Fh!/g`5o8NI(!0$c6s,I)?r/gc9rK.&A
+rf[5D#*bF?Q^F/.qO7>O#Fq?VSXc4@Sc,)OSc>8fSVqrDH$=1GCN9;Rr`B&#pf[MuqHN)eqHNi#
+s&T)"s&8u"rM][or2TCip8S1pXK;#qrN?1(s02L-rj)I.!OT94[f!W5\.lKb]>);*c-k8#iooe"
+o_/(UqY^<[ru(.0W1oE6MMHk[XK7_BI!^-gOeo7hXKAV*q6+smJqJ]/KnbA=M2@+JN/`jYOHG]h
+Pa.N#R$a>3S"6.CTV8*UUo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uq
+f%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`no_sFA
+JcE"TJ,~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjTZjlGL_
+j5T%Vi8EMLh;-l@g=k64f@SUPKE$Q'Jb4KhJ+J(5E+`Tq@q9e'E,&ouBNTh7I<p-\FE2D=Ch[R7
+NI#;WF*i:^p3Zacqg7p\p3GkHpNcaa+'r;]:Jb5=F`_\HEcGu5C1q3iA7AtT?sdPZAnPajB`;`G
+BE`*O<fN&qreUW1reC<($\X+:G^+(FFF&FdIf+WiIK4lrIKFqHIf=cqIfFfrI/SKmI/SKlI/\Kk
+I/eQlHN&9kI/SElHN&3hGlDsiH@(#8HN/?lHN&3gHN/9gHN/?gI/SBlI/SBjH2;dcH2i3fGlW0i
+H2`-hGm8M;GBe@XH2`$gH2MsgH2DjbH2;ghH$Xgbrd+`pI=6M@I0"_Dr-\Kl!.OfprdFisr."cu
+rIY$$rIk0&"b_M[JqJ^SK`?f!Ka;pCE,]Z,B4PQO<rQ2!=SQ%s>5DIc>l%\%>5qCp:Ap.BNV\\5
+NW+t9O8b76Oo:I1PPgXGPEc!/s-+:cR\$7NXKf7K_T0gCcd:(geC<(#f@U#S,hh#-hVdDSkNV@#
+\Wi)/IsZHaG__-3I!'=FCiF`RL5h"EKnK2SG(G6tK7nr5LPUeDMMmFQNfT9aP*2&pQ'[l*R[]e;
+StD[LU84T^Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_Sa@3a2lBFbKS8Wd*^7ieCE.%f\,!5gtgiE
+i8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVcBfJcC<$Z2]=~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjT[jlGL_
+j5T%Vi8EMLh;-l@g=k64f@SSQr`/nrs&8\jpf$udrDW_o&M#=Z0.SY82)@!A1G_!W5X%@03t"#,
+2`3KY6qC*N:f@6js&Atus&JqqoMb*SiD]bU),i.@0JkUE5<V.k4?PV`3&``P1bpj@1,(E]2$,Zn
+2Z,E:2`X&c9M.nU9+jig84c?C7Ros>7n5-q7o)u[;uKVn;ZKeq<<-"t;ZB\q;ZB\l<;BGm<;]bp
+<;ohp<;TVm;Z'Dl;Z0Jj;?9]qrDW_orDWYm%9$5);c6Ll;c6Ll<E)on<;TVn;Z9Vp;>F,h;uKSr
+;c6IiqGR>jr)3MkqbmAirDNJjrDNMkrD`_o"&_un;Z9Ph;?Bft<;KMm;uK\q;ZK_n;[-3$<Dudo
+<W#hr<<-(m<sV`%:fC.`91_bS<rQ2!=SQ%s>5DIc>l%\%>5LMd5!V>8rE/kus'#,!qH3]!r`]2'
+r`]5&oih8roiV5p!``/rrD3o#<**:1A7ob!Fa8:Zrd4cqIXV3E!I]@nHQdfdJV&T3MMu4O>?4U!
+:Janf;,^4b9hnJZ:/k.l;H$Ljq,;HfJqJ]/KnbA=M2@+JN/`jYOHG]hPa.N#R$a>3S"6.CTV8*U
+Uo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uqf%8R-g=tE=hV[8LioB([
+jlYail07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcE"TJ,~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokEdkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(rh0:_s.'=`S!oe6R/E<NR/NBMQ2m3CPTlicKUIaSURRR1M2[L/
+Y-"\%URn'HQBR;fMSl!NF*iP(ORJ80Nqe\8Npr%sN:;f?NdcJ-?=%6;StDRBQ^!euNJ`OEre(H*
+It!61MY`58N/NU'@Cs&J[f<`9Za0P:$aR"?Yc5B]It`cCQN!3NQN!6JQN!-TQBdc$Pa.Q"POan8
+PQ-aFOT(CBOopi.O-'=&r0%#@"Hnn0OHB@#s,R,?s,R,=pQ#64s,?r:!fi>&q2bT;rf6i7s,?u9
+r/CZ6$&jk&N/`gUNJrhoN<>,tMM_:hrJU<,!KE'8N<>3#NK3mqs,Q]4rfR/BrKI8Grg3VO"IY^I
+S"'DGrL<hWs.01[rgj%Yr13kXr13kZrga@\IXHKeDK0T3<rQ2"=Sc1u>5VUU>l7e->#n]'<s2K&
+<iDtrWVidfX7rXoX8f9mXo>L'YQ(g.Z*:M3ZMh*1['fe>rO;^7'tLog_8XOBe(NU<kj@m1o_8+T
+qY^<Zru&GZV4!L*PDGX-X/:i+H[:*oSZK61XK8J(qQFjhJqJ]/KnbA=M2@+JN/`jYO-,TgPa.N#
+R$a>3S"6.CTV8*UUo(&gWN*#$Xfnt6ZEppH\%&u[]Y(tn^qmn+`Q#s>aihlOcHaeadaQ^rf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcE"T
+J,~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokZkkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(K7ei/Jq8LFJGFZpIeA+6GACZ,B4cI3Deis!CKH+<IXQKaG'%_A
+CMIRJH?a.@Fa\UaoR$Oaqg8!^oQf\Gp3@F"?!gr7:K)R^F`_\GDf9K.C1h'f@V#IG"__O\BP2#T
+B`qL;NJrboM#`>1L&d#,Ka<?aH]2ZWEd3'4IfOrpIJeNqI=?\EIKFqHIf=cqIfFfrI/SKnI/A?l
+I/\KhHieY@HN&9jI/J?kHN/9jGlE!gHN&9fHN/<mH?oI8"+,?>H2Dp`I/\HnI!bj=r-A<es*=Wh
+s*=Tir-8?iH$T=6s*4]kGBeB0H2DpfH2W!dH22aeH[>[=s*OKg!IfIqI/\QnIfP#rJ,b)uJ-(:R
+K)C9"K`?])K`?Z(K)gT(L&Zo"L&Zl6J8fIGChRKnAQJe3r`K#"r*'#&em/,W!Er:s:'49eN/[@f
+q2YE5rJpi;rfHo;!0[>DrfZW3qNUoA)O-MSS"?@RXg>OO_oBg@bg"G[daHXqf%/I*rn/LMh;I>T
+kN_F$mdHL/N.ZS*Is?R)Lkg1oDJj<3It`f>Lkb\XE.NUnK7nr5LPUeDMMmFQNfT6`P*2&pQ'[l*
+R[]e;StD[LU84T^Vl6SpX0&M-Yd(L?['mHR\[oGd^;%J"_SjF5a2lBGbKS8Wd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$Z2]=~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokEdkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(r`/nrs&8\jp/CfcrDOk;0IeJ+/hT1C2)?pB1cRig5s7=n3]]8\
+2`<Q_5tF^I;#=/m<)lrt<WH.r<:s2`;ZB\j;W1OV<%]dWr\O[@4[&d,!]`5"r\k*>1,CX?0JG@B
+q)/12"Z\b19M.nU9*e-]84cBD84Q/K8-_%<9hnS_;cEWmrDNhu<E3!sr_ibps&/kqqGd8h!*&hq
+s&Atrr)EJj!)i_l!`DrprDEJj!`N&rr_rhpr)<Vn!`N*!r_ihq;uTYr<)llo<;KN!;Gg:h;c?Rl
+;>F,i;uBMp;c-Ef;?0Sj;?0Sj;Ys>k;Yj>l;Yj>j<;]Yj;>jDm;?'Sp<;]\p;Z9Vo;ufkr;Z0Pm
+;ufhq;uK\p<W?,#<q]T$;bp7e;bg"Y9NM-or`K#"r*'#&em/,W!*]:b"?o(8=BPB%r`]"uqH3`"
+rEB,'r`]>)!*]A)oih8rp/q>r"'/B!;>j<#;H6h(?tF%hE-6ALH$]I:s*Xip!IT7mH5CjRI=Hj$
+L5ChINfI=J=&i-o;,L7n<`Aunr_3Vq<E<+";c-Hh;fI;>K7ei2L51SAM2I4MNK0'\OckllQ'I]'
+R$sM6SXuIHTq\?YVPgAlWiN8(YHY:;Za@0M\@K2`]Y;.r_8=.0`lH0BbKJ,TcHstee'uq!f@\d1
+gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$r/og=k64f@SR&e=`G*rgj(Z"IkjJR$di=!1<YMs-EYLq33+fPa%JjBoe*`SXPb#
+N/j"%Wi)_jV4X0@QB7)aMP.tOI"7"OORJ51NqJG5Npr%tN:;fJIXQZO?<j+oSXu:;Q'@GlMMQt=
+KS"`(J;K)>Mi3SoMuSb9MZdL2]=>?L[f<c8Zi.6=ZE^TUQEY[dLQRjfrKdSOQ^@Q7s-<MJs-<VM
+!L/f>P5UU@OTUc/OHBI(!K`HCP5UOBP5^RFOHGY(Ns1W+NfT6]rf-]5pl,96rf?o;!0@)=r/C`;
+NVAA5NJrhqN<5-"N;JS8N/RXlrJU9+qMkN8s,I&=s,@#=rf$r=O8=q<Oo:C?OoCOBP6dD<Q'Rc'
+R$a<?RK/iVRf&ZTSH#/USGeuYSGJcVT)P;[S-XUnI!KgQD/47m=Sl8">5_\!>kVIu?M.Ut>lIt,
+=8l5"WVidjWrT0uX7rUqX/rDoXo5F&Y6;)7Yd(J4ZM_$0['fh?rO;a8(q7#d]=l)$b0SVkhrEqf
+n+$#Ap@nC[rVl0`(q$H?P`^l_LSUoISVr#EG^tODXLGI<Y,_<$Dh<UoKS>/8LP^kFMi<XUO,oEd
+P*;/rQ^F//S"-%@T:hmPUnjlcW2ZetXf\e2Z*UdE[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Ln
+e^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@
+JcE"TJ,~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$r/og=k64f@SR&e:`I+rdjors+10"q1&Bmp3e'%AQ*8R;g!+tB4u$rJq&2qH[9jW
+E,f`0BkDXYH>@PEn9b+]qg8'`np0MFp3HXD"&VigGlDjcEsZi(DJX$!A7K+Yra5kBB4bdhrb2CH
+CAqoM=(.)IMZ/G4L]3#0LPCQ_Ka395Fb"7GF*db6!.Ofnr-e]qIXh3CrI+]pqgJKlqgJHks*OZk
+"FYZEH@#R;!.=`l!do?Ard"TjHMr-hHN&9kH2r6hHN&9iHN/?eH2r<gI/eQnHiSNmHMDdcGQ<$g
+HMr-gH2r6fHN/9hGl2j_H2r6iGl;p`HN&9iI//0mIXQZnrI"Tm"+G`LJGaosJ,k0"J,k0!K)L?#
+K`?])KE[![JqJ`0re1?,q1Sg'r.Y*(#]Xg&DJ<]pA7kgCqcWl$rEJu#p0IH"oj.8rr`f@sr_N-F
+q2YK7r/U`:rfHc7rK?Q3qNUoAs-+7aR@KqGWii_=^;@h/aND]McHsteeGduHf%8U.gYUoMjll$s
+mI0Q7gm*nVJp_ojG_q95J9PpLCiFHIL5_"HL%p=>JqJ]/Knb>;M2@+JN/`jYO-,TgPEhE"R$a>3
+S=Q7DTV8*UUo(&gWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>
+hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$`#mg=k64f@SR&e5cEGr_rbns&8qqoi(]b!)rkp+=nrl/hJe:2)?pA1G_Ba5s7@q
+3]]>^3&WZG5>FmI:K%'gs&B"us&K,"qc*,bqGR5ipep*M#VI\^2)I'Q4[&d,$p$@,3&WWN1,L^?
+0JWJ_!&jd5s#1*A5!Ve68cD?s8kDQF8OuBB7Rour4ZQ55;c?Xp;uKVl;Zg!!<E/rq!)rho!)r\m
+qGRAnqc3Vps&8eoqGRAlrDESm!E2nq;>O/r;c6Ll;GpFn<;f_t;H$Rpr)<Sms&B"sr)EYnrDNbq
+;,[Bls&&hqqbmDl!E)eo;?Bcp;<UpU;#jMi;u]bo;Z]os;uT_s;c<Tl!)iYjrDNYm"&`&s<;]\o
+;?0Yo;ufkr;Z'Jm;ufkr;Z'Mn<W?+k<s2>s:f:'e9E&&j=oDP&>P;=q?2.b!?1qP&>Q6ni5X.J!
+qH<f$oi_/orE9,'qcj)(qcWPpr)s&%!*T,""]n`);c6Kl:_6N'<`r^:Anc+%FED\MGBeB3HN/<n
+H?jf8GU@]_I=Hj%LPh%MNfTBP=^"p*;GL%c<E)mo:/">U:/=ef=&i6u;#+%.JqJ]/Knb>;M2@+J
+N/`jYO-,TgPEhE"R$a>3S=Q7DTV8*UUo(&gWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlP
+cHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
++QDA<i8<GKh;-l@g=k64f@SU(eC1(_St2FBS=?":R@*r>s-WYLr0@/Drf\InMh.%FLnC3%N/*FR
+C94G6VP9fVR$3YlM2^'<SpPp?r/g9+rfHu;!06Q.nr3't*e/Wh?sd*1St;RFR?a&#Nf/^IL4b,1
+JV&c:Mi<UPreh&AN/M1TLV((*rjMj7s0M[2%(!4CW1Tc1JW#\VQ'V95qNh/Hq3D)IP`u$.rKI/B
+rfdAFrK.,BOo1=@OTU]-P*5a*rK@2C!g&P,rK-u=!07&<qMk]>NfB$Yqi1W9rf?r<r/U`8s,I)=
+r/CZ8repl;N;eh:NqeS6N;AJ3Mueosrf-i7qi1W9!0@&<s,I&=rf$o=r/gr@s-!>CrK@/DrKR2G
+!LT;RRK/iVRK8nJrgWnWs.0%WoUYrP!1j+Z$(HZuH['UKDJ=.g=oMV'>PVP$?1qUu?h[n(?2%V(
+<rl?%r2TLls/Q$upo=@ps/bgoriZ:)s0)R0Yd+/4rNlO2!4Dd6rO;d9rjN]S]">_pa3;o\g>CuU
+m-a?4o(;YOqY^?Yru&hgVjj$5PDPL#Vl5Z.H[1$pQ):grXfee-q60gNB7ttnL51SAMMmFPNfT6_
+P*2#oQ'Rf)R[]e;StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^;%J#_SjF5aN2NIbg"GZd*^:k
+eCN7'g"P08h;-uHi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>
+s+13Ts*t~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
+)<0W5i8<GKh;-l@g=k64f@SU(eC0)'Jq8LPJGt*(J:W9%It3(GJ,FcjI3<NA?u'4^G&qP8ASZ$]
+JUi2rG]n4MDf'9(C8@VRCN+FaHi8?hHhVjWH0]_LGnjXm?VsTnG]e.PF`_S?DJX$"A7]4Zra?CQ
+B4kmkB4u!mC2%?^=)EqUMZ/G4L]3#.L]3#8KnP,*H[osRGC4r>IfOrpIJ\HpI=?\AIfFilIenKj
+HiSNkI/eTpI/J<kI/J<kI/\KmH38G=H?oI8rd4Zk!."Qi"*o3>Hi89jHhi!eHi&0jHiABmHiA?e
+H2i*hH2W'gH1ZFXH22dbGlE!bHMr3gI/JEmIK4lsIf4]nIf=ioJH(3"J,k0!K)L>tK`?])Jd$d[
+KnY89r.Y*(re:B,qhGH#EH#f3AnYagqcWo%rEK)&qd&o%p0[Q#qd&r$s%`Sioo8a,!0-o:rK$r>
+o9'$8m$%:1r0./F7$j@5U8Fup[CO#f_SjL9b0/&Td*^:jeCE+#f@ep8iT0.cm-X3/nFH2CS<o4h
+JUDokIYW`5G]Rb?D012[LlI7IKnK2Ss+=s;Knb>;Ll%"IN/WdXO-#NfPEhE!R$a>3S"6.CTV8*U
+Uo(&gWN*#$Xfnt6Za7'J\%0&]]Y2%o^r!t,`Q$!?b0/#RcHjkbdaZdtf@S^0g>(N?hr*GOioB+]
+k2tjjl0@U$m-X6?mfDqJrpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
+(#n31i8<GKh;-l@g=k64f@SU(eC.Fr<;TSs;H$Ll;Y*i`;ZBT+/1N&$.kNb=1GLU?1c@Zd5!Am-
+$p-C-2DmBj9h8)W;cNTls&AnrrD`Vlr`&_mr)3Aipep0Os"4F.2D[*Qr]U9D!'C0>!B2q91]oEe
+0f&\b!&ja4s#9sA"%,aS8cD?o8kDQF8OuBB7Rp!)4\/@G;uBSp;uT\m;Zg!!<E/rq!)rhos&8Yk
+rDW_qrDieq!)r\mr)3Snr)*Jl!)rhnr_`_nqbdSr;GpIo<Vo\p<;]\n;?0\p;uT_r;uT\m;u]bo
+;ZTcprDNPlr_W_p;cE![r_rhprDESmoMbchs&8qs"B/2q:f70hr_W\m;>jDm;$0]p<)ifpr_`_p
+r)EYnr)<Vp!)rho!)reprDikuo2c2p:f(+f8k_lLqcWo%rEK)&qd&o%p0[Q#qd&r$r]^BHr)s#&
+oND)orE9)&r*0,'r)r\rr)j#%r`T&!)cp'>;c-@f;,L7k='Ap?Anl1&EH?5EF`qtRGl;peGQ2n+
+H$asiK8#,>N/`m\Q'n.I>$G$*:Jt.j<`N)t:C9ik:JXnf<`;ss;#+&iK4fjkL5(J>M2I4MN/is[
+OHPcjQ'IZ&R$sM6SXuIHTq\?YVPgAlWiN8(YHY:<ZaI6N\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(f
+eC<($f@em3gtgfDi8ESRj5f=ak3(smlKdg'mI'uB!V#XYncA@Srq6<b!;HHes7u]kqtpBjrVc?e
+JcC<$Z2]=~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokrskND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;spT:VXFS=?":R@0H7QN3?LQ2QpmPED$&OG0$XKq4^#P)P?^
+B!886V4jTUR?`qtNeuK!STT=5Pl6[COR/&-OSY"<Npr&"N:Do,Ihc?u?D*p^St)15Q'.2cMhQn?
+KS+c(regc9qi(N4"Cdk4\@;IG"1>MBZi%31Ym%b[G_(U0rg!MLqNq)Frg!;F!gT"6rK@)B!KrZG
+P5URIP*(liOnOk;Oco[*qiUuBP5:=@OT1@?N<5-$O8b1>Nrb9#r/Uc9s,R)>r/^o>qi:]9rf-u<
+r/CW7!0$f7!fi8"rf6u;s,R#9s,6l8q2PB4rJ^r?O,o<^pl>B6s,[,?rfI2Dr/puArfd>G!L8uK
+QN<JArgNeTs-s.]S=BJIrgitWopu#P!1j+Zs-jCdP^e++GAV;7E`lQE>5hb%>l@t*?Jf,e?N"1,
+>Q\&.<3#Vl!36!upo=@ps/bgoriZ:)s02I,rj)L/s0Md6rO2[6s1&$:(q@,g]YVS.c-b.ti8j.g
+m-X93oC_nTqu,dZ)7?oLQ^*VpMPdAIToFPJH%:dDYdV'CYcOr%YQ'5oKnb>;Ll%"IN/WaWO-#Nf
+PEhE!R$a>3S"6.CTV8*UUo(&gWN*#$Y-5(7Za7'J\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'umu
+f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTdrdk*#
+s02NR~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokcnkND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;spK7\]+J:RNJ!.acmqgSBi+a7[1De<O'FDu,2CM[%(IslZg
+GBS%HD/F'&WeYt9DKL<oHi8?hHhVjZH2`*iH0okOH2_.R;,9u5G5cUgF)Pu7Ch[V_A.<$X?=.D[
+B5)$oBk_6prb)F9HB!l@reUc6LPLV>rItQ1Knkb*DfU+!J,auqIK+a!I=?WnIJ83jIJJ?hIJJ6l
+I=-GAI/nZmHN8HlHiJKlHNAG>rHeBgs*FZis*F]j!IB+lHM`'eHN&9hHiSNlI/\HmHMVpdGQ<$e
+H2r6gHN&9jHN/?kH2i3gH22ahG^4OZH22dcHiAEhIK"]qJ,auqIK"]pJ,=cqJcC6#Jc:9!KD^E&
+L&Zi+K)pRVre:?+!/:*#s+gQ/%#9XiEH#i3BP1jf=]t`-r`f2'rE];,hd?7erE];*!_uNdpl5'/
+!0-o:rK$r>o9'!7m$%=2qiaL6Q'n,5USk2u[CX)f_8=.1aN;WMcd:(edaQ^qe_/^6iT0.clg=-/
+nalAFp\L,=MM-J+I<^X,KnFVgD/=07JVK,BLkk_Xs+>9EL5(J>M2I4MN/`mZOHPcjQ'IZ&R$sM6
+SXuIHTq\?YVPgAlWiN8)YHY:<ZaI6N\[f>b]tV7t_Sa=2`lQ6DbKS5VcdC.heC<($f\,!5gtgiE
+i8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq-?dp\4X]s7u]kqtpBjrVcBfJcC<$YlB4~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokQhkND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;sprD`SkrDN5cr)3Pl,;1Pr0eP%<2E!BH1Gq-Z5sRRq4ukYc
+3&`cR?U@7Y;,U:k<;KPl;ufqs<;9Dk<;KMn;YX2j;ufkn;WUjW/eTfr1GV-X4Zkhg4#f5[2E!?I
+2>o9-2Z,EC2E3ZZ786BG91qlL8OuBDr^d&Z#"UaA:/=\aqGd5g"&r9";u0Dl;tj8j;uTbo<V9>i
+;u]bo;>jDl;>jAp;,U=kr_ibp##\E#<E)mprDN\or)<Sms&/ts;cEZpr_iYms&AnpqbmAk!)ien
+"&`&q;Z9Vo;ZB\p;ZB\n;ZBYq;Z0Mo;Z0Gm;YF&g<;fbq<!-#q;,I3hr_`\l!)`_ns&&eos&Anp
+s&')#<)cdq;c?Tl;uTbr;uT\n;Z]os<;ons<rQ/&<``@'r`B)$$s-P0:f1.f9M7oK=]t`-r`f2'
+rE];,hd?7erE];*s$$QK=]t`-oND&nr`T2'r*0/(qcWSqpfRW"=o2;(=&r=#;Z'B-;c["*?Xm__
+D/aK8EcZ>EF`qtRGB\6.G:IlcI=Qs(Ll..OO-5ftStr>i=]n[$:ejnf<`;mk9M\AX:K(7p<E2sq
+;Ya8kK5cO!L51SAMMmFPNK9-^P*2#oQ'Rf)R[]e;StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf
+^;%M$_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVR
+o`Fj]p\jmeq>^<gqu6NlrUg)?s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
++QDA<i8<DIh;$c=g=b-1f@JL%eC2jnd%6f!S=>t9R@*l<rg<YN!1*JHs-+dmP*(llLMMm)BUtQV
+O,]0ZXKA@sV4sZPQ^!\oMJ/U(EdE8!p5]38n;mR1qMtW:n;[(!nr5,MJ:M$7?D4$^T:MF:PELr`
+MMHt?KReZ*N/W[RMMmLSN/`dSN+/*b\[VRH"1>MBZi%08Z=8cPH@h!8rKRAKqNq&ErK[>Is-EkS
+Q'@Msrf[)@!0[8DrfI5EOnOn7OnY"@OckiirfIJJO,f3ZN/`mZrf7#?!KN0:NrG%8O8k:AO8=n:
+NW5"=NV\V0N<#"<NVSV7NW+k:MuJ\7NW5%;NW4t9NW5%;O84h9N<,'$r/pc;rfd8E!g]1>qj7JR
+R[T`FSH#,\St5eLs.0%WoUYuQs.0.ZrgWnW$%I;LF`289Di.`t>Ph\(?2S%$?g_=n?i==0?2e(0
+<`Jgos/Q$uq5XIqs/bjpriZ4'!3lF,rj)L/s0Vg6rjMd7rj_p9)7[8j^;@n3cI:D#iT01elg4'/
+o(;YOqu$HXru':uVk9?=PD>'iVkfE/H[:-rQ_pmoYH=t.q60gNC4q:qLPUeDMi<USO,oBbP*;,q
+QC+&-S"#t?T:hmPUnjlcW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcDtS
+J,~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
+(ujN4i8<DIh;$c=g=b-1f@JL%eC2jnd";%D!.acmq0r3h#]4*NBOt1dEc:ql'5N2MI!g9cG'%bC
+DJX&bH(/D_FR"5PI/83aHM)R_H2r6YGklXb?moAZ:eu@\F`qnLEGo`1BkV'h@q/qT?tj=fBP2$o
+BkV6qBPCOlNJrboM#`A1L])r6KMHK.CiOTEIX_0Ds*joprdFiqrdOlqs*t&ts*sur!.FWkr-eEh
+rd=cord=cor-JEkrd4WlqKi<jH[:);HN8BgH2N!bHiA?gHiJKnHiJKjHhr$fGQ<$^HN&9kHN&9h
+HMi'bHMi'bHMi-iI/JEjIf=inIf=imJGk'!J-(:RK):3!K`6Z.KS+o/KDpSpL&d#,M#W81L^JiU
+E,f`-BOtal>5hb'>l@t+?M%Um@.Rb(?N"1/>QIVqqi10,rK$r>o9'!7m$%:1r0./F':5,WTVSQh
+Z*q3U^VI\&`5]m@bl5pBd*g@keCN=.hr<b\lKdj*nFH2CpA"L_VjNI"JpVujHA%*.H$+"ADKL;\
+LQ%+GL\QQ&K5-'nL51SAM2R=ONK9-^OckomQ'Rf)R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT
+\\#Mf^V@V%_o0O6aN2NIbg"GZdF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<hqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
+(ZOE3i8<DIh;$c=g=b-1f@JL%eC2jnd/6l@;u9Ja;uT\o;'7A<.P<;-3&WQJ1GUaR6:!at5!1ng
+2`N`R.6p[':et$g<;BJi<;KPn;ZB\p<;'8d;ufkn;Wgsa0.nn91c%<Z4oRPP4#])X2`<KK1GLR<
+0`F!02?,QH2)[?P3BT](91hiM8kMZG84ieOs$m5@4@i1C;Z9Vl<;0>j<<#kr;u]bo;tj8k;uK\o
+<VBDi;uBMk;Z'Dl;ZBVo;uT\o;u]bp<<#kp;u]bn;u9Jk;[63!;H$Ll;H*Qor_rYkrDWYl!)rkp
+oMbZcqGRMp;,L4hqGRAnrDW_q!)rkp$r^,(;Gg7g;c?Rl;,R<hqGIDo<)Z]o;ufkr;ZBZ!<)Z^n
+;cENlr)*_t;GpFl<)iiss&K,$qH!Sss&f;&s&]D):fC4fr_*Ad3*Q;cqcs)*r*K#&mU5WnrEfG.
+r`fOi5$D.]=o;D$=oDP%>Q.h'=nGnl=o)5&=&r="r)!f"<**70@:X%dD/]Dm!ci@(rcS-^+a%sO
+GBnRcJqSo9MN!RWPaIr5V5g_,>Zt3.;,^Ci<`N,u:]F/m:JOkg=8l+u;#+&iK5-'nL51SAM2R=O
+NK9-^OckomQ'Rf)R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZ
+dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<hqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+)rfi7i8<DJh;-l@g=k64f@SU'eC2jndEnJUSGo#XR/iWPQNEPBRJiHPQM?^jP`h2lR>QWZKSQ1h
+P`LT\NG>PrWMZDaT:;(0OH#%Pe=Lr8L>n9nOSY">NfB(jNV&2$N?<RtIXka2TV.jKS<oS,Q'$r\
+M2$\:J:W6%N/NUQMMq@j"CmJ(\[_XI"1>MBZi%08ZA?3AI>*TBrg!JKrKmPMs-NVKrK[>Is-EqU
+Q'@MsP*5a,!0mDF$^?j=P*1rjP*(ifOnb%;OT^i2PEM.,Op7,5OckliOoCCDNJrgVrf@)>!K`B<
+NrP+=Nr+k;OSY";NW+q<NVJJ0N<5-"NVSV4NW"h8NVeb7N;nk;Nr+n;NW>.;NrP1<OnY%=PQ-mH
+PlR-LQi*3RR@9S6SGo)ZT)YAZSH#/XSG/QUSt2GOT)YA[SH#)YSH#2fSqMN=GAhG9EcV"]ra#J/
+pg<l*lXBWtpL!l*r`oP0<;NZpWr9!oWWK6&XRrXoY5PO(Yl1j,ZMh-/[/[Q5[f3c7\G`lT\@K5a
+^r4::d+$e*ioT@el0Ia*nauPMqu$EUru&;]V4*[3Q&E8QUSNs#I!L:'T<#9/Y-"e-q6+RdKS>/8
+Ll$tGN/WaVO-#KePE_>uQ^F21S"6.CTV8*UUo(&gWN*#$Y-5(7Za7'J\%0&]]Y2(p_8=+.`Q-'A
+b0/#ScHstee'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0h
+qY^6ir;HTcrdk*#s02NR~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+)<0W5i8<DJh;-l@g=k64f@SU'eC2jndEmL@JH15oJ+nEjI3<K@@;97^F`M>7ASc']JUi8tH$=CQ
+Df0E,A?2APCN4O^HN8HlHiJEkHhVjZH2i3jH1-"SGoL$q?=?Z,G^+@RF)l8=Df'3$B4PL^@:3JO
+BP7<X$Yj?gC2%?q=)j4YMuJP5M#E,-L'WHJMOSO*GCG&@If"WlI0"eFrI4cps*t&ts*sZird=cq
+rd=iqI=;*Bq0i0f#CLlFI!pEjI/A6kI!bj?rd+]mH[>O6rd+BerHe?f"+5HCI/A6jHMMgeG^9"/
+rHnNi!.4]ks*F`lrH\3brH\3brd4TkrI+WnrI=Wls*slq!IoY!JcC6#Jc:9"KD^E&L&HZ-K7no3
+L&6W)L]<)1LPCQ^L]3,0M>i81M#N/8F)c/8B4tmgAbo[2?2\+)?i"0r@JXC+?i==1>le2*rf-K/
+rK$r>nr`p7m$%:1qiaX:Q'e&4U8FrnZa[NY]tV:u_o0U;bK\>Yd*U1fdam.-i8`t`lKms-nalAF
+p\F^bs8S:NMM-S-IsI<8KnXekDJX<<Jqo2DMMLqZCP.:oL5(M@M2I7NNK0']OckomQ'Rc(R@B\:
+StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf^V@V%_o0O7aN;TJbg+M\dF-Lne^i@)g"P39h;7&I
+iSrnXjlY^gkiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+(ujN4i8<DJh;-l@g=k64f@SU'eC2jndEqbir_r\lnPfEb+]0d?-nm/'3ArZL0f(UD6:!h"4?P\f
+2`WcT03Ch::JXme<;0>i<;KPl;ZB\p<;9Dd;ufkn;X%-Z/f?<!1Hn#d4Zkef3B/uV2Dm<J1,(F:
+0fCpHr&+L5%QHI26qg6G91qlL8OuBDr^d&Z"uSVC:f1.grDWSmq,@5ks&/kqs&/eonPfNh<rQ+u
+<!--"<)rlrr_ieprD<\q;c?Rlr)*Jls&&\ls&9%u;,R<ks&/kq"&_un;Z'Gq;Gg7fr_iSkr_ibp
+!*&nqqGR;k!)ibm!`Dlnp/Cuj!)rhoq,7;l;>sJi;Z]os;uK\p;@6?%;c6Lj;H$Ll;Z9Pn;#aDj
+;ZB\q;?p-"<)Z[m;c<Kkq,@>mqGR;k!*&ns!`iB(qc<\ts&fD)=BPQ*$!:&';G^"]8kVPJ>lJ%-
+?MIn(@-_7t@/"%,?N+42>X.g_rE0#$r`]2's'#8%oigujrE'8*<`N*s;GmEk$<1&.>[ClNBPMC%
+rbhpYEH6,Br,r$]s)fr=H@13oKnkMCNK96gR[p4OXg,:E='\s/;,L:k=B/6t:JFSY:JXqh;ccps
+<)NHiCP.:oL5(M@M2I7NNK0']OckomQ'Rc(R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf
+^V@V%_o0O7aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*mdKW6nc&(boCV\J
+p%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp)rKN.h;$c=g=b-1f@JL%eC)ald*L"-S=?":RJrTQQNW\DR@'B@QN3?IQ2d'nPEMN!Js2"H
+Tpq=-MN!R,XKACuUSFBLQBI;hMjq5HFaJe*qiCc=l&Yh*qN(W9o8WF%oSjW8I=QiR>G7[[T:MC:
+PEh8hLPU\<KS08S"cS=rN/NVlN!5,LL:b%,rjDp:['[1;ZjO+7[<R1VNKfZmQ2[*IQi<<NQi*0K
+Q2d0MQN3?NQN3?NPQ?u2r0%5IPE_:1Pl?mEOogc-Oo1=@OoCFDOckn*PQ$^TPEM,mOcbfiOcYWa
+NfB%rNrb9%r/Lf;Nr=q;Nqe\5NrG%<NWb?#N/NVlN;eh8NrG%:NW>.>Nr"_8N;eh9NW>.>NWkE$
+N/`gWrJpr?r/^c9#*4k.P*(lip65K?!1!GJqjIJQ!1a"YrLO(]S=TDErgj(\s./tWs.0+Ys-j+\
+SXuJQTEp="I!K^NCi+=o>lJ%.?MRt+@/FBr@esO2@/41/?N4=0X8T'tX8/dqWrT6nXoGR%Y5kg*
+Z2_-.Zi7?3[K!]6\,<c7[i2fg]YD>&aj/;bg>:iNk3(snmI0T:p%\C]rT=+ujM%XeRZ`nnLnCW;
+R#ZQ@H\\)gYdV$D[&gD*YA/`EL5(J?M2I4MNK0']OckomQ'Rc(R@B\9St;UKU8+N]Vl6SpX0&M-
+Yd(O@[C3QT\\#Mf^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?tm-O-,
+mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC)ald*L#6JcC8oJ+S14FD50"AS$+-D/3a!C/oh8I=6EeF`_S>
+CMRX,ML0&TFQ@fIHN&9cHM)R`HN/9[Gl)dd?N4@I:/-"XF`heIF)Pr5CM.6i@q/tU@:B.Krb;CG
+#\n'eBNK#0N/R[l!/UT/rItN0I"?'PFaF%:rdO`o!.OcmrdOip"+G`LIf=iiIf=cqIfFfrI.Vje
+HNAM@r-\Nmrd=]l"+5HCHiABnI=2!?!.+QgrHeEh!IB+jHMMpeI/A9gH2i-gH1cL_HiA?kHiA?k
+HiJEkH2i0jHi/3hH2;jeHi&3iIJeQdJ,OorJcC5sJH1<!KD^E&L&?W%L&Qi!L]<20M#`A-LBr!B
+EG]K(ARoHQ>lJ%.?MRt+@/FBr@esO2@/41/?N4=%Nr>%<OReP5P3nJ.Pl-aFPV8AkS=cUUX08k=
+\\#Mf^;7\)`lQ<Gbg"GZd*gCog>1`KkNV9umdTf=o_%tTr;Q]q)RGimLkL/*G^5""K7.u^D/OEC
+L5CkJLl$e=pk3@8L5(J?M2I4MNK0']OckomQ'Rc(R@B\9St;UKU8+N]Vl6SpX0&M-Yd(O@[C3QT
+\\#Mf^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?tm-O-,mdKW6nc&([
+oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC)ald*L#9<!6,t;c6Qm;XRI-;D'FI0eFt<2)R0D1c.-Y69m^t
+4ZPSb3&``Q3CHD5;,L6j<:s/i<;9Di;ZB\p<;BJd;ufkn;X79]/dF$`1G_3Z4[&d,%llU.2`*BL
+1c$j?0ebLC2#T<32Z>Z=4@2_79)_Hd8kDTF8cD9\8,kRP:/Ohc;Z'Jj<;BJl;ufkr;ZBYq;Z'J_
+<!cQ(<E)su<`N+!rD`eq!*&qpr_ibpr_i_mr_i_mr_`u"<)cdo;,U?l;ZB\p;?'Pq;H*Qms%r_m
+!)i_n!``2urDEYp<;f_s;Gg<j;Z0Pj;#jMf;u]hs;uT\o;ZKep;uT\n;uK\q;uK\p;Z0Po;Z'Gn
+;Ys>i;Z0Po;Z9Yp;u]bn;uTbq;u]es;u'>k;ZKer<<H3#=',9"s&T>*=]nj/qH3epr_Wel:.e/I
+r`oG.ra,D-r*]D1k[OBsr*]>-ra,V1p0%>rrE9,'qcj)(qH<JpoiV?"=]t`+"'8N';uBN$;cQn&
+?!q,RBPVF#rbVjXEH-#?F*.A%s)]r<H$XpiK8#,=N/j!aR%'_EWNWV9\\2TX>?Op(;,^:i<)ZUh
+9hnDY:/t:q<`W0spetp\Knb>;M2@+JN/`jYOHG]iPa.Q$R$jG5S=Z=FTq\<XVPgAlWiN8(YHY:<
+ZaI6N\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plg4!*mI'H3
+nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTgjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_SXZ+;rgEbQ".,CBRJrTQQN3?JQ2d*JP9?6MBT7g_
+SXPh&NKK7(XJ_niUnO6CQBI8eEKH-#H@hL\O8b4BOcY[jO8b7;O8b12NV8>(N<Xo_It1j4R/WZl
+S",e.P*(c]MMHh:Jq/E&N/NUOMi7Om#)eFMJ%N;&rjMU/#]buhH\70;Pa)04rg*JKrg*SNr0I>I
+s-EMJ!1!PJrfd5Drg!MJs-*GFs-!GGrK7)@s,m;B!0[2B!g8b1rfdAErK7PMO,f6[NfT3\OH#8!
+NrP.?Nr4k:NqeY;OH,?^rf.5CNfK*XN/NVkN;nn7NW>(:NWY?&NfF!tr/Cc=NfO$u!07#;"HJP(
+OH9@%rf@)>rf@)A!0[>D!0[&>rfm>Is-W_Ps-`qWrgitYs.'1^SbnrWSH57OoUZ)USb\fUScGD\
+TF-^/I<]gSDea<Z?2e1,?i=C1@G52g@JsU1?NOQ7X8T'tX8/dqX8f9oXoGR&YQ(j*Z2_-/Zi.92
+[K!]4\,No9[iMui]=l"ua32iYfA#3CjQ5OelL"*2oChqSqu-Nnk5Q=8dA<>#Od;!]WLp&KL4+>r
+NM*G[\Z`*;X8&i.KSG5:Ll%"IN/`jYO-,TgPa.Q$R$jD4S=Z=FTq\<XV5L8kWiN8(YHY:<ZaI6N
+\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNV6rlg4!*mf)YZnF?)?
+oCMVRp&F^cp\jmeq>^<gqu6NlrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTcjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_qLSWrp4)aa+E;!kBOt1cEc,N)ChnZRI=$6bG'%_C
+DJX&iF)ko1FFN=uqg/6gpNlLXs*F]jnTatW.UQRj?VjR@GBS+MF)l28D/3j!ARf1X?t!JWBPD-n
+BkV0oBkV0]BT8"1reUW2rJ1?+#uttiD/sfHJ:N.IIf+ZqIf"QlIf=`qIenQgIf=cqIdqghI!^3f
+HiAEjIK+ZrH[L2<HineEI=2!?r-A6erHnBeq0W$erHeNjrH\Efs*4WkH22ddHN8BkHi86jHiA?k
+Hhr$gHi86mH[9s_r-ABjHN&9hI/\QlIe/'gJGk&uJGaruK)C8tKE-`*K`-W)L&m!_qhP0,rJ1?-
+reUW2pP0*%E,]]0BP1jgG?t2SqHs2/r*e;gr*fP3qHj5/o8`g2rK-W5rK?T4plt]?s-,1&R@9\?
+V5UK"[(*WV]=bno_o0R8aN;TJc-FY_eC`R5ioTChlKms.nalGIq>:-fru%,sN.un1IsJ,OKSFbn
+DJa<8JV]/BMMHt>pOrR$@>BYqMMmFQNfT6`P*2&pQC!u,R[]h=StMdOUSO`aW2ZetXf\e2Z*UdE
+[^WfX]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tjkl0@U$m-X6?mfr:O
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTjjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_;cH^p;,U<k;u]bn;ZK_f;u]`%/1E&%/h]1A1benb
+&jnuO4Zkkk3BK2Z2`3-L7nc`TrD`#[r)3Pnr`&\lp/D#jqGQ]Z#VRe`0JtUJ5<]!.%m)d13&`]Q
+2D[-E0/5.=2Z,H42uYc<4@)[=9E%Km84c?C7n4mg7o)u[;c6Nj;uBVj;uT_r;uT\k;s[Hc;cHat
+rDiksrDW\m!)i_ns&&nq;GmEks&&_mr_rkrr)*Mnr_ibn!E)km;Z9Mn;Z0Mp<EB)ts&&ns<)ifp
+!)iens&/hp!)i\k!)iMhs&Anp!`W)srD`bpr_i_orD`eq!)i_ns&&ns<)`cor)3Snqbd>jrDNhs
+;c?Xpr_rhpp/Cuj!)rens&/qr;u9Po<W#nr=8uD"=oV\(=UJ&(;,9n]9M/#E?2e1,?i=C1@G52g
+@JsU1?N=F-=o;D$=oDP%>Q.h'=nPtk=UJ>8=]eg/=&r@$;uKTL;cHe">[CiKAnc$qC27X&DfBZ8
+EH6&>EH6)@FEVqVIY!0,M2I:RP*MH*U8P)s[(*aI]bsdV=&i3r<*!^5;,g@g:/+MZ;cQat;c?Ri
+rDWVnA;#\lLPUeEMi<XUO,oEdP*D5tQ^F20S"-(ATV8*TUnsufWN*#$Xfnt6Za7'J\%0&]]Y2(p
+_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gYL]Bi8ESRj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq6<b
+!;HHes7u]kqtpBjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpYcYkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]baY'uRJN<LQiEBKQ2QpiSVr,aKnu@jP`:K^O/8kW
+Vk]r[SsYb,OH>XZetIA=LAR&2OT(CBOR%u,OSb+<Nq/2(N:r82Ii*]c?sd-2T:_[EQ^3o!NJiRH
+L4b,0JUi^XMuJY@NJrdS@sP\u\c0&4ZjV>Vd!g_,PEV5qQ'M<6r0RAJs-NYL!1!PLqNhAOQ'@Ms
+PPp^NQ'@T#Q^3r&rf[>Frf[JJOcklkqiLo@Oo(=BPl$[EOoUXCOp-u/O,f9^rJpo;r/U]7!07#=
+s,d5@!0I,>r/U`7!/pc6s,Hu;!0-i8!0@,>s,[#:s,R/?qN(Z:"-&>%O8Y1?OT:LAO8Y1;P5CFC
+Pl?mFPQ7$JQi<BMRK&`XS=Q5MT)YG_ScYOUT)>,YT)YAWT)YG^ScbUVS=KSLrgX"[TD>,eP(A%+
+F`287ELL52?i=C3@J=7*A+sO.A+sI2@K'[4?i@#(X88jrX8f9oXoGR&YQ(j+Z2V'.Zi.92[K!]4
+\,Wu8[iN&l]YD>'aN`,^g"bKEj5f@dlKn!0oChqRqY^<kjSp(*[%a(SQB$lqYFV5HJ9uZtS#<O!
+^94Q=po\M<KnbA=M2@.LN/`mZOHPckQ'I]'R@9V8St;UKU8+N\Vl-MoX0&M-Yd(O@[C3QT\\#Mf
+^V@V%_o9U8aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%T
+!quB_rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpGWWkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]bkZhiJG=WiIK4fqIN`fF?u9@aF`D83ASl73It2um
+G^"7ME,KN/Coa:ZCiOTDja6iMrd4Edom-O_s*=0[rHT)`?XR5<:el7YG'.kHE,KN.BkCpfr*fV=
+s(VFF!,DLH"BT/oNK!jn"GhhhLPPh_$=S:NDKL)PIt3'!r-nQns*jlo"+GZHIf4ZpIf"WgIK4fq
+IdqgeI!bd=qL/-drd=corHeTlH$T:5rd4KfrHnQls*OTird+Wkr-8EiH$O^_qKi!brd"QkrHeEh
+qg&<jH@#R;qg/3fqL&<kr-nEj!.b&uqLJQrs+('!!.t-$qLej&re16(s+gW/qhP-+reLH.reUW2
+onNm)EH#c1B4tdeH=$JUrF#V5pL<l,pLO#.pL=)0ra>Y2ooB'5rK-W5rK?T4pQYT>s-,.&R[]qE
+VQ$`&[(!QU]">\k_Sa@4a2c<Ebg"J^eCi[7ioTCglg=02o(;VLqY^0h(t=k9MM6V3G^4t"K7J;h
+Df0WFL5CkNM21eXD2!_"Ll$tHN/WaWO-#NfPa.N#R$jD4S=Z=FTq\<XV5L5jWiN8(YHY:<ZaI6N
+\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5Odkiq?slg4!*mdKW6nF?)?
+oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpYcYkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]bYqI>;?'Ps<)Z^nrDW\nperJ:;c6LG.4?i!/N>XE
+1+tI?5XIb#4Zkni4#]/Y2DS`985<#[;uTb[;uBPn;uTbl;tj8k;u0D\;\gu=0/,:?1-[rd4ZYYd
+3&rrW2Dm<I1&`m,2Z5K52Z,N:4[;\7rCd/]!(m,[#"M394]"pNrDNJjr)EJjr_rkrr_iSkm8X*a
+!*&eps&9/#<)QUk;Yj;n;H$Nn;Z9Pl;?Trt;c6Qh;?9WnqGIZ!;Gg:j<)Z^p<`T)s!)ieqrDN\o
+r_WYnr)<VnrDE5dr)<YpqGdAk!)ieprD`eqs&/bns&/Si!`W)rr_`SkqG[Amnl,Qfr)3Pos&8nr
+!*0"ts&K)"!EE2!=8?#!>5MG0;c-Cg:J+;P90Q\Z?i=C3@J=7*A+sO.A+sI2@K'[4?i!q'=T;P&
+>5MP(>5MJ$>5qh'>4u,!=p%o0=]kZ)"'&;u;Z9T$<)m%(?!h&OB5.?[s(_^RDJsIkE;sqXEYW\?
+H@13oKnbGBNffQmR\$=SYHkUIr4Eqp=^,!-;c6Li<Dudl:ea\Z9i+hi=&r:!;c<Tnqc%EdL51SA
+M2R=ONK9-^P*2&pQ'[l+R[]h=StMdOUSO`aVl?\sXf\e2Z*UdE[^WfX]=bhl^VRe)`Pom=ai_fN
+cHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tmll0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6h
+r;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP0'hffl07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfcKEqO.8Kqj.;Kr0@5F&?2"NR#d#pS!T:pNK%SP
+XJl,o%@rrRP`_#cOgga$H\@LZO8Y1<OoCFBO8G%1O8b7<O8b11NVJJ,N>d7oJUh-7@@s3aT:M@7
+P`^raM2$b:K7nf,NW+n:NXq,.NJiaS@ro8o\[T#U[C,k<#FN>NIYNiGPQ$gGQ2d0HQiEBMQi<<N
+Q2d0FQiE?OQ2HmGQ2d0MQiEBMPQ7!JP6R26P*;&kOo1@HPEM)mPE_=.PPgUDOo1:>Nr4n9NrG%<
+Nr+n:O91K)OSk1>NX(W*N/WaUN/dgqs,@,@NK&tsNW"k;O8Y(AO,f6]OS"V5NW>.;OT(C?OSt==
+P5CFEP`q=0PQ7!IQi3<NRK&`URg,FTStDXJT`(JaSt2DMSbJ`TTDkDbT:VUDSG\oZStDYNTF.B\
+IslNaDJj92Wr6<(@/aU1@f0a2AFjC.AG]m4@fBg8@/jU6WrK-rWrK."XS&^pY5YX)Yl:p,ZMq3.
+Zi[YD[e7-0\/r2l]Y2,!a3)`Vf%Jj9i8Wh[kj%O'nalGJp\F^aro="rrS=BER?NnqeZY^EOc4[5
+I#O`$ZamEF[B',+DQebKL5:\CMN!LRO,oBcP*;/rQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za7'J
+\%0&]]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF5u=
+o(2MGrq-?dp\4X]s7u]kr;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP/F2Tdl07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bffd4!.afnqgSHk,&^t1Bk;L1Df'-%C0,t:I=-?d
+FEDJ>Ci!j,LjEfSFF/=[ja6iMrd4Edom-O_s*=3\rcn`S?=7,;:JlB9Fq8\9E,TT/BkLse@:<YS
+@;GjW*bfA'BPV9qBie`&NJraOM26qCLPLV=LPBi0C2\3?rI=it!.XusqLAEks*jinrdO`opO3*j
+rI4<c!IT7nHjG.JI=-EjI!pG;HiSToHj>"GI!^0cH[G[:rd4Qhqg8$arHeKhs*=fnH?spbqg/*c
+rH\Hjrd+Khr-J6er-J9fr-\KlqgS9h!e>cMq1/Krrdb!!!.t0%s+L3%s+CN/L4t>9pkSg(reLE-
+reUW2onNm1KQ1sKCM7?kAqBnfra>_6q-s83pgiu-q.0A4q-s>3ra>b5pl>B8rK-T4rfZ]5pQYT>
+s-,1&R@B_>Uo(2qZ*^pJ\[oGe^VRh+`Q#s>aihrSdad%+hr3\[l0Ia*nalGJq>C6eru:s]WJuXa
+I=QX?N.m"4H#IS<G(GL-N/NLLKSB5TD2!_!Ll$tGN/WaWO-#NfPEhE"R$a>3S=Q7DTqS6WV5L5j
+WiN8(YHY:<ZaI6N\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'7h;-uHi8N_VjQ5Odkiq?s
+lg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP/aM]el07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bf`r`;#jMi;uKVi;uKT:1Fst1/M0"A2)?pB1H%Qc
+5s7Cq3]fA_2`EWT6UsmK;>sMm<9[?Z;ZB\p<;BJe<<#nn;Xm[(/h\k42`*<S5!;"i4?5A[3&NTN
+1bpg@0ebQb2?Gfq2uP]<5!Vb8rCd/]s%32\#"M3B6;C<Sr_rhp!E2tr;u0Jh;ZTirr_iPjqc!Po
+qGdJprD`eqs&Akqs&9M-<)Z[n;H$Ik;c6Om;H-Wo;?0Sl;ZB\q;ZBYs;H$Nk;ZB\n;Z9Vp;?0Yo
+;uouurDWYor)<Slr)<Vn"B/2r;,[*d!`W0"oi1ifqG[Gnr_i\nr_iPjs&9,";Gp@hr_ibp!*&en
+r)E>f"'&<!;Z0Pg<;]_r<rQ2#=Sl8#>5;;-;c$Ch:/">R8jE8]ra>_6q-s83pgiu-q.0A4q-s>3
+ra>b5rE9&#s&o;(qHNu'r)ru%s',>'p0%E!rE0;+='&F%<;f`%<)m"&>[CfIA7kdS"D_giDJfAj
+rbiZnEH-#AG^=aeJq\u;NK96fR@L"KXK](A]D]AR]=PP&?s-K-;H$P$<`2mn:]=)p:K1=n=B/F%
+;#XDj<,I>DL5:\CMN!LRO,oBcP*;/rQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za7'J\%0&]]Y2(p
+_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF5u=o(2MGrq-?d
+p\4X]s7u]kr;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0]
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ%sqO.;LqNh2JrK[;F+IS1AOb[\DR$E_lO-$KE
+Vl-;bT:M=8PE1]HP)j^2Jt)\!s,[8DOSY+>O9(K*rfR2Ar/Ui>qiC];qiC`:nr<I(pl-2:It)uV
+?='7qSXl:;Q'@JnMi3CFLP1;2JW0Pe!K<*<N!PDQDnEWm\$iaE[K!T6[JmN?VRC`%Lm"!dPE_=0
+Q2d-NQ^7T:s-EVMrg!PLrg*;Fs-EYK"-o+9Q2I!KQMm'MQB[X3P7!J8P*2#lP*;)mP4b%9OoUUB
+O8k7;NVne;O,j'trf@,@rfI)>s,I)?qMkN6qi(T9rf%)ANK&sYO8P">O,f;"ORnP4ORnV7P5LOC
+P5gaAPlI'LQi3<ORK&]ZS!oe9SY#hQs.KCas.BRfSXuCDSY#hQqk!eZs.94^!hGjOrLNt[!2'([
+&>>hmTq6d_H?O=ICiYMe?srtBqI9D5r++_sr+,b9qI9G4s'Pi-qPsOq!3GjqriQC-Y-5(6rNZC.
+rj2O0!k#JFp:("1*kJts^V[t2bg4bhg"kNCiT'%`lL"'2o_%qQq"jpeiVse+\>#L[Q]$ru\"0"O
+M0sc)R\m?t]<AE@WqrmuYQ'>lLPUeEMi<XUO-#KePE_>uR$a>3S=Q7DTqS6WV5C/iWiN5'YHY:;
+ZaI6N\@K5a]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&g"P08h;-uHi8N_VjQ5Oekiq?slg4!*mdKW6
+naZ2@oCV\So`Fj]p\sseq>^<hqu6NlrU^#>s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0\
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ'(JH15pJ,FcnI3<NB@V]LSF`;23C27U;Isl`j
+H$4=NEGfT.??C7%D/t.)HLlI`I.Vd_HMr3cHM)R_H2r6^GlN%:>$tZE:f1&6G'7qKEcH&:CM@Nq
+AS#@[@UX"cC2.HsCM@NtC2-gWrf$u:M2D4fs+gW/#D\%^Jo#CKI/\U!IXcitJ:IQI!IoRsJ,F`p
+If"QnIeeHoIXh*@!IoRhIJnQlIHc+[H[>[<rHeEh!IB+lHMi-eHiSToHiSNeH2r<hHMMpeH2r<k
+HMW!cHMVsgHMr3gI/SKjIf+]pIfFonJH(*#J:W:NJH(3#K)C6$K_gE&LAur1L4t>9L]3,-L\6H'
+M>`8(L]</>LPBhhDej$!AS,jm?srtBqI9D5r++_sr+,b9qI9G4s'Y\`!0@)?p5o?<rfR2CmZ[C0
+qi`^uQ'[o.St`'[X08h8[C3TV]Y2(q_Sa=2a2lBFbg=kig"bKDjlkspmdTf>pA+Ubq#CBn)u\Z[
+QAUEJJTlKpN.QP*G&D2<I"dH:Nf&[KKD:-"L2)L"M2I4MNK0']OckomQ'Rf)R[]h<StD^MUSO``
+Vl?\sXKA\1Z*L^D[^WcW]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S^0g>(N?hr*GOj5]4^k3(sm
+l0@U$m-X60n*ol;o()DEo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0\
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ'-;#jMi;uKVi;uBN=/1N&$/MT4C2)-mD1daSp
+5!D+m3]f>\2E!0O7nlfV<)QUm;uK\i;ZK_f;uBPn;uTbl;tj8k;u0D`;[G!-/ho7@1Hmucr]Dbn
+3&iiT2Dm<K1GLU<2E!EN2)dKR3&rrX5!DS591qrO84Z<E84c?B83&Y';Z9Yn;u]hq;ZTirrD`Sk
+!E<"s;YX2i<<#kt;H*Qo"'&<"<W#hr;uTbn<W5qu;c<Tnr)3Pn!E<"h;YsDk;Z0Mr;H$Ikqc!Jn
+!)rkrs&8qss&/nsrDNer;,L6j;uKVo;u]bh;u]hp<W?%u;uK\o;ZTirqG[Gnr_i_or_`er<)ico
+s&AtrrDEVorD`eq!*&qrs&Att!`Muppeq5n<E/lp!*&qtqc*Jn!*9)#s&f2%rEB/&!*K5'!a&N&
+r_Wqs92%rM3Ak2PraGY4rF>b9i+;gsrF>\5raGh7!*T2$!*T8(qHNr&!a/]0rEB2)qHEPp!*]>(
+s&]J,<`W4";cEZp&QW";?!guLA7oOgBPD6tCi+%gDZ=YTE;snoF*;eSI"-a&Ll7:VPa@i2V5gc+
+[^s)_rk'&Y\[],(=Bns0<)Z[k<Dudk:ese[:/=gf<<Z?%;,:+hqGdKLC57V%MMmFQNfT9aP*;,q
+QC+&.S"-%@T:qsRUnsrdWN*##Xfnt6ZEpsI\%&u\]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq"f@em3
+gtgfDi8ESSj5f=akNM0plKdg'mI'H3nF?&>o(2MGrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaShqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@qrqjIALqNq5Jrg!GH+JY-SObnshS!fCpOcQ$5
+WMQGcU7Rg=P`Uifm+e=\Iu=,a"-AY-P5LIBP5^RNP*(ojOcb`fOH5M&O8k=AO8G%9O8b11NV\V0
+N<XTUJUh-5>lL<>T:DF;PEV#eMM[(AKS4o,MMd@RNfK*WN/WaUA95Ap]"#2WrjDd5%(3ILFH2N2
+K85bYQ';33qj%,GrKdMMrKmPMs-<VMp6YfF!0mDH!LB)OR/`KRQC%Q9s-+"WPa%AqP*(ojPEV/n
+P*5d-s-3GF!gJn4r/q)COT(=@NrP(=NrG%:NrP1?OSk1<OT1@IOH5KaOH5E_Nr+h9N;nk;NrG"<
+Nr=q=NfB%pNrG+:OS+\5OSk77P5LODP5gaAPQ@&8rg3VOrg<nXS!oe9rga:cT:hjLT:hkVTDY;[
+TDbAVT)bJ]Sc52\TD>,mTq\9VU8"EVK782lEc>o9F/*1@@f9g8AG0U#B(fg7AH$*8@K9j6Wr9!l
+Xo5F$Y5kg*Z2_-/Zi%03[C3O;\,EfY]">Vh_8OC:c-b"kg>(QBi8`q_lKn!0o_%qPq>1!fhu=P\
+VkKNDQ&`hmU83p4JpVs'Trk]5\#uj7qQBh$AVPtrM2@.LN/is[OckomQ'Rc(R@B\:StD[LU84W_
+Vl6VrXKAY0Z*L^C[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S^0g>(N?hr*GPj5]4^k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaRhqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@s'Jc:2pJ,FcoI3<cN@r,^hG]Re<Ao)4+J:Dum
+H$=@PE,KK+DRu]pCiFUqHMDjeHiSNmHieYBI/A6jI/\KkHM`'aHM)R_H2r6_GR/Ru?XR2::/6'5
+G5lY,Ec5l4D/!WoA7T.X@;0ChCM@NtBkhBuBie`'NK&jQM>i>2L]<)6LK8D>Cia`JrI5$#It*!!
+It.BFrdOosrI"Zpr-\ZrI=?Y@Ifk.LIXh3Cs*t&t!I]FhIK+]nIJS?kHi8<lIJ&!cHiA?gHi89i
+Hi&0jIK"ToHgc:VHiA?`Hhi!`HiAEiIJSEjJ,autJ,+WpIfP#uJcC9"JH1<"KE$W%L&Zo-K`Hl,
+L&Zr-M#E,-M#W>*M"ZW(M#W81L^J6DDes*#AS,Ls@JaO4A,Ts3Aa<t%Ac60=A,9X7@Jc)`OS4e:
+P5^UBP44\.Pl6gFPV/8hS"-+FVQ$Z#Z*LaE\@K8c^;.S&`5Ta;ai_lTe(31,hr<b]lL"'1oC_kS
+rV-<lrr)d4gpi?!KReT"S<AS[H?jLJDfpYhMiE[PL\?C4L51SAM2R=ONfT6`P*;,qQC!u,S"#t?
+T:hmPUnsrdW2co"Xfen5ZEppH\%&u\]Y2%o_8=+.`Q-'Ab0/#ScHstee'uq"f@em3gtgfDi8EVT
+j5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaUhqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@q(;,[0fr_iMirDFal.Od)(/NG[G1b^[@5=.V!
+5!1qh4#o;[2)K8M7nul[rDNYor`&Ykr_iYms&/_mrDNVnr`&\lpJh/kqGQub"tM;Y0f:aDr]M&[
+4Zkec3ArfS2)I*G0etF@2)[BO2E*So3#FY?5>"UB92%uM84cEF8Ou>t4\&4D;,^Hl;uT_t;c6Nl
+;uK\n;uTYp;uT\j;[QK(<)cdp;GpFm<;fhk<;ff!<)lptr)<Jj!`N&trDEVopJM#j<;]\o;Y3od
+<<#ks<;ohr<;oeo;u]_q;>jGm;Y*ie<;okt<;fhs;uTbo;u9Po;u]hq;ZB\p;ZBYq<;TSo<;oho
+;Z'Mo;Zp&u;cH`q<<Z?";H$Llqc!Jnr)<Vpr`&qtr_ierqc*`!='&N$=o;J&=TDS&=oVP3=BABt
+;,0hZ8kMN/@JaO4A,Ts3Aa<t%Ac60=A,9X7@Ja1*>5;A'>$Li,r`f5&oiV8urE9/&s&T;'<E2ur
+<"W,3=^,3>@:Nh[AnPajC27X%rb_[QrbiWmEcZDKH[UEtL5CnOPEqT,UStB%[CEi\rk&TL\[T&V
+[Bt^&=]PH"#$"i/;H-Igr_<er;cQe!<`N's;H*BjAVPtrM2@.LN/is[OckomQ'Rc(R@B\:StD[L
+U84W_Vl6VrXKAY0Z*L^C[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S^0g>(N?hr*GPj5]4^
+k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0a
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#KS=>t9rgE\Oqj75Hr0/:jMeA*,At><RNfT65
+XfA:tU84BNR$<_oNj-?eFaSo?NrkE*OoCOCOnOt9OoLLFO-#HaplPB6rf6Q/qi(B2)L6g_J:V'6
+Tq@mHSt;73P)t`^M2$_<KS"c5req/CNf8pTN/Wa,HiCVY\@/jF[K!W6[0F!oUX"CCM#EY=Pkp[D
+QMm-MR/NBOQ2m3LQM$ROQBdc$Q'R`&Q^F0;QNEJ>QMd!IPQ$a>PQ$gFPQ$dPPE_8pP*;)lOT(:A
+NfF$u!0-o:s,[2Bs,R/?rf@)@s,[)>rK$u<!0$l9!0$i8rf6u;!fi8"q2YK:!0@&>rf@)@q2bN:
+s,d;ErfI8FPEc!/s-*MIrfdJJP*5g.qNM/KQC!r*R/E?\R[]e8S"6+?SY)OITDkM`TDtSaTDtM^
+TDkGVT)kOSrgs%[qOdh^r1j:f$`0YRIscK[Ec,l=I/[URA,^$7Ac$*'BDZ<:Ac?6=A,Tm9Wr9!m
+Xo,@#YQ(j+Z2_-.Zi.92[/dZ3[fEr;\,EfZ\[oGe^V[t2b0JD`f@es8hr3VXl0@[)o(2PJp\=U_
+rndYn]=t&2R$W\oUqiFdP)Og7JsN7?[Ci]F[B$G-Y5PP7L5:\CMN!LRO,oEdP*D5tQ^F21S"6.C
+TV8*UUo(&gWiE/&Y->.9Za@0M\@K2`]tV7t_Sa=2a2lBFbKS8Wd*^:jeCE1&g"P08h;-uHi8WeW
+jQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0]
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#KqLSQpqg\Nmr-]Z+B2`JS;fm"rBP_HbJpr,s
+H$OOSEGfW/CP%XoC2S1kHLcF\I/SEkI/\KmHMMp_HM)R_H2r6`GS=7f?smD>:O78/FEM\FE,]Z1
+C1mNV"(G\JCAhiHCAqrIC)1MbAr_n2Mi!:HM26qBL5(IrI$nkoG5HdhIfFotJ,k)sIf=isIfFir
+If4]nIe8-dIf=irIe8'gI/JEiI/\KmI/\NpI!u!ArdF`mr-JEiqg86erd4Qjs*alos*F]lo6U4Z
+rHe-`p3HadHN&9kI/89hIf4crJ-(4LIf=imJ-(4NJGXotK):0#K`$Q'LAuu-L'*-aL55barJ(Q4
+LPL\AM=uc%LB<9eL\uu.M$JopF`MG;BPIHX!+l.=rF>h;q.9G8k\'d)q.9P9rF>e8rf6r=p6#B<
+s,m8Cn<<O0rfd;F09qomS"67KVQ-c%Z*L^D\%95c^;%M$_o0R9aihuVe(34-hr<b]lg=02o_81Z
+rqQKnrr)fqr#+"NRYccOJTcKsP(.q,GAh88I"[H;NJ`OKp4Qt2Ll$tGN/WaWO-,TgPa.Q$R$jG5
+SXuIHTq\?YVPgAmWiW>*YctF>['mHR\[oGe^;%M$_o0O7aN;TJbg+M\dF-Lne^rF+g=k?<h;@/K
+ioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0^
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#K;YF&g;Ya8h;@b<..P<;*3&NNI1Gh'Y5sYE5
+r]:HI2`EWY7n6?P;c3Hjs&/nspf%)gr_rbnrDWYmr)<Soq,@#es&8blpJVPR0.nq41c7H]5!;"j
+3]d7"$TBq#1c$mA0fM!K2uY`82ubi@3Boc$9MGFYs%*5^9)_Bd7k[)';,L9j<;fbp<!#ur;Z0Pl
+<;fbm;YO,i<<6&tr_`er<)iisr)EYorD`br"B8B$<)icorDE_r<)cfq;Z9Sq;H*Hj!)rkrr)3Sn
+pf%2lrDW_qs&8qsr_inu;c6Nj;u]bp;u]bd;u]hq<W5r!<E)oq<;TVl<!-&u<)`cos&8np!)rbo
+qc!Dj!)rSjrDieps&&ns<)rlrs&8qs!)rkrr`'/%;c6Ll;cN]q"'/K)=Sl8">5_S<=BSg2=]ed/
+=^"s*;Gp=b9M.oF4T8ggA,^$7Ac$*'BDZ<:Ac?6=A,Tm9=T)Fu>P_P$>P_Os=oV\)=oVV'=8l4u
+<"i85=B\s9?X[DSAS#IdBPM<uCi'&e,AqF<E,p&CG^FjhKSPDDOcu*#TVnos[(!WY]=beg\[T#T
+[/RB=HWaZW=B&3t:fLHo;#a8u9MJ;]<`E'u<E)dmpf(dYLl$tGN/WaWO-,TgPa.Q$R$jG5SXuIH
+Tq\?YVPgAmWiW>*YctF>['mHR\[oGe^;%M$_o0O7aN;TJbg+M\dF-Lne^rF+g=k?<h;@/KioB([
+jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=PgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa./WgR[KT@R/<6LQN*6LPTZT\LQdFJTph7,
+LQ7CuXf/+mUS=9GQ^*SjN0TQmH\7phNrP.AOHG\'OoUX:P5g[EOogc-OoCFBOnb%8O8b11NVnb4
+N?<CpJUi;X?DF0aT:DI=QBIAiN/E@EKS+l,Mi<UTN/mdp!G$l_])oLN[f3]7Zj=(J[%YK`JVT<a
+Q3EP<Pa.N"r0@5Hrg*VPrKmPM!1!PLoTocJQ^*l&Q^@]=pm;#Grfm&=!L/fIPl6gFPQ[27P`h4/
+P6-l.O7nV5O8k:AO8b1:O8P+=Nrb9#rf$`6s,I/?NfO*us,R)<qi1Z;q2kW;rf@,BrfI)>s,d5B
+"-Se0PQ$gHQ2d*JPlm57P`u*0s-*;Ds-3VNQi<BMR0f=OR[]k>SXc:Dr1O%]rh01]rgrtYs.97_
+s.9+[qk3t_!2BIfrM9Cg$&O(XG&hS?EHK>%A,^$8Ac66=BB<h)BDlH=Ac?6>A,g!<WrB%!XSApq
+Y5PR(Yl:p-ZMh--ZiRSCp:("1+h>1r]=u(u`lZHMdF?e$g>1ZEj6,[mmI9]<o_/%SqY^<Iru(g6
+U7@X9N3pa'T9,(dI!^X@X0oRMY-5"/r3$"%A;5kqM2I4MNK0']OckonQ'[l+R[]h=StMdOUSOcb
+W2ZeuXfen4ZEppH[^`lZ]Y2%o^r""-`Q$!@b0/#ScHstee'uq"f@em3gtgfDi8EVTj5f=akNM0p
+lKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=JgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa8U\iJbsupJ,FcpI2@$@@r5^fGB%M7Ao)48
+J:;lkH$FFOE,PYj"a,!>Df^L-HLH4ZI/eQkI.Vd\HM)R_H2r6bGR.JZ?smD=:j[HdFU*#.EGfZ0
+Bk[KV$=[FPC2%BtBkh?rrbDRM=)@kr&;uC%Ll$qCLPCP=G`ZWXFF!b5rI4crs*t*!r-nZqs*jur
+s*joprI4BgqgSKnrdOcn!.OEc"FPWFH[Ga>rd=osI=6KjrdFcn!IK.dHi89hHi/6kIK"TsH[:!b
+Hh;XaHN8BfHN8BaHh;XaHiAEhIJnWnJ,b$!J,XosJ,+WpIfP#sJc13!KE$W)L&6W(L&Zo-L]*&*
+L]</1M=uc%L]<50M#E2/M?S-CDf'3$rac)(raYq<qITV;r+G,)r+Gt?qITY:raYt;!07#>p6#B<
+!0R5Cn<<O0rKI5F09qllR[g"EUo12oYHY==[C<`Z]tV7t_8=.0a2uQMd*pS!gu%)Pkj%R)oChtV
+rqQNnrr)d:r;6?elHG9EL4au$O.:oUH?jRLD01;bMiEXOLPLNWKOfgmLl%"IN/`jYOHG]iQ'I]'
+R@9V8St;UKU8+N]Vl6SpXKAY0Yd1UB[^N]V]"G_j^VI_(`5Ta;ai_fNcHaeadaQ^rf@S^0g>(N?
+hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=JgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa7W@2;YX2h;Bd_C.538(3Ar]L0JkUQ69m[t
+4Ztkf3]ArS0L&'':Jb%g;>sJd;u0Al;u9Jm;uBPj;uTbl;tj8k;u0Df;]I>A0/,(;1d4,e5!1nf
+3]K&X2`3EM1bpjB2`<Sn2ZPc73!D?-5tXgFr_*8_$V3l\84c<15Yk6T;uBVm;ZTirrDNSmrD`_o
+qbm/e"B8B$<)`co!E2ts<W#hq;uBT!<E)mr<E3#o;Zfor<)ifor_ikr;cETl!`N&tr_iepohtrm
+<)QWk;ZKep;uT\f;ZK_e;uTbq<W#hr;uTbr;u]hq;u]hr;Z]os;uKVo;Z]iq;uBVk;uT\p;ta2h
+<W,l#;c6Oo<`T,ur_rhrqc3Yqs&/kq!*&qt"B8B&='5?&!*]5%!E`M(>5_V&>5qJ":^'Tf8kDEO
+raYq<qITV;r+G,)r+Gt?qITY:raYt;!*K2'pKRQ!r*0#$p0%E!rE0,&r`9,$<W,ns<>/D8=^,0<
+?t!MS@q9.`BPM<tCMWocs(rrtDfKf=Fa/7^JV/`8NKKHnSu&HlZaRBT]=Y_f\[T#T['T\9)Nf)D
+<`2gp;c[4&;c$4b:/"D]<)m(&<`N'opf(dYLPUeEMi<XUO-#KePEhE"R$jD4S=Z=FTq\<XVPgAl
+WiW>*YctF>['mEQ\[oGe^;%J#_o0O6aN;TJbg+M\dF-Lne^rF+g=k?<h;@/KioB([jlYail07L!
+m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPTijQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2X\LS,\oPR/NBNQN!-lPc'e'R#I#tS=5Y$
+OH=.ZX/;_hU7[j>PE1`6q8M38JGtT.O8b7'Oo^],rfR5B!0R/?qiC`:nr<U,r/D/3It<-#?sTM"
+St;LCQN!-ZOH#-PKnY24J:NT=N/iknN<FpI]=YWO[f3W=\$W$;H%Up<qN_,GrfmJLqj%/Hrg3YP
+rKmGJnsBBBrg3SNq3M)IrKRAIp65B<rfd2Cqi_&CO7nV2O8P"<O8=t:Nrb9#r/CW7r/Lo>N/WaV
+rf-i9s,[)>s,R8DO-#J%OTL]-OT(=?O8tFBOp$u5Q'@O1Pl[29rKR8Es-*MIrKIDLQC!s6R/i]T
+Rg#=RSXc7Br1O%]s.K7]s.9(ZrgrqXqOmk^!huHbqkX+c$]]X`G]e"EEd"!PAGTm:B)QB7B_,s1
+B`2TCB)?0=AH--@X/rE!Xo#:"YQ(j*YlM*.Zi%02[C5b;rjX/_]">Sf^V[n/b082[eCWC.h;I8Q
+kNV=#nF?)@p%S7Xr;PLO)Z%._US4-CM3Y$\S!9(oJ9l[+VR3eDY-+t/r3#t$@u#ksMMmFQNfT9a
+P*;,qQC+&.S"-%@T:r!SUnsufWN*#$Y-5(8Za@-K\@K2`]Y;.r_SX71`lQ6DbKS8Wd*^:jeCE1&
+f\5'7h;-uHi8WeWjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqR
+J,~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPQhjQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2\(0s+0urrI=]n+an]SAT29qG]e%EBl%We
+KR\AqH?XOQEG]N-:s#$*CN4RsHN8BYHhVp[Hh_p[H2`*iH22[c>$h29#Z4EFG]n4PFE7A"&oDGu
+ARo:\@U`b[CM@NtBkhF!rb;FLrf-u;r/(H/s+U`5I=c9TFaX%8rI4`qs*t*!rI4]pr-nTmrI4Eh
+qgSEl!.Olps*jop!.OKerI"Bg!.=cos*OlpH@#=4rHeHird=]nrHnWmHN&9aHN/?kHN&6kI.Vdc
+H3/G>HMr3eHN/?jI/A?hIfForJGjutJH(*#J:E(IJGauuKE$Q%KDpN(L&6W(L&Zo-L]*&)L\6K"
+LBNEiM26ubM>N/<GB.\@BkV'iApZmUqITY<rFbb9o4di1rFc+Aqdob;s'u%ipQ><8qNCoDplkW?
+!1!DFrfd>G0U7rkR[]k@USXlgXfen6ZaI9R]=kqn^qmk)`lH6GcHt%lg"bKEjQGjrnb)\RrVlQk
+rVZ]ms8)cm)9nP>M26h9G(#15J:)`gE,KQ<Ko1hLMhm,]KO]dnM2I4MNK0']OckomQ'Rf)R[]h<
+StD^NUSO`aW2ZetXfek3ZEppG[^`lZ]Y(tn^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8EVT
+j5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPTijQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2V*O;ZKen;uKT61Fjq2/M9(B2)I$C1GqKa
+5<V.l4$#D\2`<469`@ff;uKPq;Gg=ir_rhp!E2np;s[EZ;uTbl;uK\p;uTbr;u9Jh;[P*/0J>(<
+1d=2g55mVM3]K)Z2Dm<J1Gf"c"ZA:u2E*Pk3!qrE9MJ2R91hcI9)_Be7lWP);H-Rnqc*Mm!E<"q
+;Z9Vm<;fbn;?9]qq,@;ms&B%trDEVprD`hsqc!Gms&K"ss&B%upeq2m;uT\j;uKVl;uT\g;Z]rt
+;Z0Pn<;fbp;Yj;l;X@<p<)lms<E3!s;cH^p<)lpt;c?Zo;u]hr;uTbr;u]bm;u9Pl;[?8u;H-Rn
+<)clp<;KVp<!ZE#;cHdu<E)rs;u]ho<W?#);c6Ll<)cjs<)rp!o3))q!a/]1rE9&%$s?D(;,9t\
+8kMN:,\6a_rau+AoP!i1oP"29rau%=rac%=r`]&#r`]2'r)s,*>4u,!>5_V(=9DW,<`T)ts&BV2
+='/X2?!guJ@UinZAnYjlrbDCI,A_47DfKi?Fa8=_J:r]8Ng#g#U8Y9$[(!TW]=bef\@8iOZMq-.
+Z5g2h=C5-2<E)jm<*)jl;,0h\:/+Yf<E<(!;c6Kf<+C]>M2I4MNK0']OckomQ'Rf)R[]h<StD^N
+USO`aW2ZetXfek3ZEppG[^`lZ]Y(tn^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8EVTj5f=a
+kNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5prRfStGpmD)Jrg*JI#b$a+Oc3nFR[3r6
+'9]H"Vl$5aT:M=8P)t^-a-_'uL&@#2OT1I.P5gaFP5:=<OSb+<Nq/2/N;\_:H?oL@!b,D?rh(("
+SsPb.P)kTZLP:G:K7\W5NK0$XNJrnrN<!qs]E,RPrO2^4#.Cn*OFDn=rg!PLrKdDI!1*MIrKdJM
+rL!PMrK[JNR.ZgFQN!6IQjT1IQ^F,+Q'R`$PkUC<PQ[27PE_:0PkpRJP)t`bNfT8!Nr"h:NWP3#
+O8b4@O8b7>Ns:W(N/NUQN;eh:NW>.>NrG";NW>(<NWP9%Nr"k;O8Y1?P5g[EP5gXROH5KcOHGcl
+PE_;sPa)04s-*SMQBhE5r0%/GPPpaGQ2d0NR/36NRfAiWSGeuZStGqRrgs4aTDkGTTDkG[TD+u]
+Tq\?YV>[4dV$s/pO+)M&Ec>l9G+*XRAc?<@BD?0:C%,m6C&)H@BDuN@AcH9@XST'rY5GI-Yd(I=
+Z*L\7Zi%03[C3O;\,Nl^\[oDb]YD;#`Q63GcdL@pg"YBAioT@gm-a?4nalGKq>1$gf`)heURdp>
+MmDE@R#m>[I!UI<WOBCNY-5(1YPt^%Y@<9DM2I7NNK9-_P*2&pQC!u,S"#t?T:qsRUnsueWN*#$
+Xfnt6Za@-K\%0)^]Y;.r_SX71`lQ6DbKS5Vd*^:jeCE.%f\5'7h;-uHi8N_VjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5pqJcLAsJH(,pINNQC@V]XTGB%P8C27[<
+JUMokH?XINDJa3*Kp@"#DKY#eq0_d\pj2UYrd"Qiqfio^>$t]G;GL#4G^":RF)l5;D/<ltA7T9N
+@K:-ACAqrIC]8&K?iH&eN/EMlM>rA1L'DdED0'lLIf"WlIfFotJGalrJ,b$!J,FcoIJnWhJ,=]o
+J,Om$IsufpI=D*B!.OHd!doEDoR-afHiA?gHN8BjHiJEjHiJKmIJnQkHhMdaHiA?jHNSYBH[PU8
+s*FWj!.=cms*FZk!IB+kI/89gIfForJGam#J:E'!J:IKIrIG!$KDpK&KDpQ&L&?])K`Qp`qhY*(
+on`F!!/UH-pkfE*EH#f1BOtafH<^>Zrau.Bph9M<n7qf6q.T_>rau(>s'u+kpQ>97nWWm8!1!DF
+rfd>G0pS&lR@Bb>TqeK`WiWA-ZF%$L\\#Ph^VI\%`5]m@bg+Vbf@es:ioK:hn+?AMr;HWjrrN,t
+rVZ]m+o;*5r;HWdcAmd;L4=K1Y_IUQH#dh@EI`k)NfApPLP:HWKOT^nM2I7NNK9-_P*2&pQC!u,
+S"#t?T:qsRUnsueWN*#$Xfnt6Za@-K\%0)^]Y;.r_SX71`lQ6DbKS5Vd*^:jeCE.%f\5'7h;-uH
+i8N_VjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5pi;u]hp;uBN8/1N)&/hf7C2)6pD1dXMo
+5<_7o4$#D\2`<rm78H]Xq,./i!)rbmrDW&\qc!Jnnl,Nes&8emr)47]/2/_32D[-R4Ztnh4?GP^
+2`3Mm1^c/q1,:dJ2`<NQ3'.$u#rb(A9MJ2R91hhS8I7pO85E)];c6OmrD`VlrDNSms&B"us&Aqq
+rDE\r<E/cm!`W0!r)*MnrDi\mqc!Por_rnu<:s/k;H$Kh;uKVl;u]\p;Z0Mo;Yj>k;ZB\p<;fbo
+;Z9Vo;?Bco;Z9Sp<:s/l<)Z^qqc*SorD`esqG[Sr<)cdprD`eqs&/_mqc*Jl#Z=Ms<)cdq<)rco
+qGmPps&8qs!*/tsr_ierqGe/-;c6Ll;cHas<)cn"='/U.>$CW&s'#A(rEB2's&]7tr_Wkr91_`D
+5:uhFrau.Bph9M<n7qf6q.T_>rau(>s'u+5pKRW#rEB;+>PVIr=TDY(=oVV'<rl?%r`&ks0NV@[
+>?kH??t!MSA7fFdBPD0qBkhEuCM[j*DfKi?G'SF`J:r]8OHc3,Vl[,.[C?+F"h;%L['R(;Z2V$N
+ZaI9PQ#p/0<E)pr>%po2:/=VZ9hnSb<EWC&<DlXlpf(^XM2@+KN/`mZOckllQ'Rc(R@B\:StD^M
+USO`aVl?\sXf\e2Z*UgF[^WfY]=bkm^r!t,`Q$!?b0/#RcHstee'uq!f@\g2gtgfDi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH2lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5lcS!oe6q3_/Js-ESJ+JY$OPDb9iS=,Lq
+OcQB@WhlMdTqIj?QB@5hQ^MrAK9uOtrfI)@qi^uC!0[>FrK@2Es-!5Bs-!8ArfHo9rf6Q/s,?o9
+-@()kJ72kkU7\$LSsl%2P)tW[LPUY<KS"f7O,]0ZNf8sVN/ip/rk&9B\,Ec7Zj*sHN1,6MM#EV>
+Q2HsIPlR-IPm*J?QBml(rL!PMrg!VPR$di=!1*8Dop>rMQBml&Pa)*0!0mJHpQYZ@rfm;Drf[;C
+s,R2BO8P%7Ns1Q'NfT9`rf@&?rf75BN/W[RN;eh9NrP.CNfB$WNW+q=O,j1"rfI/@!0I2@rf@5E
+PEM(-P5g[EOT1IGOcu#oq3;)IPEV8tqNUuCqih2JQ^F08R/rbGrgX(]St;SLT`:YaT)YD_T)##W
+T)PAUT`:\eU84UaV>m@fV#[=jUC*'2I<p$UDK'`eM>h,dBDQ<?C&;Z2C\qlFC&2NBBDuNAAc8b,
+Y5PO*Yd(J3ZMh-.[/[N6[e@3/\0AJp]=bkn_SsR<b082[e^rL/hVdDUkN_F$n+#u?pA"I\rR_&e
+_RlS;SX>;"WlUWiP)4a:I#b#/[C`ZGYH@c+qQF=`M2I4MNK0']P*2&pQ'[l+S"#t?T:hmPUnsrd
+W2co"Xfnt6Za7'J\%0)^]Y2(q_8=.0`lH0CbKS5VcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH-lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5mpJcLAtJGt&pINWlM@Vo^hGB@b=Ao2@5
+JUi/oH$4CSE,KN/Dg$G?DKC6gHiJKnHi/9]Hh_p[H2`*iH2Mn6>$kZG;Gg59G]n7PFE2><DJO!!
+An5F]@:EqdBk_<sBkhBuBkg`KNWP/sMZ/J4L]<)69lYMtF*E(^q1&<k!.Xuu$%IDRIXZcrJ:N.I
+If4]nIfFltIeeKkIf=ipJ,k)tIf+ToIf+ToIf+TsIXQZpIe%pdI/\EmH[Pg>rd+?ds*Xip!do?A
+rd=]l"aYH>H?sr8HN&9iHN&6lI!bj?r-JHjHiA?jHiAEmHiJEjHNSYDI!kj?s*arrqgSBk!.arr
+!e>cMq1/QuKDpK&KDgK&L%pE&L\QZ*L[p8uLB*/.M>rD3M>2u.M[FlPE,KE(AS#J"C&V`DBDQ<?
+C&;Z2C\qlFC&2NBBDuNAAbhJaP4Fh.Pl?mFPVADiR@9\<TVA6ZW2cr%Yd1XE\[f>c]tV:u_SjI7
+b0A5ZeCWC/hW!V\md]uFqYgEhrrN,trVZ]m,5V36r;HWos3I.#M26n;G(#47JU;cgE,BK;Ko1hM
+N/<:Dp4Qk1M2I4MNK0']P*2&pQ'[l+S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\%0)^]Y2(q_8=.0
+`lH0CbKS5VcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssf
+q>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH-lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5mi;u]hp;uBN90.J>(/M9%A2)?m@1I+8l
+5!;%j4?GV`2`<KW85;rX<;9;k;Gm6f!)r/\qc!Jnnl,Nes&8emrDOjj0/#%;1c.E[5!D(k4#o;\
+2E*HM1GggB1,q9R2E!KQ3W:u=2a@77!)*;`r(.&C4@N%C;uKSs;cH[p<;BJl;@-9$;c?Xp<E3!t
+rDWYms&B%ur_iepr)<Vp!)rho!*&qt!*&bm!E<"m;uoosr)3\s;c?Zh;uBPn;Zp&u;Gg<i;uT\k
+;u]bq;u]eu;c6Nm;u]bq;u]`!;,U=j;,[Bls&Aem!E<"r;uouur_ierr_j&$;cHas<)Z`o<<#ns
+<<#nq<;oer;YsDl<;f_q<;ohr;$Kru;c6Ro<W#er<W#hr<Us,a<W,hs<)ros"BJT*=]t],pK@N"
+rE9/(r`T,#rD<bq9M.oG5;iFPrb)(@rFu.DlYHB4rFu+Arb)4BrFPb.s'#A*!Er_'>4u,!=p.u3
+=]ef*<ruE&<W5tt<>/G9=^#'8?!^oI@q0%\AnPdjBkdN\(i*r)DK'T9FEVqVIXm*,N09O!UT(K'
+ZaThBs0i';Za0G4'sb3S\$rec>?t<1<Dudl;cZ[j:JFU`9aF^!;ccpu;c?Qf<+1T>MMmFQNfT9b
+P*D5sQ^F21S"6.CTV8*UV5C/hWiN5'YHY:<ZaI6N\[oDc]t_A!_SjF5a2lEHbg"GZdF$Fme^i@)
+g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqR
+J,~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_Gjt>cVj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2S!oe6RJN<LQi**oYF()[NJD5;Q^!Po
+O_1\qWM?2^SXl+4P)a+CaMiFUO-#HaO8b7<Oo:IBP5pjGPQ-gEP5pjHPQ$gHPQ-gBOoLO<O8b11
+N<"q:N>$MfJUr>X?D4$aTq.[@Q'7AiMM_=c%u#[gNK0!ZNK&sYN/`jWAH'4F\[T#V[^Q1B#.7d+
+]mY]prKdGJrKdGJ!1*MI!1*PLrL!PM!1*VNs-WePrg*8EoU,TC!1!MIs-*JIs-*JI!1!AErfd>G
+rfdAHs-*GF"d+k,OH>P&Nqn_;NK0(uO91K'O8Y.@NfF!rrf-r<rK$r<!0-r;r/^f<s,[&=s,d>F
+Oo:ICOT^c.P*2%*PmNbAQ'@JrPa7T"r072Eqih2JQC+'6R/rbGrgX%]T:bnOs.B7]qOdYVrh&qX
+"JMQaUSIda!2TFe!2TUh%]#q`IslT`Ec,i>RY,Zoqe5qBrG(2)rG):Fqe6"Brau1A!3Q%!riZC-
+Z*F85rNlF/!O]B0\,Ef]\[oDb^;.S'`lZEIc-Okhf@es9iT'%`lg=-/nac>Gq"jmdeGgA_Un+3D
+N3W/XQB@5[I!UC3Wj]OQY-5+2riZ+$@>KbsMi<UTO-#KePEhE!R$jD4S=Z=FTq\?YVPgAmWiW>*
+Yd(L?[C3QT\\#Mf^VI\&_o9X9aN;WLc-FY_dF6Uqf%8R.g=tH>hVd>Nj5]4^k3(sml0@U$m-X60
+n*olHnd+jZo_%nNp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_GjsfEQj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2rdt0$qLJNor-fc?E+Dm\AQ<ejDJF$*
+<IoXLH[0jXFE)28C/T8DSSW:kja6rRs*O]lnU(%Wom-O_!."Qg!*T8.+\ts]G^":QFE)8<D/*`t
+A7K.\@Ua(fC27R"C2@X"BkgcLNWkB!M2I.HreC]49QuJ6FF*q8q1&<k!e5`Nq1&Bo"FklLIt%?E
+rI+`rrdOZmrdOirqg\ZrrdOQhs*jrqrI4cr!.OHd"FPQBH@,X=s*OclqKi9kH[Pd?"+5HAHi8<n
+H[9u:H2r<jHMVsgHMr3hI/J?kHM`'eI/SBoI!^6gqgJ9hr."]p!IoXsIg(@PIt3*$r.=p#s+1?*
+JqJaSL%pB&L\?N(M=l]$L]<2/M>i;2M>)o+M[Y&SE,KE(AS#P$AQiaDB`2ZDC>Nb)CAhlDB`D`E
+B)cH?Onb+2PP::AQ2[$IPPp_#Q'[o-S=Q=HUSOccWN3/*ZF%'M\\#Pg^;.S%`5Tg@c-Fbef@o$;
+io]Rqo_/+Xr;QQm"oeJur;6BjqZ$Epr;HWorVmc(cAd^:LOXW3^5%)_H#dh@EIN_'O-#6UL\?C0
+Ll$tHN/WdXOHG]iQ'IZ&R@9V8St;UKU84T^Vl6VqXKAY0Z*L^D[^WfX]=bhl^qmn*`Q#s>aihoQ
+cHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%Pp\4[^s7uZjr;6Kk
+rVc?eJcC<$YQ'+~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_GjsfEQj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2pJ_)krDWVl'0%Nm.kWA+3&WTJ1c.-X
+5X7Ls4oRMN3&W]I5>FsL:K(.hp/1-Rr_rYkr_r\nnl,Ne!)r_ls&0:U0/,+71c.?Z5!:t+49%8L
+2E*KM1G^dB1,h0P2`CUo"$&>#5Q"1V8kVeS8HUA)92>:\r_ierqGRMr;c6Llr)EYqs&9%u<)``n
+"B8B#;cEZnq,@;k!E2ts<VBAe<!#ut<;ohn<:s2g;ZBZ&<)ZXk;H-Uo;c6Nh;ZTcprDWkt;Gg?h
+;uTVt;H$Fj;cEWos&/nsr)<Pns&B%urDWYos&8nrr_rhrrDW_q!)rhqpJ_&jrDN\qr_rhp#?+T#
+;H$Oo<W,ks<Vo_q<W,ks<VKJf<<?,u;u9Mr<E<.&r`\tt!*]5%pfRQ!$rTr":JXYV9LV0#2.uf"
+rFu4FhJ<()rFu.Bs(D=Cs(1k-pKI8ns&oP.>$5!1r`9/%<E9#t'ie:9=BSg3>[1TA?t!MSAS#Id
+B4u#WC):Z%Ci432EclPMH[^O!MNF*mTr4urZF'S=#dq%GZE^[=Z*F83!j]2@rjEiTZB90/<`N.!
+;cmp7:Jak_9heG_<E<4$<)lgn;YX1!Ll$tHN/WdXOHG]iQ'IZ&R@9V8St;UKU84T^Vl6VqXKAY0
+Z*L^D[^WfX]=bhl^qmn*`Q#s>aihoQcHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3
+nF?MK#kR]\p%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5He
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_OI!^RJE6KQiEBNPp)QWKTV%HUR7@/
+P*)!0XJr%lUS4<KQBIAmZ-8Y]I>*fGqiL];rf[8Erfm5BrfdDHqih/GP*5g,rfR>FOHB3ts,QT.
+*-d!bJ:M!4US4?QStDI9P`^ubLkUM:L4k/=O,j'rs,I(irk&EG\@8oU[f3W<[>Cg)Its0aQ33D:
+Pa2-3qiq/Ir0R>KrKdYQQ^=),rKmMLp6YE=$C@'FQBd]"Q^*f!r0.2HpltfBpQYZ@!KrTCO91K'
+Nqn_;NfT8"OT1=@O8b4AO,j4!!0$o:rf6r<pl><6rfI/@qN1]=rfR8FrK7)B!0mAGs-E\Mrfd>I
+rg!GH!0d;E!L8uLR/WKRRf/WTR[a;H!1j(\rLa:eTV.pLrgrqXrgs"Z!hc6\r1O(`"JVZdUnmRX
+s.o[ks/$0gJ:)WbEGTW>U4cPFB`;`FCA2N<D#J5ED"qfECAqrFB`;WEB)/V/YQ(g,Z2M!-Zhq*1
+[C5e<rO=,`]">Sg^qmt/ai_fOcdC4mf@o$;ioK7dm-X60nalGIq>1!eeGgN+\"odiS;NT5`g`$P
+LjjW!MP7>`]<\TCXfJV-q6+1^M2I7NNK9-_P*;,qQC+&.S"-%@T:r!SUnsufWN*&%Y->.9Za@0M
+\@K5a]t_=u_Sa@3a2lBGbK\>YdF$Fme^i@)g"P3:h;7)JiSrnYjlYail07L!m-O--n*fc9rpg?d
+o^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5Bc
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_LdC<JbsurJ,Fa2EG8ltA7p.+Dej3,
+DM!@eH[9s\F`_U%D$>Z]Hu!YBj*U`Prd4Tkqg8<iqKr$aom-O_!dT#orEob):O@A2rcScmE,]W0
+BkM!eA7]4YCM`ub#A\'iCMIU"=T4<^NJ`VmM>i87L1l%'E--F)IeS?kIKG"LJGOcnJGjs!IXQYC
+IfFosIenQmIf=inJ-(4LIeJ3iIf=a"IXQWnIXckGIK+ckIK+ZqH[>[<rd=`m!.+Nhs*OioI/\Qo
+I/eKmHiAEmHhVjZHiAEjHiJEhHi8<nI=-GAHiJKiIJJ?iJ,OiqJGt&uJ-(:PJGb#uK)gT'K*$XW
+K_pK$LAco*M#)u-M#W>.M#)o+M#E21L]E;,MY`5=IrK@EC1h*iBROM^rFl1ErbD1CpMBeFp2'M>
+rG)=Gr+Q(B!+u4mpQG04o9B6<rKK(&Q^F53SY2[OUo()iWiWA-ZaI6O\\#Mf^;.V'`5]pAc-Ohf
+f@o$;jQQ%&p%\C]rVl`ps8N&ss8;oo!;cZk!rW#rrVmo;rR%$uMhm.AGC>@8J9cNcDf'H9Jr>SJ
+Mhm.CKD1%,Ll%"JN/`mZOckomQ'Rf)R[]h<StD^NUSO`aW2ZeuXfen4ZEppH\%&u\]Y2(p_8=+/
+`Q-'AbKJ/UcdC.heCE.%f\,!5h;-rGi8N\UjQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssf
+q>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5<a
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_XUS&;BIJ?.5*2'3Ar`N1c$sS69m^u
+4Zkef3ArcS6:s^D:fI<jpJL9Tqc!Air_rYmo2GWf!)r_l%P9=f0JPFA5<h:p4?GYdrAY$>1bppE
+1GUle3!VB%3B0&Z3'R=8"&2E]9)M6b8hW>(:f:6b;YsAp<)Z[nr)ESorDWhs;H!Bjr_iSkrDE_r
+<E3#k;u0Gn;uTbo;uK\g;uT\p<!63";GpHm<<#ks;Ya5k;Z0Sp;u]\p;Z0N#<)Z[l;H$Ij;cETn
+!)rkr!`N&sr`&hr!*&qrr)EMkr`&kqs&APfr`&hpr`&kqr`&nqrDWbqr_rktr)E\rr_rktqGd,f
+!*&qrr`&kss&K,%r`\tts'#G*"'A].=o2>!=oVY5;Gg=g:J4>S76iOSrFl1ErbD1CpMBeFp2'M>
+rG)=Gr+Q(B!+u16!*];)pKI8ns&oP.>$5!1r`:(?<E3!u<)lt"=BSg3>[1TA?XR;PA7T7`B4tsm
+r+[!_Ci"!-E-$/FG^FplLQ%FbT;8HhZ*XD:"LPM@Z*F,/'X>!P[^NTNZ`pTP>$P-1=B&0r;-*Wk
+$qsDk9iFtj=B/C$;G[$c@#0YsN/WaWO-,ThPa.Q%R$sM7SXuIIU8+N\Vl6SpXKAY0Yd1UB[^WcW
+]=bhl^VRe)`Pom=aihlPcHjnce'uq!f@\d1gYL]Bi8ESRj5f=akNM0plKdg'mI'H3nF?MK#kR]\
+p%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jtGiWj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_4-m^R@3o=rg3VMs-4t+ObfEaLnL<-
+P)PKaBrnG8W2-)YS=,b.Nd6tZFF&S&P*(lgOcY\%OoCOCPPg[FPQ-jIPPgXFQ26^HPEM.,OoUXD
+OSFn:Nq//0HN&I2J7)Z[Tq@mIT:(t0P`Li_LPLP8KS,9`O8k7?N;\_9B)]FH]=>>Y\$l:C#doH.
+SUuQ]Q^@Z:"I549Q'M64qj%&FrL!GJs-WbOrg*8EoU,TD"I>==Q^.H4s-<JG"-o+8PPUODQ2QsI
+P6$i/r/_&BOH5HaqN(Q9!KW9>OT1@ANr4n8Nr+n;NW>.<NrP1=OT1@AOo1=?Oo1CBOT^i0P*2%*
+Pm*J=P`q>rqN^f>s-<YOrg<\Q!1NkSs-itWs-s1_SXuGOT`:\cTDkGUTDtJ_TDP;]UAgefTq\9V
+r1s1cs/,Rfr2'jiJp_ieE,9N=WeFFOC&VlDC]&#ED=qfBD>\5HC]8)KC&DZEBD\k3YQ(g,Z2M!-
+Zhq*1[C5e<rO=2b]">Sg^qmt/ai_fOcdC4lf@es9iT'%`lKms,nF?,Cp\F[`r;P.E)Q9I&Vj!.G
+l`lY9OFhk-K:/aI]"bGOZE(13poe7cMMmFQNfT9bP*;/rQ^F21S"6.CTV8-VV5L5jWiN8(YHY:<
+['d?P\[oGd^;%J#_o0O7aN;TJc-FY^dF-Oof%8R-g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jsoKRj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_>]&aJc(&uJ,Fa;GA:]/BOuF3EGT<)
+D-):=I=6EcG'%_CDJNU&H>%/:l?iPYqg86grd4Tkqg8<iqKr$aom-R`!I7oJ?m/BDI<g$ZF`qhF
+E,TQ.C1_$e@q&n^Chmj%Chd^#C2%Hbrf-u<reg`4reCi8CQa9gFaegiIX^m<rdaforIFlss*t-!
+IJnWpJ,XonJ,XorJ,"NpIt%0@rdOips*jrqrI+ouIXZcrIf+ToIf=cqI/\KjHj"eDH[C/>HiAEj
+I04kDH@,X=s*ONes*F`lrd+Wmrd+ZlHi8?iHiJEiHi8?lIJeHnI=1p?q0r<mqgJTrJ:RTJ"+YrQ
+Jc(-!K)gT&K*$XXK`$Q%LAQc+M#)u+L]E;.M#E,.M#)u.L]iQlMMmDjMYN);JT5XIC1_$hB7aee
+rb;@HqJ6"Fq/,eBq/-%GqJ6(Fs(VCEs(D(hoons2rfd;F16n2nR[ftATq\?[Vl?YrXfo%;[^N]V
+]=bhl^r""-a2lEJcdC7og>(ZKlL4?<q>1$gr;Zfqs8;oorqcWk"8r,rrr)j>rr)clqVf\YMhd7?
+HB>FkH[C$ZDJaHEM2[IWMM?tAL%g73M2I4MNK0']P*2#oQ'[l+S"#t?T:hmQUnsueWN*#$Xfnt6
+Za@-K\@K2`]Y;.r_Sa=2a2lBFbK\>Yd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9
+nac8Bo^r.U!quB_rqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jsoKRj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_=CP&;BR\D.5NP-3ArfQ0JbOD69me"
+5!;"i4#f/X/jDm%;,:'e;Ya2U;Yj>h;Z9Vk<:j,f;ufkp;CX:P0JP:@1dF;h4Zkeg3]T2[3Ar`N
+1c$pA2)mQU3&`fW3&iiV4\\UD:&[fc8IJ'\8kLs-;,C+f;cE?er)<Vp!E)kn<;fhp<<#kn;uT\k
+;uKSr<)lptoi(Q`qc!Gmr_rhrqGRDm;uT_t;c6Ql<!Q?$;c?Xo;c<Tnr)<_r;GmBks&9A);,L7j
+;,U=k<)cfq;ufqo<;ons<<#nq<;BJm<!?2u;c?Xpo2>WgqG[DnrDW_qs&8kq!)rkr!*/nq!*8em
+r`/qsqGmDk#ZOf(<`W:)>$CT%s'#G*r`K2'r)il"s'#G*$WBo":/=MT9L_9%.fO/]CAM`DD#%r@
+DY\/ID#.rHCB&#GB`D]G>?^r/pKI8nrEB5(!*K5%"'/E%<;ont<Y\\=>$G6:?!^lG@:EbXAS,Rf
+BPD3rrb3<dCM[j)DfB`=G'SIcK8PbVS=uj^YHkOC[C!7<YQ:r3ql_EPZF%'K[C!9EY,eLtJ9"an
+='/F!=CY<+:f0t`:/=Yb<*!%!<DudmpJYX[MMmFQNfT9bP*;/rQ^F21S"6.CTV8-VV5L5jWiN8(
+YHY:<['d?P\[oGd^;%J#_o0O7aN;TJc-FY^dF-Oof%8R-g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K61?do`k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^qZA-rgE\OrKmPMrfnRoM//93BUkKV
+OH>WfX0/CuUnXNOR?a)#P3^r#H%M(UP4t+<P5^[APR!J<Pa.JuPa)04qNUuCqiV&DOHGY"O8k74
+N<+EOrdb/[?ui"@TEq*WQ'7DmO,AenL&Zc6NK9*ZOH#3XNfB$YNr?U"\[T#V[^EKL[CXS,K8'5i
+s-E\MrfdDJqNh&E!1*MKrL!MLs-W\M!1*8DoU,TD(7(;RQ'@N!Q'R]$Q'ISuQ'@MuPa%Aqqiq)F
+rfmGH"-Se0Ont18O8Y1?O8G%=Nr=t;NWP9%Nr4t;NW>.=NrP1;OT1IAOT(C>P5g[DOo^c2rK[AJ
+!gT"6pm(T<"-o1=RJrQRRJE<OS,Ji[SXuFFT`1VbT`1PTT)bP`U&UbeTq\:\T`Lm_qkX%as/#gn
+VYm:cV@Ac@I!BjTD/jd'G#_XZqeQ.Hr,(M4r,)FLqJ6+Grb;=EriZ:)s0)L.rNcF/qm6C3[e@3/
+\0nhu]=Ybl_8F:6b0/&UdF6Xtf\50=ioK7dm-O0/nFH2Dp\=U^rVk7F)of@_URn9=Q*A5sNK]3K
+H%1sNXgYmNYHG%/Y5#4#M.;F%N/is\OckomQ'[l+R[]h=StMdOUnsrdW2co"Xfnt6Za7'J\@K2`
+]Y;.r_SX71`lQ9EbKS8Xd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U
+!quB_rqQKgs8)Zjrqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K61?do`k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^qYJQqgn`srdXip+*(pmCh?XhEGoW/
+D/=cSI=-?cGB7eCDJa-uWIeo+H0TbUHineEH[GU:rHnNkqg8<iqKr$aom%9u?!1QD?rKm,H$FOU
+F`VP@Df'<)BDuEP@q'1hC2.R#C27X$Bl%RErf.#;MZ/G<Lkgb?Lm;aqFo6^hIf4`rJGXfsJ:IKI
+q1&?n"FkrPIsq9ErI4frqLAKnrdXZms*k#tqL/<ks*aorrI+Kjs*suqrdOip#(1iGH[L3fqgABi
+!IB+lI/eWpHi\S?rd+]oH[GO6rd4Zk!.4Zls*=Zlrd=?brd=Wlrd=QjrI4TmqL8HordOlsrdY'$
+JqO&S!/(0%s+C?)r.Y$&r.jm"re^Q/reLN0qhb?1re^W3s,-o8MuJV0MuJYEJ8fIFCM76jBS0e`
+95=?>rG;CKjDOm4rbVFHs(_OIrFl"ip65'3rfd;F16n2nR[]n@Tq\?[Vl6SqXKSk7['mHR]">Vh
+^VRe)`Q$!Ac-Xkff\>9CkjJ$7q"agbr;H]prVQ`oqYL0fs82orrr)j@rr)clqt^!4R[9"iL5:)'
+MjJs>I!'CGDg?qlNK9$ULk^WXK`?m=MN!LSO-#KePE_?!R$jD4S=Z=FTq\?ZVPgAmX/rG,Yd(O@
+[C3TU]"G\i^VI_'`5Ta;ai_fNcHjkbdaZdtf@\d1gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>
+o(2MGrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K60^.]^k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^q]P@qGIhU.4d,(0fM!J1,CaC6:*s9
+4pj>43&ifNDGs,':\doc;<^s[;c6Nm;u0Dk;u0Jc;uKYq;uTZ#/hA\20fCjI5Q3hV3]oJ`3&`fT
+1c$pF1GUid3!_H&3B9&X3B0b49`I`o8kDTF8kMZ:6;UQX;#O>c;YX2f<;fhr;uooqq,78kqG[;i
+!`N)uoMbH_qc!Dlr_rhrq,@5k!`N&uq,I>ls&/hps&B"ss&/bn#ZXf%;GpFk;,dEms&/qt<Vo_r
+<E/osq,I/gr`&kpr_ieprDWYorDN\qoMbchr_iu"<E)mq<;T\q<<#tl<<#tt<;KSp<;]\p<<#r$
+<``F->4u+u>5h\)=T;M)=BYW*qH<f"%TcS+;,0q]9MIr@3[ZRqqeQ.Hr,(M4r,)FLqJ6+Grb;=E
+rEK&#oi_5ss&oA(s&T2$qGmPs$WpS:>[1Q@?XR;OAH$-AAnPfTC&Mc`CMdp+E,p#DH%(="NKfm)
+V5^T#ZF$sDZ2Lj,Ycmr,'sFmJ['d9IZEUL4WMQ;[E*?OL=&r<";%cr,:esh]9MS;\<)d""<E)mn
+;YX2jM.;F%N/is\OckomQ'[l+R[]h=StMdOUnsrdW2co"Xfnt6Za7'J\@K2`]Y;.r_SX71`lQ9E
+bKS8Xd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rqQKgs8)Zj
+rqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH2lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^V?8,rg<kUR@'B?Qi<<NPolWZJWknF
+Ssl"-MN<q'XfA4pTV7mFQ^*\ns1=VAI>.Q]!0R8DrfR/Bs-*;Dr078JqN_&E!1!PJrfd5BrfI2B
+q2bN8p5L5DG(G3r@:!37TUqmKS=>b,PE(NXKnY26K7f2ENKB-YN;eh:Nr?U"\[T#V[^ENM[B?`^
+KnfJkrg!PLrfdDJqNh)Fs-ESLq3V/Krg<SL!1*5Cop>cHR/E9TQB[Z$QBmm:Q3!88rKRJLPEM.-
+Pl-dHPl?mFOoUX@O9(E(rK$l<!frG*r/gr>!fi8"rf6i9pl>B8r/gr@!g8Y,qN:c?s,m8CrfdDJ
+r0I>Hrg*AFqNV#F"dYRER$a<;Rf8fUSH#/[T)YJ`T`^s[St>bMqk3q^#G@caU8"?UUALbZV>mFk
+V>-qeV[S];HZsXQD/jctHVRZAC]/)KD>.r8Dte/KD>nAKC]A/KBa/7RY-5(7Z2M!-Zi%31[/dZ/
+\,Efb\[oDb]thJ%`lQ9Fbg4\ceCN:+h;@/NjQGgpmI'K6o(;VLq"agbrm:Z`m]!"RYEY0ScE`On
+NIuV.KUSpL[CWTF[&^A(Y@NKIMi<XVO-#NfPa.Q$R$sM7SXuLJU8+N]Vl6VqXKAY0Z*L^D[^WfX
+]=bhl^qmn+`Q$!?b0/#ScHstee'uq"f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCV\S
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH1lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^V>BsJcC9!J,Og<F_P3"A7]q*Dej$&
+D1mIiI=$3^FE;D>Ci%FUH#%;?k^*;WrdF]ls*alord4Tkqg8<iqKr$ap3@-T=^YTF;,L,9G]n:R
+FE@G"!c)I`rFGq<#&@sgChmd#rbDROCQ8=R!K;p8M$SomLPCD5D/samJ,OorJ,+WjJ,=`rJ,Fco
+IfOrnJ,aurJ,=crJ,b$"It%6B"FbcJIXV-Cs*a`ms*k#trI+WnrI+Wls*O]lrd4Wj%XWSOI=-Eh
+H[:!bI!g9fq0N$es*FWj"+5HAHi8?bHiAEiIK+]kIJnWjJ+e?jJ,Xs%JqJ]-JqNlPqh=m$s+^T1
+rJ1'%reUZ3M>`81L\lr,M?&M1MZ/P4MYi>/N!t/TE,TH'AS,V+AjT,hC]/)KD>.r8Dte/KD>nAK
+C]A/KB`MiDP4t11Pl?mFPVSMjR$sM9T:r!TV5C2jX/rM/ZF%$J\%'#]]Y;.s_SjF5aNDcRdFHn)
+i9'CqoChtVr;?Nkr;ZWoqY^3mr;HWorVn/BrVQKgq"FCRf"6s#LQR%6Nh)/VH?aFIDfgJcMi3UR
+Ll$e=pOm(6MMmFQO,oBcP*D5tQ^F52S=Q7ETq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf^VI\&`5Ta;
+aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]k
+r;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH0lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^VBJ@qGJ@e.Od&&/NG^G1GCUA6:*q$
+5<V+j4$#;Y217n^:J^[^r_`Pjs&7oTr_rYmoi(cf(/n*`.ki\42`*BW5!;%j4?PV`2`EWPrA=O.
+"u\G#3B/uZr&=[OrCd>e8kDTFr^d;V4\ejP;,[?kohtQ`r)EJl!*&_l!)iVkrDE\q<)iNhoMk`e
+s&9&"<)iiq!*&_ls&95%<)Zdr<)QZl;ufkq;@$3#<)Z^n;H$Qo;[??&<)cdp;Gg?k<!#ur;uT_r
+;uK\m<VTMo;cNZns&9%u;GmBj"&i)q;u9Po;uTbg;u]hs;?Bft<W5tn<<6-#p/M#krD`\p!*&ho
+r_rr"='>N+s&f>*r)rl"!*T8&s&o;&r)j#%r`B,#%9HJ*:esh[8kVT<4!u]\C]/)KD>.r8Dte/K
+D>nAKC]A/KB`_sP>PMD!=TDS$=oMV)=oVV(<rc:t<W?,4=B\p5>[1TB?t!MTAS#IcB5%3WrbDFJ
+'l7`)E,p&EH[g^,P*_`6W2m&(Z*CP)XragPZa@*GZEg[8WMQ>]S=,aeB3A;<>?"L$<`Msm;>j5r
+;H6dt=&r=";,I!cA;Q2%N/`mZOHPckQ'Rc(R[]h<StMdOUSOcbW2cl!Xfen5ZEpsI\%0&]]Y2(q
+_8=.0`lQ6DbKS8Wd*^:jeCE1&g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc8nac8Bo^r.U!quB_
+rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\6h0[8n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7CNRf&QRR/WHMQ63)fK9hFQCRgcV
+NKK<7XK8=sU8"<OR$O"uN0r7=H%YdQ!0R/A!0d;ErK[>I!LK,MPlR'JQ2[$IPP^OBOT:L=O8b17
+N?<OmJq/E'?<j;"St_dHS!B8&P)P<TKnP)4JrPhOO,j0u"-/A%\c05P]",8Y[^EQN[@3;-KnbnZ
+qj7>Ks-<VKs-<YOqj%AMQBdc%r0R5H!gf:Am$I=2qj.JPQ'Rc'QMm-MQMm*KPQR,4P*>m0qN_&D
+r/q&BrK%#Ar/gr>r/_#AOHGV'OSt7>NrG(?OH9C&!0?r9s,[#<s,d;CrfI2DrfI8FPEPp-rfRDJ
+Pa%GurK[VPPa%H!QM6[APQI,9R/EBPRf8`TRf8fTS,f,ZScGD^TE1[Vr1EeX!MQ7dT`ChcT`Lm_
+rhKRiV"^_bU]I<hrMB:drhodp%$H*gG]n(DEHeI5:f[L2rb_LLqete>r,;CKrb_[Or+l=Is(MP=
+Z*F;6rNlF/s0Vj8osaq1.Cm%%]=l"r_o9^=bK\>ZdaZk$g>1WDj5fCflg4'/nFH2Cp%S4VqYU9<
+ru9%fVPKf]MNkHaR#@/cIsZd7Up.;?]<8<?Wic$!=c&&qN/is\OckonQ'[l+S"#t?T:qsRUnsue
+WN*#$Y-5(8Za@0M\@K5a]t_=u_Sa@4a2lBGbg"GZdF$Fme^i@)g=k?<h;@/KioB([k2tjjl07L"
+m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\61OI6n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7DXJc:3!J,Xm>Htm).AS+qbE,B?+
+CfQ%;I=-9aGB@kFDJX!/VIaRbI->nWI/SKmI/SKmHiSNjI/A9iI/83cHMDb,?!:WC?sui,I!KjY
+G'.hFE,BH,BkCmd@Urq`C2.P`CB&&OChmgErf.GIMi!=JLkgb?G'IhEFnU=aJ,k0"J-pdVJ:W9%
+JUi<%JGOcmJ,k)uIe/$hIf4cmJGt&uJ,t.Kr-\QordF]ns*sfm!IoRsIJ\KnIJnQlHiJKmHN8Hl
+H3ASCI=-D>H3/J@Hhi!dHiJEhHN8BkHN8HdHi8?lIK+`rIK"WkIJnWjJ+\9hIfb.OK)C9$K`6W(
+K_gB'L55b_s+gW1rJ(E0L\QZ*M=uc'M=lc*MuAP3Mtr>3N=:8SE,KK)AS,V-BLGAiD#S;JDYnA<
+E;XYMDZ4MQD#A)KCB&#IP5(78PQ7!FPlHsGPV\SjR$sM9T:hpSV5C/iX/rM/ZF%!H\%&u[]Y;+p
+_8=.1`lQ?JcdLCuhW3qio(DbRqu$Hl!;ucls8)Wi"8r,rrr)jCrr)cmqY9gYp%7k$R[/qhLPg>)
+NKnm:HZj=FEIW_$NKB3YLkbSU=c&&qN/is\OckonQ'[l+S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M
+\@K5a]t_=u_Sa@4a2lBGbg"GZdF$Fme^i@)g=k?<h;@/KioB([k2tjjl07L"m-X6?mfr:Oo()DD
+o`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\61OI6n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7DU;u9H.1Fjn1/hSh;2D['D2)die
+5X.Fs4Zb_(3!Luu=\MXg;>*lf;>X8h;r^dT;u0Jd;uBT<0.nq50ebF?5<h:o3]fGb3B0#Y2Dd3H
+1GU[C2`NfW3'$st!]N)6r(I2b8P)JP8I.IL:/Fhb:f1-h;u9Gm;uKVh;uBVn<<-"t<W?%q;ZK_i
+;uBPc;t*`d;uT`"<E)pr;c<?g!*&nq"&r2t;Z'Jq<E)rq;ZB\r;uTYu;cHXn;cWcq!`MuprDWu!
+;c?Xp;cEZpqc3Ais&K(ts&/hqr_`Pjs&8YkoMbch"&i)r<:s8k<qfPn<W6#!<W5qu<E/osr)<Pn
+"'&E)=o;J'=TMW-q-!u*=BJX+=BYT)r)j&&=8c2"<t/8/:f0t_9h7rG5W^AGrbVRNqJQ1KlYuc?
+q/61Ks(qUKs(_RJq-*Yu!*K,$r`]>)s&]>(=B>8us&Tb6>$G39>[C`E@:EbYAS,Oerb2:FrG)@J
+(2Rc'DJsN;H$k4#O-Z9.VQ6f#YHP+3poOLts/n#YYd1UAZEga=XJr(kT:D=9Q'?5h=]ed+<DcRk
+=&Mdj:JFPZ:K:@p=B/=";,C-a;d"s8N/WdXOHG]iQ'I]'R@B\:StD^MUSO`aVl?\sXfek3ZEppH
+\%&u\]Y2(p_8=+/`lH0BbKS5VcdC.heCE.%f\5'7h;-uHi8WeWjQ>Ufkiq?sm-O--rpL'\nac8B
+oCW%T!quB_rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpNAFmHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IpS"#k7R[KS2R$X0;Q62TTJrkXu
+TpV++PE:m.XehqjU8"3JQBdPne^0t5JW&rZs-*AFrg!GJrg3VMs-<VMrg!JIrfd2As,d;Cq2bN8
+qMckOH@pa!JR2`[StDXGSX>b/Q'%&_LkUP8KS#8FO,o9[N/imYNK:+=]FDH_[^NZQ[^:UJUORuR
+rg*GJrKdJKs-E\O!LB)JQMm0DQj&nFQ^=),qNh8NQ^IZ:!LT5NQiNQOR/WHNQN!3NR/<6LQ2[$I
+PQ-mHPlR'JQ2d*JPPgUCO9(K,r/gr>qiCi@OT(:@OSb(?NfT8#O91Q+O84h8O8Y.?O8Y1>OoLUD
+OT^i2P*(n*P5gdHQ2?mIQ2d0GQ2d*KQ2QpKQ'Rd7RJrZTR/i]SS,SrXSc55YT)bJ\TDG2\U&1Pb
+US@a]!huHcrM0.ar1s:f!MlRfVZ3RlW"+u<I!0RMDKC$.LLl?FD>S5LDu4M=EVseSDu4GOD?"GM
+C]A/KZMh--[/[N6[e7-/\15&#]=Ybl_8F75aihrSd*gFpg"P6<i8`n]kj%L$n*ol<oCV_Kp\=U^
+rltH]e#B.5XHo$S\?V0YNIcJ*NM!;^Zb3NGY,nf#Y?m'CMi<XVO-,ThPa.Q%R$sM7St;UKU84W_
+Vl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpMu;mHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IpqgnZq!.Xrr+*)%'C1:.dE,TN/
+ChnWQI!p9cGB@nFE,KQiS:56oGisGRI/SHnI/A?dI/A9hI/A9dHMVmo?sI,I@:E#/HZs]5FUW>3
+EH#c1BkLsf@q0!IC&i&KC'AEhD/=$?rf.JJMi!:JLkganEdhnIG(0.7s+(-#s+(-#s+'orqLA?l
+"b1uMIt3(GIft:OJ:E%HIfY(LrIFfqs*t*!q0i*gs*srqrdXrsrdFQjrI"Qjs*Xin$[d;JH?spc
+I=-EgH2`*lH[:!bqK`0hHM2[gH@(!dI/J<kHM`'hI/\QnIKFqFI/A?kIe\EdIf+ZsJ:W=MKDpQ'
+KDgK'L&Qi,LB*).L]<2-L]*#/L[g2uM>)o*MuAP4Mtr>0N=LAUDf'9&AnG_1D,G(CD>S5LDu4M=
+EVseSDu4GOD?"GMC]A/EPP:=AQ2?gGPPp_%Q'Rf+S"61EU8+Q^Vl?\tY->1;['dBQ\@K5a]tV:t
+_SjF6aND`Re(EI8kO%g2pA+R^rqlcnqtg0ds82orrr)j'rr)clqY9dXo^r.S#kZN;Nf&UPIt%BW
+&:AhLEGfc@Jr#DFO,JjLKS0#P?AXPtN/`mZOckomQ'Rf)R[]h=StMdOUnsrdWN*#$Xfnt6Za@-K
+\@K2`]tV7t_Sa@3a2lBGbK\>YdF$Fme^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s02NR~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpMu;mHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IprDN\qrDWPj*\Alk0.JY92E!<I
+1c%Ea5<h=p4?Pbd2`<Qn9h%oTm8Eg[j&5hSqc*8frDX.X/h\q60JkXP5!1t+3sI])3&``P2#]96
+0fCpL3W:u<3W1oL92/)R92%rM8OuEE/NcO!:f73g!`;inr_r_ms&8hnq,@5krDiksr`/qsrDW\n
+r)3\s;cH]n;?9]op/C<W"BAE#;cEZnoMZ/t;c6On;c?Xp<E)mqr_a/'<)Z^n;,^Fm;GpFnr)E\p
+"B8<!;c<Qns&8nr!*9"tr_rkrqc!`!<)Z^n;Z9Yk;ZB\i<:a#k<)Z[n<;'>k<WZ9#<;T\p<rZ5%
+<`T)trD`hsr_rhrrD`r#='/W(=o__)=Sc5$=oVV(=8Q+t=TMW+rDrr"r`BY,:Jae]91hlH5WpVZ
+2/W5.rGVRPl>c`@rGVRNrb_[Or+l=Ir*&u#s&f5&rEB5(s&]>(=BG?!s&Tb6>$G39>[C`E@:E_X
+AS,Oerb27EqJ$RWCi404GC+jpNKfj'UT(;qriH1%qPsRrs/Z@*Y-5(7rj)R/.BoqRVP9`RR[9;(
+PEM2L<**+%=]A7!;,pIi:ejb[9iG"k<*3+#;,^9b;dP<<Mi<XVO-,ThPa.Q%R$sM7St;UKU84W_
+Vl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61[+#ak2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7CoSGeo]R[KS2R$X0=Q62c[Kp.=K
+T:)+/MN<s8XfJ@qU8+<NR$<hsXK%e5I"UgLrfd>Gr0@;Jr0RGL!13YMrg!JIrfd2As,d;Cq2bN8
+qi)qNG_(Ht?sfe*T:VXHR?s5&OcPHYL4k25K8ttRNK0!XNfB*ZO.ZEa%D'*Y[^W]R[#L'FI><^Y
+QM[!VQ'Rc'QBdc'Q^=#)q3LuGq3V/KrL!VOrg<SLr0[JMs-WhQrL!VQqj7AMrK[YSQC!o'R$dl>
+s-NhQQ2HmHPQ-mHQ2d*JQ2[$JPPp[DOT1IIOH5KcOH9:#s,lr7rfI/Bs,[;CNfX*urK$r>!0@,@
+rfR2Cs,dAGPEYp-s-!GIrg!5Dq3CuE!1!JH!g]1?rL*YR!1EhTrL<hW!1j([p7M;Vs.T@br1a@g
+TqS4[U]7%hUSR^^p7q\bqPO:jqPXjgIX?<]EGfrCX,q@WTDia-DuFYIEVFMGEW0qVDu4GPD>nAN
+CB1[=Zi%31[/dZ2[fEr;\,Nle\[oDb]t_D$`Q-*Dc-F\aeCN=+gYUlKjQ>[jlg4'.nac8Bo^qhM
+q"js5ru:p]Ybn1gUl1JD\<`);Mgp//R]3a(]Y:PP[&iu)?&=JuNK0']P*2&pQC!u,S"-%@T:r!S
+Uo(&gWiE/&Y->1:ZaI6N\[oDc^;%J#_SjF5aN;TJbg+P]dF-Oof%8R-g=tE=hVd>NioB+]k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$YlB4~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61?do`k2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7Coqgn]r!.Xrr+*M@,D.R='EcGl-
+Ci*7)J:)ZfH$4:LDJj9AJ9tsJF6@oJI.r'`I/A9hI/A9dHM_sg?!7/8(K""WH?XOTG&hS@DJa3*
+B4GI_@q07iC]8)KC]nNjChnCsNX^u+M2@+HLPKP_J8TFRrdOWlrdb!!!.aco"G2/RIt7NJqLJKn
+s+'urrIFirs+(-!rdarsrdY$!If+TpIXV'ArdXlqs*t#ss*aWj"+>QFI/SBlI/\HmI/\HtH@($f
+I!^-aoQgRcH@#C6!do?Ard"Qlqg8?hrHnKjs*alqqL/<kpODpdqgSZuJqEuS!.t'"rIb6+L5,Y^
+qhY0*s+pZ0nqd1"p5/j/repc5repQ1qMbr5E,]Z0An5OeJob+/HN%g]DuFYIEVFMGEW0qVDu4GP
+D>nANC\j7hPlI$GPlHsHPlI"(QC+)0SY)OJUSOcbWN*&&Yd(OA[C<ZV\[oGd]tV4r_Sa=4aNDfV
+e_8pClgXK;p\F[aqZ-Kkq#L9fqu?QorVZX$rVZTjqYBmZo^r+R*q]-GSW\thLl$J,O-"d8I!9RJ
+Ee&n'NK9-WLPUY<pOlh/Mi<XUO-#NfPa.Q$R$jG6SXuIIU8+N]Vl6VqXKAY0Z*L^D[^WfY]=bkm
+^r!t,`Q$!@b0/#Scd:(feC<($f\,!5gtgiFi8N\UjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKe
+rqQNhrqcQirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61?do`k2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7Cor_reqr_r\l+"o)l0J+k:2)R0D
+2)I3X5X@Os5!:th2`N`Z5t4UG;!h0W;s.$Y;>sJl;u9Pf;uT`%/hA\20K1gR5Q3hG3t4523&rrW
+2Dd0G1bgmHrAag;rAYWc9h\5R9M.oJ8OuE-4@i:G<)HLh:f1+gr_rhps&0,";c?Xo;H!9grD`_q
+"&r2u<W,nq;uT\m;uKYq;uT\e;tX)i;u'Am;uTbr;uKVo;ZKeq;[cQ&;cH[p;c?Xp;GpHm<;of)
+;H$Ln;c6Ii<)can;u0Jl;u]es;uTbr;uT_t<E<)u<W,ns;uKYr<E/rr!E)kp<<#nr;?0Yf<:j)h
+<;ohl<;]br<WlE%<)lrs<r5qu<W,nq<<-"t;ZKeo<rZ8#=oVY*=oMM'=o;J'=oMP'=8Q+u=TDS'
+=8u>#=8Z2";#a8r8kD`F5X-e\7fI<)DuFYIEVFMGEW0qVDu4GPD>nANC]7N7=oMP%=UA87>$5!1
+=BAU*rDaS5<E3+%=BSg3>[1TA?X[AQAS#IdBDuTCC&2QZBkqR'EHQSVKSttZSYE$^X/rG)X/c,s
+s/H$us/Q:(Xfek3rNRrYYH4b$US46JQ^3l"P*D9!CK+G=<``:!:fLLn:/Ob^9i"Pb;cZt$;cQao
+;>4!pM2R=PNfT9bP*D5tQ^F21S=Q7DTq\<XVPgAmWiW>*Yd(L?[C3QT]">Vh^VI_'`5Ta;ai_fN
+cHjkbdaZdtf@\d1gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH3lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l])J3'S!oe6R@*r>s-=^ZB9%g\
+S!]G"PE2!3Xf/(kU7RsFQBdPCS'dCEJrfVgs,m,?rf[>HqN^`?s-EYLrfmDGqNCl@!0Hu:s,R&;
+,(4`hJq@B9PG+V>Tq7d@QBRGmMi!:FL4t;6O,f9]NfB'[rf-uFrk&<E\[VRHs0W#;OK3e`N;T">
+QO/tCQ'Rc(Q^=),rg3JIr0R,E!1E_OqNq)H!gf:Arg3>G!13YMrg3YN$(%$HQ^=),Q^3p8PQI&5
+Pl?sJPl-dYPa.GqP*;)mOcY]gOcPQbOcfL%s,m>CplGB8rfR2As,[)<s,R;CO-#HarfI)@s,mPJ
+OH>WhPPpXGP`q=1PQ7!DQMHgEPlI$KPQI,9Qi*6ORf&ZSS,f&XS,f,YT(\fVT`:_`UA^keU]mNf
+TqS3Urh9FgV"pk[V"pkfVu*FlV[\i=HZsUPDK^3$N/2\ErbqdTq/Q7OoQ0kLq/QCQrbq^Ps)%dP
+s(hY@r3ZL3!4Md6!k>_LrjVm:/%N7']=ktq_o9X;b0A5YdaZk#g"YBAioK4bl0I^'n*ol;o(2JF
+p%J1XrlP0Y_l9H&X-SpQYc*_FOFhn2Oe].nZb3]LY-"buY?ZsDN/`mZOckonQ'[l+R[]k>T:hmQ
+UnsueWN*#$Y->.9Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0hqY^6ir;HTcrdk*#s02NR~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH3lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l]).'YJH(,tINNH:;/'W@F)c&3
+DJO0CJ:;olH$4=NEH#enGb07tF*dP,s*F?bqL&$cpO)gard=Tiq0N!b(LL?T@:E)1EHubNF`qkG
+Df9H-C1h0jAc?3;C]A2RD/3s'Fo@=#N;\V5L^$RoJo5[VJ,OimJ,XuhJcC<%Jc1*!J,"NtIt3#u
+J:RKGrIFlss+()us+(&trdb#u!.OlppO<-lr-eWqrI+`prdFisqL/KoI!kp?s*Xins*Xcl#(1iH
+H[9s_om6Xbs*FKf!IT7nH3/G@I/SElHM`'fI/eWpIf"QlIeS?eIf=isJH(*#J:W=NKE$Q$KDgH'
+L&Qi*L]3,0LB*/.LB*/0LB<9gM>N,-M$/WkM2I/^M?o-!N/NUOMMmDdN;JV6N"(5UEG]K)A7fJ*
+E+NI%rbqdTq/Q7OoQ0kLq/QCQrbq^Ps)%dPs(hUtp6>QAr075FrfmGJ)jZkZS"61ETVA6ZVl6Vs
+Y-5+:['d?P\[oAb]`,SV^VI\'`5g!Cd+$_)j65t%oCr7[rqcThs8)Qg!W;onrr;m$qtg*^p@\(M
+rpq<*p%A(ThO'=]LQ6n5NJrX?H$XOLEI3@sOGf0YLkpb;L%g7*MN!LRO,oEdPEhE"R$jD4SXuIH
+TqeE[Vl-MoX0&P/Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#ScHstee'uq"f@em4gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH4lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l\l8N+s&8em&h>C\/M/V82)?pC
+2)IZe5X%@rr]:BH2`<6Q;,9taohtfeq,7&fl;IRXrDNVnqc*;gs&9pi/MJq62DdN[4Ztti4ZYS_
+2`N]P2)@'F0etZd3!_H'3B0#Y3(H^A9G0uj84c?D/3QX';H-Lj;Gg7f;Z9Vn;?p-";c?Xp;c<Ei
+r)EYq!*&qrqG[GnrDNMkrD`eq!)iJgp/D)n;cEZps&8qsr_rhrs&8ko!E2tr;uTYr;cH`q;ZTir
+r_`bq<;TT!<)Z[m;,U@mr_r\nrDEVop/M&l!`W0"rD`eqpf%8m;YsDq;c6LloMkK^s&AqqqGdAm
+r`9%ur`/nts&]2#!*/qrrDihr!*/qtr`9)%r`K8*=oMM'=o;G'=oMP&=8Q+u=TDS'=8u;$=8Q,"
+<t8>/:f0t_91_iH5s?h[7K.6)E;=MMEqFGLEqs_SE;jeRDZ=SRD#\;J=oMP#=U/,5=]ed-='#<#
+s&T/"s&Tb6=^#$6>[C`D@:<YWAS,Rfrb27ErbDCG(MIQ!D/XK?I"I39QCFPDWMunuX/`+rVu3Ln
+W<TB'XKAY.YPtd+Y:coUVPBiVS!]M+PED#nQ^OG?IT0BM<`i9t<E)jn:Jah]9hnYf<`E1%<E)mm
+;YO*pMN!LRO,oEdPEhE"R$jD4SXuIHTqeE[Vl-MoX0&P/Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#S
+cHstee'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-3T]>^j5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\X]4\S=>t9R@'B@QQLd;Di]X.
+T:2"(M3*k%X/DqlU8+BPR[9;#Zc\_]IY[TZrfR#>s-*JIr0@;Jop>]Erg!JIrfd2As,d;CplGH8
+s,@eCH%LX!J6cKTTUqgJSXGb-PE:f^LPPk_%#0k)Nf]9]O,f9\NfX1P!kZ%QrO*!>GF5:TLQ7Xb
+r0I;J$'pj@Q'[l*Q^F0>QiEBOQNEJ>QMd*DR/WNNR/<6LQiNQPR/`NIQj&nFR$X,)rKmPM!13SM
+s-EbPQ2HmHPm!D<Pa%L2Pl[,4rK@>HOckk+OT1I=OT(C@OSb(EOcY]gOckigOSt7=NWP9%NrG+=
+OSt=AOoUXDO8tF@Oopo4PEZ!1q3M&Irg*SLs-*MKrfmDI"-f(:Qi*9ORf/`PSH#/ZT)##WT`:_`
+UAUecV#@"fU]$neV"pk[U]@7gV?!OiW;ib-W25W)G^+=LDK^2uLj2p%E,bYnrGqaUnoXbMrGqaS
+rc%mUr,2OOs(qV?s0hg6rODj9s0s8`]">Se^VRh+`lZBIcHjqge_&U1hV[>Rjlksom-X92naZSK
+"SDE^q#&55*<"WtVkp)`Mj1QMP`LudJUE3BY.(gP]rnTIXKV?#@>g)(NfT9bP*D5tR$a>3S=Z=F
+Tq\?YVPgDnX0&M-Yd(OA[^N]V]"G_j^VRe)`Pom=aihoQcHjnce'uq"f@\g2gtgiEi8N\Uj5oFc
+kNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu6NkrUg)?s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-0BM9Tj5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\b^jYJ:E(JINN-6=D;5TG&_D6
+Ao):9IXQ]kG^4FSF)c)7KpR1%E-:i#rd+6aqL&3hs*joppjDpbrd=Tiq0N'd!FB"0@1Qa@:jI;/
+F`qkHE,]]2CM<]Ys'l7DChmg&CMiuc!G[VnNWG)rre^Z2"^#r!DKL4$If"WoJGauuJGt-"Jc^LT
+Jc:6$JbairJHULSJ:W7MJ,b&rJ,XuuJ,OotJ,OotJ,FisIfb(IIJ&$hJ+S3hJ,4WnHj"eDI!^5>
+I/J<pI=-BfH$T=6s*OZis*F`lpNm*lH[C'cI!ba:r-S<grd=cqrI+]pp4**mrdXfos*t#u"+PiP
+K)L?$K)L?#K`?c(L&d#.M#W81L]iKhLPL]aL]<5.M#E20M?&S+M?&S5N;nh/N;8J4N"CnmEGoZ/
+BOtgiIr8O]8T8YFEW'qSF7OGMF8^.UEW0qWDu=MQD?"GGPl6mHPl6gFPT5sSR$jG7StMdOUnsuf
+WiWA,Z*UgF[^WfY]"G]T]bJ2q^qdk,a2uWTf%f3HmI9`?q"X[aq?Hcjq>'m`qu6HjqZ6WnrVliq
+s83-!qYBmZp%7nUoDeG+p%S:ZrPkauNerUKH@Lp3I!L*bEG]cILQ.:TNf8gPL5#>S@>g)(NfT9b
+P*D5tR$a>3S=Z=FTq\?YVPgDnX0&M-Yd(OA[^N]V]"G_j^VRe)`Pom=aihoQcHjnce'uq"f@\g2
+gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu6NkrUg)?s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-0]hBUj5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\PrB)!)ren%l#Lb0.SV62)R-C
+1c.Ka5Q3kG4:+&-2`<on7ScfYohtcdq,75ks&&hqrDNYmr)3PlpJUlcrDNVnqc*;gs"FC+,;Cl/
+1I+,e4?>Pc3BB)Y3&WTN1G^dA2`WiV2E<cW3B&oX:Amio91h`H84b0n8PrAar_`\ns%rbor_rbn
+!`N&ur`&eos&9%u<)`]or`&qtrDW\p!)rkr!`MupqG[>lnl,3\s&8nrs&&kr<;fbq<<#ns;Z'Go
+<)`cos&/nsr)<PlqGRPs;cH^o;uT_r;uBVp;uKSr<)lmtr)EVps&8tuqc!Por)E\r"&r2s;uBSp
+;uTYp;ta2j<W5tn;uTbq;u'Dk<W6##<E)rp<W?,(<`N+!<E/fprD`brs&T,#!*K5'!ErY*=9)M%
+=o__)=T)>#=Sl5$=T2A&<`f*!r`9Y5;,C%`:/"2Q76s'd-SB@WqJlISqK)4LqfD^VqJlLRs)7gQ
+s)%dPr`T8'pK7T#='&H$<<-)!<W?,5=BSg3>?kK@?XR;PAS#IdB4tuVC&VlIC&M]ZC27[+G'eao
+Ng,s'USk&iWiE"rVYd:kW'%&ZX/i>)YHY77Y-+h)VPBiVS=,\-PECukQC+/8VQ4K7=]ng,<`;sr
+<_lOf:JOSZ:fULp=BAL&<)HNd;IPKBNK0']P*2&pQC+&.S"-(ATV8*UUo(&hWiN8(YHY:<['mEQ
+\[oGe^;%M$_o9U8aN;WLc-FY_dF6Uqf@S[/g>(N@hr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2MG
+rq-?dp\4X]s7u]kr;6Kkr;H9eJcC<$YlB4~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP9C_N@n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[\3$S=H(;RJiKqQ[3UaMhuJC
+R?<AfO_(YrVPU&^T:VF9PE1!RR<<h.OS4k7Ont7>Pl?sHQM[!KR/N?QR$X-<Q2[$HPP^OCOT:L<
+O8k4`JU;otJU_!4V4s]USXl4:P`q5jMM[(AJqSf>OH>N`NK=(!s,[,k!P5c=[Ka-GVk\ToO8b=C
+Q2HsJQiEBNPQ7!HR/WHOQM6aAR/E?QR$mo?".,CAQi<BORIZaFRJrTRQNNVCR$dl>r0[JMs-<nT
+Pa.JtQ'I[7PlR-IQ26[JOckigOHTO(rK-o=rf@8DOH5HarfR,A!KiKANrb9%rf7#>rfI#>!0[;B
+rfR5DrKI5F!1!5Crg!JIs-!GIrK[DK!1<bRs-ihSqjd\W"eM?XT:_eTTDbG_U&:Y^UB76dU]$qa
+U\L\`V#R4gU]@7jVZ!FgVuWaoW"5YcIX$'ZE,U,ISqMAg=BYWCrGqjXj)k6@rc7mUs)A!Vr,)LO
+rj;^6r3uR5s0r!;/%W@)]YD;#`5]m@bKeG^e(*+)gYLcHjQ>[jlKmp,nF?&>o'u8Ap%J.Vrl+mV
+_5X9*b*eI)WLK!-P(S=:P,5Lr[_0,RY-+h-pT@q^N/WdXOHG]iQ'I]'R@B\:StD^NUSOcbW2cl!
+Xfen5Za7'J\%0)^]Y;.r_Sa=2a2lBGbK\>Yd*^=le^i@)g=k<;h;@/KioB([k2tjjl07L!m-O--
+n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0;TS~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP7.Kd9n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[_Nf!.b#t+F[a%;eK]HF)c#.
+Ci37)JUMokH$4=NEGfW#FEqS<F+!\.qg.s_qL&6irdOfopjDpbrd=Tiq0EBV>[UrJ?qsOGH$TC3
+$$1*)Df'9(B4YZR@f^F_rG)URCM[d&CQ8=R!K;p8M$\un8pu5-FaAIaqL8BmrIFfsrIFp!!J5n"
+JcLAuJGXltJGt&tJ-1:OIt.EIs*s`m!.XosrdXor!IoRtIfY"Jn:(=cqgSQnr-SKkr-\Kjrd=`m
+!."Hfrd+Wkp3QderHnNkrHnKhq0W$erd=cqrdFcpnpgOcrdXlss+(0%p4N<ss+UB*s+gc6Lkgcb
+M#W81L]E50L]`KiLl)+e!/^]2reg`6oSNX,mu7(%rJV;IMKs2\DJNlsChS33@7<g_rc.mWrH%"@
+rH%sYqf2XTs)7gQ!,_Lqrg!GHr0./F*0lhWR@Bb=TV8*TV5L8lXKJb3Za@-J\%0)]]=e-V!5AHI
+&Ac9'a32iZg>D#Wn+$&Dp\=a`s7lQgrVHKi!rW#qrr2rrs83,uq=s^Xp%7nTo*+dZpA"L_rr3qm
+R?!5`V1F)ZM19ntHZa:HH\IE@NKB0YLPLTWKOKasN/is\OckonQ'[l+S"#t?T:r!SUo(&gWiE/&
+Y->1;ZaI6N\[oDc^;%J#_o0O7aN;WKc-FY^dF6Uqf%8R.g=tH>hr*GPj5]4_k3(sml0@U$m-X60
+n*ol<o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP7.Kd9n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[_N9!)ren*\f8r/hSk:2D[$D
+1c7Tb5sIOr4$,J`2`E?Q786WVohtZao2>NarDNVlpJUibr_i_oqc*Ai(GIHp0JP7=2*aAh4Zkef
+3]T/[2E*NO1]B-<3&`fV2`NfW3&`fW:]3ue9)_?l8L?Yn;,U=h:f1(f;Gg=irDWYm"B8B$<)i`n
+q,I>n!*&hos&B"sr_s,$;H$On<)Z`m<:j,`<;onr;ufkq;Z'Gn<;oer;Z'Go<)`cos&/nqr)<Mk
+r)<Pn"BAB"<)`cqs&8qs##eDs;GpFmr`&tu<W5tr<<6'!rD`esq,@Ap<;oho<<#kr;t3i`;u]bq
+;ZKer;u'Di<W,ns<W5tt<rl?%rD`Yo!EN5!<<#tu<WcE(<`f9's&oD*r`K)%!*T8&!*B/%pfRT!
+rE&esrDsP4=]/'n:JFJR6Ua7'1ak"6rc.mWrH%"@rH%sYqf2XTs)7gQ")V1C=SQ&!=9_i-<`N.!
+<;ff/='/R->$G39?!^lG@:Nk[AnV*Vr+Z.Fs(MIHraumYC27d1H%(I*P*hc5V5C/hWMl`nVZ3Lm
+VD5!IWMunuXfek2Y-"e*W268^St)48P`q5kPEhN(TVSTk[((<^='/O9<)Har:JXhbrD!]#<*!"#
+<`N*r:f-ma@>^#&NfT9aP*;/rQ^F21S"6.CTq\<XVPgAmWiW>*Yd(O@[C3QT]">Vh^VI_(`5Td<
+aihlPcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<g
+qu6NlrU^#>s+13Ts*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VR/-_-ZqR[KS2R"'6uOFh5>
+R$<SlP*2uNVPg8eURn$EP`q1!ihUjONV8P2Oo1CBPPp^GQ2?mHQhZpKQ^7W9rKR;F!KrZEOo^],
+pl?bPI<gBpJ7)WXTqS'LSXGk1P`q2fMM[(@KnPPKOH,?\O,f6]O-'=Q!P5i>[KL-AVg='pOo^c3
+rg*ML"dYF<Pa.U7R/NBOQM$UBQj&nFR@0M4rL!\RRJiKQQi<BNRJ3'KQi<BPRJWBORK&WSQi*3O
+R@*u?s-ESJqj.,E!0mDFs,mGGOHBF's-!DEs,[GIP*(ojOcfR'"HSY-P*,^+s-!JHOS4b7OSb.@
+P*,^)rfI2DrK@>JQ'@O*QN*6LPlHpIPl-dIQC.W=!1NnVs-s([r1*bW!M5t`T)bP`TDbG_U&:Y`
+U\pnfU\pkcU]7.eV>I(eU]$tgV>[:iVt[.hW=Z#(Ndc=tFDl2IG+=)-;cm3%ErL.SFR=5GFT-@\
+Er9qWE;skTD?.*A\,3]7\,Wrg]">Vg^V[n,`lQ<GcHjnee_&U1h;@5Qk3)!om-X92naZ2@naZ5B
+o_/+Y`;^hFp8k3fUn!L<WM,N9P`LHGLRtZY[(O)VYHk:4p9%VXN/`jYOHPckQ'Rf)R[]h=T:hmP
+UnsueWN*#$Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sm
+l0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VHerdb#u+(JVZBjk%bE,B9(
+D/FoVI!p<eGB@tKE,KF,Y(CG/HM2^]HMDj^I/eWlIf=ciI/SBmI!bj?qg83d'jk9O@:3G>:OIG4
+G'.qKEGoc4D/3kbAcH6AChmkdC]A5NCBA<fNW+q=N/R[ls+gkVIt;K[I=D0Dr-nQnrdalsrIFp!
+!ePuSqh"]qqLSZss*k'"Jc1*!J,XuuJ+\<lJ,FimJ,b$#It3%<If4cnIK4fpHi\YBrd4`pI/\Kl
+I/eQkH3AS@H[L5<HN8HkHiJKlHi8?lHi89dHi&3hIJeQaJ,XoqJ,=`sJV*TJrIk-'re:K0Ll(ta
+s+gN.reUW4r/(H0!Ju^5MtDo,MZJcpnVm=(s,?o9&<)KmEGo]-BOtmkHYHkT925D+rc@gUm</2G
+rcA'Zr,MaUs)7jRr07/FrKR5Drfe@fR$jG7StMdOUSXidWiWA,Z*UgF[C<ZV]">WS]`>eG^Ce8u
+_o9dCe(<I:l0\!2p%J.TrqZQgs7uWis82im!rMonrr)io')VP#p\4CRoCMPDoCMVIpA"L^r;RbG
+_N9b6MLp2.M1pA&H?sXMF+T4-N/s!WM2?t>p4QY.N/`jYOHPckQ'Rf)R[]h=T:hmPUnsueWN*#$
+Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$m-X60
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VH8r_rhp*\f?"0.Sb:2)I$E
+2)@Td5<h=r4?Ybd2E*@4=@Z1_ohtT_ohtZas&/_kpeprcr_i_oqc*Gks"=U.0JG.<1I+5)4Td`-
+3B@'u$TBq#1GgmC2`E`V2u>Q93_rKL9`I`b8I.jY.R$F%;,gEl;#aDl;YsDm;?]uu<E<+!qc!;i
+r`&qtqbmJorDW\p!)rep!)rbooMYfj<E8lprD`nu<E/ino2>Wgr_i_os&/kqs&&hoqGI;lq,IAm
+!``3!r)3Vn;Z9Vp<;fhs<;KVe;uouurDWVnrDW5cqG[Aks&B"sr)EYo!*&nspJ_8r='&C%r`&hr
+rDrkrs&B&"r`B,#!E`M(=o__)=9)M%>5;:q=TDS%=8H&!=8Z/2=]&!m:.n8S77BI(1F=b7rc8!Z
+pN5eFpiQLVrc7pVs)A!VrGDU;q-!`"**60A<E3!t<E)pt<`iI,>$G39?!^iF@:Nk[AnV*Vr+Z.F
+s(MIHrb)7E%;Kg%GC5%"O-Z3+USOddVZ<UnV>[2FV5C/hW2ZetXfeh/XK/A!UnXNQS!]M,PECri
+Pa@f0UoCQ(\@f[eCg'qB=]80u;H-Bi;#a8u:Jk+l<*31%<Duglp/5+QN/`jYOHPckQ'Rf)R[]h=
+T:hmPUnsueWN*#$Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]
+k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@2@,-(LHoR[KS'GB8n%KV4g$
+Oc#6aFfM@<V59rZSX>_-OIWqMFaf);P517=P5^[EPQ7!EQ2m9GR/`NOQ2[!MPE_;qqiUuBOSOqP
+IX?TtJR;`ZU7e*MSXl17Q'7;gMMV7d#_eD%OH,B^P)fO&!0I/l%(j*[[^W]RFJkCNKTZ.p"-f(:
+QMm-UQBd]!Q'Rc(R/WERR$X-4QiEHQRK&ZQRK&`SR/r\CqO%;Ns-itUq3_2Ks-WeRqO%;Nqj@AN
+!1<bPs-<YMq3LrDqiq,Es-!DE"-A\/Oo(:GOcklkPEM(-O9:Q*Oc]F&rf[AGOSb+<O8t@@OSY(>
+P5UL@OU.,6PE_>uQBda.QN!0LPl?mGQ2d*KQ2m<OR0/nIS"0GJr1*bWs.KCaqk3q^s.]Lf!2BIf
+rhTOgqkF+c!2TLgqkX+as.o[kr20Fjpo+(h&uq[`I=$'VDf9rGRt5la;l4VWq/lOWm<8DMq/lXX
+rc7pVs)A!Vs).eEqmcX7s0sSi]=bkn_Sa=4aND]NcdC4lf@ep7hr<_YkNV9umI0Q7nac8@nac;D
+p%\F"ru8YNV5(PbQa`iXOc,E[Jq9,]ZFRNX['-[>XKV?#s,:9EO-#KePEhE"R$jG6SXuIIU8+N]
+Vl6VrXKA\1Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!
+m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@26brdZ)-?X%>V@s<!3ChIU%
+?%79OH@'p[F`MG>D0Ch_BlA1eHhi!aHhMgeIJSElIJ8*hHiAEmHiAEiHi/0j?X<Y>s%jS\H?aUU
+G'%_BDf'9)BP(geA7TOmChmg'D>n;PCho%0NXh&-M2@+HLg#:XDKL5SIf4ZsIXQZor."]rqLSWr
+r.+j"r.4`qqLSZs"+PiOJbafrJ,XruJbaiqJ,OooJ,=`rJ+A'dJ,FcmI0=qEI!gAAHiSNlI/SEk
+HN&9kI/J?jI/\KlI/A6jI/SEkHMMpcI/JEkIdqpdIf=iqJH(,uJHCFUKDpQ%K)pXZre1<*re:E.
+pk\s*qhY9/s,-c3s+g`5MMhCkpPSg*nr3.!&rqfmDf0B*AnPjmHYQhS7X]?!q/lOWm<8DMq/lXX
+rc7pVs)A!Vs).k$rK[>Gr0./F#*kLAR@Bb>rh0t"V5C2jXKA\2ZF%!H\%&u\]=e-V!5AHI&\u6"
+`5p-Lf%f6IlgF<8p%J.Vq#'sdqZ$Emr;QZor!*&pq"OOUo`"F]oDeFdp%J1Wr;QTn*:runNJraZ
+I=IH9I=$6dGB.YLL5_4UO,]'SLP>DSs,:9EO-#KePEhE"R$jG6SXuIIU8+N]Vl6VrXKA\1Z*UgF
+[^`lZ]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@2<7r)4Xl0J5(3/NP^F1G:O@
+3'ohn5!M1m3]f;[2`X;q9htXb"&i)q;u9Jg;>*oY;>3uc;>sJm;u9Pl;\(N60JP:?1I+2f5!1nh
+4$!:"%6$.%1c.'F3&`iW2`Ebr3!20%:JUm_%80;c84cB'5Yk9S;c-Ej;#aDm;YsDm;?g'!<E<."
+<;]\j<<#qu<:s2h;ufkp;ufkr<!#ut<:s/i<;fho<;TYq<;KMa;uTYp;uKVo;Zouq;,U9h;?0Ym
+;ufqt;ZTltr_ins;c6Kj;ZKef<W5qt<VfYt<E)pr;uBVn;t3i`;uT\l;uK\q;ZKeq<W?%t;uBSq
+<EK0#!``3!rDies!*0"tr`/kt!a&T.r`]>(s&o8'!*T/#pfRT!r)`Jls&fq8;,C(`9M8)K76ipb
+-S.`.F89qUFmXAMFnp.ZF8g4XEW:"XDuX_P=U8,2=&r=$<)cfp<!-0'=BYW-$=$kC?=72OA7]@b
+rb24DrbDII'PM,lAnYjlD/sfHJVT8LR%0kFV5=0g!MuUiUIM&UVP^8iWN*#$XfSS'Wi)YeT:D@;
+Q'IPqOHPioR@^4QY-PRM_8XT^Vd<G,='/F"=&_mj;,U4d9hn\g<``@'<E2sq;>*ofN*_O*OHG]i
+Q'I]'R@B_;StD^NUSOcbW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=
+hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s0DZT~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^CSKs_pS!oamFCpGcCRUZT
+NKK?dXfeV"UnXHOR[',#NKi7@H%_:NP517=OoU^FPl6mEQ4B7KR$jA0R$j>0R@'A.QMZsHPQ6pE
+Oo^],qi;J@H\@!$K3qoZTUqaJTUM13OcPKZM#E&9Ko_7SO,oB`OH5HarOi0B!4`!9#E6<?I"d]G
+P5^UDOp$u5Q'Ra7QN3?MPld8<R/WHKR/*'KR.6U@R/<<IQi`VAR/E?QR$mr@rL*VOr0[hXQ^=)+
+QC+#*r0I8GrfdDJrKI;GrK.>JOcklkPEM+*P7<\;OH5HbP*(okP*2#lrK@5DrfI&=r/gc;!KrTD
+OSt=AOogi4Q1(%=PmrtAPE_>tPa%GuQC+).rgEhVpmh>S!M?%aT)bP_U&Le^UB%+hU\gecT`Chd
+UB%.iU]I<foqVP_qPO7ipo*qd&>=](GBS"GFF/5$J9OslRU?#8rH8$]lZ`8MrcS*[rcA*[rGhjV
+s)7qHqmcU6+Lo"p]YD8!`5]m?bKS5WdF6Xtg"Y??ioK4al0@U%n*p>H!:p-Z"S;9Yq"qi+*VfZ7
+W2-D[PH:FHP)PTeKn"oOYIV$Q]W\QDY,ni$Y#^I>NK0']P*;,qQC+)/S"-(BTV8-VV5L8kWiW>*
+Yd(L?[C3QT]">Vh^VI_(`5Td<ai_fOcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKmm)mf)YZ
+nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Us*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^AJc:0+AR&,F@odYiChWfb
+s+(`2I!L![FE2>=DJ=6nB5D[9o6^:Z!IK.lHhMjdIK+crJ,XorIIhjdHiAEiHiA<m?X.(>@K0.:
+H['^WG]n1KE,BE,BP1meA7]9MC]A5QChmneC]BCnNXh#)M2I.HC5Q_DFF/FbIf4ZqIXV3ErdXot
+pjrHqon!'lpjrBo!.jusrdXru!.jrrrdXir!IoXuIfb.OJc1*!J,4ToJ,FclJ,Fa#I=?WnIXQTk
+rdFfo"+>QFIJeHrH[:$dH[P^;rd=Zkrd=Wjs*Xcls*FKfqgA?jr-n'`s+()u!.b&urdY$#K(ss"
+KS>-ZK`?c*L@C#nM>iD3Mt`,*Mt;nqN=^kfE,BE)AnPgkHtceR7X.i0FT$@[G3aAMG5cX]FT-@]
+ErC"XE;skTQ2QsGPQ-mIPol<ZR[]k@TqS6VV5C2jXKJb3ZF%!H\%&u[]Y(qk^:sT]&\u6"_oL!J
+f%T'DlL"*3o_%tXq#0seq#1$fqZ$Enr;HTl#Q+Anq"OLTo`"F\o*4j[pA"L^rqQL6_>97QMN349
+Mh?S.G^=^XE,pPeNJrs[Mi*=FKSB/R<f;orNfT9bPE_>uR$jD4S=Z@GTqeE[Vl6SpXKAY0Z*L^D
+[^WfY]=bkm^r""-`Q-'Ab0/&Tcd:(geCE.%f\5'6h;-uHi8WeWjQ>Ufkiq?sm-O--rpL'\nac8B
+oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^C<;]Z-2_HR4/2B+@1GCR@
+1daSp5<_:13t"&-2_R@!92JJ^;H!Km!`W)sqbm5eohtBYpJUlcr_i_oqc*Pn!\Z/[r\5QQ1I42f
+4Zbbg3B9&Z2`<QO1c-sC2E<`V2`NfX3&irp:Amir91h]G8M<A(;,U=k;GpBk;#X>l;Yj;m<)rou
+!EE+s;u'Dm<<-"j;u]hr;uT`$;cH^p;H$Llp/:rjr)Ehu<E)ro<W?"p;ZBYt<)Z^ppeq5l;cEZn
+s&8qqs&8norDE\q<E9#ts&B/#;cQlt;uTYs;c6Onr_iernl>]h!*/kp!*0"ts&8kqr);u^r_reo
+s&8np!)rkrr_rhsr)E\pqc!Ss<W6&!<V]Yr<E/lr!*9)#!*K5'r`]>)qHEo%qH*`$qH3f#rE&Sm
+r)j/';,:"_r_!Mb7mK3d.4dnIrH/!\r-%CMr-&'^qfMgYs)S'Xs)A!VrE0\6='&F&<E)mq<)Zar
+='/U/r`]_7?!^iF@:NhZAnM$Ur+Z.F!bl=]rb)7E7VQ[YFaALjMij<oSt`!UVP^2cUS=KVTq\9V
+UnsrdWMur"XK/A$WMZJbSt)79Q'@GoOHG`lQ^jeJY-POL_8XRCeC\H4rE'k6;--Ul:f1"c9hnJ^
+<E<($<`N-u;bp9b;HA^7NK0']P*;,qQC+)/S"-(BTV8-VV5L8kWiW>*Yd(L?[C3QT]">Vh^VI_(
+`5Td<ai_fOcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKmm)mf)YZnF?)?oCMVRp&F^cp\jme
+q>^<gqu6NlrU^#>s+13Us*t~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@SKaSnRt,g*E,]ZdR@0.k
+OcccIVl6DcTq7gAQ'IKceY7;?MXZf+Oo:FGPE_;sPl6mGQN!6FRK&ZSQi<<MQ2[$EOo^],rJr(L
+H\6j!JR;c]TqJ$MSXZ(6P`q,dLl-qAKnbYLNf]?brJpu@Oo;on]=@gJ"cC?HI"d^^P5ULIP*;)p
+Q'Ra7QN3?NPlR-JQiEHNRJ`HPQN3EFRK&`URJWBOR08nFR$jB=R/WEPR/*0MR/33NR/<<KR/`NQ
+Q3!8:rfmSOQ'@O4Pl[,7rfdnVP*(ojOHG]iPEM,nPa)02rfRJJOH>WgPEZ!/r0%,DrK-r<rK-f:
+qN1]=!g8b3rg!AHs-3YOQ^@Z:rfmPLPEZ!2!1*VLs-<YQrgNhUrL<nZSGeu[StMbUTDG;^U]7(e
+UB@<eU8.^]rhBFds.]Fd!i2ZgoqMP`V>7"`W:Qu"T7_K9G&_PEG^#a.P#PMP=8m@@G4TqUGk6.Y
+G5cX^FT-@]ErC"XE;[6E[ii2l]=ktr_o9[<bKS8Xd*gCnf@o$9hr3YYkNM3smI0Q@nHJOVp%\C_
+]`/q\Vl$8dNgI#FQ]I5nNeW+KUp7GB]Wn]E[B-S*Y5aG_NfT9aP*;/sQ^F21S=Q7ETq\?YVPgDn
+X0&M-Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#ScHsteeC<($f\,!5gtgiFi8N\UjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirqu`noDX=@JcE%UJ,~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@Jc:0AB4P@S>$,uhEGK-'
+D1[=eIX-3_FEMVDDf)JHIqs%Kn9anU"+,ECIJA3hIJnZpIf=cpHiSTiI/\KlI/A78H<sld?smD=
+;13\6G'A(NEc>u5ChmZqAS#@]CMIX&DJa0*rbDONNW+q=NJd[k#&068DKC/Pq0i3jrdXotl[f"b
+nq$XfrI=iuqLJQppj`?ordaots*t*!r-nWprdOir$%@ARJ:E&tIXckHIKY.LIXQV=IK"WoIJ/$d
+I/\KkI/J?kI/J<kHMDjcI/SKkIe\EmIeeKmJH(*!JGt&sJ-:FTK7\^RKDpN(L&Qc*L&Qf,L[g3#
+M>r>2M#N8/M?&S/MYN,&N;S\8N:Dl=K6(sKChREnBkMg+BLPI:9)`u3G4TqUGk6.YG5cX^FT-@]
+ErC"XDuc1%Pl6gGPlI!eQ^O;4StVjQUnsrdW2cr%YHbC?[C*KR\[oHQ^&PhH^]2(__8=+1bg=nn
+hrEqdmd]o@p@n@WqtL-cs7lZkrqQTkqu-F"qtg-`p\4CSoCDJNo*4j[p@nF]rq?@+f)M%pMi*::
+J;f/0H?jm_F)QG[N;enAN/NOLL%U-!N*)+$OHG]iQ'Rc(R@B_;StMdOUnjlcWN*#$Xfnt7Za@0M
+\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@<;of<2`NZO1,1aG1c$g@
+1daSq5<_7m4?GS_3&ar:7nufVrDEVor`&nrqGR2fq,.2irDN5aqbdDmr_iVjr_i_oqc"_;0J5%6
+0JG@B5X.Cq4?GYc3B/uW2`3KM1GU^D3]T/Y3W:u?3BB5trCm5`#=h?W01&H2;Z0Po;?0Sn;#X>l
+;YsAu<)lt"<E3!s;ta/o<E)pr;cN`p!)i\ms&Aqq!*&qr"B88r;H!3e!*&_n!*&ep!`W)sr)*Mn
+r)EVn!)i\ms&/bn##\Au;,L.dr_a,'<E)mr<)lpt<)lrt;u]bq;u]hq;u0Jo<;]bo<<#tr<<#tu
+<;]Yp<;]\i<<#nn<!?3"<)Z^nr)<Sm!)rkr"&i/u<W#hr;u9Pn<VTVp<W?)$<E<0"<W6#!=T)Cu
+>5qh,>5qb&=9D]0>?^o,!E`Fo=SZ)2<`)Ud9h\2P6q'C'.k*&=2#_XrG4TqUGk6.YG5cX^FT-@]
+ErC"XE$&4b=&r@%<)Z^n;c?Xq='/U/>[1Q??=$uH@:NhZAnM$Ur+Z.F!bl=]rFZmZBl%d3H@CO(
+O->s$TV8-VV50l[TqM@Xs._0AV5C/iWN3,$Wi;qnUS+0JR$Eo"P*(igPEhK)U8P,u\%BGpaj/>d
+g"UG`>lIh0<Dlap;b^'e:^p,o:fLFq='&@$<E)jmpJP3mN/WdXOHG]iQ'Rc(R@B_;StMdOUnjlc
+WN*#$Xfnt7Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$
+m-X60n*olHncA@Srq6<b!;HHes7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL>SKaSnI!0OND.f?+Oc,Bd
+Aur#2UnaZWSsYh.OKGRRG'eq*OmnP4Oo(=APPpaFQ2R$JR/WKRRf&TRRfA`TQi<<MQ2[$EOs,sL
+O,nsCH@ga$@:,h)U7\'KS=,_-PE:]\LPCM;Ko_=Wr/UrAO-#J%]F2?^\$ifTI`?b`KTZ7srK7,C
+s-!MKQ'V<6!1*VLs-E\O!LB)KR0T+IR$j>.R$dQ7rgNhSs-NeTrgEbQrgEbQ!h#FCrg*VPm@"!C
+r0dMN!LK,MQ2d0MPlR'FQ2d'PPEM,nOcfX+s-*JIrKI)@p65N=s,d,=qiL];q2kT<s-!AG!1!JJ
+rfmMMQi*0GPQI/;QN!-MQC.Z?rgWeT!1j(["eVH\T:hnUUAq"gUA^kdU]dEeU7n:[UAghdUAUbl
+Unso`USFW[V#@(eU]@7hVZ3RiW:?i!Wg\E`G]n%FFEih<G_T0sRT]W5q02XZq0Dd\q02g]rcS0]
+s)\3\rGhkIrO;g:+M,5!^r++2aNMiRcd:+heCN7*gtgoIjQ>[ilKdj+nF6>F"nVBZq"k!$ruB[k
+VkpD^Qb/uXP)YciM1UJSYICpP]<JKDY,\VuY$d0HNK0']P*;,qQC+)/S"6.CTqS6WV5L8lWiW>*
+Yd(O@[C3TU]"G\i^VRe)`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6
+naZ2@oCV\So`Fj]p\sseq>^<hqu-HkrU^#>s+13Vs*t~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL>JcC6CARSnL=As9]Ch@O%
+<e5dMH[9s]F`MJ?DM*IdBPqp<HLQ:UHN/?cI/\TnJ,XosIK+cqIJA3hHiAEjHQ6O%>[h,N;G_ad
+H?XOTFE2>=DJX*'AS#C^@r#lZD#\;ND#S2MNW+q=NJmdn#`2rPCN"?BI!k^;s*jrsrIF0arda]n
+"G22VJV!fN!eGlPrI=ftrdY'$J:RWKomlpjrI=s!IX_6FrdOlsrdFs!J:W7MIfb.MIf4crIfFir
+IK4fnI/eTtI!^3dHM`'fHiSTjI/\KkI.VdaI/SKkIe\ElIdhjdJ-(:RKD^?$KE$Z(K`-T*L552Q
+!JcL1M>)o-MuAP/MtDu-NW"h*N=h2'Ec>o2B4bglDgc,*77MJprc\*]q0;^\q0;^Zrc\9`rH/'\
+s)S'Xs-3JGs-3PK)jZhYR[g"DU8+Q^W2Q\qXfek4ZEpsI\%'#]]`,S^^;%Fu^qmk(_oL!Je_/g=
+kj%O'o(;VKp\4X[rV-?erV6NkqtpBjs8*&tq"OOUo^_PMncnaZpA"I\rq$./qPfO7MMm%9PCn=3
+G^Oj\EH?\fNJrs[MM[.Eon6_2N/`jYOHPflQ'Rf*R[]k>T:qsRUnsufWiE/&Y->1;ZaI6O\[oGd
+^;%M$_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGrq-?d
+p\4[^rqZTjr;6HjrVc?eJcC<$Zi>O~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL><<#l;3&WQK0eYFB1b^aC
+2F9Yn4[)"m4$,D[3Bf`":Jh$frDNPms&8emrDEAgrDEPlo25Har_reoqbd>jr_r_o&25ah0JG4>
+1I+/f5!:tj3'$st#rab!1c%!E2`a"s3!20%3`#]J!D6#a8H^Y49i4mg;uKSo;>sDl;#jMj;uTc#
+<`N*u;cEKk!)reps&0)#;c?Rk;Z'Jm<;BGp;Gg:hp/:rjmoB9a!E)ko<;fbp;ZB\q<<#ks;Ya5k
+;Z9Pm;?g*!;GpFn<W,nm;uKYq;uTbp<W,nr<Vo_r;cNZpr`&eo!E<"s;YX5j;u0Ji;u]es;uTYp
+;u'Ao;cH`q;u]es<W5tr<Vf`"<E)pt<`T-"!*/tu!*K/%!a8f4r`TM1>[1K:>$:`)"'So5>5MIm
+=SGr1>#S6o:/+AQ9LUs,4"Mg37Pt*fq02XZq0Dd\q02g]rcS0]s)\3\rG_sA<`N-ur_i_o&li"9
+>$G6;?!^lG?t!JRA7]@crb24Ds(_RJs(M@D'52)rEHQPTKSYYNQCFJ=Tq\<WU&:QZT:hmPUSOcb
+Vl?YrX/`.tV4sTPR[9;'P*(ieOHPioS"QX[Z*q9[`Q?ERf@ep7hVY/9>$+m-;c$at:Janc:ese\
+;H6at=&r:#;c?LhpekNtMi<XUO-#NgPa.Q%R@9V9StD^MUSO`aW2cl!Xfen5Za7'J\@K2`]Y;.s
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=\
+q#:*hqY^6hr;HTcrdk*#s0M`U~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqjegXFa%kECRplVMMdL[
+XfAD!US=?PR@'8&A=M(gH%M.WOmeJ5Ont7@PPp^GQ2R$KQi3<NRf8`RRK]+HR$X/*rg!MJ!0d8B
+,a"1?I!U<sJRVu`US+6OSt218P*(cbMi!1CKnb_PO-#KcO,s7$rO`0C])B)BD6%u2KTVDrP5ULC
+P5^XHPa.O1QN<D;rg!PNrg!PNrL!YQqjIDMpR1rJ#aq-LR@9S4R[O/BrgEeR!1EhRrg*\SR[W`6
+rgEnVR[O)@s-E_Org!JKp6GT@!0dAEs-*JIq31f@oofB<rfI&=r/^o>qiUZ8rK.2FPE_=/QN*6H
+Q2m3IPQI,:Qi30OQ^O;2rL<hW"J)'QSY#eP"JDBZTV21V!i)KarhKFfrhKIdrh9FeUACVcUo"'d
+rMBLgrM0FirhfXlqPa1g!35mps/H^2Q[O1'F`25@H&ShEH<!t3=^:lKrHS0ap3QR\rHS0_s*"Ba
+rH/'\s)S-Zs0r$<+h>1s^;7_+aND`Ocd:(ge^i@*gYCWCioT=dl0@U%n*oiEnHJLTo_&"V\GmQF
+s/r;uV4s'>V4X$6PEUr^J<H_4\@fJZYctL9or_Y[N/`m[OckonQC!u,S"-%@TV8*UV5C/iWiN8)
+YHY==['mHS\\#Mf^VI_'`5Ta;ai_fOcHjkbdaZguf@\d1gYL]Ci8EVTj5f@bkNM0plKdg(mdBQ4
+nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Vs*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqgff$?t!>C<crCuAnZ%!
+Jq&5sH?jXUEcH&:;0\dHCNBB"msFhUs*ONgs*aiprdXor!.XusrdFTirHnNkrd,Pk?<^iJ@8]sN
+H['aYG'%\DE,B?+BkM!fA7PUTs)%aNs(q^N!0-u<%#p4&Mi!9kJSK+GH[Ga>pjN0ks*srsl[f%c
+pOW9pqLSWr!e5`Nrdb'"rIG'$It3(KJbjonJc:0%JUi6!rdXlqrdOuuIt7NLr.+]pqgSEis*aop
+!df6>qg89hrI+TkrHnKjom?[cr-eHkpj`<mn:1Ces+16'r.5!&KSBAXrIt9+!/L<)s,$Q-rJCE/
+s,$c5!/pc4qhtB2s,6`4s,Ho7q2GB7qMkN8&rhK_E,B?'Anl("K3qnQ7s@[&r-/*aqK_d\qK`$a
+qKMs_rcS0]s)\3\s)J(&rfmGJ)jZk[S=Q=IUnsufWN)u"Xfnt6ZEpsI\%'#]]`,SE^Abk\^qmn)
+`5p0Le_/j?kj.X(nalDGq=ag^!;QNg&,Q2#r;?HhqYBp\p\"1Lo)/"^oCVbOq>:-\ruJrHPDtNY
+LO4Q,JphrjI!BaOI>3]AOH>EYMM["=p4Qe2N/`m[OckonQC!u,S"-%@TV8*UV5C/iWiN8)YHY==
+['mHS\\#Mf^VI_'`5Ta;ai_fOcHjkbdaZguf@\d1gYL]Ci8EVTj5f@bkNM0plKdg(mdBQ4nF?)?
+oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Vs*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqc*ST*AoW.0fV$G1,(L@
+6UF(%5!;"i3]T,X/O*6.:ejpf;?'Pn;uK\q;u0Dl;>O2f;#jM`;>sJm;uT\l;>sJm;uTbr0+9Ed
+0ekRC5X7Fp4Zkk+3X[o-2`3NO1GgjG3]['s(-+E9:JFMV9hS,O8P(Hs9i4kg;cH[or)*Mlr_WVl
+qG[;l!*&nqqc!Vq;H*Qor_rhr"&i)p;Z0Pm<;BJl;Z9Vp<;TVo;ufqt<qB<)<)Z^p;c?Xq<)Z^p
+;c?Xp;c6Omr`&SirDNYm##\Au;GpLpr`&kqs&Aqqpf%;p<)rco!*/qr!)rhqs&K"srDN_r;uKSo
+;u'Ap;cHasr)EMkr`&kp!)r\ms&/nsr_rPjr`/nt"'&<"<VKMo=8Z5$>5qh+=p%u6>?_#/r)a#(
+>?gr,nlYTgs&p%<;bp1a9h\5R76*Xo/LN,>1cP>VrHS0ap3QR\rHS0_s*"BarH/'\s)S-Z!E<"r
+;ZBZ1<``F->?kK@?XI2K@Uiq[AS,RgBk[EYs(_RJs(MCEs(E*\D/scEIY<Q=P*VQ,StMdOU7e0O
+rLX%]#GIleUo(&gWW&nbW2HGcT:D@;QBRJnO,oBbPEqZ1VQ6u0]>2D-cI(4qg>1WCi8S@C>$4s0
+;c6Om;GU%`:esk^:fLCo='&@$<E)jlpeq,h?]0l&O-#KePEhH#R$jG6SXuLJU84W_Vl?\sXfek3
+ZEppH\%0&]]Y2(q_SX71`lQ9EbK\>Yd*^:ke^i@)g"P3:h;@/KioB([k2tjjl07L!m-X6/n*fc9
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0M`U~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GqjedSG&heDB:P9JLl[U-
+Xf/(lV50cUR[02"Z-Ab^J;X8ek`Yk-s-*MKqj%8LR/WNJRK]+HR$X/*rg!MJ!0d>Ds-"7^J9c`u
+JV7E;V4jTTSt)49Q'7>kNJWGiL&cr,NrtK+OH9C&!0R2l!4i';#%FHRI"RQDr0%#@rfdAH!L8uI
+Qi33MQi33QR$j>0R/36LR/!*ARKAnER/WKSR$[];!gf:BrgEkURe3$GRfAfUQirhER$X3>Q2m3K
+QMm*KQMd$IPl6dEP67&5PEc'1!0mGG!g8e4r0%AMPEM,nOcbb'O8b4DOcYWcP5LIAOT1IAO9^o0
+OckomPa204rg!8Er075Hr0@DOR[X2Es.'+[s.'+\rh'+]!29=b!McCgU\U\eU7n:YUAgniUna]\
+rMBFh!i2TdrM0FirMKRlrM]Cgs/H+!Wr8pqWY;=uIsZB^EcZ_TMo^a&<E5Dg??cBnrH[RPrH\Be
+qfi'`s)n6]-?F3JEO`Qk]YD>%`lQBLcd:+he^i@)g>(NAiSrq\kiqC!mdKZ7r:'s]oCV_Oqm?AB
+af2/6VO<j_U6Uk'QB-rYL7PHU[Cs/VYHb72or_GVNK0']P*2&pQC+)/S"6.CTqS6WVPgAmWiW>+
+Yd(OA[C3TU]"G_j^VRe)`Q#s>b0/#RcHstee'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6
+nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE+WJ,~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9Gqgff!?s[/?;fcklASc0_
+Jpr)lH?j[VF)c,7K:.+%DKbr(msFeTs*ONg!.FfpqLAKnrdFfo!.FcmrHnKj&pmti@:3JP;,DXb
+G]n7PFE2>=rbMdOA7T7^@r)!Y!,MOL!KN0=NW>%:M$?e+Bl8$>HiAEhI/n`qI0+kIJ,FioJH1;m
+JcC9"Jc:9!Jc:8rJc1,tJHp^VJqAW+JUmZL!J#b"JGOisJGt*"JGjusIfFltJGt#uJGk&uJGaoo
+IK4fnHiSToI/\HiHi8<rI=-EjI=-D?I/eQkI/A6jI/\KkI/A?hIeeKmIdqmfJGk$!K)L?%JcgXY
+Kn]JYre:B,!/LQ0!/^Q.!/^T/qhb3-reUZ5Mu8J1Mu/J5Mu/J4NVe\1NW5">NK3ssrJhPMIrTFD
+CM.<sBPs)M?:7;-9Mfs4Gl;pNHMr-gGl)^bG5l^_F<kpJEcI>.Q'I](S"-(DU84ZcWN*##Xfek3
+ZEppF[^WfY]=biV^Akq^^q[\%_o0X@dFR%0jQPpsmd]l>o_J1[p(d>sq=sd]qYL*er;6Bfq=saZ
+p@RtIr:(!_o_%tSqu,s_*;lOlMi<ICJrtY5H[C0eG&q_UM2dIVO,AdNLP>DS=cA?#O-#NfPa.Q%
+R@9V9StD^MUSOcbW2cl!Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg"G[dF-Lne^rF+g=tE=hV[8M
+ioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$[/YX~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9Gqc"%b2)I*D/iPUC0JbLC
+6U1Q5%6cp:3]K&W5>+I?:/Ojd;>sJn;uK\p;tEoN;>sJm;uT\l;>sJl;\rCd/het61Gq$T5!D(k
+4Zk_c3&rrX2)bFi"Z/5"3&s"u3!;9(3_rNM9`I`j8kDT(5Yb-Sr)E\pr)*\q:f("d;Z'Gn<;onr
+<;ohn<!?2u;H$OorDW_q"&_un;Z9Vo<;9Dl;Z0Mo<;TVn<;]bt<EAcmqGdGm"B8;u<)ifprDWhs
+;H!Hl!)iepr_ibnrDEYq<W5ts;uBSp;tj5l<E&`ns&K"ss&/ntpJh,j"]SDt;GpHg<;'>k<<#ns
+<;ohj<!ZE%<)Z^p<)Z`p<;fbq<;fht<W5ts<Wc?&=',?&r)s&'!*fD*"C#,8>$Cl-rE')'>5;=n
+=Su;'>$5&-=oDM;=Ar*o9he8U7R]=.0eOe,75d/MrcnBekBd)Prcn<as*"Ebr,`m!EcQ.s;GpFm
+<`iL.>[C`D?t!JQ@Uiq[AS,TRB`2ZFCB%uJB`;ZEB`Dc[DK9oHIt`c@PF%c0StDXJTV%gHrL?fW
+StD^MUSOcbWN)ttVl$8aT:MF;Q'.8kO,f9`PEhT/V5gc-]"c5*c-b(og>(QBi8N_ViN?Kg='8R&
+;HQak:f1"b:/=V_<)lq"<`E't;c$<d;Z9NrN/`jYOHPckQ'Rf*R[]k>T:qsRUo(&gWiE/&YHY:<
+['d?P\[oGe^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?MK
+!V>s_p&Facp\ssfq>U6gqu-HkrU^#>s+13Ws*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr1+pSFa8.KC7UiXO,o<b
+XfeV"U8"?PR['2'CQk62I"ROZOm%u)PQ-mIQ2[*LQiEHPR/i]TS,8ZSR0/hCQ^7T8rfd>Es-"UY
+I>!0'K3hi[US=?NTpqI<Pa.>gMi!1DL5(hQOH5KbO8b4AOhL_+!P5f?[g-9CGC+t*P*,X)rfIGK
+PEV5qQ'Ra4Qhm$FQN3ELRK&ZRR/i]RRJWEQRJNBPR/iWRR0&bBQhm*GReiETR$jA2RJ`NNRJrQR
+QhZmHQ2d0JQ2d*JP5pdFP5pjHP6-u4PPpaFP5pjFPQ-jNPEM)mOc]L%#`t11Ocb`eOco[*rK.&A
+qiCrDPEV5rrg*SL!g]+:r0@>Jrg!VNPa)-3rKdJMs-WqWS"'DIrga+\SY#hQqk3k]r1j%_qkF(b
+!2TRipne%fr1s@hrMKOkri#gq!3#^mrMogqrMomu&uL_<G][nHG(+\C_hi5/<L6iqrH\*_om?FZ
+rH\Ber-/0as)n9^s)T6n]thP(a3)ZQd*gFof@S^0gt^cEiT0.akiqC!mdL/Erp^3^o(2MIq>@T!
+*;0?5W26DaQ(ak>Q&q;oMMZqIV6RPC]Wn`G[&ir'?]0l&O,oEdPEhH#R$jG6St;UKU84W_Vl?\s
+Xfen4ZEpsI\%0)^]Y;.r_Sa=2a2lBGbK\>YdF$Fme^i@)g=k?<h;@/LioB(\k2tjjl0@U$m-X60
+n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s0VfV~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr.,r$@q8nL=*/J"BkqL%
+Jq8>tG^4OUEc?#:<HW\(DKC1'HL6(RHN/?eI/eWoIK4lsJGXirIKP"GI=;'Aqg8?j*+E5a?t!M?
+:OIG5G'8+PEcH&8Chd]tAS#C^D/K5f!,MOLr/M2EMM[1I9nR(rFF8I_rd=Qj!.Ooq!e,WKqgeWr
+rdk0%K)1#uK)C0"JGt,uK)U?!K(sluJ:W7LJHCFSK)UB&K(sosJGauuJH(0#JGk$*J:E*!Isuls
+J:RWKqLJWsrI=Zms*ain!.Fio!I]@lHiABmIJnNsI=-BgI!kp?r-SKkrHn]oI!^5=I/JElIK4ls
+IK=qKqLANor."Wns*suts+1'!!J?()K*6j]L4t<XL&Zl0LPUbCqhP90MZ/J4M#E2*MZ&D+MuAV4
+Mu/J3NVnb2NW"n9NW+qQNK0$VHZ3n>BkV3rBSVjf<^]H%9i1e6p3QCYpNld`rcn?bs*"EbrH/'\
+*gN%XR@Bb?U84ZbWiN5'Xfek3ZEppG[^W`V]"G\hrkAEI'u7T#_Sa@7cI1>!i8s4imI0W:oCV\Q
+oa19`p%J+Rq"X[\rqcWks8!&tq"XRUo^_SCnc&"^o(2PJq>1$UrsQI+OH#0WKm\T-JURNE%X)u7
+I>*W@OcbQZM26h;p4Qe2N/`mZOckonQC!u,S"-(ATV8*UV5C/iWiN8)YctF>[C3QT]">Vh^VI_(
+`5Td<aihlPcHjnce'uq!f@\g2gtgfDi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCMVRo`Fj]p\jme
+q>^<gqu6NlrU^#>s+13Ws*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr)E\[*'Z570K1mH1,CaD
+6pX%#5!D+k3]]5Z.6^6s:f.'er)3MmrD`eqo2=dLr_i_or_iYkr)3Pn(,@Kr0JP:>2*aAh5!;%k
+3&ioX3&WWPr\Xg83]]5\rAXp@4$$/5r_*Vk8kMWF-pg[+;>O8l;uBPm;#jMk;ZKer<W#er;u9Mo
+;uKSs;cH^p;uT`";Gg:h;cETnoi(ihr)<Pnq,[5i!EN4u<;ohn<;ohq<!#ut;uT\p;uKSs;c6Lj
+;>jAn;cWfrrDWGis&B/#<E)rs;u9Po<<6'!rDWbspJh/k##nN!;,gImpf.2ls&Stroi1lir_rr!
+<)`cqr_j&$;c6Om<)clr<rQ))<``=%<``@*>5MIt>5qh.>?^o,s&]>*>$Ci,o2tonrEB/&r`U%>
+>$>$+:ej_[92.iD5tWma-7qYF3W46sHM)XZHMr-gGl2dcG5l^`FT6F^;?p0%=B\p7?=3\?s'cXO
+A7fCbAnPdkBkV3oBk_<sBk_8[BE)WRBkhO,GC+jqMia0iRf8oXT/rO5S"#k8S"-%?T:hpQUo(&g
+WMl_kUnXKPR[BD(OH5E]Nf]HiR@^4RYI(mT`5p0Me_&U2hV[8Mir7sUib+3R=BAU':fL=h;,L.e
+:/4MY;cHau<`K&u!E)_h;Z9O#Mi<XVO-,ThQ'Rc(R@B_<StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc
+^;%J#_o0O7aN;WKc-FY_dF6Uqf%8R.g>(N?hr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2JFrq-?d
+p\4X]s7u]kqtpBjrVc?eJcC<$[/YX~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl:19HZaOWF`;8gPE(K\
+OD(bqV5C&^SXu:9P*">LV0INLP5UO4OoUX?P5:CBPlI$JQN*<OQi`\EReiNQRfAcYR$X/*QN!0K
+PQ-diPCnC5JqJ\_@AT`mT:V[ES!]G%OcGBWLPLS<PECuhOcYY'O8tFB^&P_G]".gL"^\Q\H\7IV
+P5LFKP*;)oQ'IZ$Q^7T:qNguE!1<VN!1<bRrL3bSr0mVQqO7AN!go=@qNq8Nq3q)HrL*eUR[X5D
+!1NnTs-NeQoToNBs-*MKrfm;Dqih)Er0.5GPl6dJP`q>qrfR>HOcfX(s,d)>s-!,=r/_2HPE_8p
+Q'IZ$rfdDJr0@>JrKdJJr0@8Is-EeSR@=,Es.'%Y!h>gQrh'4as.B@crM'4bqkO4grhKRiUAL_c
+V"geeVu<LgV>d@jVuEXoW;rmmWVrjqWVidrWt_S0MgT_jEcZDPGc%3h?W'jl=^\6+HMW!\I/A9d
+HN/9iGl;jcFoZ[`F<,G@`lQBLd*gCnf@S^0gt^`DiT'%^kiqBum-jH5qsj^X"8)<`rNH5@^T"-0
+U7%IMU6Uk*QB$lWN1[2Z[Cs8YYHk:2YPPF#XoF>]NfT9bP*D5tR$jD4SXuIITqeE\Vl6VrXKA\1
+Z*UgG[^`lZ]Y2(p_8=.0`lQ6DbKS8Wd*^:keCN7(g"P39h;7)JiT&tZjlYail07L!m-O--n*fc9
+rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#s0_lW~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl91RB)Z<\@p`P^D/*^!
+D,u7;H[:!^F`h_EDJZ2GJo#FPHi89VHh_peHh`!gI0+kIJ,4]pJ,auqIK"WkHQ$@$?"%/O;,M^e
+H$=FTFE2>>Ci!m%B4baeAH$HOCi+!)CMdm'r/M,CMi*@K98."rF*me3qgJHms*XlrrdOs!J,Oos
+Jbt&rJcC>uJbt'!Jc(,iJHCFUK)UE&K(=KlJGk$%J:W9%JGjutJGjunJH16!J,as%IsuirIXZ_E
+I/A?lI/J?fHi\YCrd4Wl"+,ECIJeHmHi8<lHi/9jIJnTpJ,OirJ,aurJ,ausJ,+NnJ,FfsJbt$"
+K7s5V"b_SaL4t<YL&Zl.LPYqds+pW1s,-c3re^]4reg`6rJLQ1!/gZ3!K;s8N;AJ3N;JV4N;8J3
+Nr=t5NY@7nEG]N*B5;6rJ:2$'6UuAp;2+mnqKqj^qg8-bs*=TgrHJ6a!-S6^)KV@;T:r!UVlHi#
+Xfek2Yd(OA[C3NQ\[f;`rk/BI^VBc`(W!u,`QHKSf\GHJl0Rg+o()DEp%@tKoDS:_p%J.Yq#C-i
+qYpBlq@i]"q"FCQoCDGAnF,i9oCVbOqu#^Y*;>n^N/i[EJVo,0H[C3dG&qkYM2[FVO,SpOL5#GV
+rIb-/=,r?'P*2&pQC+)/S"6.CTqS6WVPgAmX/rG,Yd(OA[^N]V]"G_k^VRe*`Q$!?b0/#ScHste
+eC<($f\,!5gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@
+JcE.XJ,~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl7T(5!M1or]:rT1G^^@
+1GqHa5!;%j4$5P_2E+W785)cWr)*;gs&8hps&8hn!)r\kl;@LXr_rbnr_`Pj(GIKp1,(F@1dF8f
+4Zkhg3]T2[3B/oU2?#E@4$#D_3&iiW4$,K!:]=#o91hiJ81-Yu;,I'f!)r_ls%rboqbmPq<E8Zj
+!)rho!)rkr!)rkr!`Mupr_r_ooi(lirDN_p;uTbr<V]\j<W?)"<W,ns;[$-#<)ZaqrDW_q!`Muq
+r)*Po;Z9Mn;u';l<)rosrDWYo!)rhq"]\T(<E3#t;[-3$<)cdq<;fhs<;onn;uooqr_iqt;,^Fn
+rDWSmrD`huq,R,fr)Nbrs&B/#;cH`q;u]et;H*Nn!EE1u<=)]-=&i7%='/X0r`T)$s&fG-=^#&/
+>5VP&=T;S(=n5\l=oDP&=TDY(=oMS<=&Ddi9hn;T77KU00e+J$7Q3>+qg/*coR-O_q0N'drcnBc
+rcS9arH&?e='/X2?!guJ@fBm;A-cdYAnPdjBk_>]C&_rJC&_lGB,5/pBkhR-GC4ssN00?lS"?4D
+T:hdGRf8^4R[KY7S=Z=FTqeE[Vl6MjV50fVSXPn1P)t`bN/`m]PaJ#:W3<P<]u.q8d+$\$gtpuI
+iSsjss5G*Xc`18R='8R$;H6Xl:f1%c:JX_`<E3(%<`N-t;Gd0drD<NQ=,r?'P*2&pQC+)/S"6.C
+TqS6WVPgAmX/rG,Yd(OA[^N]V]"G_k^VRe*`Q$!?b0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ5Oe
+kiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE.XJ,~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPt*mGT:jLF)Q&;FDd,"
+P,ta`VPBrXSX>\,P)Q''G^P;GP5g[5P5g[CP5g[EP5:@BPl?sHQ3*D?RJrZQRfT%KrL3bS#+1aC
+QBd`"rf[GIKn"LLK*#LhVuED/StDUCR$<_qN/`XLL4t;COH>NbOH5HaOHG\)]aMKb\[],XJ$PDe
+K9>ql!g/S+rfI>HPEV5rr0I>Ks-<YOrg*>G!1<PLqjI\VR[KS4Rf/ZNRf8]VR$X0<R/`QUR$jB<
+ReiHNRf8`TRKAnGRf&QRQh-LDQ'D64s-3JGoT]B>%@!'?P`q>rPEM)mPEM%,O8k=>OTUc/OcoF#
+s,d8C"-\t5PPpdGPQ7!CQ3!88qiq/IrKmPPs-`tXSGo)XT)PA^T`:\dTV;@Z!MQ7eU\U_bV>6nd
+V>7"eVu<LjV>d@kVt[.dWW0!pWW&psX8f18WM,#mF`_SDGC+M*PbD#T<1R/nWd9!iHi&3^IJ\Ej
+Hi&-gH2i-fGQ2jdFoQP(aj&/Ze(*(&g"P39h;@/MjQ>[jlKdg(n*oi:naQPJ"nM<Xp\OlkrrMAb
+rhgR(QD^FDP`qGqN/3:ZVm*\C]X"fHZE18+Y5GD.N/`mZOckonQ'[l+S"-%@TV8*UV5C/iWiN8)
+YctF>[C3QT]">Vh^VI_(`5Td<aihlPcHjnce'uq"f@em3gtgiEi8N\UjQ5OdkNM0qlg4!*mdKW6
+naZ2@oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>s+13Xs*t~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPs(oAn>F^@UEMK?X%;]
+Ck7(bI!U*]F`VM?DJOWHCN"=oHiJEVHhVjdHhi$iI=D0Fs+('!!.b#t!.Oiord=Zk!b5SDraH%/
+;13b9H2_ssEcH&8Chd]sAn>L_Ci+%eD#\>QCMj$1$B:"%MMYYmI;X+QqgA6gqgSElrI=m!o7Hdh
+qLSm%Jq8K)K(=KmK):0#K(=KmJGk&uJH(3!J,OosIfP#pJc:0#It%9Es*ausI//0jI/\HoI!^5<
+I/eTrI!^5:HiSTnI/eNpI!^5;I/\QmIK4lqIfForIK4orJ,"KmJ,OltJbt&tKE$T+Knb?]K`Hl,
+L&Zl3LPUeDLl$udMZ&D/MZ/P6M?/QkrJ:N3qht<0qhtH4s,R&;qi(B2s,Qr8pl6)FG&V;7B5)-s
+Bmk/K77Kak9hU4eHMr3fI.Md`I/SEhHN&3iGl;jdG5l^bF;LUEUo(,lXfeh1YHY:;['d?O\@B)\
+]=e-V!5ABG(W"#-`QQTVf\PQMlKms.o()DEp%@tKo_n@_o_%qWpB13dq"aja'D_Fup\"1MoC;>=
+mdBT7oC_nUr9+(eca/^nNf8[CLkC3VI1:IGF``+fNK9-_N/EIJpk8Qt?Asl)O-,ThQ'I]'R@B_;
+StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=a
+k3(smlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$[Jta~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPqKB5<_4n4$,Jb3]JoP
+1djVn4Zttk4$#>[3&*]g:Jjsa;>X8j;uK\q;uT\o;u0DX;>O2i;uT\p;>a;u0eP(40JYRD5sYE4
+&3;p93]T/[2E*NP1,UmK3BI.""ueP(4$#H!rCm5a#"_?75tt3Qpf%5lq,7#e!`W0"o2Gfj;GpHg
+<!-&s;cN]os&AYis&Aqqs&&ns<)iisq,[>lrDj/&;c?Xp;cH`q;u]hr;u]es;u0Ao;c6IirDWVl
+!`N)uqG[Dn"&i/t;uTbr<W?)#<E/rr!``3!r_ierr`/tt"'&<"<VfYp;u0Al<;BJh;uftp<W,ns
+;u0Jl<<6&tqc*Pn"&r2s;uBVl<W?,/<`N.$=BJ^.=BSg2=oDP%=o2D$=oVV$=o)5#=8Z1s=oV\!
+=oDM>=]eNr:JOPV9h%Q:5W'r</OhZT;gNcgHi&3^IJ\EjHi&-gH2i-fGQ2jdFoQOt>$YKC@:NeX
+@q9.^AnP^gBPD0qCAqrICB%uJB`)KPBkhF&FEi4cLlIR_R%4/Is.9CbS=,fDQqs0?S"6.CTV8*U
+VPg;fUnaWTSXPn2P)kZ`N/N^YPa7l7W33M;^;J%9dF?e$gYUlIiSrnYj5].Xhqm10='A^0=B&-u
+;,0td;G^.a9i:mi!EN2!<<H2t:f.$dr(p^YNK9-_P*;/rQ^F21S=Q7ETq\?ZVPgDnX0&P/Yd1UC
+[^WfY]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08h;7&IiSrnYjlY^gkiqBum-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)Wirqu`noDX=@JcE.XJ,~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[YmptkRm-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y+;,&GBJ"KEc5o9F)Gf,
+Auqo.U8"<OR[BA(N:5,UG_2(DP5UOBP5^UDP5CICPl?sIQ33J@R$moA!1WnV!1WtVs-WkSrg*SL
+!0mJH(4gsfJV&P\@&BZmT:_XCR$X&%Nf/jPre:Q0OcYWbr/gr@r4NHJ\@/kfVk/3dO-04#!g/S+
+rfR5Ds-!JJQ2HpJQi<<NQiEBGQN3EKRJE<NRK&`SRJ`NQR0&bBQi*6MR/r\Cq3q,IrgNkTqO7AN
+!13DFs-NbO"I5:=Q'M?5rKI&As-3YMPEYj-s-!GGrf[MJOH>NbOT(@GP*(liOcfX+rfI2Dq2tT>
+rK[DI!1!JJr0RDKqiq2JQi<BPR0B%KS=H.@rgj+^r1O"^rh9OhU8"EXq5""d!2TRgrM0FiqPF7j
+ri#jps/#gpVZ*FkVZ*LeVu`lror7tkqlB^r(9=O,IscE^F`r.YG+FMZ;,pSb=]\aQr-[^VrI"Qj
+r-JBgs*4Kds*"Eb(j+3Vf@em4gt^`Ci8WhZkNV9tlg=-/nF6DH#Oq9SoC_nUri5u;\YuI/Tp:t?
+TTkV+P`CWUPGP=f[D0G[YHt=2qQBaus,:$>O-#NfPa.Q%R$sM7StD^MUSOcbW2co"Xfnt6Za@0L
+\@K5a]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6HjrVc?eJcC<$[f:j~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[Ymn3$8m-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y(;.6ARf1X@JsLI>?P!,
+JUVulH$+7NEc>o/^7'@`F*ZhnpNlgcq0W3kIf=fsJGk$#Jq8IOJ,=ZnI/\I.?sdAN@Ui52I<g*^
+G'%hGE,TT.Bkh8YAGL$CDJX4gNXC]%M2>8^Ir9=RHi&3iI/n`qIJ\KiJ,OohK)1&mK)U?$K(FNn
+K)(&iJc:3!JcC9"JHLFPJ:[WKs*k$!pOW?p!e5`Nr-n]qpO3!fs*ONg!.4Wk!.F]ks*FfpH[G[<
+rdF`o!.X]k!IoXuJ,=ZpJ,XlsJ,FfsJbt&tK)gVuL&m'cr/(?/!K2j7M>W82MZAY6M>rJ5M>`>2
+Mu&A5NK!dnrepl;Nr=t7Mueoso8WR+s,RnVKlM!HCM@L"C1hs7E^WAeGYUn,Hi/9TIJnQlHi/3i
+H2i-fGQ2jdFW#;!X/rJ-YHY::Za@-L\@B)[]">Sf]tV1orP'2b_8=.1bg=kmhW*eam-aB5o(;SI
+p%7kJr::3dp%J+Rp\=OZrV@6(q"XUWp%7kInaQ#8mdK];p%\C]jo6=us-Se)Ne`%5LkC,&IX??_
+F+&duNK'']N/<CFq1SZus,:$>O-#NfPa.Q%R$sM7StD^MUSOcbW2co"Xfnt6Za@0L\@K5a]t_=u
+_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHe
+s7uZjr;6HjrVc?eJcC<$[f:j~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[Ymq2"Tm-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y#J@i5Wq4k4?>P`3]T,X
+2F0Mg4?Yhi4?5>[05sZ[:/Fhc;>a8j;>O2j;uK\o;Z0Pl;X%'T;Z9Vo;?0Sl;@YH70JP:;2)@K^
+4Ztnj4T7A@3<(oA2Dm<J1H@Mq3<;*"rAt$U:B!om9hS&L-9t't;>=,i;u0Dk;ZKeq;Zp'"<)Z`f
+<!#ur;ts>l;u]f$;c6Ll;cH`i;ZKeq;uTYp;uKYq<V]\p<<-"s<W6&!;u0Jj;uT_u;c6Omr_a##
+<)QRk<)cdprDNYo!*&en!E<(t;u9Pn<<cE&<E)st<;ohp<W?#"<E)rs<W#hl;YX2f;ufqr<rQ+t
+<;ohn<;fhs<;ohm<;oho<;]bp<rZ/"<r6"u=oMV)=oMP&=o;J&=TDS#=oDG&=8>r!=]k,qrEB5(
+"Bn`":/1[\s$[8[4uOf;/Oq`V3d^dPk^EDWrHnHgs*=WhrHJ9bs)eEc?t3^FA-Z[XAnPdiBPIE[
+s(VLJs(MIHrFc.D%Vfg"Fa/@gLlIR_R%9h?rh!bnS!f\3R$X/,R@9Y9StD[LUSXiaUnaZWSXc+6
+Q'.2gN/NRQOd)0%U8Y3#\A#l%bg=klg>(QBiSieVjQ,@]io&_MgY&Re>ZOj*<DcRk;GU+e:Jae]
+:fLCo<EN=&<Duak;#=,f;#cJUNfT9bP*D5tR$a>3S=Z@HTqeE\Vl6VrXKA\1Z*UgG[^`l[]Y2(p
+_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0hqY^6hr;HTcrdk*#s0hrX~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmpkeQm-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y+;,%Df0`>Df]i=EG]K+
+XK&.mU7e*JQB[Vqd^krmIYmBRrK.)Aq2t]?r0./FrK[DK#FCgFR@0M5S,8]US,SlVR/iWRQ5c*R
+P`pcMH\6s$?s]Y(Tq7mKS"#h0P)tZ^M2)"`s,d8Cr/gr@r4W-@$+I?eS"=qYO-,S&P5gaGOogc-
+OSt=AP5g^HPa235!13\Np6PcFrg*VPqjI8KrgEeTr0dJOrg<hTQ^@Z<rgEeR!1EYOrg<hTR@=,C
+s-itUq3q;N!1<\Nr0IALqj.8IrKR5Dr07)Dq3:iA"d4t/O-#J&OT:RAOo(=>OTUc1P*>^,rfmDI
+rg*JKrg*MJs-<YOr0dSR!h>gPrgs.^r1O%_qP+"brhKOjrM9Fh!2TRgrhTOirMKRlri#Xjrhf[m
+r29Upq5EtcpT+7o's!jSHZjOPH\-O&TnnLu<E>Mi<a0tFIIr!_IK"WnHi/3iH2i-fG85:DFkb[+
+gtgiEiT'%^kiqF"m-X92qsap\o()DFq#(,iruCs;VlHVcRA$4<Q'do"N/3RiW3<\B^9XuHZE:>-
+Y5>>-N/`jYOckonQ'[l+S"-%@TV8*UV5C/iWiN8)YctF>[C3QT]">Vh^VI_(`Pom=aihoQcHjnd
+e'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>
+s+13Ys*t~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmpkeQm-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y(;.5?t!SS?=7&G?<LE5
+JU`)nH$=CQE,TZ3U5F;4Dg(2gom6Uaq0WEqIXZcsJ:W:NJcUFQrdXfnrd5Q0@UNGM@UW/3H[C$^
+G'7tKEGoZ/C2.Bmrac"E!c;ajrbVUOr/Uf8s+pn]GC==KHMW$gIK"ZqIJSEhJ,OosJbam!JV&LM
+JbFZsJV&LFJcC>uKE$PrJHC@QJc:3"JcC9#JHp^TIt3*#J:[WK!J,k!JbsutJ,artJ,OinIK"Wo
+I0"_Br-SKkq0W0jqL&3frI"QlrI4crp3m!lr."Tm"+PcKJ,OotJbt'!KDpPsL&m'crJCQ3s,$B*
+!fMqnr/(?/rep`6rJgT2qi1E1oo8m0"HSS'O,s7$'ododDJa*$Ci4!.IVrpe7RhVt9M^'0IIr!_
+IK"WnHi/3iH2i-fG6<#2Fg1kM&[JaM[C3TT\[oAa]=knl^;%D\^D4Q#_o9[@d+-k-jQGjqn+#r>
+o^qhKq""a_p%A%Pp\4I\q>^4%p\+:PoCMMAn*]Z6nac>HqYfFR*5fjZNKB$OJqnr-IXZ]kGBA(]
+LQ.@TPDkEWLkY\Yqh&46NK0'^P*;/rQ^F21S=Q7ETq\?ZVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Eg
+s8)Wirqu`noDX=@JcE1YJ,~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y#JC"7N4KP4?GPa3BK/Y
+5sRRq4?Ybf3B/rW=@>SO:/Ua^s&&Vjs&/nsr_rbnrDWYmkY_4Tr_rYks"=X10JP:?2*aAhr]C0B
+r]0s;s#19C1GgpK3]T/Z2`^gus%iPd#tdc:5"/=I<)clo<;fbm;ZB\p<;oet<)los;tj5n;cH^p
+p/D)l<)``ns&A\js&Anps&/_n!*/krr`&tt<;ff!<`N'sr`&nrr`&hp!*&qt%9-8*;c6Ll<)Z^n
+;cH`q;uTYr;cH`m;u]hq;uBSp;uTc!<)lptr)3Spr`/kqrDieq!)r_lrDN_r<W5qn;ufqr<rQ+t
+<<#no<<#qu<rQ(t;u'Di;uK\p<W6&!<<6-%r)iu%pfRMur`]8's&];)=Su>%=T)=r=S5es>5_Uu
+=p%]":eq!`%7WcI5WgnO-nRnH1HBjVIIr!_IK"WnHi/3iH2i-fG62r1FoGtTAS,RfrFc1Fr+Z4G
+rb<EeBP2!kB4u!oD/scEItWZ=PEqW-StDXJT:MF=rg<\Os-O"ZS"6+BTq_O^-DR</T:MI=QB[Mm
+Nf8mRN0'6hS=uj_Zad`eaNW#\f\5-;hr3STroF+>-K<t@h:pW7eC%iJ>$"g,<)HRl:f("c;,'b]
+;,gOp<E3!u<Dudlqbd5e?Asl(O-,ThQ'I]'R@B_;StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc^;%J#
+_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]
+s7u]kqtpBjrVc?eJcC<$[f:j~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[Ymmca4m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfQJ[DZ4MQE>E\<Ci!`r
+XJ_qkU7e*HR$3YEVUfj8K^4g"OoCI<OoLUAP6-u6Q2[*LQiEHQRK&]US,AfVS,JcVR@!o="I54*
+JU@BK+CSQPVOsTTSXu=<P`h)eMi!7ELP:kPP*(ieOH>NcP*,^V$G*dX[u?WHHA%<?rfR/BrfdAF
+!KiKBOoCODP6$o5rK[MOQBqB6!1*VN!1*SM!1<\PqjIPRRf8`TRf/ZSRKAtIRf8]VR$X0<R/E?P
+R/!-JR0&hFRJE9ORJE<OQNEJ>Qi*0KQi*0LQ2QsFPQ-mIPm3J<QBmf%QN!0JPQ7!IP5pdEOT(@B
+P5CC9P5gaGQ2d*FQ2QsIQ2R$KQi<<NQi36LQN3ENR/reIrgj%[qOmk^qkF%arM9:drhBUlV59ua
+qPF7jr2BXnrMTdqVPa<irM]^pqPa7i"KJH#WiGlqqlKh""/qB2H2_mbILLL^Y_/Q[<E>Kb='i!,
+IJ\KcJ,=]jIK+]oHi89jH2i-fG8,5Vh;7)Kj5oFel0@X%mdBT7nac;NncnXToCV_NrM9H4Z`'h2
+U6V.ES!KA,PECc]T;AZs[_BJ]Z*LL4ql]gu=c85uO-#KePa.Q%R$sM7StD^MUSO`aW2cl!Xfnt6
+Za@0L\@K5a]t_A!_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4_k3(sml0@U$m-X60n*olH
+ncA@Srq6<b!;HHes7uZjr;6Kkr;H6dJcC<$\,Us~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[Ymmca4m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfQ&A@K'XP?X@)G>$4p,
+JUVumH$=CQEGfVkIACLlEdHbmom6Uaq0W?oIXZcrJGb$!JH(*!If"QnHlZa+?".8Q;,;OeGBnCT
+G&qYAD/=!%B4b[cA8H(!qJ61LDZ,S&N/NOLAp/W?FEr<5HieYBI/\QeIenQlJH(3"JcLB$JcLB$
+K)C2nK)U<$K)L6#K(slsK(suuK(acqJ-(:PJGOg#J:E'"JUm]Mrdb$#q18Hos*surrdOosr-eTm
+!I]FmI/eQiI/eWmI/J?iI/SKmIf4cjIK4lsJH(,pIfFltJGt,pK)UH%L%g?%M#E/1MZ/J2MZ&J3
+M?&S6MZ/J0MZ/P5N;AP1N;AP1N;SY8N;\b6Nr4t9OT(@WMgTM_ChdX$Ch[jBCjJrJ7X'AW:PJaq
+qgS0eqgS?hs*XfmrHeKhs*4Kd!-\@Js0W6C\@K/]]">Sf]t_>Z^_ac$_Sa@6c-b+si8j+emI0T9
+oCV\Jo^r+R!:p-\rq$?dp@n=Vr;$Bf#P[rbo^hYDnG_k\nF?)Ap\OjHru9nrP`:ZdLjjr4JUW)t
+H?sdYJ;9&ANffB]Mi.=`qh&%0N/`m[OckroQC+&.S"-(BTqS6WV5L8lWiW>+Yd(OA[^N]V]=bhl
+^qmn+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7QHe
+rV6EgrqcQirqu]moDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfOti7N+ZV4#f5\2`NZ]
+5!1tl4Zb_d2`E<R=%lCd;YEre;>O/k;c<Tnr_iVlrDMiVqbmDlr)+(\0.nq41H.*V5s7@n4$,Pc
+r](EI2E*QN2)I<S3]T/Y3W(r=:]3ue9+"6F5"JOK<)lmt<Vf\n;uKVo;uBSp;uK\p;u9Mo;uT_r
+;t3fe;uKSp;cN]o!*&ho!*&kp!`W)sqG[Gpqc<_s!`W)sr`&u"<Vobq;uK\p;[-3$<)lpt<;oep
+<<#nr<!?3"<)Z[mr`&\ls&8tsqG[Vs<E<+!<;KPm<W#hr<Vf\p;?Tor;c6Nl;Z]ou<;ohh<;onm
+<;of"<)lt!<)iiqr`&nr!`DrrqG[>l"'&<#<W,qu=8Z2#=TV],=8H%t=oVY*=o)8#=oDJ%=8,hk
+=oDM(=nGl4=Ar$l9h\8U77B:)4$+o?/O`&`3`>p)qgS0eqgS?hs*XfmrHeKhs*4Kd%!H8qAnPdj
+Bk_6pC2<W['5;,nB4kmlC2S*8H@LX+O->luT)P>cTV%aCR@*l<0pnAsS"-(BTqeEYU7n6OS=5e0
+P)t]`Mi*COOHZ!#Tr>*"\A#l%bgFqmg>(QBiSrnsjT"6hio&_MgtLB0da$'mb$%qJ=]SEu;c$:g
+:ejb]:Jt+j<*!+&<`W-r:f.'eqbUFRN/`m[OckroQC+&.S"-(BTqS6WV5L8lWiW>+Yd(OA[^N]V
+]=bhl^qmn+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%T
+s7QHerV6EgrqcQirqu]moDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmZ[3m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSO?r,!<fF)Yu2Brn83
+Uns`TSXPk.O/p3nH%1d:PO4P4Oo1=9OoLUBPQ-pHQN*9OR/WNPS,AcVS,JcVR@*u>$&*t\JqSc1
+?!jK.T`:SpR[BD*P)bKYLk^V<P*(ogP5^OFO-,TfrOiTO\[f/"Nh^oQNK0,"Oo1@BPPp[BOoLUD
+PQ-jIQ2[*JQNW\DR$X0=Q2m9NQMm-MR/WNNRKT%GR$jBARfAfTRf8fVRfAcWR$X0<R/<<JReiHP
+RK/cPRf8`PRK8hDrg!PNrKdAJrKdJKrKR5DrfmGJrKdJM%[NHIQ'IT!Q'@MsPEM&irK7,CqiUl@
+s-*JGrfdAIrKd;FrfmDIrg*SNrK[GMrg*SNrg<VO"e(sOSXuGPT)bP]U&C_^U]%"bV#[=jV>d=l
+V>[:iVtHtnVPg>jVl-Jlr2KLjql'UrX8T'qX8/h6Xfeh(ML0JhEI!%ZG`0F_G>_C>R&<tkYl0%J
+J+\?gJ,OinIK+]oHi89jGlW*fG7``njQ>XilKmm*mdKZ9o(2JOo)J:`o_/+ZUAl4bX/WM&SXH.C
+QC+/-OH#*_VQ@,5]YChXYHb16r3#mus,:3CO-#NgPa.T&R@B\:StMdOUnsrdWN*#$Y->.9ZaI6N
+\[oDc^;%J#_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MG
+rq-?dp\4X]s7u]kqtpBjrVc?eJcC<$\,Us~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmZ[3m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSO2r*UCL?!UW8=b2$M
+H?s^UF`MJ>Ck%RrCN+NGI,fSHHN/?eHj5"JIXls"Jc:9$JHLFPIt%9C$"IFO@Us"Z:euN=GQN&2
+F8g+`Chmd!An>L`rbV[PD>e;ND#eJONXC]%MI1@QD01&NIK"WnHiJKmIJ&'cJ,OosJH1<$JH1<$
+Jc:9"Jc:6$Jbt&tJHCFSJc10&JV&H)rdk*$pk&Quq1/U!JV!fNs+(0#qLJg#It3*#JGauuJ,t4Q
+r.+j"rdk#us*srqs*k#tqgJKnrI"isI=-EhHhi'hIJeKkHi/9iIK+cpIfb.MJ,4WoJ,b&rJ,Fcq
+J,OroJcLH&K`-W"L&m'crJ:N3re^K/!/pf5s,.#;Mi3ILrJLQ3rJ^Q3s,?Z2q2G?5rJ^`8rf6o;
+qN1]=s,n+TGAqG7BkhL#BlB)B?pR7OG^rObLAcSuJ+\?gJ,OinIK+]oHi89jGlW*fG6>:_\@MUM
+s1JBF!kuFarP8EKs2#Yk`Q?ERfA,?Gl0Ia*nac;Co_%kKoCMPEo)81ZoE4d[p@nFY#P[rbo^q_E
+nG_k\nF?)Ap\OjEru9.^O,fK_Kn>)3IXZcqH?XR^LPh(PO-5K[MMV+^qLeg,>`Ol,P*;,qQ^F21
+S"6.DTq\?ZVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnY
+jlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)Wirqu`noDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSQ$7L_aS76!:e3&X&f
+5<V.lr]:?E2E*`h7ncbY;>*ic;>F)i;uBPk;u9JW;>X8j;uT\p0b,fi0etLA1I+2h4Zkki3rM&B
+2E*NP1c51mr\sm<r&YBa9h\5T92%o/4@i=I<)ifrqc*GkrDNYp!*/ens&0&#<`N*ur_ierr_rVl
+!`N&srDWbqr_ibp!`W)srDWhs<)`cqr)<>hs&K&!rDikr"]SN'<E<,t<;oho<<#nq<!H?%<)QUm
+<W5qt;u0Jn;uTbm;uK\q<<lK'<)cdp<`]3!qbmJor`/PhrDW_o"&i/t;uTbq;ts>l;u]_q;uTbq
+;uBVp;u]hs<rQ(t;u]f";c6Ll<;KPl<!--"<)ris!*B)#s&fA)=8c8#=oDG(=^"u)=T;P'=T;Ip
+=Sc1p=o__(>5VP'=qt.9:/4JV:JF8G3^l(c+t5'46o-i"rI4WnomlmgrI4Wls*XfmrHeKh!-nHd
+!,27D!GZEGC(k;pBkV0oBkqX.G'edpMNF'hS"BSN#G.HSR@'>-QN!3UR$jA2S"6.Drh:a5TV%dE
+R$X&"OH#3VMM[:QPEq`4W3*D:^;S.;dFHn'gtpuJioC%!s5P$WiSWMIg=Oj&cHF8Ga(o6g<a/[*
+;H-Li:Jq*e!DZPl<!$*#<rQ,!;?0Sl;#3ufN*MC(OHPflQ'[l+S"#t?TV8*UV5C/iWiN8)YctF>
+[C3QT]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6naZ2@
+oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>s+13Zs*t~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmca4m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$VuCN6Chs#ds(W.F
+V5Br\T:MI<P`fsHQZRV/P5UU6P5^U>OSP%=P5^[FPlI$IQN*9SR$jA2Rf8fSS,f&VRK](FQ@jX4
+rdk_h?)=9fT:hgIS"#Y+OGo'RM>i80Op-o/OcYZcrf[2ms1/0<#FV32KT2"PO8b:8P5UOCP5gaF
+Pl6pIQiEHQR/r\Arg!PNrg*ML!goCDqO.DPrg3\RrgNkTrgNeT#b%0KQ^=),R@*o?pmM8OQ^Ic?
+p6u#LqjI_WR$a5+Q^@];s-N_Ps-N_Ns-<SJ!L8oKPQ$gGQ2[*GQNNP=QBhH6!gAe1rK7)BqiM5K
+Pa%AqP`q>rQ'M*0qN_)HrKmML!13\N!LK2LR08tJS=Q8NTDtS^U&:YaU]%"gV>m@jV>mCsVl$;e
+VP^9jVYR._W;idmW;NXkW;NXpWrK+"Wq`XkXT,F$XqdU[I!9^SI=HTeXjDrL;Me>=E`ZSHrdX-^
+rI=fqqgJKls*O]js*=Wh%!Ujtl0@U%mdBQ5nac\N!;-9^"n_K\p\Ol_ruUe/YGSA/U6V=HR?jA1
+Ock`gV5g`/[_TP^ZEgX6YPkX"X]UOAO,oEdPEhH#R$sM7StD[LUSO`aW2cl!Xfnt6Za@0L\@K5a
+]t_A!_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b
+!;HHes7uZjr;6HjrVc?eJcC<$\Gq'~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmca4m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$Vu:$&?P?RE=FY^G
+G^+@RF)l2;>'"t&DKPf(l$NGXrHn9b!.4Ee#(:rMIt3*$rdt0$$\3_VIXZ]nIXPX3>Q/(L;,DXc
+H$=CSF`VVCD/<s$B4badA8Q1"D/K8g#]=KtNfK0\Nf3mo"Eo00FF!b2rHnQls*aQhq0rHrIt7EI
+!.b'""+YrSK)U?"JcLB!K)U?$K)^DtK)U<'JqJ]/qh"s'K7`uO!.t3$s+('!s+(#us+(-#!.alr
+s+:3#rIY'#r.+WmqL/9jr-e'^rd4Tks*alo"FY`KIX_$@s*jut"+G`KIf4crIKY.LIt*"JJbalt
+KDpQ&L%g?%M#<,0MZ8V4MZ/P5MZ&J5MY`8/N;eh9N;nn;N;nn;Nr"b-N;eh:Nr4t6O8tF>Oqido
+Df'6(D/F$%KW8cl6"rf4>u"1LrdX-^rI=fqqgJKls*O]js*=Wh"a@Pi]=bfU]`Z!`^qfrcrke]Q
+)T9V7b0SPhgu@G[lgF94o(2JGo^qbGoCDMDrU^$\!;6?b!;HKf'`%P!p\+:Po^_P@n*]W4nac;F
+q>B"I*594OOH5Z^It`Z.It<)sH?aagLQ.CUOcYN[MM:q\q1De.NK9-_P*;/sQ^F52S=Z@GTqeE[
+Vl6VqXKA\1Z*UgG[^`l[]Y2(q_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L!
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1&)Z~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$VagYRr^.>X3Aj)c
+4Zkkh3]fA]2DIB`9i+[a;>F&f;=IK_;u0D_;>sJj;>O2i;]nsl/hJe41,UpS5Wq7o4?PVc3B0&Y
+2E*KL1c.6S3B0"t3s7Z-4&A]O9F"9c8kD3=;,dEmr`/eor_ihs;uTYs;cHasp/D/p<`W4"q,@,h
+r_r_os&0)!;cH^p;ts>i;ta2i<W?)"<W5tt;Zp*$<`N/s<<#np<;fbq<<#tu<<#nq<<6'!oi1cd
+r`&_os&B"u!*&bmrDi\n!EE+u;Z]os;Z9Vp;Yj>p;cHasqGRDo;uTYp<;]\m<;oeu<)lptr`/kq
+s&/kq!*&hor`&kss&AnsrE0#$s&f,#rE',(>$CT$!*B)#!*T/#qH<VtrE9,'qcWl$'ie.-:/+GV
+9gqK:=>D?L3\3]\1HAA4J*;F]J,XooIK+]pHi89jH2i*hGPl4TC\_`FBc^r%C27U(FE`+aLPq:Z
+Q^aS=T:hgIS!o_3Q^=#(Qi<BPROt#!SXuLJTq@sKS=,_0PECocMi*@JMiNsdS"cg^Zad`eaNW#]
+f@es9i8N\UroF+>-fX+BhV?i:eBuO``PT@#[q08W=^"s/;H$Ij;Gp=f:/=bc<)m"#=8l5&<)QOi
+rD<;c=H&6#O-,ThQ'Rc(R[]h=T:hmQUnsufWiE/&YHY:<['mEQ\\#Mf^VI\&`5Ta;aND]McHjkb
+daZdtf@\d1gYL]Bi8ESSj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HkrU^#>
+s+13[s*t~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[YmpYYOm-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl"<ICMRa%Chp,K
+Vkg,^T9u"4P`X5@Vg3fQqigT6rK6l:q2t]?rKI8G!1!MKs-EkUR@0M4rgWhUs-rtU+..\3H\6s)
+?<j>%TqS-NT:245PELraM2I%CKoqIYOo:@COckn*^&PYK\$iZ%H\.6<rf.&AOcfR)s-*DErfR2C
+rf[JLQ'IZ$rg3YPrL!_RQBqN:!1*SM!goCDq3h;Org3\RrgEhTrgNeTs-a+ZR$X/,R/36MRK/iU
+RK/cTR/WNHRK/cRRfAfUR/E9PQC!s8R/`NPQ3!88rKRMMQ'ISur0I8I!1<_Os-E\Ms-3MHrfR>F
+P*5g,#a1=5Q'IStPa)-3p6PT@s-EMJs-EYL!1<SM"IbgLSXobPs.KCcqP*tar1s@hs.fXkrhf^n
+rMK4bm&9i]rM]XnrMfn!WqWRkXT#@$Y5b[AWh+`fGBJ"dLO+0;^P@5cLf9XC>$e56pON$ip43*k
+s*jlos*XinrHeKh$[?m]m-a?2naZ2Ao`"Lgo^h_Jp@e:ZSGsVBWiF(5R$aY=Q^j_7Q&^p!VQRA8
+]th"ZYd(@6Xo>L!XoF>bNfT9bP*D5tR$jG5SXuIIU84T^Vl?\sXfen4ZEpsI\%0)^]Y;.r_Sa@3
+a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0i
+qYU0hr;HTbrdk*#s1//[~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl'H$s'Pe4&mp3;
+I!U'\F`MJ@Detu<Jo#FQqg@^VrI"QjpNljdpj<BrIXZcrJ:N3&K)U?$J008iIXQZT?sR5NA5Q-L
+H[0m\G'A"KE,TQ.BkV-kARtdW!H)cRC_CT&DiTj=O,f-VMMd42D0'uLHi/9iHN8HlIJ/-aIfP#u
+Jc(#uJc:2tJc10#Jc:9#KE$N'Jb=WpJcC?%KE$W&KE$T*K7a#Ps+:9%s+('!rdaot!e>iPrdk$"
+!.k*#s+13%!J,k#Jc1,pIfFioIf=irIf"NoI!t^9s*FfpI=2!As*OrtIXZcqp4)merI=itrdXot
+!.jrts+:<)r.Y*(qM,',qhb<1qhkE3re^c8N/[Oir/CW7r/CQ5!06i6p5K!1rf6u=plGK<qiVk]
+P*1l]Ec5c/Bln</BRZ+X?sdY;G>:k.LPPVSpjr-hrI=irr-eTms*O]js*5&uGJ(W&^:q@t^qmk(
+_Z%Fg`5T^8aNW&]g"k]Nl0Rj.nac;Dp%7nUoD\=\o*P'\oCV\Jp%J+RrqI3'q"XUWp%@qHnF,i6
+mdK]:o_/+Yf`)uhR?*B%M1L54J:E0'IXcZgJqo8DNKKB`MMd4DK)LAuKE$m8NfT9bP*D5tR$jG5
+SXuIIU84T^Vl?\sXfen4ZEpsI\%0)^]Y;.r_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]
+k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTbrdk*#s1//[~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl'G]#=1^E6ps=)
+4T7JF4?>P&2[)lJ7nlfYqbd5er_`)]!)rYjo25Haqbd2fs&0jk/hSk61,UgR5Wq4m4?Pbg3BB/\
+2`EWO2)IAm3<;3&r]:0D:f%'as%Nbk8OGsE;H$Onr`&ntr)E\r#uji%<)cdo;H$Qo<V]Vn<W6#!
+<;9Di<;fbk;ufko<<#np<;]\h<;KVo<<#ku<)lrn;ufko<;f_q<;ont<;9Jl;ufkq<;]\m<:s5k
+<;]Z!<Dugq<)lrq<<#qu<;fbq;Z'Ji<!-&u<E/oqrDEbs;GpFlr_ibprD`bp!E<(m<;ohr<;TVo
+<;ont;ufqt<rZ8#=9;W/>4u+t=T;Ot=9)G"=T;P&=SQ#">$:c,s&oA(!*T8(r)rr$"'JZ$:]='"
+:I[cA5YEja1HR*V2`*No;YP_:JbFWmJ,auqIK+]pHi89jGlr;8C23``rb<`pC27R!Bk_<sCMRd,
+G'JIfLlIR_R%0b>T:hgIR[KP0QC!o'Qi<?TR@9V8Sc,2\Sg9krR$X)$OcGBXMMR+JNffTqTr+rt
+\%]c$bgG"og>(QCiSrnsjT"6iio/eNgtC6,d*9_Q_7d@dYcPF8>?P$:=&Dgp;Gp=h:f0q_;H$Rq
+=&i<#<<H,t:J^sdq+q$L>`Ol,P*2&pQC+)0S"6.CTq\?YVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Eg
+s8)Wirqu`no)=4?JcE:\J,~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\>Oh4Pn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2aCM[d&Chd^#
+V50fWSc4oZO+!^kG'o)?PP(+;OnFh4OoCOCPQ-mIQ2[*KQN3HQRf8fTSGo#WRNdK<IY*-(L0^UO
+TVA$NT:MC;Q'@8eN/<=EL6@X\OHGZeOSt@@]aDB^\[K#VG_:s:O8b.AO-#Hcr0%)Drf[8Cs-!>E
+"I,1:QBqN:s-WbQ"IPOAQ^Ic="dkXCR$jB?RKo=NS!ob4R$mrB!1EhTr0meWR?s9=R/EBNRfAlU
+Rf/TRRJWESS!oi@RfAcUR/!$HR/`TSQi`V?QM?aFQN*<OR/E<LR/N?SQC!l$Pl6dIP*(q+OTL]0
+Pl?pMPa.Q#rg!5Dr0@8Ir0RGN!1*SK!LK2MR0B%KS"-%@rh'4`s.T@bs.fIerMBOis/,4^po"1l
+q5=@oW2]crri#mrql0Cks/Q."q5aIqriQ.%s0)I,(TEXLH['RZQ@X:BTpMNkL5Jls=^#.4Z2T:L
+Jbt&pJbaiqJ,auqIK+]pHiA?kH2m@5nH/:Qo`"Lhp@\+Pp@n@ZrgWp.jn#OQX/hnZTq@^>U77C2
+O-ciIZa@6X]X+oKYH%Q(poRYWNK0'^P*;/rQ^F52S=Z=FTqeE[Vl6VqXKA\1Z*UgF[^`l[]Y2(p
+_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamd
+q#C0hqY^6hr;HTcrdk*#s1//[~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\Ab#9Zn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2a?XI,G?X@&E
+H[0gYF`DD?Ch%j>Bl8+hI-u@XI/SEeHN/?eI/eU!IXcitJ:W=NJcC6@IsuiV@:!ANA7SM`I!9j[
+G]n4MEH,l3C2%<mAn:jWs)&$XCi+*/DN=^W$&je"MMI()Ed<'3Hi/9jHiJKlIJ\HpI=?YBIfP#s
+Ifb.OJbsrtJc1-!Jc:6(K7\]-K)C9#Jc^RVKD:$!JV*iQ!/1<'re(?*JqEuQrIXotrdY$#K(sog
+K)'s!J:W7HIKP(KIt.EGs*srqs*aors*aZi"FYZEI!kj?s*OuuIXZcqIeS<nIXQYBIf=isJGt*#
+J:IQK!.jrts+:<)r.Y*(r.k<.qhY<1rep`4qMYB4pl#-1r/LW5pl595rf-Z2rf-l:s,[,?!0R8B
+rfR&?rKA%VJ8oICBPi'5Ble`IG?8<j7<_L$:ksi*JGFcnK)'unJGt&uIf+WoI/eQmHN/6s^;%Fu
+^qmk(_o)Jls2G#Y)9^@SfA#3DkN_F%nFH/Ao_%kKoCMPEo(2GNoDeI_p&F^cp\agdpCR&ko^hVB
+n*f]4nF?)@pA+X;ruA2TOcYZcKn+u3J:E9(I=$3fL5LtNO-5T`Mhm2eK_U1%N/`jYOckonQ'[l,
+S"-(ATV8-VV5L8lWiW>+Yd(OA[C3TU]=bhl^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_V
+jQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE:\J,~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\Ab#9Zn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2a6:4.06:4./
+4Ztti4$#>[3&Eli9i4a^;>j>k;<1XE;>sJi;>X6%0eb150ekF@69mb!4Zkkjr](KK3ArfS2Dd6O
+3B9&Z4$#G$3ri(U9F4Ec91_63:Jt(ir_rSkr`/nrs&0,";cHas<)``p!``3!rDiku!EE+t;ZKeq
+;uK\p;Z]ou<;ol(<*!%!<)lmt<)iiqrD`_op/Lohpf%5lr_rktpJh#g!*&Pis&B"srD`ep!`N)u
+r`&qtrDihrqc3Vor_rktrDW_q!)r\mrDW_o!)rhqr)El!;c?[qr)<Plr_r_mrDW\p"&i0!<W5tt
+;uBVm;ts>k<W?%u<rQ/#=T2J'>4u+k=9DW,=BGE&rE0,&o3))s$X$Y:=]ed/=^#!5>5MJ&>5_Y-
+=Ahmir_3r!77K=(5Vt&K3\*WY1HAE2rdafqqh"Wpq1/Hos*jlos*Xinrd+TirG)CJr+l:HrbE![
+E-$5MJ;&l@P*VN+St>qR#+V-MR$X/*rKf7+R@9S6SXlCGT:VUFSXPq3P`_&eMi*@HLl7:UPaS2@
+XKf7J_T0mIe_&R1hVdAPj8S->j"03Khqd)?e^Mjga2Ga)\$E3<W2-+jBN\G?=]J<u;H$Ik:f'q_
+;H$Oq<`N6#<rZ.s;#!ggN/`jYOckonQ'[l,S"-(ATV8-VV5L8lWiW>+Yd(OA[C3TU]=bhl^VRe*
+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNh
+rqcQirVZWmoDX=@JcE:\J,~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTPSHDC(G*!
+EhSqiQB[YRSBZ)!Js#ekp6,E;o8rj3rK@,C!gJt8rg*SN"IPUGR@=)Drg`tW".G'tI/\a=LL";c
+U7e-PSXl4<Q'%/gN/37DKohF[P*(ohOd#d-rOilW]",5'[!I@_OH>NaNfK0]OH>V&P5gaGP5^UD
+P5LLHPa.Q#Qi<BNRK&ZRQNNVCR$mr@s-`kTs-j"WrL3eUrgEeTs-WkUq3qGSR$[f>qj@GQrgO(]
+S"#k8RJrQTR@9WDRf&ZMRfAc\R$X/*Q^F/,rg3bTR$di?".5FAQMm'OQBd`$QN!6NRK&ZRQi!0M
+QiEE_QBd`"PEV/lP*;#jP*;./Q2d-QQ'R`$Q1pUBQ2[*KQNW\BR$a6>Q2d-MR/NHPRfAi]S=Q4B
+T:_eTU&:YaU]%"aV#[CeVZ<[oVu!@kVuEUpWV`XlWVidoWUd%iX/c0"rN,muriZ:)rid6EVi,tK
+G'&>*I!C[VMigq;O]\#R<aMo2rIO?frIOfqs*t#srI+]ns*O`k#C5n4o_%qPp\sjhp\=R]rKdI'
+];hmNTpD1GS!]qGR?ikpUoLW-\%f_cYd(I8YPt^"X^6pENK90`P*D5tR$jD4SXuIIU8+N]Vl?\s
+Xfek3ZEpsI\%0)^]Y;.r_Sa=2a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s185\~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTO2()?N4@@
+G&q_DDf8g(R:^;VHhVpWHhr-eHhVjdHhi'hIK+`tIt3(HJcC60IqE(p@U`k[;,MdfG^'.0s)TE)
+Ci!m%B4badD/O91D/O6.D/X?1NfK0]Nf8jQCPQ_FG^Oo;Hi/6kHiAElIJSEmIK+coJ,b&tJ,+Wo
+JcC9"JcC?$K)gN!KE$Q%K)gN&KE$N'KDpJtK*[-aKnG#0Jq8OQJcC<&JV*iOs*t0%JqEfLs+16'
+r.=s$!eQ&Von!-ms*jlqnp^Rf"b(lJI!pGAHi\YErd4ouIXQWlI!u!C!e5ZJpOE3ls*Xlrr-ncu
+JUm`Nrdb!!rIXp!!/1<)r.b-)reUH.re^]6regQ1rJ^Z4rJ^T4rJ^N2rf6u;q2G93rJpl<rfHu=
+r0$l>(mL#*E,KH)EI_k=E.r:N77:ucGYLn/LkbkZm=P:fqLJTqrdOfos*Xinrd#T1_84"*_o0L4
+`Q#s=ai_oVe_8j=k3;7"n+#u?oD\@`oCDMPncSLSoCMtRs7HHep\4R[s7[)up%7hEn*f]3mI0Q7
+oCi"Xec-`is7)P>O.qD[Jr,#.L4t2/H?k1#N/s!^P)YBWLkUK\K_U1+Mi<XVOHG]jQ'Rf*R[]k>
+T:r!SUo(&hWiN8)YHY==[C3QT]">Vh^VI_(`5Td<aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Od
+kNV6rlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13]s*t~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;lnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTLD176ps@.
+6TdCk3AriR5>=gH:K.!bs%r\ljAPGDr_iSis&(=D;DBmZ0JG4;2)RW`4Zkhg4ZPSa3''&Y2`3EK
+3]]8\3BK;`4$5Ve:JUm_s%<Sh2*ju9;,gNn;u'Dk<W,l&;H$Ln<)lmr;uTbn<W?,"<W,kq<;ohq
+<;f_s<)lor<W?,$<E/osrDWYorDWMkq,IZ!;c?Xq<)lor;u]hs<VTMp;c6Nm;Zp*$<`N2n<W,ns
+;u]_q<;KVj<;ont;ufkr<<#tt;uT_r;ts>i;uK\l<W?"u<W,l";c6Om;Z9Vo;Yj>k<;fhs<<#no
+<;fbj<;TYr<`f9&r`T2'rE9/(!*Stsr)`btkue-m=]eg1rEK;*rE9,'s'$FG>?b?7;,9q]9MA/M
+6odRt2(Bt701IoX3E8uUJaJ'fJbjosJ,XoqIK+]pHiA<kH2VLYD#S2_C27U$Ci499H%(@$N0'9j
+R[p&LT*([SR[F)@s-EYNs-O%ZS"#q>StM_TSkbfDQ^3htNf8jQLkgeENf]KnTV\`p\@oc"bg=nm
+g"bHBiSrnZjQ,@]io&\Kg=Oj%cHF5E^:CYVXf81lTUhOgSR,H%?rg0(;cHXl;Z9H$:/Y%k<EE7&
+<E<*t;,@0fpeP4SN/`m[OckroQC+)/S"6.CTq\<XVPgDnX0&P.Yd1UC[^WfY]=bkm^r""-`Q-'A
+bKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)Wi
+rqu]moDX=@JcE=]J,~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VVQCCY9&
+EcQ&dQBm\]ZCuPmMY*,-P5g[8OSk7<P5UUEPQI,9QN!3SR$jD2R[X5Frg`tW(P7-aJqSe_?)FEj
+Tq@sKR[KD)OcGE[M#N)8PE:ojOcY]hPEM+-]a29_]!eZcH$kGHOT1@BNfX.#!0R5Crfd>DrK@/D
+s-3PK!LB)NR/WNQQi`VAR/NHQR/`TRRe`EWR[KS4R[KWCRfJuVRfJlTR/WNPRfAieSXc4>S!ob4
+R$jD3S"#lAS,A]]S!ob5Q^=#'QC%Q;pmM/L!LB#JQN*9RR$X/,rgEeRs-`kR"dt^DR$a6>Q4T=G
+PEM)mP*(omPa.Q#Q'I[4Q1pUEQ2R$JQi*3NQi<<NQN<JAqjRPS!1a%Zs.B7_!29@crhKCeqP=1h
+oV_J_rMK[pVt[.hWV`[qX6lneX8K(!XoGO(Xo,@"YT'mSZ_<2'H#n%iQ[X1_dtWcV<0ULQ=]\s3
+Y-7hVmXtIirIOlsrdXrsrI+]n!.4]k!ql<^rqHZkq"X[]rKR=)q!>)__k`onURdgGVkB?>P+8PT
+['[Q`\[&NGYH4q1Y4o'uN)kt"OHPflQ'[l+S"-%@TV8*UV5L5jWiW>*Yd(O@[C3TU]"G_k^VRe)
+`Q$!?b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<gqu6NlrUTr=s+13^s*t~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;]naQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VTZ?!^k:
+?OC+ZDf9K)Kmd`TGP$:RHhr-cHN8BkHi/3iHh_snI=?WpIt3*#rIP!!,%4kb@:WkD:ORP7G^"=R
+F)l2<Chmg#B4POaDf0H2D/F0-rbqgss,RGGMi*CAR;-bdrI"Qjq0`0i!e,QGrI4`ordP!"It.HJ
+rdX`orIG$#JV!fPm=PClrdt0&s+:-#rIbl=KS4u1JqAQ)J:N3&JV&K)JqAQ)r.=itrdk-&qh"g"
+s+9rqrdP'"IsulspO<-lrdOls!e>cLr-eQl%"3SQI!g?jIXQWlI!tm@pO<0lrdF]o!.b$!s+(*"
+rdt$""GDD[KS9>Yr.b-)reUB,!/gK.!0$`3rf$]5!K<$:Mu\k9N;&>/N;\b8Nr"e:OSk7=P4t1>
+Po,@&E,KE(GCF=AL8f',6:>cbGYLn09ne<#K'n9iK)L8uJGt&uIf4]pHiSNmH32"&`VmgVa;)h>
+cI(+mgu7AZlg=02o(2JFp%@tKqss[V!qc0Zrq?Hgq>L*gpCR&ko^_M@n*]T1n*ol=pA+X<s8W'D
+qtBRM^:TPjSr/8RLOt).LOt#(H%Up2NfK9bNJrdOLkCD7K_L-!N)kt"OHPflQ'[l+S"-%@TV8*U
+V5L5jWiW>*Yd(O@[C3TU]"G_k^VRe)`Q$!?b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NlrUTr=s+13^s*t~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VVQ6k)LO
+6UF+%3&`fY5t4XFmSW@L!)r\kn59-^qb\,,;,K##/hf%92DdZb4Zkhg4?P\c3]d7!)`BQ12*3fY
+3]fDa3]fGd;,0eY92&#O3(6V@;>jJm;u9Pk<W5r$;c6Om<)iiqr`&bps&T/"!*&qrrD`eqr`&kq
+"B8B$<)iiss&T"s!*&qrrD`bppf.&h##nN"<)lmtqc!Gnq,@An;Z0Mp<)rispJq2lr)3Ys<)ros
+s&K%sr)EVp!`W)tr`'#!;cEZps&8_mqc!JnpJq,js&/eos&/_ms&8tsr`&hrs&Akos&AqqpJ_,m
+rDrr"!*K/%!*];'rE92(oiV,nr)ii!!*\_lr*';/>?b96qc`r&r`g:A;,9t]9MJ8O77'j52(9k4
+0LdrX3B0i4rdsQjrIY!!r.+crs*jops*Ofnrd+Q['l@c&CM[g(DK0fDH\$p0OHc'!S=Z>OT*1[R
+R[BH>QN!9OR0/nJSY#hQrgk@(R?s2%OcGBXM2-h@MN*^]R\-CVZ+%EaaNW#]f\,':i8N\ojT"6o
+io&\Kg=Fa!c,di<]XP5NX/D_dSsu+2Nf@^g>$#'4<)HRl<)?Ih;,L%b;H6^u<W6#'=&i3r;,C*`
+:]HASNfT9bPE_?!R$jG6SXuLJU84W`Vl?\tXfen5Za7'J\@K2`]t_=u_Sa@4aN2NIbg+M\dF-Oo
+f%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;HTbrdk*#
+s1A;]~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0RhoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRVm+c
+ErBk\D/>NeF*iP&nrrj3s,lo7rfQu=rfdAHs-<VMs-E_QrgEeTrgWnW'Usl/ItWN1?s]_-T:hmO
+Ssu49Q]h?."c8"gL67SqOoCOEP5W'#]XtbaB=`56Ll_Iqrf?u=!0R8Drf[DHOcfU*s-*GHs-3VN
+Qi3<NRJWBLR08nFR@9T=RfStGrL3bU".G^LSGo#XRf8]PRJiQ\S=Q4@S=?":R@4#BopbrL#+M'M
+R@'A.rg*SNs-WJI!1<\N!1<bP!1EhQ!1<PL&t##QR$j;-QBmf$P`h5oP*D2rqNh&ErK[GMp6P]E
+r0[JMs-NkSR$mi?!LoVYSc>;[T`:_aUAgqdV"geYVZNfrWV`UpVl'EjqksLori#jrrMogso;_hi
+rMfjurN-%$qQBh$s0*TMZEpmE[&fpPH?aU]Y`*sRUW@M_AlVi4R9E^"=KeplKDgE$Jc(&uJ,aur
+IK+ZrH[:#9q#^EirK$spZ`L1.TpDFGR\$IUSsb_)VQI,2\AGqcrilR.YHG&%X](1<O,oEdPEhH#
+R$sM7StD^MUSOcbW2co#Xfnt7Za@0M\[f>b^;%J#_o0O7aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQ
+j5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$]DmB~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0LfoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRUBP$
+?iOF9>BQWNDK>8poR$I_o6^F^rd4Ef"FY`JIt.HJrIGr!@:*MTA5Q0NI<Tp\GBJ"KE,f`1CM@Hm
+A7]XrrG;OPrGV^rs,RJHN/NQkMJ7$RHi/9jHhr-gI/n`qIK+cqI/n`qJ,4ZtIt3'#qgeNos+9ip
+!.t-$s+CK,JqJ^TK)1,rK`?Z1Jq8H&JV&K)Jc(*"Jbt&uJH^XVJqAW-qh"j#!.slps+(-!rI+`p
+pjW*i!e>cMrdOips*b3$IXZ]nI!pJCIJJ?bJ,aosIf4coJc:3!JcC?!KDgH(KnfS\r.b0*s+pH,
+s,-9'rf$f8!K<$;Mueosr/L]7s,@#=qMkN6qMkK7s,[2?rJpr?rK7#@plk`BrKS7]LimWPCMeuP
+CM86h@?jYY7n\)%9MnQ>L$40fK)U?!JH(-!If4]pHlm]]HH4(IaiV]Kc-Xqjg>:oRlg=-1o(2JF
+o_%kJo(2eMrUU9dp%A%Qp\=R^p_*>pp@\(KnF5o6m-O0/nFH;Jqq(irrVQE_nET/qqs0H.O,o!G
+Lk^M4M2$V4I!^R(NK9-`Oc53ULkUJ6K_C$sN/`mZOckonQC!u-S"-(BTqS6WVPgAmX0&M-Yd1UB
+[^WfX]=bkm^r""-`Q-'AbKJ/UcdC.heCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcE@^J,~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0IeoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRRI-B
+$UI-I6pWaq<_Z@d;!h-L;Z9Vj;XdQ^;Ys<5;DBgX0ekFB1daMm4Zkef4ZYSa3&roV2Dm<J3]]8]
+qE#-_:J=GT9h\206:t*S;uBVo;u9Pk<W5r";c6Llr`&nrs&Ahps&T/"!*&qrr)<\q<;]Yu<)lmr
+<)icq!*&ns!`W)srD`bpp/Llg#ZO`%<E3!s;H!Hl"B8B#<)`]o!`N&tr)<Spr`8hpqc*So"]\K"
+<)cls;u]hq;ZKen<W5tr<V]So<Vobn;u0Ji<W,no;uT\m;uTbr;?0Yo<<#r"<)Z`p;ZB_p;uBVl
+<W,tt=8H%u<rcA#=o__!=T)>!=Su>$>4Yns=T)A&>5_\)>QA"&>5qh*>lRt,:DHPq9i=DL76sd3
+9I_GC0Le#Z3B0i4k_&hcrdjuts*t&trI+]n"abQADJa4hD%1B&FE`%[KSkeRQC+27rh'CdSt)7:
+rg*YOQ2[*VR$jA2S"#t?T:c(R,FY!dP`h)eMi*@GKnbGCO-5p&UoLZ-]Yhe5cd^S#gYLcFiVVXa
+iSWJGf[\BpbK%H4\@&QBWMH5[S=5_*MhZe2Uki/T=B8F#<`E's;,R<h!_lTmr`'8+=B/C%;Gg:f
+;"d[`N/`mZOckonQC!u-S"-(BTqS6WVPgAmX0&M-Yd1UB[^WfX]=bkm^r""-`Q-'AbKJ/UcdC.h
+eCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@
+JcE@^J,~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlqZm3l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'=]
+E;aYYD1oa(H%1bOPk1+6P5^U8OS4k9P6I29Q'R`&rKo1)R[T_7S"-"+KS+o.L50*-VP0]VT:haD
+R$EhrO,f$RL5(kRPED&lOd)&nP5W'"]XtbcI("-EL&R/2O8t@=OT1ICP5gaFOoUXBOoUaEQ2d-M
+Qi<BNRJiNJRK&`PS,\rWS,JfTS,\o]S",t:R@9QCR/EBORK/iUSc>5[S,SiXS!of<S,A`TRK&WQ
+QN*<OR.QdIR$mc;rg3VOrg<bTrg=+[R$a;0R$X,)Q'M<3!gJt8r0@DNQBqH6rg*PMpm1lFqj@DM
+s-WeR#b%6OR[]e8S"9PMrLj1arhBCer1s+a!2fFes/5psri#gos/,[kri#jrri#jrri5ptoW%ni
+ri6"!rN-%$ql]n$ricF.ZMq61[2Gp1I<p'ZP.--kOeJ2"EHkG^=IWGs?WaP:rIa]ppOiHsrdk#u
+s*t&trI+]n!.4_Bs82lrNW1'=X/jU?R@U@KU8k8iR[')/X08q>_8*C_Z*LR7Ycd]%=Gr,tO-#Ke
+Pa.Q%R@9V9StD^NUnsrdWN*&%Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWA
+i8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc<dJcC<$]`3K~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlqHa1l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'?>
+?iF@8C6+!_E-M;.o6g.VrI"0_s*FQhq0`3j,(>#kJ:E*#JS&D$@q9+];0[M6H?XOUF`VSADJX*(
+B4kacrbh[OrGV^rs,RPJNJi[!L1kLIH?sr9HiSNhI/\NoIf=a(I!pHmI=6TqJ:E'!JbjosJc1,q
+Jc:8uK)gT%KDpK$K*?p\K7\`.rdt!!q1Sd#s+1<'JqEuQoRd!l"G28XJV!cO!/(9&qLSTs!J,e#
+J,XluI=?YDJ,auoIfb.MJ+nEkIK"]qIK"ZqJ,FchJ,XoqIfk4PJ:RWMs+(-#rdkE.KS+o1KS+r3
+qhG-+reCE-reUN0!/g`3rJLN2s,@#;qhtE3s,Hf4r/L]7s,I&=p5Ss0!0@)=rf@)@r/pr@plk`B
+qir%ZJT#ICC3tqZC3"fKC0Xq37S7o#9MnQ>LAcbrK_L,uK)U?"JH(-!If4]pHl7:SbKS5UdF-V!
+h;[S^mI0T9oCMVHp%J%LqXXXWs7H?a"SVTaq"aj_'DM4op%.bDn*]T0m-a?3o(MkUrnIJQrr;mF
+qY0RJl/U^Wf]0oAOH?>qJV/i3L5:S<J:2`rLl77RP*1f_MM[+@L4o8Q=Gr,tO-#KePa.Q%R@9V9
+StD^NUnsrdWN*&%Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWAi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc<dJcC<$]`3K~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlriZ>l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'=.
+6:4+.6U<e'8PDrXr_W#[n5B-^r)2u\r_iYk)DO!$0JP:;2*jJm4?P\h4ZPP`3'&uW2Dm<Jr]1$>
+qE+^Q$;F2e9hS,.5Yb0Ur_r_o!)rboqc3Vps&8np!)rkrs&/nsq,RGqs&B"sq,IAm!)ieps&B"s
+s&Attr`&hr"&r2u<;]Yq<)`Zn!E2tm<<-"t<W?"t;Z'Gr<)Z^n;uTbr;uT`#;c6Ll<)lrs<r,hq
+;ufqs<!$&u;uTbq;ZKep;u]ks<;onr<!$'!<Us,e;u0Jn<W?%s<W5to;u]bn;[??&;c6Om;H$Qo
+<W?#$;c6Ll<;fbn<<#qu<r>ts<rQ1u=T);%=BYT+!*T2$r`T5&s&],#r)s#&oND,pr`T5(rEK;,
+!*f2$s',J-r`^7C;GL"]:/FhX763b$1,:C00/,jS1HINn;>l.=K_L,uK)U?"JH(-!If4]pHiSNm
+D@LN'FE`"XJr#AKQC+/5r1F1aS!o_2r0@_WR$a;1R[]h<StDYSSg9kqR$Nu!O,]$RLk^V<M2[LY
+R@^4RYdV-Z`QHNVf@o!8hr*Jji[NgAh:gK1ccjGJ^UgkYY,\@mT:DC<P`L]TIscK`IqN+k>%(H1
+<)lmrr_a>);+seb<E3($=&i7$<Dual;"d[eMi<XVOHG]jQ'Rf*R[]k>T:r!TV5C/iWiW>*Yd(L?
+[C3TU]"G_j^VRe)`Q#s>b0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<gqu6NlrUTr=s+13_s*t~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@I`jUn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+P\t>UD/OZbG'nr?Pk(%5P5g[;OT1I:P5UUEPQ[8;QC!s;R/`TRRfAikKn4]+Kn`o?V50`VT:MUD
+R?s,$O8b(FLPCSHOckomOcu%/PPr2p]EYp(Q@!n0OSt76OT(CBP5gaAOoU^DQ2R!KR/<9QR$j?<
+RJ`NNRfSqGrgWnUs-s"V#b.?RR@'D1R$dc=s-`tXSG\rXSGeoWSFW-MR[a;F!h#FCrg*SNs-WhS
+!1NeQ&=T)WR[KV6S!oe6R@9P2R$[c=rgEeT!1EhRrL!kVQBmf$P`u'2pm1oErKdGM!13GGs-NYN
+!1EhRs-`kTr1!_Ts.01]!hZ-Yrh9=crhKFfq5+(frhfappo""f!2ognr29Omri#mrrMfaqri>[k
+s/H!ts/Z.#s/l(!s/ua5Z*LX?Za@*I[JdNPWfMRRG'K[gJ9d6YNM;>-JlGjC=^#-7Xg##,K_L2s
+K_g?#K)^E#JH(-!If4ZrI!bgLruUmmXg>:.StDmNTVo#mU7@L7WNNS7]Y_7dZEga;YOnssN)kt"
+OHPflQ'[l+S"-(ATV8-VV5L8lWiW>+Yd(OA[^N]V]=bhl^r!t,`Q$!@b0/&TcdC.heCE.%f\5'7
+h;-uHi8WeWjQ>Ufkiq?sm-O--mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEC_J,~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@e&sVn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+P[@a'?!q>jBPqm=rHn*_oR$Oal?i>Ss*aorrdXru)Im2^A7]=K:jdS6G^":RFE)8<D/F$&Bk1dd
+rbVpYDf'E3Df9TTrf7;EN/D7kCM\(jH2r<kI/eQjHi\YCrdFfqs*aop$[mJPIXZftIsup!Jc:2s
+JHC@QJGOisK)UE&K`?])K`$K%K(sutK)(&sK`?])K`-Q&JcLAnJcUFSrdk'#s+(<)JUrE*rdt#u
+qLSp&J:N)tIt%BHrdarss+'urn9tLgIXZcrrdOfqrdacns*jut"bD2SJUrFPJcC?$KD^E&KE$Z&
+L&d#-L&d#-M#N81MZ/J2MZ/P5MunutN;SV5N;eh2N;\_9N;\b9Nqn\1NrP1<NrP.?OSt==P5:CB
+PkUF]N.#Y]C2/9WDJF3FEd).]B15F<9h\DZL4t?ZK_L2sK_g?#K)^E#JH(-!If4[-I!a/cdad"*
+i8s4jn*oo>o^qhUp&t'\oCDGNo)A7\oDnR`p&Oj`q#C*gp(6lfnaGo6mHj3-n+$#Cq"t'Fs"46J
+qt^$ZnE]8thV6W0cHF#+P*M2fLP(J8Jqo8=Kn4Z$LPq+POckcaMMm:Eo7R(%<fW6&P*;,qQ^F21
+S=Z=FTqeE[Vl6VqXKA\1Z*UgG[^`l[]Y2(q_SX71`lQ9EbK\>YdF$Fme^i@)g=k?<h;@/KioB([
+k2tjjl07L"m-X6/n*fc9rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#s1JA^~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@I`jUn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+PX@f+5sRe,:/Fgb;".?N;ZB\q<<#no;XdQ_;Z0H41+t461,CdE5X.Cq4$#Pe4#o;_2`<QQ2)I-N
+48h5?3t4;64&8UF9MJ/Q0g83+qc!/eqc3Yq!)rho!)rkr!`Murr`';)<E3!t<E<+!<)`Tl!)rkp
+qGRAnr`/qs%olS.<E3!u<)Z[n;cH^p;uK\q;ZKeo<W?+u<<Q?%;c6Nh;[$#r;c?Xor`&nrs&'5'
+<)cju<E<.#<E)rs<W5qt<W5r"<E)mqrDWbqr_rkrr`&ntr_rhr"'&8u<;ohq<;fhl<;ohp<;ont
+<<#tu<;oo"<E)rn;ZK_p;uT_s<E/rrs&/krr`&tu;uTYp<;ohn<<#qu<r5ns<rQ1t=T);$=Su>'
+=]kN'q,mJrs'#"sr)iu%"Bo#5>$Lr1!*f8&oihK#;,@0c'MqRq76<k$2D-.7/20IM1HINn:f7.D
+pP&HsqLed!s+1-!s*t&trI#6)HZ4%LG^P'rMia3kS"?:Hrh9RiSt)7:Qi33MQi<@+R[]e:SXlCF
+StDUGS!fV.PE:f`M26q@KnbGCO-5p&V5gc-]>;J0cdUIugYL`DiV_[kiSWJGg"+Qrai2'-\$N9<
+Vk]oUS!TA%N/*%7H?XIMDJNus=BSg0<)Z[l;c6Ro;Gp:br)Eu'<`W4";Gg<`:]HASNfT9bPE_?!
+R$jG6St;UKUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GP
+j5]4_k3(sml0@X%mI'E2n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$]`3K~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM&GCiYH<H%1qRPjjn3P5g[;O8tF9P5^[FPlI!KQN!3NR/WL"R[KV#JU`9(L1">bUS+<SSt2FA
+R$<eqNK8mOL5(hSOcblkPEc'1rOiNM]t(V5Tm_QRNr4t4OSt:AP5^XFOo(=APl6mHQ3!8:qj@GQ
+r0[YUR@9QBRerQUR[KWCRfJoRRfo7NR@'EAR/EBORK/iUSH,8\SHk[SS",t<S"0/@r0mYR!gf4=
+rg+@eR@0M4R@0P5R@0P7S"#k9S",t:RJiTRRK&ZRRJrZSR/iWRR0o=JQ^3r&Pa%K!Q2[*LQi!'K
+Q2R!OQ^F/,Qi!'MQ^3s:Qi<BKRJiTQS,\o]S=Q7DT:hkUU&UkeU]%"gV>d@lV>I.iVuN^kVZE`o
+rM]aos/,amrhomtW2TWnr2T^rrMfjuor8"mriH.%poaV"!O/j.ZN.B3[K!]7[iDo[UkX2?Fb.;f
+IX.!cM32@sLfL.@=^#-7Xg,(sL&H]$KE$Q'Jc1-!J,ausIK+\NruJPLX0SIeUS+-QZDXUnQ^=DI
+Z*_!Y^U1;N[BH^:or_VZN/`mZOckonQC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/
+`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Eg
+s8)Wirqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM&7?"7l/CiF_!Hgc@SHi8?XHh_tII=?WpIXbp;?X[JU:f)OdH$FRVFEMYEDf'?,CM.9kASl=%
+D/O3/E,TZ6NfK0]Nf8jQEIVkJrHe9dr-\EjrdOfnrd>-&It)oqIXm!#J:R<D!J5n$K)L<%K`6W(
+K`$H&K(aisK)1-!KE?j\K`6T(K`$JjK)U?$K)U<(Jq8K*KDpK"Jbjs"JUi:JIft:QJ:N4KJGjs$
+J:E&tIt.BF!.XrrrdXrsrI4frrI=fss*t#srI=irs*k-$JUi=JK)L?#K`?Z,KS>/9pkAd(rJ:K1
+r/(K2qhkE3s,6r9rf$f6rf$c7pl#96N/[[orf6l8rJgl=rf6r<r/Lf=OT(CBOoU^COo^c2rKI2F
+!1*SKrK\@`Mfs#TBl]>[CMIjHE,ST]C.EVr:/"M[L55,LrIk$"s+:9%rIFots*jrqs*P7,gYUuS
+m-jK8oCV_Kr:^0_s7?9]s7?9_#kR]]p%J.Sq"aj_$2=/ep%.bDn*]TBlj)tInalJMqu5CN1B.4J
+q=s[Smcifkgt:0(c-")Fs43HuOHPEPLk^J8NeW:AI=?j+MiNj^Oc>6UM2$\<on6Y0N/`mZOckon
+QC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&I
+iSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Egs8)Wirqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM%p5sdq19M\O^;"7EV;?0Sj;?0Yo;ufko;XdQ_;ZBTI0eb771,1^D6U*at4?G\h3]]8]3&`cS
+2Dm<P3]T2^3]fDa4?H>69MA)Q9h[Z?rDNJjs&8tsqGd>lr_reo$r^,);c?Rm<)lpt<)rWk"]\N%
+<)cfq;Ya5k<;ol$<)lpt;cN`r#uji$;c?Xo;GpHl<!6-!<)los<<-)!<W?)%<E)mrq,7>m;,[?k
+"&r9#<;oeq;Zg!"<E/rt"B8<!<)rlr"BAB!<)rWk!*/qrr_reqs&8qs!)rhq!``3"qG[GmrDWYo
+r`/ttr_j##<E<+"<)iiqrD`\nrDWbsr_rhp##eK$<`N*urDNbs;cEWoqc3Yqr`/qus&]5&r`9)%
+r`9/'=]tW*rE9&#!*T8&q-!`$qcNo&qH<_u#$G,6>?Y37r*05+qHEYur`gFK>?=Wr9h\;\77K[*
+76WU[1-7'W7Q<1b3E&dPm=kLlqLeg"s+1-!s*t&trdFfo(41O`M2mgeS"?:HU8"EWTq7dDR@'>,
+rg*nXR@0M4S=H.Arh'4^DOd/`QB[PnNJiXLL4t>:M2[O\R\-FVYdV0[`lcZXf@ep7hr!ANiSrhT
+i838Cf[S6i`koI"['6U0UnO?KQ^!\oMM?\1H$44HChdWqZ#X#N=]\X'<Dl^l<`)go:eaed<E<+$
+<`W4$<Dualoh\tQN/`mZOckonQC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/`Q-'A
+bKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Egs8)Wi
+rqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymp#5Im-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#gFFTg)I>7Q^nWWa2!0Qo8s,m#<rK@AKQ'IZ$rg*VPrg=gcK7ST+Knip%VP9`WTV.gER?s+u
+OH#0VLPCqTP*5^+!0mGqrk&BD^n#q+rJpf:q2kK9rfd2A!L&cIQ2[*KPlR3MRJiTRRJWHQRfJuX
+RfJuRRfo7NS",uIS,o+Jrg<bRrgEeT"IYaLS"0GJs.07^T(nfWS"-#FS,8ZSRJ`EOR/`TQRKK%L
+S!s8F".PgNS,8WTS!s2ArgN\Os-O"WQBd`$Q'M?7rg3DGs-NbQrg3PK!13\Ns-E_QrL!YSrL*VQ
+qO7VYSt;RIr1X.brhKIgs/#[ks.o^mqPO=lrhfgrVl0Nk!2odos/5jns/5^ls/Gdnri?(!ri?(!
+rN#ptri?(#riQ4'!3c@(r3$7-ZEppFrjDd7s0r$<!4i*?)lfB[HZjOkc&-gkXODQh:ksj)StfFl
+?<O83YO@5DL&H]&KE$Q&Jc:3"J,ausI>RtGo[U"HbG1W#Wh$2pWi)P]R[C+Y['[Tb\$NBGYcb13
+or_DTN/is\P*2&pQ^F21S"6.DTq\?ZVl6SpXKAY0Z*UgF[^`l[]Y2(q_8=.0`lQ6DbKS8Xd*^:k
+e^i@)g"P3:h;@/KioB([k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#:*hqYU0hr;HTcrdk*#
+s1SG_~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymp#5Im-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#g@;1%$DKbu*m<nPQrI!mWq0`3js*c,(@:3MSA7\S[I<g*^G^":OEc>o5D/3j"ARoXqD/O3.
+DuFYTNrP.FNfAsSPC%.fr-J9fs*F]lrd=TkrdFiqrd=Zm"b(rMI=?\DJG+QlK(josK_g<$K`$K&
+KE?dXK):0#K`$N(K_pE%KEHjYK7iNB#D%JYJV&K+KDpK&Jbjs"K7\^SJH16!IfP#qJbjm$JUi9#
+J:N.KIK4lrIf4`rIeeKlJGt&uIf4cqIfFm$J:W9'JqO#RrIas"",2JaL\Z](LB*/0M>W82M>`>1
+MZA_8MZA_6MZA_5NV/54NJrjVr/U]7s,R)>s,R,?s,d/>s,[5Crf[5Drf[;Fs-*MIrfmGJrg*SL
+r0I>K)ifSlDJO$6So\X\KWAd06Y:(%H$`7[;,2k%L$scoL&H]&KE$Q&Jc:3"J,ausI1,&tlgF95
+oC_eMp\4X[!ql3Xqt'gZ"SMK^p\4R[rq?Wjo^hS@n*^2A#jq'Lo(;\Pqu5CN2>m=Gp\".HlfR6a
+gXaj!bfRoC^q[t&WKEC>MM$P?Jr#>?L4k),JV]5EO-,QaN/NOLKnG$NKNO.kNfT9bP*D5uR$jG5
+SXuLJU84W`W2ZeuXfen5Za@-K\@K5a]t_A!_SjF5aN2NIbg+P]dF-Opf%8R-g=tH>hr*GPj5]4_
+k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfrqZTjqtpBjrVc?eJcC<$^&NT~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymof)Gm-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#g6:"(8ohb6WpJUufqbmGmrD`eqr)2u\*)]Wg0eb::0JbRN5X.@m4$5Ve3]]5]2`EWR2)Y=n
+!BW@@3t4;J:JFMU9MJ2S8Pi8`r_iDfr)ESo!*&nq!E)kq<!#ur;tEri;cH`q<<-"t;ZK_j;u]hq
+<<-"t;Zg!!<E/rrs&9%u;H!3fqc3Ys!*/tsqG[Dlr_rhr"BAK'<E/oq!EE2!<!$&u;u'Am;tO&g
+<W,ns;uTbr;t*`d;uBMo;cN]qr`&nrs&9#"<W,ns;ZTitr`&hprDWet<;]Ys<)lq!qGdDl!*&bo
+s&9#!<rQ2#<WQ9(r`9)%r`B,%!*T2&rE0,&r`95)=]nj/qH<c#rE9,'s&o;(qcO/->?kB9>$G50
+>QS,5>Q.h$>Q7t-?2n4N?!1-':J=P\=@P_I6<H?0-o!e67R]9m3]U)8;=B8;L&H]&KE$Q&Jc:3"
+J,ausI0PIdP*VQ-U&C_mUnaWUSXZ(9R$[`<#+:pLS=Q4Brh'4^ELWD`Q'7;iMi!7FKnY8:MN*^^
+R\6OYYdM*Y`llc[f@o$:hr!ANio8qUi8*2Bf@/$d_nWdjZ)t"%U7Id@P`h)cLP(&%G]e"DCM@Hn
+@q0._Am&5G=&W!r;H-Um<)?Ii:0(@r<E3+$<``:!;,L-^:frX7NfT9bP*D5uR$jG5SXuLJU84W`
+W2ZeuXfen5Za@-K\@K5a]t_A!_SjF5aN2NIbg+P]dF-Opf%8R-g=tH>hr*GPj5]4_k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cNfrqZTjqtpBjrVc?eJcC<$^&NT~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH?1.+Hm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYW5C34cQOd24.Pjjn5P5g[DO8t@:OT1I9P5^[FPQ7!IQ78/fR>Q`PItNE.?<sD(TVA-NT:;78
+Q][DiNf&^LP*2#lPEV8rPEV5urk8<D$+QD6H%M$9NK&tqO8=t8OTCW/r/q)EP5^XHPa.O3Q3!8;
+rg<bTrL<YP!h5XJrgWtXrgWtXrg`tWq4%GSr0mYRs-itW".GaNSGf#XScYOTSbnoXSXfGDs-ihQ
+rKmPOs-`hSrL<kWrga"Zs-s1^S"#lGRg,CPS=5k7Rf8`TRf]%JRf/WYS!fY2QBmg6QMd*KQN*9P
+R$R];rKmSOrg*MLs-WeRrL3\QrgNhU"e;'OSXlAOTDYD_UAgqfV#I4gVZ!FmW;`^pW;idqVuWap
+VZ3RmVu`fnrhoOi!3,ans/Z.!q5XLsrN#q!s/l:'riZ=)r3-.)"0o/=[/IE3\,X#=\feVr]">SS
+Q[X:&Gam?:HBP"qNd>M?NEDUC>$5-6X0/YlLAlo+K`$K%K)^E$JH(-!IfFhTruq@=s6HkoYGIka
+YFqquXJMbfS"$4VZa70[]X+lKZ`^C6or_VYN/WdXOckonQ'[l,S"-(BTV8-VVPgAmX0&M-Yd1UB
+[^WfX]=bkm^r""-`Q-'AbKJ/UcdC1ieCE1&g"P39h;7&IiSrnYjlY^gkiqBum-O--n*fc8nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEIaJ,~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH?gd=Jm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYW,?ta@sH@1*eHg?(OHi8?XHhi'hI3<06@p`_V@o-!LH[0m\F`qhGE,f`3CMRTrASl:%Df'Fj
+E!p]HO,o<]Mi)V7CiTE!!.+Qird+Qjs*X]ls*jurrd=Wls*b*!IXZcrrdaruon)pj!ec8]qh+m$
+rIb-'"G;;XK7s2Uqh5$'r.Fs$s+Bop!/(0#rdk!!rdt9(JV!]Mre(0$#(_AWJ:W6&pjiU!JUi9%
+Jc(&uIfOrgIfk4NJ:RQI!.afns+(-#!eQ&WrIY$$rIb3(K`6]"LAlu,M#E2+MZ/P6N;nh9N;\\7
+N;S\,N;nn8NrP+:Nr+n5O8tF@P5^[HPEPm.!gJt7rg!5Ds-NYN(lj/eD/3s;Ui1!hIsc'@;abCo
+H$`7[:eq"Dl\>Cmre13%rdt0$rdb#us*jur"n;*Tp%J+Vp]'pep&=RboCV_To`+Uap&Oj`q#:!l
+p%7hEn*]TBlj3%JnalGKq>:0Is#BrQq"OIPna,N%i8!#9da-+X`l#X-]t:lJ\rr;?N.lkBKntVC
+KnY/0It``=NKB<bN/NRML4k<SKO0OpN/is]P*;/rQ^F52S=Z@GTqeE\Vl6VrXf\e2ZEppH\%0&]
+]Y;.r_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*oi:o()DDo`"O`
+p&Ojcq#C0hqY^6hr;HTcrdk*#s1\M`~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH>41eEm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYVp92//YoMG3XpepudqbmGmr`&nrqblo\"#DYc0)dU82D[Wa4[(ti4Zb\c3BR4!s#'j7rAsp>
+s#^fR4?QD79M8#P9/o77;H$Nn;Y3oc<!63#<E)rs;Zfut<)iiq!`Drqr)<Ypr`&nt"&r2t<;fes
+<;'8g<;ont<<#nq<<H3!;cN]op/LujrDrnss&J\is&9;)<`W1!;c?Xr<V08j<W?"u;uTbp<<?-"
+<;onq<<#ns<;ohn<<#nm;uouurDNYoq,RAm!*/tsr_r_orDW\ps&K(us&8qsrDi\nr_rhrq,RAo
+s&]5$#$4o/='&L+r`B,%!*T5'r)j5+='&L+=]kQ(r*',)r`T&#!*fD*s&fJ.>[1K:rEK8+r`f>)
+qcj)*ra#P1+CAG\>[1E1:ea_[;-ZRY4$c%e2(L%90LnPj1H@Hm:JpG4re:?)r.G!#s+10"s*t&t
+s*Y!;SY;eUU^<fjT:VRBR[KP1rL*\S".PjPT)PA^SgKtrR?j)#O,]'SLk^Y<LP^qLP*_`5VQ6u1
+]YMP1dF?e$gYUfEi;V^8i'H5Ug=Y!'bJq?0\$E09VP9]PR$EkrNJW@?I<g!WE,BB)B4YU`@U``1
+B3JDA=&`1";cHXn<)HOj:/Y(m<`N4&r`0,";Gg<a:gT$<N/is]P*;/rQ^F52S=Z@GTqeE\Vl6Vr
+Xf\e2ZEppH\%0&]]Y;.r_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjjl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1\M`~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq1!toCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcNm^E-QeeQ^3r&Q26a7PPp[DOoLOBO8"b9OnOt;PQ-mIQ2['oQ^EV_JV/T1LKp^PU7n<PSXGq5
+QBRDiNf&XJL6@[]P`q;qrf[>KrOr6D#J#0,G(5C0NrG%7O8=t8Oo1C=P67&7QBqK9!1<bR!1NhT
+!1N_QqO@PVr1!q[S=Q4@SGo)ZSH##XS,A]TS,SrSSc>8^T:Z%QrL<nZSG&EPRerNQQirbCR$jB@
+RK/iRSGJcVSGo#WS,f,YSH#&fR[]e:S!oe6R@9V5R@*i:q3M2NQ^=*;Qi39QQ^3s8QN<JAo:#]K
+"ItsNS=]\O!207`!2BFe!2TUjr2'Ilql'Omri#:`ri#gori#Rks/Z.!rN#[oriQ1&r3-.)#-Y88
+Z*CXBrNuX6rjO;d]">Ve]Xthh]tU\INdH%oMmUQRHBG(jLj)]sP?=<N=]es3WiiP/reC3'p4iR#
+re16&s+:9%rIFot!IfHWs!.O@qtpEn\u`-EU7@gLVlm2"Vl#uTS?&j#[)0\gZa.$EXfqB"?Ajc%
+O,oEdPEhH$R$sM8StD^NUnjlcWN*#$Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1
+gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$^]/f~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq0gooCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcNRLA86%-jF$WIrI!pXq0X63An#+WA7fCLI!^0bG]e.MF)c2:Chmg#B4YXkD/T>k"`SC!E,gp;
+NsC](MdVuhEd%G-s*FTird+Qjrd=ZmrdFiqrd=TkrdOlq"FbiMJ:RTLp4E$ks+LE+!/1?(qh5!%
+re(E,JqAZ/rIY*'r.Y0(rIb-'"GMM^K7icIre(3%rdk$"rIY0'JV!`NrIY*%re(0$!.k$!!J,jt
+Jc:0&JUi6"JG+KmJH(,uJ,k)uIfFotJH(,uJGjs"J:W<(pOiL!rdt3(r.Y!%rJ19+s,$T0repc7
+rJTlu!0-Z3rK$f:rK7)BrfdAHr0%,Frg!;F.[QHfQ^F2.R@0M3R[TFtHZ*b9H&S/-Bl\cKBO!en
+Db>>&:/+P[L5(D9reC3'p4iR#re16&s+:9%rIFot!e,Rjrq?fqq=saZp\+=Rp%7nRp&4Rap\Xab
+pBL?aoC;>=mf)PZmI'K6o_/(Vr;PRQ4T50Pp[n%HmcrrohV6Z3d*9_S`PTF)]Xt_a\_b`$P*;,d
+Jq\u9Mi*7DKn"W(M2[FSPELrbMi!7DK7iiM?Ajc%O,oEdPEhH$R$sM8StD^NUnjlcWN*#$Y->1:
+ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?&>
+o(2MGrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$^]/f~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq0gooCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcN"&8PW#Ynkf*Yr_ibprDNGgqbmGmrD`eqr)3&^%ko^j0JP=;2+0Yo4Zb_f4T.;F2E*TR2Dm>i
+3r_8A4T.>D:JOSWr_!GJ7SQc\<)iipo2GQd!`N&tr_r_oqG[>ls&8qss&B%ur_ir!<E3!tpJ^of
+s&K"s!*9%ur`&kqr`&nrq,IAor)NetrD`Ggr`&kts&B/#;cQlj<!ZK'<Dudo;cH`j<V]Vm;u9Po
+;u0Jn<<cE$;c6Ll<;BMq<)Z`n<;oet<)lrm<!$'!<;oer<;T\k;uoosrD`hur`&r!qcEeupfIGs
+pK7W$='&L+qH<i%r`KD.>?b96=oDP%>Q7n,>6J,4>$G80>6A&5>[753r`]8)s'5S0s'@$Z?sd;K
+?<piC>$"Nq:/"DZ>=M"B5sR1T+t5T-84GHm3B0o5;,R=IpkSQtre:?)rIb-%s+1-!s*kT/IA3U9
+V5C,dUS4<OSXZ(9r0mVS/tAK(T:hgKSt2@>R$EktNf8jOLPCM:Ll.1QPa\2=W3!84]YVY4dact'
+gtprHrSde6-JmM1f@8-f_nN[gYcF[sTU_C7PE1]\L4au&GBIqEChdWqA7K+Yra?pYHZ<7m>Zk*,
+<)Z^p;c6Rl;,9nf<EE1$=&r=%<DudkoMAkPN/`mZOckonQC+&.S"6.CTq\?YVPgDnX0&P/Z*L^D
+[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(g"P39h;7)JiSrnYjlYail07L!m-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)Wirqu]moDX=@JcELbJ,~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`B_1fcnaZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+OC2O4Fa8\+R$X/*QBh91nWWm6s,d;Cr/^]9rK6f:rK@;IQ'M?7)NBH$I=m90?XBP*Tq@sKSXGq5
+QBI>gMM[%Brf[;F"dP=9Pa%L4^&P_M]l^])I#!cDrJ^f;qN(K7qiUi?qND/KQ'R`&Q^F0>R/i]S
+Rf]+LSGo#WS,o+Lq4.SYSY#hO!1`tX"J20SSXf\K!1NkUrg`hUr1<bUoU>iLrL*SNs-`eRrLEnW
+!1`qWs.97]rg`nWs.'+[rgX=bS=>t9R@9S4R$dl>rg*PMrg*PMrL!PM!LT;SQiWP@rg3YPs-`_Q
+qO7GRrL<kYrLj(^!2BCdrhK^oVP^8gVY[4fW;WXnW;*:hW;`^oW:m4kX8T$uX8B!tXoGO*Xfei'
+YQ(j)Z2_*4Za@-J[f3`=\@K5a]_oGe^;%J!_5j2\GBS+bXGhLOY.]jZKlM?:=dl9m=^>11Xfnqt
+L\Z](L&Zi)KE$Q'Jc1*#Isuj/rrE#pq]GjYXhq?<TV&HbZEL7*VOjHPV67/3]#;1eZ*Ua=XK_B#
+=c&&qNK90aP*D5uR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uq
+f%8R.g>(N?hr*GPj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$
+_#Jo~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`A+T9^naZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+OB#CjBP_d=IH5eJHi8?YHhr+0B4G:T@q9.J:jdS8GBS+OEcZ2=D/<s$B4YXlDZ4SSE#!;2E,gnu
+O,o<]N)kaKDg$GQH$O^^r-SHirHnNkrdFcps*aloqgJHmrd=isJ:RTLpO`<q!JH+&K`6])KE-Z$
+KE-Z(K`6T(K`-Q&K`-W(K`?](K`?c+K`?\tK)L?%K)L9"K)L<'Jq8LNK):0#K`-PuK)^H'K)U?"
+K)^B&J:[ZL!.k#s!.Oosrdauts*t*!rdFs!J:N.HJGk$!K(afsK`-N'K`$Q%LAQc+M#W80L]E;-
+MZ8V5N;nh8N;nn/Mu\k7N;nn6NW>.=NW>.=OT(@FOHGZgOoCOBPQ-mIPPg[FQ2HsIQi<BPRK&`T
+S,]#YRi\)\LimTOCj1\YCMAN_F)k_n@Rj%8In`[7:54LWL%'lnLAlo,K`-Q'K)^E#J-(4LIfB0C
+q#:$fpAadep@\+UpAam`q#:"#p%7hEn*]T0m-X60nacAIq>:-Is$-JZq"OIPnF#W*jPS_Ee^Dde
+aMu08^qRIm\@B)\]=H.XOe._nL4bG?N/ECGKn+`*Ko1kMOctibMi3CGKSK/Q=c&&qNK90aP*D5u
+R$jG6SXuLJUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GP
+j5]4_k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$_#Jo~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`A+T9^naZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+O@;]49hnJ\;=[QX;#jMn;uBPh;>X5k;uK\q;u9Jb;?&?`0.en51,UjQ5Wq7m4$5Ma3]K2!2ZGW4
+3r_8W4?GYe4&8UH9M8#Q-:1I(;H-Uo;c6Na;uKYr;c<QmrD`Pjs&9/#;GpFn<W5qt;uTbr<W?%n
+;u9Pn<W5r"<E<+!r`/ttr_reqs&8\l!*/qts&K(upJV;r<E)st<E</u<<6-#pf.8l#ZOf';c?Rl
+;cEWpr`9%urD`hsrDWYo!)rGfrDibos&Akq!E;tp;u]f!;cHasp/Lujs&/nsrDihts&Anrr)<f!
+<`W4#pf@2lrE0&%qcNl$!*B/%oN;6!>?_#/!*]8(s',V0>[.22!*oM-rEB2)s'5S.r`]>+s'5S0
+$=7(H?smDN?sd5IrE]V1<)$+^r_F7u6q'F25;k&I3\E*U6o?e]3)WXO;=KA:LAlo,K`-Q'K)^E#
+J.-pVI]'*@VPBiWT:VSPS,\rWS,]#YSH,8[TDtK0SXPt5P`h,fMi!7FL4tA=MiNseS=laYY-YXN
+_T:!Ne^rL/h;7&gi?mL?hqd&>f$_d^^q-tZXf8+iSXPk.OGo$NK7A8mG&qY@C2%?nAH$*<@O#Dp
+ARoga=C>96<Dldp<)ZXl:f:+c;cHe!='/L(<E)jo:f6m^=c&&qNK90aP*D5uR$jG6SXuLJUSO`a
+W2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GPj5]4_k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$_#Jo~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBls8rBl0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+OC)U=GC>@:R@'A.Q^3r&qNUK5rK@2C!0I,>q2kQ;p6,E=s-+OhQAgQLJ:iW2@:5q.T:hgKSXZ(4
+PECreN/<@HPl?jJP*D10PQ@&8rk8?E"hf>HTR2:iNrY4>N<#"7O8=t9OoCO>P6[>;QBml(R$dl@
+!1NkUrgWtZrgX"[SGJfQScPCRrLNnYrgj(Zr1!\Uq47ARrLNtY"IkpOS"0DGs-s4]R[TY4rg<YP
+s-ikT!h>aLrg`qXr1<qYrga%\rLF1bSXc4>S",uGRfAfUR/**KQN!6NQiibFR$[f>s-`nS!LK2Q
+R0K%HR[T_8SGf#VSGo#XS-GOSSXlCGT`(SaUACYbV#I4hVZ*LnVZ3RmW:?e_W;`[qW2]Kjs/Z.!
+s/Z(!s/l4&"L,/9Ycn&1s0;U0&[AXJZa@-J[^NZT\[oDc]tM/Z^]2+L_'6b7a2uN+RsoX)H*4'#
+H^(8HKoAr`M,RNFVcm8/=KAR-YOdSIL\li*L&Zi)KE$Q'Jc:3"J!9m4rVZO:r;HTos0Sr4VP9Wb
+TsV#(Vl-5^TVSWl['[`e['R'HYHG/&Y?m*FN/is\P*;/rQ^F52S=Z@GTqeE\Vl6VrXfek3ZEpsI
+\%0)^]Y;.r_Sa@3a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*oi:o()DD
+o`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1nYb~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBlrEB:l0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+OB5^uC2eBFiI(<FrI"!Zqg9;qARSqUARnY9I!g0`GBS(MF)Pr5Chmg"B4h-^s)&EfDfBZ8EH7)#
+O,f6Z?#tI3Fo?UeH$]12rI"TmrdOip!.=WkrdOfo"b2&RJV&IIJcgXYK7j#Rqh5'(L&$B%L&HZ+
+K7npVKDgK&L&-K$L&Zi+KDgB%KDU9!KE$Q&Jc13#KE$T)KDgE%K`6W(KE?dZK_pE$Jd[-]JqJ`/
+JqAQ*JqNuQrdb'$rdk'!r."]rrI=fsrdXru!IoY!JHLFRJqEcMre19'!/1?(!/1?*r.b!%!/UW0
+!f2\iqMP60s,?u9mYq1*rf$c7qMtT:!07&>rfI&?!0[>Frf[5DrKIAKPa)-3rg*SNrg<_Rs-itW
+!1a%Zrgk:*TVA9DKQ1jED2a0gC34uoDf%sRCIUp@In`U49nn@VL%C,tL\li*L&Zi)KE$Q'Jc:3"
+IfT<Dq#:$bpAajepAXg^p_NW!p\+:OnaQ#8mHs9.mdTc=p@nF]rnm`CrqlNdp%%V?lf[Bgh:^E/
+ccsVR`P]O,]tCqd\@K2_]Y(rIbES0QNJW=JL6%:NKnb52J;/o>O,oNfNf/gQL4k;6on?_0N/WdX
+OHPfmQ'[l,S"-(BTV8-VVPgAmX0&P.Yd1UC[^WfY]=bkm^r"".`Q-'AbKS5Vd*^:jeCE1&g"P39
+h;7&IiSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEOcJ,~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBlr<<9l0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+O@D`3:/4^c;=[QZ;#jMl;uKVi;>X8k;uK\q;uBPf;&`Ch0JG+61,:dF69dXs4$5Yg4#o>_2`ETP
+2)Y:mrAtHN4$6;69M8#P/3ZEu;>jGp;c<*`s&9/#;GpFm;u9Ph;ZTirr_`br<V]Vo<W?%p;u0Jn
+<W5tt<<H9%<)iiss&8tsr`&nrp/D#lrDinurD`_o!*&qrs&Aqsr`9"ur`9"ts&K"ss&8nrr_iep
+r_rbqs&K2$<)`cq!EE+t;s[K`<<-"q;u]hp<<5urr_s,$<)lpt<)lrt<<#np<W5qt<W5th<Vo_s
+<E<,t<rZ1u<r,nr=92K*qH!]"=oDIp=TVc2>5h\)>5VV&>l.b(>5qh*>lS"8>$G39>[:ZB?XR:?
+@/s^7@3f5f?XR;O@Tlc.9MJ8c:IR]55taF$.5Et:0L\Gg2*!Wo;Gg<_M#2u)LAlo,K`-Q'K)^E$
+JH(*(VPU&^TV%gHqj^o^S=Q4BT:hjLT:VUDR[BA(OcPHYM2-k?KntSEO-H'(USk2t[(3rhb0JJd
+f@o$9hr*JPi8<DJgXt--ccO)<\?iB=VP9]PQ^!SkMM?e7I<g!XEGoZ.BP1mer*q*`A7]@dBPEHG
+>$5!/<E3!r<`E!r;Gp@f:fg\!<`W:&<E<'r;Gg9`;-o-=N/is\P*;/rQ^F52S=Z@GTqeE\Vl6Vr
+Xfek3ZEpsI\%0)^]Y;.r_Sa@3a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1nYb~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH>OLnFm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h/:
+@qp+3KpS6rRJrTRQNEJ<Q2Hm9PP^LEOcY\&O84n:OnOt:P73\@M1U51L4tIiV59sdTFd]cS=5e/
+P)kQZMMR%OPa%I2PQ@&8rk8<D"M:+sItR`]rf7#<!fi>'qN(N8rK7,Cp6,uNQ'R`&R$a;0R[]e:
+S=TYLs.01[qjmbY!hZ'Vr13n\rgj=bSt;RGT:Z%Qs.'%W!1`bRqORbZSt5kN!1j(YrgWkVs-j"W
+rg<hTR@4&CqjRYWS"'DIs.0%Yrgj%[!1itX#+_9SSXQ%;qjRPQs-WhQs-WePrKm\TR[KQ@RJiNN
+Rf/]USc,/WSc,&\StDXHrh04`rhB:bs.oXjrMKRlrh]apW2T3`qPaFl!iW)tpT"4nri6"!qlBe"
+ric@+!3uO/!42X/!4)U1s0Vg6s0abn\@K2_]Y2%n^VI\%_Sa:0`Q60FcdUFNVic@OG+,5'J9d<S
+RuX.A;iXm\TNbQ,>Z[u/ric'QqM>**r.b3)s+L?'s+16%rI=ltQi@*cr;QQor;HWos8=&>oY%H6
+ZD!k]WNrh1W2HVfU8"]k[C*Ta]!ScLZ*(8%Y?A#cN/`mZOckonQC+&.S"6.CTq\?ZVPgDnXKAY0
+Z*UdE[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9
+rpg-^o^r.U!quB_rV6Egs8)Wirqu]moDX=@JcERdJ,~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH=mk\Dm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h/.
+=CGiYFF8MqI.M^`I.)FZHl?R)?=RPWAl*l&H?j[XG'.nIEGfW/C1q9nBDHNHE=6fIO,o<]NJr(2
+DKP]#pNume!I]@bIK"]qI0>"KJ:W:EJcgXYK7j/V!/:E*qh5*+Kn]AV",2D^L&Qc(KDpQ(K)gT(
+L&?W#L&HZ(K)^K%K):3"Jd$^WJqJ`/r.P'%"GDJ^K7j)Trdt3(rIb-$s+:3&!eZ)Vre'or!e>iP
+rdXirrdOourIOlsr.=j!rIk3'rIk3'qh4s&rJ(*&s+pZ2rJLT4regK/n;R1&q2Y?5rfI&?!0[>F
+!gJn4rfdDJr07,Es-EYNrKmhXR[T_8S=Q8NT-Br%U8+Q^WN;>BI;Wk:JVT"uBl\cODL+`>CI_!B
+:/+\a:&]nIL%gH#M#E,,LAlo,K`-Q'JcLB#J,t/prq?Ngp\4C[pAt'`rqQKgr:p<d'(tnfnaGo5
+mHj6.n+#uApA"O`hu=l!r;-3^oC2,4kN1[Zg=Oj$cH=5J`59:&]t:hb\[oDc^&>YeaLR_%PEUiU
+KSb\JM2$b=JqJf7MiEd[Q&gl]Mi!1AoS$G$MN!OUO-,ThQ'Rf)R[]k>T:r!TV5C/iWiW>*Yd(O@
+[C3TU]"G_k^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13ds*t~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH=75JBm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h.t
+7nQKO:\mrZ;#4&h;Z9Vl;Ya2e;ZB\p;ufkn;YX*"0J>%51,C[C69mat3]fGdr]19E3&W]Q2`3Jl
+3WV<)r]:9G4$6;69`7Tl4\8LK;c?Xp;c?Rlp/:rjr)3_t;c6Llpf-uds&/kqpJh/m!*&qr"&r2u
+;u9Pn<W?%r<W?##<E<+"r)E\pq,@Gp<)clr<WH.s<<#ns<<#ks<;T\o<WH/!<WQ3"r)Nbrs&8nr
+qG[>l#$"W%;c?Xpr`/tts&8Ac!*0"t!EE+s;u]hp<=)W'<)cjt<)cjtqc*So$WL,,<`N*t;cQju
+<;ons<;0Am<rH%s<rZ5$<rQ+u<WH/!<rH,!=SPqu=BYT)oND/sr`T8)qcj#(qcj&'r`f>+r`]V4
+?!UcC?XI4=@K0g:A,g!_@:E_VA7fLY=Ahph93"bc7RfL,5rCbP-orq56oR"c3]L&9r_`EHqM>**
+r.b3)s+L?'s+16%rI>0'U7e0OSXl@Drgj%[=eD@[TqS-NSt2@=QB[PoNJiXLLPCJ:M2R@UQCFPC
+Wii\;]YVV2dF?b"gYL`Di8NYQhqm2Cf[\En`P8sjYcF[sTU_C6Oc>3PJq&/nG&qYAD/*ctAn>NN
+@fp7QAnV'V#\n'\>Zk92=&o6!$!'u(<)HLh:f^Qo<sDc-<E)mp;"RUf:l:3kO,oEdPEhH$R$sM8
+StD^NUnsrdWN*&%Y->1;ZaI6O\[oGe^V@V%`5Ta;aND]McHjkbdaZdtf@\d1gYL]Bi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$_>f#~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH?1.+Hm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h/9
+B5i'EMOU*(R[KTCR/`KSQBda5Pk1+7P5gXEOSk18OT1I9P5URdN.lk4KnY:g?_sQjTV%gIR[]Y.
+P*(``Mhd.QPEM/qr0.2JrOr3C"MoqBJroqlrJgl=rfHu;r/_)EP*(liP4k(>Pl@!KQiEEVR@9V7
+S=KMJrL<nZT)P;\T)G;\T)>5\T)>2_SXuCCrL="]S=Q4BpmqDUrgj(\!1j+Z!1j(YrgWnWrL3eU
+rg<bUrgN\Qr1*bWqO[_Xoq)2S%%NfVSXc1<S",t:R@3o="dtgJR@'B7RJrZTRfJuXSc,/YTDtJ]
+S-,=RT:c+U!29=brM04brh]Oir29RnrMKXop8@\arMfOkri?!ts/Z.#s/l=(s/uL.Z*F)1rj;[4
+4LV`/\[oDc]Y;+p^qmq,`Poj;aNDcRe(34.hVkZ3N-KPlNh_eeHEb/ELj!lAP#n?K=B]':=KAU/
+YHRPSr.t?-r.b3)s+L?'!ePuSrd^F:!WDrqqu?Wmrr)j=eulKeV4aQoY.:^8Vl?8`Tr5#s['die
+['R-JYcY12p9.Z&M2R=PO-#NfPa.T&R@B_;StMdPUnsufWiE/&YHY:<['mHR\\#Mg^VI_'`5Td<
+aihlPcHjnce'uq!f@\g2gtgiEi8N\Uj5oFckNM0plg4!*mdBQ4nF?MK!V>s_p&Facp\sseq>^<g
+qu6NlrUTr=s+13es*t~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH=RPSCm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h/1
+?=[eiG^fX?jF$fN!.+HfrI"*]r-TPuA7/_SA7\S6I!U$^GBS+MFDu/8D/3m#B4l1&DK#Mnrc&?f
+NfK0]NfK'\E,0NAq0Md^rd4cqI!kC2s*b0#IXZftJV!NHre(0&s+UK+qh>')!/:3$re:?)"+u8Z
+K`-Q'K`Zp]L&H]%K`Hf%KDpK%KD0rtKD:*$KnP0VK`-N'K`-N*JqJZ-qh5!%&qkmjK7ec.JqJZ,
+K7\]+It*!!rdb9(It*!!JV*]Krdt-%qLng$pk8[$!JZC.LAZi'M#N80MXl\qN;JV/Nr"h:OSk7@
+P5g^IP`q=+Pld8:Q2R!KQi3<OR4k"uS"-"?T:hmOU8+N\VlHi%Z*Ld#Lj3lUCjLk^Ch\W`F(o#b
+7rCtIGtq(2:egqDs+U'$r.t?-r.b3)s+L?'!ePuSrdY.Hp\4IWqY9s`r:gKjp@\%InF-AD$LI3L
+naZ5Ep\Ogei;Xu"r;-3^oC;87kiLaYg"4^"cHF>L`59=(^:_%f\@K2_]`,YF^E^P1_:toPQ]d8^
+LQdXYMi!1BJV/T0MMmOVQ'%&aMMd1BLP5AT>(h`jN/`m[P*2&pQ^F21S=Q7ETqeE[Vl6VqXKA\1
+Z*UgG\%&u\]Y;.r_SX71a2lBGbK\>YdF$Fme^i@)g=k?<hV[8MioB(\k2tjjl07O#m-X6/n*fc9
+rpg*]o`"O`pAamdq#:*hqYU0hr;HTbrdk*#s2+ed~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH=75JBm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h.u
+7nHHO;YX,\;#4&_;Ya2e;ZB\q<;fbn;Yj5m1GUX:r\5'D1-n,e4Zkeh4?GSa3]AuT2`3Jl3WM8@
+4:XG83]p26:/">S9L;0F;Z0Ms<)Z^n;YF&h<;f_t<)Z[nr)<Yrr)EGis&/kqp/M&l!`W)spJh)k
+!*&eps&T(uoi1oh!E<(s<WH.t;ufkr<!#ut<;ons<;T_j<W#hr<VTJm<;fbq<;fes;u9Mp<`T)t
+!*/kps&K(us&B%ur)3Spqc3Sos&B2#<)lmsrDWYos&KM-<)Z^p<`W4#<``<#<;]bn<rH%s<WH5#
+<rQ)"<)rour)Wr%=]kK$r`B2(=S#\p>5_V(>5DJ'>QA"*>5_\'>R=V>>[:ZB?XI2Kr*fV8s(!Nh
+A7K.]AnPdkCi+#n<_cCa:/Y"\7R]U44u+oE.6B4S7Q*+b3]L&9r_`9Dr.t?-r.b3)s+L?'!ePuS
+rdY$CTDkG\T3It\TV/!QU7n6OSt)7:Q'7>kN/EFHLP:D;MN!U\R@U(MX0B"B^Ve.;e(*(&g>(N@
+i8EMMhVR#>e^Daa_7R+[XJhqfS=,Y*Nf/XEIscKaF)c,8C2%<nAS(aK"(Z"VC&VlIC]A2oD0TPo
+>Zt60;cQb";c?Xn;G^.h<`W:%<`iC&<`Dso:f$d^>#:'6N/`m[P*2&pQ^F21S=Q7ETqeE[Vl6Vq
+XKA\1Z*UgG\%&u\]Y;.r_SX71a2lBGbK\>YdF$Fme^i@)g=k?<hV[8MioB(\k2tjjl07O#m-X6/
+n*fc9rpg*]o`"O`pAamdq#:*hqYU0hr;HTbrdk*#s2+ed~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`AFoB_naZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEK<a
+CNY#ZR[]h:S!s>Erg3hTQBmf$r06i;plY]@OHBC$qN(]>o9'QHMM?h:L51Ok?DXHmUAghbRKo.C
+PE(W^M22(o#aC[?Pa.MuQ^@]bs1A]P_ROf>NKB6_OHBC$rK-r<qiCuDP*(liP4k(>Q2R!RQ^F2/
+R[]h;qjm_Vs.01]%%Wu]T:_dKT:hgJTV27U!1s1^!MH(aT)Y>]SG\rWT)Y>]SGSiWT)G5[T)Y>_
+S=Q5LSH#)WSH#)YS,f&XRKB"KReiNPSH#/SScG>\T)5/ZScG>\S-b[TSXl7>S=H(<r0[VRR@4#B
+s-`nUs-`bQs-WnVS,Ji[StDXJTDkDaT:hgKrgs(\rh'7br1a1cqkX7es.oOg#,\;rW2HSmr29Rn
+q5="dr2KLlorA(oriQ1&#-Y88Z*L[ArNuU27C9J0[C3NQ\@K2^]Y(ql^;.P$_o0R7a2lHJcI17r
+gYUoMkNV96Sq;95MOpZ%HBtAYM4Ti-<g?gZT35?'>Hb*0Yck8"M>`80L\uo,L&Zi*KE$Q'JcC7k
+rrN,trql]nr;QQm*jr)OVk]odVmW_/Wi2YhU8G)u['mZd\[8ZKZ*(:5p94M!?AaZ"NfT9bPE_?!
+R$sM7StD^MUSOcbW2co#Y-5(8ZaI6N\[oGd^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$_Z,,~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`?h<jZnaZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEJmI
+@;'M#IK"]qIH>kRHi89dHi8?_Hi8=MAn5F[A7]@L:jdV9H?aXXFE)>AE,KH+C1h-tE,TZ8E,]i;
+EH?2]O,o<]N0T98E-ckXH@'u6HN8BjHhi'^I/n`pIJnTqIt7NL!.t3&qh"j#!JH+)K`?c)KEm3c
+KnY89Kn]>Ur.Y$$s+C3%s+UK+qM"s&qLed!re(6&s+C?'"+u2XKDC3"L%p?#K*$^YKDL6$L%U*!
+KDgK%K)pORpjiKuJV!]Ms+(B+K7nr3K7s5XrIjs"re(B-L51T`L\Q]*LB<9gM>W8*MZA_7Mu&D4
+NV\V3NVeb2O8P+<OoCLDPPg[AQ2?mHQiEHQRJrZTS1^A(T:qsQUSO`aWN<;.ZaI9R]=X/YEG]H7
+K8=VbG(?i9G%s?6DbGD&:/4Y^M>i80L%'rtM#N2-LAuu-K`6W(K)^E%J-#H@rqHNiq#:'hqY^.*
+q"a^Zp\"1LnaGo6mHj6.nF?)ApA"O`hu=htqYBjWo'Yl.jl,(Nf@/-nbK7cB_nj+%]t:kc\@K5a
+rk8HK^qfrcs2#nug6Ie_N/E@LMN<^RLk^P8K8,;DNK93eO,]$SLk^P8p4`O"?AaZ"NfT9bPE_?!
+R$sM7StD^MUSOcbW2co#Y-5(8ZaI6N\[oGd^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$_Z,,~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`?M!aYnaZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEJ='
+9288ZpJLNYpeg`_q,.#e##eDu;cH[or)3Gi&2Q!p/hf%:2`!cb5X%7l4?NO'+?MPB2`<NN3]]>a
+4?GYe4?>Pd:JOSV92&/K9i+_e<)``poi(fgs&8nrs&8kqr`/kqpeq2k;ta2h<<,to<!$'!<:j/l
+<`N,t<Vf\p;u]hr;ZKho<WQ0"r_s)";cH^p;cN`rs&92&=&r@'<`\rpr)<_u<E/Zj!E)kq<<#qu
+<;fbq<!$'#<W,ns<W#hm<<,ts<<#no<W5ts<<?,u<;ons;ZB\p<<$"t<;]bt='#<#pf7Mt<)cjt
+r)Nf!r`0#!rDWhu<`]*!s&f(ur`K)$!*]>(s&]8(oih2r!F/k+>5VV%>lS+/?Mn42@09tK@q>RM
+#\7LYB4u$qCi92i**H?>:/4Yb<C]J>6<ZW5/gDf-0h4Yk1c[Qq;c<Tln;7+"reLE+s+UK+re(6&
+s+13#qk3t_!2BIfs.W;^T:ML?Q^*_qNf/aMLPCJ:M2R@UQC=JBWNEJ7]>;M1d+$Xug"bE>hV[5I
+hV?l<f$i!g`4iaeY,\@nSXGb+O,JdHJ:2`fF)Z&7CM@G\AcQB=@fp:TBPRH\s(q[O%:aWc>?Y'.
+<Dumu<Durt;?9Tor`9G,='&L)<E)jo:f-j_s%m$ZMi<[WOHPflQ'[l,S"-(BTqS6WVPgAmX0&P.
+Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8
+nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEUeJ,~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\?1IFQn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEK9c
+F*W7mS=Q5MS,o+JrgEbQ"IGF?Q'M<4o98s4!KiKAO8G%=OoLUEOnY"XMM-S9KnbCiV59r\TUq^H
+S=5e.PECreMMQtNrK[DIs-E\OrOiEJ^14ftI>IZ[s,[)>rK$i;rfR/Bq31iC!1!MK"dbUER@9WE
+SGf#VSH#/YSdD$^TV%jLTV%mMq4I\[!2'1\$_<l]T:VXHSt2CBT)G5[T)P;ZT)P;ZSH#)PS-5:M
+S!ofBS,SrXScG>XScGD\T)PA]T`1PcSt2FBr13eVs-j(YR@=,CrL3bU#b%9RS"#h7R[a5D!LoVY
+Sc,/\T`(MWT`1Y^UAgqbV#I+iUo"$c"/VllVu<RbVuN^pVu3LlWVWXgX8f:"XoGO,YHY::ZMq3-
+[/RK5[f<i;])K>A]f<a@^VRe*`5]j=b0/&Ve(34.hrEk_l0Ia*Z_s.<G^>IFQ%F=GUn;h#=F?00
+=IZ*i>$Y@9XKA`+YOIDIM#N2.LAuu-K`-N*Jq8K'T`5&lrVlZqr;HTlrqHF7_6C5IU7e9a]!AN>
+Vl-DgVQI&.[C=)h['R-JYcP(2pTOV"=c&#pNK0'^P*;/sR$a>3SXuIIU84W_Vl?\tXfen5Za7'J
+\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncJFT
+o`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s24ke~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\>4M+Nn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEK$S
+ASZ70rdXors*a*YqKr*cqKr0go6^F`11k$(A7T:b;1*b;H?OISG&q_FDf9K.CM7?mEH,r:EH,r;
+EH6,\O,o<]NDGLJE-H_Xr-SHkr-SHird4Wl!.FcmpO3'jrI+Wn!IoY!JH1<$KDU9"KDgK'L&HZ.
+Knb>9L5,\]rIb6+KS9;Xre1<*s+LE)qLem'K_gE$K`$K%JcULUon3'ns+U?'re:B*!/:?(q1\d#
+s+C<(r.Y-'%>0=cJUrE)J:N3&JqJ^TK(sruK_^<%K`$Q#LAll,L]*&/L\Q])LB*2+MZA_5MZA_6
+Mtr>2Mtr;3NVeb3O8Y1;OoLUEPQ$gBQ2?mHQi<BPR1l$YS"-"@T:hmOUSOcdX08b5[C?.Hs198`
+P`($1Ci+KPHZ3_AJUV$L8mlI*8pPeY9i=cDreCE+n;7+"reLH,s+UK+rIY3(JUr@Mq#U?fr;-Bf
+s7d<&p@S"JnF,f5m-O-.nac;Ep\F^ci;Y,&r;-0[oC2,2k2Y@Sf[\BqbfRoD_ns1&]Xtbb\[f>b
+]tV4r_#;+I_BHq`S<B(sMM6hDOH#-RL4t>6L5CnLOH5ZgNf/dPLP1D7pP&X#=c&#pNK0'^P*;/s
+R$a>3SXuIIU84W_Vl?\tXfen5Za7'J\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s24ke~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\>4M+Nn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEJC*
+9M\G^pegWZohkE\qGI&ds&8qs!)rbmr_`\M!&"4*)DslI5Wq4k4$G\c3]T5Z2`<QN1cmf]4?P\d
+r]:3E:JOU_9*?\3:/Opa<;'8]<;fhs;ufqt<;]Yp<;ohr;ufkl<<#tn<<#r$<)lpt<;fes<;]br
+<;T\o<<#l#<)lpt;cNTor`/tt!`Mupr)3Spr)El$<E<1%r)E_rrDi_o!*/tss&/nsr)<Vnqc*Jl
+s&AttpJguhs&Aqs!E<(u<;ont<;BMp;c<Nls&B"us&8tuq,[Mqpf7Js;c?]n<rH)"<rGtt<W6%j
+=8Z2!=oV\)=oVS(=nc+s>PhS(=oDP$>Q%h,>l\41?iOO3@K0g=A7]?OAd2m]C2.O$DuO_UD]We#
+=B&*k9hn\Y77B7'5s%(U1-7*B7n5Nq3&sr:;Z0J^M>`80L])u-L&Zi)K*6dWJUjHlU0+1dV50l\
+TV%dER$Nu!NfApQLkg\;LPh%OPF.o8VQ6o-\A#i$c-t4pf\5-:hVR/Hh;$c<f$i$ka2,?oYH+Rr
+Ssu%0O,SmKJUVrjFE)58CMIKoAS#EMA,g'@AnYrWD#%ocDMVS"=B/F&;cH^s;cHao;GgCq='&L(
+<`o?$"B88r:f$g_s%ljTMN!OTO-,ThQ'Rf)R[]k>T:r!TV5C/iWiW>*Yd(O@[C3TU]"G_k^VRe*
+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<gqu6NkrU^#>s+13fs*t~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;knaQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu@:O%o
+I>48^SXc4@S=H(<Rf8`TR/`NQQ2m3JPk1+7P5gXEOSk1:O9(K,rfR#>*/fT(Iu&r;>AC(5TVA*O
+Ssu4:QB@;kN/NRLPa)*2!1*VNqn3,aTlYX9qN(]>pQ5E9qiLi?qNC]=!L/lJQ3!>>rg<eUS,JlV
+SbnoWSc55\TD>/UTDbDhT:VXHTV%jLTUu.T"J20TSt>qP!1s1\r1<kXs.'(X!M#_XSH#&YSGeoS
+RfT%KrgWtZrgj+\qk!eZ!1s.]r1F%^rLX%[s.91[!1`tVqjIMTrgWkV".PaKS,JcVS"0GJ!hQ$V
+pRqP[rLa.brh94`s.fCc"/DZgV>d4kUnspeVuEXeVu<RnVu<RoWVELfX8T."Xo>I(YHe&3s0MX1
+!4Dg77(9\:]">Se]Y2%o^qdh)`Q#s?b08/Ye(37/i8`q_l0I^'md]tSTS7];KUej$IsR6cOG\B`
+LPf&6S"s4l?!FJ6Xg%f.pPSa&reUQ/rJ(?+s+LB(s+16%U]1AorVl]oqucoss8W)tqZ$Nn+TLK-
+XK\OqUq=(BYH+Y%V59uiY-bRF^V[LfZEpg=YHIW'riT4WMi<XVOHG]jQ'Rf*S"-%@TV8-VV5L8l
+WiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--
+rpL'\nac8BoCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEXfJ,~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;cnaQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu<EWdE
+DK^M[JGt&uIf=c[I/J?eHMMpdI._jcHlZg0?smS[B22KUH[0j\G'7nHEH#c4ChdZsB5qm0qf*$b
+F,l9ANfK*,HtRA@rd=fpHi&3iHiJEjHiABmIJnQmI/n`mIK"]oIK+`sIt7KK!.t3&r.=m"re1<*
+rIb0)r.b3)re0irq1Ja#re1-%qLej$rdk-&rIXfsqh,!(K`6]'K_U6$K_U9!KE-Z(K_L0#K`-N&
+JcC<&K7s/T!/1?(s+LB*!/19(!euD_reCH,s+^Q/qM#!*reUQ/pP8j*M#N;4MY`52N;\\6Mu\e0
+N;eb3N;nn8Nr"h8OSt:BOHKO*!0d>FqN^rDs-NYN'UbDZS"-%@T:hpRUo(,lY->4?\%)FK,J1P!
+^;,qfGA_5=K8=bgBl]#OC19SBCIUsBHVI44:Pjj\LAlo$MYN&-M#N2.LAuu-K`6W(Jc^N"q>U3j
+qu6Hkq>^4(p\+:PoC;;<md9B.mdTf=p%J4XrSRW%r;-3]oC2/4k2kRYg=Od"c-")F_ns4']Xtbc
+\@B,^]tV7s^qmk]_A'iNZBLH6Mi!7SOc53ULkUP9Ko1ffNsUu6OH,6ULk^P8pP&U"</HNlNK90`
+P*D5tR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@
+hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZjr;6HjrVc?eJcC<$_uG5~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;`naQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu77U!F
+:Jga^oMG-VpJUfaqGI;lr`&nrr)+8,1bgX90etLA1I45h5!1qh4?>J`3rV)<2?Ylu3]fD%4:XD7
+4$6;6:.n;S/jN-.;ts>l;u]hn;t<o]<<?,u<;ons;ZKer;ts;l<V]Vl<W#hr<W?%r<<-"q<W#er
+;uK\s<)rcqs&B/#;cH]n;ZB\j<<H<&<E/rt!E2ts<Vo_q;ts;l;uT_r;uBVl;ZKeo<Vobj<<6&t
+qc*So!E<(s;uftt<<H9$;cN]os&B"us&9&"<`f0!r`/_o!`W)tr`0#!rDj#%<`W6"<!$'#<q9>l
+=Sl8#>5h\(=9)M">5DIs>5VV&>QJ,:rEfP4qdBtD@q9+]AS,RgBkhF"D/T>ks(rlpDK/i\:JOY\
+;cQ@X6om\#1GgI84"N'U7Q!"^3E&jSrDE<Hpkf!+reLH,s+UK+re(6&=Fm6BUnjiaV50l[TUq[A
+Q^*_qNJiXMLPCJ:M2RCWQ^aYDWNEJ8]YVS1d+$Y!g"bE>hV[2Hh:pZ8eBuO__nEOaXJhndS<oJ$
+N/31>J:)TbEc5f1C1mNW!+c";s'u@HB5)-uD/=%^D'<_H@9Qi;=B/=%<EE1";c6Lj;,pXu=&rC'
+=&r@$;Gp:gpJLod</HNlNK90`P*D5tR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7
+aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZj
+r;6HjrVc?eJcC<$_uG5~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH=mk\Dm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t?YFM*
+J;]tiSXlAOSc>5[RfJoVRK&ZSQNEJ<Q2Hm>PP:4@Oc]L%qiCi@OSt=>OrTI>KS,/:LgOMeVP9cZ
+St;ICS<T2!OH>H[M3X;&PlR-LQi"H!]UGFBL$as%O8G%<Oo(==P6-u6Q2R!KQi<BPRK&cUSGf#V
+S,f,ZScGDXT_k>cTV%mMTqJ(XTDtPbT:l%QrLX%[s.04]qk!_Vr1*eXr1*eU!1WtVqj[MRrLX%[
+r1<bWqk3n[rLX"Zs.04\q4%DQ".YpOS,/ZTS,\rWS,]#XSH>CTTD>/ZU&UkdT`_$aU7qR\#,@oe
+USFQXr1j4d#G\#gUSO`_VZ!FhW;ELjW;idmVuWglWqWRnXT#@%Xotr4Z*L\5Zi.6;[C3NQ\[f;_
+]=e-V4he_J_Sa@5aN;WMcdC4mg"kQEj6#RilK[^&nFQCmWLeQ`H*X0@ML0WKer>rTH;oo'R@gB[
+>?b:6Y-"r-YPX7SMY`2/M#W8.LAur-K`-N(Jq9g!#lXYtq>1!drVlKiqu6Wq+1\SYWMZDkYILd?
+X/MnmV5g]*[CNof^9k2Q[BQa:Y5#4"Y$[$CMi<[WOHPflQ'[l,S"-(BTqS6WVPgAmX0&P/Yd1UC
+[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:keCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcE[gJ,~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH<poAAm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t=']BQ
+Dg6hardautrdOlql$WJWpNlX^rd=Eds*Po&B4>:^AS+b9I=6?dH$4:PF*)A=D/=$'BP;C(E,fjr
+EW:%eF,l9AO,f3YG("7Lr-eEhrd4Zkrd4Tk!.Ffn"FY`KIX_0Bs*jin!IfOtJH(3#JcLH$K)L?#
+K`?c)KE['aKnY89rIt9)q1Sg'r.Y*&re1K.K7ei1r.P3*Kn]MZrIt0%rdt$"!JH+$K`-W$K^XWo
+KE-`)K_C*$KS+pUJcLGqK`6]*K`-W%LAuu,LA-K&M#W81M#<&.M#N8/MY`53N/R[orf-W1s,6Z2
+!0-l9r/^c;s,m;B!0R8DrKR2Epm1rHr0S4eR[]e:SY)RLUSXidWiWD/ZaI9P\G`l]\@fVoR?!#A
+D/G;eLNI?IK<0*6BNml@7X06/9heM\M2$_=re:6-qMP-+reUT0r.b6*!/1<'!J5n%qu-@-q=saZ
+p@\(LnaQ#8md9E0nF?,BpA"L^hu>)'r;$'Yna>`,jl,(Nf[S<obK.Z?_8*dt]=PP`\@K2`]tV:u
+_8=(f_u%=M_'.1QQB@;jMMR4OO,T!QL4k>:Ll7:SO-,]hNf/dOLP1D8pkA^#?\sYuN/is\P*;,q
+Q^F52S=Z@HTqeE\Vl6VrXfen4ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tE=hV[8M
+ioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2=qf~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH=mk\Dm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t7S-3G
+:/Xqe;,L6e;>3od;?'Pf;#sQlpeprcqGI;lrDWbqrDF@d1,1C:0f(^E6:!k"4$5Sd3]]8_3;tl:
+2&&,44$5Se4$#Gb4AJ[I9MA)Q5=eTD<;ohr<;TVg;ufqs<;9Gr<`N.!<;okt<;TV_<;]bn<!63#
+<)lum<W?%r<W?,"<Vfbr<W#eq;?Kco;cNQms&T/"!)rkrs&/qt<W5qt<W5r";cHasnPoEbs&Akq
+!E<"r<;KSr<)Zco;u]hs;u9Mp<`f9#r`9%us&&hqr`&eqr`0#!rD`eqs&T%ts&8tur)E\rrDir#
+<rQ+u<qKJm=SQ%u>5MIu>5DIr>5_\)>lS+0?N4C3@/FC4@PhS*AS#IdBk_<sCi+',Chma!BPVL)
+=Beg%9hAPh<(BAF5u^',/h/51/Or5u2)[HS<)cco;>Z:JMY`2/M#W8.LAur-K`-O,Jq9esVkp2a
+U7\!FQ^3htO,]$RLk^V<M2R@TQ'n5=Vl[,1\\?#(cI:=qg"Y<<h;7&Gh;$`:e^Dde`k]0lY,\=l
+SXGb*NJWCBJ:)WcF)c&5C1q3jA7T3L@fBj?AS5^lD#J5KDYn;MC^>!%>?P'/=&i6!<W?#+;c-Fj
+<EN=)<``=&r`')";G^4epeh#e?\sYuN/is\P*;,qQ^F52S=Z@HTqeE\Vl6VrXfen4ZEpsI\%0)_
+]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tE=hV[8MioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`
+p&Ojcq#C0hqY^6hr;HTcrdk*#s2=qf~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0XjoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\C@qp+6
+LRk"5T)YA]SH#)YRf8`TR/`KSQBda6PkUC7P5gXGOH5IsOSt=?OrKC8Jqo)8LL-jSU7n3PSXuFA
+Q^3hsOH5<XM3Rq'"dYLBQ^>Ga]`j^WH@h6>qiLi?r/go?p5o<:s,mGIP*5[*!L/lJQN!6MQiWYF
+rLEnY!1a"Y#+V6TSt;RHq4RVWrLj+_s.KCc"/)?\T_b;TScYOUT),#WSGo)XS-#1KRe`ESS=?#I
+S,f,ZT)YAXT)>5UT`(M_T)P8aT:VRCS"'DIrL3q\S=?%=rgj"XrgWnWrga%\rh'(\!29CdrhKFd
+!29@c!2KOf!i)KaqkO1es.]XiUSRmc!2f^mq5F4hri#gqqPXIpWi>lqpT+:priQ4'riZI/Z*L^B
+r3ZI2#I_+N\@K2_]DfK/^;.V'_o9X:aihoSdaZk$gtpuKjQ5Lck3)!pmd]uHs0/8ZIXQa<VNlXW
+Q_Cj9Qt1#6PZXQKGZn6U>-4s1Yl1d#Mu8J0M>i>2L])u-L&Zi*K)gM'rsA]'qtp3bqYU3ho`+ad
+s8NMVZ*(+'U8>06ZEL=-rhg:+Xg>IG\AQ.l['@$EXg"u'YPkV,M2I7NNfT<cPEhH#R$sM8StD^N
+UnsrdWN*&%Y->1;['d?P\[oGe^VI\&`5Ta;ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0RhoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\7>%2/`
+Fo6giJGjutIfFi\I._g]Hi8?eHiJI9B4PC[AS,OOI!g6dG'A+PFE2D@DJX-)BkV1!E,fi:EW0tf
+F)m;%O,f6[F)Yo7I=1s@s*OlrI!k^9rd=]ns*Xip$\!STIXZcqIXQWnIf+ToIf=irJH(6$KDgB%
+KDU?$L&HZ+Knb?WK`[!_LAlo,L&cr,L'*-aKn]JYre:<(rIt6(s+UH*s+LW0K7\c/KDpK$KDpQ(
+L&?T,KnP,5L&-JdK`Hf#L&Zl-K_pE%KE-c+L&-K"L%pE#L\uu+L]</1M>`8.LB<9gM>E,+Mu8P6
+NW4t;Mu/J4NV\V3NW"n8O8P+<OoLLCOoCLDPQ$gHQ26dHQ2HpJQi!-MRJrZdSY)RLUSOcbWN32+
+ZEpsHrNmr[[^Wi^_T:#eML08[EJ93rDeaEFNG*B0=%@1$H?ipn9i4ZAL4tB\L%pT(MYi80M#W8/
+LAuu-K`6T)K)>QDs7mH*p\4@Ro^_M?n*]T1n*ff;o_/%Tqu5OR-iX#=p@RnCm-*Tli7uu9da-.[
+`l,d1^:h+h\[f5[\\#Ph^qde&_Yh=O_?.Wl_Yq=N_@siVVj!:*Mhm4OQAg`XLPCV>Ll;4ms-*bL
+Nf8gOKnY3TL&H[-M2I7NNfT<cPEhH#R$sM8StD^NUnsrdWN*&%Y->1;['d?P\[oGe^VI\&`5Ta;
+ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]k
+qtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0XjoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\(7S?HO
+:f1*e;Ya2g:]OAl;#X>k;YO&g;#aDg;Z'De;?0Yo<<#ns;AV,D0/>7:1,VB_5Wq1j4?Yed3BB/Z
+3&ggo#<Fk-3]oJd48qAB:'jTe92%95:f:7kq,I8jr`&hppJh/ms&Abns&T/"!*9"ts&8qss&8nr
+rDiSkr)NVnr)N_ss&K)"!EE2!<<-"r<V9Am<;]Ys;Gg=jr`&_or`0"ur_rhrs&8bns&0&#<`W4#
+nl5Qd!*&hq"B8;u<)i]os&Ahnr`&kqr`&ntqGm`!<)Z[or`/ksr)Nbq"B8;u<EAuss&B"urDWbs
+rDj&&<`W4#rDrhtq,dW#pK@K!r`T)$r`T8)qcil"q-3f&!F9%1?iOO2@K0dG@q&tZAS5[iBkhF"
+BkRBU,\C_)D/sl)>#S6k9iY.`7R]F*8N\s_0IT":845Qs2EEis<)WWkpl#'-qhb<.s+gQ-s+UK+
+re"7'Vkp2aTq7dBQ^*\pNJiXMLPCP?MiEd^R@U(KX0/e>]Y_\5dF?b"gYCW@hV[5IgtUQ6e'Q=[
+_Rm4[XJ_hbR['%rMMHh7IX66\Ec,].BP(jfA7PUJraQ(AAnYmorGDFLs(qgTD/K/d+`E?L=BJU)
+<Dut"<`E'u;H$Oq='&L)=&r@'<`W0u;,L6d;>j<oM2I7NNfT<cPEhH#R$sM8StD^NUnsrdWN*&%
+Y->1;['d?P\[oGe^VI\&`5Ta;ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3
+nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\=7PeKn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY@Ap&?L
+N;0"DSc>2[S,SlVRJrQVQ^3r&Q2QsCPOjq;On4\5OWosJMM-S;L59/DVP^&[U7RpHS=>h.P)kW\
+M2.@^QBd`$Q2R$M]tXKZ"MS6fG(BOPr/go?r/go?pQ5E;s-!DG!0[;ErKI;IrKdJMrKm\TS"-#I
+Sc>5WSc>8]TDkJfT:hjNU7n7XT)t[ZT_Y;]TF.BcTV%jLT:_dKTD>)YTDbAZSH,2WSc5/ZRerTR
+SGerWSH#2\T)bJ^Sbo#XTD"rVTDkG^TDtJ^SGo)WS,f,ZSGf#YT)Y>\SH>=PSberXTELs]TV8+W
+U\CJbUS=KXrhBFfr1s:dr1sIlVl9TmqPaCkrM]aqq5F.hqPsIos/c1$s/lL.YctC<rNlL1rj;a7
+rjNlW]"5Md^:q@u_o0L4`lQ9Fc-Ohfe^rO2hVdAPro=%?"m>1<nb)bXru\D:KmnH6X/D#,G`fA&
+N.au[N)NiJUKCZ$>?\/4Xg%c-rf$Z2rJLK/s+pZ0rItB-KS9>W!.qBR$NC#$qt^$^qYU6jp&G'k
+!<;oprr4)9[&pL.VPq,F[]m!9W2Q_nXg,=B\A6%q[^*<KYcP)(YPkV(Ll%"JNK9-_P*D5tR$jG5
+SXuLJU84W`W2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`
+k3(sml0I^&mI'uB!V#XYncA@Srq6<bs7cNfrqZTjr;6HjrVc?eJcC<$`W(G~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\=n2"Mn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY8?"Rkk
+H@gbHJc(&uIfOrsIHu7\Hh;X[HiAEgHQ.?HAmo(YAnOq;I=-9aH$4=PF)u>?DJX*&B4q*]rc/Eg
+EfQ0@NfK)nQYCGcrd=Nird=Zk!do?Ard=Zm!doEEr-nZqrI4Tks*sut!J,k%KDpK&K)pXXrIk3)
+r.G')q1\g&!JcF/L&?]*K`[!_L&?W'L&Qc(L&Qc*L&HZ.KnP)2KnTGX!/1<'!/1-$rIb0)r.G*)
+K].UdL4t?\L&m!]rIY9,KnbA;L&?W%L%U0#L\QZ+LPGb_s+gZ3reUK-qhY<1pko03MuJ\6NW+k5
+N;nn5N;AP5NrG+;OSk7@OT1FFP*;)or0@;Jr0@5Hs-N\Os-Z0BS=H.BTq\<XVPgDnX0&S0Yd(I;
+YHY:;[(!T[_T:$RgQIA8E,U2_Lj!TKEeesWBL63E84n/S:/"AY9o4UYLAci*N;8D1MYi81M#N2.
+L'!'^K`6TAK)5<<p\4CSo^hVBnF,c3mdTc;o_/(UqYf=O)#X7)o^_J<l0%*bh:gK0d*9bT`P]O,
+]t=9Ss0r?F]"G_k^qmn)qniHO_u@OP_>D(lh8PVAOH#-UPa7AiMhd"ALkpqKO-#HeQ&q&bMM[+A
+LA6K$KN3hbMN!OUO-,TiQ'Rf*S"#t?TV8*UV5L8lWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/U
+cdC.heCE1&g"P08h;7&IiSrnXjlY^gkiq?tm-O--rpKmWnc&([oCW%Ts7ZKerqQKgs8)ZjrVZWm
+oDX=@JcE^hJ,~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\<q5\Jn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY&7nQKO
+oMYQ`s%rMgrDNSk!)WYlr_WSkq,75ip/:ohrDX2(1bpd<1,:XD1-n/hr]C3C4oRJB48q2=2?G`t
+48q>Q4$#Gb4?QD7:.n;S-q6s0rDWMkr)<Sos&8Sis&B%upf7>ps&K&!r`&tu;u'Dk<VTPj<W5ts
+<<cK(<E<.#<W6&!<W?+q<V0>l<W,kr;Z9Vp<;T\o<r>qq;u9Po<W#nt<Vobp;uK\p;u]es<r>tr
+<;KVo<<#ns<;ohn<<#tn<WlE%<)Zcl<r>r%<)Z^p;cHfq<<-(q<W?,!<<H9'='#6!rDru$rE9&#
+n6,Wl"Bei0=^(],!ErY&>5DJ&>QS2;?N+=2@/"+0@fL!=AhRe/An>L_@UikWAS5^oEd)n^>ZOQp
+:/b(k7Rfd,6UEUe-8@S80LnMh1c@BT<)`Zkrf$Z2rJLK/s+pZ0rItB-KS9>W<.^j:SXPn2PECla
+MM[.DLP^qLOHZ*'U8=ilZF@H^`QQWXe^rO1h;-rFhqm2Dg=Xs'cH=)>\?`36URmp>PE1WWKRnT!
+G]n+HD/<s#An5F^@Uf7F#%_F]CM[j)q/-4MDZ4MOC^k5tChmd1CKakC<`N+#r`'V2;c-Ln;H?q$
+=B8L)<``:$;cHTf;>j<kLl%"JNK9-_P*D5tR$jG5SXuLJU84W`W2cl!Xfnt6Za@0M\@K5a^;%J#
+_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`k3(sml0I^&mI'uB!V#XYncA@Srq6<bs7cNf
+rqZTjr;6HjrVc?eJcC<$`W(G~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Q!n3=G(#2@
+T)P;\SGo#WRfAfTQii\@QBhB4r0-Z6rfQl8rK/ajK7Sl7Ll#N;Vk]u\TUqdIS!TA(OckfaMi*gd
+Q'IZ#QC+&+R_HML]=ii`F*rf@O8b7?Oo(7?Oo1:@OoCIBOoCOBPQ-dGPPpaGQ2R$KQiEEXR@9V8
+S=Q7BrLEhWs.94^!20=`"e_Q`TqJ(WT)t[ZT_Y;]TECm\T:c"Rs.B.Zs.B4\s.01]q4.PVS,SlU
+S,AfVSc5,ZSc#)YSc#)YTD"rUTDkG\T)bJ[SH,8[SH,2ZSc>;]T)bJYSc,,]T:hnWUACYZUA(G\
+U]@1hV#@+nVPgAkVl0Bis/5jps/Gmop8S(l!3?$tri?(#r2ot%s0)O/ZMq31[/@?3[OJ\q\[oDb
+]Y2%p_Sa@3`lQ9Fc-Oece^`=+gYL`Ci8NYTjQ>[lmd^&LrVn"JVO)j`KVGlALjYPeduU>OF&\&t
+=IQ$g>@1W<X08Y0rNH'Vr/:N2qhb?/s+gQ-s+LH+re%HT$3'l"qtg-aqu-Nas82flruSkXYcF_"
+X1?'MYcaq%WMuu)[C!HZ_nELbZ*pp>Z1tO#Y$[!AMi<XVOHPckQ'[l+S"-(BTV8-VVPgAmX0&P.
+Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:jeCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8
+nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEaiJ,~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Pu_*uBlA.m
+K):,sJGt#sII;L]HhD^\Hi8?hHPLp@@UNeZAnFngI<p3aG'.tMEcQ):rbMXMBP@Bb")r7#ErC%c
+NfT6\NF@$DE-M2,qgJEjrd4Zm!.4]mqL/9j!e5ZIrI4Wl#C_/PJ:N3%K(joqK`?c*K_gE"L'*3c
+Kn]DYs+LK.L&6Q%K`Hf)L&H])L&$B(KnP)2re1<(re19)reCH,pk8X#!/BZjs+LE+q1em%s+UH,
+!f)Mbre1?,r.Y*(reLN.rJ1-'re:E.reUT2q2"p)pl#*0rJgi9repf8rf-f6pPo04rf?r<qN:c?
+s-!GIr0@;Js-<VKs-<SL!13VN&"8uWSXl@GUSFW]Vl6SoX8K'uXY$]ZZ*_!O^;S4Bf\PPPNe)4g
+EeKI%EGK]LSTK0a=%-mp96tqZ:/k%bMM?h>rIt*,r/:N2qhb?/s+gQ-s+LH+rdtOPp\+:PoCDG@
+n,D_\n+#u@p@nF\rnm_nr;-0[o'bu2kN(UYgXt$(cHF>L`59:']Xn$O#J.O\^VRb'_Y(eI_SQ&b
+,/`'gR?<YmMMdCWP`(KWL5(VBM2RIVOHPlkNfAsRLkUS:q1\a"?\jPsN/`m[P*2&pQ^F21S=Z@G
+TqeE\Vl6VrXfek3ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Lnf%8R-g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2P(h~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Pt"599M\LU
+;Y!]a;Z9Pf;#aDY;?0Yo<"Li?/i#1<1,VEb5<_+j4?Yh+3Xn)/3&`cR2**c\4$#A`rB(H`:/"AT
+/j2p+;H-Wo;u9Pk;uT_r;uT_r<V]Vm<W?%l<W?,!<W#er<W#hp<VTPg<<?-"<rQ)#<`N0!<rZ2!
+<r,hg<rZ1o;Z]ou<r>tr<rZ2!<<#ks<;ohq;up$"q,RJqrD`bpr)E\ps&B"us&ASinl5Ner)Wbr
+pJqJu<`N.#;cEZp"'&B&=8>nq<<-)!<<-)!<rc;"<<-(u=8l>%=oDIo=nc,!=92Q.r*0/(!*fA)
+rEK;*s',J-!+#P0!FK74@/sd8@/s^7@K0g=@UipI@K'Xa@:Nk\Bl8!;I=[,V>?+Hn:JY(a7n#L*
+90Y?c.jmD10M"Ym2EEfX<)ZWk;>Q7LMuAP1M>rD3L])u-K`Hf*K-d%UQ^!VoNJi[NLPL_FNfTBk
+S>)jZY-PLJ^Vn7?e(!"&gYL]Brnf*ZgtLH4e'H7X_7R(XWMQ8WQBRAgLP:>0I!KmVEGfT-BP(je
+A7K*JA,g'BAS,UjD"MWED>nAOD%CGuCMIX#GC3Us>#n['='#<#s&0"s;cQis<rl?'rDj)%<)QRk
+;Ya2f:g]$8Mi<XVOHPckQ'[l+S"-(BTV8-VVPgAmX0&P.Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8W
+d*^:jeCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWm
+oDX=@JcEaiJ,~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Q!e3JG_(kI
+T)>,URfAfTQii\@QBhB4rKH`6s,lr8)j-/:Jq/W2L0g^RUnFBST:VUBR[')!OcG<WMuK(BQ3<SC
+R$a?A^';9_]pYFAL&R24O8k=?Ont.>Oo:CAOoCIBOoCOBPQ-dGPPpaGQ2HsJQO&tHR[]h<St;MO
+SGf#YT)5,[T`1\aT`:VaT`(SaU'.0aUS=L\U&CYaT`CbbTDY;\TDG,aSXuFDSt2IDrgj4_S!ofE
+S,AfUT)YAVSck[WSXuGPT)t[XTDYA]U&LYaT`1P^TDkJdT:VXFSc55XSb\lSSc52^T:qtWUACY^
+U&gs^oV;;Zqka=j!N;plW;`^pVuWgmW;!:kWrK.!WrB'uXSo:$YPk[-Z*L^Bqm?C2s0a>b\[oAa
+]Y2%p_SjC4a2uHHc-F\ae(*(%f\,$7h;7&Jj6#OimIKuJqYq\ETT+MPMm'USIsI9Td>3g0;HAu]
+=du<n=^GB9X0/S/rNGsSrJUZ4r/(E/s+gT.s+UK+s+@]Y!<2uq"oA&jqu$H`s82firu^%%Y,S7p
+VmORMYHt:-WN<,(['mNZ_7mCeZF%!BXK_N(r2s4YM2I4MNfT9bPEhE"R$sM7StD^NUnjlcWN*&%
+Y->1;ZaI6O\[oGe^VI\&`5Ta;ai_fOcHjkbdaZguf@\g2gYL]Ci8EVTj5f=akNM0plKdg'mI'H3
+nF?MK!V>s_p&Facp\jmeq>^<gqu6NlrU^#>s+13is*t~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Pu_1(CN4[t
+K):,uJH(,rIIDR]HhD^\HiAEjHNRtn@:0"F(f,R.H['aZG'.nIF)Z#6Chd^!BlS-5EH1u!s)JHf
+NfT6]NK/11DKYr,r-\Ejr-SKkqgA6gqL/KoI!tsBrI+Zos*k0%JUrE)pk/Hss+UH*r.Y0*!/LQ.
+s+gN,s+^W0L\ul,L&Qc!L&Zi*L&?W&L&Qc)L&H]'K`Hl,L%p?"L&Qi(K`d'`KS98Wre:H-LAlo+
+K`$N(LAcf,KSB>Y!/L?(s+UE+pP8O""c%ecL5(K^M>2o)M#`G/MuSb5N<"q9MuS_9NVSP/NW+t;
+O8+h8OT:RBP5pjDQ2QsIQ2d0MQiEHQR0]7NS=H1CTVA7]V#dKmri,ms1o[LUX0&P/ZF%0V`6-EW
+h;[V_m$*EQE,U#\OaCqZFb-N1DdPh$DF[BEISEL7:ece#L5,Y\pPf'/regW1reUT0reCH,s+LE)
+&bYeenaZ)9mdKW6o(2SLq>C3KruD%8q"=7ImHWlriSWGDe^Ddfb/hT?_8![q\[f<N\Hfa[^;.S%
+_o)Air589G%`?6(`l[bNP`q/dMMdI_reqMIL5C_DN0'-`P*D,jNf8jPLP1EXL&?U-LP^nHN/is\
+P*;/rQ^F52S=Z@HU84T^Vl?\tXfen5Za7'J\@K2`]t_A!_SjF5aN;TJc-FY^dF-Opf%8R.g=tH>
+hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc?eJcC<$`rCP~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Pt";;9hnRT
+;Y!Zb;Z9Pd;#aDZ;ZBZ)<&?<`/i#4<2*jMm5!Aj,!]`;'r]1!:s"ss?3^#Pc3rM/@48qtZ92&#B
+7o<4a<;]\m<;KPk<<#to<;feu<)Zci<W?,!<W5ts<W#hp<VfYr<E<0!<<Q?&<E)rs<W?)"<Vf_t
+='/N$<W,r!<)r`p!EE+t;ZKeq;[69%<EE4#<E8uu!*/hor_i_ps&B,$=',<#s&B%urDN\qr_ikt
+<E&corDiku!``3!qc3So!`MuqqGdGor`&ntr`8ttoi;&mqc!\u<`W=)rDro!r)Wbrr`9)#p/h)m
+oi^rk#?b/2>$>-7>lIt!>5h_+>l@t.?3=PB@:B(CrF#S4!+>e511"6l?=.,NA7oXpF*E"`LPh(P
+>?Oct9Mn\h7n#g-5[$<00I&&0/MBO^2)I?S3)idPr)*3IrJUZ4r/(E/s+gT.s+UK+s+;JXOcGBY
+M26qEMiNm_R%0kHWir_:]=u2(cI::og"Y?=hYuCYhV?l>f@80kaMY^"Z)aaqSX>V&N/<7?IscQd
+FE2;:CM@EoARt^KraZ4FBPM@#DJo8grbhaQrbVUOs(qRJ"`/7<@9Qe4<>\Y9=&i:&<Dc^r;cQn"
+<`i@(<``=#;cHTg;>a6oLP^nHN/is\P*;/rQ^F52S=Z@HU84T^Vl?\tXfen5Za7'J\@K2`]t_A!
+_SjF5aN;TJc-FY^dF-Opf%8R.g=tH>hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKe
+s7u]kqtpBjrVc?eJcC<$`rCP~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,@:X.sI>[Zg
+s.0.Zs-rqTrgEeRs-NbO!1!JHrKHo;!0dAEs,m#:s,6o0#D\%h@:#h.U]-teT*_'WR?N_qO,]$T
+r0IVRQ'n#-R_A^7#eRd:LjFZ7O-':#s,d5Bo8j-<OH>TdOoCLGPE_;qrfR8FrKR/E#a^pGR@9Y9
+St>qPs.'(Zs.91]$)!ubTqeBWTV/"WT`(S_UAq%hU&^ndU'%*^TqMCY!MH(^T)PAZT)YAZScG>\
+ScPCPr1!VS"eD6WSt;MMT)G;]Sc>;]T)bP`T*(a[TV2:Xrh':aT_kA]T`CbaT*CmZT:VXFSc,,\
+T:Z"Rrgs+[#bIZ\TV8*RU8%IYqkF+a!2B.]qkX+c!iDlnpo"=pW2HSnpo*teri6"!s/Q(!riH.%
+s/u@)#-bA;ZEggCq6^10.(?^t]">Vf]tV;!`lH3CbKJ,Td*gCmf%8R-g=tB;hVmMWkNhR,p\Xac
++n;V)KmnKIZ+5jBGcniNP,M?2I[+$/T;Yss>[1F4Y-"r+YP4"SMuJV3M>rD3L]3&.L&Zf+K=Cjf
+rquZkqtg0dr;HW`s8W)hruS\PXJ`,*\'2:`Z*C7,XK&J1[^N]a_mm1^[(!<BZ2(U#Y#U:7MN!OT
+O-,ThQ'Rf*R[]k>TV8*UV5L8kWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08
+h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEdjJ,~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,='K*IDg(o-
+qgn`rs*jopm<nkZoQp@\rI"Wls(D@@(1h)h;,;ReH?sg[G'.nIEc5f2CMINsrG`KkF)l>BF*!D&
+O,o9[FE));I!gA=I/\QdI/89fIKP"GI!tsBrdF`o#(M/RJUrE)pk/Hs!/:E*r.P3,LPPk`reCK.
+q1es)reCT1KnY3QK`Hf)L&Qc)K`Qp^re19)rIk!#s+CB+qh4s&r.Y3,re1B-L&Q`-Knb;8rIt?.
+LAci*K_^<&KSB>Ys+gW/",DVdL\Z](L]3,-L\QZ.L4t>9LA-N(LB*/.M>`>1MuJ\4NW+n:MZJcr
+pl,'/rf6u=p5o<:rf[;Frfm5DrKIAKQC%Q;s-X7aS=Z@GTqeEZVP^9iVuilqWW&hNWN3/)YdM'W
+`6$E[iTBFmmdTeeO,%gtEJ]^:F_kcGNI,Sn7:BbH8pkr8:/+S^9o8k(r.Xm(rJUZ4r/(H0s+gT.
+s+UK+%tjEBnF,f6nF?&?pA"L^rnm_prqlK`oC225kN1[[gtC6,ccjPQ`l#X-^:_%frON6G]Y;.s
+_8=+_`;daN_C3=@`Q#s?b0AS*P*1f_NffcjMN!FJM2I.JOH>NbQ'@>jN/W[MKnk?XL&6O'Ll%"J
+NK0'^P*;/sR$jD4SXuLJU84W`W2ZeuXfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0
+g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZjr;6HjrVc?eJcC<$a8^Y~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,7Rg$E:JpLW
+nPSmSs&&)[$o0Un0/>=>2Dd`d5X#$-$p$I23&icS2`3WW4?WU)rB(B]:JOSX9/o@:;#F;j;uTbk
+;uBSp<VTPm<<H3!;cNHjs&T(us&T(urD`_qqc!Vs=',B$s&T/"!E2ts<VTVp<rlE(rDihts&K(u
+s&Jnrr)<Vpr_j&$<E<1%<)lrs<r5ht<E)rs;uKYq<r?&!<rZ/"<;fbq<;oer<V]T!<E)pt<`N*u
+qGmPps&K(ss&Abns&B"ur`9"u!*B/#r)N_s!*/hor`9&#r`8qur)Weus&f/"rE0&#qH3DnrEB2'
+rEB5(s'#G,s'5S.!*oM-oih?!!*oM/s'>_5@/OL6@JaFn?X@&E?!LW??=.,NAnc(#FF&ImMiX!a
+Q'ci#<`)[g;H-Ud7RKL35rCbS1-7TP84>m(2**`X<)ZTi;>6%JMuJV3M>rD3L]3&.L&ZfJK8keH
+M27"IO-#QmS=ug[YHkUK^;S(:daZk#g>1TArnf'Zh:pZ8eBuO_`4`XcXJ_eaR$<\kLkUD0I!TsX
+Ec5f1BkV-kA7YUJ#\7LXB5)-uDJo/drbhXN!,VFG'l@i*F]hmL<)lt#=&r@$<Dujq<)lus<ruE)
+<rQ(u;Ya2e:fW=.MN!OTO-,ThQ'Rf*R[]k>TV8*UV5L8kWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'A
+bKJ/UcdC.heCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7ZKerqQNhrqcQi
+rVZWmoDX=@JcEdjJ,~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(GBQn`RNqK"C
+Sc##XS,A`SRJiKSQ^3p8Pl-a>P5gaEP5g[COT1C?O;j48K8>5:MdE9XUnXQUT:_XBR$EntPE(T\
+MO4=.#+(UBR@0M4r4W;Dc#nQ%qN(T:rfR5Brf?]5$^$U9P*;,pPEM)mPPp^GQ2?jNQ^F/.S"',B
+s.91]"/)?^UAgnhU7n:ZTE:g]U&C\eUSO^^UApneUA^bhTV%gJT:Z"Rqk!eXqk!h[!hPsRrgWeT
+s.97_q4@SX!hPsSrh'1_"J;?\TV24V#,7fbTV.pLrh07a!20=`rLj%Zr1="_U&(A\T)bP^UA:S^
+UApneU@tA]U]I<hrM9LkrMBLkq5=@oW2KBgp8J%lri6%!ri?"!s/l=(s/uO/Z*L\7Zi7<3Zi%0Z
+[C3QT]">Vf]tM1r_oKj?bKS8Wd*^=le^i@)g"P39h;I;Tkj7g1q>U'e+g\#)JUrZead@j1Q__ug
+Lj3f:N)`uPTNbW&>[+D4YHG,-YP*qRMuS\4M>rD3L])r0KnP,3])Md/rqucm!rW#rg]&A9Yck+/
+Z*q]gYckF7Vm!5*[(!HS_8O$pZa-sDYH4u)YPYJ1L5:\EN/`m[OckroQC+)0S=Q7ETqeE[Vl6Vr
+Xf\e2ZEpsI\%0)_]Y;.s_Sa@3a2lEHbg+M\dF-Lnf%8R-g=tE=hV[8MioB+]k2tmll0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2b4j~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(=?>++pHhN'i
+JcC9"Ifb(IIHl4YHhD^\HiAC(HY?u"An,Fd;13k>H$FLVG5cLpEGfQ.C2%ErEH#o;EcH)?F*)L%
+Ns1M>QYCGgp3cjfs*XfmqgA6gqL8Hm!doEEp3m!krdb$"s+:#uq1S["s+UN/rItE0LkgfaL]<2-
+L]3&)L&Zo'K`Hl)L&Qc'L&Zf.K7nr5qh5*)Kn]JYrIt'%#_e"eKnP/7Kn]GZ"G__dKnfPZq1\a$
+!/LQ.qhP$&reLH.r.k*("c%hdL5(KYM#W51M#<,.MZ&J4N;AP6N;nh1N;AP4NrP15OT1IBP5^[B
+PlR'JQ2d*KQ2d-OQ^F0>R0f=OSY)RKU8+N\rMMlYVl$>hVl6PnX/iJ2\@fYtcIUk6lg=-1oC_kQ
+plg\aF)lPgS:5HnFb-6-C11(0Ce%*DHVR=1;,<"(KnY9ZL%^K(MuS\4M>rD3L])r;KnP,3n*fc9
+o(2SMqY^?Lrtt\0p@IeAlK@6ehV?i9e'Q=]aMu07^q[SZ]*H!^^VI\&_o)Dj!6+lSp;?pL.)s<K
+b0/&UiQn3\OcGE^OdM;gN/iaMMi*CNP)tfiQ'%&cMi*=FKSK>Wqh/@3Ll%%KNK90`P*D5tR$jG6
+SXuLJUSO`aW2co#Xfnt7ZaI6N\[oGd^;%M$_o9U8aND]McHaeadaQ^sf@\d1gYCWAhr*JQj5f=a
+k32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjr;H6dJcC<$aT$b~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(-84uWO;=.9O
+;=RK_;=d]c;>jB.1GLO<0f(UC5sRXu4?GYg4#o;^3B&nr2?u*#4$5Sd3]m:&s%`Sg#>?R:9MeVc
+;uTbn;uTbr;uT\n;u0Gp;cH]o<<#r$<)Z^p<;'>l<rZ1u<r>tr<;fhq<";o/=&r@%<E<+"<)Zar
+<W,tu<W,tu<rlE)r`0#!r`9&!s&Attr)Netr`&bn%9->-<``:#<E3(#=&r?#<!--"<E8lp"'/K)
+=Su8#<WQ3"r_rhr"&i/u<VfYp<W,ns<W?%s<W?%s<<?,u;u'Gn<WZ9#<;ont<rZ/&<``=&<W,l!
+<E<.#r`&bps&T/$!*9&"!a/]0q,mZ"pK7DrrE0&%s&ett!ErY*=9)M"=p8,6>?kB:r`oA)!*T2&
+rEB8,rE]G0!FT@6@f'O7?<pk9>W5qp?XI5RBkqU-H%1R-Ocu&tS"61EU0Cf!;,0qj?:dRS4@2V)
+1G^O14>&<X7Q34_3B0r:;c*?gp5Js.s,-`2s+p]1rIuAIKS4u6MN!RWP*_]4VQ-f)\%BDnaN`/_
+f%A^3gtr%f-JmS5g=Xs'c-"#>\?i<9US!s>Oc>3OJUVumGB@kDD/3iuB4YUar*p"CAS,RhC2@d*
+q/6=RDf>Vms)%aQ!,_^OqeQ4J)/X80IrJh"=B8I%=&r:#<EN3t<*!%!=]\Z'<s;Q'<`Dsrpegob
+@"sJoMi<XVOHG]jQ'Rf*S"-%@TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`Q-'BbKS8Wd*^:j
+eCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@
+JcEgkJ,~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$V5oCit/ao:GrP
+rg`nUs-a"YR[X/B"IPOBQBhE5rKI#>rKI2Cs,m;Bs,[2A08tdCJr#/>?XTb/TqJ-NT:VRBR?`u"
+OH#0UR$X,,Q^3u+R[KVX]Y;%mK:/'QL\[#/OT(@BOSt77OT1@DOckolrfmAFr0.2HrKdPNQi39Q
+R[]iGSc,,]SXuGMT+%BeU8+HXUS=KVTV8(XU'7<dUSO`^pS%\`UAgkdT_b;XT)G5YT)G8aSt2C@
+S,AcYSY)OIqOR_[T)PA]T)YG_TE:g[TDbG]U&:YbU&L_bT`Lm\rgsLiTqS-PT:_dKT)P>bTV%pO
+T_k>bTV%mMU8%U]rhB7arhBCerhBCerM9Fhs/,dls/,gms/,^lqPXCnpSdeb!35psriH%"s/uC*
+s0DX1rNuU2!4;a5s0a5`\[oDc]Y2%o^r+15aihoRcdC1ieCE+$g"P39h;RGXlL+39r:0e1Z([&+
+K;u?3P^dtB\"JA:Lf.<8<*>]e>?k99>Hb-4Y-@i-oo/m.regZ2reLQ0rJ(?+!//&c!WN&pquQcq
+f`*&N[BHU0YH5I^YHYI=WN32(Z*_!M]YqOo[^*<LYcb;.YPPD*LP^kGN/`m[P*;,qQ^F52S=Z@H
+U8+N]Vl?\sXfen5ZEpsI\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s2k:k~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$UiX@VB\&o7Hpl
+s+(-!!IfIlI/eWeI/J?aHMr1$I!^3fHtd2'@:a"a;,MahrcnrpG'.nIEc>r5ChdZtF8g1ZEXm)1
+FE;M`NfT3\@X*9<GPZ[eHi/9jI/nZnHi/9fI0"eHr-nTmqgSKn!.Olrs+(-#s+:*"s+LE)r.P$&
+qhG-+r.t?-rJ:<*!euJcrIt0(qh>$(pP&X%",2D\K_L0&KS>)4re:'#q1Sp*KnY9ZLB*)+K`Hl+
+K`Hl,LB3-brJ(6*!f2ScqhP**!/^<'reLK/reLK/!/^]2",VnlM>`>1Mu/J2NUr,+NVne>O-#Hc
+Oo1:@Oo:CAOT^i0P*;+,Q2d'TQ'R`$Q'R`&R$dl@$C[HSSXuLJU8+N\rhodns/#am(T441XKJh9
+]"c5/e(`pHm-aE8p%S7XqYp@8P_jX)F,Z-TI;N\?M19;\AjJt(7n\,T:/+G[:Pjg[KnfMZoo/m.
+regZ2reLQ0rJ(?+#DDX<o_8.Wr8%Ajr;$*ZnaGf-jl,+Og""Qubf\#H`59=)^:a?T#J@dc^qmn)
+_u.FQ`Vd[S_uI[O__/mH`l?'@bKS5WdFHY5XHes1NK9!^Ru3/bMhm:KMN![ZOckumO,f0VMhd"@
+K_pK"KNa.fM2R=PO-#NgPa.T&R[]h=T:r!SUo(&hWiN8)Yd(L?[C3TU]"G_k^VRe*`Q$!?b0/#S
+cd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6Nk
+rU^#>s+13ls*t~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$U948kVrWlr*=M
+n50-^oMY]ds&'dl0et@91G^sH5sR[u4?GVf4?>M`3]K#V2`3\q4T@MC497N+r_<Yl:+e_):f@-g
+!)i_nr_rkrrDNYoqGdDlr`&ksrD`YorDj)%<`W4"<W,tq<W?%u<W?%u<W5r!<EE9$<WuK&<E3!t
+rDihts&Jttr)`brr`&ntr)NetrD`Ym!*&qt"BJN%<E8osr)F,(;c?Xp<E<+#='8]&<s)K'<)rlr
+s&JtrrDihrs&K"ss&K%tr`&qtr_reqr)Nbts&B2&<E3!tqc3Mmr`9"ur`9"ur`9&#r)iu&qH3]!
+!*Jtsr`K)$s&f/$rE',(>$:f+rE92*qHEl&!F/k,>5q_*>5;A&>lJ%-?N4@5?t&t@!af8?r*1"C
+?=75RB52:)G^b=(Od)6%SY)XPVPsKn+'M]B:JXtf>t@FQ3^c:s2_H7(4"W-V7Q31^3]L)<;Yj8`
+N;eb7MZ&D2L]E5/LAurnKTD7ZR%0nJX08n?]YMJ,c-k+mf\5-:h;7&HhVHu@g""Nrb/M-+['$C(
+T:2(.Nf&RCIscQdFE2;:CM7BoAn:dK$"RUZB5)*sDJjFiDZFbUDuFSRDZXfnD>e;KCDq#+DJjE5
+FEWIG>$+g*;cHh$<)m%#<)lmr<rH)*<`iC(<`N*s;Ya2d:g/X2M2R=PO-#NgPa.T&R[]h=T:r!S
+Uo(&hWiN8)Yd(L?[C3TU]"G_k^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13ls*t~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<qGnQnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$V5pGBne%n=KZN
+rgX"YSGSfURf&QTR$X*8Pl6g@P5UUDP5g[EOT(:DNJiLBL&QoI@&0TpTq\-MT:hXAQ'IPpNfAs_
+R$O&)QC"$=RfL/#^';9=S:-*ROSOt7OT1FCOT(=<O8t@@OT1@AOT(IBPl?mEPQ7$GQiEHQR0&hH
+SGo&`StM^KT:_eRT*:m]U7n9TrM0Cdr1a4d!2TUjs.oXhr1a4d!2BFc#,%T\TV.pLqO[_Xs.0Oh
+St;RHTV%jJSc5,[SXf\M%A'2bT:_^GSY)OGSXuGNTDkJbTq@tVT_tM[U'%*^TqVI[rh0=dqk=%_
+rh'1`rh':aT`(M]TE(_aU]7(\U]$neU]$thV5F6g!2f^k!2fal!N)dnVY[7jWVWReWW0!rX8f9u
+Xo,='Z*Ue6[/[H4[/RHZ[^WcW]">Vg]t_=u_o9X9aihrScd:+heCN:+gt^fHjll%#p&"1W+h"21
+K8#5hcC0`?H)fJZN3-<6H'MO&S"s4l?X6p>XKJ`&YPsOVN;eb8MYr>2M#W80LAur-KYdZgrr2lp
+quQcqeGgW(Z*((1bdPd&Y-bL8Wj&V/[C<WV`l,?qZa@3IYH4o(YPPD&L51VCMi<[WOHPfmQC!u-
+S"6.CTq\?ZVl-MoXKA\1Z*UgG\%&u\]Y2(q_SX71a2lBGbK\>YdF$Fme^rF*g=k?<hV[8MioB(\
+k2tjjl0@U$m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2k:k~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<qGnQnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$Ul\B5;O7n:LXj
+s*t3$IXQYAI/JEbI/SEbHMVskBP1gaAH$3Z:jdV:G^4FTGBIqHE,KK-CM@L'EcH)?EH;#!!KW9?
+Ns(GdI;O-'I/\KiI/eTpI/SEjHie_DI/\QoIfFoqIf=cmIeeKmJH(3"K)C9#K`?]'K`-W&LAlu(
+L]E50M"cZ,Lkg_=r.b6,!/CK,r.b0($&4.fL4tA:KnY3XL&Zo*K`Hl+L%U3!K`Qp^reCH,"bqee
+L51Q[LAlo,L&d#.LB!&/LAlu.L^8clLPLV>L51Q^M#E/2MM^n[rJ(H1M2D4f",VnmM>`>0Mu/J2
+NW4t:NV\V1NW"n;O8+h:OoLO@OTL]0Pl$aGPQ7!FQ4K=LR$jA2S"-">SXuIHTq_I\rhUI/VlHo)
+[(!`fbL5)$jQZ($oC_hPqYL-frr!r:Q]6H9FF&q=J9G^AKV<O)LJ)&cE(bG#Hqd@8;,3#JK`Hl)
+L&R),N;eb8MYr>2M#W80LAur0K_bNDh>\AkqY0XPmd'-!io&VFf$hshaiMN@_SEq#]`#JB]El3b
+^VI\&_o0Lk`<+&u`W!dU_u7OP_uI[T`@f0NaND`Ocd:.mg>1]8g6n(dO,flqRZ35cN/3=MMMdFW
+OHGioNfT-XMi!1AK_pK"KN<h_M2I4MNfT9bPEhH#R$sM8StD^NUnsueWN*&%YHY:<['mHR\\#Mf
+^VI_'`5Td<aihlPcHjnce'uq"f@\g2gtgiEi8N\Uj5oFckNM0qlg4!*mf)YZnF?)?oCMVRp&F^c
+p\jmeq>U6gqu-HkrU^#>s+13ls*t~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<V,ePnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$U9592&+I;XREN
+;#aDd;Z9N>1c$m?0f(XB2*jMm5!:ti5!1ke3BK5Y2`<NT4?PYc4$5Vd4?WU<#Ye&e5"ACG<)ico
+r_iVls&8tsrDEVorD`eq#?4W#;GpFm<;fhr<;T\m<Wc?#;cWcsqGd\u<E3!s<;fet<`f9$"]\N$
+<E)rq<W6#!<Voho=8Z+s<W?,"<<6-#r)EVn!`W)trDikss&T/"r`8qsr_rhrs&T>'<``C*rE'#"
+s&T;'<)loq<W#er<rQ+u<;fes<;ons<;onp;uBT#<E<(!<E<."<;ont;uouuqc3GmrD`hurE&o!
+"Bei.<`f6%r`K5'pfIGsnlbcj!`rK,r`]>+s&oD,rE9;->[1M2>5q_*>5hb)>5qe,>lJ%-?3":/
+?3":.>lS(G?=.,NB5)7)G^b:$O->s#StVsYWN*&%rN7;K>#S0l;,gjp77BR1:-UR%.Pj.I0LeK#
+3&WiY3E/pS:\mrfNVJJ3MuS\4M>rD3L]3&.Kg16]U8P&s[(3ic`Q6?Qe^rI.h;-rEhr!;HgtUN5
+da$%U^q-qWWhlAXQ][;bLP()(H?XIODf0?(BP1pgA7PRK#\@U\BPD3tD/]2g!c`0urGMRPs).dP
+rG;LN*,]\6E-$2JI"6-\?!160<FSs0<E<(!;cHdt<EB$!#ZXu,<)cjr:f$scqG:4ILP^nHN/is\
+P*;/sQ^F52SXuIIU84W`Vl?\tXfnt6Za@0M\@K5a]t_A"_SjF6aN;WKc-FY_dF6Uqf@S[/g>(N@
+hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$ao?k~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q6@V9P#I>mQb!1j+Z
+".bsOSGerVRf/WVR$X,(r075F!gJn4q3(]?rK@2Crf7tVM1^;7M25Q8VP^&]U7e'LS!oY-PE_8i
+Mi7S##FCgER@9V7SGp8&]EXIRH%D*>OS=h6OT1ICO8t@=O9(E(r/Ui?rfd5D"I5:;Pa2'2s-WhS
+#+D$OS=Q7Drh'=eTqVIY".u6YT_tJeU84Q[US7[]rhBIhrhT[nV5=0e!2KOfrM'RjU8"?ST:c+U
+r1<qZrLO"]rgjFgTV/!OT:VXFT)>,ZT)G;\SHkaWSXc7ASt>qRrLj+]rh0:bs.TLgr1a1a!McCf
+U]7(fT`ChXT`UmZTDbD`Tq_L\rhB(\rM'4c!2]=brhoam!2oanqPjCk!i`3"ql0OorMoq"rN-(&
+riQ4(s/lF.Za9J7s0_m8$+IFT\\#Me]tV8\_&'u,`5]m@bK\A[e(*+)gu%)Pkj.a1qYog\+gn))
+KS?PCjdCmOQ_rPrQ@MnhNE'2TTVu'u?<p^:XfSf(YPjIVN;eb7MZ&D3M#W80LAutFs8W)qr;ciE
+rufCgYcPOZ[a;Rf['d!5Xfee3\@9)e`4WOcZa7$CXKer+YPG>/L5:\DN/`jYOckroQC+)0S"6.D
+TqeE[Vl6VrXf\e2ZEppH\%0)^]Y;.s_Sa@3a2lEHbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2t@l~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q6='K-IDftH!s+10"
+"+PcJIJnQiIIqpcHhD^_HQ[!5@p`h\Al*l'H['g]GBJ(MEc>u8D/<s%BlS-5EcZ:#ErgB(rf75C
+NGriPF8:4]Hi/9kI/nZoHiAEmIK"WoIK+`rJ+J-aJ,XuuJcC?"K)gT(KarcgKS5&4Knb;8LPCP=
+LAlu-M#N8-M"ui*M"uf*L]3#-LAuu-LAur/L4t?YLAHW(LAZc)L&cr#LAHT(LAll-L55\]!f)Mb
+reCK.rIt0(rJ10("G__dLPPe`rJCQ3!/^<'rJ(B/r/(9-qht<0rf-N."HAG%NK*mss,Zl8!0R8B
+s-!DE!g8e4q3CiCrg3YP!h#LHqjd\W9:hcLU8+N[V5:)iXg#.A]u8%?f\YZPmI9]>pA"L\r;HWp
+rr2loqtu\9H?F=jPH94RCNY6?EcYYXASak1H?jp5:/at`M2-e?LAQ]'NVSP4MuJV4M>rD3L]3&.
+L#)bHrVH<^o'br0k2YCTg=Oj$c-")H`507(^:aHWs1JBF#JRsg_8=+.`;R[T`qRIN_u@S0`Q#s=
+aihrSd*gIsgu%)RlfcZgP*1lmRus2$MN*XRLl@7LN099bPF%DlNJr^NL4tBZL&$C0L5:\DN/`jY
+OckroQC+)0S"6.DTqeE[Vl6VrXf\e2ZEppH\%0)^]Y;.s_Sa@3a2lEHbg"G[dF-Lne^rF+g=tE=
+hV[8MioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2t@l~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q67Rp-D:JpIVmnrIK
+s&&Mgr_X%Z1,(@:1c%$U5sR^74V'V;4$,J`3B&iR2`<c\4$*@'"$/M)4T/"X9fGO=:]=>k;uBPk
+;u]hs;u]_q;uK\n;uTYp<:j2f<WuK&;c?Xqr`8kqr`0)";cN`rqc<_s"&r9"<;]_r<;ons<WZ?'
+<r?%q<r>qu<`T&ss&8qss&/nsr_ierr`'&"<E</q<=2](;cHas<`N.#<r?#-<`N.$=&r@$<)lms
+<Vobp<W5tt<<-"p<W5qu<`T)ts&8hps&K(t"&r<$<;fhq;ufqk<rH"u<r?%t=T2D%<rZ8$=T)A&
+=SZ%t=SQ&!>5_V'=Sc)!=oDM(>Q.h+>Q7k0>?kE;>PhV&>Q.h+>Q7q.?2\+/>QA"*>5qeo>[:WA
+?X[GUBl.m7I"R99PaS)8USk)mY-5+9['R-GZEgf>=Ar!l='9!*77B=*Da664-o*n<0LnQ$2E!TV
+3)ijPq,.*Mq2G<2regZ2s+p]1reCH,3NTKn]"Z&$b0JJdf@em6hVR/Ji8<DIgY16-ccaAF]=+rD
+VP0KGP)kKUK7JAsG]e%GDJNouAnGWRAGp'FB4u!oCM[j*Du+GQEW0qUDuO_RDYn;NDA@)/E,p)F
+H[^O$N.Z.X=]nd/>?=p,r`05&;-$[s<*0'"$<L>0<`N$r<)HIgr)*8d@"sJoMN!OTO-,TiQ'Rf*
+S"#t?TV8-VV5L8lX0&M-Yd1UB[^WfY]=bkm_8=+/`Q-'BbKS5Vd*^:jeCE1&g"P39h;7&IiSrnY
+jlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@JcEmmJ,~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q6?tX_0KTb_os.'.[
+r13kXrL<eTs-`kR!gf4<qNUuCq3(]?rK8CfOGf!PK8GDA?sok-T:qpNStDRDR[08%OcGEZQ^=)+
+R$a?@Rgd!E]Y;+/`cZcuOcY[uO8P+>OnXt8NrbB+rfd8E"I>C?Q'V95s-WbQs-j@cSXuLITqS3T
+TqVFX!MQ1bT`Lm_rM0LiU8%X^s.o[krhfUis.]RgrM0@d#,.]^TV/!Nr13nZr1<hYs.BRiU7e0O
+St>kN!1s1^!1s(Y#+V6TSt;RHqk3t]rh07as.]Lf!MZ@fU&^teU]mNfTqS3SrLs:eq4dh]rLa4d
+US@.Nrh9Cfr1j=hqkj@jrMKIirM]XnrMoao!35srrMogsriH+$s/lU/Y-+t3Yd(P4[/IE4[f3`B
+\@K/^]Y2%n^VKfa'>h],aNMiTdF6_%h;I>Vl0e0<rTO8*^T3WTM2\^bb`dU%Pe*K3S<-TKO&fDT
+TVu's?<gX8Y,\f(YPaCUN;nh8MZ&D3M#W80L&cqIs7lT=ru^X=YH,@OZH'hb[CNQAXg"t5\$ro[
+`5&mkZF%'HY-Il-q6'aP=bqomN/`m[OckroQ^F21S=Z@GTqeE\Vl6VrXfen4ZEpsI\@K2`]t_=u
+_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=[
+q#C0iqYU0hr;HTcrdk*#s2t@l~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q6=^G`VFF3D,rIOru
+"b1uLI=-G;IIqpcHhVjbHO=CtARf=bB2MHQHiA6uFa&%MF)l8=Ci!j$C&N&QF)q8%s)SL,O,f9]
+>a/uCJ,+KhHi/9kIK"TmI/eWoHiSToIf=imIKP(KIt%3Cr.+curIb-'rIk6)re:B,!f)MbpkJj*
+rJCK/!/^T/",D\fL]3,-L]<,.LBN?cKnb?ZL&?])L]3&"L&H`/LPCP=L\c`0Knb;8L4t?\L&d#,
+LAQ`+LAci(LAco&M#E,-M#<,.MY`,/L\lo+LB*/.M>N1rMu8P3N<,'!rJpi;rK%#Ar/gr@#EY(1
+P*2#nPk^OCQMd($R$jA2R[]h:R[KP1R@9Y;Tq\<XV5L;oYd:gO_o^6Vh;d\cnFQ>Iq"ad`r;HBi
+,+=OBGBeFmSX4Y?C35>]A9D`T7;YOfH?t'99i4Y\M2-h@qM"j,q2G?3regZ2s+p]1re:E,i;Y5)
+qtTjTn*K?%j5JhKf$r*lbK%W@_8*du]Y(kg]Y(qk^;%M$_Sa:0rPecUpVm0Nqo(A2a2lEIcHjnf
+f@o*>jQZ(&pYP_XQ]dDsR#[MtMN3aWLlRIQNKK?bOd2&iNf8jRLkUW]L&$E%L09=hMi<XVOHG]j
+Q'[l+S"-(BTV8-VVPgAmX0&P/Yd1UC[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)J
+iT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)Wirqu`noDX=@JcEmmJ,~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q67n?9H:f$IVmSW:H
+s&&Sis&&eP'J_<s1c%'J5s[[u4?Pbj4$,Ja4#m3t"#N,'48q8E4?>Pc4AYoN""?`6;#F;k;u9Jj
+;u]hs;Z]iq;uTbo;u]_r;cNNl"'/E&<Voes<W5o!<)lq!q,RDp!EE+u<Vfbk<W,l"<E)t!<rQ2#
+<WZ?)=8>no<W?#(<E)pr;cH^p;uBVn<W?,!<W?%q<<6&tqGdMrrDs)%<E3*!<s;T'<E)ptp/D,o
+<)lrm<;ons<<#ns<<#r&<)lpt;cH`p<<6-#r`&ntoN(oj!*9#!rE0)#qH*VtqH*VtpK7Q$=]t`+
+!a/W-r)`o#!*T;)s',M,r`f;*!aAi3q-3l&r`]D.?2\(2?!CG0=%l_!>$>-7>[CcG@qB=hE-6MZ
+Ll[diT;/9_X0/\4Za@0N\%&oV\@K5c?<U<+:Jt+s<(KJH4$u=r3&;a,4"W-V6q0'l3]T3";bg9f
+;>cFLN;nh8MZ&D3M#W80L,Xh!^Ve.9cd^Oug"Y?>hr!ANi8<AGgXjs%bfIZ6\$2p1U7@U7OGepJ
+J:2chG&qV@ChRHnAnCsPracCJB4u!pCi+'.E;X_UE;jkOE;XVSDZ+GPDZ=\UE?K@HH@:<sM3!pj
+H^SJM=B8U/<EE4$=&r@"<E<+"=&rH&<sVi.<E3!s;Gg9g;>F&gL09=hMi<XVOHG]jQ'[l+S"-(B
+TV8-VVPgAmX0&P/Yd1UC[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYai
+l07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)Wirqu`noDX=@JcEmmJ,~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH:%%E8lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>pUA8?@9NLcX.T(efU
+SGo#VRf/TTQ^3p4PQ6pBP5UUCOrBI@LP1J>M2>Q8V5BrZT:haGR[KM.PEM)gMuB"BQiNTRRfL/"
+^''OhI#*p`OSk.>OSt7;OSk4BOHG\(OSt4?OSk=@PQR5<Q^7H6s-WeRs-a+\S=Z=ET`1YaUAghd
+T_kD_UAgqgV>d:hUB76gV>[7kVuERmV>d4tUna`\US=HUTV8'OrLX"Zrgs(\rLa:eU8"?Srgj4^
+SY)MPTDtM]SHbUTSXuFFTDG5\T)kX[rLj4cqP4(brhKIgrhKLfoqVDYrh'7bn=ouZrhKFds.fRh
+s/#Rhs/5jns/5dns/?!sql0=iql0Uqr2Th!qlTn$ric:)!4)R1rjDd7rO2d:rj`*B]Y46Ws1]2_
+`5]m@bg4_gg"bKEkN_I)o_deM,.=;.Lkhk<d@,l>R]"f$LjrES=-?RLS"s1j=C,37Y-4q3q60^U
+qMbE3s,-c3s+p]1re:E,`rGu9b5WTuZ`gLG_7[msZb!KCXg,(4[CEi\`P]3n['d<HYH>%2rNH"!
+<ecBdM2R=QO-#NgPa.T&R[]h=T:r!TUo(&hWiW>*Yd(OA[C3TU]=bhl^r!t,`Q$!@bKJ/UcdC.h
+eCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirqu]moDX=@
+JcEpnJ,~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH:%%E8lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>pI>%),`Fb,,3K):,u
+J,t.KomQL\r-S3brHeWZA7K3MB,FHnI!^-`GB\1OF)c/<DJX-)C3+E9F*)I#Er_7"Ns1Q'EdhqN
+p3cgcpj<-iI!kd=rI4`qqgS0erI=s#JqEoQs+L9'rJ(-'"GhhgLku"d!/g`3rJ1H1qhPK6Ll$qD
+LPL]aL]2u.L5#V[!/:?*q1f',KnP-QL&-N(L\QW(K`Qp`pkJ[$!/CE*rJ(9+pk\m(r.t9-regW1
+reUQ/s+pW/s+p]3reg]5s,-Z2!0$K,r/:W8rJgl;r/Uc;rK.#@rK.&Arf[5D!0mGI!1*VLrg*PM
+"dYLAR$a<@RO4GiQBml*S"61EUSOcdX0&V4\@fYtcdpq4lL"*4pA"I[qYU3hrq-47QAg67G_qHN
+J95UOJuEg-Ak$3"DFenrHqm@0;,0iCL4k?XL&?r,N;eb8MZ&D3M#W80L&cqgrttb4q=aFLmHWlq
+iSE8?e^;^da2Z'6^qRMZ]EZ'`^VI\&_u@UQ`W!mT`V[[S`W*q9`Q#s>aND]Ncd:.lg"bKEkNhU/
+q>L?ffA`<`P*))qQ'dPkO,f'UNJi^TP*(onQ&go`NJiVkLAci$KN<h_M2@.LNfT9bPE_?!R$sM7
+StD^NUnjlcWN*&%Y->1;['d?P\\#Mf^VI_'`5Ta;aihlPcHjnce'uq!f@\g2gtgiEi8N\Uj5oFc
+kNM0qlg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>U6gqu6NkrU^#>s+13ns*t~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH9()*5lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>p884uWPr_`)]ohk`e
+r))`Us&&Si"App00JWP_&iDs@5<h:n4Zbbg4$#D^2`ETNr]:?G4$,Pc4?P\&:'40R8Po:`qc!Gk
+qc!Jnr_r_orDN_p;tsAe<WH.t<:s8k<r>tq<r>r$<`N1$<E9#t#?=`&<E3($=8l5(='/O)<`f0!
+#ZXi'<E3!u<`K#rqc*JnrDj&$<)Z[oqc*Vqqc3YsrE&u!rDs)%<E3)m;ufqj<;ono<<#to<;oku
+<`f3!rE&u!s&]2#rDi\pr)`o!nQ5WjqcWl$r`T/$r)Wl#r`T5(r*0#&qHNu)!*fG+s',M.s'8`5
+?!LT9<``@*=^#!5>[:ZC?t3e^C2S'=Jr,VUS=l^XXfo"8ZaR?S]=bei]t_=u_Sa=3aBD\D:/Ftl
+>"V:R4[Mt11,^U<.QT+L7n5Hp2**`Y<DlXlq,.'LqMbE3s,-c3s+p]1re:f7bg=nkf\5-;hV[8j
+iABHKh;$Z5d*9\N]st>KVkT`MP`^o]Kn4]"H$47KDes-#B4YXbA7]=aAnPdjC27['DJsLlEW:"U
+EW'kTEW0nYDfBXmDZ=VmE,fo?GBnObJqf5HQ^jeJR;ddb=]\^1=BGH%$rp5,<`<%!=BAO*=',B%
+r`&np!)WVkpeY"GLP^kGN/is\P*;,qQ^F52S=Z@HU84T^Vl?\tXfen5Za@-K\@K5a]t_A"_SjF5
+aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$bQ!(~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>pRAp&<LOo:j?T(SWS
+SGo#XRf8`TR/`NQQ2m3IPlHsAP5^[EOt_iOKnG8?N*qF<V5'cZTUhXDS!fS-OckfaMjTp"R$jA3
+SXc1@^:q7o^T*?AKoqMpOT1C@OT1C;OSb1=O8tFAO91Q-P5UUDPQ@&8pm;#JrL*\Ss-j+\StD\T
+T`ChdUB70`U&LbgTq\9VrhTRj#,J)kUna`^rMKIi"/_unV>R+kV5'f[rLs7as.9@aSXobOrLa%]
+!29@c"JDBYSXoPJs.91[rgj+^pn.V\rhBCc!2B.]rhTLfrhTRhrhTRh!2TCbrhBCes.]4^!2TRg
+s.]Ie!2TRirhfXls/>morM]aqs/Q!rq5OLqWiGrqs/Q(!!3H1%!3Z='riZ:)r3-7-ZaBV;!4Mm9
+#e7FU]">Vf]tOEZ'>MB#`5]sEdF6_$gu7DZm-sT?r8IZ#ag%4jO,:oh]p+>!RAm-@Q&g!BP%%Rg
+TVu%!?X6m>XK\e2q60[Tqi(N4s,-c3s+p]1re?=1+O%3sY1<!OcaU*d[]QX:YHY@C\%KMo^:1MX
+Za-g;ZEF/0po\%ZL51VCMi<[WOckonQC+&.S"6.DTq\?ZVl6VqXKA\1ZEppH\%0&]]Y;.r_Sa@3
+a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0i
+qYU0hr;?Nbrdk*#s31Ln~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>pL?>"%nH2W<`K):,s
+J-(4LIeJ3bI//-cHN&7&BOt[_B4kpUBmk>SH$OOTFT-:]EGkbls(VOTrcJ-\%!6Q4F,l<AO,ea4
+Cj#Z'rdF]ls*OBcq0i0is*srqoRHgi!eGrTre(3's+UK-re:<*s+^T1r.k<.%#9XpM2@+HMMd7J
+M2D4frJ:N1qhb?/!f)SfreLH,s+LN-Kn]J[r.bN5LPUb@KnP-RL&Qi+L\-?$L\QW$LB33dq1ej'
+!f2\ireLW4Lku"b",MeiM"$9#L]3,0L]*#/MZ&J5N;SV2N;\\7N;nh8MZ8V3Muo!!NVSV5NrY:>
+OoCIAOoLUBPQ-jKQ'Ra8Q2d0LQi<<NQN<JArgP4&R$a;1S=Q:HUo12mXg,:E]=u/'ce%(:lgF?:
+q"X[]qu$Elrpg"5TojtQIsIZKOF)"`Fb>6`F)+liDc'/SH%&F^;c->ILkg\>q1\^*qi(N4s,-c3
+s+p]1reBS8)>s=(oC2/5kiC^Zgt:0*ccjJN`59@*]tD&X]El3b^V@S#_Sa=i`VdaS`VIOP`tZP6
+aN2KHc-Oecf%A^5iT07ko(W%Zs!$jqUR%()WOS(ZO,K'[Mi*LRMN<m]P*2/oNfB!SLk^S<K`-W"
+KOKRhLP^nHN/is]P*;/sR$a>3SXuLJU84W`W2cl!Xfnt7Za@0M\[f>b^;%J#_o9U8aN;WLc-F\`
+daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjr;H6d
+JcC<$bl<1~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>p88PDiT:]4/[;Y<oc
+;ZBVY;#O8g;A(f@0ebC?1cIN_5=%Fp4?GYe48q;?2Ztrp4$>Y(48qAB48hnW9g2'C;>F2h;u]bq
+;Z]os<;ohq<;oho<;]\p<;KVh<rQ&!<E/Tjr`9"ur)W\prDinurDWr#<)cju<rQ2#<rZ;"=8Z+u
+<;ont<WH+u;u9Pl<W#l"<E)mqpf7>ps&B&"q,[Psqc<f!<VBAl<Vobq<W,no<<H3!;cN`rr)E\r
+!*&ns!`i<#r`&r!qH!]"=8l8#<VTVp=8c1n=8c5$=8c7t=T_i1>$Co.rE0&#"^"o1>$>/0>5VV"
+>QA"->5qe->[./1s',M.s'5Y1>Q.h+=WpsQ>[CcF@:Eb[BPM@%FF8b#PF8#<WNEA0['dBR]=bhl
+rkU5(_o0O6aND`OcHfj&<DcLg@9$;u7RTC+5X%(Y/297@0M"]'3&WiZ3E/pV;,d9fqi1K3repf6
+rJCQ1s+gT.1Y:=6gtprGi8N\Si8<DIg"+TtbJh6,ZE:(#Sskn+N/<7?IscNcFE)58BkV-jARo=_
+Ac?9HBPD3tD/O92n8\AHr,D^Ur,4N5EH6,AG'J=]J;&i@PF8#<Wj&nEL6,hH='9'J='&C&<``7"
+<`E1$<`N4&<``:%<Dl^o;,C*f;><srKnbA>MMmFRO-,ThQ'Rf)R[]k>TV8*UV5L8lWiW>+Yd1UB
+[^WfX]=bkm^r"".`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc8nac8B
+oCW%Ts7QHerV6Egs8)Wirqu]moDX=@JcEsoJ,~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRp]cBFaT.<qjm5Jp722R
+rL<hUrgEeRs-EbPQ26aFPOt"QNJraGM2@-t@&KcsU7e6PSXl:?R$IZ5%#p45R?s8.R@Bb<S"9Ml
+#/=EjGCcBJrfR,?!0@)?!0@,@!0R/?rfR/@qiUl@r0%,FrfmJLq3V,KrL!nZS"#q=St;VST`Chc
+U]7(fU]."fV#$nhVPL'eVZ3RoW;`drW!]H"VPU,bVP^2cU]-qjU7n9RTV).RrLa+_!hl9\rh9If
+TV)4TpR_GWrgj(\s.B%Y"/2H`U]-t_U]7.iU]%"fU\pqdV#[=jV>d7iV"g_bU@Y/[V#-qcV>[:g
+VuEXiWV<FlWVNRmWrT7#XoGR&Xo>L'YPtd+Yl_8=[/IB8[^WcW\c0/D]=bei]tXK\&Ac<)b0JDb
+f\>BIl0e*7qYo:M,IXM6Mi+=2]q(.3HEG#POgn[q=,g6`SY)i`>$kQ=YH4q1YkbI&Nr4n6N;eb8
+MZ&D3M#W80L5Q!R]s4ZUmCCNVZF79JX0]%7ZaI?V]#M[u\$i]PZECI8Y5YX!Y$6U7Ll%"JNK0'^
+P*D5tR$jG6SXuLJUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$_o9X:aND]McHaeadaZdtf@\d1gYL]B
+i8ESSj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\jmeq>^<hqu-HkrU^#>s+13os*t~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRoER"Bl8'Dqgn6gqgnZq
+s*k#tp3l^`q0W$cs*G`!B4kUaB4t+<I<p6cG^"=SFEDSCE,BE-CMS!5rH%mYrJq/C8t9X:KR<WE
+rdF]l!.4]m!.FWipjN*irdXoro7-^hrdt0&rIb0)re:K0L55_^qhP$(s,$f7pPK!0MYr;2MYr>2
+L^T&qLkgb?LPLV=Kn]GZrJ1?-"G__dKnT5Tre:N1L5(K^L&d#)LB!&)LAZi,M#2u,LAZi*M#`A2
+M#iEfrJ1K2M#E21MY;l,M#N/0M"uo*MuSb7MuJ\2NW4t;MuSY7Mti52NW"n5O8k=?Oo:@COckn*
+PQ$gHQ2d0MPlR-JQiE?UQ^F//S"-#JRi\,nU84]eXfo(@]"c/'bg=npiofXso_81Yr;?Nlrp0S.
+Q&U??H&7?AJTu'HL5pUuQ:sY9D+REIH%/O`;Gg2HLkpi]K`I/2NVe\6MuS\5M>rD3L]3%nrtbS0
+p[n"DlfdHihqZl8e'Q@\a2Ps4^](qG]El3b^VI\&_o'Fj`VdaT`V@IPa8O'lai_fNcHt"hf\50>
+jQGn!o_JI^s!.16e<uM]R^nTNP`(T`N/N^TMiNm^OcbuqO,f3WM26k@KS9>YpOlb)L5:\DN/`jY
+OckroQC+)0S=Q7ETqeE\Vl6VrXfek3ZEpsI\%0)_]tV7t_Sa@4aN2NIbg+M\dF-Oof%8R-g=tH>
+hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kr;6HjrVc?eJcC<$bl<1~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRmoqB9M\J]qbci\p/1`c
+s&&)Yqbd>j)Dj3*0/>=>2`3rg5<q=o4Zkki4$,G_2E!ELrAjp?rB1*A#u=8j:/<619i4ja<;]Z!
+;H$Oo<E)rr;u]hr;uBSr;cH]p<;T\q<rZ1s<WH/!<:a,i<rZ8#<W,tr<W,r'<E<+"<)cjtr_ru"
+<`W<$<WZ?)=T2D#<WlK(<)clq<Wc?$<)`Znr)N\rr`/ttq,IJs=',B%r)Wl#qcEYq!*/horD`hs
+r)E_rq,IDor_ir!<E<+!r`&qtq,RGor`/nus&B5'='&F&<r5tr<rQ2"<r5tj=SGtu>5)2">5_\'
+>5qh)>lS+.>QA"-=ohi2r`fD+!*fG-s'>Y0=Bes5>[CcG@q0(`BkqR*FEr:dLldplTr+rs['mKU
+]">Yj^r""-`l?'?aN;WMcHab`daHUn>?Fd!;,gFs91D9:6:O:"8h)&84"W0W6q0'm3]]9"<)E<d
+!06u:qi(N4s,-c3s+p]1reCI1!T;r9i[*R@hqd#<e'Q=Y^q-nUWMH/UQ'.,aKn=f%H?XIOE,99&
+B4YXbral(@#\RjeCi400E,b>e"EJR)EcV/!s)S-Zr,=]:EcQ5DG^=dfK85DJQ(+JFXL#FM_T.\5
+H!OQS>@pr<<``:$<`E+#=B8F(<`W:)='/I&<)Z^l:Jh$fpJ>(JL5:\DN/`jYOckroQC+)0S=Q7E
+TqeE\Vl6VrXfek3ZEpsI\%0)_]tV7t_Sa@4aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kr;6HjrVc?eJcC<$bl<1~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRq-,RGCl"PSai<GSH,2X
+S,\rWR0K%FQ^3r&Q2?gGPP((]N/E=@Ll%!rUnjo^U7\$KTq%U@Q^*_rOGo*aR@'A0S,SodS\;_N
+^:f,[PC/=NOSt=6OT(C?O8tF@OSk7>P5LLDPl6jOQ^F,,R$X0=R/WNRRfAi[S=Q7DT`1VbUACYa
+U]R<eV#."fV?*TlrhfmrVl6PnrMoms"K85rVPa?j"fA,jTq\:\U&UbcTDY8\TDbG]U&LbdU&L\a
+T)5/ZTE(S_SH,8\TDG5[U&UkeU]-tgUSRmar1j=fr1s@fs.oIerMKOhrhKLhrM0Ces.]RiqkF.e
+rM0@fr1X7gV5=*eqPX@lq5O:lr2K^rs/Gjp!3?("riQ+$s/l:'s0)F+"0o2>[/@<5\%'!I])TGB
+]b.un^qmq-aNW#^gYh/UmIU,PfDd)T\=/VHLo[\eR#-3YVq7'.GufNEP#Y_UUfgl(?X$^:XKSc#
+Y5jU]NVe\6MuS\5M>rD3L]<*druf%^Ye&K"_Srmi\?r<AYd(I>\@]Do`4NLc[^NHEXg"r,YP52$
+KSG5;M2R=PO-#NfPa.T&R@B_<T:r!SUo(&hWiN8)Yd(OA[C3TU]=bhl^qmn+`Q$!@b0/&TcdC.h
+eCE.%f\5'7h;-uHi8WeWjlY^gkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@
+JcF!pJ,~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRois.CN4UnJan?hJc(&u
+J,XolIJJ9dHi89jHNRqn@UT1J%T.V#I!L$^F`qtOF)l5<rbVUL!-8'\&T`&8FE;PbNfT6]@WQm8
+G^Ff6I/eWjI/\QkI/JBmI/JElIf4crIf4crJGaltJ:INJ!eGrTre(6(re:B,r.k<,qhP')s+p`5
+r/:N2rJLZ5rJCN2!Ju^5M>`8-LB*)-K`Hl)L\ur3LPCP;KS92UrJ(?+rJ(?-r.Y6-LAlu-L'!-b
+LAco*M#2u-LB!&+M#W>1MZ8P4L]N?grJCQ3oniX'q2#*/rJU]7rep]5s,Ho9rf$f6qMbH6rf6o;
+qiCf?qN(`?P5CIBPl?sJQ3*>;QMm-qQC+&-R@9V8SXl@FU84`iYdM!R_8a^If%]-Bjlu.%p%\F^
+roF))Z]p2lJ9d'1OFD7eGClf:HsoKRA8Oh1H[SX`9i=b_M2-h?L%p<$Nr=t7N;eb8MZ&D3M#W81
+L@,!YrVH9\na>`,jl51Rf[eKtbfRoE_nj+$^:jNY#edse^qmn)_o2Mmqo8WSqSrQUrlFuY&^/GF
+d*gIsg"bKEk3DC*pA4d_s!$@bS<K/&Vim@4NfT9^MN3XTNK93aP*VJsO,]*ULk^Y>LAlo#K`?d+
+Ll%%KNK90aP*D5uR$jG6StD^NUSOcbWN*#$Y->1;['d?P\\#Mf^VI\&`5Ta;ai_fOcHjnce'uq!
+f@\g2gtgfDi8EVTj5oFckNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>U6gqu-HkrU^#>s+13p
+s*t~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRn#qA:/=[[;=RQX;>a>l
+;=.3V;?'Mr1,1L;r\F[75sR_#r]L`R5!1ng3]T,W2`3HR4?EC%!B`IB:'XKH5#+pR;cEHjqc!Mo
+r`&qtpf$odqc3Yss&B)#=8c2"<W5ti<W?)&=&r@%<W6%s<W,tr<<H9%<`T,us&B)#=8l8#<rc;"
+=8Z,!;ufqq<WH/!<<#ks<;T\n<WuK&<E3!tqGdMrr`B)"s&T8(='5H&r`B)"!*/tus&8turD`Ag
+r`9"us&8qss&T%trDrkss&Att!*9)#!EN5!<rZ/"<r5tr<rZ8"<WH8$=7TJa=TMW-qcWu(r`]>)
+s'#D+r*05-rETA,s&oJ.>$Co0!*];*s'>Y0s'6jU?t3b\Bl%^-Fa8FgLQ%:YR@^4RY-GCF]=u"o
+^qmq,`Q#staYM#^bg"DXcHjkbdaQ^reRr)c;c-Fm<E;[\6Tm_25WCSJ1HRZM0LnVm2)[HS3E&jS
+;"mfeNr=t7N;eb8MZ&D3M#W81L&g33iZmF?hqd#<e'Q=Z_7R(WWhc;WQBI5bL4Xo'H?XIOE,99&
+B4h'QralCJBkhI%Df9UbE<(%WF8p:[F8g4[E;so7EcZ;DFa/4[It<?3O->s%U8b?(]>)8)c-W5/
+Lg4+b>$t<1<``@'<`<%!=BAL'=B8L*=T2A#;Z]in;#X>d:fi=)L5:\EN/`m[P*2&pQ^F21S=Z@H
+U8+N]Vl?\sXfen5Za@-K\@K5a]t_A!_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GPj5]7`k3(sm
+l0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$c2W:~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;TnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQ\@;9q4MOa@1nXfTJrLEeT
+s-`tVR/WHPQ2m3HPlHsBOs#dALkCM>MI0ehVP9iZTUqgIS"#k3OcYWaN0fp"R@9WCS-ZjB^:qA*
+R<sVdOSk77OSt:AOT(==OSb1;P5^[FPl6jMQ^F/.RJ`ESR@9P4rgO%]St;RIr1O+br1j.brM9Ol
+V>d@gVuN^sX/u9##-+Z$Vl6MkrhostV5'cZr1O=fT:V[HT:c+Ur1OCjTqS-PT:_^Hqk*k\s.B=_
+s.B:`qP!q`rhKIes.oXhq5!tc"/M]fV#I1jVu!7jV>I(gU]7.hUB@<eUSRj`r1s=es.fXirLsFi
+V5:&erMKLjrM]Rlr2TXnpSn4oriH+$rN?1(qlTq&ricL0ZF%";[Kj:O\@K/]]"@sTs1SuY_Sa@5
+bKn\li8j4mpAEA=,dsV9Nf'^5XIkZ,HEOoVKoph3<K's^Un+;b>Zk?:=g"s3Y-@])!06u:r/CW5
+s,-c3s+g`3L5(Tc+O%@'Z-V+:b.+[c[]Zj>Z`pdG\\5bt_76q_['m9CZEF21p9%hWL51SAMi<[W
+OHPfmQ'[l,S"6.CTq\?ZVl-MoXKA\1Z*UgG\%&u\]Y;.r_Sa=2a2lBGbg"GZdF-Lne^rF+g=tE=
+hV[8MioB+]k2tmll0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3:Ro~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;TnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQR=^Yo\Fb9:;nUgXhr.+fs
+rdOWj!.=corI"Efs*>K.Bk:jbAnP^P:jm\9H$FITGB7kIEH#gpC]nNpF*2X(F:3/4FcVQDO,f]U
+D0>i)qgA?jqgA<ir-\HkrI"QlrdOirs*jrsrIFirrI=p"JGt0#KDpQ(L&Qi(LB*)+L]3,/M>iD0
+MZAY2MZAY6M$&WnMMhCk"H&%mLku"b!f2Vere:B,qhP**re:E,re13'r.b6*rJ(<,!/CB+",M_e
+LAH]&L]WEhL]3)3LPCS>qhP6/r/16*re^`7MYi81M?/Wmq2,-/!Ju^3MZA_8MuSb5NVnh5NW"h9
+NVeb7O8=t9O8k:COckn(PQ-mIQ2?mGQQhfbR[T_8S=Z@GTqeNdYdV-Y`QQZ\hW!\^lgF<8pA"O`
+ro!f$QAgHDG`.E7JpM?LKoCS"E+3'@Ce.3HH$i@]9MnS]Lkpe>pOiO,r/LW5repf6rJCQ1!f)Mb
+nGaC)qtKdRmH`utinrMCf$_phb/_H<_8!^u^&GYM]tV7s_8=(,`;R[M`r=$Y`rF*ZaSX*Yaq;kC
+cd:+if@es:ioTCknauVTo`#Epq4X(;PGFt=R#m>iO,X'ts,ISOP*2#pOcYT_Mi!4CLP5Y\on6_-
+LPUeFN/is\P*;/rQ^F52SXuIIU84W`Vl?\tXfnt6Za@0M\@K5a^;%J#_o0O7aN;WLc-FY_daQ^r
+f@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$
+c2W:~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQC7nZQP;"RWT;YEuc;ZBV^
+;#4#k1bpd=r\G6H2*jJl5<_1n5!(ng4#o;Z2E*KSr&ag=#Z"/i:/+>M:f73jpJh&h!*&kr!*&en
+oi1ih$!(&*<)lq!='&H%<W?%i<<-(u<<H9'<`],urDrhrr`8nrrDrr"r`08*=BAR)=&rB$<Vohs
+<W?#";cH`n<W#ns;ufqt<;KVm<X_u0=BAR)<`N1%=&rAs<W5tf<W?,!<=2]*<E)t!<`N.#<rH,"
+=9)D$<<-"t<W6#!=8l5'=&r=$<r5tt<r#hs=9)Fr=92Q,nQGim!EiV)=TDS%=oV\&>Q7t->Q7t*
+>6%k)>Pq_+?2e.T?X[DSB5DI)FaAUnN/j*fR@g7PX08k=\\5bn_Sa:0`Q#s?rlP5arlk>cs3:_m
+d*^8>dKS$&=]/'pr`'q17mf[16UEpo/h8>4/hfgc7Q<4^3]T3"<)QOhpe_$Or/LW5repf6rJCQ1
+.#3P3io/kSh:gK0dEKVH]<n`@V4a<DP)bBRJq&/oGB@kEChm]sAnLsPs(2LKBkhI$Df9UcEW:(Q
+F8p7\EW1"XF"qcZGC"XcJVAo>P*VQ0VQ@)4]YMM/cI17qgQ\@9>$>'8=B8I&<`W:%<E<4'<E*""
+r`9A+=&r=!;c-@fr_`Ac@>'AjLl%%KNfT9bPEhE"R$sM8StD^NUnsueWN*&%YHY:<['mHR\\#Mg
+^VI_(`5Td<aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6naZ2@oCV\So`Fj]
+p\jmeq>^<gqu6NlrU^#>s+13ps*t~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQ`AT;pGOoCsFSai<KSc##V
+S,\o^R@'A.Q^3r&q3:oCqN;t[MhZkAM2P`9V5L&\TqIsKSXZ(6PEM)jMjTp#R$jG5rL=2-^:h4o
+D:3WZQ2QgBOTgi/OcYZerK.#@!0I)=rfI#>!KrZFP5gaEPl?pNQC!u,RJ`EPRJiTSRg#=RStD[L
+rh9FeUA^kaV#."gVY[4jVu`ltri?F.XK/A%WMlbnVu3IqVPKu^rhBCcs.KCarLj1arM':b"JDBZ
+St>hO"JMK^TqMCWrh0%[!MZ@gV#R4iV#@%gV#I.gV#@.iV#@+iVZ!FlVZ3IsUnso`Una^`V#R:k
+V#7%hVZ!=iV>d@iU][HjVPjBir29Ros/>goqPsImpo=@ps/c4%s/u@)s02=&s0)[3Za@-J[f3`A
+\@K/]]=bhj^AbkU_SjI9c-b+siTKY&rQkKioYmJhQ&2H>Vj`TnR&AT%NfR=a=--EbSY;ud>%(`A
+XKJb/Xg%T(s,R&;r/CW5s,-c3s+g`3L5(Tc,/:Le`8nVS]X#&WZECO>Z*h*O]YMS+\[JlQ[Bd!?
+Y-"n2p9%YQKnbA>MMmFRO-,ThQ'Rf*R[]k>TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`lH0C
+bKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6h
+r;HTcrdk*#s3CXp~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQU?"RhkHiAWiJan?hJc(&u
+J,auhIJnQgHS/uDART4`BMa&'I!Ks]G'/"OF)l2:DJa3(F*)MHF*)PHFEM_eO,f9]<h3uGI/\Ki
+I/A?jI/A?kI/JEkI/A<lIf=irIfFoqJH(,tJGt-"K)UE&K`6]*L@g9"M#W>3MY`52N;SV6Munop
+M>iA8Mi*CMN;eb7M>E#.L]3#/LPGb_qhP?0L5(E]K`-W(LB!&,LAll-L55b_nV@.#s+^W2M>W20
+LB*/0L]</3LPUfbMYN&.MZ/P2M?AcoMi7Rls,6i5s,-r9Mi@Um$B0n$N/WaUNfK*YoT&j/r/U`:
+qiCi@OSt7?O8tFBP5CIBPQ7!JQ2m9MQN*9oR$jD4S=?"=T:r$WWNED5]u/%Bg#(iRm-sW>p%S:Z
+rS7E!_jlO6J9d!/LOaSaGCul=DJi$M88^pkH[:0::/XqbM2@"BKSK8Ts,R&;r/CW5s,-c3s+g`3
+L5,@#(&e%(p%%P:kiLd\gY(0+d*0VP`5BFj^&YkG]El3b^VI\%_Sa=k`V7CMa8X0[ao'<\b7VtD
+d*^=mf@o$:iT04gn+6;NnGacujI;BsR];U@Oc>KaN/WdVNK90`PEV<!OH,9YMMR"AKS5&5p4Q\'
+KnbA>MMmFRO-,ThQ'Rf*R[]k>TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:k
+eCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#
+s3CXp~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQC7S6BN;#XAc;=RQX;>jDl
+;=79Y;#iEO0`Ej32*jPn5X,01"["k/4$#A#2ZPc849mr/4?GYe4?WU<s%NYH928;^;Z9Vg<<#ns
+<;ol(<)lpt<)Z^p;cENl!*/tsqGmPpr`/u"r`'/%;c?Xq<E/iqrDWer<;okt<rQ2!<W,r#<E)su
+r)Nesqc3GmqcEeur`/_o!``3!qc3Mo"'&<"<W5tq<<6-#r)O#%<``=%<EB*!s&K/#<;BPm<:s8h
+<rQ+q<rZ/&<``@'=8l>%<ruE&<W#nt=8l5#=8l8#=8l7m=8uD&=o2=k=o2>$=8l>$=oVV'=oV\*
+>Q.n-=ohi4r`fD-pKRT$.:$1`?!^oH@Uit^CN+EBJVT5IQC4><Uo:>sZa[KW^;.V(`Q#p<aN;R'
+b5TTabl>iib0.uPc-?75!71Vj,\g[f<)Z[r<`)FZ6p3k45rCPM1+G@;0LeK"2`<ZW3E9'W;,I!a
+s,R&;r/CW5s,-c3s+hhRL5+R>f[S?o`k]0mY,\=lS<oG"MM?_4I!KpXEc5c0B`;WAAcH?IB5)*s
+D/X?3qf2XVqJlLTs)\-\"*8R*F8^.XF!YpNG'J@]IXm',Mia3kSti9f[(3oga3;r[e_/a7iM_Zh
+?<UH8r`:%<<E<+#<)lt$<E3+&='/R+<`N1!<Duaj:Jk!_:gAX,L51VCMi<[WOckonQC+)/S"6.D
+TqeE[Vl6VrXf\e2ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$cMrC~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQ\C3OuZS,JrSSc>5ZSarBK
+Sc"udS",t;R[TY3R$X,)Q2-[DP9c<TP*1f`LP1J@N*g(jVkTl\U7e0NS!o\/P)tcbN0p$$R[flG
+S-kk$^:h71Q?I\;Oo1=7OoLOAOT:L>NrY:?OoCOCPQ-gGPPpaEQ2d3NQiNQPR/`TQRLYgWSXuFF
+Tq\<WU8+KZU\^eaV>d@lVuN^qVuN[rWi>ruriQ4$s/H1"Vl6QnWW/muVkp3gUB@6aU7qIW!29=b
+r1WnX!20:aqk3t_!2B@as.TXkUnjc\r1s4br1s7ep8.keV#I1jVYm4iV>@(gV#[ClV#dHirh]^o
+VZ*FlVZ*FhVZ3RoW;*@fWr&dpWrB'tXT#@$XoP[)YQM)5YHRl.s02j8ZaI6M\%&uZrjifU]Y2%o
+^qde'`Q--Idam12k3r'Dbl8ouW1&m.^T"3)QABjn]r$dnJmaCoQ;q.ZToN>]?<g^<XK\f"YQ'X]
+NVnb7MuS\5M>rA4LPC]d,/1Lk_Y_Kp`4!1e[BR!CZF.0P]YDJ)^ppe]\$<-<Ycb15or_AKKnbD?
+MN!OUO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)
+g=k?<h;@/KioB(\k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQT?taG"JGk)qJcC9"Jae9h
+Jc(&uJ,auiIJnQlHR!obHYI)&@V9=e:f)LdH$F^]G'A(LF)Z&8Ci!j$F`_bIFEIJ(!HaA$NsK$7
+BQ&-DI!^5<I/SHpIXQYCI//0jI/\NsIXQWlI/86mIXckHIfFooJ,k)tJH(2uK)UH'L&Qi*LB*/+
+L]*#/M>iD4MuSb9MuJY;Mi<UQreq;EMMd=NMi*CMN/`dSMuJS6M>W/5LPCV?L5,V]reL]6Lkgb?
+q1\j'reLK-"c%hdKnbB^LA?W)LAHZ.LkgbAM>2o,LBWKjLkgeCpko$,s,-Z2reg3're^]6rJ^`8
+oSrp2rJpo;rJp`8r/go?!0@,@s,m;Dqih#Dr0IAL!1<bP+IJUeS=Q4@SY)UNVQ-c'[_'H#eD&sF
+lgOE:pA"L]qu5:K-'jRFI!M'8MM$7rC5Iq%EdqOmASlEW9R;#':/4Y`:Pjm`KnkEXK`@)2NVnb7
+MuS\5M>rA4LPGR')?0O.p@@\=kiLd\gXt$(ccaGM`5BF+^:q;[]F;Kf^VI\%_o'F2`Q#po`;mpU
+a8a6\ao9E`bKBe,'?n_Hd*^=lf@o'<ioTCin+-2JrU0\/j6W5!PFBI]QBmVoOcGB\NK0']P*2&r
+R$!JiN/WOIKSKJ[on6D!KnbD?MN!OUO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q
+_8=.0`lQ9EbK\>Yd*^=le^i@)g=k?<h;@/KioB(\k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojc
+q#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQC8PMrU;>jDg;?'Jl;=IKY
+;>a>l;=79[;%#390JG:=1c@6W5=#33'0SN@4?>M`2`EWR2Ea2c4$5Se48q>J:/+JY.mHg*;uBPm
+;uBSp<W5r!;cH`q<W?%t<W?"o;uouur`/tts&B&"rDihrrD`hur`&qtr_rbp"'&B&<W#hr;ZTit
+qc<\rr`0&"<;ont<rZ7q<Vohq=8uA(=&i8s<WH/!<r,hl<q]Pm<Wc?&<E9$!"'8K&<rQ+u<X)Q'
+<)lpt<;T\q<;0D^<rQ/#<rH,"=Sl2!<r?%t<WH5"<rZ8"<r?&!=RTAm>5VP%=Sl2!=Sl8$>5qh+
+>lS"2>$G6:>Q.n(>Q.n,?2n4V?!LZB@:NhZBPVO.H@^m4Q'e)7USb&nYHkXJ]YD;#_o9X9aSj3^
+b/qd)apcD5a2l<AaN2KGb0A00c2Z'8cd5p";G^=p<E;db7RTU36U3X`-o*nG/MT[^5rLV]3]^5=
+;G[!`s,R&;r/CW5s,-c3s+h\NL=O_s`k]0mY,eFnS<oG$Mhcq8I!U!XEc,].B`;WBAc?9HB5)*s
+D/X?3r,M^Vqf2RT!crI*rcS3^rcA*[rcA*]s)g>HH@:6nKSYSIPF%c4VQ@&3]>2D.cdUFrg>1ZE
+i8M1nN*BLf>\R8A<`W:%<`W4#=B8C'=]ea,=T2>+<)Q[m;,C+eoh\_BKnbD?MN!OUO-,TiQ'Rf*
+S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)g=k?<h;@/KioB(\
+k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSn;SQFb#RESc55VSc,)WSb8TN
+SbnodS"-"<S!oe6R$a5+QBhH6!1!MI,*S7TPELi]K8>DCNF8QZVkToZTV%dER[TJ)P)tfcQ^F//
+qO@i)^:h1md[kc=rfR2AoT9-8r/h&BO,s:%!frG*rK?r>s-*PLPl-dMQC+&-R@*r@rL3bU"e;-S
+StD_SU\pqfV>m@hV>d@kVZ<[pVuN^sWiPos)m$*?WMleqWiE"sW2QPhUnjc]U8"<RTqS-QU&:Y_
+U&L_`T)bP`U&UheU&L_bT`Um\U&LbdU&:VfUnsl_U\pqcU\pqfU]%%hVuNUkV?!OmV?*NjqkX:i
+rho=as/5jns/,pqV5='ds/,mrVu<RmWV<FjWW&ptX8T.!XoGR'YQ(j,YPYR'Ym7VB['d?O\@MOK
+'>2#m^qmn)_o9^@d*pY%hra:trlP0cbb:DiLT7>PT9=YlVq@<!TV>:aN)s5]SYTIo>$bK<Y,ne.
+YkG7#Nr=t8N;nh8MZ/J4M#W51L5Z'Ud(6]sho`gU\[T,YYd:X@[(*ZX_8OC2\@8oS[BQg=Y-5&%
+Y%!$:L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?YVPgDnXKAY0Z*UgG[^`l[]Y2(q_Sa=2a2lBGbK\>Y
+dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTc
+rdk*#s3L^q~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSlf90C2eKMJc:8sJc1,tJan?i
+JHLFRJ:RWKs*jTgrHnTlrd4uuBP(^cB4u!Vrd5B)H?aUWF`VSEE,TW1D/+*3F*)O$FoII%N<Z,+
+Cit,RIJS?jIJnWmI.i!gIfFfrI//0jIf=fuIXckDJ,t4Or.4ct#(qS^KnY89rJ1?-"G_ehLPPha
+!/^]4regc8rep`6s,Hr8"H/4sN/[ao$B:(*Mi<RQMi*@JreUT0!f2VdqhP**s+gT.rIk?.LPCQ_
+L]3#0LPCQ]LB*)+LBE?fLPGb_!JlO&M#N/6Ll%"HM2I2hMuJV5M#`G1MZA_2MuS\3MZA_6MZAY6
+MuJ\8NV/>1NVnh8O8b7<O8P(>Oo:@BOcoU*rKR>IrK[GMrKnapR$jG7StDUGT:r'ZXKJh9]"uP<
+gYq>]mdp,Gq>1!drR_&Qoq%"lJU.6O*J&TUG_2i=E-R(&7;YUjI<g389MA;[:5Oa]L51KWKE.&2
+NVnb8MuJV5M>rD3LB*)+ru(h6q"F=JmHNcmi8!#9da-.Z`l5j2^V7Fqrk&QN^;%J"_8F40`W!mS
+`W*sVa8a3bai_cLbKS30bQ#fdbn8:KdF6Xtg>1ZGjlu+!o(MnWlMi+)U6h10WgK-AOcPWcN/s!Z
+OHG]gPEqT#O,o9ZM2-h@KS>-QKOTReL5(M@Mi<XVOHPckQ'[l,S"-(BTq\?YVPgDnXKAY0Z*UgG
+[^`l[]Y2(q_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DE
+o`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3L^q~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;PnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSjl4D9Mk^cr_iPhrD<GinP]-Z
+r)3PlnPK0]!\uJ`r\OR3#=1[@5X%=o55dPN3B/rU2`Ei^4?GYerB(*B:Amlh=@Z+`q,75krD`br
+r)<YrrDWbsqc*Pp!*&_nr`9&!r)E\rs&T/"!`W)srDWl!<`W5u<;f_q<W#nt<<6'!r`8ttr`0)%
+<`JiorDresr`B5'<`f3"rD`huqGm>ls&K&!rDa&&=&r@%<EB*!q,Ri&<`W4"<)lt!<E/]ms&Anr
+qc<_sr)WYqs&T)"s&eqqr)WVpr`8qus&]8(r`K)$r`K&#s'#G*rE/qus&K,$qcEu(>$>-7r*95*
+r*05*qcj&)"'o5??i=:W?t*YXAnYmrEd<1jNKTWtTVJB`X0/_8\@TAh_Sa=2`lH3CaN4>#"NJF!
+`5DPjs2+rXa2lC%b5]Wbbl5j5Tj(Vu;GpLp;bBSK5!`"22E=#H-Ts+;8Ol912)@6R3E/sT;H!3c
+!07#;r/CZ6reg]3s+p]1(l#i;['$I-Tq.R8OGemHJ:)ZdFE)58C1mNXrFPt?#A7acCi+*/E;X_T
+Er0kTErU1\FSg4XF8g:\FW5ONI"-^"LPq1UQC=GBWN`b@^Vn4=daZn%gu&+hs5F";,d3kC>[1E?
+:fgb!<``=&<E3.&<E3.'<`iF(=&r@$;H$@f;,R!_@Y9>gL5:\EN/`m[P*2&pQ^F52S=Z@HU84T^
+Vl?\tXfen5Za@0L\@K5a]t_A"_o0O7aN;WKc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'
+mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$ci8L~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0+[oCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSmc>YH\RlWrga%\pmqARs./bQ
+qjmGNs-s%Wrg3hTQBmf#rg!JI,F+LXOH56OMi3I"USXl`TqS*OTUqXBQ^!YqO,f3eR@B\7S,Jia
+]tV4n]UH]_Js2AsOoLO:OTUc/P*5a*$]pL5OHGWeP*2#lP5LLHP`q;qPl6jIPl?pMQC!u+rL!_U
+R@=)Ds.'+[".u6[UA^kcV#R7mVPU*dV>d@kVu<RnW;s%!XTP`.Y-%]+#Hb).WiE%uX8]++W2HMi
+V5C,dUS+:YU&:Y`T`ChdU&L\gT:hmOU8%X^!huB]rLs%]s.]RirMBFfrM0:ds.]RirMBOk!2]Uj
+s/5Ugs/,jqor%her29OmrhfgpV5='d!N2mqVu<OoWVrjsX8K!tWW0!rX8f7'XfSY,riZ:)rNQ=*
+!3l=)+L8A][C3QS]">Pb]=Y_h^;%M%`5Ta<c-Xqkg>:oUoD?T.-+U%IP`)QHWM5f?I[RjJNi@S,
+ITVb5>+M@d>$GHB>?\23YHG,'Y5jU^NVe\7MuS\5M>rD3LPl*T`ji@ujN#?U[CNoUZa$mG\@B,c
+`Q5s0\[JuWZEC@7XfqE#?%R]^L51SAMi<[WOHPfmQC!u-S"6.DTq\?ZVl6VqXKA\1ZEppH\%0)^
+]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b
+s7cNfs7uZjr;6HjrVc?eJcC<$d/SU~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0(ZoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSloH7D0(4*JH1;sJc1-!JaS-d
+JcC9"J,auiIJ\BsC1q3hBP2!Trd5E+G^4IVGB@kHEH#f4Ci!j.FEVeKr,r""#E=aaODAobI/\Qo
+I/JEjIfFioI/&*lIXQZoqL&KqI=6Qnr."Qnqgn`u#(qM[KS5&5reCH.qhP?2Ll$udL]E;2MZ/P3
+N;ne:N/ddp"-&7uNVeY9NK0%uNW+k;MM_:fqhP3-s+^Z3LPPkbreLK-!elA`qhP0*r.k<.r.k-)
+!f)SereUT2reUQ1qhY6,!/^W2rJUK/s,-r;Mi7=g",_qmMu/J3MZScoMuAV7NVnh:O8P%:NVeb9
+OSk7?OSb(>OHKL'!g/Y0q31lEr0I5I,+4mhS=Z@GTqS3WW2m&)[(3rlce%(8lL"*4p%S:XqY^<k
+f)I%\O+r+.MN!CFIs5[PNIl1uB1??$Db*QJH@AUa;c-@cM26qALA$9#NrG%8N;nh9MZ&D3M#W8/
+s!7O;p[dqBlK7*agtC9,ccjJM`59:(^:h4m]Y2%n^VRb'`5KXn`r*gU`r*mWaT'?_b00\+s3:Sh
+&^ShOe'ut&h;@5Sl0Rm0pA+XLruThbTU1n5Xd5B<OHP`bNfB$YOHG]kR$a5%O,]*WL])r-L%U+)
+JqJ`2LPUeFN/is\P*;/sQ^F52SXuLJU84W`W2cl!Xfnt7Za@0M\[oDc^;%M$_o9X9aND]McHaea
+daZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HkrU^#>
+s+13ss*t~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0(ZoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSju@G9i"Ua;#jMh;>j>k;=7?W
+;>a>l;=dW`;$/X20erY`"ZAV25sIU54qKh<4$#A^2`<TT2a0Ad4?>S'49.JA:'aQN7o3#\;c6Nm
+;uKSq;cH`q<VBDl<W#es<EArr!`i<$r)Netqc*Sqs&K8&<)cdqrDihtr)E_rr_inu<E3*!<W5tq
+<<6'!r`0&$<rQ,!<;fhs<WZ?'<r5ts=T;J&<WuQ*<`N*uq,R>ns&K"us&]2##ZXo+='&F&<EK0"
+r)Wi!rDrntr)W;er`0"ur`/ksqc<c"r)`l"r)Wr#<E9!!s&T/$r`K&!rDrht!E`M(=Su>%=SZ)(
+>$5!1='/T%<ruE(=8Q)$=^##.>Q.n*>Q.k/>?Y50>Q7t.>Q7q0?!h"=?QiifAS,RfBl%d5I>!H;
+PF.l5USXohXg#+=]"Gbl^qmq-rl4uW(W=5-^q[Us^:h4m]Y2%p_SjI7aiMTGb5KF0aMq7a<)Q[p
+;H6C^7mfC,69mCd.l/Y:/MT^a7lN=d4#o<"<)QRkp/(gMrf-f6s,6o7rJCQ1s+_DoX/DY^R?Wek
+LP15,HZsRPDf'6%B4bcSAc?9HB5)*sDJsH4rGhdVr,MXTs)\3^s)eBdF`mV(rcS6_s)f9(H$k'l
+K85AFP*MK-Uo:H%\@oc#c-k+mg"YB_i;V^6iZuTfQXEs!;d*4)<EE7&<`N+#=&r:%=]\^,=&rC'
+<E)jo:f($^:gJ[*KSG8<M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lWiW>+Yd1UB[^WfY]=bkm_8=+/
+`lH0CbKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0h
+qY^6hr;HTcrdk*#s3Udr~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH7.'@-lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTAn5e&J<Bf#!hGjOpRM;SrgiSN
+rLNSNs-s%Vs-WhQ!1*DF+H2;:KT(hHNa\c]V4sZWSY)ODS=5b.OckcbR[KY9S=BJI%@t2H]t]*-
+FafI:PEM+*OTU]-OHBI(q3(]=!0[>Ds-!DG!0[5C"-f"6Pl6mIPl6jNQ^O8/R@4#BrgNnXrga@f
+Tq\9VUSO]^VZ*FkVYm:iVYm@lW;W[tX/rG*r3$('"g4u0XK/AuWr]6!rhodn"/VcdU%tG_U&Ukc
+U&CVaU&C_`UB%%eTa7BfU8"EXU8+L^V#R:iV#@(gV#R4fV#I4jVZ3LlV?!OkVYm@eW;NRkW;WXj
+W;iauVPg>hVYd:jW;ijeWrB*tXo5F&YPGF"Ym@YB['mHQ\@K3M]+hok]tV7s_SsL6air/_f\50@
+kj\Dds!@E5R?s&GWhZ5RLRtKtR?a>&D2=:>>+;(VW**A5?!FM9Z*1=7p94FSqi(Q5s,-c3s+gZ1
+MZ4j9]=6;]d)3l6\@];TZEq'N\\,_saMbm)[^``QZ*(C8YOnu"JqJc3LP^nHN/is]P*;/sR$jG5
+SXuLJUSO`aW2co#Y-5(8ZaI6O\[oGe^V@V%`5Ta;aND]NcHjkbe'uq!f@\g2gtgfDi8EVTj5oFc
+kNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13ss*t~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH7.'@-lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQT=Bf<NDgLo(!.b'"m"5(bs+()u
+s*jQfs*Pl$BkCjhBP(sUI=$<dH$=@SGB7kIEH,i5Che*7Fa!\*s*"C&#**)IB5i0Ep3d!kI=;*D
+!.FfnpO*0nI=6QnqL&HpI=?YDIfY"Jr.+Wprdt-%s+LE+reCH.s+pB*!JlU3MYrD4N!#&uMi7Om
+rf-r:s,Hu9s,Ho9$B:"'MM[+DLkgb?reLK/"c%nhLPUcbL\uo#L]</1L]3,.L]</1M>N,/M>rD0
+M>rD2M$&QhLku%c!JlU3MYi>/MZ8Y8MZJcpr/:W8mu7:)"cSG#N/`hpNrG+;Nr4k:NrG(AOHGZe
+rfI2DrfR5Br/^c<s,mAGqNLuFrg*PMr0[MP,+G*mSY2[MUSXrlXfeq;]YhtEgYh2Ym-jK9p%S7W
+qu$Hmf)HuX_MNtuI?TG@JphZbK;!X2GA1#gDK/?rI!U<;:/OkbMM[/gLA$<!NVe\7MuS\5M>rAK
+L]@>Lp[n"ClK@3cgtC9-ccjMO`PTI*^APYM^;%J"_Sa=1`W!mT`W!mVa8a6[ao9H\bl>rfcMu3%
+dF-Opf@o'=ioTCjmdg)Ir8dl&mdup6Q);-cQC!_qOcPH\NK93aP*;6"QB@8hNJ`XLKnk>8oRp=u
+K8#&8M2I4MNfT<cPEhH$R@B\:StMdPUnsufWiN8)YHY==[C3TU]"G_k^VRe*`Q$!?b0/&Tcd:(g
+eCE.%f\5'7h;-uHi8WeWjlY^gkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Egs8)Wirqu`noDX=@
+JcF*sJ,~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH6ga7,lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQT7S$0G:@D$[;#X>Z;YO&d;YErb
+;&;)F0ebC?1Gq$U5X.Lt4Zttk4?>Pa3B$jq'0\QA4Ztkg4?P\f:/"AV/ON6/;>aAm;ufkq;ZBZ!
+<)lpt;cEZps&K%ts&Jtr!``9%rD`hsr)NYqqc!Yt<`W5t<;onr<WlE'<`N/u<;KVm<<#r!<)rlt
+rDiksrDihus&Sqsr`K)"!*0"tpf78ns&K&!r`B)"s&K&"s&B)#=8l2%<``@'r`B)"r`/hrnl5rr
+<E<.#<)cjtr`8kspK7Drs&T/""]e]+<`W<!=T2D$=T2D%=T;J"=Sl5$=SZ,!=o__'<rcA$=8c5$
+=oMM'=nQ#!>l@k.>$G50>Qe89?!Ue8?n#MpAnG[hC2S'=K8#/BOd;K,TVJ?]WN<;0[CEcZ]Y2%o
+^r!t(]tCqerjMs=\$u@H3Ou`6^VRh,`l?'>`l?!8_83n#OE+N(;c-Xp;G9\O5!hk-2E<E@0g%QP
+7Roj72)[HU3`]6\;bp<b;>lLON;nh9MZ&D3L_Y]=SXPh+N/3.<I=$0\Ec5f0BP1sirFHCLB4kmm
+CM[m,E,]f:qf;XTrGqpZqfMg[rH.jX)g6IQIXm'*MN3gaR\$:QXg5CJ_8jdIeCW@-h>Z@4iW%p;
+j8S$aiR3XT=^>0<>ut'/=&i:$<E*"%=&`=*=BJX+<`W1";c6Ok:Jpa\=Fu0ZL51VCMi<[WOckon
+QC+)0S"6.DTqeE[Vl6VrXfek3ZEpsI\@K2`]t_=u_SjF5aN2NIc-FY^dF6Uqf%8R.g>(N?hr*GP
+j5]7`k3(sml0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$d/SU~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2eBR5#\QM6pBSc,/[Sc#&ZSc#)Z
+Sb&?XS!oe6R@'A.Q^7K5%#p.!K8b_J?`0g!TqVIY%%a#ZR[KG)Ock`lR%"#Ds-s[jS=R@-^:h5+
+SpQ0TPE_8pP5CC?OT(C?Oopo2P*>[(s-!MKQ'D62r075HrKR;H!LB)OR/`TRRf8c^S=Q4BT:hpR
+U].%iV5F6g"K&)oVl'HirhfUks/>mq!36%#s/lF*Y-.`,s/lL,XK/G)riH.##cXc#Vl$>eUndm_
+rhBLiU]."dU&L_bU&Le`U]-teU&^tfUAUecV#R:kU]@7iU]I6drhK=c!2][l"f8)mV5L6iVYd:j
+W:m4jWqiUkWVrarVl9Nkql'OooW%nkriH+$s/u4%qlp"'s0;g7[C*HO\Ga&>]`5YX^;%J$`Q$!@
+bg=kmgtgoMm.:.ms!>@XStCq>_l9AtPCK%.gQA@b>?+de<EYiaUfgl)?X-d<YHb74orn=Rr/CW5
+s,-f4s+p]1MuOXe^V@_NlbUWW\\#S[ZaI9P\\#Ypa2c'-rO2p9YHG+2oWD\TK7el4Ll%"JNK9-_
+P*D5uR$jG6StD^MUSOcbWN*&%Y->1;['d?P\\#Mf^VI_'`5Td<aihlPcHjnde'uq"f@em4gtgiE
+i8N\UjQ5Odkiq?slg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<hqu-HkrU^#>s+13ts*t~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2]?Y=4tII)O_K)^DlK)1&uJH(*!
+Ie8'fHjj_"A7B7cC/BA-I!L#:GQ2gbErU%]DJa32F*.;%s*"C&#EFe:Hu=%RI/JEmI//3iIK4fq
+I-Z4YIfForIK4lsJGOisK)UE%K`?c+LB!&.M#N82MZ/J4MZ&D3MYrD4N;nn7N;nn:N;8G9NfT6]
+O8b1>Mu\_6LB*/.LBWKjM26tCreUN.r.b3+rJ:B,qM>0,s+pN.!/gZ1reUQ1s+gZ1r.kH3MM[2d
+Mu8G6Mi<VoMuSb6NVAD3NW+k:NVn_9NK!gq!07&<!KN6<NW>(;Nr>%?Oco[*r0$u?rf[2Cr072G
+rg*SNs-`nSs-`nU-(CEqStD^MU84`gY->.:\%T`*f%T!?jQGdon*oo?pA+R_rVc`Hrud\hLk^25
+PDOsBH#%V\\93.2912?g85+AVHqmC0;G^-fM#rEbL%^2uNVnb7MuS\6M>rD3LD0=MmH`rri8*);
+e'H7[aMl$4^V9Z[s1S`Q^qmq+`5T^p`r3mT`r=$YaSs<]arJUKbg"AUc-FV\cd:(geCN4(gu.2R
+kj7d/pA+XEruU[JS=#bQ[$I,FOcYZ`Nf9$]OckrpR@'5$O,]*VM#N,/L%L%.JV/T/L5:\DN/`mZ
+OckroQ^F21S=Z@HTqeE\Vl?\tXfen5Za@-K\@K5a]t_A"_SjF6aN;WKc-FY_daQ^rf@S^0gYCWA
+hr*JQj5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$dJn^~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2L8PMuX:[:mV;ZBVl;?0Sk;Y3id
+;Z9Pg;#F0.1bpd?1c$sH5X@\"5!;(n4?>M`3]]5Y2`U^trB($A#Yn)h:/+b[;,I-grDWbqrDEVo
+r`&hps&9&"<)iisqc!Pqr`9&!r`&eqs&T/"r)EVpqc*Ppq,[Mqs&AbnrDWbsr`&nt!*9"ts&B"u
+"'8N)=8c1m<ruK*<rH"q<W5r#<E<.%=8Z)(=&r@%<`W4#qH!Sqs&K;)<`W:'<rQ)"<)riss&B,$
+<EAios&T,!!*9)!!`i<$qH*;kr)Wi!s&T/$qcNi!r`K/$!a&N*oiV)os&f;(!a8`/r)`eur)s#&
+s'#J.pKRZ&pfm`&s'5\4?XNe?!FfX>B,YGtDf^8VKnkMDOHYuuSY)UOVlHl&Z*L^B[JmZ8[K!TH
+ZE^X;YHb@<ZEpmE[^Wi]^r+(h`$iO>^qRIm\[SoNYut73;cH^p<D6"X6TmeJ5<(PN,Utl-0LnT$
+3&NMk3X&J_;c6Fip/1dJr/CW5s,-f4s+p]1&<Vp-KRnPuGBIqED/*cuB4h-S$ta-bBPD3sD/O<3
+EH1tu!-A-[s)IpVs)\*[rcS-\qfVp^+a&$UI=Qp'M2dU\R%C(OXKf4G_8a[GeCN=-h;I5MiSrko
+iu@"<io/k?P]9u7>@(oB=B8O(<`N.#='&F(>$:i+r`9"t"&_un:\7InJV/T/L5:\DN/`mZOckro
+Q^F21S=Z@HTqeE\Vl?\tXfen5Za@-K\@K5a]t_A"_SjF6aN;WKc-FY_daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$dJn^~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq0"XoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7l11Cik2hSb8NFSH,8[Sc>;[Sc#)Z
+Sb&?XS!oe6R@'A.QBqK7s,I/:KoH"h#%4=*USFQWrgsLgS=5b0Ocb`cRJiTVSXc2KS-cmC]tRt+
+G_M?FrKI;GqiUi=s,m5Bqigo?rK@AKQ'ISurfd;Frg!JIrg!MLrg*kWR@0M4S"#rISHPOVTVA4[
+V#@.iVZ3OtW2HMiVl'<g!3#gp!NN4"Xo5C(YHY80Y8sjMYHP(1Y-"e+Wi;qpVPU/dUS=NZUna]\
+V5'cZrh0=drh0LiUSOZ[UAgqfUApqeUAgqfUA^keU]I<fqP=7hUSRj`s.f[lVZ*FkVZ3IpVPU/f
+r2'[rW2QVlWMofq!NN-tWrK$uWrB%$Wi;ttnu;YfrMfdpri,Rjri?(#qlT[tricC-rNcI.s0<fS
+['d?O\%'#]]=bhj^:q@u_o9[=bKeJag"bKCj6?%+rPJR]qYd.YQ^H^BUn=!5H`Y>gJWlX:K7/tb
+>FqLd>$G-9>Zn54Z*(8&YPsOYN;nh9MZ&D3L]E3fru]Lu]C#.1b/1^!^::PU\@B,^^VIn1`P&di
+\%/iMYHm`%?%IW]L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?ZVl-MoXKA\1Z*UgG\%0&]]Y;.r_Sa@3
+a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$df4g~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7k[n@VBY*qgea!o7?djrIOKjqLSZs
+s*k#tp3lsg)eits@q]LfBMa,(H[:!]GBS1QF)u8>D/=$(FT$=kGBJ%OGBT%.Nf?c*CNKK&rI+Wl
+pjN0kkC*;XrdXors*k$!qLSWtrdt<+K7ejVLB!&/M#E/1MZ&D2MZ/G4MYi;3N;eh7N;SY8N;ek:
+N<,'$qiCc;"-&7tM>`80L]<21M#`A2LB*/.L]<,+L]3)6M2-k@L51QZM#W;4MM_1ere^T0s+pi8
+M26udM$/WkMM[5eMuS_=Mi*FNN;e_8N;AP6N;\_9Nr4n:N;\b9N;AM;NfB$YNfWsq!0@,@"Hek1
+OcfO(rKI2Crf[>Hpm(iEs-NYOs-bI-S=Q7DTV8-VV5C8qYd(I>\A#r,dFHh$gu%)PkiqF%nauPL
+q"ad_qtp<frVl]srVZWnkPtS(-&[J.J#\TbJphfWL6@7+EcFrdAT(+5H?t$89h\D[9o=a`KnkBU
+K`6u.N;nh9MZ&D3L_5F-k2YCUg"+TtbfRoE_SO"$rOiTQ^VI\&_o0L4`Q#pr`VdaUa8X0[aoBN`
+bQ#fcbneUNcd:%ddaQatf@o'=io]Lln+$)Hr8%AZd-[TrQ+=GmS!O&9'TS67NffNfPa7](QBI>h
+NJr^LKSK&N?%IW]L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?ZVl-MoXKA\1Z*UgG\%0&]]Y;.r_Sa@3
+a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$df4g~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7k%J8kVrVp/1idoMGTdrDESmrDEJj
+mSWgWrD<_S1,:O?1]B365sRV!5Q3hM4$5Mc3]R's!B`IC49@Z.48q>I:/"AV.Sil9q,@5k!)ren
+!E2nk;ZTitr_rkrrD`ess&T%srDihtrDiksr`/eor`/_o!``3!q,RAms&Jqqr)Nbrs&K#!rDrVn
+r`B2&<W5tq<W?"u<W,tt=8c1u<<6-#rDinur`8ttqc<_sr`&nu"'8N)=8Z+o<W6&!<W6&!<<?3$
+<r,nl=9DW,=',B%s&TG+<E3(%=BAT'=T;G%=8uD#=7o\m=oDJ&=TDS'=8Q+t=oMV(>Q.n'>6%k(
+>PqY4>?kH@?smDP@:E_YrFZgYDfg8PIt*!$LPq1TPa@c-T;&-Yrhodps/?!uri,pr*2fa7WiE,$
+Y-5+:[CEc\^r!t(^q[Uq\[SrNYH@f*-*)!.>#eKu@96?#91D<87R]Bt0Iee=4=r9X77K6n1HINV
+<)llr;"dccNVe\7MuS\5M>rABLP15-HZsUQE,B?(BP1pgrau1C#\[sgD/O92EH1hqs)IpVrcA$[
+rH8'\qK;d\+F&6]J:`K2N0'6iS=laZYdV0[`lui[f%Jg6i8ESRioBstro=%<s5>6]iS841?sZuH
+?WUB4=&r@%<`N1%=]ej1='/O(<`W4#;c6Olnk`VCK7nu6Ll%%KNK90aP*D5uR$sM7StD^NUnsue
+WN*&%YHY:<['mHS\\#Mg^VI_(`Pom=b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirqu]moDX=@JcF0uJ,~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9(VWEnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7l%0G^>+/nXTNJ#+V6TS=Q4@r1*hX
+r13bWs./bO#Fh0NR@0G0Qi33mN/NIDMi*R%VPU,_US4?PT:DIAR?s,%O,og#S"-">Sc,&e]tV1n
+^6"S-O->clPQ$dIPEPj+rfI/Brf[#>s-!DG!L/fIPl6jKP`q@(Q2[*LQOfIOR@9S6S"-%?StDXJ
+USIgar2'Fj!2ogprhfapqPX=kri$%#X/rG+ric=*s0;F)s/uU1YHG%1X8]'uVuERmV>d7kVPX9e
+r1XFkU8+KZUS=L^U]7(gU&Uk^U]7.hV#[CjV>R+kUSO`_r2'Ijqkj:hs/,an!NE*sWW&ptX8B!t
+X8T$uWW&pnX8f4"X8T'uWV!1nX0&M*XT#@$Y5GI'Yl:g-Yd(J1ZN%69['d<M\%&rZrk&6Erk9&\
+_SjO<c-XngfA,6?ioB:ko_A@#s!POZTVILJcE*b.Q%kj/h33eU>uapd<Eu;iV5RU&?X?p=Y-"k/
+Z*3i)s,Hr8repf6rJ:Q2LPl*TgV^f"s3Sd*^q@=nZa7-O\[oPkaN)63\@/oT[^*'@YH@H"@t9/`
+KSG8<M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lX0&M-Yd1UC[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=l
+e^i@)g=k?<h;@/KioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#
+s3gpt~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9_7iGnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7k[qBP_d=J:RWMrIXZmr.=crnq-[g
+"+YlNIeS7/Ht[,&@q]Lj:jm\<H$X^YF`heJEcQ/<Df':fFoHRaG6iAROH5B\Ed_s+I/SKjI//3i
+Icc%YIenQoJGOisK)UE$KER!`L51Q`M#N82MZ/J1M?&M3MZ&J3Mu\e7N;eh:NrG(?NfX.!rfI,?
+"HJP'NK*ppqM>--!/UE*!f2VfrJ1E/s+pu:L4tA;Ll$ubM#W>2M?&S4MZ/J3L]WEjMYr;4Ll$ue
+MZ/P6N;nh8N;\\5N;\b2NW>.>Nr4n5NW>.=Nqnb6NrG+=O9C]/P*(n(P5CIBOogi3Pl6mDQ3EVB
+R$jD3r0nk"StD^MUSXlfWiWD.Z*CUD]Y__3c-F\be_/g;ioTCimf)eWo)nXXp@eIZ$2F>lqYU0d
+qu$HTs!O4qM26M:S;N#MHZ+1_[<?A(9LM?f85+DXI=G!e;Gg8IM2-k?LPGJTs,Hr8repf6rJ;)A
+LYpn>e^Ddeb/_K=^q[Utrk/ZQ^VI\&_o0L4`Q%nrqo8WUs2b5^!6Y;arlkAe!71Yk'%,.VeCN7(
+gYUoLjll(#o(MkVgA`Ams/hfZ_Tea?R$NntOcGH_OHPfkQ'do)OcYZaMi*=FLP>>Q@t9/`KSG8<
+M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lX0&M-Yd1UC[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=le^i@)
+g=k?<h;@/KioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3gpt~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9(VWEnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7k+K92AG\pJLfal;@IWmSWmYrD=.`
+1,1I=1c73X5X7Lr5!;%j48h2?3;ti=4Zkhir]C0Br]C0UrCmAW:/Y!a;uT_r;u0De;ZKeo;u]hs
+<W?)"<W5tq<Vf_s<E/osrD`_qq,RPs<`\rprDWl!<`N/u<;onr;ufqt<WcE*='"rprE'/&<E<)r
+<<?-"<W6%u=8Z,!<Vohs<W6%s<W6%t<W?#"<E<0!=8Z+p<V0>l=8u>#=8,hp=8Z,!<<Q?)=]\](
+=9M]+<``B%=9Vc,='&O.rE02*=]kQ(qcNi#!a&N*qcNc!s'#D+r*98+qcX#)>5hb'=pA29?!^oI
+A,TpVAnPafAS>jtEccMLG^=dhKntVGOHPotR[]iHS,]#YSc5,jStDXKU8+TaWiW>,ZaRBT]`,SO
+]Xt\_['?g:X/`/sV^JEH=]\U&<)ujj91qZ:6<ZZ42_-.%4>8HY7Rop*2*!]X=&`-s:fI!`s,Hr8
+repf6rJ:r=LO+2eEc5c/BkV-jr+64IBPM="DK'T8q/QITqJuRVs)e-\rcJ!Zs*"Ed+F/?`J:iQ3
+N/s0fR\6IUYI1sW`lui[f@ep8hr*JQj5]sr''&!1iS`\Qi8<Cd[:iiKC26pRr`9)#r`'D.=BJU,
+=]ea,<``:#<;oet;,C'\:h,$-K7nu7Ll%%KNfT9bPEhH#R$sM8StMdOUnsufWiN8(YHY==[C3QT
+]"G_j^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;-uHi8WeWjlY^gkiqBum-O--n*fc8nac8BoCW%T
+!quB_rV6Egs8)Wirqu`noDX=@JcF0uJ,~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;MnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bARoV"Iu^)jSGSlPSH#/WSGo)WT)YAT
+S-5CQS"#lGRK&ZSQQM0GMhR+JN*ftjVkg)]T:V^IS=?"7PED#hN1-9*S=KSLs.',&#/7dbX-S$b
+rf[>HrfdAH!L&]EOT:LBOoLUDPQ-mHPQ$dIPEPg-r07MQPa%H!QBd^1Q2d-MQi<BPRK&]bS"-">
+SXuIHTVA3VUnmscs/,gopo++gri#gqs/H:)Xfek4Z*=54rj)O.pojt)Wi<"tW2KWlrhT^oVl-?h
+UB%%eUB%%fU]."eU]7(eU]7.iUBIBfUSO^bV>[:kV>@"eV>[:kV>I.iVu<OoVu<RjWW0!uXSAps
+X9G`-X/i>)r2g%'XK;?%qlBOms/Z1$r2on""g>/7YHY8/Z2([*[/RN6\,Wr@]"G_k^\tt]`5]sF
+dF6\!gYUoKjQ5Ulnb2bWqZ-W6s!R?oV4Ns>lGKNlQ]HNt_5iEYITM/(OB,MRTVPdp=^PE;Z*:L:
+Y-%?#!0-l7s,6o7rJCQ1!/HI3+P+R(s4G'+_7R=o\$NKP\%02fa2u?8\@/lU\?`?BYcmZ$?%@NZ
+KnbA>MN!LSO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*UdE[^`l[]Y2(q_SX71a2lBGbK\>YdF$Fm
+e^rF+g=tE=hV[8MioB+]k2tmll0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#
+s3q!u~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;LnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b='K-IDL),0r.=Nkrdsornq-gk!.t3$
+"+YlMIeeC(BP1sgBkM-V:k!e<H?j[VGBWt,#'"QuD/<s1rH/-aFoHOiOH5K`NIQ1hFoHdcIJ\Eh
+IK"]]I/n`nI/n`nJ,Om"JUi<&rdt-%s+LE+s+^K-!/UW2rJLW3p58j-rf$i7s,?r:!07&>s,d5@
+"H\\*OH9C&r/Ur?N/NSmM>rD.M>N),M#E,.M#W;7Lkg_?L]3)7M26tELkpnEregZ4s,-i5"H&%l
+Ll)+grJCQ1s,$]3s,6i7!/pi8rep`6r/L`:rK$r<!frG(rf7#>!K`B@NrG+-OSt=9P5CI@Pl6mF
+QN*<NR/`TSRf]+NSc,/[Ta.?hW2Zi"YH\#3.C6Fl^;7e/aN;WNdFHn(hr<_ZlKmm)mdBT7o(2MH
+p@e7Tq"aa^qu$ERs!PO`Mhch4Ya:,tI<TI^NeVLp@7Xm"DFmQLH@/I^9i=e`MM[.EL5,>R!0-l7
+s,6o7rJCQ1$]!-TbK@lD_SO"$^AbbO^;%J"_Sa=2`Q%nrqSrNT!Q`C^b5TTabQ,oec5+aQd*^:j
+eCE1'g"bHCj6#UnnFH8Jr7:lhlHcE"^WiO<R@'2#P)kZ`P*;#lQ'n#*P)kW_N/WSlL&cr!KO'+[
+K8#&8M2I7NNfT<cPa.Q%R@B_<StMdPUo(&hWiN8)Yd(O@[C3TU]=bhl^r!t,`Q-'AbKJ/UcdC.h
+eCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)ZjrVZWmoDX=@
+JcF4!J,~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;LnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b77KpC:Jq*hq,-ral;@IWmns$[r_XRj
+1,CU@1G^sH6:!h$5!D+n4$,Gb4#T#W2`CXt!'U3As%Wbm:JEr@:f6marDWbqrDNVnr)38fs&9#!
+<rH#&<)lq!<`N/s<WZ9#<;fhq<;KVn<r#bq<rQ+t<<#tu<WH/!<<#tt<!--"<E9$!r`JhprE0&#
+!*9)!s&T%tr`9&#!EN4r<WH/!<rQ+t<rQ,!<rH#$<`N.#<r,nt<r#be<WH5#<WZ?)=8>r!='5E&
+q,[Dq!a8`/rDj;-=BAR)<``C+>$5#->5DD#=Su>#=9Vi0=BAU,rE9/(rEK5*s',M,s&o5&s&o>)
+$!UY??!^lHA7]?MB)Q9TBPVI'EH,r<G'SIaJ:iT4MN*[WO8Y.aOcu#oQC!r+S"?7HUSXokYHkOD
+[^WcV\$i]OZ*:@2WMl`oV'i.:VP^8jCLgRK<)R(%;b]nT770I45;t,A1+G=;1.ao&2`3EQ3BI.>
+!)iAb!0-l7s,6o7rJCQ1$&<G7CMINpAn>QQAdE$_C2@a*E,]geErU4\FS^.[FSg4\G5lddGT_<[
+IXm')Ll7:UQ'n8?WNNS<^Vn=CeCWF0hVmGQioB(pj9"B$ir.g:i8=Ol(?F54F_"`kDHKtB='&F'
+<E<+#=&iC+r`BJ-<E3+$<E)mp;=[OhJ:`E-L51VCN/WdXOckroQC+)0S=Z=FTqeE\Vl?\sXfen5
+Za7'J\@K5a]t_A"_SjF6aN;WKc-FY_dF6Uqf@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?MK
+!qZ'Vrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$e,Op~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b@V0e/KTr$uo:5`Lm@=0Hr1<qZpmh>S
+s.'+Ys-aLeR$`qkKnPGCNF8W\V5'cYrgjRkS!]Y/PEM#fR[]h9SGo)ZS-bb"^:_4+aEE/uq31fB
+"I#"2Oco[*s-!AF#F(L<P`q>sQ2[$JQ2[$GQ2d-PQ'R`$rfm8Es-<YOrg4:cR[T_8S=H.AStD[L
+U8+KZV#@.iV?!OfW;WXoW;W^qWX#W-YHY::ZEaD7s0Ma2s0;F)#-Y23X/W(srho^lrhodm"/M]e
+UA^keUAq"gUA^kdUAq"_V#R:kVZ!CnVPX3d"/VlkV>[:kV#[ClVZ<UmVtm:jWW&psX8]3tXoGR'
+XTGZ-XSf4$Xo>L#XoGL#X8f3sWs#N+Xfei+YQ(d)Y5kj+Zi765Za@'EZi.90[K!c:\K\Vs]=bno
+_84%-`Q--Gd*gIrgYUlKjQ5Ofm-jQ>q"ad`rkna_`MfQ1Nj$^4U7.C%SZ:D4OMPd4<fiYM>b.Re
+>?b3:?!4A6Z)t2#YksCYMuS\5M#iEfMZ4g\eC+BZ]ue7-]YD%dZadNV]YD;)`kf0o\%&uVZECI9
+o<)SRJV&N.L5:\DN/`mZOckroQ^F21S=Z@HU8+N]Vl?\tXfen5Za@0M\@K5a^;%J#_o9U8aN;WL
+c-F\`daZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu6Nl
+rU^#>s+14!s*t~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/nUoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b>$YcWF+!k8s+10$jaluSs+10$s+13#
+s*t&tr-]JtAn,=bB51=mI!g6dG]e1QF`VPCDf0H/CNfVu%!Hi<GB]+0NfI>0Bla0"q0i0gr-eTo
+p3d$lI=?YAIK+cnIK+coJ,FirJc:9#K)gT(L&Zo+LB*/0M><#/M>E)5M2I4LN/[^ns,?u;s,R)>
+q2kW;%ZZU3OH5KaNfK*XMM[1Ipkep(!JlU3M#W8/M#E2.LB33freUK/s,-]3rJLT2",_qlM#E21
+L]NBkregT2oo/j/r/U`:!g&P,rf@#>!KW?ANrb?'plGK<rK-l<plbZ@rKR>IrKR8Grg*SNrg*SO
+s-`nUs-s%Zs.97`/to&8V5C2lXfnt7ZEpmE[(!WZ^r""-`Q69LdF?e%gu%/Rk3(snmI'H3nalGI
+rV-QlqYU3hrpKgdrqQL@RZE8^I#FJPKn+MgHA&;FDk^5u7;m3;9RD,9:/=P\:ece&M2$_=oS!+#
+repf6rJ;AILWRQS_SO"$]tD"k]t_A!_Sa=2`Q#p:q8WHT!m&L*rlY5`*6c[PcHab^d*^:jeCE.%
+f\,';ioTChmd]rCq>A_A,0fM`VPMY?PaRr(P*1rgO-#KfP*;3"R?N_nNK&jRLk^\=o7UV(JV&N.
+L5:\DN/`mZOckroQ^F21S=Z@HU8+N]Vl?\tXfen5Za@0M\@K5a^;%J#_o9U8aN;WLc-F\`daZdt
+f@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+14!
+s*t~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b7S$-I:f((hr_iVjp/('Pr)3)_r_iYk
+!&OU/&2Q.#2F0Vo5<V1m4Zb_d3B@'us#9j<%Qup:4$5Z$9MJ518PDoXoi(cf!)rkps&8qqrD<Sn
+;uKVl;ZKem<W?+u<W,qu<W5tq<W5tp<W,tt<W?%s<W#kt<W,ks<W6&!<<#tr<<#ts<rZ;$<rcA#
+<rcA$=8c5%='#6!!*8qrr`B%us&K,$r`9&!s&T,!r`8hpq,[>ns&T"spf@>p"]e]+<`W;r=9DW*
+<`f9$s&Jtt!*B/%"BS`0=]bT'!EWD#<rlH-r`T8)qcNo&r`T5&pf[Vu!E`M(=ohi2r`f8)s',M,
+s&o>)s&g(=='/U/>?bB>?X[APA7]@cAnPdiBDuI[AnYmoCi+!)Df^#CG^4XaJ:iN/L5(M@MMmIS
+OHPlqR$sP;U84]fYHbC>Za@*FZEUR9XK/A"VPL#aV50o`Vl6SpX08d5=]ea(;-$Ie9hIc:6;^!+
+@4WTM4?G,L7n#g)1c.6S3E/sV;,:-_;>Z=OMuS\5M$/WiBkV,WAc?9HBkhI$DfB]9noFbOs)ddR
+s*"Eds*,`6I=Hg$L5ChLOd2<*USk6!\A#o(dF?e%gu%)Mj5]4]jlQL&#3Fq,j5].Zro!k8qr.S5
+']NhhD.$Re>#n^-=&r=%=&r@'='>K("]eW(<E)ut;t3[oJ:W<)KnbD?MN!OUO-,TiQ'[l+S"-(B
+Tq\<XVPgDnXKAY0Z*UgG\%&u\]Y;.r_Sa@3a2lBGbg"G[dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*ol<o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$e,Op~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPIX3CNP)er13GLrgi>Es.0(Zs.0"Vr13kX
+s-s%W+HDG>L5CkJ@&'QqVkTlWSt;LES=5_,OHP`cS",t=St>qP$(S]C]tM(ISU67nP5pjEPQ$dH
+PPgRKOckokPEV5qrfmJJrKRAIrKRAIr0@/F!1!PJr084eQ'Rc'R$a;0R[T_9S=Q4BT:_dMU8"EX
+UnjjdVZ3RmVuWgpW;WXnW;W[uWiN8(YPtd,ZMLp-Z2h0*YR%D6XK/A$W2HQmVZ!CuVPU,dUna]\
+V#I+bU]."fU]7.hV>R.hV>d@jVZ<UkV>mFmV>R4bVZ<^nW;`arWrB(!X8oC%X9>Z.Y-"i*Y5YX$
+Yk>1"Y5YQuXT,C-Y-5(6Z*:I;riud9[C*HO[C*C?[JdQ5\,Wr=\[qdQ!58BG*PfS2`lQ?Kd*gCm
+f\>9Ajlbjkl0Ia*o(;YNqu$H1s![*\V4X'CcGZfUR#mrD_6&chKi`b+P#beaSYKCn>$kT@>-G*5
+Y-"l"YQ1m(N;nh9MZ&D3L]E50s8N"[ruot?df93fbK.N6^qR:a\[]2]^q\"5`4WUh\@/lQYHY75
+oWD_SJ:W?+KnbD?Mi<XVOHPflQ'[l,S"6.CTq\?ZVl6VqXKA\1ZEppH\%0)_]Y;.s_Sa@4aN2NI
+bg+P]dF-Opf%8R.g>(N?hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]kr;6Hj
+rVc?eJcC<$eGk%~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPI6t?taJ&pjiBq!.b$!rdacprdsipm=P@h
+s+(-!s*jur&SYljA7oOg:jdY;I<p0`G'.s,F8p.\Ci+!'rcS0_$[6c;OH>N_N-B\eGl<$hIK+cp
+IJeKkIK+ciIJeNqI=?YEIK+cnIK+coIfP&tJH(3"K)^K'K`?c*L'39dL51Q_M>E,/M>`;6M2I1K
+rf$f6!0$o:!07&>rfI,ArK%,BNfT8#OT1@KNfAsSMMmCMM2@,fM#rKgL]3,/M>rA0M#E20M#N/1
+Ll)%cs,$c5qMY6.re^Z2rJCN2!/pi6qMY91!0-o8!0-i8rf@&?rfR&?!0R/?rfI2BrK.2FOcY\%
+Oo:ICP5pjFP5pjHPlm>=QBqH6q3V,Ks-WkUr0mk\T:hmQV#I7rW2Zl$Yd1Y8[K!ZZ\%'&`^VRh,
+a2lEIdF?b"g>:cIjlbmomI0T9o_%tRqYL*fquH`cs8;ljs!G"ON/)q8S=,4dIWg*nNJ2CtAOg3#
+DFdKMH@&C^9i=kc:5Xj`L%9ooN;nh9MZ&D3L]`FJ^qTf\$GF0g^qmn*`5Ta9rl=oUs2P,\rlP/^
+s3(Gd!6tMgs3L_m'@YI\e^rI,g>1]Ik3;4"nauSPrQtQVr9UAZU=R&JR[TM+Q'7;iOHTU,%[EEM
+Q'%,eNJrdPL5(J<oRpb)J:W?+KnbD?Mi<XVOHPflQ'[l,S"6.CTq\?ZVl6VqXKA\1ZEppH\%0)_
+]Y;.s_Sa@4aN2NIbg+P]dF-Opf%8R.g>(N?hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?d
+p\4X]s7u]kr;6HjrVc?eJcC<$eGk%~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPHXN85)iWr)<Plr_`;alV[RXo25Has%s(Z
+1,CU>1c.*U62j.L4q'S:4$5Pc3]8rW2`<et4o[_E4TA1U9`mRJ:f6j`r)<o$<)Zap;c6Nj;#jMn
+;?'Pn;u]hn<W?+u<W,tu<W#hq<W?%p<W?)%<E)ptr`&ntqH!Ppr`0&"<rH%s<<#tu<WuQ,=]ea,
+r`BD,=BAR+=BAT%=T;Iu<W6#"<EB*#$<C/,<``='<`W4#r)WJjr`9&!r`9&#"]\T(='&H"<VTVh
+=8#bq<WZ?'<rQ+s<rQ5$=8uG'=T);)=BAR+=',?&!*T;)r`T5(r`T2%s&oA*!*fG+!a/W-rEB2)
+qHX#(rE95)>5hY)=T2Ao=^,-:?t!PUA7]=aAnPaiBk_6mAS#IcBPD3sC2@a(Df^)HH$OaaJ:`H.
+L5:_GNf]EhR%'\@UnsufX08e6Yct:4X/`2!W2?EjV#R2?UnsreWN*&'ZF7<V^KkGQ<`E(%<`)Oa
+83T@.6U3U`-o3>7/hfab7Q31]rAssX!`Molo25CDs,6o7rJCQ1!/LMa$"dg`C2@d+E,]goEWC1W
+ErU4\FRaMQFs2'SG^4XaItE?/MN!UZQ'e,;Vl[/5]u8(?e(34-hr<YUroF%>s5s@CrT!q;p>HqL
+iSU]%@p`D\Ali,<='&L*<`N.#=B8R-=BYW(#Zju*<)Z^m;GZp]A:K,\K7nr5Ll%%KNK90aPE_?!
+R$sM8StD^NUnsufWiE/&YHY==['mHS]"G\i^VRe)`Q$!?b0/#Scd:(feCE.%f\5'7h;-uHi8WeW
+jlY^gkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF7"J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPIa8Fa/Y(q47/J!1j+Zs-rDGs.0(Zrgj"X
+qORYVs-k-kMhm=ON/V,@W262]U7\$MSXu:=Pa.DnOIMc0S=Q7Crga=d^:q:paNJg^oTT9=r0%;I
+PE_8qPjOb6Q2m3JPl6mHQN*<OR/`Q]R[]e:S=Q7CT:_hVU&^tfV#@.jVuEXpW<'#ur2BUms/>ss
+$`^2+WiN8(YHb@<ZM:a?ZEUU=YctC:Yck43XK8G$WMcSiVZ!FkVZ!:lV5'gaUAL\dU8.^`qkX=h
+V>$nfW:m+cVu<IoVl?]oW;`arWrB'uXT,C'XKDE's0)C*qm$('!3c7'!jAc0riQ1&s/l=(s0)I,
+!3uO/s0Da6[f3f:\bio8\,Wu<])TGA]cXu(_8=+/aNDfTdF-Org"Y??ioTFjlg4$,n+-,FqYe,-
+-crB\ZBM]8]q_'`Kq5:!SsHLMI8uMu=Bh>iW*3G0?X6j?Yd1F6YP#."YPa@ZMuJV5M>rA5L]7:4
+rtsVMiW&f+a3)B8^V@Ch[(3c[^VJ"7`k8h\[KO+GZ*1J(Y$QU.JqJ`2LP^kGN/is\P*;/sR$jD4
+SXuLJUSO`aW2co#Y->1:ZaI6O\[oGe^VI\&`5Ta;aihlPcHjnce'uq"f@em4gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu]moDX=@JcF:#J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPI:"B5;O5npg^kr.+Wpr.=`qmXbRmJqAQ)
+rdb#us*bMnAS#RgBPC=lI!g3bH?OISrc89aDf9K0CioVu%<cr>G'8(kOH,<iQtpjCI/SKmIf+Wo
+I.2RYIK4fpIf4]nIfFotJH(2uJ-(:RK)UB&K`6]*LB!&/L'!-dM#N8-MZ&D0MZ8V5Mu\k8Mueou
+rf@)@rK7#>!07&>s,d5@!KN-:MuSY5MZ/J3L]3/0MYr;,M>W20M>`54M2I4Kq2>91!K2j1M$Aiq
+Mi<RPMY`8.N;nk;N;\b4NWbE)OHG\(P5CFDP*,[(q2kZ?r/pi=s-!MKQ'M93s-3SMr0RAJr0RGN
+rgEbS'q:_aSXuLKV5C/iWiN5&Xfnt6ZaR@A\0AJq]t_D%`lH0EcdC7me^rO1i8Wh\l0Rj,o(;YN
+q>1!dr;HQorqQNfrq$.6rg8b&Oa`@ZP_F[;E-d5>HuXU^>t&^P8PFJXInia3;G^0gM>r81LPGGS
+r/CZ6reg]3s+h,>]Y(ql^;.P#_Sa=2`r*mU`rF*ZaSs<]b5TR)bg"DXcHjkbdaHXpe^rF+g"YBB
+jQGdon+65IqYeY<&H&c:ZJNKlR$sA+Q'7AmO-9L+%@*?MQ][AiNJrgPLP1EQKO0.YJqJ`2LP^kG
+N/is\P*;/sR$jD4SXuLJUSO`aW2co#Y->1:ZaI6O\[oGe^VI\&`5Ta;aihlPcHjnce'uq"f@em4
+gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu]moDX=@JcF:#J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPHXN9MA8Xq,@8jrDE5alV[RXo25Ha!])Pd
+r\GHL2*aGm5<_7n4Zb_d4$#>\3ArfY4Zkkk5<]!.!Bj3W9`n6e:K%!es&Atrr)EYqs&Aqq!)iMf
+!)ibo!*&krr`8qsr`0)"<E8oq!EE+u<W?%s<=)]+<)cjt<)cjtmT'Bh<)iiss&T/$#$G&1='/U-
+qc<i$=',<%s&T2$r)NVprE'#""'&E'<rQ1t<rH%u<WH/!<WZ9%=8l8#<<-)!<ruE&<W#qu<rZ1u
+<rZ8"<qf\j=9Mc/=BAT&<WH.u<rZ8$=T;Ii=9)M%>5_\*=oVV(=oV\(>Q7t*>5qh+>l7k->l%Y)
+>5hY;=BSd1>[CfI@q0(]AnGUdAnPfVCB%s&B4tsmCMds-D/F33FEMbMGBeI_IY!0,M2R=RP*ME(
+T:r$UVPgAmX/rJ+XK/>!Vl$<gU]7&IUSXieWiWD1[^j&d_oBgCW)?_u=]8:#;b]qX6p3n75rLed
+.k!PC/hfgc7lN=`3]T6&<)ljnnko=Ds,6l6re^Z2$AW2(B5)*sDJjE5qf;^Xqf;^XrcI^RrcTQ2
+G^4R\H[^KtKntYIO-5csSti3bZ+%EbajAPhg"bKEioB+\rT4%@s5j4?s5Wn5qVheAf<8Ul@sV]f
+r`K/#'NJ+3<`iI,=BSa.<*!%"<`N*t;H!'^?@RKWK7nu7M2@.LNfT9bPEhH$R@9V9StMdPUnsuf
+WiN8)Yd(L?[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC.heCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--
+n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;?Nbrdk*#s4.."~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AePo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk@qg.9N1BX5p72/P!1`qUm[X<Jr14%^
+St2CApmj%-O,\sLNK&s,UnsrbUS4<NStM[FR[98$P`VH,S=Z=CSt;LDT"VkM^P04?Js,_hrfdMK
+Pa%C.Pk((>Pl?pPQBdc%Q^*j7PlI!XPa.N"QC!r*R@0M4S"0JKs.0=bTV8+YU]7+mV5C,fVuEUp
+WW&mtWW&jpVuN^qWW&ptWtDJ:YctC<Za7$FZa@*G['R'CrNQ=,%^<.>Y-"e+Wi;qoVPgAkrMKt!
+Vkp2cVPU)aU\pkbU]7+lV50rarMBUlVZ*InW;NRnV?3`qVu3CoVl$AjqPX=is/5^ls/H$urN,mu
+!3Z7's021$pTOY$riZ:)!3Z:(!O/j.Z3%A>[/RH9\%&rY])K;E]Xteg]`,Ml]">Sf]t_A!_SX4/
+`lQ<Gc-F\aeCE4+gtpuKjll!rmdBQ5o(;YOr;O;-.(Q4MPbbq2Z^mJDT<6)8Of<q4KNXC<>G7U]
+W*3A5?<^U<YHY45Ycmf*ric9Zrepf6rJCQ1MZ4jps8V99^s0s8_8!Xk[(3cY]tqP-aM,9q\[T/V
+Z*(C9XRrZ!IXls#K8#&8M2I4MNfT<cPa.Q%R@B_<T:hmQUo(&hWiW>*Yd(OA[^N]V]=bkm^r""-
+`Q-'AbKS5Vd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L"m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0i
+qYU0hr;HTcrdk*#s4.."~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AbOo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk>@2#[GNjYSJbt&sJa%ddJc:01Iq`P+
+@VKLi;1*b;I!U'_rcS3]"E89rD/B,n%Wur=G'8(kOGo3/LhLaSrI"TmqgSKl!.=Tjs*XZkq0i<l
+rI+`prdFiqr-nWpqLAQsrIP0)KS5&5reC<*s+pZ2qhk9-",_qmMZ/P6Mu\k8Mu\n;O8k=?OoCFI
+OcYZcNfT9`rK$u<!0$o8qMGE4LkgbAreUZ5MuJP5M"QW)M#3#1MMmDlMZ&J4MZ/M6MZ/G4MZ&A4
+MMqFlq2>-/r/LZ8"cn\(O-#J&OoLUBPPgUDOo(78OoLUEPQ$aDP5pjFPm3J<QBml(R/WNPR/EBP
+S,]!=StDUHTV8*TUnsufWiN5'Y-5(7ZEpsI\[oDc]Y2%p_o9X9aihuWe(*%#f@ep8ioTCimI0W=
+p\Faas8;oqs8MlprVlcos8MHd--_g9MLUGGR#Q`IG'o%,L37oX7V#)-8POSZH@Sac;Gp=eMM[,e
+L@g/tN;eb8MZ&D3L^1Z/^VRe)`5VPms2P)Zs2b2]rlY5`rltGg(=:IWe'uq!f@\g3gu%/Sl0Id-
+o_84[aSuguc,A#`X/(uJR$Eu&P*(igrf[kWQ^F/'OH5E\N/<@ELkUTUKN`hTJ:`E-L51VCMi<[W
+OckroQC+)0S=Z@GTqeE\Vl?\tXfen5Za@0L\@K5a^;%J#_o0O7aN;WLc-F\`daZdtf@\d1gYL]B
+i8ESSj5f@bkNM0plKmm)mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NlrU^#>s+14#s*t~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AePo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk8OuQO:f-mb!)i_lo2+dNqGQu`/Q+D\
+1GCUA1c@Tb5sIRt5Wq4k4$#Ga2`NfU4?Yei5!D1o4?Pc%:/+G96VL8S;Z'Jl<<#np<;ont<;ohq
+;Ya2i;#aGn;[63!<)cjs<E9$!rDiku!*/kp!)rhq!*0"tr`/u!r)N_qs&Jhpr`/u!#$4i+='&C$
+r`/u!s&T2'r`K/&r)X#'='/O*rE0)$"'/E&<rQ+q<WlK)<`N0!<WQ9(r`Att!*0#!r`B,#s&]2#
+!EE2!=8u8)<``@'<``B"<rZ;%=8u=q=85ns=oVV%<rQ)!<r?#!<r5qu=T2D$=T2D"=T2J&>5qh,
+>5h\'=p8,6>$G39r`]A+r`fA,!+#M/$!ge@?!LW??!LY5>mXhE?t!MSAS#IcrFZ:IBkhF"C]8&n
+CM[j+EH-#=EcZDJGBe@XH@:9pKSYPGOd)3"S"61FU84Zari#jr"feQ"Vl$<iU]7(gTfo0IVPgDp
+YHkUI]YMJ+b0JD`e_&Vp>?Fs*=Ai7$9M%f@6:F=.3&`3A.QfC?7Rfg72DdHU3B:&=<)QRko25IF
+repf6rJCQ1#&.gfD/XB5rGqmYr,VdXrcIsY!-\6^rcTN1G^+LZH[UBpK8,5@Nf]HjS"HISXKo@N
+`QQZZf@o'=j5]4ujo+??jo=EAirS0"ro3q9q;VD6$f^#ZDfp>L=BSa/=T2D%<Xr22=BJ^/>?G!-
+<``:%<W5ns;=[OeIXls#K8#&8M2I4MNfT<cPa.Q%R@B_<T:hmQUo(&hWiW>*Yd(OA[^N]V]=bkm
+^r""-`Q-'AbKS5Vd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L"m-X6?mfr:Oo()DDo`"Lbp@n=[
+q#C0iqYU0hr;HTcrdk*#s4.."~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2F9?Dfpetqjd_WrLNYPqj[VSrgW>Gs.0(Z
+s.'.[pRMPIN/<IPNK.EGVZ3A6TqJ$NTUhL>Q^*btOIi#6T:_^GSt2Id^:_.nf:I;FP*5C"!gJn4
+rKI;Gqiq)Fs-<YMrKdGJ"-f(9QN!-MQBhB4s-<VKs-<SL#a^pHR@9V7S=TYNs.9=cUAUbpUnsob
+VPg>jW2ZbrX8T$uW;`^nVu`ltrMp.(Y-5(7ZEsJ9s0Vp8Za0P6s0;R-s/uX0XK/A$WMoTi!2fal
+"fA,nUna^^UAgniV50raqkj+c!N)gpW<0#rW;`[rVPpKkVuNUqVl$BgW;`asWiQ*"r2g"&YPYR$
+Z2V'/Z2_*1Z*=54nur5$ZEpn:[/[N<[^WcV\[oEP]`5YF^APbG^`C;0`5Ta:aN;QHbK\>ZdaZk#
+g=tHAioK:em-jH8rq$<eq>:0"s![E;TWFBi^;H_:Q\V-<h49muM0+T6Pu_.[U8;!s>%(]@=g>-7
+Y-"o%Yl1d)N;eb8MZ&D3L]E3gruoY_s6&IVcHF&>^:h"`\[f;a_8".8`4NRi\%8rPYHb=8o<)VQ
+J:W?*KnbD?MN!OUOHG]jQ'[l,S"-(BTq\?ZVl6SpXKA\1ZEppH\%0)_]Y;.s_Sa@4aN2NIbg+P]
+dF-Opf%8R.g>(N?hr*JQj5]7`k3(smlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?e
+JcC<$f)L7~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2Ea'Anl@4k(!MaJ:RWMqh"fukCW_bs*u\6
+An>[iBkgLnH[L-cG]n7SF`VSEEGo`3Cj'rEGBS.RGBS1lOH,?\VL<<)Hi8?kIJnWpIfOrjIJnQm
+IJnWoJ,XosIK+cqIJSEkJ,=cqJcC<'K7npWL&Zo'L]*)-MZ8M5MZ/G4MZ/G4MZ&J4N;nn;N!YN*
+OH5KbOcbfir/_DLNfK0^O,f6]O,f3ZN/[^ns,-f4s+g`3M2D4h!fMqnq2#*-rJCQ1rJ:Z7M2I4L
+regW3reg`6reg`4!/g`3",`"qN;e_:N/NVgN;\b7NrG+>OT1IAP5UUBP5g[COp$o/OHG\)P5LFB
+P5CIAPl$aGQ3*D?R/WKRRf/]USGo)ZT)YHFTq\9VUnji`VPgDnX0&P.Yd1XE\%'#^]t_=t^r"".
+ai_iPcdC4kf%8R-g=tHAj6#Unn+-,Ep\FX]rVQWns8E#sp\t-is8M?a.JL?4M2m(MPaI/UIWBak
+Y^CP7BN\taE(N`LH[SXa9MnV_9o=a`L4k?RK`6r0MuS\5M>rA7LVh!K`qd[Ta8j9ZaT'B]b5]Wd
+bg"E3cPOsUdaHUoe^iC+g=tKCjQGgpmd]rDqYeD5,OPE&a4dGhPF@r,Q'ISqOHPcjP*D2uR['"q
+NfB$ULkUV=L%Bt.IXm!%K8#&9M2I7OO-#KePa.T&R[]h=T:r!TV5L8kWiW>+Yd1UB[^WfY]Y(tn
+_8=+/`lQ6DbKS8Xd*^:ke^i@)g=k?<h;@/LioB(\k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[
+q#C0iqY^6hr;HTcrdk*#s474#~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2E*T7nuoYqbmJmrDW_or_`/]lr![YoMGoN
+1,:XB1Gq'U62j(W5!;%k4?>Pb3B0#Z2?#`E5!M7p4Zki%:B!rk>=VLd;,R<jr_rSkr)Nbrr_rbn
+r_`\ns&&em!)`Ylr_rhrqGmPr!*/hos&8qsnl>Zgs&JttrDiksr`0#$r`9/%<)iisr`0##rE',(
+>$1](#$=r.<`W:(r)`errDir#<rH"u<rH%u<rcA%=8Gqt<W6#!=8l8#=8c1s<rc;#=8u>#=8c/$
+='/Ss=85nt=8l;%=8Z+u<W,u"<`T#ts&]5$r`9/'=',?&rE9,'r`f;(rEK8)s',M,r`]V4>?kE=
+?!^k:?i=@8@:3MP@/XI4?j'nI@q90MB.dk4C2%BtCi+'.DJX3/EH6)AF`hkNGB\:WH@($fIY!3/
+MiNpbQ^F52S=ZCIU&LefUo"$e9;SGZUS=NWTq\<XVPgDoY-GFG]YDA(b0SJaf%A^4hr*I\Ali#7
+;HHh$9MJ&I5"&:72`NHA1HRZN0M4l*3&WTS3BK6#<)ZXj;tElcN;eb8MZ&D3L]`ENE,kktrcA!X
+r,_m[qfVp^qK2d]rceBes*5`6IXm$'LP^tNP*;6&TVSQhZamijbgP(pg>1]Ij5f=`rT=+BqrRk=
+rT!n:ro<q9q;W^ZPHS;1HrO6L=^"m-<``=&<E<4'=]ed/=B8L(<E2pq;c6K`:h5$*JV/T/L5:\D
+N/`m[OckroQ^F52S=Z@HU84W`W2ZeuXfnt7Za@0M\[oGd^;%M$_o9X:aND]McHjkbdaZguf@\g2
+gtgfDi8N\Uj5oFckNM0qlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<hqu-HkrU^#>s+14$s*t~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2F0>FaSt2rg`tYrL<kYp72#LrL3\Sn!sBJ
+rLWbS#E=b$LlRFR@/d&'UCs;oT:hjKR@9G-PEV'"SXl@FT)P8eStNg2]Y@t6GD#mXs-!GIm?@O6
+!L&cHQ26gGPlR'EQ2HmHPlR'JQ2['\Q^F20R[]h<StDUITqJ*SU\pqfV#mNlVuEUrWN)utX8f4!
+VuWanVuWgqWt;A8YHbC>Za@-J['[6KZa6t9Yl1g,Yl:g2Y-"e+Wi;trrMT[o"/i#nVuERnV#[=j
+U]$qeUB%+hV>R4gVuNXmVuNUsVl6PnWW&jqVZNfpVYd7lW2KWn$)a`#Vl6PnWN*#uX8oC%XT#@&
+YPPL$Z2_-.Zi@?1YlM*-Z2Lp+Ym@Y?Z*L^B['d=@[Ka4N\@K2^]DfMD^AbnI_'Hn8`5Td<aN;QI
+c-=P\dF6Xtf\50=iT'(blL"*3o_/%TqYU2qs!Y"HViJ0j]!n9"O.`SrZB;MN>ub$g<a22eTrD7#
+=^PH=YctF;XfS`$Yl(^)N;eb8MZ&D3L]E3gruo;Os6o:%c-=5C^V%(b[CWr^^;7q7_n<Ri\@8oQ
+Z*1I:o<)GKIt3*&KS>/:M2R=PO-#NgQ'I]'R[]k>TV8*UV5L8lX0&P.Yd1UC[^`lZ]Y2(q_8=.0
+`lQ9FbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+qtpBjrVc?eJcC<$f)L7~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2Ea*B5D^=i.1fXr.4p"jamhjBP:pfBk_<Z
+IXM*?%=!)>F`_YFEH,l5CNajsG5lamOH5B]:o\;PH[Ga>rdF`orI=irpO3$grI+WnrdXorr-\Qm
+rdF]nrI=it!J,e"JI7!]JqJ`1L4tA;LAlu-L]rQiM2@%Fr/1N2regZ2s,-`4rf$i9!KN6?OT1IB
+P5C@@NrP1?NrG+>N<,'!r/:Z7MYi81M?/Worepf6rJ:W6M26udM>rD2M>rJ3MuS\4MuJV4MuS\7
+M#`G3M#`J5N;nh4Mu\e6N;\b8Nr>%<O8tF>OoU^EP5UUCP5^UDP5g^GP5^UDP5LO=PlI!MQC"!<
+RJrZSRkUD)StD[LTq\9VUSO``VPg>jWiE/'Yd1XE\%0)_]t_A"_o0O6a32`RdF-Rrf\5-Zh@JQ)
+jQPptnF?)Ap%J.Sq"apcs8;oqr;?Nl"98B#roF).g6%ASH]F,LObA70I"mf@FFn@'6qVAi9m_55
+ISNU0;Gg8JM2@"AKSB#Ns,?r8s,-c3s+g`3`l@qspW3?V"j>-6c-FW6ci;B-daQ^qf%8R-g>(TF
+jll$tn+-/Hr;OP4,5IbEf<;<HS"#b0Q'@DmOHGckPa%T)Q][DkNJrdPL4tA9o7UJ!It3*&KS>/:
+M2R=PO-#NgQ'I]'R[]k>TV8*UV5L8lX0&P.Yd1UC[^`lZ]Y2(q_8=.0`lQ9FbK\>YdF-Lne^rF+
+g=tE=hV[8MioB+]k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$f)L7~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2E0X92/4\;Z9Vn;?Kiq;GlgXl;@LXpJEIt
+1,CX@1Gh$U5s[\!5<_1l4$5Pc3]K&W2Ea2c4[2.p4[)"l:/4MX.TfD@r_NSlr_`_pp/Lohs&8qq
+!`;inr_`Yms%rbmr)*Dj!)rkrr)Nbt!*0"t!*0"ts&/tu<E/rt!*9%u!`W0!r`8ts!*/nsqc3Vr
+rDs&#<)iisr)Wi"s&fD,=]kZ)"^"i.=&rB!<ruE&<W6#!=8l5$='#9"r)W\rs&T/$"'AT(<W6#!
+=8Gtk=8u>!=8l8"=8u=r=8Z2#=8l>%=8c52=&r@'=&r@%<``@'<`N/n<rQ1u=T)D%>5_\)>5qh+
+>l7h+>5qe/>[(H<r*9P6?XR;O@UimH@K0a8?iOLB@:E\UAS5[jBkhF!D#S>PD[:?%E,frAG'J<3
+H2r?jI2m`gKSYMEO-#TmR$jD3S"-%@StMaMU8"EXU8"F^U)g#'UnjlcW2cr&ZF.3R^;@k1bg4_f
+g"YB?i8N\Uro>;L=BSa*;c?au9hS&B6:F@.3]AQ7.Qf@>7Rom;3&NNR3]U4><!#il;Y*ccN;eb8
+MZ&D3L]N9Or,_jXq/cFUrc\3^s*"?b,^=T[H@13nK8#)<NKB<fR%9qJX0/kB_8spPf@ep8i8`kY
+jlQL(rTF(?qrIe:n`0T/'&qEC>%r.[>?Fp.='&F(<`<(#rE0)&$Wg;/=B&=#;cHRk;=dUkI=Hcu
+K7nr5Ll%%KNK90aPEhE"R$sM8StMdOUnsufWiN8)YHY==[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1i
+eCE1&g"P39h;7&IiSrnYjlYail07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#
+s474#~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$A7TP"J<B/fqj[DMrgWkV!1WVNrgj"Zq4/C^
+M2%%LMi;#?V5Bu^U7\'OSXl19QBm\rO8b^PT:VVQSdV4(^:_1oP&l&3P*5g.s-3/>rK@2Es-3MH
+!gJt8q3M#F"I,1:QBqN8r07)Ds-=:aQC!u,R[]h;SY)OITV8'RUSId`rhTjsVl-JlWN)urX8f3u
+W!')uW2ZcpWs>`.YHY=<[']h?rjE!;Za-j@YkkU*Ycn&/"K\W&WMo`m!2fXks/#joUnmsas.TRi
+Unn!dr2'OnVPj9fq5=4jrMKXmrMTFhs/5mq"KAE$X/l-!!j8`1rNH:,rilC,rj)C-pTjb&!4)R0
+!4;a5!k,VKrjN3D\[f;`]Y(qk^AbkO^qmk(`5]msar/CHc-OedeCN:+h;I>Ul0I^)nFH5Ep\Ogd
+XoBisW2,oNVldD)SX>5(]&'!DVjgkCJWs5@SY2dW>[1]D>?S89Z*(45YPGF"Y5jO\MuS\4M#iEf
+MuP!Hs8W)ffuMC\^qRLn\[K&[]"GnsbK.K3\[f2Y['HpAYH@E!A:8rXJqJ`2LP^kGN/is]P*;/s
+R$jG6SXuLJUSOcbWN*#$Y->1;['mEQ\\#Mg^VI_(`Pom=aihoRcHsteeC<($f\,!5h;-uHi8WeW
+jQ>UfkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF@%J,~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$='K0JE-pAjs+1-#!.j6`&nb`cC1h3p:jmY;
+H?sgZG'A"Krc&'ZD/F'2rcS<dG5ZUiO-#B^NH8`Nrd4WlrI+ZoqgSTpq0`?oI=-GAIJeQnJ,Xoq
+IJnNoI=D'C!e>iPqLJj&K7ei1L5,P[rJ:K1reUT2rJCT5rJLW3s,%8DN/W[QN/W[QNK&sZO8b7@
+OoCLDOo:C?O8Y+<O8k7>NW4t:MuJS9M2I1Kr/CZ6!/gc4s,%)=LkpnFM2I.Hr/1K3s,-B*r/(T5
+MMmDeN;ne9N;\_>NfB'ZNK*purfI/Bq2t`ArK@/Dr0%)Bs-!AFrK.)CrK@5Gqj%/F"I5:=Q^I]>
+rgO+^SXuIHTV;@[s.hHIVPgAkWN*&%Yd1[G\[oGe^:qG#`5fs@bKS5Ye(*.*gtglIj5f=akj%U)
+nF?)?oCV_SpAajip@n@Wq>C-gquH]Ps!m6*Nf&F>LQ.@LK77ieNOF7UHuM\fBQ$F9H@1*j:/+V`
+:elq*LkUP<L@^&uN;eb8MYr;3LkkuMpW*EXb0'_-s31Phrm1Vl("1R[eCE.%g"P3;i8`tam-jN;
+pA4a$s!-3jd+H1>TpV@<Q'ISsOcbfjPEM,rR@'2#O,]*WLkg\?Knf2PA:8rXJqJ`2LP^kGN/is]
+P*;/sR$jG6SXuLJUSOcbWN*#$Y->1;['mEQ\\#Mg^VI_(`Pom=aihoRcHsteeC<($f\,!5h;-uH
+i8WeWjQ>UfkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF@%J,~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$77KgB:/U^_rDE;cs%rho;,R9gpe_#fnPT6_
+q,%GS0ekLA1,LmS5lEqI4V'Y:3]fA^3B9&X4[)"l5!T!/s%`Pf"$T=Q;uKPm;?'Mo;tX,h<W?%u
+;uTVq;Gg<g;Ya2h;@$3!;c?Xp<E<0"<<-"t<W?%u;ZKeq<W6&!<<lK%;cHas<`T,u!EN;#<r5np
+<rZ5$<rH#!<`T*!s&]5&s&o>'s&T8(=',B%q,dPrs&]2#!E`G&<WZ9%<r,ns<rH)$<`N0!<rZ7u
+<p<Zc<qobo=9M]+<``B"=Su5#=Su8"<WH4p<rQ2!=Su;%>5hY)>5_\*>lS%->l7h+=o_e)>l@t.
+?3=PB@:K4Gs'l":$=@1K@:E_WAnYpprG;IM/8fBGEcZ>EFa&+WI=?ZrJ:`E,KnbA>NK90aPEV5t
+R@9P2R@B\7S=Q4BT:l(T*hoI,Vl6SpXg#1?\%0/d_o9aAcdC7pg>1ZEiSieVroF+@.cc4_=]eR"
+;c?dm:.[l<792c63\Mj94?G/L84Z3<2DdHT3]U8@<)ZUknkfCGrepf6r.tT5LN@NWEqj_UFT-F]
+G5ZR`G5QRaGlN%3H[UErKnbGBNffQkR\-@QXK]1I_o^6Tf\5-;iT&tZjo4E?kPsZEkPjWAjT+B8
+j8@s<j8%aAj4nf[Fa@J&=8l;&='#<%%TZS1='/R/=]ed-<`N+!r_iepnPEbEIt3-'KSG8=M2R=Q
+O-,ThQ'Rf*S"-%@TV8-VVPgDnX0&P/Z*UgG[^`l[]Y;.r_Sa@3a2lBGbg+M\dF-Oof%8R-g=tH>
+hr*GPj5]4_k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$fDg@~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7eH<Co'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%AS?13KpJ3tm%!sBpmV2Os.'(XoUPrPr1<hW
+s,S"RLlRLT@Afs#V4sZWT:hjKR@9M.P*1s!rh'4^"J)-UTqMCu$,;^eHA.QHP*;+-PkL=?P5:@B
+Pl-gBQMm*IQN*6JPRj%DQ'IZ$Q^=),R@0M5S"9PNrLj4cqkX4f$Ds`!W2Q\qX/i>&ri?.$WrAsq
+W;rstWtMM9Xfnt7ZF%!H\$rlW[^EHJZM:[2Yck:7YHFt,WN#ios/#gpVYm=lVZ*ClV#7"fU]RBi
+V>d@lV#[FmVZ3LiV?3ZoW;`^mW;`[pVYm@lW;ijqW;iatW2ZbrrN#mu!j/W/rNQ1(!4)U1!4;X2
+"15D@ZMV!+ZMh-0[/RH5[f3c9\Gj)>]*#^Z^:sQ\#/J'k`5Td<rlGu!bg+P`eCN:,hr<_[lgOB8
+oCV_Mq>C5ks!b"H`fmm1W55*pO.r`!\<*87?;sseQX!adTr)!t>$tZ@>-Y<:Y-"n2qQTh"repf6
+r/(H0!/HL4+Q!.prS,*4c,.60]XkVa]=P_l^rjd:]XkY^]<ecIZ`s#(?[[BRJ:`E-L51VCN/`jY
+OckroQ^F21S=Z@HU84T^Vl?\tXfnt7Za@0M\[oGd^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiE
+i8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcF@%J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7.g*Ao'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%=^PcWF*lVks+13%rdj9b*,B8!ASGpp;La(@
+H[9s^GBS.NEcQ/=DJa35G'Nt/$[6c=GE7fENc0)XFo-RcIJnWkJ,auqIK"]lIK+cnJ,ausIJnNo
+I=D$Brdb'$r.,'(K7ei1L5,S\r.tB0reLQ2r/1N4q2531rJV#?N/`jXO,oBarfR,As,m;B!0@)=
+rK$o;rf-r9rf$l8",`"qMu/J4M?JcnMM[2gM?\urMMm@KM>`>4MYW21Mu\e7N;\Y:N/NOMrJU]7
+rJgi9!fN"spPo67rK.&Arf[8Es-!#<rK@/Dr0$uA!0m8D"I>C@R@4&Cs-s"X#+_?WTV8'RrhD-B
+V5L8kWiN8*Z*_!M]=l"r_8=(-`Q60EcHt%jf\,$8hr*MTk32-tmdK]:o_%qVp%nC^oa(9dq"aa^
+qu$HGs!mr-N1bW`MMRdUJTuTtPDs[.Bh^o`DfJNGH[:'7:/"S`:eln)LkUP;L%BusMuS\4M>rA3
+L\]!pai_cLbfp(2s3;J-d*U4ie'uq!f@\d2h;I>Tkj%R)oC_qW\c360d]V36aJ>&iR[05&PEM&l
+rfdnVPaRu)OcPN^NJ`OHLkbJS?[[BRJ:`E-L51VCN/`jYOckroQ^F21S=Z@HU84T^Vl?\tXfnt7
+Za@0M\[oGd^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([
+oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcF@%J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7.g*Ao'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%84Q<H:Jga_r_`Acr_WYnr_`\lpeh#enko<_
+r)"%_1G^aA1c.-V5s[_"5!M1m4T7AG4#f2[2a0G)4UaP=5<M+m:/4MX2b$UB;>sDk;?'Mo;tX,h
+<W5r";c-FjrDEAgrDEGir_ir!<E<+!r`'/'<E3!s;cWft!*0#!s&B,";cENl!``9&rDrqu!*&qt
+r`9&!r`9"ur`0#!r`0##r`B/'r`K2%!E`G$<r#hr<r5tu<W#ku='#6#"]e]+=BAT&<WZ?'<rH)$
+<`N/u=8u=t=8uCj=8c5*='/O)<``B#=T);"=Su8#<WcE*<`]3$r`0)#<`]0#s&f5&qc`r&r`oG,
+!*oM-!*]A+qcrr&5$q`-@UW\S@UWYQ@:EbYB5)-tD/XB3Df0H2E,p#BG'A1VI"$QpJ:W?,L5:_G
+Nf]EfQ'Rf(Q^F/.R@'A1rgP4&S"6+AT:qsRV5L8lX0/\5[CEf]^r"%/aNMiSdad")gtgiFiVqm9
+j=fQQio/hO[9-O?;--[o=A;I\5=.k25WC\Q+t#K80eu6f75m1`4$#A^<)lmp;,Zs^repf6r/(H0
+!/L>j"*A[.GPu^`FoQX_GQ2pfGp7Q^It<6,Ll.1QP*MB(TqnZiZamiibgP(qgYUlJj5f:_k54?A
+joFTDk549>j8nB'qr@S7s5j.=r8e.@Q#gJ]?Y]RB$WgA0='/L*<`W=(=oMP'<XDi.<`N's<)QRi
+o2/kCIXls#K8#&8M2I7ONfT<cPa.T&R@B_<T:r!TUo(&hWiW>+Yd1UB[^WfY]Y(tn_8=+/`lQ6D
+bKS8Xd*^=le^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6Kk
+rVc?eJcC<$fDg@~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSO1@r$4:N;T1AS,f&NSGnuXSGo#QRe`HGSGo)X
+Sd(aWNfK'SNrG"P?_sWrU7e6QT:hdGR@'8)P*D'"T`1MkSXuFGTt\7R^O`q<JbtZ.PkL=@P5LLF
+P`q@/Q2?mGQ2?mHQ2HmHQ2d0MQi<BPRKf7OSY2XLU&LbdU\gkcV$<fpVl?\rX8]4"XTPZ*WiGur
+!36%!riH^7Yd(L?['mKU\[f2Y[C!74Z2_$3YHFt,WMofo!N)doVZ!FmV?3ZlV>[1gV#."hV>[:k
+V>6tjVl6Mkql':f!3#mrqksLori5ptriH:*Xf\f*Yl1g,ZM_'*[03kCZa@+3ZOsRP[^ENO[^WcV
+\[oAa]=bhjqn<6L_84"+`r=!paND]Mc-b%lg"bNHkN_F'o(;VLq"ajeW;e=A^8\!!T;JN]V4F$2
+T"X!MQEGpRJm"4;?(RX`W*<M2?X6j?Z*LU:Xnf3sYQ'O\MYr>2L]E3gruf5Zli6"^d*9PG^:h.f
+]"GVe^;S"6`P/so\@JuPZ*LV)Y@W*0IXm!%K8#&9M2I7OO-#NfPa.T&R[]k>T:r!TV5L8lX0&P.
+Yd1UC[^`lZ]Y2(q_8=.0`lQ9FbK\>YdF-Lne^rF+g=tE=hVd>Nj5]4^k3(sml0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$f`-I~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSO'>%22aGMn#LJ,FinJa@suC1q6kBkV6r:jdV:
+H?a`7Fp`>4EH5u9DJj65H2VpcG6rMUOH#9/LhLgUqgA?js*j]lqgJKnqgJHmr."Wns*aop!e#NH
+qg\Wrs+10$s+(K.K7ei1KnbA<M#N20M#W>3L]E;1M#W>2MY`80MZ8V4N;nn;NrP1?OT1IBP5^[F
+Oopi.OH9@#qN(W9q2>?4N;eb5N;nh8MZ8M8MMm@Lr/:Q3repf6pl"j)!fMqnrJLZ7rJ^f;rf$l:
+q2YH8s,d5Br0$i=rf[;F"I,+6P*5C"rK[8Gs-EhTR@0N@RfK#XScGD^TJ<.8UnsrfWiWA-[(!TX
+]thJ%`5T^9ai_lRdad"(gtprIjQ>XilKdj+o(;VLq"a^[rqHHfqtL-c"S_]eqYeqD,JT\-Mh6V;
+M2$b;IWKdp[sW4GAl)u/DFmQLH[L?=9h\G^:]?4RLP:D9nq@%$s,-`2s+gc4a2l@$aTTc0bKS30
+c2Q!)d*^7heC<%#f\,$7hr<b[l0Rm0p%S=][JqB4S(4RZVNm^CQBd]!P*(rmPE_;tR%'J*OH5B[
+MM[%BnV(P%I=?]tK7el4Ll%"JNK90aP*D5uR$sM8StD^NUnsufWiN8)YHY==[C3TU]"G_k^qmn+
+`Q$!@bKJ/UcdC1ieCE1&g"P39h;7)JiT&tZjlYail07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0i
+qYU0hr;HTcrdk*#s4I@%~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSNl84ZEL:\@Wc;>*ib;>jDd;>X2\;>jDm;%,<<
+0etO@1c70W5sIU556!_I4$#Jar\t-C3'BJi5!M:24UF;I:/+G66VL9RpJCui;cEHj$WC#(<E3!t
+;c?Rm;Z0Ji;Ys>j;?B]n;Z0Pm<<#tt<WlE$<*!*!<WcE(<`T,tqG[Vu<`W4#<rQ,!;ufqt<rQ)%
+<``=%<W,qu<W,tq=9Mc/='/Q&<Wc?&='"rp#?Fi(<EE7&=8l8!=8u>"=8l5%=&rB"=8l8"<rc;#
+<<-(s<s)Q+='5#pr`K2%s&f8%qcEi"r`0##r`K,#"BJT*=BPQ(rDir!<rQ/%=BAW$=TDY'>6J,4
+>$P>3>Q7t,=o_e&>l%_-?=.+>?OL7M@:3MQ@Us+dCi0/h*H,h6DJsK6F*)PLH@('hIt3-'KS>5>
+N/s'`Q'[p;Rff+KS"0JK.A!3+TV8'OT;&-ZWiWA-ZaI?U^;@e,`lZEKcdC1kf@o!8hV[5KiSrns
+jT"6rio/hQh;$`:enJJo=&i:"<)cRd8OYg3=$\c,0.Jb-3\E-W84>p*2E!TX3E9'Y<)?CinkoFF
+s,-`2s+gZ1r,_m\s*"Edrc\<ar-&$_s*,c6H@(*kJq\u:MiX!bQC=D?VlR#0]>DY7eCWC/hr*PT
+jQ>V!kPjWDjT+HBjT=N)jo4??j87p9jo+9;jo4BfkMa=9??0"Y>ZY*2='/L)<`iC(=BAU->$>!-
+=&r:$;c?Xn;"@IpI!pHoJV/T/L5:\DN/`m[P*2&pQ^F52SXuIIU84W`W2co#Y-5(8ZaI6O\[oGe
+^VI\&`5Ta;aihlPcHjnde'uq"f@em4gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_
+rV6Egs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK#lEEHd/&q4%>QrL<\S!1WbRrgW\Oq4%&Irgj"Z%
+ZZU-KoM(Q@&9ZtV4jTUrLXFdR@'5&PE;<*StH"R".c*YU&D\-d%,K@r0-r@plk]?r0./Fpm(cCs
+-<DGrg!GHrg!ML&XSlOQ^O;3S=H4DU8+N[USOabV#I4jU^<lpVl6VrX/rD)r2p7+XK8J&X/c0"'
+<J@>YHY79ZF%$L]">Sc\[],VZi76/YkbR(YQV/2WN)oqVuERjVuNUsV50l]V#I4`V?!IhVZ3RiW
+;*7kW2]Tks/?!ur2Th"rN64(Y-7f.!4)U/!4)R0!4;U1rj2^6[.L^)[K*`7[f<fA\@K2_]=beiq
+S"&d^qmn)`5Td<aN;TKc-Ohgf\>9Ajlu.#o(;VLq"t#cs!aqEURA!WUTpJ]P,#/&^lG"=>?4ddQ
+rmO`TVPaq>[h#D>-P6:YcY.4qlok!!/pi6rJCQ1!/HL4,/O<NqWHAOccEo9^:^qe]t:nj_SOI;_
+Rm=f\$iWJYd(@4o<2qWI=HcuK7nu6Ll%%KNfT9bPEhH$R@9V9StMdPUo(&gWiN8)Yd(OA[C3TU]
+=bkm^r"".`Q-'BbKS8Wd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp
+@n=\q#C0hqY^6ir;?Ncrdk*#s4I@%~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK#H0B5;L5k^`V]qgeWpq1/BomXcHnC1^shC26[p
+H[L0cH$=FSG'%eHEGo`4CNO`DGl;dmGBe@oOH,<nHu=0+I/86kIe\EmIf"NnIf"QlIf+]nIf4]p
+If"WoJH(2tJdd9bKS>,9M2I.FLl$rcM$&QhLPYncs,-f7!/pf7rep`6rf-o;!frG)rfR5D!0dDH
+#Et=6OcYWaNqSP6NW>(7N;eb5N;nh8MZ8M5MYi;3MYN,0N;AJ3N!#&uNK*mqs,6o9s,-l9qi1T6
+rf-i9rK$r>s,m2Aq31c?!0dDHs,uo9!0mJJrKdJM!goCDqO.JTS=TSL4.r:@U8+N]Vl?_uYHkRG
+]"Pkp_SjF5ai_lSdad"*i8N\UjQGaklg4$-nauPLq>1!bqYBs`qYU0fqtp9lrVk1D"Q>B!Lk>V]
++cV/+G^Y@2P')%`91;9fE_&lNH@/I_9i=hb:5XmaLPCQRKE-r0MZ&D3L]E50aTK]/bfp"0(s^IT
+dF-Lne^i@*gYCZEjQ>^mmd]uDq>@Mt$.#%$Zb<B2R@KZDPnfLEPa%ArPE_<%R?NboNf8pRL4k;7
+nqCk,I=HcuK7nu6Ll%%KNfT9bPEhH$R@9V9StMdPUo(&gWiN8)Yd(OA[C3TU]=bkm^r"".`Q-'B
+bKS8Wd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@n=\q#C0hqY^6i
+r;?Ncrdk*#s4I@%~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK"`[92&/ZqGI;jrDEVmp/(]bqGR)cq,$WZrDF"[
+1GgdB1Gq*V5X@X54p=&14$5VerAaa=s$$oU4?Ykl:/4MX;b'S\r)!GlqbdAk!)r_nrDWYor)<Vn
+rDEJjpJLrgr_rhr!`N&tr`'M1<E)t!<`N.#<``@)<`E$uqGdGo"B8B$<)ros!*0#!r`'/'='/O)
+=',9"s&]/$r`KM/='/O)<`N+!rDrVn#?Ff'<E<.%=8l7u=8u>$=8c1s<rc:t=8c,!<r5ts=T;Fp
+=8c8$=8l;'=]\]&=T;J&<rZ;%=oDG#=9;W-=8Q%t=8l=t=TDY(>Q.e*>l@k/>[(B8r*08.>l%b'
+?N4C5?iFI5@0U1NA7fOkD#.upDK'W<F`r%VI=HcuJqJc4LPh%NOHPlqR[ftBTqS3UU8"H\Vl9Tp
+,-.`DWN3/+[C<c]_8F74b08/YdaQ^sf\5-9h;7&Jio/nVrT!q;s5>KcgtUN6e^Ddda6%kS=B89u
+;cHIe91_B87S>p)2_-4'4Zb8N8Ol912)RJp3<`D^;cQXlnPK:EregZ2s+gi6FEM_LG5ZUcG'3V(
+s*+Kfs*>i9I=Hj%L5ChKOHYrtS=ugZY-PUQ`QQ]\f\>6?ioK1^k4\!8k549>jT"9;jS\-=jSIs<
+k54<fj3_dKJm;_h='/U,='8X,=BAR+=BAU,>?G!.=&r@$;cHUk:JgX[COCP[J:W?+L5(M@Mi<[W
+OHPfmQC+)/S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdtf@\d1gYL]C
+i8EVTj5oFckNM0qlg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>U6gqu6NkrUg)?s+14&s*t~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf>iEFF8q2qjRSSopbrNrgW\QrL<\QpRCoIr1+k"
+NfT*SNK0!Y@&9g!U7n<SStVgJR@0D+PEV0#TDY8fTV8'l^:h:0eTc]FPlHsAPk^FBP5CICPkUI@
+Q2m3GQ3!88q3CuGrKdkZS"#q=SY;gTVl'EhrhTOirhLC-W2Q_rX/rG,Y-5%5Yd(F9XfSY+XKAS,
+riZp<Z*L[A[CEl_]tCtf\@8iMZ2Lp$Ym%>5WiE%srMT[mrhg.&Vl$>fV50o^USXgbVZ*FaVZ*Lk
+W;ijnVuN[qWV`XmWW0!tX8f:"Xobf2YPk^(YlM*.ZN7GAr3cL1s0hs7rj2X1qm6=0&@JsT\%&rY
+\[oDb]Y(ql^;'W\+2>V._Sa=1`lH3Cb0/&Td*pS"h;I>Ul0@^,oChtUrhKKCYGeC^_5*otW1900
+TtTBVQFi/lK3FI@?)+$eWEWY4?X?p?ZE^[;Y->,-YkP@$MYr>2M#W6hs!$Y+qu6$;`m;lF^:q7l
+]=khh^VIb0b/:s*]!o>ZZ*CU=XRiW'H[U<lJ:`E,L51VCMi<[WOckroQC+)0S=Z@HTqeE\Vl?\t
+Xfnt6Za@0M\[oDc^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6
+nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFF'J,~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf>Q3B5Vg?mskCfqgeNmqg\ZrpON0mnUgdU$tX$a
+BPM9ZI!p?fH$T@3)09h>E,TZ3D0:)HGBS.RGBe@nOH#9*Tk\WIIK+]kIK+cjIfOriIJeQlJ,=Zp
+IJnWjJH(2uK)^K'KE['bM2I4Lpk]*/LPL]`M#iKlreq&@NfK*ZNfF$srJ^f;rJpr?rfR5D$C-pC
+Q'IStP*(fco8a!6NJrkoN;ne;MMmDlMu\e7MZ8P5MZ&J3MXl]*N;JS7N;eh7N:`,/NWG3$rf@&?
+!0R/AnWNs;rK@5Gq3(fCrKI8G!1!MKs-N\O!1E\P!M#_[TDtK:T:hpQUSO``W2cr%Yd1[I]=bkm
+_8OC9bg4_ff@es:i8N_Wkj%L$mdK];p%S:YqYg?lrPAL`P`:ZNR"^9HL4XkqH]P[bEf+[4@nCW2
+9mh86ISN[4;Gp8IMMI%CLPCQSK`?r-M>rD3LB5TBrQYAf(sgRVdaHXqf%8U/gt^iJk3;4!nFZGM
+qu3bu,13jG]tCMAR%9_5Pa.GqPE_8qPE_B%R[&tqNfB-WLk^_?nqCIuI=6TqJqJ`2LP^nHN/is]
+P*D5tR$jG6StD^MUSOcbWN*&%YHY:<['mHS]">Vh^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;7&I
+iSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf=oa928;\qbm8fohbWbpJUfaq,$WZ(K*+I1,1R@
+1c73X5sIRt5!;"k4$#G`3W1r;4o[_E4o[\N9hnDW.T/u;r_i_mr_i_mrDNYoqc*Mms&Aem!)ibm
+r)3;e#Z+Ar;c?Rl;cEZprDa2*='&F&<E<1'=]kW&pJ_,mr)<Yrr)No"<``B%=T;G'<`f6#s&]5&
+s&TD->$G04=BGK%s&8tur`8hrrDrks"'8N(=8Z)#=&r?!<rZ2"<rH+u<rH,"<rZ1r=8l;)=&r@(
+=SPtm=9D].=',B'$!CA3<`N4'>$4u,=8c8#=oDG%<rZ8"=T)A&>5_V%>5qb*>5_\(=p8,8?!LZ@
+pg3r,s'>\4rF#Y6"_(tPAS,TSC&_p<CM[g)DfKlAG'J:ZI=HctJqJf6M2R@SP*D<%SY)UOVl?_u
+Xfo"9Za@-K[^W`S['mNW^V[t3bK\A\e'ut#f\5-:h;@/Kro3k9!94":3oAfLgY(3.d*9YN_S3Xl
+[]*J6<`*1#;Gg1]84Gg4=@5#10e4t.4>/EY84?!-2DmNW3*'$X;Gp@inPT=Dr/(H0s+gPspNHR\
+-?sf^H@('iJV/]5MiNj]Pa@l3Uo:B"[_9T#cdgY#gtq#MjQ5LcpZM84s5j7@!9<t;qrRk=q;qM:
+s5k!YkMk?<BQINh>ut-2=BAO*='/K%=9Vc0>$+p/r`08'<`;pr;Gg0[;.+a!I=Hd!K7nu7M2I4M
+NfT<cPa.Q%R@B_<T:qsRUo(&hWiW>+Yd(OA[^WfY]=bkm_8=+/`lQ6DbKS8Xd*^=le^i@)g=k?<
+hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X^u*_G(Z"TS,JcUS,SlQRfJuUS,8`QS,JfJS,/ZP
+SK3`OMMR4MO'\Z\VPTuZTUqdKSXZ19QB[SpT:V^JrgjLjTqS-n]Y;(JT6uXsPQ6pGPQ7!IPk:1=
+PQ?u4rg!MLr0?i=!gJn5r0@8Is-N_P$CR?PS"-(DUo12irhfOgs.g@*VPgAlX/rD*YHP4:ZEppE
+Za$a=ric@)riZp<Z*L^C[^j&b^VIUs]"#,RZ2Cj$Ym%A8XK/D%ri#jp#c=Q!Vl6MjVPX6erMBLj
+rh]Oi!2o[j"/i#oVu3InWW&jmVu*FjW;rstX8f7$Xo5F"YlD!,ZMh*6[C3KN[^EOA[/[Q6[/[K3
+ZMh-/Zj!kG[^W`Urj`$?rk&6EqS"&e_84"+_o9X8aNDZKbg+S`e_&X5hr3VXl0Ig0pA4`]rt290
+T:2OOTWk,[O/&l"]9/h<r`05`QrdL]TqhTl$Y!IK>HtH?YHP+3YPk^!Y5jIXM>rD3LPu0Td.75)
+gqqC__S<gt]">Yg]=u(u_op'7]XbP_['HsCYjno.I!pHoJ:`E-L51VCN/`m[OckroQ^F52SXuII
+U84W`W2co#Xfnt7ZaI6O\[oGe^VI\&`5Td<aihlPcHjnde'ut#f\,!5h;-rGi8N_VjQ>Ufkiq?t
+m-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcFI(J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X]Sh=BlJIhJGaoqJG=W`JGXoiK)]R*An>UhC/B>+
+H?sj]GBJ(PF)uGBDf9N/G'A4VGQ)dbGR'=jNf812DL280!.=Wks*jZkpO2meqLA6g!.Xiq!eGrS
+qh"j#"bh_hMi<VoMZ8M5MZ&A5LkgfaM#iKlreq5FO,f6]OHGTaNfB%tNr>"LOHGWeP*;/tR$a5*
+Q'@GorK$u=plGH8rJg`6re^]6rJU`7re^]4rJLW5r/1*(s,?r:!07&<rJgl;rJ^E/rJgu@NfT8#
+OT1IBP5gaFPkL=@OoUaFPQ-mHPQ-mGQ2QsFPld8<Qi39ORJN?RS=Z>LT/!%7USO]_Vl?`!YHb@>
+[C3TV^;7b/bg+Sbf%Jg6hVdDSjll(!n+$#Ap@nCZqu$Ek^Af,Hd#O-@JV8`1N.c_*I>=#GFa@^l
+77M398PT22##@uh;c?Ohre^i6L4k;8nq7"#r/(H0s+^U!rm(Pi(=:IWe'ut#f\,$8hr3\\lg=35
+pA+UaWW*IYUpRk=Um@RAR$Eo"P*>m0%[30CR%0P,OH,<ZMM[%Bn:bG$I=?]sJqJc3LP^nINK90`
+P*D5uR$sM8StD^NUnsufWiN8(YHY==[C3TU]"G_k^qmn+`Q-'AbKJ/UcdC1ieCN7(g"P3:h;7)J
+iT&tZk2tjjl07O#m-X60n*oi:o()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X[P`M9i"X_;Yj8`;#X>b;Z0Jm;ZBVh;"RTm2)@$C
+1c%!I5X@Y"r]UcS4?P\f4ZYS`3&j&a55m\G5!Am/!)EMf"$T4N;#O;k;>sJn;>X8k;uBVm;ZKem
+;u]_q;>O2d;?'Gm;>a>i;u]es<W6%u<<ZH+>$>$/r)NPl!*/qr!EN;!<WQ9)qcEi"rDrr"!*K5%
+$s6\<>?b95=&i3u;cWcsqH*\t#Zk,/<E<.%<E8os!*B(us&K,"rDrr"q,[Gq"'/K)<r?&!=T;D&
+='5B%s&T/$pfRMu!*K,$r`9A.>$>'3=BAU,pf[St!a&T.r)a#'>$Ci,r`];(s'#D+s&oA*"^>5;
+>[:Y7?N+42>[I;7"(#>A@/aRj@UiqZAnG^iB4bahBPVF&E-$,DG^4X`I=?WqJq\u;NKB?hR%0bA
+Uo:AuZ*^pJ\\#PhrkB;a^VRb%^qmq.aj/8]e(!"&g=tE<h;7)Kro3q;!T`;?i>UY2gtUQ9f@80k
+aMl!.]!o&OYHP+(IT]cP;uT\p:)-Dl5XIt15WC\N,UYc;/i$!g6oR"^r]:?F=&i4!;G^9];#lLO
+M>rD3LB2RBq0"32G^4R\H@('iJV/Z4MiEg\Pa7f1USk/r[Ca5pbgY1rgYLfIjQ,Fbk54<AkksTF
+ki_.+k5XQ=jSIs<jS7j6joaf/kNDg+%-QTYG$J$V=B\g0=BPN''NS@==&rL,>$=s-<EE.#;c?Xn
+:JgUZAUJoTJ:N6(KnbA>MN!OUOHG]jQ'[l,S"6.CTq\?ZVl6VrXf\e2ZEpsI\@K2`]t_A!_SjF6
+aN;WKc-FY_daQ^sf@\d1gYL]Bi8ESSj5f@bkNM0plg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<h
+qu-HkrU^#>s+14(s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C5AnZ45L6qb+p6tTBs.&hQ!1NPLqOIJS-'"+HLQ.@T
+O'ec]V5'cZTV/!OSsYq3QBIGoStVaIT:VXJTV&mr^&r&lHA)$Ws-<VKo993=rfmMMQ2R!NQ'R`$
+q3D,LQC!s;Q3rn@PE_;sQ'R`&QN!3[R$jD3S"#q>Tr"`fWi>uq!2fRgrhgF/X/rG+YHbIB[^W`V
+\@&]N[C*=>YQ(g>Z*UaC[C3ZZ^VRe'_8!Rk[Bd(7YkkU,Yck11ri6("WW&e"W2HSmVl-EkV#[=j
+V?!IlVZ!=kVZ*IpW2HQmV?3ZmVZ*LgW;<FfW;`drWrK+$XKAW'Xokf/YHe)2!3uL.rNcR4[^H+A
+!4Dd4!O]B4[/[K2ZiIN4[K<qK\bir=]Y43V+MY_._SX4/`Q#s>air#TcdUItg>(TEioK:fmIBiC
+qu3;h.'9JGQ)LLRZ)!tUM4_ZAVjG)[G_]Ic=BqbrTrD0u>@1cB>-G-8YHIc,orn:Ms+p]1N;k.%
+ao)28j2T<f`P0+#]=Ybi]=u)!`66<@]=GJ\\@&TGZ*1>*Yl(\4H@1-iJ:W?*KnbD?Mi<XVOHPfm
+QC!u-S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdtf@\g2gtgfDi8N\U
+jQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C5>@1uYF+*P.m!nMTr.4To%VfckAS>gmC/B;)H@'sa
+rHA<bEH1tr'5hW0GBS1TG'A1UGE7iFNDl-ZFS:.\Ie\BmIf4ZtIXQWnIJ\HoIt%6DrdOlsqgSQp
+s+('!!J5n!Jd6p^LP^tLNK!alre^W1r.tE2req/CO,oBaOd)&mOoCFDO,f8"Nt[V;OcYZePEhK%
+R@0G/QB[PoO-':"r/^c9!0-u<!0-u:s,-l7r/CZ6s,-f6!/gc6r/1K3rf$i7s,?u9s,?r:!07#;
+rJgl;rf$K/r/Uc;s,[5Cr/q&Drfm2A#F(F8P*;,oPP^RIQ'R]#QM?^HQC!s8QiNQQRfAiYS=Q8K
+T.ck3USXfaVPpPsY->1;Za@0N]YD>&air)YeCN7)gtpuKj6#XonFH5Fq"agbrVjA-.[#gMJ;T&6
+NJ3"4EdNqUK6)ue>%L9D8POY\H[edd9i=nd:l1$bL51M;nV$gss+p]1s3CYk'[b@Xe^i@*g=tKC
+jQGdpn+-,Gqu*Ak$,N7M^UpD3S",iEPl[&3rfn([Q'R`*RZrqoNf/jQLkUV<K_'n*H@1-iJ:W?*
+KnbD?Mi<XVOHPfmQC!u-S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdt
+f@\g2gtgfDi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFI(
+J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C584Z?I:f7'eqGHr_r_`2`!)`\mr_`JfpJD&M1G^^@
+r\O^85s[^6592jM4Zb\d3&ioX2`Nr`5!;%m4[)%m9hnDW.n`W7r)3Pl!`2`kp/1lhr`&bns&Aqq
+!)iep!E)ek;Z9Pn;Z0Jm;#aDj;Z0Mo<;oo*<E)pt='/[2>$4o(<VfYp<W,ku<E<2u<X2`0=]eg1
+>$1]'r`K/$$s6\;>?kE;=BAO&<)rfrr)`o!!`rK*r`0&$<rQ)&<``='='#<#r`0##r`9#"qc3bu
+<`]-"s&T)"s&]D*<`W=)r)`o!s&]"us&fD*=]t],r)j5->?Y35=BP)r!a&T.r`B/'qca#&"Bnr1
+=BbZ-r`]>+r*05-ra#_5>[1Q@r*KS5?XI2LrF.NmAS,OeBP;!hAnPjpD/XH9FEVnSG^=^aIXm'+
+MN=!gS"?:KW2m),[CEf\^VI\&_o2Pn(<4G:a2Z0AbKeJ`e^rL.gt^`Ahr!ANro3t<8`J^fi8<AF
+g=Y$-da67]a2,I"[Bd!<Wi;qqVl$<8>ZY$+<)QUi9hS&H5=SUB2a/rI1+G@>0h+Z#7lN=`3]oD_
+<)cdq;,U?_;>c:NM#W8.G5c^cGlE"7I=Hg#KnkPEO-5]mR\$7NX0/h?^r=OFf%Jd4hr3YWjlPXf
+kPaWEklU)3kPj]EkPsZKkN:pgjlGP$jS.d9k5FE:k5OQCk5OQDjp^@h?sI,M?X$T9=BAT'=:/,4
+=BS^/=^#!2=8l5*<Dugq;,U4eo2/nAI!pHoJV/T/L5:\EN/`m[P*;/sQ^F52SXuLJUSOcbW2co#
+Y->1;['d?P\\#Mg^VI_(`Pom=b0/#ScHsteeC<($f\5'7h;-uHiSrnYjlY^gl07L!m-O--n*fc9
+rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s4[L'~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK?A8HC<Nqo19Rd$:ARe<0ISGSipN/iaMOH5B/VPgAi
+U8"<QT:qmJS!fY.P`l$<#+hHYStVjPrk8QL^6*MeP5(:@Q2d*@PQ-mIQ0jn9Qi33MQ2[$JQ2d0M
+QiE?PQ^Rf@s-sUkTqnWeXK/A#W2?GgVP^3hVZ*J;WN3,&YHY@A\@T;a]tCtg\@K,XZ`gU;Z*CXA
+['dBQ]YMGa`!+#n]=>5Rqlg++Yl1j,YQM)2XK;E%!NN*tVu<OpVl'Ehqkj=g!N2geVu<RoWW&gt
+WMlcoVt[.fW=Q#0Xf\\,Xfnn/Y->18Yd+,3qm-:0rj;a7rO)U4pp:%/rO2a8!4hs;!kZ.ZrP&<H
+!l2XhrkfVm`lH0Ab08/Xe(31*h;@/MjQ>[ln+65Iqk=$@n%u!1Tq7sRS?noYNMEQ'\s&b;=&rC`
+QWIF_U84_m>@V#H>HkB=Z)t.4Y5YZtYPj=XM#W51L5c-Vec5RFkg[Z!aMGU(]tD(m]"Ytu`66?B
+^:_%e\[A]GZ`pP+Yl(\:H@($fIt3*&KSG8<M2R=QO-,ThQ'Rf*S"-(BTV8-VVPgDnXKA\1Z*UgG
+\%0)_]Y;.s_Sa@4aN2NIc-FY_dF6Uqf@S^0gYCWAhr*JQj5f=akNM0plKdg'mI'H3nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrU^#>s+14)s*t~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK4>[hDdGk$=JJ+8'dJbam<BPD$gC27K[IXHNiH?sdY
+Fa%qJEH6&;Df']CG]s(1rce^2OH5?[F(fK=p3lmgom[$lI=:j=p4**ks*slos*t#u&qPXcJV&K+
+JUrE*K8#&9MiEdWq253/s+pW1s,%)@NK'![OcbfjrfdDHrfR;EO8b.@O-#M'O:ID9PaIl-R[]b5
+Q^!YpO8P"=O,j4#r/Lc:rf7#<rf$l8r/CZ6s,-c5!K)g6M?/Wmr/:N4!0-o8rf$o<rf-f8s,I&=
+r/L]9rf-f8s,[/@r/q&DrKQr<!gJn4qih)GrKd;Frg!PNqO%;NrL*hXS=Q8KT.HY0UnjiaVl6Vs
+Y-5(8Za@-M\\5er`Q69MdF?^tg"bKDj5oRoo(D_PqY^?$rrfa$Nff+rKd2/.KR\/mKpdpDH"]`;
+7rN?<9mV26J58p>;Gp>KMM[1DL5,2NrJCQ1s+_;CdF6Uqf@\d2hVmMWl0Rm/o_84\U&Q=`W6W&h
+Wh5ZKR[05'Q'@Q!Pa%H!QCF>.OcYT_NJWFFLkbJSApSfOI=HcuK7nu7Ll%%KNfT<cPEhH$R@B_<
+T:hmQUo(&hWiW>+Yd(OA[^WfY]Y(tn_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hV[8MioB+]k3(sm
+l0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$g])d~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK"7n66J:AIfb;>!cb;=IH`;>X8k;>F&a;$/U01GJeb
+"#`D15lO"J56!bF3tXS93B9&X4Zttl5<V.n5<hh:r_3DV:&@ig;>j>k;>=#h;uBVi;uTYp;ta,h
+;?'Pn;?'Pm;?'Po;#jMn;Zg!!<`T,u#?Fo-=^,'4<r,es<)r`n"'&B'=8Z)"=^(f-$X-b<=&r=%
+<``C)<rQ/.=^,-:?!LQ8=BAO'qc3f#<``B%<WZB)=8l8#<ruE&<Vfes<X;c-<``:$<`W;u<rH%u
+<WcH*<`]3%!`rK+r`B,%r`T2$rE'&&rE0&%s&T5'=oMV(=TVc0=oMV)=U&&6>$5!3>Q.h*=oDP(
+=TMW-qHE\t"Bo#6>[753r*98-s'>h6?=$oDq-O/1@JsX;@q91arb)^QAnG^jCMdp+E-$2Hrcf6*
+H[^O!LlIR`S=l[UX08h9\%95c^VRhe`WO9&aiaV+$d-Q4bKeMaf%A^3h>Z:2huDX6iW%j9halSY
+g=b*-da-.[ai2*0]!\iGX/MnlUS4BSSt)@@?sH`9<Dl^n;,C"[7R0:17mK$m-mU3(4"`6Z845p*
+2EX#^3EK3[;Gg9Z;>l@OM#W51LAlDsGlN%8H@:9oK8#)<N/s*cQC4>=VQ-f*\A,u)d+6k'gtq#M
+jQ5LckNDj.ros@E%I**?kND!jkN:pgk2k_(jS.d4k5XWAk5FKBk5FH^k2kaejPng2@;B@\?<C?5
+='&O+=BAR+='&O-r`T\1=&i:#<E)jp;Gg0[;.b-$I!pKpJV/W1LPUeFN/is]P*;/sR$jG6StD[L
+USOcbWN*&%YHY:<['mHS]"G\i^VRe)`Q$!?b0/&TcdC.heCE1&g"P39h;7&IiSrnYjlYail07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s4dR(~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUNGAo`0OQ("0>S*ug?S,SlQS,JfMS,8`RSI^gCMhmFT
+OC2InV5U/^TqVIX)P3FeR@08%SXuFGTUqdKTV8'o]tV7FOF)\HpltcC!0m)=s-3PKrg*PKoToND
+!go=@r0@JNPa%Gurg":cQC!u,S"#k8S"6.DV5L;nXK8J%Vtm2DVl6PnXKAV.Z*h-T]t_A!_8*du
+^V.4fZ`p[=ZEggD[CEcZ^V[t0a2c*4]=5/RZMh!-Z2Us1Z*LU<Y5YR&X9>Q&W2HQlVu`fnrMB=e
+"/VlnW;WXmW!0)tVl6SnpSmkbpo+=pXKDK'!3Q7'"L,/9Yd+)2rj2X1!OK30[f3`;[^EO?Zi[YD
+[f*Z8\GEcc]=bhk^;%Cs^VRe)`5KX7a2l?EbKS8Ydam(*hVdAPj6#Rkmd]rCq>Hud./0jEUmn?Z
+T=^njOeo>#jKb/\PBVb4P?2(eT:r2e>$GBA>[">8[]o_6s02*ure^Z2s+^T/N;j4Xs8DudfuhO]
+_Z%7a]Y2"j^;7e,b07l@^UUec[Bd'DYcdc*qlag^H[U?mJ:`E,L51VCN/WdXOckroQ^F21S=Z@H
+U84W`W2co"Xfnt7ZaI6O\[oGe^VI\&`5Td<aihoQcHstee'ut#f\,!5h;-rGi8WeWjQ>UfkiqBu
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niH=1n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUN;?"RnoH1HLWJ,XumJ+A-cJc(*1CM@BlBk_<[:jmY<
+H?a^[rcScnF)l>BDf'ZAG'J:VG^'.4#`t+,Nc'#WFaX(7!IfInIe8*jIXh*@npgLbs*sutqh"j!
+s+:9(#).kiMiNgUrJLW5s,-c3rJLW5.?0@LP*2#nQ'Rc&QBd`"PECodNfT9`OcYZfPE_E%S"-%@
+S!]M,PECt*NW>.>NrP19Nr=t5N;AJ3MZ8S:MMmFPrJUT4rJ^f9rf-`6r/^i;s,I&="-8J%NV\\6
+Nrb?)rK7/ErKR5Ds-!5BqNUrDrg*SLqj.8Kqj@ANrL3bU!h>gQrh'4`s.Lm:UnsueW2cr%YHbF@
+['dBS]Y;2!`lZKPdaZk$g>:lPkj@s5q"jperkAF4rr;pQr;6<`oC2e%OcYBPMM6\HL4ac$M35K1
+FG"F6AS?!R9mqA7Ini^4;Gp@fMM[7IL4tA9nV$mus+p]1&;Jcfg"Y?@j5oLkn+-,FqYZoa$MV9b
+^qR%IR@Ke7rg!AFs-E\S$CR*?NfB'WM2$h@nV(e*H[U?mJ:`E,L51VCN/WdXOckroQ^F21S=Z@H
+U84W`W2co"Xfnt7ZaI6O\[oGe^VI\&`5Td<aihoQcHstee'ut#f\,!5h;-rGi8WeWjQ>UfkiqBu
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUN%7S?HP:f1*f;YEuc;#aAm;#X>^;Z0Ji;Z9Pi;#F0)
+2)@$C1c$sH2*jJl5<_7o5!:tg4T7AV3B'&`4[)%m5!;(o4\eaH9f5@6;,R9ir_`Vjs&&Phqc*Pn
+ku.OY!)iep#uXVt;Gp@h;H$Nl<!uW(<E3($='/U.='#)rq,IAps&]5&%Tcb8>$>'3>?b95<`E%!
+r`B,#s&T8(>$V#4#$Y85='&L*rDj/)<`W4$<``E"=8l7s=8u;$=8l8#<W6&!=8c1u<W?))='/O*
+=BSd/rE9/%rE'&&rE'#$s&o;&r`KG-='&L,>$Ci,!E`M(=p%o2>?_#/!*]A+#$P,3>$G06rE9/(
+r*/u"s'#;(r*98-!+,Y3ra#b9?XR8K?i=@5@:K1F6Y'b?BPD3qB4kmlCM[g(DK0cAG'J:ZI=R$.
+NKfg$Tr+ilZ*^sL]=ktq_o0R8aN;TJbfn8Sc-4ARc-Xtkf\>3;h>H+1hqn@g:Ya[Vf[eU#c-+2J
+`5''s[^30<WMZGaT:VUCR[KM-PE:f^aa@;q=&N!r;Gg4_83oU3?V34=0J"t@3\N3X7n,s-2)REV
+3]U/=;c?Oj;t*Z`M>rD3LFS%'G^4U_IY!-*LP^tNOd)0"SYDs\Y-PUP`6-HXf\50<i8`n[jlYah
+kks]Dkl0iHkl']Ejoa`-jlQL&pZ;;7qWIn@r9"(Bqre"As5j:As5O@HhOS;$@:<I@=TDP$=9)D$
+<tAG9>$5$2=B8F%=&`*t;,?^ZCjLGVIXcm"K7nu7M2I7NNfT<cPa.T&R@B_<T:r!TV5L8lX/rG,
+Yd1UC[^`lZ]Y2(q_8=.0a2lBGbg"G[dF-Lnf%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?&>
+o(2MGp%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/bSp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYchPPEd`oDRfAlIRK/cTReiNNRf&ZPRe`HKSGo'1OH5<S
+OGo</VPg8dUS+6PStMaJR[KM-P*)E/StM[JTV8*S^;%@qJ[]cOPl?pUPa.MuPa.JuQ'R]"oooB>
+rKRAKrK[&As-NbQrg3VM!L8oKQ2d0KQP5aSR[KV5S"-(BU84`fXfee+W2T]nrMC%%W2Q\sXfek6
+[^j,f_u@UU`5;Mi"i.d\['Ht9ZP^'W[^j&b_SsU=b/qW<]=52TZa$a>Z*:J3Yl_/5Y5GF$Wr]6"
+rMTapVYm7kVPX9hs/5mos/5mqrhodp!NE$iW<0-"WV<@hW=>l,WN*#"Xf\\+Xfek2qm$()rNlO0
+"1,AA[J[H5\,E]8[^H(@!k#JFrjMm<rOW$@rON*C]tV8[^^%]m_SjC3a3">'(!OqLdaQe"g>:cI
+jQ>Xim.'`Ap\Oi[ruJMIXI,`VURAE\R>dlAh:7a^Ki_;VOI0-UStMpYr`]e<?<^U<ZE^U9Z*:F9
+nui%MreUT0!/?F3$/tpao\.C1beq3p]bS2p]>),!`6$6C_7dIj\%/oNZEg^;q69b"@<m0HI=?]t
+JqJc3Ll%"JNK90aPE_?!R$sM8StMdPUnsufWiN8)Yd(OA[C3TU]=bkm^r"".`Q-'BbKS8Wd*^:k
+e^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVc?eJcC<$
+h#Dm~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/eTp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYch2<Ao)[@o76F^qgeKlnppOer.6J7BkCjiBkpRpI!U*c
+G]n=SG'7tJF)Z&8D0U5JH$FRZG^4RrOH,<-LhC^Urd4]oq0iBpIX^j;!J#[tIK4lsIdhjbIf=is
+JH(2tJdm9_JqJ`1L5:bINfB!Tr/:Q3!/^]4reh2DNfT<cPa7Z(R$a;/rg+^mP`_&gO-,QdO,oBd
+Q'Ri.StD[JS!]M,P`q5jNfT8!NW>.:NrP(?NfB%rN;SV6N;nh9MYi>3N;e_>N/NXRNJrhoNW+t;
+NrY48O8k4?NVnk9Nr>"GOH5HaOcklkP*2%-Pl-aFP5:C=Pl$aCQN!6NR/`TQR/`TRRf8c\S=Q4C
+T:hkVU*l_3V5L5iWN3/)Z*UgG\%0,a^VRh-aNMoWeC`O6jlu1%oC_nUrVaY65Q:WZr;6BfqYBmY
+o'br1kiLmc_Np4DJV]#5J<#83GC5.HWHNQ%8OZ-fE_/uPH[UE>:/+Va;,3"*LPCS>L@BirM>i>2
+LCApoi8`talgF<8pA+WRrsHuS`P&XSR[]h8Q2QpIPQ$jIQ49:QR?NboNf8sSLk^_?nqCLtH@1-i
+J:W<)KnbD?MN!OUOHPflQ'[l,S"6.DTqeE[Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaea
+daZguf@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmoDX=@
+JcFO*J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/bSp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYcgSi928=\;?'Pd;>sDi;=IK[;>a>k;>O,g;$f*91GCXA
+2)[]crBL<G$p?^84$5Pa3B/r[5!Ag-s$$lb:/+G76V^BQ:f1*h;Z9Pm;#O8f;ZBYr<)``pmns-_
+pJUuh!E)em;Z9Sq<)`cos&02&<E<+#='/R*pf7,h#$"]*=BSd/r`T5(r`]S0<`E$u=',B%s&]5&
+#?kA=?XR5I>Q.b+=BGB#s&B&"rDs)'=]ef)=8u>"=8u>$=8c.u<rQ1u<rQ,!<rZ:r=oMM$=T2Cr
+=T;M.=BAU,=^##,=TDS'>5qh,>5;>$=9Mc1=]nr-=TM]1o2u&sqca)+?2\"2?!^lG@/aL7?sd:>
+@/XO6@K9p:A--=TC&VoJC+!e5D/O60E-$2HH@:?uM3*shS=l^XXKSt=\@T>d^VRk.aN2NIbg$.5
+rm(Me#LClMf\5-:hYu@2gfW=bg=Y!,eBuO`aMl$2]t1\\ZEC4,V4sTPR[BJ/QB[SqO,SpNKRnZ'
+IqDqe=A`!p;c-:a8jkj0:K9Y>3%-%#4ZY2N84H':2`3KS4$#?$<Dldn;H$K`;#lIPM#W5VL4"H#
+Jq\u:N/j$bQC4;<V5g](\A#o'd+-e&h;7)MjQ5LckNDa,s60CFs60CDrT<b6qr[_;!9X1A!9X:D
+qrT!^jQ5I_j5T(YjQ!jh?t3VO=]ej0=]\[,=]SU+='8]*>5q_)=8u;(<)Zap;XmUmH$XjdIXm!$
+K8#&9M2I7OO-#NgPa.T&R[]k>TV8-VV5L8lX0&P/Z*UgF[^`l[]Y;.r_Sa@3a2lEHbg+M\dF-Op
+f%8R.g>(N@hr*JQj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrU^#>s+14*
+s*t~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMY\.NcGD)4IReiHORf/`NRfAlSRe`HIS.;*NNJW^UO^XTS
+VPg,\U&L\oT:;78R$X#"T:_dLStH"U$_jE0^;.M6RsKpWQM-UDQ2m3KPlHpPP`q;qQ'@Puop,<<
+s-NYNs-NbOs-3MJrK[GMrg<_RrgF=dSXuONVlQu'XfSP%W2TZm%]6/%W2m&&Y-5.?]"c/&rlG#X
++i_C5]!o,W[^NTP[^Wi]_8XL>c-=AK^V%+c[C!6EZ*:J2YlM!)XTY`+X/`/uVuN[rVl'?fs/,[k
+!iW#prM]aq"0/?#X8&XrWiN/"r2KXn"0&<"WVib!X/rD)Xo>I)YHY8-Z2M!(ZN.B1[K3kGrjDd8
+s0hs8rjMj9s0r'>qmud=s1BYl^V@S#_8F40`Q-'Ab0%oNbg+Vbe^rI-hVmMWkj%O'p%\I`rga!?
+nZ'F"R\6=F_PE`cUoqbVQ^=h1G_Um7=^J#!TVYgr>@:fC=L#3AZ*(45YH[Q#s+pZ0!/?F3,2rS$
+q;TN<bf@N5]tD"k]t_>"`5p-B`4iss\@T,SYd:R;o<;kPH?sseIt3*&KS>/:M2R=QO-#NgQ'Rf*
+S"-(ATV8-VVPgDnXKA\1Z*UgG\%0)_]Y;.s_SjF5aN;TJc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@b
+kNM0plg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrU^#>s+14*s*t~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMYZP4DC3"^oJFA!dJG=WcJGFcoJdQ7+ASGjo;fdA6IJnC$
+GBS.NEH#r;Df']BH$OXYrHSBhrf72BUjR!(r-\?imsk=erdP'"It3#to7-ais*t#srI=its+1'!%
+>07bK7no4LP^tLNJrhlMuAP5N!tW'NK93cQC+,1S!ocDRL#=KQ'7>nPEM(-O;!b@QC487TV8'OS
+!fV/P`h/jO,s7"!frG(rf.5ENfK*YNfB"sMuSb8MuS_:NK!XjqMbH4r/CW7r/Uc;rK%&@OSt7?O
+T1CAOSOt9O91Q-P5CICPk1+9PkpXFQMHjIR/!*KRK/iVSH#-2StD^MU8"EYV5:)gWN*#$Yd1XE\
+@K5c_SjL9b08,XeC`R8k3VU/pA+R_rPed=rr)`ir:_f9o^VA9l0.6ginrPHgY2\AOI_2[KnFr@L
+Osl%LQe$MF+7h,ASH'T9mqA7IJutL;c6IhMM[7JKnb>9n:^gtreCc6l0Ig.o_/+YPlD3BZ-p=sV
+ja$CR[02'Q2[$IPm3SCS!oS*OT(:?M$&HfL5#5RB6\`KI!pKpJV/W0L5:\EN/is\P*;/sR$jG6S
+t;UKUSOcbWN*&%YHY:<['mHS]"G\i^VRe*`Q$!@b0/&TcdC.heCE1&g"P39h;7)JiT&tZk2tjjl
+07O#m-X60n*oi:o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s4mX)~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4S879o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMYXV&P:/C1Qr_WMin5B$Yr)3MkqG7Z!1G^aA1,LmQ5s[_!
+4[/j.)E^)C3]T5]2a';f5<_7q4[2.p:/+JX=[l.arD3Pm;H!3cqGR8js&B"ss&&qt;GpHf;?]oo
+;,L4hr_r_mr_rSis&&_ms&Att"'/K*<r#_r<`T)t!EE+u<<6-&r`]>)!E`M'>7t1F=B8C&=BJX+
+<`W4%=Bf$:@/aR<?!:B6=BGE$r`&r!rE'#%s&f8%r)Wi!qc<_s"'/K(<r5tr<WQ9(pK7Jur`AVl
+s&o8%"'Jf2=oMP'=oMS+>?Y5%=o;G*>?Y-2p0%E!rEK;,r*B>/!+5S1!FK76@JaL7@q>OM0PG6<
+DJj6*CiFE9FE;PHH$k*pLlR^gSt`*]XKSt<\@T>e^VRh,aN;TJc-FY^dF/$A#ggoEdF6Xtg"ZM]
+;VTpYg"=m*da-(V_S<^m[C!9EY,eM!UnOBMR$EhsOH>N_Mi*7CJUi6!I!^-`GBh5E=^Y</;c?Rf
+:J48E6Uj[62`iZD1-@QM1.Xo*7Q<:ar]1<F<E<'r;,C+fn594AreDYOKnkPEO-,ZnR\$7NWii\=
+^;S.?e_&U2hr*PUjlP[gkkjTEkkjWEkQ'fEkl0`Fk5FE>k5FE=k5XWEkl'ZEkkjNCkl0cEjoOZ-
+rT4(?s5O.>j8S'<i>:Y'EFs,s?<^H6=]\[-='8O)=BAU->$Cl,$!1/.<E)mq;GU-\;.k-"H@1-j
+J:W?+KnbD?Mi<[WOHPfmQC+)0S=Z=FTqeE\Vl?\tXfnt6Za@0M\[oGd^;%M$`5Ta;ai_fOcHjnc
+e'uq"f@em4gtgiFi8N_VjQ>Ufkiq?tm-O--n*fc8nac8Bo^r.U!quB_rqQNhrqcQirqu`noDX=@
+JcFO*J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMZ".KgH\[mTRe<*IRK/iURfAfKReiNJS1KY\M274SOC+f]
+VPKlZT:_dMSt2@>R?j,%TV%mMT:r!SU8#B8^:mk#G_2=^Qi33OQ'Ra8Q2R$KPmNbAQ'R]"Pa.Q#
+o9K<@rg3YNs-NVMrg*VNrK[>I!13\Ps-`nU-C^NsT:hpUWN<8*XfSP%W2HSlW2HPlWN<5)Y->4>
+]"c/'b08/UrQH>+b/V<4]Y(ke\%&lV]"Pr!aihrRai;34]t1Y\['TV6!3Z4$s/c7$!ii2srhogp
+rhf[ks/,dnrhp+#W2HPlW2ZbrrN#sus/H!t!3,mrrM]dsri$F.X/i8#X/i8#X/rG)Xf\c)YQ(p)
+Z2V'*Zi@B4[JmW7\,No:[fEr;[fEr;[fEr5\H'5?]`5YK^;.S$_SlGms2Pkqai_fNcHt%if%8U/
+hW!Y[lgF?<r0I@6XfS@dWLf`O\=f1KU;Z!HOIh/2<`bBM=B_5jUo7L'>[LiC=g5-=Ycb45YOJat
+LkgcbL5c-WnGiLbkKq;mahb^+]Y2%m_8*t-a3;TB^V@@i]XY>QZa$a<o<;YJH@('gIt3-'KSG8=
+MMmFRO-,TiQ'[l+S"-(BTq\?ZVl6VqXKA\1ZEpsI\@K2`]t_A"_SjF6aN;WLc-F\`daZdtf@\d1
+gYL]Ci8EVTj5oFckNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFR+J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMZ!(LIDKL@#JEq[bJG=WcJG4WpJeDd4ARoOkC/KA+H?sg]
+GB\4SFoHFgEc5i5G^+LZG^014#EY",ND#mZErLLeI/\QjId_dcJH(,tJGaorJGXipJGt#uIf=iq
+J-LRVJqJ]-K)L?$KE?pcMuJ_9N:r2/N!bQ)O-#QkR%'Y<T)5&iS=5h2Q'RYtOcb`gPEhN)T)PAj
+T:MC<Q^3huP*(fdrf7#?!0@#;rJ^l;Mi7Rns,6l8s,@/?Mi<XTrepi8r/:]:N/RUmrf-i9rf?f8
+s,m)<s,[/@rfR2Cm?@L5qj%,Grg*VPrKmPOpR),PS"-#ISLU5'TV8*SUSO`aW2Q_rX0/\5[C<`[
+^r=F?cd0tce(31,iTBLsp%\C\rQ"pVrqlQep@\%JnaZ,:mH`uujPf"PgY1B6f@JINdfncrO,JUJ
+rdklIKmn5oP-VcCG\To@7rNH?9m_86If<+B;?]omM2@.Hre:E,n:Uk!LPPk`!r2WiOT,XT^<s[-
+Wh,WJS,ATMPn9:LS=5\*OcPK^N/<=GL5(ERL1,=QH[U<lJ:`E,L51VCMi<[WOckroQ^F21S=Z@H
+U84W`W2cl!Xfnt7ZaI6O\[oGe^VI_'`5Td<aihoQcHsteeC<($f\,!5h;-uHi8WeWjlY^gl07L!
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s5!^*~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMYsq;V:/=^T;>F&f;=IKV;>a>l;>a8j1^u5q1c%!I5X@V!
+5X%@pr]C6D4?EI%"#iA,5Q3kF56aeV9hd-9:An&i;"7B_;Z0Gm;Z0Mo<;0>i;?Tot;c?Qm:]XEk
+rDWSkr_rhps&&bns&&bn!)rep#?=f+=&i7"<;fet<`T)tr)El$=B\p5r`]5(s'6IH>$+m1>$+j-
+<E3(%>$PB@@:3GJ>?b65r`B,#"'8N(<W,u"=BYW*qc<f!=8,bq=8u>$<rlE)r`K,#!*Jhqr`K/$
+nlQ&u=BJa1=oDIu>5MJ&>5MJ$>5h_+>5h[u=o_e+>l@q3?=7,I?=3\>raGh7s'be6!b5bPralON
+C2@a*E,fo?GC"W8H6@Q_JVAuDQ^skKX0/\4[^j#a^VI_)`Q$$Cc-F\_dF$D?dlGq,e(*%%g"G*5
+f\"g+eC)Xb`kT0r[Bd!;WMZMfU7e*IR$EktNJiXKL4t;5JUW&qH[0j[G'8"Mr,XEE=^+s*<Dlan
+:/";M5Xn[m5WC\P,q(o</i#pd77K3o2EEo\3EB*Y;c-Fkn509aLkgcbL)Z;@Q^aVBVlR#.\\Q2-
+d+6k'gu%)NjlPXfkNMg-!:'IG!U/eGkQg;7kND!ijlQF&roO%>rTF+B!pSq4roa=FrT==GkND!i
+roO1@r8[h:s5F"9&`;I*gl#i`@:3AB='8U+=BJ`)=:&&4>$4s0>$+g+r`&tt<:<[mG^=^bI=Hd!
+K7nu7M2I4MNfT<cPa.T&R@B_<T:r!TV5L8lWiW>+Yd1UC[^`lZ]Y2(q_SX71a2lBGbg"G[dF-Oo
+f%8R-g=tH>hr*GPj5]7`k3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+14+
+s*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<ANAo2X>Omeb/RK&`URK&`URJ!$FS+iHQN@B^ENffH2Vl-Je
+U8"9QT:ML@S!fV.PG"SCT:V^MUS=KX^V7Ltp7HkqrgEbQm?[d;rg*5Bs-*SMQBqE7qO%5JqNh/J
+s-O4_R[T_8S=Z@FU8=firiQ@*XK/>uW">r,X0&M,YHbF@\%BJrbg4Z6d0S1JcH4&B^V7G\]Fqon
+_8F:5aiVTB_SEn"\[SuRZM^s.Ycmr+ri?1%WN#ip"K/,oV5=0grhfapri,am!3,dpri5suql0h!
+WiE%uWr&jqXT,C(Y-5&-YQ1s-ZM^s-ZMh--[/RK4[f<i:\,a);\G`u;\,j.Oq7-O<^&G_f^VI\&
+_SjF4`l?'@aihrTd*^=mf%AX0hVmS\m.0lJPlE&EY.(!uTV%b8V43^FXOb7SPf&i)LkLsp?DX<g
+Uo7O&?XI&@Z2V$3YHG.7YOJdrL]3$cruqCAmFKG&bJh61]tD(m^qmq+`QcKC^;%:i\%&iMZEg^9
+o<;kOH$XgcIXls#K8#&8M2I7OO-#NfPa.T&R[]k>TV8-VV5L8lX0&P/Z*UgG[^`l[]Y;.r_Sa@4
+a2lEHbg+P]dF6Uqf%8R.gYCWAhr*JQj5f=akNM0plKdg'mdBQ4nF?)?oCMVRo`Fj]p\jmeq>^<h
+qu-HkrUg)?s+14+s*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<AC?"7PeHM)gHJ,b&uJ+eEeJHKV"ASM-Z(JfI+I<g-aG'A+P
+FE2JEE,KQ<H$FOXGl;mqHB=2KNPg0_H$t-jqL/6ipjW9oq1&Bo!.Xosr-n]sqg\KnrI=Zos+:'!
+s+CN/LPUhHrf-W0!0$l9rf72EPF%c1rLa+_s.K^mTUVC:QBmf"rfdbTQ^F53S=Q7BS!j8C$C$a;
+P*(fcNfT9_rf.&@NfO$ss,6r9repi8rJ^c9rf$]5!K;s9Mu\e6N;eh9N;ek;O84n0Oo1=?OoLU;
+PPgXIPEM,nrKR5Frg*JKs-WeP!1<VNrL*eWS=KPK".l-XU&Lc1USXicW2ZetXKJh7[C<c^`6$<Q
+eCE1'gYUiIk3V[4qY^?:s8Musr;ZU.p[n(Hn*TH+lKRKojPf%Qg=b*/e^XQHrR<LKfpn7kK8G87
+K=$GdH[^^<P'M&ADH(4^E(WlRH[C-j:JOkf:f*(-M26nALPCNPK`?i,L5l3Br6Ea)^TaE#R[fb1
+Q'_K8':+oLQ^F>4P`h/iNf8pSLkgb?L%C%3GBnL]I=?]sJqJc3LP^nINK90aP*D5uR$sM8StMdP
+UnsufWiN8)Yd(OA[^N]V]=bkm^r"".`lH0CbKS8Xd*^=le^i@)g=tE=hV[8MioB+]k3(sml0@U$
+m-a<1n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVcBfJcC<$h>`!~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<A084cNM:]42_;><ue;=IKT;>a>l;>sAp1GLXA1]B9362s.P
+5X%:n4T7DH4?5D]2a'>&55d\R5#+gI9lrj%;Gg=iku%IYo2>ll;,L:l<Dufo;#aGl;uBMr;cH^p
+;Z9Pk;?Bcp;uT`#<E)pt<``?"<;fhr<;T\q<X2`1>[:W?>[.24$!gnF>[(B8>?b80<t/87>?b?:
+>[:W>>$>'3r)`hts&T;)='8]*=T)>$=T;J%<W?,"<Vf`"='/U-=',<%q-!]!s&f>*r`K,#r)`r%
+qcEu&=BJ^.r`K8(=8l;(=^#!3r`]2%qca#&r`]8)s',P.r`T;+q-*f&s'5J-!+,Y3ra>S2r*fY9
+rac"?$Y<scCMe!1F*2bVJGt*DJq\u:Nfoj'V5^W([C<][^VIb+`lH0Bb08,Vd*^7hdaQ\EeGdu!
+f%9oRs48[MeBuXfbK%K4[]us6Vkg)\SXc.9QB[PnN/E@CJq/?"I=$9cG^+FTrc8<bEH#o;EcZ@%
+FY88Q='8I&<)Ze):J48E6:a^62,uC_1H[`P1.Xo)77K3o3]]8]<`W-s;c-Fk;t<fc;#c=ML)6MY
+WN<>4]>;M1dFQt(h;@2PjlY^gkNMm/rp'7Br941Ds5j=Eqr[q?qr[h>rTO7Fqrmn>s5s:A!9F(<
+ro3t:!T;l7hAtG-khiCYEElmW=]ej1=&rF+='&L+='8^/>Zk-1r`0#!r_ins;,L-\;.k)uH@('h
+J:N6(KnbA>MN!OUOHPckQ'[l,S"6.DTqeE[Vl6VrXfen5Za@0L\@K5a^;%J#_o9X9aND]McHjkb
+e'uq!f@\g3gtgiEi8N\UjQ5Oekiq?slg4!+mdKW6nac8BoCW%T!quB_rV6Egs8)ZjrVZWmo_sFA
+JcFR+J,~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EGQB6&BSQ1(1*RJ**ES,/WqNK/jQO,f9/V5^;fTV%pNTqJ!J
+R[]\2Q]du8T:Z%VrhBJ+rkAVagN\C?RJrW\S!ob3QC!r(Qg9t6Plm87PEl*4rg3SN!13\PrKmJK
+!LK2QQi<?cR@9V8S=Q7DU8=cgXfnq2Y-"_&r2C1,XKAY.Yd(L?[(3lgb0U(9$e3_Ve^i=!bJqH:
+_#;"O^qmn*_o2Pn$H0cq^:_"d[^<BHr36=-XfVK's/c7$!36$t!3#mp"K&#lVPa?js/5stWrAst
+Wr8msWr9!sXSo4"XT,:#X8K!mX8f:#XoGR(Y5kg+Z2Cp*YlM*/Zi.63[C#q@s0`0A\@B)Z\$rmH
+\H'5>\c',;\c95d]=bhk^VRb'_o'F3`l?'?ai_fOcdC4keCN=+gYUoNlL+6;rKI75l)hUlT:_^G
+l,03_OJ9\P_P*o`=BAOcR93X^Uo((o>$G?@>["D:[^!!<Z*3Z$!/LN-MuP!nqu60@b/hfI_8![r
+^;7V$_SjI;b/V33]XkVa[^*-CYcdQ$@<d'DI!pHoJV/T/L5:\EN/`m[P*;/sR$jG5SXuLJUSOcb
+WN*&%YHY==['mHS]"G_j^VRe*`Q$!@bKJ/UcdC1ieCE1'g"P3:h;7)JioB([k2tjjl0@U$m-X60
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$hZ&*~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EGF?=n"qI.r0CJ+eEhJcBEjAS,[kC/TJ.H@#R8s*+Kd%!6K2
+EGoc4GBnCVH$K:5$BL:0Na/GrFFJ[grdO`mrI4Kjs+'lorIFKh!J#b!JGaooJ,t4Qq1J^#$\a@l
+MMmITNfB!UN;JP5N;ee:Nr>"AOd)6)U&LedU&UkeV$E]aR@'A.QC%T:".5LFRf/]VR[O/A$C$a<
+P*(ieNf]?`rf.#?Nr+e?N/NUQN/NVlN;SY:N/iqtN<P9!Mi<UQrJ^Q3!07&>qiLQ7!0[2@!0I2B
+!0[>F!0mDFs-3PIr0.;IP*;+/Pl$^GQMHmFR/WNRR/`TRRP1/#S=Q7CSXuIGTV8*SUSO`aW2Zbr
+XK8P.ZF.0R^W"@BeCWC/hr<b]l0e-9qYe\=s8=#9qY9jZo^hYBmd9?*kN1dcj5JnNg=b-0f$i'q
+e'n9Fr7*FZ\!!/7KSG/3^7'b*H@:sfQ?[mk8Oc0gF%T/RI!gB=:JF_b;,3"*N/<=DLP>5N!/LN-
+N;j==]YhFhV43jAR[05)rfn(]Pa7T&S!oY,OcYT`NJWLGM"$.-G^4U_I=?]tK7el4Ll%%KNK90a
+PEhH$R@B\:StMdPUo(&hWiW>+Yd1UB[^WfY]Y2%o_8=.0`lQ9FbK\>YdF-Lne^rI,g=tH>hVd>O
+j5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+14,s*t~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EG184lWP;Z9Vp;Y3i];#X>];XmW^;ZBT&2)@!A1G^mH5XI_"
+5lNtI4;g4C4?GM_3B')b4[2+p4[2.p9MS;V.ToJCr)*Sp;GugX!)i_n!)i\m#uXVt;H$Oo;c6Kl
+;#aAm;Z9Vl;?0Yp;Z9Mo;GmEkr_rYm"BAK'<E8cmpf/#0>@(ZD?!LT<>[:`F?X-c;>$G37r`KY5
+>?Y37>?Y67>$4s0r`B,%#Zk&-='&L+<`f6%r`B,%s&T8&<EK0#s&Jnrs&]D,='&L+r`9)%rE9,'
+r)j,*=]ef)=8Z/#=oDJ&=TMT+qcNo$r`B&#rE9#"pf[W#qcj)(rEK5(rEK8+r*B>/!+5_5"CYbK
+@:9(Cr*fY9r+.EkAS#OiCi+-5G'e^iK8#,<NKBBjSY;p\YI1jM]=u%r`5]m?ai_cMc-FV\rm1bp
+daQ\De1B/$f@SU)e^W!mbfI`;]="i@V4jQQS=5e1P*(c_M2$\9Jq/;sH$FRXGBS-.ErpB%DuO_U
+E<L<'FEVp.GqOMU=^4s+=&Mt8<_Q1V5X\jQ2EWT?,UYc:/i#md77B-n2EEo\3`f<\;c6Cg;Y!]b
+:]Q:LL).)(]u%k8e(<=.h;I;RjlY^gkNM-ol2BoFklC#Il29cFk5sf/kPOBAjnn3:kPscCl29cA
+k6C)1k2k^cjS\';iWeB"i8<GKh>Z1XgY1TF^3+$s?X?l;>$4m-='/O*=]\^-=^#$4='/O*<``7"
+;c?Rj;"@IlG^4U_I=?]tK7el4Ll%%KNK90aPEhH$R@B\:StMdPUo(&hWiW>+Yd1UB[^WfY]Y2%o
+_8=.0`lQ9FbK\>YdF-Lne^rI,g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jme
+q>^<gqu6NlrU^#>s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^BOSCib&`m[E@-opYWEr1"jhN/EXTOcWqIW2-8aUS=HSSt;@=
+R?s5&Tqe?TTq\:[UBeQJ^qTi@IujSus-iqV"e(jHR$j??QiE?RQ^3u)rKdJKr0@AMQMQmHPl-jH
+Qi<BIQi33MQhm(,R@B\9S=Z@FTVJB`Xfo"6YHFq+WMuntX/rG*YHY::ZF%!I]"lA4eCN4$f[na.
+g"+Hi`P_\l"2Vdh_Z%IP`!jQ#^q[Rp]"#5V['R(;YlV)4rN-1'XfSQ$Wrf<#W;`^pVYm@lW;ijr
+WW9$tWWB0#r2][q"08N(X8]1%X/rDtX8f:#XoGR(Y6(r5Z2V$/Zhgs0Za@*GrNuC0s0r3B\@B#W
+q76O:s1A6?!P5oB]HY&'^VI\'_ns:.`Q$!?aihlPd*^:ke^iC+gYUlKkNqa4qiUn1YcX^jWh5oR
+n"ZG>Up&S4Q(O.YI#)!i=^IqtTVYn!>[UrF>-YB<Z`^F7Y-7?!r.^11%J0W"p"dm6b/qT;^V.D\
+_%FZ,b0.f@^V%.g]XG/NZa$a;o<;kOG^=^aI=HcuK7nu7M2@.LNfT<cPa.Q%R@B_<T:r!TV5L8l
+X0&M-Yd1UC[^`l[]Y2(q_Sa=2a2lEHbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0plKdg'mI'H3
+nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^B1?@;'M$pOL_BpON0m+DPP$C2.O":ORY;I!L$_G^"=SEcZ;@
+Df'`EG^+FXH$]I8#`t+.NRE5mH[bsDr-nTmrdOQj!.afns+']j"+YrRJG=WlJ,t4Qre(6(rIYK2
+KnY8;M2R@SOH,>!N;\\6N;nq9NtRP<QCFMBV50i\U8+Q^URmsDRJrQVR?s8-RJ`NRR15OMQ^3o#
+PEM)kOH5KarJpo=!07&<!fi8"r/:H2s,I&=!K<$:NW>(<MZJcpr/CW7qMkQ:rK-H0!0[>Ds-!AF
+qNLuFqipoAs-<YOrK[/Es-WYNr0mYT".YsSSc53-T:r!RUSO``Vl-MoWiN5&YHbC@\\>r&c-b+q
+hW*ken+#uBq"t$;ru_7=r;?Eeq"OIQoCDG@n*K?&k2kX_i838Cg"+a)e^XTI!n>cOqU[IPe'l4"
+P)P$OK7nljKnFf&LS__0H#["mAP6r6:47J9I8<U5<)ZXiMi3CJL4t>9L%'cnL5l3AhS7^W[AB@\
+S!fV/Qi36MPm<YCR@BP,P*#['#)\7lLk^Y<o7gn%G^=^aI=HcuK7nu7M2@.LNfT<cPa.Q%R@B_<
+T:r!TV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa=2a2lEHbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0p
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^ARq8PDiUrDW_ooMPB[s&&Yks&&GenPT3^&2Z*s1G^mH2F'Pl
+5X%Cs5!8g+!'L6@'/r$;5!;(o5!M7q4\e^H9nGf1;>a>j;Zouq;,U<`;?'Gq;,U:j;uKVl;ts8j
+;#O8\;Z9Mn;Z9Vo<;ohr<<$#!<VBDf<<cK,>@1cF>lIq;>[LlG>?G!3>?Y68>$>/->5h\)=T2A*
+=BSd/='#6#!*9)#"^"i,='&N'<ruE(=8Z,!<W6#!=8c5%='5B%!*K5'r`];'"Beo3=]kW(qcEo&
+=BP?$pfRPtoN;#or`];*s'#G*r*0/(r`f;*!+#M/!+5_5s'l":s'Ph8r*f\:AH$-?AH$-`AnPdk
+C2Ip4G^Y'nKo1qVR[p(FV5^Q#Za[KX]t_D$`Q.r!s2k_nbK\;WcHjkbd*^8?dK%bodO3Geai(p'
+['-L+Tq.X>QB[PoO,JmPLPCJ7JU`)qH[0j[G'.nJEcV+u#BFg)F*2YNH2`.FH?jaYC0=eD<Dudp
+<Fnlt8j5U8F[7uG/1`S-4"i?[7n#m+2E!WY3]U8B<)Z[j;,Zs^r_WNI%+!JVgYCZDj5oCbk3)a-
+s69LIrosFIrTX@G!pSq4r9*b8q<%bAq<8"Fl0.@-k6U55k2k^cjQ#>#ire<$io0mp!T2c5h#Z<c
+rn8aQf[o91H=_2,?WgH7=]\X*=BS^.=BAR->Zk63=BJX*<E2ss;Gg9\;.k)tH@($fIt3*&KSG8=
+M2R=QO-,TiQ'Rf*S"-(BTq\?ZVl6VrXf\e2ZEpsI\@K5a]t_A"_o0O7aND]McHaeadaZguf@\g2
+gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)ZjrVZWmo_sFAJcFU,J,~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^B[ZE-Hu"oU>B>rL!DK!1<VNp6t]E+.SCPMM[FUO^Fl[VPg,^
+T:_jQT:DC=R@'>)US=HTUAgnoUnbZ;^qY6^H%u9fr0mq]S"#k8R@'B9QN3?LQ2[*LQiEBOQ1gLD
+Qi3<MQN3EKQhd!^R[]h;SXuIHTq\<\Y->7>ZEUL5rN#t")m-9JZEggD[C*HS^W"FEf%8L)f@\g1
+f$;FX`;RRR_>_:O_u@US_[OAs^:_+j\[f,TZa-n9Ym@S;Y-"h-X/`3!X8f1"WVNIjW;ijqWrK'u
+Wr8t"XK/E!XSo3tXT,F%XT,=&XK/E$X8oC%Y5YX)Z2V'*Zi@E/[/dZ5\,Ei/\H'5?]*5dV\[oDc
+rk8?G,/:q0_Sa7-`5KX8aN;WLcHsteeCE.&gYCWBiT'+fnb2kZP5d/Q]!\34Tq7kQ[@NbNUW)&\
+R^A#XMHl40=BhAmVQ!d(>[UoD=g>6@ZEC@9YcmQ#re:E,M>n^piQT?bb/V95]YD4t_SX42a3;Q@
+^V.1f]XbARZa-g=o<<+UGBnL]I=?ZrJqJc3LP^nINK90`P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA
+[^WcW]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_k3(sml0I^&mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVc?eJcC<$huA3~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^B:EAnl@7q1-e@p4*F"C2.?lCMR``rHnQi"a5*7G]n3.EX6Z'
+DL$JNGBnH3GmBFlO,dGQCj#`,!.b&us*b'"IXZ_DIdDR`JGjutJGFZsJ:W9%rdOour."To!.t0%
+!/1?(s+LB*(5I^'O-,TgOH,<[N/W[QNJrgUO-#HcrK%5IQC4><Unn!a#,A#kU7IdBr0dMN!1EhT
+rg=%ZQ^3o%P`q8nrfR2Aqi:f=NK*pt!0$o8repi:rf$l:!07&<rJh#?N/`dUrepl;N;eh7NWG3$
+rK$u?rfR5Ds,d;EplPT?PQ$aCPQ$gHQ2[$DQ2-a;QN3EPRJE<NS,\u\SXuCDrgsLiU8"EYVP^8h
+W;`gsX;J(CYd(RF^;J%9cdLG"i8s4jo(;YNqYU6Bs8W(,rVZNeq"a^[p\+=Ro^hS>m-*Tnj5JqQ
+gtC?3f[n^)e^rI+g=tE<gY1?6f@AC"daA)eR?WGaL4b*+Ob/(1I?M!cFb4C%AkR)`8ksb]I=G!e
+9i=kd:Pt$fLk^\?L5#,Mre:E,NW0@YcI0D;Vjs-DR[O,?'pY)OQ'[i)S=#M(OcPK_N/<@GLPCNS
+L2M0YH$XgcIXcm"K8#&8M2I7OO-#KePa.T&R[]k>TV8-VVPgAmX0&P/Z*UgG\%&u\]Y;.s_Sa@4
+aN2NIc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0plg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<g
+qu6NlrU^#>s+14-s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^AOm8khuV;H$Nn;ZBVo;#!o`;#4&h;Z0Jb;XmU1;Dp<d0JkXF
+2F'Po5<qCr4Zkkg4$5Sa3B9#]5!D+o5<_:r5"trN""IhW;#X>n;c<Hjr)35cr(mJm;H$Km;$0]p
+;c<TnqGI>k;#O8k;?0Ye;Z9Mn;Z9Vo;ufkr;?^'$=BAO'pf.8n!*&qt"]e]*='Al.?PHgN>$>-9
+?<gW7='/U/>?Y05>$5#->5q_,>$4u+<ruK,=oMOt=8u>$=8u>$<<cK*=BAR)<r>tt=8uA&<rQ/-
+=BAU+=BSg1=]ei*=9Mc1>$4u,=8Q+t=TDY%=oDG,=^"s1=BAT$=T2J&=T;P&>4Yts=o_e(>QA(.
+?N+=3?ia\FrF,Y6raQ"?AS(jO!+l+@s(<KhD/aT@H@13qLlIRaS=lRNVlHl'[C<]Y]tV7s_8=+.
+`;RXZa2lEHbfn?1c2l28rltGd,KI[6[]ca/US"$BP`UreNfK*YMi*=FKS+l,IXQQhH$FOUFoHIg
+F*)MHF`r"THiACOH@'s`GBS.PVdNh6<E2pq;g_G89LqB;=?nf-0Ieq15!(AP7n,p92`3KS4$#E(
+<`Dso;,U:joMPQ`re:c6hV[;QjlPXfkihp.!p]%7r9F.Cs60CDrT=.Cr9!e;p?DS?s5sCGr9++B
+!9O1?r8Re:ro!n9hu;I5h;&"a0&#"2g"=p-e`>>MDK'#k>?>!2=]ea-=BSa/='&O/=]nj/='/L(
+<E2sr;Gg:fo20CKGBnL]I=?ZrJqJc3LP^nINK90`P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA[^WcW
+]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_k3(sml0I^&mI'H3nF?&>o(2MGp%A%P
+p\4[^s7u]kqtpBjrVc?eJcC<$huA3~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/VOp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[:O&nH\n']Re)sIQjT1IQ^=),R@0G1RJiKSR@'B@RJ!$DRi[ZL
+M33m\O^G#bVPU#\TV8*RSt)7<Q^<o1UnXQWU]$u!UV4CV^7(dEPF\87SXc4>r1*eVrgEqWR$a6=
+R/WHPQN!0JQN!6IQN*<NQN*<LQiNQPR/`KQR/WHLR/`QrR[]e:SXuIHTq\<YWj&k<[^*->XfSS(
+XKJb3ZEpmErjE0D]"Z)(cI11jeCFQL#1Ll?`l5j5r5/KOrko>b_SO%&]tD"h\@/fPZa-n8Ym%;4
+XfJJ%rN#ptrM]Xls/>sspo4=pqlBt'Y,n_*XSo1%Xfee-riPpr!3Q7's/uL.YHe)4s0Ma4rj)X5
+[e[E4\Gir9\,a):])B/C]",A_]=[sQrk8?Gs1\WN_8?/g*5ok;aN;TJcHt"geC<($g"Y<=hr*MU
+l0\$6q#$?U0)_rXUS4?ST=rLCS=$+Ui8'QkL0mr=N0@CNV4jTZ>[:TB?s[$BZ*CaAY-5+5n$)hH
+!/6:0+T(<GaiV`G_S<k"^V[b%_oKdAa2Gg-]"5Pa['?mAYcdQ$s*&%"H@1-iJ:W<)KnbD?Mi<XV
+OHPfmQC+)0S=Q7ETqeE\Vl?\tXfnt7Za@0M\[oGe^V@V%`5Td<aihoQcHsteeC<($f\,!5h;-uH
+iSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s53j,~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/VOp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[9?pMDKL='JBNH;J.?C-ASc0tCJTD-H[C'aG5c_+G'%eGE,TT<
+H$FOYH$aj_H?kR4NfA72DL?tbJ,XuqJ,FcjJ,auqIfP#tJ,b&rJ,XurIfP#sJc(&uJ,4ZqK)C9$
+Jc^RXK`-T:Ll%(PPEV/kNfB$WMi3RSNfX1$!0R8D$Bp^?R@^%ETV/!Prh9IeS=BACs-WhSrgNhS
+s-NqUQ'IStrf[;Dr/go=!fi8"rJh)AN/NUQN/ddp!0-W2q2GB7rf$r=NVeb:OSk7=P5::@P5(7=
+PkUI=QN*<OR/3-PR$X/,R/WNPRfAlVRfAlWS,f,XT)YDhTq\9VV5C,gWN#lss/R3CYHG(6[^s2i
+`lQBNe_&[9jQZ%#o(DeSr;6Ejrr1gTrr*i7r;6?eqtp6dq>'dXoC;;:lfmQmj5JkOgtVb\s4[V1
+h;8.g45SfKg=b*.e'c[ldD<nfP)"^GKnGDXKRnQ#LT\74HYQ>EBPqc]:47M:I8<X6<DudkMi*=J
+Lk^S<L$s]pL&cpersShRd_WPqSXGq9R[=#>s-41_QC!u+SXPh-OcGH`N/<=FM"$0!G@c&GI!pHo
+JV&N.L5:\EN/`m[P*;/sR$jG6SXuLJUSOcbWN*&%YHY==['mHS]"G_k^VRe*`Q-'AbKS5Vd*^:k
+eCN7(g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$
+huA3~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/SNp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[7*Y[:/1[bs%rhq;,R3erDE8bo250Ynkg)X0JYIA2)[?X5sIV!
+5!D1m4?>Pdr](*?4Zu"nrBCWQ5<_h::/*l@:Jq*hpf%#er_`Ymr_`Sipegufr_rbnr)!Jm<;]\p
+;?0Yi;?0Sn;Z9Vp;ufkr;?g'"=BJX)<;ohq<;ol$<)lmt<`]3$!Ere.?O0n>>$>'3>?Y/.=8uD!
+=oV\)=Tho2=]ec'=92Q,pK.Aqr`9>)<)lt#=BAT'<rH"u<rQ2&=&rAu=T;M6>$4s1=BAR+=B\m2
+=]ec&=9)M#>5_S+>$4s0r`K5)q,mMsr`K)%r`f>+q-3l&s',J-rE]>-s'Pe6!b#PIqdBJ6rF6"A
+@q0%\B)Q9kAn5F`Bl%[-FEVt[Jqf,AO-Gs!St`*^Xf\b1ZEggD[^WfY]=ktq_o0L6rl>nubK@rI
+a2Z->aN)9:]="fAV4sQNR$O!9OV*\9O,f0VM2-e;Jq/;uI!^3drcnBcs*4]mH[L5?IK+[FH[9s]
+G'8"OG%Ybr=]\O$;c?+c9MA)D6;V>]3B&K61-@ZP1.Xr*7Q37ar]:EG<E3!s;c6@f;Y3ia;#c7Q
+L$%O\kk=9=lMp)KlM]uGkl0cFk5FKBk4e$=kkXHElKRR4kR$G9ki_-mki_*jroO.?"ln\(j5T(t
+i==f'hqm2EgtUT;g"P-3f`'JNf%&75hQLj9@UEDC>$>'1=BAU-='/O*=^,$6=]ea-<EE4$<)QXm
+;"7E_G@c&GI!pHoJV&N.L5:\EN/`m[P*;/sR$jG6SXuLJUSOcbWN*&%YHY==['mHS]"G_k^VRe*
+`Q-'AbKS5Vd*^:keCN7(g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$huA3~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_@V0FuIZODpqjRDM!LT;SR/WKUR$j>/qNq/J!1EeQs-N_PrgEJK
+qjS+WNJraXOcWtHV5L/aT;%qVTFIH]R[TS/PbOtKU84QZrhKh6]t_<doQQ(_r13nZrga"Zrg`tW
+#+CsJR$a;0rg<\O!LB#LQ3*>;QN!6LQMm0MQN!6LR/`TPR/`QXR$X2.R$dl@rgFLiS=Q4BT:r!R
+USOiiZF76KZ*:A0X9>Z/Yd1V7[2HE^\@K8d_oKpEcd:(fdF-IhcH=5K`59C/rk]Mi_Sa=0_nj1)
+^V@Lr]",;W['R*EZa$d>riQ7'r2]dr!3,mprhfgsW2]Zo!3?+!ri?.&XSf1$XK29#s/l=&rN5ms%
+]uq<YctC;ZEppE['[9Lr3cU7q7-F5s0`$=\@B*A])TD?]`,VD^AbnI_#M7O_u@Rq`Q$!@aihrTd
+F-Lof%/L-g=tH?hr*PVkj@j1q"t#Ss8TDVVOt,eV5W[TT:;pda4QfI_O,=s>EYCX>FqXgWENJ0?
+sd,@Z*CdDYcY.4YOA^qKo,gQrp%hQaNMWA^VRV!_SX.*`lQ<D`P]F$]">J[ZEgjBYcdT%DKU/JH
+?sseIt3*&KSG8<M2R=QO-,TiQ'Rf*S"-(BTq\?ZVl6VrXfen4ZEpsI\@K5a^;%J#_o9U8aND]Mc
+Hjkbe'uq!f@em4gtgiEi8N\UjQ5Oekiq?sm-O--n*fc8nac8Bo^qhLp@e7TrqQNhrqcQirqu`no
+DX=@JcF[.J,~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_=']<ME-_>2a+*u:#A\$eA8Q*s;>tqQH[9m]G'J1SFE;MDEGo^k
+GlW0iGmTRnNfHZHCNb;]r.+iuqL8KoqLANos*surrdXot!.Xuuqg\Qpr-n]sr.4Wns+13#!.t-$
+!J5t'K`-T;L5:\FOd),oO,f3XMMmISO-#J&OU@88Pa%H"R[fq?T)P>bSt2ICS,SlUR/i]SR08nF
+R[KTCQj&hBQBd]!rf[;DrK-r<r/Uc9",r4uN;ee:N:r;2O8Y%ANfB'YNfO*u"-/A%OSt4?OSt=A
+O9(K,qN:f@s-!VNQ'IStPQ$gFQ2d0LQ1^ICQiEETQ^3r(qj@>MrgNhU!1`tVs-s+\T)PA^SdD$_
+U8"EYV5C/hri%3DX/i>(Y-"h1ZF%-R^;@k1bKeMbg"tcOlg=34naZ2Ap%S:[ro=%Ur>#8-qYC!`
+q=sXSnF#W-l0%0hio&_NrS@M1s53k7%cQF,iSi_Ph:pW7f%&:!rmDq:`g)gJL5^hAM7JCoItEN@
+WI&]UE*$UCE-"WGI!pHnr_<l#;Gg8JM2R1EL4k;8mtC^pN;j:GhUB';T:;4<R[BE?QN3<MQ3N_E
+R[]S,P5^LIN/3=FM2$b=o7h.*GBeF[I!pKpJV/W1LPUeFN/is]P*D5tR$jG6StD^NUnsufWiN8)
+YctF>[C3TU]=bkm^r"".`Q-'BbKS8Xd*^=le^i@*g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF5u=
+o(2MGp%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$i;\<~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_77]sB:/L^_peUrfohb0UohtK\#;n:m0/POD2uZ,C57p%B4Zkhf
+4?GVb3B/r\5<_:rr&t*Sr_<PCDbX+,;YO,d;?B]n;Ys>k;#!oc;Z0Pn;Z0Gp;H$Ooq,7Jq;c?Rl
+;cETlrDN_r;uBN";c["&<`E!r;H!Kns&B_3<E)su='&L+>@(ZC>Zt95>$+l*=T;J$=Su;%=Su;'
+>$5#+=T;G&=T2A%=Su8#=92K(r`98(<E<.%=8c2!<<?9(=8Z/%='8](=T)D$=9DW,='>6!!*T/%
+s&o8'"C#,7=]kT)!E`M(>5DD#>5hb)>Qn>8>$G6:rEK5*s'5V0ra#G.!FK76?NjhH@UWYPraGh9
+raYt=ral"<s'mHfAS5^nDK9lEH@1-jJqf5FPaIr2SXc4>St`'[XK]%>\\,Yl_8F40r5A`U_SZ8f
+&AZ#k['$@(TUhR?Q^3l!OH9C&&!)[,LP:A3JU`,tI=-EgHi87%H[L3hI=?ZpIt)orI!^-aGl;h@
+G'A.G>?b61<)QXn@80Ef5XIk:5W2(e.l8b>3\E0X7Rfg*2E!TX3]g>A<)QUj;,Hm^qb[<HqWS"F
+r9=7H!pT"8rTORNl07EqkND")kPs]>kPj];l2BfGkPj]Fk60r/k2k_'jSn0Jio/nUiS`VNhVHuB
+g]#n,g&BY(f.>M'e^W'rd,s;sJ9Gd:?!(03=]eg.=]ed/=]\^/>?P-2=BAO)<`N's<)HH];/UN#
+G^=[`I=HcuK7nu7Ll%%KNfT<cPa.Q%R@B_<T:r!TV5L8lX0&P/Yd1UC[^`l[]Y;.r_Sa@3a2lEH
+bg+P]dF6Uqf%8U/gYCWAhr*JQj5f=akNM0plKmm)mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu6Nl
+rU^#>s+14.s*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_AnQ+-KTl;$rL3VOrg<_Pq3^lB"IPOBR$di=rL!SPp6tuM)Np,;
+OcYZf?_sWtVkKl\TqS3QT:DC=QBn;@rM'=erhKe6]t_:OH@M7[TDtM_T)bJ[Sc5/YRfJoQRJiKN
+QN*3MQMm0LQMHmER/WNRQirhGR[BK@R/rbGrgFgrS=H.AStD^NUSFW_Wii\9[Bd'>X/i>)Yd1XD
+rjDg:rj`9G]tq\/air$/ci),kbf[uFrl"iRs24lRs24lR$GjNn^V7Cn]"#2UrNlO/#I(D8Y-+n.
+XT#7*Wi<"tWMleqrM]^prMfq"WiQ-!!irE(rN6+$r2ojtr2omus/c:)rNHI1ZEpsG[/RK8\@K0K
+\Gs,:\,a#:[KF"K\@MOKqRc^=r4W-EqnN0Hs2"fS`;[^g`lH0Bb082ZdaQ^sf%A[0gYCWah@&9$
+jlu4(o_/(Vr;N&_*lP=dUTUJnXjjhRS!g+ihqF6^N*9:aQ'PNYVP0`\r`oJ2$XR">ZEq$EYH>(6
+YOA[rKnP?`+oUo]aiMWE_nj.'^;7\'_oBd=b/V?5]Xk\b\$<3EZ*:G'Y[_cuGBeF\I=6TqJqJ`2
+LP^nINK9-_P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA[^WfY]=bkm_8=.0`lQ9EbK\>YdF-Lne^rI,
+g=tH>hVd>Oj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+14.s*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_>@(rYEdIY6_ghZ9*GoJ$Ci!m':jm\<I!L'aG^"FUFE;JCDf9rJ
+H$OZ5H2i0qOH,?\G\M&Ere(0$!eGlPqgSTrr."EhrdXlsqLABms*t#u!eGlPrdk'!s+(0#r.+j"
+qLed#rIkl;KnkSHOd))mNf8jPMiEg[OcfX+!0dAG"dPFDS!olHSH,2WS,\oYR@9TCRK&ZRRJrQT
+Q^3p9Pl?gGOo1=@NrkE(O8Ft;N<#"9NVAG:O,f9^NfEamrK$l<r/q#@plPT?PQ$gGQ2d'KQ0Xb3
+Qi*6KRJiTSS,&QSSbnubT:hmPUSO``VPsKns/Q+#s/l=&*ilBFZ*_!O]Y;1u`Q69Me_8m=ioK4`
+lL"*2oC_qXjo5D]qtpBh'`%Oup\+=Ro^_M>lKIBljQ#7ZiSa[ks5<n8s5O";$0'q&hqd&?f\"dR
+eM>V%dc$g_O,&^NM2RsgKRnQ#P-)-7GA9`>7r`N?:47M;I83R5<Dugl:5XpeLPU\?L@0]qKnPHc
+$1m93]Wn6$R@KZCQi<9aQ^3u)R@KV.P)bT`NJWFGL51P<o7gasG'A1WH[U<lJ:`E,L51VCN/`mZ
+OckroQ^F52SXuLJUSOcbW2co#Y->1;['mHS]">Vh^VRe*`Q$!@b0/&TcdC1ieCE1'g"P3:h;7)J
+ioB(\k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVcBfJcC<$i;\<~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_77KpE9MkL]lVR%IohtQ^$oTgq1c7-K2F'Pm5X><5"["q/4?Ye*
+3<DE.4oRYG4oIPK:/+JX5>G#O;Y<u`;XmTb;H*Qmqc!Mm"]J;r;H$Nn<;ohr<<#ks<;ohr<;f_m
+;uT_r;uT\p;[cZ-<`E!p:/4Yb<)lut<<-(u<sVr5?<gZ:=^"u,=8uD%=oVS.>$5!1=]ef*=oV\*
+=TDS"=8l>"=8uD&<rH,"<rQ1t<WH4t=9D].=]tZ)r`K>*<`W<#=Sc+t=T;Ot>5h_/>[(B7=oMV(
+=oMV#=o2Cu>Q.k.>?_#1q-<i'#@:eG?XI2K@JsU4@K0j9AH$0>A4L3A@q/tWA7fOlDfB]:F*)VP
+IY*<1MMd@PO-5cpR@^.PY-PIF]"G_k^qmn(_8*h"]tCtg\[f5YZE1""T:D:8Q'7>kNfO's"cJ4m
+K7SROIK4fpI/eQnHi\YErdXls#_.ASI=6HgH$T@5!."Qg,(*g'=&r6u<)ZCf9MJ)B7o<PW3A2g-
+-p0UF1.Xu,7Q*1`r]:HI4B>H];c?Lj;,[*bqG73HK`:96l2KuJl2TuHl2TuIk5a`9kPXQAl2U&H
+l2U&Kl29cFk6U55kN:pgjlGM%ire<$io9sr"lS:phVHudg],t+fGrMof%&:!da?Ihcd(/%]9Inh
+?X-]8>$4p/=BSf*=;"\=>?P04=B8L(<E)mq;Gp=h;"IOoFEVkQH@('gIt3-'KSG8=MN!OUO-,Ti
+Q'[l,S"6.DTqeE\Vl6VrXfen5Za@0M\[oDc^;%M$`5Ta;ai_fOcHjnde'uq"f\,!5h;-rGi8WeW
+jlY^gkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6hr;HTdrdk*#s5<p-~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Do^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:[C3"]YqO.>OqO.>Mr0RALl'MC:rgEJK"-JV'M#NML@&Bg!Vkg&_
+TqS-NSXc.:R?a*9UBIBfUnsmc^BJ,oH&82eqOdeZs.01]rgj%YrgWnU$CdQTR[BG/Q^3r(rg*/B
+q3_)J!1NhRs-ihSrga"[!hc9^rhBt"W2m,,ZEga;X/iD.['fnB!kGnSrk&TL]Y;5#a3)WNcd2U9
+#g^f>aMu3<`5MYm!lDjmrkeZM#f"*d]"5G[['Tb='XP*NZ*:I9YHFt.X/i5!WiE%tWiGrqr2Tdt
+ri5pts/c7'rN-.(Xf_K%s/l=(riHX2Xf\e1Yd(I=Za@*I[f3`=\@K/]]D9#<\c'#B\$icT\@B*K
+])TD<]`#P?^)t,*^V@S"_84%,`Q#s<a2c<EbKS5WdF6Urf%8R.g=uS^%,Tq&kN_L(nF6&DqYc`[
+s0=2QUo^](`5SIAR]3I9^mg[cK6i>XPF,]]Su&?a>?Y3=?X-a=ZF.$CY->.5n$)hFM>n^kg<@X[
+a25[.^VI\%^VRh.`luNB_7dFi]XY>S['R!>nuuGCG'A4XH[U?nJV&N.L5:\EN/`m[P*;/sR$jG6
+StD^MUSOcbWN*&%YHY==[C3TU]"G_k^r!t,`Q-'AbKS8Wd*^:ke^i@)g=k?<hV[8MioB+]k3(sm
+l0@U$mI'uB#4V0Ro(2MGrq-?dp\4[^s7uZjr;6KkrVc?eJcC<$iW"E~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Eo^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:R@:sJ#If+`4Ih$:0BOu!rCJoS/H[L3eHiA6uF`_\GEcH#9H?jg^
+GlDspH[:d7NfHo)Cj,].rdt0$rI=ltrI=ltrdY-$IXZcrrI4ZordaormstCg!.auurdt0&s+L<&
+s+L?)&qksnMMmITOcYT\M2@1POckomrf[hXQ^*euPEhK%R$sP9SXfYJ!M#YURfAcUR/NEVR$X2,
+QBhH6rf[;DpQ5B8!07&<s,R,=oT&X+s,d2?q2kT<s-!8A#*=t/OHG]irfm>Grg*DIoTfQFR$dl>
+q3h/Lqj[JQs.0%Ys.BanU8"H[V5C/hW2ZfrX8f7EXfSS)Xfo%<\$rlW]"Ghsa2uNKbg+Vdg>M)W
+m-aH;q>KOW(]O@/q=s[Vo^_M?mdBK1lg!ctj5JnQiVqd8huDO7hr*JmirA'=irA$Eio&\Lh:pW8
+fDX;#ec4)BdEfnePEUo\NJrj^R>-9DIts;OHuj[H>\6WJE_oMYI=?\F:(1'!:f3..MM[.EKnb<K
+KT6!>p?'o=[A'.YS!o_2rK[MMQ^7W<%@iiNPE:faNf/aMLPU`UL0f"GGBnL]I=?]tJqJc3Ll%%K
+NK90aPEhH$R@B_<T:qsRUo(&hWiW>+Yd1UC[^`lZ]Y2(q_SX71a2lBGbg+M\dF-Opf%8R.g>(N@
+hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrU^#>s+14/s*t~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Do^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:=84cNOpeg?RlV[=Qr)"(b1G^^B2E!K[5X@V"5<_7n4?<C&s#C0@
+3Bo\+5Q3hJ5<V^>:'E.A:/OqgrDNSmr`&eos&&hqqGIAn;H!3c!)iAd!)i_ns&B"s!*&qrr)EVn
+!)iep"]SE"<E3#r;u]hs;\r;*92&/\<**.%<E<.&=]nd*<`iO.>$:i.#$G&0='8[0rE0/)=oDJ$
+=Tho2>$4u,<ruK*<rQ2"=SZ%u=9)G%<rZ5'<`N1%r`8hss&o>'#?b/1='/R-=T)>$=T);(=B8L*
+=Sl8$=oqo3>Q%b&>Q7n+>6%k+=oMV$=oV\*>Q7n">Q7n,>PDA)?!LZAqd95.s'bq:$"ILVAS#C`
+ARo?NAcH6h@Uiq\BPM9tCMds-EH?5EF`_\JH%(F'NffNmS><-dYd1XE\[oAa]=S!O*k/PaZEUO9
+Y-+e$Tq.X>Q'78fMMR%BL4tA9KS+i(rd4Tk!.Fios*XuuJ:N4JJ-UXTIXQWlH@#I6.!g/`GBS(S
+=B\g)<`E!h;,'\U5=.n15rCbZ/Mek=4#&K\7n,p,2E(Lq"]\T&;H$Km;"dc_;#c4Jl2U&Fl2KlH
+kPj]9kPFEAl2BoGl2KuJl2TrKl0.@/kPs]Bjo+6?j8Is;iVqa9hqe:es4SOIf\+p/f%/C#daHOi
+cd'h\bfe/jbaF0'@:*2?>$:i+&Qi1==BSd.=^,$5=]SU+<`W6";Z]io;XmUjF`qtSH@('hJ:W<)
+KnbD?Mi<XVOHPfmQC+)0S=Z@HTqeE\Vl?\tXfnt7ZaI6O\[oGe^VI_'`5Td<aihoRcHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s5F!.~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1@al&md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=DKbDKUGmrgNeRs-ibOs-VT.rg<\Qq3i@fNf/^TPEB1HVPg>dTq\6T
+Tq7jGR[TS-USFQZU8.[_#c#/L^qQLjJ"$>/qOdVUrga4_SXc1>S,JiZS!f\3op>]Gqj7;L#+:pJ
+R$jD3rgEbSrg<bTrgWeT".c$UU&LedUEHA0W2m)*Z*170XKf1B\[oAa]Y;2!_S<ds^;.Y,b0801
+d/M>rc-+5Ma2l<?rl"iSrk\ZOrkJ`Q^:_(h\[VRFrj;j8Za6t:Ym.G8Xf\\*X8T'sX8K!tWW0!t
+WrT0uX8]4#YPkU)YHIi+s/c4&!3cC)s0)@)#-tSB['mKRrO;p>]"@jPrO`!=rOMp=rOW'BpV$U@
+s1eQIs1eTLs2"]O"2i'sa8O*Zas"sPbg+S`eCE.%f\,!4gtgfChr3VYlg=-/nac;Fp\XshR/\hK
+ZDF;&Za[EZVP0NcYf5S_OI_20ITMYu=^7\oU824'>@1cE>$A8<\?W6>ZE:>!YQ0?6ruD%5gWRXX
+`l,[-^;%J"_ns=3aNV]D_nNam]XbHLZi@60YPka#Y[_ctGBeCZI!pKpJV/W1LPUeFN/is]P*D5u
+R$jG6StD^NUnsufWiN8)Yd(OA[C3TU]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_
+k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+14/s*t~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1@al&md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=D'MA8-%1r.+Bgs*i=E.rB!5ASZ-u;1!Y;I!U*aG^4OUG'%bGE,KrH
+H?sg^H$O^^H'")JNI#>YJ,+`rK)L8mJGt&uIe8-bJH(3#J,k0"JGk$&J:W9'Jq<oQs+C<(re(0&
+re1o<KnkJ@MN!RUN/37GNKB<frfn.]Q^O>2QB[StQ^=).S=Z@ESt);LSGerWRfAihR[BJ1R$a5,
+R$X,(Q'@MsP*5a*rfI,As,d2?!0-f7r/Uu@NK&sYrJpr?rf@&?s,m8A!KiKBOT:LAOoU^CP5UIH
+OckomQ'IU2QM?gGQM6aCR/`TLRerTOSH#/ZT)>2\T`1YkUSO``Vl6SoWr8tDXKAS*Xfnt7['mHQ
+\@K5a^;7b,`Q60DcI(4ti8s7loCr+[rpp*hrr;p1rr<#tqt^!YoC;86kiUsdiSi_Prnmn9h;-rd
+hu2C6hr*MSro3t:s53k4s4[\0f[n^)rR;#"eC2jmd/M?2o9YZ"Lld[XOcbHQJ:rcC]>o#<B1QH$
+DfSHFIK"U*;GU%f;c?IfN/ERMLk^Y<L$jVRs!@O0e%E)aS!fe7Q^<u&QC!o(QC!u,R[KG(OcPK`
+N/<@GLkg_=o7pgtFa&(UH@1-jJ:W?+L51SAMi<[WOckroQ^F21S=Z@HU84W`W2co#Y->1;['d?P
+\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1&g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b
+!;HHes7u]kr;6HjrVcBfJcC<$iW"E~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1%Fc%md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=C@$8PMqY;#4&T;!:dM;Z9N42DHsB2)[?O5X@V"5X.Lt4Ztee4ZbVa
+3'KPjr]gEHr]U6U"AM-V:Jh!gs&/eorD`_os&/eo"&`&r<;oet;Gg?f;#jMe;u]hs;ZKer;u]f!
+;c6Onr)<So!)rkrr_j&$<E3!u<E)rq;[HE%;c$+Z928GerE'D.=B\p4=&i7$=BYW,$!UY>>?P'2
+=]ef*=TM`1oiV8sr`B)"!`rE'r)iess&]M-<E3+$<E3*!<rcA%=U\D6='/R-=]\[,=BAT'=T;P(
+=Su7t=T;M(>5_V(=o_e*>5hb+>l%\)>QA",>5DD%>5MP(>QA"->5;D&>lS"2>[:T=>Pq_-?!^k8
+?i+43@:K1Fs()IHAS#C`AS,Larac+BB`;cHD#S8PDK,Pos)K0'GC+gmMN=$lT;/9^WiW>,ZEppD
+Yck10X/W"oUS@a_)5<^lR$<bpN/*%:J:2flH[9s`I!g6cH$ar:I04kFIt7NLs+(-!s*jurs*P#t
+H?jaZGBj(3s*+QgG5cV.O'>di<E<+!=%>tY90bj6?&([)0.8\+5!(DQ7n?-=3&W\o3sdr2<`W0u
+;c$@gp/1W^!/114s6'UKki_-mqr[tCqrde=s69IHros@Gs60RJl2KoCk6'l0k2u[)s5X1?rSdh9
+rnmh7hYu=2h#?"dg"=p-f%&:!daHOhcd'eZbKJ&MaiNMmRuM>n?X$T8=]ed,='&O,=]\[->$G-4
+=&i=&<E<'trDN/_@ruj;G^4U_I=HcuK7nu7Ll%%KNfT<cPa.T&R@B_<T:r!TV5L8lX0&P/Z*UgF
+[^`l[]Y;.s_Sa@4aN2NIc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nc&([oCW%T
+s7QHerV6Egs8)ZjrVZWmo_sFAJcF^/J,~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=DQeF*WM*rgNeR!1NVL!1;K,s-WeRr0eRbO,]'ZOHO%LVPg8fUS=BS
+TV.pIS"#h4Q_UAUU].(hV$F]K^qam<HA_Qls.9:arLa+]!2'4]s.'.]rgj(Z$D!]XS=>t9R@0G0
+r0IGOQi39SQ^F,+R/NHPRK/cSRf8`QRfAlWS-PUTSXl:AStQ%V-)793V5L8mXfnn/X0B"B]Y2(p
+^r"%/a2l9=^qdk-b0&&Xe'ukGd/q\>aSj3ea2l<@`59@,_SQ5e$bsEh]Y(kc[C!<I[/RK4Zi@?2
+Ym7M:Y-"e,X/l0#!N`@$WrK%$WiN5%X8T+%X/rD*qQBn%riH:*Xf\c*Y7%M;ZE^[?[C*BK[C6"C
+rOMs?!PH,F]E,^[q7HL7!5&6C"MMOa^:jN[s1SHHqS3'Grk\WOrkecVa8X3\b5]Wlbg"GZdF6Uq
+f@S^TgCrAuhV[>SkNV@#mdKZ9o^qnRqu)o^0?pZ$Up7PE\b*V1SsuXui9$JoX`f8SNK[FN>+VRg
+W*3D.@:!2AZEgjFYHP4:Y3rNOs!%I>i5s'Z`PfU.^;%M$_ns=2ai_]B_nWps^:CYWZEpd>Xo5Nu
+Y\8-%GBeF\I=6TqJqJ`2LP^nINK90`P*D5uR$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(p_8=.0
+`lQ9Fbg"G[dF-Oof%8R.g>(N?hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCMVRo`Fj]p\sseq>^<h
+qu6NlrU^#>s+140s*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=D-PB5;R:rIFHgr-m.F'5D;rB5MF#;LNt?H[L0cG^4OXFoHI]E;k1`
+H2`-iHi9!-=.a>PrIY*'r.Fs"rdjorr.+p"It7-?pON*k!.b$!s*t*#r.=p#!JH1+KE-Z'K`6Z;
+L51P?Ll%%KN/EFHMN<sdQC%T<+ISajSXPq3Q^=,0S=ZCJU7n3NSt2C=R[]h:S"6+>R@3r>$^[0F
+Q^*i#P*(lgOSt:AOSt:AOSt7:Nr"e<NfB%tNrP1=O91K)OSP"=OT(CAP5UUEP5LOBOoU^EPlm>=
+Q^7T:!1<JHs-EJIs-NeSrg3_SRf&ZTRKK%JR[a,C!1j([!2'4_s.K^mTqeE[VP^;kri,t!riH.%
+s/n_mZ*UgG\%&rY]"G\i^qmq-ai_lSdF-Y&jQl=.p\=U^r;?Nmrr<#trVZNfq"OOVo_%qQqt]sY
+o'br0jl,"Kf@S[Sg&K\2g"P6;hr!ALh;/%d&`;O)hqm2DgY1?5f$r3uda?J@dKJ%Ida?JAcQgfb
+e&nMOO,B'`P**YMKn4`%Pci#QEeI_*BPqc^:JH4bIX_8k$rg,$;2gEkM2-k>L5#&KNW14!o@(C`
+VOEm?R[9A+QC+&*Q^=)+R[KV2Q'.5hO,]$QLPYqanqUn#G'A1WH[U<lJ:`E,L51VCN/`m[Ockro
+Q^F52SXuLJUSOcbWN*&%YHY:<['mHS]"G_k^VRe*`Q$!@bKS5Vd*^:keCN7(g=k?<h;@/LioB+]
+k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$ir=N~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=C=$92&&Xqb[8hlVQ\?pJMP[1c$jD2)[BZ5X@V"5<_4mrAt3E3B9,\
+5<es/s#pEVr_<PG:ess`;ZTirr`&hprDNVns&9/#<)cdq;u9Jl;#jMd;u9Pn;[$-!;Gg:hrDW_q
+s&/qt<W5r!;cH`q<W5qu<E/oq(fXF091hiQ<ENC.>$5!3>[:T<=&r@(>$V&4s'H%;>[(E9=B/F)
+r`]>+"^5&1='/Z)=oMP&=8l5%<E<3#=T;G&=T)>$=;Ft=<``:$<``@'='/O+=]ea,=BSd/=8c5$
+=8c8$=T_c-='5E&!a/W.rE92(r*')(!Er_,>lS%(>QJ,7rEB&#!*]>*!*oM-!*oJ+r`]D,>Q%h+
+>6.u7r`fA,s'>V1s'5V3qdBG4!+Pn:!+c"=rFZ%?"(l7^C]&#KD?"JiDfB]:F*2\OH$F^gM34'l
+S=Q7DTV8-Wrhg!tUS4<NR[BE?Poc6XR?s/#Nf8aHJ9lB\EcQ5CFEM_LGBeF]I=?WnI/\QoIM%'[
+J:E#rI!g9eG^+CTF`qnMrcSHhG^+FVG5HCaD.6aPr`/tt)f\nO9M.K=:P_:p6SBuH4?P8N1.au*
+7Q<:`4oRML<E<'t;H$@g;,I$bpe^tS!U/eIkkjQBkksW<kkaQEl20cGklU/7l2KlJkNM.,kPs]E
+jTt#1jQ,@]io8qrhuV`lrn[V0s4\1?g"4j,e^W'sda?FgcHXSWbKBh+!6G/['&hT=R;ZD<>?G$3
+=BJU*='8a1r`K2)%pE+;=BAU+<`N's<)QRj;"@IsFEVkQH@('gIt3-'KSG8=MN!OUOHG]jQ'[l,
+S"6.DTqeE\Vl?\tXfnt6Za@0M\[oGe^V@V%`5Ta;aihoQcHsteeC<($f\5'7h;-uHiSrnYjlY^h
+l07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5O'/~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=DEfFFK(9r0dYSRe<*HR,"&-R/WNRRLtU>M2@CYP[:5dVP^)]US4EU
+rga.ZS!]Q@U].%sV50r`]tV7sP^IqJoq;/RqO[MRs-s@aR[TY3R@'A.rKmVRR/*0GRf/ZPRKAtK
+SGSiYStD\TUApu>UnsocW2Zl$Xf\e4\@o\o_o0L5ai_oUccjJNai_oUe'ut#f@JL&e'Q@^b5TQf
+bfe/L`5DSk&Ac/u_8!^u]tCk_['[0G['fh=!42[1#-kD9Xf\\+r2g:,X/`2#X/`5%Xo>I-Xfee.
+Y-5&,YlCp+Y5PU(Y6V;:ZEppG[^Q+Crj_s<rON!@pUpF;r4N'A!5/<E"2DXe^\YYJ^VIV!^qfrc
+rPAcV`5Ta:aiXM(--ONWcHjkbdaQatf@S^0g=tE>hr3VWkNV=!mI'K6o(2MJq>:/Ys"C^_WN!\M
+^[JV,St)pde\duTXdi[M>a(OX>FhI^USqF%?sm8E>-bECZ*:C9YHRAuMZ3qYkKM&f`Po^n^]2.X
+`PTL2a2cBE`PT=f\d#[NZF$m@Y5PX!Y[_ctG'A4XH[U?nJ:`E-L5:\DN/`m[P*;/sR$jG6StD^N
+UnsrdWN*&%YHY==[C3TU]=bhl^r"".`Q-'BbKS8Xd*^=le^i@*g=tE=hV[8Mj5]4^k3(sml0I^&
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+141s*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=D*SBl8-Gr.+BgpjUkF%;TWgASl7$;13k>H[:#;GmAS9FEMVEE,bf&
+#^L`BH$Xd`HB8&c"*A6rJG"QlJcLB"JGt-"K)U?$JGt&tJGXiqJ,t4OnU^[irdb9*JV&N,KS9>Y
+re1<(s+C`5L5(J>Ll%"HN/R[l%Z?F5Q^O81R[]e;TV8'NrgOOjStMgPUSO]\U8"<PS=5t>SXobO
+!h5UGr0Rk[R$X2+Q'IMpOcY\(OT:L@OT:LAO8k4?O8P%:O84h9O8G%=Oo:IAOo1C:P5pjFP6@,8
+QBmm7QMHmIR/WHOQMHmIQj/tGR$jA2Rf8cVRf8fVRfAlZSXc5LSc55\T)kUZr1X.b#,@ujVPg>j
+ri6"!s/c7&#-P/5Yd1XErjP8)\[oDb]t_A!`5g!DcHjheh;mhgn+$#Ap%J+Rq"XUXp@RtHn*]Q-
+lg*s-o()8:lfmKggtC9/eC;stf%8R-g=tK`hZ_lohVR)ErnRP.$JO.`f$r-qcd'h^r6>Djd*^8?
+coKM%daQ^sf\=U)PECc\Q'IQHNeW4<K8?"[I!L9`9P$n:F%K,SI!^9k:/4ef;G^,HMi<LJLP:J:
+mY$T"'("Pn\Z2-fR$sA.QC!u*QC!u*rg41bR?NksNfT-VLkghALP55R@ruj:GBnL]I=?]sJqJc3
+Ll%"JNK90aPEhH$R@B_<T:r!TV5C/iWiW>+Yd1UC[^`l[]Y2(q_Sa@3a2lEHbg+P]dF6Uqf%8U/
+gYCWAhr*JRj5f=akNM0plg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFd1J,~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJPKp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=C@%9MP=ZrDEGgr_`>bj&,VM#rOIo0fCsK2aKb/5lX%T5!;%h4$>S`
+4$!+$!^/_3r_<Sj5#+jMq,@#e!)rens&8kqs&K(ur)<Mkr)3\s;cH`q;uBVn;u]bo;$'Wo;uBVn
+<W5tr<W5tt<<-"r;]/D*92&2_=BSj4>$G6:?=$oA=&rI.?!^lFra6=F?!U]==&rF+>$>-7>Zt94
+=SZ,"=9)G"<<6-&rE'#$q,[St<W6#&<E<1&=]t]*s&oA*!*T2$!*B)#s&fD*=',?&"^,#3>$>/0
+>5VV'>QA"&>l%Y&=oV\'>Pq\)>Q.k/>$G51>l7h(>lS+.?N4:2?Me.1@/sd7A,^$<AH6?AAcH?E
+B4u$qrG;IM!,hdSs)8$[F*.D(5'D=*M2m[\PE_>uQC"#.R@0G-PELudMi*@IM2[LWOH#*PK7A5m
+FE2A?EH6)@F`r"UH[U?mIXQZnI=-EjrdG-$I!U$]G'.kIrGi-aEccDGF`qs'FY\2eG'I.l=Ar7"
+<+em!91hH:84Ps)4"r-A.m5sG1.Oo+6q0*n4$,Jb4'#B];H$Fh;"mi];#fbWkPXQDkP"*>l20cG
+lhfrKlg!d7l20]AkPsZnjlY^ejQ#=]io8qUi8EMLhVI#CgtUQ:g"=s/f%/C#da?Fgcd'eZbKBh+
+!6G/[%*$9*`7j%SM0rc>>Zq&0#$=o-=BSj2r`BJ1>?Y66<`W:&<rQ&$;c6Fi;"@InFEMbNH$Xgc
+IXls#K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVPgDnXKA\1ZEpsI\@K5a]t_A"_o9U8aND]McHjkb
+e'uq!f@em4gtgiEi8N_VjQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#
+s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]4>JjFb>kTS,\rHRK&Z;QN3?EQi<BPR2_0FLlmmb?DaWtUo'i\Tq\6S
+T:D@<R$X/8Uo"'drM9b4^VIU.gj=tMTE(V_T`:Y`ScGD^T)Y>`St2IErLF(]S!ob6nsTEEs-rtU
+s-X([S!oe8S=KPKrLP1)TqS3TUSO]^VP^;lX0&P-YdM'X`5g!CbfnA\f@eg+dJhGsdaZk$gYCT=
+rn7P,da?Cfd/D5mbfIiD`;[U]_8=(*^q[Om\$i]QrjDa4rj;a5rj)X1YktU%XTGT(X8]4#XoGR'
+Y6V;8YHG(4Yd",3!jJr6qQU71Z*UgE[C,tBs0r9D]"5Mb]".dN!5&$=!58?F!l)I`rk8<Ds1JNK
+^VI\_^Au"I^])"K_>_=M_Zn&u`Q-'Aao':.bg+M[d*U1heCE.%f\"m2gYLcFioT=bl0I[%mI'H5
+o_%tSqu$G]s"M$hVQ7,Fa1CQ9U7Sm"`ocEIV3>OnMjBZ2?)jQlVl*^'=^bWA=g><>[]cm=Z*1A"
+Y_rG_r9r"OrknfSrkK;c_o9I0`5p$Eai2-2]=GSb['R*EYcdr0p987PFEMePH$XjdIXm!%KSG8<
+M2R=QO-,TiQ'[l,S"-(BTq\?ZVl6VrXfen5Za@0M\[f>b^;%M$`5Ta;ai_fOcHjnde'ut#f\,!5
+h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]3/EMBlSOuJc(&mJ+\9XIfOreIi)p6ASl:#:jmb=H@:'bH$OXZF`_YE
+EH#mpH3&;;rd4X*"HH``D0>E%!.t3&!ePuSrdb$"r.=p!!.auus+()urdaQjs+:3#$@m\YJqAQ)
+JqJ`0rIt9)rdtK0KnbA<LkpnFrepc5%ZQU9R@9V8SXl@HVPpDgrLa4cU8@je#cOYuVPU#[T:Z%S
+"JDH]T:GnL!goCErgEeR#*tO<P*(lirfI2BrK.DLOcb`eO,f6]O7\J4N<,'#qN1`>rf[8Cr0%#B
+#*b=8Pa%GsrKIDLPa7X6QNWV>Pa.R4Qi3<IQhZsGRJ<6MRfJuUSH,8\T)bP\Ti.V[UnjiaVPgAl
+Wi<#!X/rG*Y-5(7Z*UdE[^NZS\@T;c^;%G!_oBd>bK\DbgY_#PkNV9umdKW4md9?*lKRNrk2k[c
+jQ5OdkNCpbhqZl8e,@]"e(*%#f@ep7rSA1Cg=k64f@\^*eC;pnd*Bq]cHZ=3s3:Shs3EsWdF$Ck
+eCE1(gu%/Sl0S24PDtTaR$j,LM1pS:M3PftGC=F.7;-[[8PXb_I"$K>:JOhe:f!%/Mi*=FL51J8
+mt?]#%HQ0c]!%ZmR%'G0Q^=*;QOT=MR@K\1PEM#eOGesOreCK,nqUq#FEMePH$XjdIXm!%KSG8<
+M2R=QO-,TiQ'[l,S"-(BTq\?ZVl6VrXfen5Za@0M\[f>b^;%M$`5Ta;ai_fOcHjnde'ut#f\,!5
+h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2"^D1o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]0o(]:/:U]q,./gqGI&bqbdAkohb]cohkWb"#D\c2?#K@5sR_$5X%@s
+5!1t,3t=513]TDi5X.Is5<_4o9`@ch/5f5>pf$lcs&8kos&8nrs&Jkos&8np!)r_n!E2nq;uTbp
+;uKVo;$'Wo;uBVl<<-"s<W?%u<W?%s;]A\6:JO\a<**7->[1K<?=RMS?<UK8>?kKA?t'"A"^bS>
+=]ef*=p/&8?!LS1=U&&4=BSd/=8c,'=&rC)<`N3"=SZ#%<`N1$<E9$"!*K)#"'So3=oDD%=T2D#
+=T;P$=T;P.=^#$6>[%)1!aJr7rE]2'!*f/#qciu%"^>5;?<gb6>Q%b)>6%q+>ln>>?iF@3?i4=3
+@K'a7A,g'>Ac60<AHld\BkhEuCAhrKD>eA_DJsH4EH6,BFE`+_KSG?_MZ8Y7N<tQ%MM[(AKnG&2
+re))AL51P<Jpr&jFE2>>EH6,CF`qqQH@1/?IfFirHN8BiGlr;7G'*Y&s)IsWs)\3^qK4<4H$asi
+Jqf/H>Zt--=&rC&CeRJp5XIqLMEs6[.jHf54"`9[84H';3&WYn3sn#L<`E's;GU.d;#*u_;#f_V
+kQ'f?kl'cElMg,IlMp2LlMp)Mkiq@1kQL)4l0.@1kPs]Djo=BEj5T+YiVqa:hqm2gg_ef"g=b03
+f@JO'eC2mpdEg+`c-4DTaiVX'a8a-\`Pf[n_C*Ud[!6V)?sQo;>?P'/='8X/>$+j.=^#$5>$"^)
+=B/F%;c6Li;GZj\BleB=GBeCZI!pHoJV/W1LPUeFN/is]P*D5uR$sM7StD^NUnsufWiN8)Yd(OA
+[^WfX]=bkm_8=.0`lQ9EbK\>YdF-Lnf%8R-g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCMVR
+o`Fj]p\sseq>^<hqu6NlrU^#>s+141s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]4YetH]"3gS,\rFR/iWJQN3EFQi36DQiEElP`L][OHGc5VPU/fV4j]W
+U7e0OS=Q+;QC"DDrhTLh!2fb1"MUOWJ=>htrgs7`T:bkL"eD6VSXc2KRf&QRRf&QSR[O)B"IkjK
+R@4&Cs-s%W#+M-RSt2IDrglfUTV8'RUSFZ_V5C2jX/rG+YHkUM_oKpFdF6UrgYh)Nh:^B/e'ut$
+h;RDSiSrePh:gN4eC;ppdF-@cbK.`D`5BI/_ns7*^:_"dr3c^8['mFA[1BXNZa-j?YHP16Y-"k/
+XK2<$"Kei0YHRl.s02d4Z*CU>Z*OA8!jo;?rj)R1"LPSF\$u@H!4i*?!5&3Bs18<C]DK8@^&PbF
+^&PhF^]2%G^&PhH^Au(H^Au"I^B)-dr5/HOrl#&\a2lBEb5KL4bg"GZcd:(fe'ut#f%8R,g=tH?
+hr3SUkNM0rlg4$,n*oo@p\=R]r;N2c0\<M1Wk?Kt`:gO4TUi+%i9-St`en#S?'C[Z>G%XaVl3j)
+?sd2C>-bE@Z*:F:YcdH!MZ4mrnC57l_o'@*^qde(`50@0a2uNI_o'=*]"Yb`['[0DYH\#2orr+N
+FEVkQH@($fIt3-'KSG8=MN!OUOHPckQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_'`5Td<
+aihoRcHsteeCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBj
+rVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]3JZSD0:7(JbXcmJ+e?XJ,OigIhHU4B4YmpD,>Y-H[L3dHZs[YG5cU`
+EWg<"H?sl8HN&6rOH5E]H"q>LmXtOkqgnWrrdb0'JV&LQJcC6#J,XuuJH1;pJHURUJUi:LJH1<$
+JH:@Tre(9*re16&!ec8]reCQ2M2M:js,%DIO-5ftSY2[NU84]gYH=e$V#I%uUSb#lXf\\*Wi2ej
+UnaZYrLj=dT:VSLRfo1IQ^3p5P5LFDP*(n*OSt4GNfT6]O,f9]O8b1>N<#";O8b7?OoCOCOoLRF
+PEPp/rKR>G!0mDHrg*GJ".#4;QMR!KQi*0JQi3<LR/i]SRJE9QS"-#FSHtj\T:_dMTqJ.YU].(h
+V#[ClVZ`rtWN*#uX95T-YHe)4;7!X;\%&rY\[oDb^;.S&`5]m?b0JJdf\,!7hVdDRjPo.VhVI#E
+hr*GMhqm/CgYCT=g=Oj&cd'eZc-ObceCN7)g=tE<gY:H6e^W'qdEp5=cMc#dbl#^KcHjkce'lgt
+f\,$8iT04hnFQALr6DF/O,T<lR[2-WKnP#/Pcr2VF/!DCAk[/b8kj\[H[^H?:/t1i;,7+K"c8"h
+KSG3LKT6!Cn^PXhZD!YQR?j2,Q^F/,R/WE[R%'J3Q]mVpNf]9YreUT/nV:e!FEVkQH@($fIt3-'
+KSG8=MN!OUOHPckQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_'`5Td<aihoRcHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07O#m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBjrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]1,@b:/4[_;!h-Y;#4&f;YO&e;"dcd;@#0:1,:^G2E!l#5S$.E5<V1n
+3]fJc3''&\5X>94rBC3U"AM*U:Jppdqc!Poqc*Pnr_ibp!*&qtpJh/ks&/kqs&9&"<)`cor_rhr
+r_rhps&&bns&8qq!`N&tnPoQgrDW_q&lVY);H-Xt>$P?>?!h)SB4bLVrE9V6?=78SAR](U?<g]=
+rEB,(!*fG+r`T2%s&fe4<E<.%='/R*<E3($=8l>%=8uA&=8c/!<WH8$=8l>$=o;Ct<s2W,=BJ`)
+=T)A*>$5$4>PhY*?2e(0?!dD6!a]/<r`oJ,"'J`.=oMV(>6%q->6%q,>Q7q.?2e+,>Q7k,>Ph\*
+>manG?s[/H?XR5K@/aU6@f0a5AH-6>AcZOXrb;CJ")MgkDZ+DhDfBW5E,fl<Ecu_SH[U?lJ:W?*
+Jq8H%If4ZpJ,XsGIsufoIXQTiGB@hCDf0H2EccMLH$XgbI!pBhH[9s]G'8"MFE;JBrc7sWqf;[W
+r,b&DGBeC[IY!3/NK96gRW2qC=&i:%=B0379hS2F85G(.2bbtS1b1^N/i#se77Ka*2ENr\4$$DC
+<)Z^mr_WDfpJ:nSl1jK>l2U&Hli-2Ili65Ql0@Qul29cEl2BiGk6:#0k2k^cro4%=iVqa9hqn@g
+!SlH/g)AYsf@JL%e'lamd*L%`c-=JUb/qfJaN)<?`W!df_ns7*^q[V?`JA>A?!UZ:=]t`+(g0sF
+>$+j.=^,$2>$+j.=B/F%;c6Ol;,Hd[BQJ9=GBeF\I!pKpJqJ`2LP^nINK90aP*D5uR$sM8StMdP
+Uo(&hWiW>+Yd1UC[^WfY]Y2(q_SX71a2lBGbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0plg4!*
+mdKW6naZ2@oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFg2J,~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[QkASlO>NrGRKS,JfFRJrT<Qi!*BQiE*`MNX3e?_sWuUo'i\Tq\3RSt2C@
+R@0D:V#@.iVZ3Ro]`u6c>5rl)TB`*HTCe]USXf\K!LfGSRf8`SRL>URR[]e8R[KS4S!s;F!h>gP
+qO[_[.A<K2Unji`VP^;lX/rG+Z*_$U`6-HWf\G<>jlkpkj5A_Gf\"m4hrEo!l3cY5j5JqPgXk!+
+eGdo"d*0YR`r<mp_o0F.^q[Ro\[],Y\@8rW\$`WP\$`WNZa-k8YlCs1Yck75qlTn$#d:J:Z*CO;
+Z*F85"gPGA[C3OB[/dT4[L]dS\%&rY]"G\h]tV>"_8#u`!5/<C!PH,F^AbhG^AbkL^q[Y"r4_m>
+#/J'j^qmq,rke`Srl+lV"in^*ai_d)b5ffdcQ:H\daHUoeCE.$f@S^0gtglHioB1al0@U%mI0Q8
+o_nLeq"agbrLEmAZE:F7cHj`7aeb`'\?F34U8G&N>ZXsmQ<7FfT;&0]>$G-<?X-d?ZF%'EYH>+6
+YOJcRs!%C5f"f8A_8<t%^qmq-_SX:1aiqoI`PT=#]t1_ZZa6m?YPtg"Y\A-"F`qtSH@('hJ:W<)
+KnbD?Mi<XVOHPfmQC+)0S=Z@HU84W`W2co#Y->1:ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC.heCE1'
+g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[Qa>@M8bH2N6fJGXiiIdDR]IeJ71CMIKuD/<'sI=-?hH$ag^G^+=QFEDPC
+Dg?YSrd"Qkrd5!4NfK)idqj2Znq-pqre(0$rIOlurIOfss+(0#r.4j!pjrHss+13#"G)/UJV*lP
+!J5t%K`$K&KE-`*L'*3eM2M7i.#a.HPF%f4Uo1/jWir\4YcOk&US4EXW2m&*Za?s=X/`1uVl$;b
+TqVI[!hc-UrL=4cS=H"7Q^<u%PEYd)s,m>C!0R5Ap5f66$]U1-O,f6]O-#HcOo:FCOoCOBPQ$gH
+PmrtAPE_>uQ'Rc(R$jA2rgNqVR/<6LR/WHMQN*9TR$X/,R$mQ7$(76NS"-">SY)PRScbUXT:c(T
+!29Cds.oRhrh]drWMuorWue@EY-5(8Za7'I[^WcW\[oDc^;%J"_Sa@5a2lBFbl5iqcd:1le^W'r
+d*U1geGdu*eC2jnd*L(abfn6.aUu\=bg4_de^rF*f\+m-e^DgirQY;bs31PhrltDe'[P.RdaQ^s
+f@em4h;@2Ql0Rs5qY^9k+jJf,OH>EjS=Au:LkUG7Lm>&kH@]d(6q;9;8PXYZI!gJD:B+5n:f%(L
+!K)^4L&ls]qh4ZsNW0R[c+U`rU6V+6Q^F,+R$a5-rg+"[R[fk7Pa%;kOH#4uL]W<dL%:"5EccGI
+GBnL]I=?]tJqJc3Ll%%KNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*L^D[^`l[]Y;.r_Sa@4aN2NI
+c-FY_dF6Uqf@\d1gYL]Bi8EVTj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`n
+oDX=@JcFg2J,~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[QN7n?9J;>F&g;>jDh;?'J^;>X8f;>X2`;(FIY1,UsJ2*aGn5=%Is5X%=n
+4$,Sc3''&a5X.Lu5!D+m5>4gI9dbNe;,[6hqc*Mmqc!f!;Gp@h;H$Nc<;fbq<<#qu<;oek;u]bq
+;$g-!;H$Ll;H$OopJq2nr`')#;c?Xqr`&nr&Q2V1=^,3>?t!MWBP:sc?X$_5=Vk@O@qKCeA7/bN
+?!U]>>$5!4>$G9;>?_#/!E`M(=T2J&=8l>"=8l5#=8l>%<rc;"<<6-%r`B/%r)`r%rE/bpqH3]!
+r)s))rEK>.rEKD2?sin=!+,V/s'5t9>$>$1=]np2>$Co0s',P0oir>>>[1Q=>?kE=>[1Q??=.&I
+?XI2K?XI2KrF#\8raYq<!+l(=!+l(?s(;OLBk_@!D/K8i$#OQuE,]`5DJsLnEW:%kF*)JEEclVO
+GBe:QFE;MFG'Eq1+Er!OFEDSFE,TZ3CM[j*E,fuCGBnL\H[9s_GBS(KE,bbqqJuLT!-7sX7<EZr
+G^4X`IY!30NKBBlS=l^WXE/_m<``:%='<.39hS,F6:Y!A2``WA,:G`;/i-'j7n#m,2)[NX3BC2A
+<)lgn:/Oj`;>3ockkXK>li68Ilhp&Il2TuFl2BiGkPaQCjo+6[j5JtTi8<DJh;-l@gY1B7f@SU(
+eC2mpdF$=ecMl&lbfe2Pb/jS&"NJF"`5DSk*PoP*^:h4mi6d*e>@(Z@=BSd/=]\a/>$>$0=BSl,
+=p8#/<`N.#rDN_o;Z0Jc:harlF`qtSH@('hJ:W<)KnbD?Mi<XVOHPfmQC+)0S=Z@HU84W`W2co#
+Y->1:ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC.heCE1'g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0CeQ#md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[QpBQ/3LPQ%*MS,\rIRJrT<QhZmCQPkmGMi3[[P[UGfVPg5_U7n<UT:VRA
+R@0G0r1sOnVl-AhrOrB'Q[b:eTE(\bT_b8\T)>5\SctaXStDXGrgWtXqjISSR[X5Fs-inU!h,OG
+rgWnW&"]DcSt;RHStD^LU7n?XV#I2YVPpJpXK8P-ZF7?[a3E,ei8j%alKdd#k2bLWgtUZBio]On
+n*o`0kN:pfiS<,<f%&=%eBlF]aN)<>`l5j5_SEq"]DfD@\H0:OrO3'@[C3EIZ*CO;r36:,YPbR&
+YQM/9Z*OA6!4)U/"L>AA[C5q@s0hs:s1&'=#.qO^^VI\(rl+oU$,aNk]=GJc^qmne^Au"E^])%J
+^@f5@_#D.O_SjFm_u7OS`r=!\aN;QHrQ>>fcHjkbrmLhq'%GI^f%8O+g"G-9hr3VWkNM-prp0^S
+n+$DJ%e9/_o_/"Qq"jmaq>1$gV#N-`ZE`!)dEfMaYbRn_WlElVPba^hHA>dmR:'6kVkp@q>[(WD
+>Zt=;ZaI'BY-G:8n$%]L#5?od_o'@.rkK>e_8X=0`l-!Dc,dlA^:V"i\[AcMZEUM2Z1Y>8EH?5E
+GBeCZI!pHoJV/W1LPUeFN/is]P*D5uR$sM8StMdPUo(&hWiN8)Yd(OA[^WfY]Y2(p_8=.0a2lBG
+bg"G[dF-Oof%8R.g>(N@hr*JQj5f=akNM0plKmm)mdKW6naZ2@oCW%Ts7QHerV6Egs8)ZjrVZWm
+o_sFAJcFg2J,~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0CeQ#md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[Qd?=[hmHMi?dJGt&lIdDRZIenO(ChmWqCi!ueI=6HiH[0o9GR8P8F)uAB
+EH$8MrHeKk$%%&\NfB$BHZ4E'KDpQ'KDpH&Jb+HuK7\]-K7\Z+rIOp!q18Kr"G))SJq<oQs+(0%
+qLf'*KS4u3L5#V]",D_iMZ/MBN/`jZPF8#;W3*8-Z2V$NYH=k)UnaZ]W2m),[C3NMYcb+1XJr(l
+TqS3TUS=EQqjd_WrgEeQ!1*VKqNLf=rK.&?!0I)=!06l9!g&J)rfR)@"-\n2PPg[DPld28Q2['d
+Q^F20R[]k>SXl:@S!o\0Q'I`)R@9M0Qi36KQN3EPRJ!!RS!f\6S"-%?r1<n[r1O(`s.]Og!2TRi
+!2f^m"/r3!Wr8t7XKAY.Z*L^C['d<N\@B,^]Y2%o^V7M!rP8KLrk\WM%Dg!%`Pf^4`5KX7aN;R&
+aSs6[`=Kl'_Sa=3aND]McHjnde'n<E#11]Cd*Bn[rlYGgc-FY^rm;P1e'caqe'ut$g"Y?>i8N_Y
+kj.X*p%eU]s"Wo1P`MZ1SXbhINJ<+:J<[+QG^O^?>\6ZME_oGWIX?Q>:JXqf;,C&HMMm=ILP1D9
+qh4WrNrK=[c,IE)UmCqG'pk;SR$a5,R@'J7S=,Y,OcYT`Mi!;iLB*"uLM:aLFEMePH$XjdIXm!%
+KSG8<M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\sXfen5Za@0M\[oGe^V@V%`5Td<aihoQcHsteeC<($
+f\5'7h;7&IiSrnYjlYail07L"m-X60n*ol;o()DErq6<b!;HHes7u]kr;6HjrVcBfJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0(JH"md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[QO7S-BMpe^ufr)3DhqbZf[qbmAipe^fa"#Vnj1B'0E2aBVo5X7Lt5!D+j
+4?GS`3BK;#5lX%O4[2+p:&[li5#"gKq,@/iqc!Dls&/hn!`Drqqc!Por`&nts&9)#<)Z`p<<#ks
+;Ya8j;ZBSo;Z'Go;H*Qopf7>q!*9%upf&)1<`iO2?t3bZAnPag@piVJ=]ed/?!h#OrauIH@:*>I
+?!LP3=T;P(>Q@t,=TDS&=oVV'=UJ84=]nj/='/U-=T2>(='/R+<rH%u<rH+s=9)M'=92Q+r`K"u
+!a&N*r`K/&!a8`0rE92*rETA.s',t=?sm;H?=$l>=BAR.r`fG,rE0&#!a&W0oiq?!s',M.#?tG<
+?!LW??2e11?iOI3?iOO=@UW\S@q9-LAHHITB)Q9@BDZ9CBPD3srbVRNrbhaSs).aO$uTlsChmd"
+BkhL&DJ]5d%;]p"E,TW4DJj<-ChmeaBb"loDJsK7F*2VKG'.qKFT-=lEcH&;EH-#>F*)PJF`qqN
+rcJ-\*d)XNH$XgbIXm$(LPq4XR\$7OX08h;\\,A1?WgE=r`:RK?;F3f90Pd?ImH+Y/M/h14ZkJS
+7n?'<3&``W3B9/^<``7!;c-@g:f.$dp/(_Ps6B1@r9F%@rTO:E%d)s:k2k^cjlGL_io/kSrnde6
+h;&"a'AD-lf[n^)eC;sqda?FfcHa\Zbl5ckb/qcHa2Z*;`;[XT_SQ5e&\brl]=Y_ff%H*p@:3DG
+=BJ`*=9D`/>$:i,%U*(?>?P*2<`W:%<Dujqr_`_mr_`>bBlS39Fa&(UH@1-iJ:W?+L51SAMi<[W
+OckroQ^F52SXuLJUSOcbWN*#$Y->1;['mHS]"G_k^VRe*`Q-'AbKS5Vd*^:keCN7(g=k?<hV[8M
+ioB+]k3(sml0@X%mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu-HkrUg)?s+142s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJPKp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[QqBQ8HWR[sDIr1!_To9oTFka2"/rKdVINf&qtP6ISUW2Z\grh9[kU7e*I
+S!]V3qkX[uV5C0)^;.O4l?S0aTC8HOU&(D`T:hkMT*:gWSXc1=pmMAUR[T_7ReiNRS-#:TTDkJ`
+U&L_bT`_$aUSRmc0rCkIWiN5&Xg#.@]>2J5eD'$Jn+#l4lg!ctj5AeNi8Wh\lL"*4o'u/9lg!Zo
+i8*/efaHE[ccs\VaN)BB`lA"r!Q)YO^B)']rjr6C\[_XJ"1GSBZMh$.ZMh',YQD#4Z21a2Z*LX=
+Yd(L@rj;a8rj`!;*OrSg\%&rY]"5Me^;@b)`5]pAbKJ,QaMbp1^V[nf_umoo_86,d!5\ZMrP/BJ
+!5\WLs2"fP^])"O_Sa=1`W!dm`Q#m:`lQ6Aa2lBEb0.uPc-FY]d*U1fdf.`.e^i='f[nd.g>1WD
+iT'%]k32g/"mYF>lK[^7lkJmVnF?&>naQ&:o(;VJp@e7Uq"jmer;lotrr0>*1"NV4`k9^F`UgO7
+U7Sg!hqsro`fXM`=Ho+S>bIabUT%I%=^bZA>-tTD[BHg;Z`^M$Y_rH(pYs$,_na.*^qdh(`PfX6
+`6$9Kb/V?8^:M%h[C!<HYd",3orr1NEcZ>GGBeF\I=6TqJqJc3LP^nINK90aPEhH$R@B\:StMdP
+Uo(&hWiW>+Yd1UC[^`l[]Y2(q_Sa@4a2lEHbg+P^dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*
+mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcFj3J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJMJp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[Qd?Y=4tJ,FliJGt&lIeeKnIe/'aIf4a$CMIHsD/F*6rd>r;H$ag^G^+@S
+F)uABE-chWH@(!dH@1+%O,o<+[VL#;K(4KnK`$K&K)($!K(airK)^DuK):,pJcLB$K)UE$K`6]*
+K`6](LB!#1Ll%#gM`?]VO-,ZpStr?gZa[HQZE^X:X/MnkUo()jXg#.?\$rfRZE^[=XJr%lU8"HY
+TV%jJStDUGSXc2KRLGUOQC!r(Q'@Q!P`q:/Onk+;O8k4BO-#HcqiClAP*,^+#*Y45PEM)mr07)D
+(7(;RR$jA2S"-(BTqS3UUS=EPR[KP2rL3hUR/N?RQC!u+qjI8Kr0m\Vrga%\rga%\rLa+`s.B@c
+rhBFf!2TRis/,dn!3#gp&ZVn3X/rG+YHb@=[C*KP\%&sG])K8=])T;E\@8rU[C?.Grjr*@!58<E
+s1eNJ%`-$#`l?*Bbfn>VcHab_r6Y\pcd:"acMl,qd*gFpf\5*8h#?%>gtglFiSrt^l0@X(nauSO
+r:Bq.hQ)j&SX#_8QG\i@Kn>#7VR:hoU2EV:7r`N@:]>_BI=V;ls&0;%:Q:<lMMHt@L4k9YK_:%Z
+rs/P`_SNXVQ^@]=".,CBQN!6bQ^F/1SXc.8PEM#gOH#-RLkg_>nqUt"EcZ>GGBeF\I=6TqJqJc3
+LP^nINK90aPEhH$R@B\:StMdPUo(&hWiW>+Yd1UC[^`l[]Y2(q_Sa@4a2lEHbg+P^dF6Uqf@S^0
+gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcFj3J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJMJp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[QO84cNO;>F&e;>sJj;><uX;>O2i;><ud;&D/G1,UsK2*aGn5<qIt5X%=n
+3]oMb3''/#5Rp(E5!;"m5>4gI9e'gL;>sJk;u9Pj;uK\p;uT\p;uT_r<W5tt;ZKen<W#hm;uTYp
+;uBPi;uK\k<W?)#='#9"qc"b>=&r@'=^59AAS5[kB4G@X?X?r>=BJ^2?!q)OAS,La@U]7C!F/h-
+=9_o4>?P'2>5hY8>$+j.=B\p5=]np2=BAX.r`B2&<rQ1p<rZ5*=BAR+=BSf*=9DW,=]kH#s&f,#
+rEB5*rET>-$!ptH?sd8K?s[(:=9_r5>?k?7=8l5"<WH5#=TDS&=oDP(>Q7t/>l@n,>lS%,>l7n-
+?iOF@?XR;N@UW_T@q0%[Ac?6:AI2s[AS,LcB4tsnrbMOMrbMOM")DXcCA_cSBP1pf@q&nXAnGUc
+B)?6@BF/BdBPD3rBP;-rrbMaTDK'Q7Er9tZFERG%%WZW4F`hkOH$Xg`H?j^ZrcoZ5H[U<lJV/W1
+Ll.4TPaS,<WN<A4\@]Jk`Q--GG%Ol\>lIeS<bP<'9M7W<94'tD9f"4T-p9XF1.Xr+77B-n2EEoZ
+3`]9[;c-Fh;GU3f;>*fdlMBfHm/$#QlKdd$lKRU!qWSRVl0.?oki_-kk2kaejlGL_ro+1Ai8<GK
+h;-lcgF:k0g"=p-f%&:!daHOid*L"_c-=JVbKJ&NaiMNC`Pod5_ns:,_8*k$rkAEFrOWE[gREFp
+?sd&=='GT*s&o8%s&ok:>$+s2=&i=%<`;pp;u9Gb:hjujF*)SLG^=^bI=Hd!K8#&8M2I7OO-#Ng
+Q'Rf*S"#t?TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]McHjnce'uq"f@em4gtgiFi8WeW
+jlY^gl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s5j92~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJSLp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qXDlDKLGlT:VYRSc"uVRe3$HR-0h/Q55XENJj!`P$k,aVl$8bU7n?VT:MOB
+S,ScXV5L2eVYm>#]Y;.pn"G5qT:_^ITD5&]Tq\6Srh'@eU7n=ZU&:S`U&L_[T*1aVSXc2GRfAlR
+Rf8cYS=Q1@rh01_18:J:US=NZUnsobW2Q\rXfeh1ZF%*P^r=OHgZ.VioCMJ>m-X'!j5K"Wj6,Rh
+m-sW=rq@r9oC;;7kMkCVhV-T2da67^b08)Pai_`Ha2Z*9_ns4(]tD"k]=PP_\$ra@Z2h0/ZN%3/
+ZN%64['R+<ZMUm0ZaI0I[f*`9\,<c8\ehun^VRh*`Q69KdFHk$f[S<pbfe/NaN4A$#faj&`5KR1
+_8-&bs1nZNrkJiV_SO((_84%-`VmgU`W*sU`sBc.ai_fMbg"H4cN)>kd/h\Frmgtu%+j.ag>(QC
+iSrnWj5^+!,NIeBj5f:_k32'qm-X3,m-X6/n*ol=o_%kKp%J1Wqu$Bkrj2VZ[B@K[dEfl5b,(i+
+]<TKC_lBo"?!</MQ'kr^TVSNc>?b6=?X-f=Za7'FYcb:9Xfq9!MZ4dhket?U^V[h'^r+%-`5B[8
+aj/,Q`P]R,]=tkd['[1=YlD!#Y]"N%FEMbNH$XgcIXm!%K8#&9M2R=QO-,ThQ'Rf*S"-(BTq\?Z
+Vl6VrXfen5Za@0M\[oGd^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60
+n*oi:o()DEo_%nNp@nO\s7u]kqtpBjrVcBfJcC<$jo9i~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJJIp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qWuW@qfq.qgnBiqLA9hqg\Nmq1&BordX]l$>jQmB5MF#;L<k?rd4Zk#'kH;
+FEM\Hrc&$dI=$>?HieYBI/]-/NOaIVHiATtK7a)T!.s]mrIk*$s+CH+KS9,Qr.4p$qh"`spO`Et
+re1<*qh+s'qhG-,)Ms?0Mi<USO-#KfQ^a\HY-kgP]!o#NYH4_$rh]q!X/rJ.[(!RC]*,[RZEC8-
+VZN]jUAghcT)bJ^TDkDmSXZ%8R[KM.QBdc$Pa%AprfR2A!0R,>s,[2ArfI5EOo:ICOoCOCPQ-gB
+PlI$KQMd*LR2MKaSXuOLUSb&mXfSP$VPBlZTUq^FS=H(<rL3bSs-NbOrKdSQR@4&CrL4%^SY)OG
+St2GNTDtS`T*V*`Tq\<WUnjjdV?!OnV?*Tnri#mtri,pt$`gA2YHbF?['[6K[/RK5[/[H8['R-I
+[f3]7[/I<6['d<M[f3`K[^W`V]=Y_h^:q@t_o0U;c-Of:dK%\od/MDoe'uqFef<;og=tHAioB._
+kNM0pkih9qlKmp,nFH5Fq"t$Xrupe%Q&qN!SXc)5SVVrPLPh>6Q@+:"9h8r:EH=oLI!pKor_<r&
+;c-@eMi!@LLPCM;KnK>WonAD*"mXISZE'AlQNWV@R$a6>QkYmSR%0_;R[98'OcPWaMi!:HL51NS
+LMq0QFEMbNH$XgcIXm!%K8#&9M2R=QO-,ThQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGd^;%M$
+`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60n*oi:o()DEo_%nNp@nO\s7u]k
+qtpBjrVcBfJcC<$jo9i~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJGHp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qW9.8P;kS;#X;l;#O5k;#O8a;".?Y;Z9Pg:_>QA1,1XE2`Euf5sRY!5X%@p
+r]C-@%6-C15X7V#5<h7o5<hmA:'bW):JXkd;,U<j;uBVk;uT_t<E)rs;Z]iq;u0Jn;ZKel<W5to
+;ts8i;ZTirrD`Mk#?Fo-<E)pt<W5tt<?bCB=&r@'>$G<@A7oXlBkCa[?<p`;=]eg2?!UcE@:EbY
+B)Z?I@q&kR>?P-6>Q.e*>5q_1>$4s0>$G6:rEBD-=BSa.r`T>*=T);%<`f,u&Q`(9='/R-=]ej1
+=BAU-='&N$<rc@t=oMS,>?Y68r`oG.%:<LN@Us(`B4PFY?<gb6>7"J9=BAR,=BSa-qc3r'=BSd1
+>[:V6>Q.n%?2S"2?XR8MrF-(CA7K.\@q&nWAH$0=A,p6@A-6CTB5%6Xqe-"BAc?3?Ac63EB4b^c
+AS(gN$>!g^B4b^cA7]Cerb;@H$Z'ZuEccGJGBS(NFT-=aFEMePGl2grG^4U]I!pKpJ:`H-K7j/V
+-%^c%KnbD>MN*^]QC=D<V5^Z*\\5es`Q#s>air)Ye:j8m='Sf*<roX+r_+.p6Ubi`2`r`B,r7\H
+3AN?]7R]d(3&E]Xr]C-\s&9/";,C+c;#F2a:]ThZm/H>Nm/H>KlMToGlMp)Okiq<okPaQCjVm4A
+jQ#:[iS`YOhVR)Egt^Z<g"G$0f@JL%e,IbtdEp7drQbGfrlbDdao9?c`l5m8`5BLl_?dun^q[Xu
+^:_/V]ElL*WISen='Ac)=:JD:=BJ^.=B\m5>?G'3r`0;)<`E!s;c?Okr_`;aDfKf>F`qtSH@('h
+J:W?*KnbD?Mi<[WOckonQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G\i^VRe*`Q$!@bKJ/Ud*^:k
+eCN7(g=k?<hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MGp%A%Pp\jmeq>^<gqu6NlrUg)?s+143
+s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf3VN.=o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qXSsEd38&TqJ%WScG>\S,f&VRe3$GR,4/;OcPEXPEV5:V5C/grhBFd#GRi_
+SXc+:R/Wr_Vu<J!Vl%2C^:fE_G)-'hrgj+^qOmk^rhB@brLs@eU8%@Ts.KCa!204]s.07]S,JcV
+S!s>GqjRMRrga%\qP!k^!2KOhs.p^4Vl6YtXfnt5Z*UgG]"Z&&ce%(<n+-)Ao'l&4roX7B)s?JM
+lKdj-p%\I`rVlclp@7J4jl>@Xgt:-)d/;3+d*L%_bfn8QaMu0:_ns1&]Xtbc\@8iOrNZR4ZEpmE
+r3Q=.s0D[0riua5ZF%$H[C?.F!kGhNrOMp=(VIJu_SX4/a32i[g>CoNjQ#4TgXjs%chu#tbfe2P
+aiMK?_SEt'_8=(g_uIUQ_#qQl`Q%nts2k5[!6G/[rlG,^"j>-7cHjl8dJqW+e'ujreC2pse^rF*
+f\>3<hYZ4-h?i-!j5oCckiqBurp1-^mdBT7oCV_Lp@n=XrViu"0tt!6^X1<J\EBuhTq8[5i9$T,
+[<d1T?'C^[?([jcUo7F#>%(cC>-tWE[BQj<Z`^J$Y_rH+rp7S:_S<t(_8*q+`5BO7a3)]ObJqN<
+^:V.l\@&]MZ*:C:ZLkD5E,fr@Fa&(UH@1-jJ:W?+L51VCMi<[WOckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3QT]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK
+!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+144s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf2YQh:o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qX,\B5DX:pOW-jpj_scs*sfmrI=`qpO<ZhC1h-qD/N-rH[L6fH?oL7$?^H3
+FE)A@I!^6hrd5'!I!h'<Nf7VYC3B3$oRd:"K7nr4oS!*oqh"g"s+1N/JqJ]-JUrE*qL\a"r.G'(
+qh5!'#)7nfL51SBrepf81Q@ETO-#KfQ^jeMZ+%9T\[SoMXfAA"W2Q_tXf\b1[CNue_o0R6_S3Oe
+YH=n+W2?A`T`1PlTV8'PTV8'PSt2FAS,Jc\Q^3o%PEV/mrfI#>rK@2C!KrZGOp$u3P*(n*P5^XG
+P*>j/r0@;Jrg+OjR@0P6S=ZCKV5g]([C<ZS['Hm9WMQAaTq_O[rh'FeSt)47Pl?pMQC!u,rL3_T
+".YpRTDb>^T:l1Urgj4aTV/"XU]7+kV5C*fVZ3J)VPpGmW2HMjVl6PnWN32*Yd"&1s0)O-Y5YU9
+Yd(L=ZEpmCZa7$FZa@*I[f!Z8\duHf^VI\%_o9[=bg4_ee^scPrmqD-g>(N?hr3Voj9t)4kNV="
+n+#u?o^r+T#PRoeq>0scrTF2/r0rqAQ(4>3OKsh#KS"oDXiu3ANF6%(9Q>,G:4.J:I=P*h9iFte
+:]?:QMuJG3LP>YZonAD*$09OT_QK;lQ^F*<QPu6ZR$X2.R@Bb;S!]M*OcYZcMi*@HLPCJ<M"HI6
+E,fr@Fa&(UH@1-jJ:W?+L51VCMi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3QT]"G_k^r""-
+`Q-'BbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<h
+qu6NlrU^#>s+144s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf2YQh:o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qW</9M\AYq,%&fqG@/gohb$Qqbm/c))X0*0fM$K2aKYo5sIOu5!;"g4$5M`
+4$#\,5lX%V4Zkqm9MS>W11*[Nr_i_mqGRAnpf%2l!*/tsr_rSkr`&r!q,RGorDNhu;cH^pr_`_p
+r_ibprD`Jjr)Netr`&_o$<1#*<*!('>@(`LrauRL@UEGH=^#$5=^1l1&7&UM@:a.fC2Ig&BOkOX
+>[784!*]>(r`]>+!*oM0$!ge?>$>'5>[1M4>5_P'=8Gtt=8c8$=TV].=o2>$=TDS&=8uD$=TDY'
+=oDP'>Q7q??!^iF@Us+cCM[m)C2%9i?sW\8s',D+&mA@;;c6Ij<``C,>[(E9=]np5r`on:?!^iC
+?!^fB>[:Y7?34MC@K'^;@q9-L@K9j9@fBm9@fBg8@fU*;B)cHAAGp$<AH-3@B)?6@BEVs[BP;,Y
+CB%rWBkqO%DJjB3E-$/FG^4W7Hi/-oH@10kIt<6+reCB*"bqegMMmGhNrP1TP*D6!R[g"GWN<A5
+]"c2'a2uKIbl5m6cdC7nf\3*s?!(B4='/O(=\VUa9Ku$BNBoQm0.f"24Zb;P84ieM&2uL*3]]8^
+=&i4!;,U4g:f.'ep.tqZlg3s'm/H>KlMg#NlKRQulM]uIkQ'fEk5FEAj9FZ(iS`YOhu;IFh;$f?
+gtUQ8f@SU(eC;sqda6A>ci;;hbmVb=b/qcHa2c3=`Phbn"iA*l^qmkc^](qG]`#MK][FE9BjtOW
+r`B/'r`K2()-C$C=B\p4>?G'4='&F(<`N't;c6Lj:f1*c;#F+#E,fr@Fa&(UH@1-jJ:W?+L51VC
+Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tE=
+hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+144s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qXJtF+&q?U7n9RT:_^HSXc5KS,A]TRJiTSRJ*$-QNE8-MZ/hN?_jQtVl-;c
+US=KUT:VRBrgEe`&#Z8#VPg>jVS9gZ^#,B/PQ%3SScGDYTE(\_U&^n^UApqeUA:M]TE1aZr1=%^
+SXfPGs-s=`R[T_7S"#rHScPIVr1X.bs.fOg/Z,GDWN3)$Y->1:ZEpsJ\\#VobL>5,lL496naZ#5
+l/q0kk32*rlg4$.oD&=^rt"ttn*KE,kMtFPf%/C#eC4EH"4biKe,I`,cHOGP`l,^.]tCtf\$`QK
+ZEjD7rj2^6[/RH9['R*G[/.-.[0X4M\@B)[\@B*K])TDj]=ktq_Sa=2aN`/dhrEncmdKW6lK-sZ
+f[\I#e^i:#e^MsncHF;Lrl+rYr5]#]`5KX7rlG8`aiV^)bQ#]`b5TT`bQ5u6rm(\odaQ\Ee-=IS
+e^N!sec+/"f)aOXr7hA.h;/(crS8:IiSrnYjlY^hl0I^'mdTc<o_/%Tqu-Mns"_g*\a[\caM$?7
+V4sTmYgCmnWPk'2Lffk/=^YC+U8Onn>ZkKB>[(F=Z*gmBY-P=9YOSiSs!.$[]Y_J#^qd\#`5KR3
+a2lEKbfn,H_na%"]t(PX[^**@ZEj,-@;g.+F*)SLG^=^bI=Hd!K8#&8M2I7OO-#NgQ'Rf*S"-(B
+Tq\?ZVl6VrXfen5ZEpsI\@K5a^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07L!
+m-X6?mgS^Uo()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s5s?3~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1\C;0o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qX)_B5_sEK(FQmJG=WWIf=ioJGOa"ChREuD/N5LHiSToHiJ?oG]n4OFT-:`
+I!U0eHi/6rOH5B[Z$^G9o7H[gs+L?)s+LE+s+LB*r.P$$qh"No!eQ&Wr.=m"pk/g)KS5&6LAlr1
+Ll.(Jrf$l:23*`YOHG]iQ^jkPZF79Q[^E?BX/W(sWN3/'Y-5%8\%KW!b0A2TaMY^#['[0CX/Dbe
+TqJ%VU'7<fUS=KVrh0:_$_<fWR?s2(P`q8mOSb1>P5UUDPl?jGPQ$a?PQ-mFPlR-LQQ;H[R@0M5
+S"-+EUSb)s[CNoa^q[Xr[^*$7W2?JjrMU(#V5']TS=#V.Q^[Z=rgsCdSXlCGTqVCV"JDH^U8.^`
+s.]UjV>d@lVZEZmrM]Xls/5stWrB'uXT#@!X>[2`YHY79Z*:L=Za@*I\%'#\]=Y_g]tV;!`5Ta:
+a2lEIcdC7of\>3;hV[8LioK7clL"'1oDS:`oCV_LrqHKhrqZ]nr;PIN1?tX"QaE0LR?F;)LP1;8
+M3jrdH^&JEB1R#`8l&-.I=HZ?:JOkg:f'rHM2I.FKnY;8rIsluNrKFSf?).AT9Yb1QN!9OR2D<X
+R$jD5SXl7;Q'7AmNf]6XM2@%BL5:ZXLLG+@EcZ>GGBeF\I=6TqJqJc3LP^nINK90aPEhH$R@B_<
+T:r!TV5L8lX0&P/Z*L^D[^`l[]Y;.s_Sa@4aN;TJc-FY_daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?s
+lg4$,rpL9bnac8Bo^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFm4J,~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1\C;0o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qW9/9hnJ\;>O,g;>O,c;>F&R;>X8f;$&R/1&a'22uZ)Q5X@V!5X%=n4$>Ye
+3BK>%5lX%I4UF>99hnDWAjoHlr_ibn!)iYl!)iSjs&8tur)E\ppf.8nrDrhrrD`bprD`eq!`Drq
+rDE\q<E8us!``9%rD`o"<EB*!!`i<$rD`br!E<(s<#/J7=^#*=A7f@]?XI)D>?P-4=^,*8>lJ"B
+@:X(fCi=<4D/3]k?t*SP>?Y04rEB5*!F/t1@/jR5?2e+/>l\./>6S25=BAO'qc<_ur`K2'"^"o0
+=BAT%=9)M&=9)G#=Sl8"=q=h@>?b?<?=$uH@qKCiD/T;l(i<u!@pi\O?t!MR@:<ML?!LN6;c$:i
+=^1i0#$Y55>$G9<rEK>.ra,P/rE]J2qHs>4@fBg9@KKtI@esO5@f9dCA7K.[@q&qX@Uf:Gs'u.A
+B)H9UBkhEuCMRa'DJjB1Df9T7EcZ;BErL+tFa&(VH[U?kIXciuJqSo9N/j$aPa.JuP`u*0s-!JH
+PQ$_MPE_>uR@Bb>Tq\<ZWNNP8]"Z#!`lQ<HcHjncdaHOke'ut$g>(QCiIYB>>@(H6<`Mjg:.n8F
+6:ag:3'f5K1akLK0f(OT7n6!,2`3ZY3]fE(<Dugn:f:.e;XmWalMg,GlMTlclKRQski_0mkN:pg
+k2k^cj5T%Vi8EMMhVR)ErnJ%=g=b02f%/C$e'landF$>?cQg`[cHXVXbKA#NaiMQD`l?!9`5BI/
+_8=%)^qd_#^V@Lr]tX?Vrk'T/b("5=AR8SC=B\g/='8a0=]\^/>Zt?6>$=s.<*3.$;c?Rn;Gd?i
+q,$ub@;g.+F*)SLG^=^bI=Hd!K8#&8M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5ZEpsI\@K5a
+^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07L!m-X6?mgS^Uo()DEo_%nNp@n=\
+q#C0iqYU0hr;HTdrdk*#s5s?3~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb2tZ_4o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_.@4sFb5gPUS=KVU&L\aSc,)VS,&KQRIlm/QO]+>NJNa]Q=6\iVPg5aV#I+g
+T,+#fSXZ"FVPg;fW2?GiVnKjZ^4a7FL&.DCTV8(VTE(\VUAq"fUAq"oUS=HUU7n6Qrh9=arLX+^
+Sc5,ZSc"u^S"-"<S=?&HScGD^U&LecUE-/,V5C,fW2co"Xfen6ZEppH\%0)`^rOdQi9'=krpTmT
+#Oh'Ek2balm/HGUnalPSqYq*)q"FFSnE]5qhqd#=f[naSf`0S&edp<^e^;[ca2Pp2^V.:k\?u+=
+s0VX1qm?@1s0Dj8[C*KQqRQU:._E@+]tM7u_o0L5b0JJhgu7AYlL"'0na#E!hqHc<gtgfDiS`YO
+h:pW6qpYeudaHLfcMl,ncHOGRbKTq0!m]-=rm1Sjrm;/&eCE1(g=tH=gY:H8rn%5(qqM/,rnRM/
+s4mY1#2\7qiSieVrT"CKkj%O%md]oBp\F^bV#N0ZYl)>]b/!GbV4sZpYJoA\Pb!Y?<fNB0R9<gg
+US=Zb>?PEC?<g^@ZaR9HYHP=:XmrWQrsJVU]YVD"_8*e%`;[Xda2lBIc-45I`594"^:C_\['Tb9
+!4)4$AT2X0FEMbNH$XgcIXm!%K8#&9M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\sXfen5Za@0M\[oGe
+^VI\&`5Td<aihoRcHstfeCE.%g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]
+s7u]kr;6KkrVc?eJcC<$kPp&~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_-1,TBl\TQnU^[ipj_CSrdXfqrdP;lCM@?sD/N7"IX?MBHiJ@/G]n4PFEDPB
+I=-HiH@:-eI!h$;Nf@J/Bls?+!/(*!rdk*$p4N$l!/CH*r.Fp!re(-%q1JWtre(3's+LQ.KnP-Y
+K`Qp^re:W4Ll%"IMi@Xps,R,?!0I2B*L*"cVQ@#.Za@'EZ*LR6Vl-PsY-5(7['mT`a3;g-c5"RC
+^qRRt\$E0:W2?>bUna]\Unsl_rhKIg"eqZ]SXPrEQ3<J:Ocbh*OoLUDPPg[EP5pd?P6@,6Pa.R6
+Q2[*LQiEHQRK&`URhMBdTqeKbYHbLE\\,Vi^Upt]Y,qW&!NW@$XpD,0WMZJcU8+L_V#R7kV#@(g
+U'76_StD[Lrh9CfrhK[lUnji`rh^""W2Q\qX/rJ*XT#:#WW9$pWX,Z*WN*##XK/B!WrT:#Y5ka(
+Y:Hi_Za@-M\\,Sh^VIY$_SjF6aiV]Lc-F_ce_&U0h;@5QkNhR+pA"I\rVa_81AI3!`g3$]Q,9#I
+KnP56PH;lMH#6AHBQ.s38kj\]H[^K@:K17i:f*.1N/NIGL5:S;re:!!NrKIYgs*aMUQq15Q^.Q;
+!1EhQ%@ETRS=Q.9Q'@JoO-#>"M?&J3L&d&$LLkFEEccGIGBnL]I=?]tK7el4Ll%%KNfT<cPa.T&
+R[]k>TV8-VVPgDnX0&P/Z*UgG\%0)_]t_A!_SjF6aN;WLcHaeae'uq!f@em4gtgiFi8N_VjQ>Uf
+kiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s6'E4~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_*pmf9h\>[q,%)gq,$f_r(uQRqbmDj"#Vkj1&X!S69db%5<_:q5!:tg4ZPSa
+3^H"r5<V1n4[2/)9hnD884ubT;YsDk;YF&h<!#ut;uKYq;uK\n<W6%t<VKJm;u]bp;uKSo;uK\q
+<W6&!<W,tu<W?%s<W5qt<W#ho<<cK,>[CcG@K'U=>[CcE>Zk-3r`oJ/&mepSB527#DfBZ5CLq'j
+BOkOXr`fD+r`]D.?2e4>?X@&G?=.#F?!U]?rEBS2=&`1#=&r@'=8c8$=oDG(='/Pq=T;P(>5h\(
+=p%u4>$Lu2)-pQU?t!SYB4tsnCM[j*C2%6h@UW_UAS#KQB*2XP?sWb8"'f/>?iFI6@/XC7?!LT;
+>5h_2>[:WA?XI2JqHsP:@U`hXAS,QRAH69=@ejO3@K^+I?t!ODA,g'>Ac?<?B)lZFC'\TkDJsH4
+EH6*uF8p@\FVK"CH$XgbIXZg!KSYSJPa7`,SXuMRTd$5(T:VUCS!o_4R[Tb;T:r!TW3!2.[CEla
+_o9[;bK\A[df._qe,\)!eHa[Xg>(QBiSsjs.^#=H=_q,@<`Nm8:/+DJ5=JG(69-tS,VqYJ4"`3X
+7n,p:2)RHV3]fE)r`&nq"Ahun:JgUZs6KXKrojFJros@Es6'FE&a/<=jlPRaj5T%Ui8<GKhVI#e
+h#H+@g=b-0f%&:"e'ujpda?Cfcd2U9s3:Sf#Kt93aN;ND`r<pW`;RRX_SO%'_8*k`^]2%G^&GYE
+^&GYZbftf\BOkUV=]S^.='8^0=B\d.=^:o/#?b,/<``:%;uT`!;c-@g;>F&c:M"KbEccGIGBnL]
+I=?]tK7el4Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnX0&P/Z*UgG\%0)_]t_A!_SjF6aN;WLcHaea
+e'uq!f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#
+s6'E4~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1\C;0o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_.m\)HA7i`U]$qeT`UmZTDkD]SGAZQRerNMR/`QSR-0eQOH#-^Od'4LUo1,h
+US=QYTVA'KS=Q.:Qi<iaV5C/frhg"7^V7COR=:=pTDbJ]T`:_]U&^tfU&^tfV#R1mUnso`U]-tg
+TqM=Wqk*t^T)>/VSGo)ZT)YG_Sck[ZTq\:\U]7,@V5L5gVl?YrXKA\1Z*UaC[C<ZW]"GhsbL>2'
+jQPstn*oo?oC2)-k3D@(o)A7^pA4I^&Gu+glfdHhhqm/DgY1E9g=cGW&_GU`cHF;K_na%$]t1__
+[C!:;[.q'/[/IB;[^EQR\@9#[rOMm<s1:S0^;%J"_SjC3a32]Re(<@2iT'+cm-O$%k2P:ThVmPY
+lgF92mdBK.lKIBmjlGL_io/kRhqd,CgY(62f@JO)f`'J(f%&=MedpEdg=tH?i8WhZk2tdcjPp0t
+r8Rb8!9!e6s5O(:!o`/"roF.@roFXPkNM-plg4'.o(DbQr;NGj1<$cJc-"/G\_4*\TV&[6iQn'd
+Y-Dr'?'C^\?)40gV5d^'>%(cD?!F\B[^**?ZEg[:o!!uN,2KlI^V.J!^;@k*`5BU:b08,RaMl*6
+^:h:k\@&`OZ*:C:o<E(LE,fr@Fa&(UH@1-jJ:W?+L51VCN/`m[OckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm^r"".`lQ6DbK\>YdF-Lne^rI,g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?
+oCV\So`Fj]p\ssfq>^<gqu6NlrU^#>s+146s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1\C;0o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_-:;[Cit5[K(FQhJGF]VIf=ioJ/W3;B5VO&;1*_<I!p?fH?ja[G'%eIEH6&H
+I/\HnI!bj?#EOt+NH]\dI/\]tKDL2sJcC>tKDpPrL&Q`+K7s2Urdt-%qLnZsrdt-%s+L6&reCH.
+s+Ul9Ll.+LN/`gWNK4"!rfISOPa\/<VlHl&Z*L_8ZmW2^Vl6]"Z*LaE[^j/kb0A5Xd*BhUb0%fD
+]stGRXfA=tVP^2dVPa<frM9[nSt;LBRJiHUQB[VsOcfU*s-*8C#*Y45PEV5pqNV#F1R=;kQC!o'
+Q^=),R@9S6S"-+DTq\<ZW2m&'Z*_!O]"#5WYcb(/Y-G=B\\#Jb]",A][f*Q2Z3mqCZ*1@5XfJD!
+WW&ptWt;;1WMlbpWN)u!XKA\1ZEpt<[KO"DZa$b6YQ(g<Z*:F7Y-"e-Y-5%3Xfeh1Yl(a.Yck:8
+rim`T['d?P]"G_l_SX4/`5]j=b0/&Td*gFpf\>3<i8Wqcmdp2M^Ag(iT9c"<S"#_+WJlRbK8#Sn
+RsfL6OB?-iEH=cKIXQQjInia5<)QUj:Q:6hLkg\<LkLG8L%L+[s!R['d_jM/Pa7Z%Q'do*R@'>-
+R$sM6SXYt2P`q5iP)bKYM26tBKS]5TCN"03F*)PKG^4U_I=HcuK7nu7M2I7OO-#KePa.T&R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:aND]NcHjnde'uq"f\,!5h;-uHiSrnYjlY^hl07L!
+m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqYU0hr;HTcrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_*gjf:JFV^pJCidr)!Ais&.QJqbe.d1G^pG2E!ie5X.Lu5X7Lr4?5Jb3W;)A
+5X@[74odbF5Q+:X4%<$B;Yj;l;Z9Pn;Ya8j<;BJk<;KVo<rZ2!;ufqp;ufhq;#jMn;Z]iq;uK\p
+<W,tu<W,tu<;]_r<rQ)&<)lms<E/rt"BSc3?!dD8s'[Eg@pW5=>$PB@?sd;L@qTRoD/X<.CMI['
+DJNio@UNMG>$G39?!^iE?s[.<?5-aQ?<g`@?!LT;>?Y*/=&rC&<``E&=85nt=8H&!=TDS%=nc,"
+>Q.k.?!dM;!aoGHraH+DB52-oB4bZQ@L-LVBl7m/DJO"dB`_pYB)ZHCB`DcNB4b^dA7K'F@/j[8
+?ij\A?i4=:@Us%^B5),[CBJ9aBP79T&nYcgB4YUaAn>L_A7T1Z@:Nk\rau4CrFc(Bs(;UNBkqO&
+DfB]9rGiouF)uGFF`qtRH$amcI=?ZuLPq7ZR\$4JVl-JmWrAstW;`[pVZ!@kVA-&5Z*_$P]tqV*
+aND]NcdC1je^i@JfJM44g=tE?i8WeXk2tdejK5=e=]\X+=B/@&:JFMT5t=[?5W:kr/2Sk@4"i<Z
+8Oc-<3Arep3r_8J=&`*r:f1+f:f?j]r9F=H!pJn5roaUMki_-kk2k_(j;$_7iSi_Qhqm5GhVHuB
+gY:H8f\"d*rR:hrrR)&#d*U+cccs_Ybfg".!m/O(rl4uW!6"lSrke]Os1nZL!5STKs1S]P^:q:o
+]Y+6WrO``S]"6&/MKEQ@EEH:D=BJX,=T2J'=;=nB>?Y67=]\X(='&F%;cH[o;Gg7fq,$raCN"03
+F*)PKG^4U_I=HcuK7nu7M2I7OO-#KePa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:
+aND]NcHjnde'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqYU0h
+r;HTcrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb2"^D1o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6?ta@uIuL5#Unn!brh9[lTV%jJSt2CApRCrGrg<YP!1<&<%$6U3N0BNn@&9g!
+WMf]h&tttkS=Q1>RAZs[V5C2hVl6N+rk8MnYBG\mq4I\[rLj7bU&L_bU&:Y_UB%+hV>m@hV$*Th
+US=L[U&L\bU&L\kT:VUESt2CBS=TVMs.B=as.9IfTqS3UU]$u>V5C/gW2co!Xfen6ZEppG[^`lZ
+]=l"taNi5dh;[P\mI0Z>p\""=jlc""oD\@`pA"R_rrN)trVmB+q=O4ElKI?hio/eNgtVh^rn7>(%
+F`YIb/V?8_8!^s]=GBL[JmQ3[JdQ6[fa(J[^Q.DrODm=r42j=!5&6C(r*l'_Sa:1`Q--Ec-Ohee
+CWI3i8`t`l0&',*p2\Qo(MqYrVZTiq"F@No'l,9md9B+l07EqjlPRaro4.BjlY[brS]lsiSrnYj
+lYajlg=01naZ)9n*TK.mHj6,lg*j$lg4$)lKda"l0@R"l0.?okiqBumI'H4nF?,Cp\OgdTDp^r]
+$SpJaiD*JZDF7e\?jrT`36>$>$4slR9*^!TVS?]>[1KA?s[,CZa@3KYct:;YcY,#Y_iA_iP*"@_
+#D.f_SsI4_oTsAbKe>Q`PfU,]Y_:k[^ETMYH[T&Ao;O,EcZ>GGBeF\I=?ZrJqJc3Ll%"JNK90aP
+EhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]tV7t_SjF6aN;WLcHaeadaZguf@\g3gtgiEi8N_Vj
+Q>UfkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6ir;?Ncrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6<a9*JDg-hdqh"NmpON9ni-tZTs+(,c$>=$gDJrF#I=-KkrHeKg$$UK5EcZ5J
+I=$;>HNJSCI/]01NFmlZEe3q9q18Qtqh+g"q1\j're1H-KnY3XK)gN%KDU>tKDpK&KDpQ(L%U0-
+Ll%"IN/WaUNfT8#OT1FZP*;,tS"?@OW2d#*ZF%$K[BHU.WNED2rj3cV]>2D/c-FVXa2c?JccX;F
+^UghXYcXt+W2QVjUSFXaV>d=qUS4<PS=9AC#*tL;P`q;orfd,A"-\t5PQ$jFPl6mNQ'R`&QN!3p
+R$jD4S"-"?T:_dMTq\<XV5L>pYHkOC[C!6DZ*CXE]YDDaa8a4$`P]O,^:h4m]Xk\a[^NTP['R'D
+Za7$I[^W]OZ*=52$F-nC['[9O]"5PgrkAcQ]=YYb\[]2\])B,S[^WcU[^ENMZa@*I[Bm3FZa-pE
+[C3OC\0/Ap]t_D#_o0O6`lH3Cb08/Wd*pOsg>1]Ijlbsto(Msms#&Z1Q_L(?R[K>:Ne`:>L5MYB
+Q[XO#8k2BlF%T5%I=6Hl:JX_b;c-@fNJrgSLkg\?L4k56oS/A*$09[Wgnp@%R$a06R/`WeSXZ"4
+Q'7AmP`:Z[M2I(BL@U+3DJsN8F*)SLG^=^bIXcm"K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6Vr
+Xfen5Za@0M\[oGe^;%M$`5Td<aihoRcHsteeCE.%f\5*8h;7&IiT&tZk2tjjl0@U$m-X60n*olH
+ncA@Srq6<b!;HHes7u]kr;6Kkr;H9eJcC<$kl6/~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!66q9d@:/=_apJC]`!)WYlqbl0Gs&(=)1GU^C2`<Q[5XRh&5<_7q4Zbbf4Zkee
+5sR\"5<qCt5X.q9:/*K39i(Xaq,78kr)*Jlqc!Mop/Cujpf7>p!*0"tr`/kq!)rko!`DusrDW\p
+r)N_sqc3Yqs&T,!!EN;!<rZ/S<`N7)>$G9<>[1Q@?XI5NAn>@R='/^7?t!DL?t!SZCMdm'BP(pn
+DK'K0BkLsc?XE_;ra#S1r`fA,ra,V0!a]/<r`]>)r`K2%r`K2%rE'&&qcEi$r)il"!F&b,=nl2"
+>Q.n-?2e.:?!^iC?!^lH@V#IL$Y3aXAS#RnEccDDErL%hDJa3)BP;*oC2.EoAn>Rcqd]qCAnP^c
+@:EaGAH-3VAnPdkCi"!-DfBZ5Ci*s&C27U$Chd_`B`Vs_rb)4B!G?-GBE)ZEC&_p?CMIQuCMRd)
+Df9T7EcH&<E,]f:EccGIGBeF]IY!-*M2dU^R\-@PWN<5)YHP18Z*L^AZa7'I\%95e_T'^?bKS5V
+dF6Uqf%8RRg&Ke,h#?.0g]6+.g'6?ghVdAQjSn6CjQ5I`ro4--?s?o8r`:XM;c$4_90bj9G"FYT
+0.8+p5!1JR1.Xl'6oR%_4$,Ja4',B]<)HRj;Gg4do25PQrojUMl0.?okPjWCjT4H&ro*t;i;MOE
+hVI#Ch;$c=g"=p-e^W.!eGdqsdK%\ncjJ+EcHXVXbfe/NaSs6[`WX9!_o0Ik_>qFK^]V?c^VBc^
+rOr*@rOXVl\[f5eaHh!c@<YmW='8X.=BSd1>?Y*1>[(?8=BS^,<EE1$<`E$s;c6Ffpe^i`Ao;O,
+EcZ>GGBeF\I=?ZrJqJc3Ll%"JNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]tV7t_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6i
+r;?Ncrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!6B4Z%+K9E.0rh]Xjs.fRf"JMK]T:Z%Qrg`kTrL3DIrKuu=s,mhMP*MA@V5C,f
+V50l^UAgi&T:DC@SscLSVP^8iW2HPj^;%Cqs-.trpn%PZr1X.bqP!n_s.fUi!McI`V>d4nU7n9T
+U7qRZ!29=`s.9XkT:VXHT:VXHTV)1Urh9@ds._NKV50rbVPgAlX0&M-Z*CXB['d?O\@T8a^;.Y*
+aNMlWf\PQMm-jN>p[[Y5kNhU-oCDJDpA+Xcrri>tpA"R`rs\l%p[n"DlfmQnjPSelgCr;qg=b*,
+dE]kS`l,a1_7mUp\[VOG"1P_H[f*]6\Gs,9\,s4P])B2>])TDB]aMQi_8=(,`5Ta<b00b-&^JhT
+f%Aa9jQ>XhlKdj,o_JF\rs8W%qtTs\p@IhQn.>$SmHs?1nF5u=o^VG>n*]ZCnGM_ZnFH8Hq"adc
+q>L*fpB(-`p\ssfp&XgVrq$0\rp]sX#kIT[p@nCZr;N)`1;^iu_p$6<q89&&Tt%APl/eY;a)llh
+?C%$_?([jcVQ*g(>%(cE>d^rH['Hp>ZEg^<o!"#O+6'rH^qde&^r"(0`5BX;bKA)RaMl'6^:hCq
+\[JoSZi73"Z#OZ#EH6/DG'A4XI!pHoJV/W1L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd1UC
+[^`l[]Y2(q_Sa@4a2lEHc-FY_dF6Uqf@\d1gYL]Ci8N\UjQ5Odkiq?slg4!*mdKW6nac8Bo^qhL
+p@e7TrqQNhs8)Wirqu`no_sFAJcFs6J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!6>$Y]SF*rXnpO`*iqgeWpqgSNok^NP]$>aKkD/X;iH[L3hrHf'$H$FRWF)uAD
+Ed`@`I!^8?I0b4^OH,=YG&;X!K)'usK)UE"K_gE#LAci(KF*9aKS+r1KS4u2p4E?sre(6(re:<*
+!/LH+$AXFpMi3ORNfK0]rfI/B.$BdXQ'Rc*S=cLOWN32,[(!KLXf88"YHbF>ZEq$P_8XL:`PB4'
+`6&#'&'W/7_7[:cZEUF2X/MkiV#I4hV?WikTq@mGS,SiZR@';*Q2[!CPlI$KPQ@&8qNV)IQ2R!M
+Q'Ra7QiEHQRfAi\S=Q7DT:l1W%%s;gVPgAlXK\t8ZaKe@'Y;#ra32cSdF-IjccsVRa2c0:_8#r^
+$bO!^]=bhk^;%J$^](nL]=bei^&>YN]tV1o^qmn+`r<pf`5BI1`5BI0_SO+*_SEn!rOW'@rj`WN
+\[oAa]Y(qm_8F41a2c9Bao0B^bRr+GdF?e$gtq#Lk3;:&oCi%[\,S;[S!^gSS=>\`R>?QML5D22
+_g['6>@;);EH=cII!pBjJ58p7<)QRiN/WXOLkpb=LkLJ9o7i;*"Q\4UeYW51!13\Ps-XRgR@0G3
+S=Z4<Q^*euOHYZ`Mhm:HreC!!EGf`8EccGIGBnL^I=?]tK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-V
+VPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]NcHjnce'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--
+n*fc9o()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!66q9jE9i+\ap/(T_peodB$8s[r2)[BO6:*t&rBLfU4Zb_d4?5Mc4$l1s5Q*kI
+4pOeU9MLX<:/V!hr_iSkrDNYmr)3MmrD`Jh"&r9#<;BPk<;ol'<)lmr;Gg:i;uT_r;uK\m<W6%s
+<<uQ(<`W4#<``E"=8u;%='5<%s&q*^?=.,OARJ_D='Ap;?X@#E?t!PWBkLm^?!q/VD/O<4D/3cp
+@q&hQ?=.)F>?Y37r`oG.ra#V2>lIt-=q4\==BJX,=]eg1=]ed/=oMM&=T;P&=T2J*>?Y81=nl2!
+>Q7t.>mObD?=$oA>$G;2?7TJpA7]@cB4u!rE-$2HG'A.RF`hbFDf0K2CMINpAnPagAS,UiC27U$
+D/K8d#&7jdC2.O"qeQ:MDZ4SXF)l8?E;jbUE;a\]DJsE1D/=$(CM`ucrbDFKrGDRN"`8-qEH6*u
+ED(7jE,T]8F*;bRI"$TsKSPGFOd2B,U8P&oYd1UD\%&uZ]">\m_SsR;bK\>Yd*gFnf%8O+g"P39
+h;7#GhVR/Ii8ESRio/hRhr+Ils5O(=s5X1?r8R_9$IkSQ>$k?6=B'!8r_+Y(6q1[46TJs7/2Je>
+3\<$U8OZ*:3&WZU3]fE)=&r6t;,L4g:fHp^"6o%5kPaNCjo4?@ir\6!iVqaIhqm5GhVHuAg=b03
+f@JO'e^XQH!n,KErQuA,cd:"`bfn8Rb/qcHaN)<?`Pod5_u@OO_>1nH^](tI^&5MF]=bbfrjr*>
+!4`$;$+\'DGAUc.>?Fu(=:eY?=]\a2>ZtB9=]\X+=&i?$<!?0!;c-@gq,$o`EGf`8EccGIGBnL^
+I=?]tK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]NcHjnc
+e'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#
+s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6C2%^7Lmt<?rMBgrUna]ZU7n:[T`1P_Sc"uXS+rHJRJN<?QO].:MNa9k?_s^!
+W2H;`UAgo)TpqRBSXQFQVlH\pWMl_m]Y;.r^Q<VpS+rWUT`:__UAU_aUAq"fV"CM`V#R1mU7n<U
+U&L_bU%k;\TDYAZU&C\eUSO^bV*1]RVl6VsXfo"8Za7$H[C3QT]=Y_h^V[n-`l?-Gdb*C9kj7j2
+o'GZ-mI'H5n*]Z6o_A@as8Mc^n+?JUqu7i;qY0[Qmd00!inrVLh;-rEh:gN4dEThUa2Q$9_SEq!
+\G`o:\Gir=\@9!I\c98?\H'/<\c')>\c02?]*#a\^VKic"iJ9t`lH7"bS&4JdaQaugu.2QkN_O*
+o(DeVrq$.&r;6?eqt^!XnaZ5Cp%J1Wr;Zcmrri>uqY0^_o)n[[qYfj^%K?>*rqu]kqYL-frVc_W
+s"i9ApWq(*a7[raUnG</`SojNW5Xp*KjKt2=^IkrUSk(o>ZtTD?!U[B[^`]KYcb@;XKV6#MZ4m^
+]Y21s^;7\&`P]X3`Q?9FccsSM`501$_S*LhZaR3FYcmW&Ao;O,EH?5EGBeF[I!pKpJqJ`2LP^nI
+NK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)^]Y;.s_SjF5aN;WLc-F\`daZguf@\g2gtgiE
+i8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s69Q6~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6>@;)[Fb#-urIb!!nppdkpj`<mqg[jZ#]+0cD/F2gI")'B!I9%jGl`/2rcA-\
+rd+]pI!bg>#`at-NfJ3qF+Eh5qgn`ure(6(!eZ/Zq1\a$rIsoto7Qpns+UH,!JcF/LB*).LBWKk
+MN!OSrJpl=s,m;Ds-3JI,FFslTqnWfY-PIBY-"e-Y-5+7Y->1=]YVS,_nEIc]#)J0c2Q$"bK%Q:
+]XbGUYH=k)W2HMjri#jp%&KbnTUq^ES=>t9R?m`7!1!MIr0@;Jrg!,A"dbOAR$jEBRg#=QStD[K
+rhBFd!McOkVbX1kXfnt8[^s)`^r+7;dF6_%g=k64f@SL"dE]tZaiVWE`501%_84"+`Q--GbK\>W
+c-FSXb0%fE_na%%^r"(3b08,Tbg"DVc-4DVc2Pp,bK7fD_o0L2`5BI._SX4.`5Ta:aNDcSdaZjt
+e,Ic-eCE.&gYC]GjQGgpn+-,FqYmc".'&cTSXc1;]VLI?KnkDIY/Pj9Qu5T09lY5I:Ode@It19i
+:/t4i:f..M#E+CnKntM<K_'tZrs.iEb1<PXQ'VE9s-WkSrg=LgR@9V;SXGh0PECrjNfAsQMhd(B
+L%:"2DJsN7F*)PKG^=[`I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oDc
+^;%M$`5Ta;aihoQcHsteeCE.%f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]
+s7u]kr;6KkrVc?eJcC<$l2Q8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!66qL!H:ARi];#X>f;V4hK1c$jDr\amE6:!k%rBC6D$T^@33]fDh69me%62j+U
+5"nXF9hmlG:K$a^peq)ir)<_t<)i]m!E<(t<;]br;ufko<;ol!<)Z`p;Z9Sq<)ross&K)"r)N_s
+r`&qtrDrr"rE0&#s&f8%!*K5'!`rE&r`1UR>$YHB@UWPF=Bf':?<gT9>$YNGAS#=U<E312Anu=)
+EH5r4BkLsc@:3GK?2e(.>QA(.?3=P@?!RA5%:!+@=]nj-='/U/>?b;1=o;D%=oMM'=nu:r>5qe9
+>$G6:?!^iE?X@#C>[@;7!+Gk:(hI>oC2.O%EHHDMH[U<hH?jg_GB@qJEcD"p->[F0AnPglC27['
+E,or=FEM_LG'.qKEGo]1CMIX%DfB`=F`heJrcA*]r,_mXrbhXQrGVRP$#ad&FEMeQG'.s,F=VKX
+G^=adJ:`K1MN*^]QC=D>VQ-f)\%0,b^;%M%`Q-*Cc-Obbe(*%%g"ZG[#Mn7ohV[5KiVha9iVhd7
+j8\*Aj5T(WiV_^6iW%j9i;qrsro,fqZXm6R=]nj/?<9lq9L1s6;1(Vf689oG/3Z0K0hFr+7n#Br
+2ENu]4$-MD<E)go:f:.e:\.H`k5XQBj9+H%io0mprnmb4s5!_1#M[tcf\"g,ec""se,@_odJqPo
+cd)O7"3es2b5THba2l<@`Vm^T_Yq=M^];4L_#M.O^q[Xurk86Bs1A<B$+mdZ\[]/Y\$iaD[3rVW
+H?!J;>$+j/='&L,>$G-4=BSg3>$P97=]ea,<E<+!<)Q[n;Gm3cqG1^@DfKc<FEMePH?sseIt3-'
+KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS]">Vh^VRe*`Q$!@bKS5Vd*^:ke^i@)
+g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+147s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu)C27pANrGsSV?<ZjUndp`s.KFcrh'4^qjdVSpmV#Hrg<5B)N^2APa%GuVP^>k
+VPU)aU8"EWT:MOCSXQFTrhp7*W2QVl]tV+o>i^3lp7DDZTqV4T"JMQaUSIgapSIhc!2][j"/DTb
+U&L__U&UeaU&UbjT:hjNTq\9Trh9CdrhBFfrhTOi(oF72X0&P/ZEggD['d?O\@K2_]Y2(s_ScAi
+$cU64eCrg@l0e*1n,)SXmcj!)oD8Id#5[iWn+6ARq>Vf@qY'LKmHWotjQ#7YiS`PGf[S?qc-4AR
+aMu3:^qRLo\[]/[\[qdN!kPqQrOW$@!P5o@\cKFSrOi0D,JLq._8=+.`5Ta:aihoQcHjnde'lju
+f\GBDjQGn!oCVbOqpbWLrVZQirVhBJmJf!'e,S(Eb/qQZ[\]^m\AI4K_6C)!@TSMVQ!.KuTV\EY
+WENM0@:*;E[C3WQZE^U=Za$_*Z&8PbkeFdI^qTfa)90Y4`Pfm@bK\;S`l5d0]u%Fm\$WWOZ*1A%
+Z!qQfE,fo?FEVkRH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]"G_k
+^r"".`Q-'BbKS8XdF$Fme^rI,g=tH>hr*GPj5f=ak32'olKdg'mf)Y_nF?)?oCV\Jp%J+RrV6Eg
+s8)ZjrVZWmo_sFAJcG!7J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptt>[hDcH2`KpKD^>kJc1,gJ*qarChm[#DJa9=I"$NkI!^3drco?)FEDPEEdN1^
+I=$?iI!pC'O,]/mW,-a1rIP$%r.=p#rIY!!rIY$$",);ZK_^?#L&d#.L&m'apOiU%KS9#Ns+LB*
+"b_S`L5(K_LAco-L]rZoMi<XTrJpl=rK0U5PE_;sQ'@MuQ^XSAV5^Q#Za$d=Yd(I;Ycb"-Z*q?a
+`l5["Za@3T_oU$Id*Kt]b/_E6]!o)QYcb(.X/`5#WMl\jV5'a`TELjWS=5lFQN*3KPlR-LPld8:
+Q2[*KPl[2;r0@AMQMd'`QC+).R[]h<SXuIHTqS3VUSO`bWW&h4WN<8+Yd:gN]YD;%aN`2ehW!ST
+iSi_OrS.>,&_l$keC)^icd'k`daZn%gYL`ch>c4Df[\Bqbf[uIaihoRcdC4jeC2mreG[o&eCE's
+dEp4crm(Pi+jeWbdaQ[ne'ljuf\5*8gtgiDhr*JRjQ>^nn+65Hq>:,lrrgo]UY2FARk0o.P)+jH
+Kp8O$Q@=C$;+52?E(`u#IXZZmJ58s8;c6FgNJrgRLkpe>LkUQSLQ;B>mbZ1<X-]*;rKmPO!1EhR
+'UkM\SXl49QBIDlP)YHZM2R1FKnf/R@Vp"%EH6/CG'A4XH[U?nJV&N.L5:\EN/is]P*D5uR$sM8
+StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@\d1gYL]Ci8EVTjQ5Odkiq?s
+lg4!+rpL6anac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#s69Q6~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptb77^'Hpegc^pJCogfhhr21G^mG2E(P$s$6QJs$$HF"Znh04$#J%5Rg"G5X7Os
+9h\2S.8il;mo0'\rDWYos&B%uqG[5i!*0"t!)rkp!)r_nr_rbns&/qt<W5tl<W6&!<<6-%r`0)%
+=BYN'r)Wl#r`K8'<W5o#<**1*>@%28ra%$\?!LK2<ENO9AnYa_<Duk"?Y!keE,oo8DJa-$A7AtU
+?sm;H>[CcF@/XC4?!RA5r`f\4>$4p/=^##->Q%b*=Sl5%>?q#/!F/k)>5qh+>QA(/?Me(0@/XI3
+@i/`fB5)*qCM[p1GC4mkJqAQ*Jq/5sIt<1MJ.@$TH$=CRFE2DCFEMhTIK"a2JV&K)J:)ZfF`VPB
+EcQ5CFEMeNGQ)daGQ)dbF96N*FSp7]G5c^pGBS.PF`qtRH$Xd`HiACAI=?ZsKSG>BO-,ZmR\$4L
+WNEG4\%BAj`Q60Ec-F\`daQatf\,$7hVS4grS[V4s5O(=rSmk9!oi8"rS[n;iSi_RrS[\4rS[\6
+qr0!`mW!&OG$.mK=BAX%9h\5F78$3F3'0)L,;MDD0/>:R7n#j92`<Sn3X\#N<E<$r;Gg=h;,d'`
+#NXq)j5T%Vi;VU6hYl7DgtUQ9f\"g,e^i:#e^W*teC2mprR(Yl!RK'jblQ&3rlY8_rl>;a`l5s:
+`Ph_l"2Vjj_>1nH^](tG^&GYT]">Sc]",A]\[],X[^NTOrNm3D]sW6.ASt^T=BSd/=]eg1>?Ll-
+s'$";>?Y02<``@)<E)pr<)Z]h;#3ssD/O<4EccDHGBnL]I=?]tJqJc3Ll%%KNfT<cPa.T&R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9U8aND]McHjnce'uq"f\,!5h;-uHi8WeXjlY^hl07L!
+m-O0>mgJXTo()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$l2Q8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu/AT;jFPkq9VV>m@iUApqeT`:VaT)G5[SGAZMRe`BAQRe/XM3F3j@&9`uW2-2`
+U8"?VU7@dFS=5nGWi2kqWi2koVn]sY^Ak9dQCdiCs.B@cqP*tarhB@d!2TOh"K&#lVPa?jrhf^l
+"/M]dU&L_WU&UecU&:YaUB%%eU]7.fV$EouXKA\2ZF'V=s0a5`\[oAa]Y;1t^qmn'^VIY(bL+ko
+hra1knFH/>nF?&;md09/q#:9urV#jTqt^$`q#;--q"FCNn*K?(kNCmbhqQi7daHOkdEqm<#0b3/
+`5'.$rk&<G]=[pNs18KJ]=Ybh]=\'Trk0Ym^VIY$_SX4/`Q#p<aihrSd*gFoe^i@(g"bHBjQ>aq
+nauSNqYl'G\c4J7s5hGJb/X%nWMH<!ZHqjdQ_20LF,=7hRp0-jU8+Ta=^,$;?XI)C\$``RZ*:F>
+Z)k/$Z&8Pfm`2uV^V7M"_8cJm'uS)7air&Sa2Gm1^;@Rp\$`WPZEUS'Z2\]PE,fo?Fa&%TH@1-i
+J:W?+L51VCN/`jYOckroQ^F52SXuLJUSOcbWiN8)YHY==[C3TU]=bkm_8=.0`lQ9FbK\>ZdF-Oo
+f%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcG$8
+J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu#>\%PiIJSTkK(OWiJFS-ZIL9k)Ao2F';1*e>IK"R%H?ja[H#n(LF)c5JIJnQl
+I0bpqN/d"WEIEE:K)L?%K):2oJd-jZJqJ]/K_pK'LAZf0L51P=L&$E$K`Hf&K)gT(K*I!_Knb>9
+L&Qi,LB*),LCK&sMi<USNK0$[NfT9`r/prA5a7OuP*(roR@TtFV5UK"ZEgjEZEggBZ*1=:]Z%t4
+_nEUk]t:kj`QHELcHjh`bf7N8^:^q^ZELI7XfSP$Vl'Egs.]joUS=HSS=H%8qNh/HpQckeQC!o(
+R$X2,Q^F/.R@9V7S=Q7DT:hmOU84W^VlBWp-*+,MYHY=@\\,_q`Q6<Qgu7G\lK[Wtk2bUdkiqBu
+lfdKmj5JqphuDX;ioB1brojjTkNM*iio&\Lg=Y*1rmh/&f\68X$JaImh;$c>g=b06rnIt;gtpuJ
+ioB%YjQ,FbkPjZSkNM0qlg=01nalGKqYd5i"5^!+WrAJ'R_5/ILPCP@Qc?+QH_G(TB2!;d929s8
+I1q'):JOkf;G^/JMi<RMLPCY@L5#8TNrK^Yhp00DQ^*l'Q^3u*R@'A0R/WNcS=Z7;QB[MnPE:c^
+MMd7FL%'ltDId^+EccGJGBnL^I=?]tK7nu7M2I7ONfT<cPa.T&R[]k>TV8-VVPgGpXfek3ZEpsI
+\@K5a^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail0@U$m-X60n*olHncA@Srq-?d
+p\4X]s7u]kr;6KkrVc?eJcC<$lMlA~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptc7nQKM;#4&_;"dcc;"@K`;!h*t1bpjE2`<Q\5smq'5<qCq4?G\e4?GVc3^Na1
+s$?ZMs$$EV"AY1S:Jg%Lr)ESmpf%>q<)cfn;?0Yn<;fbq;Z0Pn<:s5k<rQ+s<rcA%=oDJ%=8c8#
+=UeJ6;c6Ij<*!(&=^,0>raPn9-"((c>$+j/?tO.e@pE/>?<pfEAo)@%D/XB4ChRBlAn5C\@:*C@
+@K0[7?N"1/?4^CL?sd5G>?Y37>?Y6:>?Y5+=Tqu5>$G39r`]S3?!CK:>?q,2r`oJ/ra,S2s'Ph9
+raGh7/n&4!A7T7aBkqR'DfU,RKo(_JNK&mTM2@4QOHGZgOH#-RL4b)0JUrH)JV&]8regc8rf%AG
+M26n>Jq/;uH[9s^H2N$hHN/?lH3SY>GBS4VH2`-mI=?]trIXp!rIY'%.#!G5MiEg^Q'e&5U8=ll
+Z*_$R^Ve%3b0/)WdaZk#g"P38h;-rFhr+Cks5<n8"5r(pi;VX6h?)Tmhtl40htl10h>Q13hr*Gj
+iW%p9j8\0bjjSWcE)g"A=BSp19MJ/G6Uu<$6TJ1&/MeqA4>/E[8Oc-;r\j^:$T_9e<Dudn;,^=g
+;"RWbiW%gHhqm5Gh;$f?gY1?5f@SU)r71hss3hA(e'c[ld*U+acd'f7bQ>u1b5TN_aT'<[`rF$X
+`;daS_Z%CH_#D(N^:h7or4N$@rjr-?$FmRT\$i]Q[C!9Hrium9^:J]5Am\_D=Bb],**?9G=^"s0
+=Bo'5>[(<3=B8O+<E)pq;c6Lj:Jpsbq+q$.A8lO/FEMeOH$XjdIXm!%KSG8=MN!OTO-,TiQ'[l,
+S"6.DTqeE\VlHf"Y-5(8ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:keCN7(g=k?<hV[8MioB+]k3(sm
+lKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+148s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu4C3+`YT(o2^V$*ThUS=L^T`UmZTDkG]Sc>5SS,8ZNRJrTIQNND7N/[b$!emJJ
+rhgd2V59r]Tq@jFSXl4JWi2nrWiE"qVS'XU]o(fnMZ04BT)t[ZU&(M]UB%%eU]7.gV>@(hVuNXo
+V>m=lU7qRZs.KLgTq_4R!2BIf!2BCdrhTFf(oF73XKJh6ZaI6O\@8rX]"5Md]Y;1t^:sT](r!Yt
+_o^0Ne_8m?lL+33nF?&<naZ,>p\t-k#Q+H!rquZjrV6C&rquTbna>`.kMtRXgY19WeGmu,eCE+!
+dETeQ_SX.)^V0QXs18?D]=e-V"MVR_]Y+6W-GI70^qmk(_Sa=4a2uHGbg4\beCE1(g=tE>hr<\X
+kj%O(o_A@`JcE4Z1\(58^s1'Eji=O"V7O4WiomnK]prJ^=H]%T?DO<lVl?V">$>?A?!F_F\[8ZI
+YHkL<YOo)WrugdT]tM1r_84".a2>m6aND]KccjGJ_n`t&^:Le]\%&dDYk#&=D/O93EH?5FGBeF\
+I=6TqJqJc3Ll%"JNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o0O7aND]McHjkb
+e'uq"f@em4h;-uHi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$
+lMlA~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu$?tX=uJG=cmK(X]fJFS-_IO]5OBP)*uDJ4EEIXHNgI!U*aGBS(NF*2MNI!^6h
+I=-BhI#a8ING,S4G5d'jJcLH&K)(&kK)UE&K`6])LA6Q(LAlo+K`$N(K_pE%K`6](LAur-LAZi,
+M#W81M$/]oN/WbqNrG+>OT1IAP5UUEPRit@Ocu*!R[ftBUSb,tZa9V;6aa8,[CjH!b0%cC_o0C*
+]tVA(bK\;Yd*L%^b0%`=]!o#MY-"b'W2HJgVPg>hV5:&eWMcSfTUq[CR[KP/QBd`$Qi<<MQiEBN
+QiEERR@*u?!h#LGrgNtZStH"T4JALEV5C/gWN3)$XKAY/Yd1[G\[oPpaj&8chW=(lo()>?mHj3/
+nac;Do^h\DnaZ)7m-X92nF,`3naZVLrUCEfn*]W2lg!]qj5JtTi8N\nj8\*_iS`SLh;7#Ij6#Og
+lKmp+n*ol<o_%tRq"FFSo_%tSqu-Mbru_$Kah="1S!pIKN/3=FL6\shN.$e/:1Qn9E_B2WI=D0F
+s%a/";c?OhNf8pSLkpe>LkUQTLQ;BWpuKf>YFCiDQ^F,,R$jD2R[BP4S"$">Q^3l!OHYccMuJS8
+LP:KQLN.0KDfKc<FEVkQH@('gIt3-'KnbD?MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS
+]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tH>hr*GPj5]7`k32'olKdg'mI'H3nF?)?oCV\Jp%J+R
+rV6Egs8)ZjrVZWmo_sFAJcG$8J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptc8P;iR;#!o`;"[]];"mia;"@Hh2Dd3F2)[BT6N'.j5!M4p4?P\f4?GVc5X7P!
+5sR\$5Wh_692.-J:/OpI;ZKeo;tj8k<W?"t;?0Sm;ZB\p<;'8j<!6-!<E)rk<W,u!=Su>#=9;Q+
+=oMM'=oDG+<Dudo<EB'"!a&T4rF5e8(gpZT>?bKHC27Qp@UWbT?XI8RBkqO%Df>Pj$>X9b@:3JM
+?sd5Hr`oM1rEg(C@Us(^@pWJI>[(E;?!CM/=oVY,>?Y2/>6J28>[:V4>6S89>?kE=r*BP6?smDO
+@fBd=@UW_TAH$0?AdrKmEHHDPK8PbSQ^4#)rfn@gS"6+ASXc4=R$X,%OckolP)t]dQ'I]'R/NHQ
+R/`H_Q'.5gLkLD2J:E*#It3#urdFosI!Ya:&q#.ZJqSl7M2R=PN/`jYOcbfhrfAFhPEqW+SY)XR
+WNED1[CElb_oBgAc-OeceCE1'g=tE=hVR/JiVqj6is"H$hqd)Crn@V3gY:H9g&0S(g]#q+g]?6d
+rnRS2rn[V2"Q/.qiSj[n390)\jlYahkiSm\EFDsO='/F!9he;H5t4e=6odRi.PrP:4>/K]8Ol9=
+7Q<7_4$,Pd=&i7!;H!Kk!Dl_e;%;F>h;-lAgY1?5f[n^*rRLqtr6t\ormCbm#LC]?c-4DTbPoZa
+aoBE`a2l="`rF$X`!F9!_ns7+^qde\_#M.M^:jKXrk&3A!5&6As1/0>!4Vs9"LYVC[']h<s02p7
+]W-d0B4+nG=Bb],(0FX@>?Y-4>$P<9>[(B7<``='<Dugor_ikq:f@-dq+l!IDJsN7F*)SLG^=^b
+I=Hd!K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`5Td<b0/#Scd:(g
+eCE1&g"P3:h;@/KioB(\k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu-HkrUg)?s+148
+s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu4Cib&cV=g_cV>m:jUAgkcT`:VaT)>/WSGAZRRe<'KR/*(#OHPWiQC)'VVPpDk
+Una`^U84KUSt)@AR]<BeW2Q_pW2HQ.^:_1]S:?iqSY#VKs.K4_q4mtc!2KIfoqq\a!McCfU&Uke
+UB%%fU&LbdU]-tpUS=NYUnsl^UnjdbU`-),V5:&cVl?`!YHbC>[C<ZU\[]5`]=Y_h^&5SF^V9]\
+'u.W)aNDfWg#(lSm-a<1nF?,Ao_AC[rrW2uqt9t4r:TRIm-3Tih:pW6eC2mrdaHUqf@em2f$i!i
+aiDB=_7oo^rOr9Fq7[$G^;%Ct_>_=O_]?_:aihoRc-FV_e(*(&g=tNCiSrq\kj.U%mIBrJJcE.X
+1sc3fcHje\ak!hrUnkKBj2n4%_M_`&NF%m=@9]D$USXqn>ZtQD?X0tI\%&fLYckI>XfqB%MuO:X
+cFpp,^qmn)aN29:`6&#%s3;.s`l,^/_S3Uj[^WcPZ*:G&Z=dujDK'T9FED\MH$XgcIXm!%KS>/:
+M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe)`Q$!@bKJ/Ud*^:keCN7(g=k?<
+hV[8MioB+]k3(sml0I^&mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+149s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu&@:sJ%oRm'no7?OanUL@`.Vrj7Df'DjI!g?iIX?BfH?jd[G'.nKEcQPUI!pEj
+I=6KkOH5B]J9u3_rdjcpqL\j&K7iuOrIY*'rIt9+q1o!+s+gW/!/:E*r.Y*&"bhV_Knb<\L&m'a
+re1u>LPU_@LkpnELl$tHN/WaUNfO+"s,[5Cqi^oArKK@,Pa%H!Q^3u-Sti6cYd(L@['dBO\%T]$
+cHjk^bK@rG_7mV"`5]pBbg"GYd*^1\^q-t\YcXq(VksBg(T""+V5:&fWiW8$W2?>`T:VR@Q^3r(
+R.cmHR/`QUR$jE?S0X\uTq\<VUSFZ_W2Q\qX/rM-YHbF@[^`fV]u.q<e_K0Jmd]oJp&F[aoD\Fd
+p\+@TpAXdsp@\(Np\F[]p\F[]q=sa\rVHQi#l+/fp%%YAn*^2B#OCU<ki_0mkPXENkj%R(nalGH
+p\4IYqtuHR"6uW:Yl:.3S!p.7M26n?RB;^&IZA,:7VPS;F&5PYIXHNnr_F&(;c6GON/NUOLkg_A
+LPCNTLQDH_r8lAFZ(72HR$X/,R$sJ3R$X50S"#q=R?s5'P*1reMi*CMLPCP;nq^ppD/O<4EccDH
+GBnL]I=?]tK7nr5Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$_o9X:aihlP
+cHsteeC<($f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$li2J~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptd85)`SnkoB_o259ZqGI#aohc,T1Gq$K2E*rg69me"r]pKG#!G%14Zb\cr':9K
+$:$g>:/">U5"8=Foi(lgqGRAnoMbcfrDNeu<`N/r<!--";c<Tls&/eorDWhs<)i`ns&Atrr)EYq
+s&Aqs%oub5=BSg1=BSd/=]nj.=nu2"<[^sI<E<.#;H-[u>$YKD@U`bR?t!GM@V':jChmd"B4bX_
+@:3VXBPMA_D$b*!F)l/1@q&kRra,M.!FB15?O1(MAnP[b@UNRA?3=J;>$Co."C#&4=^(f-!Er_,
+>lS(0>l7n->Qe>=?XI4??N4C;@:NeV@:NjI@io8pB4YR_B5DR2H[pj2P*h`0T:_gNTV83ZVPg;f
+Undp`%ABGeTV/$SUS4HXU8"I_V>d>.UnXNRS!oV)O,T!SM2@"@K7ec,JUi6"rdH_UKSYMENK0'_
+Pa7]*S"-+EU8"EYV5C2kXg#+<[^`r^^V[n,`lZHMdF6Xsf%Ja1gYCWBhu;R6iVqj9j8S$BiS`SJ
+g"4dQe-=COeCE+#ec+&'e^i='f\+s4rS@M1rSRY5!9*h7s5X.?rT4(Bs6'[Ol\Jkq>Zq&.*a2K;
+9MA)F85;K72a/oD,;Ui54>S]`84H$;3ArfWr]:6`<E)prr_`er;,Hj]s4RV/f[n^*rRLqtrmUho
+rQtkscd'k^c-4E2bQ#]faiMTFaSj0Z`W=&srl"rW_o)Gis2"`Nr5&EK!l)I`rk/<EqRca<1V(*-
+\[]2Z\$i`Q[C!<IZEpjBZ*CO:YI^iqG%kAg=BSa-=]ed-=^,'5='8^2>$G36=oDD.<Dugo<)Z[m
+;,HgZB5DF&E,fo?FEVkRH@('hJ:W?+KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU
+]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nc&([oCW%T!quB_
+rV6Egs8)Zjrqu`noDX=@JcG'9J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M_'DfpZ!V=g_cV>m=mUS=L]U&UbcTDbAZSc##RS,/NQReiHMQj]"9N0]cp@ATp"
+V5F6e%AKVpTUqaFSsl[YWiN)tWrK"&]tD(m]r6.0rgj(\pR_M[TqVFZr1a=fUSIX\s/#Ierh]Xj
+"/DTbU&Le]UB%+gU].(hV>@&(Vl6PlVP^8iWiWA,Z*L^D\%&rY]"@pR!589D!PcAI]bJ2r_8F75
+cI:J&i8`talgOH;p\Om`rrrAur;HTnrr)lrrVn)@q"*t?k2Y=Pf@A<qc-=PZcd:.mgYL`Bgt:'#
+bK7`A_8-&brP&9G!5AEHrkKeq_o9X8aN;WMcHab_d*^:kf@\d2hVdARjlPammI'?,mIU/PJcE.X
+29>ghgsFEobk&?EVQ.24cg0#cW/bPBLgZI9>$[eqUSk(p>[(ZG?X6mD[^icNZ*1I>Yck;(ZA\_m
+q:3*k^V@S%`5p$>`5Tjsb7W"Aa2Pp2_8*[l\%&rSZ*1=8o<NFQCi401EH?5EGBeCZI!pKpJqJ`2
+LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]McHjkbe'uq"f@em4
+h;-rGi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqY^6hr;HTdrdk*#s6K]8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M4eA86.5oRm!lnU^=_npgRd$>XBiDJj;iI!p?hrHnNh#C(E9FE;JNI/\QnI/eU"
+O,f9\NIYbbr.4ToqLed#s+C3#re(3're:B,pkSj)s+gW/",2D^L&Qi+K`Qp`rJ(9+"c.qhL5(K]
+M#E21M?\utN/`gWNrG+>O8tFAP5:CBPl-_4P`q8nPF%f5Uo1/mYHY=A\@TGnaNr8^e'H:bbK.Q7
+^;%J"_8F73air/[ccX,;\?rKAWhuVfTqS*PU8+HXUo1;tricU.Vkp)ZSX]SFpQtlHs-X1^S"#t?
+SXuIHU&LhqUSO``Vl?\rX/rJ.rim-C[C3QP[(!cfaN`/ch;RP_nauMRp'LKhq=saYp\+=TrqHKf
+rqQ9a!W)]jr;QR#qYBs]p\+7OnaPrFm/QDOm/QGYmdK`>p\F^arVlePs!%H8hmB/KSXZ+cP)>$Q
+L5M;;U4@c5;da33EH=fLI=6KlJGr=R<)Z[l:l^KoMMR(CKo#_^on\\/#kR-,`3u>)Q'_H:s-a(Y
+R$jA3rL=.^Q^3l"O-5K^repf3!elAao8%I'Ci401EH?5EGBeCZI!pKpJqJ`2LP^nINK90aPEhH$
+R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]McHjkbe'uq"f@em4h;-rGi8WeWjlY^h
+l07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqY^6hr;HTdrdk*#s6K]8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LM;8PDlTku%IWpJL]^rDE8bpe_ha1,CgH3&O#h5sR\"5<_:q4?GYh4$,M$5Rg"G
+5X7M-9h\8U6VU?Soi(cdrDW\pqc!Mos&8hns&/nsr`9&!qG[Sr;Gp@hr_i_opf%Ap;GpFlr_rqt
+<)icq"&r2u<;ol"<``@)r`T8'rE02(=',3"!`rE'rD`hsr_a&%='8a2?!guG@/aU:@qTQUDAmA.
+CMINp@UNSPA7T7`B4u$sEccA@C1Uj^?N+47>?kB:=^,22?34JCBDlKEA7>IE"(#5:>Q.e+>P_J&
+>5hb(?2n72?2n4>?XR8K?sd8K@:E\UA,BdaAnPaf@UNVWCN"9=I=d66P*_`4USXldWN3)"W2HMg
+USFW\USFW\rM0@drhKLh8>`5ZUS4?PSXc.9Q'7DoO,SsNKnP,3KS+r3L5:bJPEhN(S=Q7EU8=fg
+XKJe5['mHS]">Vh^VI_(`Q-'Bbg"GZdF-Oqf\6>Zrn[V2!9!b5!T;r6i!\N%hqm)>e^Ddhc-614
+rm(hsd*U1fe'utJfEKs_gtgiDrnd_6qVqG5s5a4ArT=.Ds61orm%mp<>?Fp.=^#B59MA2I6UuN"
+3'9/O/2Sk@4>/E[8Ol6=2`<Vo3rqH*r`&qsr_`hp;,U<a;%)",e^`0ueC2jpdaJ*A#LLlGd*L%`
+c2PrebPfQbaiMR%a8X*V`Vd[S_uIRR_u%:P_8*kc^]2"M]t:nhrO`*@#eR[Z\[o>^\@DLHrNu^6
+Za9Y:riuL-/$H+][t&R9?X?o>='/X.=]\a1>?Y-4=Bo'5>$>'1<`iC&<E)mr;c6Li;"@D'CM[m,
+E,fr@Fa&(UH@1-jJ:`E,L51VCN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_SX71
+a2lEHbg+P]dF6Uqf@S^0gYL]Bi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7TrqQNhs8)Zj
+rVZWmo_sFAJcG'9J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Me/EdEM4V=g_aV$!NgUS@^\s.K@`qk!VRr1!YRrgE_RqO%h\P`UrlS!B;8Uo:8j
+VPF-b#Ge)dSt)=ASGoMuWMlepWMuc/^:h42P(&SlSc>;VT)kUYrhB:b!2BIfqP=.foqq_bs.f[j
+UAL_bU]@1dV#R:nVl6NmVu`fpr2CF2WMunsX0&P/Z*L^C[C<]W]">Sf^&#JC^Au"F]bA,p^r477
+cdL:ogYUoOlL4?=qYp6h$iU#"qY'RRoCM\Pr;HXDrV?*QkMk7JeBlF^ai_fOc-Y"qiT0+_j4r55
+c-+2J`5BI.^q[Y"_#D+H^^\,s_o0X;air#Td*U1grmV\7g"Y<=hr*SWkNM3slg3s'm-jWDrIP!V
+s#']Rq;fcHdEhI#XJ_tk\AmLkd&P9gEJI\\Q<IX"U8=]dW*EM0@:3DF[(!QSZa-g=['6[9os0MU%
+f4nl]YM:u_o0X;`Poj;rQ>btbK.W?^qIUu\[JuV['?g=nZleCD/O93EcZ>GGBeF\I=?]sJqJc3L
+l%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:ai_fOcHjnde'ut#f\5'7h
+;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVc?eJcC<$m/MS~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M7jB5DaAoRljhomuacmsbjsDea$)E,BK?H[U?jI<p5=GoM!PG'%hIFFAReI=6Kk
+I=?R)O,f3.F_uJVJqErPpk&Erqh4iurIb-'s+UH,pkSg(!/LN-s+UK-s+gW/qhG3.L\ll2LPUeD
+Lku%ere^c8N/[aq!07&>s,[5CrK@2E!0mAE!0mAErf[;F*1!%bStD^RW2m,.\\,YoaNVuUc-Ohb
+c,df;]Y"-O/@iL5aN`,YbK7];\?W08V4sWRS=Q:FU7n<XX0At>[^33<W2-,YS=5n7R[O,@s-<YO
+rg<_R".G^KSGo)kTV8*TUnslaVPgAlWiN5'YPtd,ZMq31Zl$-V\%]`!aii#[g#(lUmI0W=p\F^_
+q=aRYp&F^cp&=[_p]L?hqu$Hj%fH5$qYU0dq"a[Xo^_M?rp:!XmdK];p@nF^JcG]K29XabVjj6I
+S%k8IM2I(CPcrE.J$"H,B1R&_92A60IXQ]r:f'kb;c->MN/NUNM2-hALPCNULl_QAr8uYN\>#:S
+QN!6QQ^O<@RJrZ_S=Q.9QB[PoP`Cb&MZeijKnbBRLhCL?DJsN8F*)SLG^=^bIXls#K8#&9M2R=Q
+O-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VI_(`Q$!@b0/&TcdC1ieCN7(g=k?<hV[8M
+ioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrU^#>s+14:s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LJ;92//Xku%=SqbcHOrD<bW1G^pJ2E(P$#=1U?5<h=o4oRPM5!(ed5X7V#5XGB7
+#sV-X92.'.9i+a[;uKVn;u9Pm;[??&<)Z[l;,U<k;ZTitrDrepr_rYkpf.8lr_iVm"'&B&<W5tt
+;ZKer<<-)!=8c7u=oMLu=T);#<<-"s;Zg!#=BGH'-X0qe@Uiq\BkqO#C2@a'ChI6c?XI)F?!UcF
+B5;F+Ec>o3B4PCU>Q.h*=9i&8?!UcFAnh6[!bc.Rra,\4?2Rn,=oDJ&=oMV)>Q%k-?N4=2?N"47
+?sd8L@q5IJ"D)+SAS1pP,[k%e@:s:iDK0cCIY*E;P*_`5Uo()iWMZJbTV%dES"-">S=9AFrL*\S
+rL<eTrg=(ZP`q8kNf/[IL&Q]QL51VEOHZ'(U8P#nYHkOC[C3TV]=bhk^V[n,`lH0BaihoPc-F_c
+eGe#(f@\d0g=tE=qVM2.s54+<hqm2FhVJ1f%c#gkeBlL``lH-Ab0%rPrm)&#dF$Cle^rL.gYCW@
+hYuC5i8O[p"QSS(j5^'us5a7Droa@Hrp'LK/+),/GZn9Q=BSd8:eaYW:-h?JP>O>Z4tJN=5!1GQ
+1.Xo)77K0o2EEo^3rW+b<)Z^n;,U4e;Y<lfeC4BE!R]?od0e7HcHje]c-=JUbPfQbaiMU'aT'<\
+`WF3#`r*gU`;[[R_uR^S_Z.LT_SO(f^];+I^&GYH]=PVdr43*C\@B#X\$u=Es0W!:Za-pDrj)R/
+rilF+s/mQLY_mXA?sQr>=BJa/=]\a1>$G*5=^,-8>?Y03='&F(=&f,s"&Vll;=[LqCMds-EH6,B
+G'A1WH[U?nJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.r_Sa@4aN;TJ
+c-FY_daQ^sf@\g2gtgiEi8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6ir;HTc
+rdk*#s6Tc9~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Mk4FFB.FV5C,fo;;P`s.fUgrh9@bqk*n[rgikT!1WPJrL"LcOc,ZqQ!pPdVP^8e
+V50lXV4XBMS"H4Nri6+!WN#lq!5/<G"MUOQK9lD*rLWnYs.K=brM0Cer1j.b!2]@cr2'@fs.]Uj
+U\^biV50rbVPj?k!NN-uWu7q<WiE,"X/iA)YHY:;Za@-K\%0)]]=beiqn<-H^:jN[r4No\^qdk.
+ai_fOdFHn+jQc1'p%eUes82cmrs\l'p[mn?kih9tnFleYruM(5oBP;fe'6"U`Pom=bKeShh;d\`
+l/ggUe^;^drl58``5BI/_8!b_^am7<_o9[=bKS5XdF6RoeCE1'g>(NAiT'"[k32-rkiV$jkj.^.
+o_/(Vr;M9I\,S;XlG_,ud.>GaVl$K(_W01XY/ZZ2>Dno9Rp'*kUSOce>?b9>?sd2D\$iiS['?g?
+Z`pX;p9KVV*;ng0]"c%s_SjO:`Pfd9bKJ&OcHXJO`504+]t43Q"15>;Yjo#>CM[m+E,fo?Fa&%T
+H@1-iJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(p_8=.0a2lBGbg+P]
+dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#
+s6Tc9~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M:mBPr"kK_'inK(4EeJF7n'D/!U%Df/L%I!^3fI!^3cG'J1RFE;PErI+Zmrd>-6
+OH>K_H"h8JJV*]Kq1AQtrIk0&rIY!#s+LE+reC0&reUN.r.b*(%u?!sM27"GMM[1GM2@+IMuJS6
+M>iD4MZA_8NW5%=O8b7@OoLUEPQ-jIQ2[$IP5pjDP66u3PEc'4/shrqStMmZY-G@C^;J"2`5g'K
+d`okM]t(PUY,eY,ZFI`mbg+PZai(m$YGS"arL+=hStD^PW3*>5\[f,PXJhqhT`1GbS!oe6R$R`:
+s-EbRRJrZWS=Q;OU&UnfV>mDGVl6PnX/rG+Yd(I=Z*Ua?Y-"h/ZF.3S^;%P'a3E&bgu%5[nalJM
+q"OOVp%@tJrpg$ZrpU$[o_%nVncn^YpA"FYqYg:)q=jRQnaGr7mI'H2md9H4p%\F`JcGTH*S];S
+XI,QMS]%(YLkpqCPcCC8I[P.K8SE0cF%]4+I0"eIr_<o%;c6IhNf8sTLkph@M#N,%Ll_QGmd/]L
+];CmZQC+#,R$sKBR1YmWS"6+?R$a,$OctfcN/NUMre:E.nq_=%Ci4-0EH6/DGB\=YI!pHoJV/W1
+LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_=u_SjF6aN;WLcHjkbe'uq"f@em4
+gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$m/MS~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LM<9MSFJ;><ua;<C[X;)C'c3;ti>6:!q'5lNtT5!1qh4?Yei3C#h-62a%T9hnAV
+9gD?H;,Zs`s&/eorD`_o"B8B$<)``m!)ibo"B8B%<`Srp"&i/t;uKVo;u]es;uBSs;c6Llr)<l#
+<`W4#<)iiq!*&qtqH!]"=oMP'=oVS&=9)M&=T);(<``=&<W6#%<E<+!<;ofY<*3C2?=.)LAS5Ub
+ASH"$D.mEe?!CH4;c?\"?Y4.oEcZ8>D/!Ne>#nX&<E3.)>$G9>@V0:hChm]q@fBa8?N+48>[(B8
+=]e^*r`T8)!*oJ.s'GY0$"%"F?XR8M@Us$JAL1kuA7f=Y?!LT<?=75QAS5^lCi=EBItNT?R%'_C
+UnaTSSXZ%5rK@YQOcPK^OckfcN/WaWrfK($Q'IZ#Q'@DkN/<=EKnP)2JqJ]/M2mdeS=uj^Y-PCA
+\@T>e^VI\&_o0L4aN;QHbK\>Yci)5meCE1Mf_sM&g&g'chYl7.gB-0bh"f\3gtg`<f[S9mb/hU%
+a:HG:bg+S_daQ^re^i@+gYMkcs53k7"QAA"j5^+"s5a.?"6Se2lMBiFllbM;HWXQU=^"p?;bg"\
+:-h?C9ggs.0e"G(5!;"]0hFt97fPFJ2?#ZF4?HJA<Dugo;c-CioMPV8s3M%td*L%`cHXSVrlkAb
+s2tA`rl>,\aSs6[`r*dU`;R[S`;d^T`;[[S_Yq=N_#;"I]`bs[]XtfR])9,=\GWf7[K!W5ZN@G;
+Z2Lp)Y5ka)XVS-kHZ3J$=^"p0>$+m.>?b98=Bep3>Q.e0=^"j-='#<###nN";,L.enkX:ACi4-0
+EH6/DGB\=YI!pHoJV/W1LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_=u_SjF6
+aN;WLcHjkbe'uq"f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Hj
+rVcBfJcC<$m/MS~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1%b).o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na(8k#G(Z-XV5C-dVtm4iV>m=lUS@[[r1O"\rgs+[qjd\UnsUD`OcPHhR$M-UW2HMh
+Tq\?VU8FWVS=Z:BrMopsri,pr#JIja]Rg*-Mu0(AT)5/[U&C_ZU]%"bV>@(dV>-hhV50rbV>[7n
+W2Zi!rN#t"!3>sts/cg7YHb@<Za@-K\%'#\]=bfU]`Gj\rP&-A)SEbs^;%Fu^qmn*`lcQSf\PQK
+lL+<<p\+@Xr;R6)qXs=Bk2P7TiT9Fur;HXfqt075f$;@V`Pod9air,[f%]3Hkiq9hgt:-'c-4>P
+aN)?@_nj.)_8*n'_Sa@6b0/&Td*^:keCE+$g"P6;hr3VWkj.X(md09=l2^2Mm0W4Mo(2GDo_84\
+JcEC_29>Rab0AA^pu8Z[V7*q@cg9&eW/G5=MdMa>>$dqtUSt.s?!:ZF?s[*G\%/rRZE^R>YcY,&
+ZASYlkJ+XD^qmq,a2l9<`Q-."bRi%Aa2>d0`kB!n\%8uPYctJ)Z=mugD/O93EH?5EGBeF\I=6Tq
+JqJc3Ll%%KNfT9bPEhH$R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]NcHjnde'ut#
+f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?eJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na&uYWCN4dtK_L,rK'e-bJGaorJGF]pCD(<"E,JO!I=-BgH$Xg_G^+LXFoHI[I11LO
+IXQX)O,f0+c>.UtJbF]oKDgJuKE$W'L&Qi&L\uu,L]<,.LBNEgLl$rdM>rJ5Mu/D2MuJV5MuS_;
+NK0%tO8b7@OoLUEPQ-jKQ'@O2PPp[@PQ-gGOUIA<Q^OA9USb#mZFKnG+2>\7c-OYU_nERdXJr%k
+Uo:E(^ramJcHXGG\uqm$Rf8]jR[g"DU8=`eYdCmK['6X2V4sZUSXc5LRfJiTPmNbDR@0P8SXuII
+rM'n!V5C/gW2Q\qX/rJ.ZF..?[fNkArim3E['[6L\%&uZ]"Geoa3<)kl0Ig/o`"S;p@\%InF?&;
+mHX!&mI0H.l07O$nFH8HqY^<jr:opRlg!a"m-X<4naQ&:o_\T<s7cOOe=F1WR@Bh?bH[.dLm!LM
+QcGhOJ8S:oBMEMg92C"cI"$Q@:JFee;c-ANN/`aPLkg_@L5(EULlVKCn_D:#Wg8m9R$X5/rgNkT
+!LfGUS.M0[R$a,&P*M,hMMmFMKnb?PLhLO=D/O93EH?5EGBeF\I=6TqJqJc3Ll%%KNfT9bPEhH$
+R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYai
+l07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?eJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na$`Bg9284F;><u];<^pW1BoTn2`NW\62j+P5!M4o4oIJX4Zb\i5XIb%5sR\$6;:0J
+9e(Kb;,[!as&AemrD`eq!*&qt!E;tr;>jAr;cHat<`Srp"]\T'<)Z`o;Z0Pm<;f_r<)rosqc3Pn
+!*0#!r`B)"!E`M%=9)G$=Sc)!<rH))<``@'<`N*trD>p\<)m%'=^,-<?sd/G@VBUsD/!Qi?!:6+
+:.e5Y<aKBUEcZ;BDeirj=B&3u<E<.%>$P???XdV\Bk_6l@q&hQ?=.":>QJ&2r`95)=^#!5ra#M1
+!a]/<rEfM2s'Pn:@q5LK#A7abB4YLZ?iFC2?WpiG@U`\O?t!SZDK^ShN00BmS!fY2Q]mPmNK&mR
+K7\`/L4k)*I=?a$Ll.1QP*;,nO,JdGJ:E*$K7ei2Knb>AQ'n5<V5^T$ZaI6P]=bko_Sa:1`l?'@
+b5TTcc-Q:7#1CuMe^`7%rmqA,g">!2g=c>T!SQ-)g&Ke+g&B_)gC`/leBlLbbK@uNbg+P]daZgu
+rRW"BgtgiDi8NYSioB([jQ5Lck2kdgk3(pll0@U3mJQ>MlR)">>%(`>=BesF=\hde;aEc@HqlX^
+3%HO8/3c3K1.b&,7mo9p2?#ZH4?HPB<E)mq;Gg:f:f@!a#LC]@c-=PYbl,]eb0.rMrQ5&[s2Y/Z
+!6=uVrP\iV`PqhprkelU_o'@.rkSTMqnN0Erk/9Cr4;m<$b3[U\$rfT\$i]P[/RB3ZMh'-YlCp+
+Y5>@$XpVM(JT51,>$+p0>5hY'>8UUI>Zk99>?P-4>#eU)=&`-t;H-Ok;,:*\:M=KYD/O93EH?5E
+GBeF\I=6TqJqJc3Ll%%KNfT9bPEhH$R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]N
+cHjnde'ut#f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na(f=-HAJ0kVY$edVZ*CnUna^aUAgk]T`1S_T)P;\SGSfQRK/iURKnt=NL?&u@]'.'
+#cFPrU8"<WUn@UWs/c7$!ii6!rMU%:^V@G]Tn&DuSG\rRT)G8^TV;7Wp7hV`pSIhcpSInc!i;]g
+rMBLjs/,stWN*#rXT#@%XT,F&Y5bU:YHY::ZEggE[^N`X]">Ve]tM)X^&GbG^&G_G^&GY^]tD%l
+]">Vg^V[q2bKePfg>:lRmHs?2oD8@a%K#kglK$dSg"PBJoDAOds!@R8lep@>bfIfB`Q60EcHt(q
+hrNt`j5JhIe^Djjbfn8SbfRlDr58oZ`5g$DbK\D]e,Ii9e^rF-gt^cDj6#UonFQAIo^_VFp%@tK
+o(2PKrqHQhq>5aC]Dje:qu#3jdF$>4]rS'5\?j68k.[t@Y'5\0PaGT\>G8!kV5[X&>%(fG>?eVH
+\[AfLYI(U>YH[c,MZ4ma^q@P"^V\"1aN29<a32]ObK\>Va2Q!3`5'$r\@K)SYd!](s0H`]Ci+'/
+EH6/CG'A4XH[U?nJV/W1LPUeFN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]Y;.s_SjF6
+aN;WLcHaeae'uq"f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Hj
+rVcBfJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb0(ec+o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na'2n_Cit8^q1S?lqh"3dq1&HpqgeWp#&S-iE,KPmqgAm#H?ja]H$=CRFE;kZqL/Bm
+#EOt,N;\3EHhW*bK):3#K_U0"K_gE%LAQc%M#<&,M#N82M?/WmqMYB2!K2p9MZJ]nrf$l:s,R&=
+s,d8Cs-!AF#aCO;P`q>rPEYj+rK@5ErfA1aPE_?!R$sS<TqeNeYd(LB]"uJ3cHXPQ_7R(VVkO*^
+,c7cW_oU'HbJqB.Y,7k_S!ob7S=Z=FU8=lnZEpmBYH4b$U7hLV"Iu$RS=0AD".>UHSGo&]T:r$U
+rh]Xl!iMuqri$I/XKJh9\@T>d]tCti]tV4orjtG.]tM.o^VI_,bg=qph;RJ`o_A4Tp%.bEnF,i4
+lK[a'mdBQ5nalDHp\F^arr)fjo^;)1kj.X+oC_hMoCMYPJcGBB2Q"."U7.XET#$\LM2R+FQ*7r_
+J[12<BMEMg92J<1IscZp:JOV`;c6FgN/`dSLkphBLk^V;pP=k0#PHut^T3]dQi<BPR0]7NR@0M4
+S=?#IS-kUKP`q>pNf8mSM>i8!LiR9ID/O<4EccDHGBnL]I=?]tK7nu7Ll%%KNfT<cPa.T&R[]k>
+Tq\?ZVl6VrXfen5Za@0M\[oGd^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB(\k2tmll0@U$
+m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu-HkrUg)?s+14;s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na$rQk9MPL_o2,KcohkW`r_`YmpegHU"#Vnl2uY]]6UF+*5sRY#5!;"k4?Pbg3^>qr
+6:!n&5XIh)9h\8UWCK`\;H!-cs&B"s!)iYls&B"sr`'#!;cEKi!)reqq,IAp!EE+u;u]bo;uBVp
+;u]hk<W5tr<W?,!=8u8$<`f3$!*T;'!`rK+o2buo='#<""'&<!;Z9Vq<W6#*='8d4>$>3ABl*cc
+(MRDe>?+Kl8kVlW>\7hkEH6&;Bk(IP=8Z)!=T2J<>@(`JAnPafARo4W?<pc=>$PB?>l@h(>5qe.
+>[:Y7?3FVA?!^k9?iOL@@:E_XBPD0qC1h/XB-Ckt@q0%\B4b[a@Uit_Ci4<;H@LU,P*VAtPE1``
+Mi!7CrIGi<J:W<)KnkPDNK99fPEV&bKReN#J:iT4M>iAGMiO-pTqnQbXKSn8Za@0O]Y;5!rkf2a
+`lQ3AaND`Obg"GZci28qdF-Ope^W1Kf)s[Wf@^&Rs4.;(f[ndSgAfh8f\+s3gYCQ;g"4a$d*DX:
+s3M>)eCN7)g"P38h;7&Hi8WbVro=7Ek2tmkl1XBBli-5Plg3s:l2TuHkooE+@U*8C=^,$2@8KZk
+:I.?<:hi<XF\45C.m?'L1GVNmr^HrJ2)bCp#X)0e<E)mp;H*0aqof#^qoSfX!lr=$qSrEOrP\WO
+rk\fS_SX.*rkSKI"hq[a]tM)V]DoDD\@K,ZrO;g8!4Dg5rj2X1!3uO-s/uF*r2ot"!3Q."$a-h8
+KlU^1>?=s3>5hY(>Q7q8=Bes5>?Y67>?P,.<s_i+<)Q^o;Gg4fnP=1@Ci+'/EH6/CG'A4XH[U?n
+JV/W1LPUeFN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeae'uq"
+f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf0_Y24o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na)#R7H]7`sp8@nerhTOgqk<bWrh'1]!hGjOqO@JQr0o-tOH,ZqQXZegVPU2dU84QY
+UnXKPT:MOSX/i>%X/`.uVnTp[]oKUGM#3_@Sb\lWT)t[ZU&1SZU]7.`V>[:kV>m@kV#[CeV>[:k
+VZNfrWr/ssXoGO(Xo>L&Y5kg+Z2_*7Za@-K\%0)]rk&3CpUpR@rOi0Bs1/uV\@K5c_Sa=3a3)`U
+e(<C6j6#Roo_SFa2#Hn0iniD@f\GHLnFl\Sr;-*Sk2+_:bfRoHaN)BDcICM&hr<\Ui835Af$_pl
+daZgrd*DX8+NqpLai_fLaihuVdF-Inf@\g1f\50?k3DC+pA"RbrVcZns82oprIP!Rs"iNSc-ar,
+b-7kCY.;L2io@8`P@02LR?j:N?)"-jVl3a(>@LuI>[+\H\[AfMYcb@;XfqH(MuP$d`jrk"^V[t0
+aN2<<a32]Nb0%rRaMu68^Vdaq\%0#SZ*:J(ZN%7EC27X'DK'T:FEMePH$XjdIt3-'KSG8=MN!OU
+OHPfmQC+)0S=Z@HU84W`WN*&%YHY==[C3TU]=bhl^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JQ
+j5f=akNM0qlg4!*mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcG-;J,~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf1A:D6o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na'<%bD0:Pdq1SKpre10$rdsNgn:1^YC2.[,DH$O^&USqQH$X^\GBnCSG&hYPIXQ\C
+I0b4]OH5B8MeR>.Jb4QcKDpQ!L&Qi*LBWKhLPUbCrJ:H.reUN0s,-]3rJ^c7qhtT9N/d^ps,[2A
+s,m;D!L&cBPPgUBP5pdFOAV.(Q'[i'QC+,0S"#tBV5^MtZb!uobg+MXb/_B0Z)FIjSXuUSYdhEb
+`5]d2]!JH6Tq.[BS=H(=SY2gXWi`J.Y-"b(VPBcTStMgQU7\$Krgs1^r1*nZSY?"W)Ps@1WMcSi
+W3!2/\%KMn_o9X9aN2KEaN)?@rl>_pc-FY^dF6Rpf\50Am.9rDoCDnMrpTjQ)=Ht_oChtTq>1!c
+r;?Nlr;$'VmHj60o_/(Yq>^3iqgne=ruK/&^nmKiSY!<^NJNFCL6A^I]762e:1m+>EcY&Nrd>N1
+Inid7<Dl^l:l^KoMi*=GL5:S=L%^=`rsAJ]bJ1-HQBmr*rgEeUs-`nU%@`lWS"-"8QBm\qPE(Y%
+MZ\`gL5,5SBPM=!DJjE5F*)PKG^4U_I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7
+ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14;s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na%&Zn9_VBY;>a>^;>X8f;=IBm1c$pG2`EW]5X@Y$5<_:qr]CQM4Ztkf5X@\'6:!m9
+63g4[9M@3492PL`pJ_)ks&8nppJ_&jrDWPj!E2tq<W5tt;Zg!!<`T,uqc!Akr_rSl"B8B#<)ros
+!*/qts&B)#=8Q+i<rc;#=8l8"<<cK*=BJU(<;ooe<)Ze!>$+m2?tF+jE,TT0C1U[Q;,9n\:/Y+u
+@qTOmDJa0%A7&PE=BAR,=]e^*=^>BB@Us(^A7K"S?!:?4?"%2N?sin>!F8t/>6A#0<a#B*$sd1H
+?X6lA?!q,OAnh6]!cW'rrb_^PrbDLMrbhaS+)l.:E,ff8EH?>PL6%I[OH,9YMM[1FK7\]/L5(J@
+NW,"=O?SeiPEV,iMhZk7JqSr:N/WaVOHPfpSY2^QVl?`"Yd(L?['mKU]Y2(q^qmq+`5]j=aND]L
+c-FV\cdC.ge,Ihte^j`Orn%8)f_jA$f`0Y&gAT\1g=tB9g=b*0ec!r(eCE+%g"Y9:h;7&gi!JB&
+jQ5Oekih9rqWn(Es69FE#3Y.2jlPRaroF@HmG2Yp@p8h6,$e2D8kqW:7Sd<(3'o>L1FbRN4#8W`
+84Z3<2E*NV4Zb\dr`'#!;cEZms%rAc$d-T4aiMTFaN)BBa83dY`Q#m9`r<sV`;daT`;daQ_Z%CO
+^]M?f_#1tI^AkkR]=bbf]">Pb\[f6L\,Wl=[C3KMrj)X2Z2Lm-YHIi+rN-"!s/I'<WiE,#XK8P+
+Y-=COFCefb>$4p/='&O.>?kB7qcXP6>?P*1=&i:%<)Zap;Gp@hnP<h5CM[m+E,fr@Fa&(UH@1-j
+J:`E,L51VCN/`m[P*;/sR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daQ^s
+f@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s6]i:~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5MA86"+JscJ5s/#Ogr29Okrh]Xj!2KOfrh8qVrgs=bSXl:@op[.fOIDN&QDLCUWMZSh
+VPL&`V4aBMS"Q@SXK/D%Wi;trWP8AH"94[8PkgjISc,/YTDtV_U@t>^V"UY_V?!IkV#R=jV#[Ck
+V>[7oVl6SpX8K(!XU;57Y-5%5Yck77Yl:m:ZEppF[C*KQ\@K/]]=\'T"22@[^&#D@]DoGB\G`lN
+]">Yi^VI_*aNMiRd*pS"hrX7tr;-F>rV5jFiS<);f@o0Dl0e6@qtfpMiS2r2d*KnWa2Z9Hdam++
+hr4On.,Wk8g"bKBhV6`9g"=p,e'c[kccjYYcdC1kf\5$3f@\g6j65k"p\]UBU]2J#bf\5Yp>N<W
+UoLuLi9SUUXH-tDNF&!B>$n#!V5L>mr`]qB?sR$I\%9,WZE^U?ZEUO;pTf_W#OKRE^VR\&`r='Z
+`;msXbS&+Cc-=AM`l#R2^:Lhb\[/QEYk,1#ZZBhrCMds-EH6,BG'A1WH[U?nJV&N.L5:\EN/is]
+P*D5uR$sM8StMdPUo(&iX0&P/Z*UgG\%0&]]Y;.s_SjF6aN;WLcHaeae'uq"f@em4gtgiFi8WeW
+jlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVc?eJcC<$mf.e~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5M=^>NPE.7_=pOrHsq1S^!s+9ZinUUXT%<69(Dgd"]IXQZmI<p8>GSYCDFEVbTIXQWo
+IXZcqIuf\ONo>5$I/&9aK(O]pK_U8tLAQc+M>W/0L]3,.M#`G0Mu8M:NJrjVN;\b5NrP1?OT(C@
+P5LODOoU^?P5^UDOT1FDP*Gm0!LB)OQjT7OSti0_ZF[rpbl5m9cca>D\$)['St2FGVl[/3]u.b)
+^:15BUS+6NSXZ(:S=cOOVl?\tXo>I.XJhtkW2m##rMT[m+Jbd-U7n6NSXuLJU84ZbW2?AdVQ$]&
+[^s5ka3DrXdaJ$?'[Y7Ve_/^5hqm5GgtU]Biof_"o'u_KqX4XXnauSPqtp<h%/]u"q=s[UnaZ2C
+q"k!f!;l`n!<.QLoDej>*5APDR[ftfYE"KrM2%IpbF3g2E)U+X9QG5J:4<+js*t#C&6)S*:QCBn
+Mi*=HLPgnBKnf>XO8f^`im#<BS!KA.R$jA2R[a;Es-rqV%[iZLP`_2lNJiaSLk^V<nVD7#CMRd)
+DfKf=FEVkQH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWiN8)Yd(OA[^WfX]=bkm_8=.0
+a2lBGbg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6i
+r;HTcrdk*#s6fo;~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5M6q'[@:/(4Tr_`Dfp/1Q^rDE)]s"c#^2`<W_5X@\$5sIV!4Ztnh4?P\e3^>tt5sdk'
+6pa479h\9E786VS;?9]or)<Vps&8komo0'\"&i/u<W#hp;u]kq<;fbn<;fbp<;fho;ufqt;Zg!"
+<`T-""'&B&=Su8#<rH,"<WH5"<rQ2"<WH4u<WH5#=T;G`<E<4'<)Z^p<)lt%?=R\dDJj<.DJNio
+>Zap&:JO\`<`r^:Anu=&Ch@*^>?P-6=]\X(<`rX4?XR@BA,g!E@:*;F@:a"\@q>RK!FfF8>Sp[I
+<)lq!=BSj5?!LT8='8d:@Uj%eDK'[rFouf+EcM%us)]l:H$XdaH?jaYFa&%UJ;0#AMi<ROLkph@
+KnP,6Ll77ROckokOcbfhOH5H\MMM1b15LjKO,oBcPF%Z)S=lRNUo()iX0&P.Z*L[B[^`lZ]Y;.s
+_8F1/`lQ9EbKS8Yd*^7hrmUqurmq&#qUti$$ea1cg">!3g=b36g&0P4g"=s/f%8O+g"P9=hu;R6
+iWeH(jQ>Ufkl0fHlMg#Rkiq<okN:pgjo4??irJ*<iVqa8iVhXehVHuBl#CcP?<LB5=_Cr69MJ5H
+8kFe/5s.+W.l/_=4"i?\8Ol9>7Q34`4$5Ver`',#<)cdo;tElaa8EsV`;mpW`W*mV`<*us`W!gT
+_Z@Wlrk\`Q_SZ5er4r9G!ku=[rk&3As1/-=rO2g9[JmN7Za-k8YQ:r1riQ1$!3?'urMfaori,pu
+s/c7&s/l[/XbM"1?X6f;<rH/#>8^[M>$5$3>$G37>$5!0=&i7$<)cap;Gp=gnP=4?CMRd)DfKf=
+FEVkQH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWiN8)Yd(OA[^WfX]=bkm_8=.0a2lBG
+bg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTc
+rdk*#s6fo;~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,LC2%[8L7eC@q5*h_rh]UirhBIfqk<VSrgs.\rg`hS%$6X4R@9CKUo1/jVPO3f#G@lf
+TV%dHT)5SfW=,Z;^V7ItPB2GFS=BAFqjmYVs.9=bU&C_ZU]7.gV$3`mV5C,drhf[m!2][jr2'1c
+"fJ;uWN*#tXT,F&Xokl3YH\#3%C*.BZ*L[A['[6K[^WaF\.6!Y]",Da]Xtbe]=PVd]`#JB\f82i
+\$rfT\@K2_]Y2%p_oBa<`Q69Nf&#QWp&+Xc;#9kSl/C=FeCE4-iof_$q>9mTl/LORg""Qtbfe5U
+e(!")hr3Y]mI'B-l0.BslKRTtk2bR`inrVKgXt*/f@es7h;$c<gYLcIkN_L,q#,dDV>hb6s7"7T
+bKp4_^9"31\[g2UkbkDuRs'TpQ'b]\>G8!kVQ0W"&7T$R>[+_I\[AiNYd1X>Xg%Q*MuO7Xbe:g.
+^r+46aN)9>aSj<ibKS5Ra2Gj1aM>If\HK=GYctJ+ZN%7KBPM=!DJjE5EccGJGBnL^I=HcuK7nu7
+M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\[oGe^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<
+hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14<s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,L>@1uZFFj@E!/:#t!/:-"!/(0#o7?I_s(_pUEH>tpH[U9jIK"U#H['g[G^":PFFO.9%
+XrhUIZBMNNfJ3nF+8akqLSTss+C6$rdb'$on36sqh5*+Kn]DYs+^T1rJ10(r/(H2s,-l7rJUT4q
+MkK7s,[/>s,[2As,m;D#Eb14OckolP5UOBOoUXCP5^RDOSt:AP5^YJP`q;qQC!o%QC=D=VQ@2;_
+T'[>c-O_\b/D!&Yc"+^S"61HWNNS=^VdgsZ`^=+V5'`USXZ.ATq\E`Wi`M5\%&oU['[6L[^EQNZ
+EUO9Y-"e+WMZJeVPjEn%]QD)Vl?`!Z*_$Q^r4C@r6ZJ3e'uq!f@ep8iT0.ak2tjiki_-mlKdj*m
+dKWDmf2bUnGi"np%eL^qYL*dqYL*cq=s[Up%7nLp\Omes8;rsJcG0<,P8jeYFM&NS`.STMhm4EN
+gRf2J:O,2>A$]OF%];&I=HWnJGr:T<Dl[k:l^KnMM[.DLPUY=L%gCars/Macbm&[QBqK;"e1pKR
+@0NBSH#&eSXPn/P`h>oNJiaRMZ/>1L[p7=BPM=!DJjE5EccGJGBnL^I=HcuK7nu7M2I7OO-#NgQ
+'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\[oGe^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k
+3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14<s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,L77U$F:/U[\!)NPir_`;cqGHl_nk]ZM2)I9O2`<ug5XGB7#!kI:4?Ybhr]C-F!($TN%
+REEK6;:3K927WA:Jk%hpeh2k;GpHk<;oen;uT\p;u]_q;uTYp;uBMp;c6Nm;ZTirr_rnu<;ohp<
+<#ks<;BGm<;fbp<<#tp<<#r.<)Z^p<E3!u<E<+"<``?$=8l8#<VTSr=&rB!<s)K)=BGK(s&]5$%
+Tcb7<`Dsp<)m"'?=IM]rbVUO(N+&'ARf(O<`)Rc:Jb"k>$bcTD/3co@/aJ!?!LN5<E<7,>[LlI@
+U`n_C1q3jB5)-sD/F*'B4b[`@:<MJ=]SU+>?tQA>Zt96>$YKD@Us(bD/XK;F)c/=E,fptF9Ql5H
+@:6mrdt0$$\Eq[JV&Q0LPL\@L\lc-L5:eLrfR5B!0@)=!f`+orJ!.aM2[IUOHPfmR%'V:T:_gOU
+nsreW2cl"Y->.8ZF%'M\[oGf^qmn*`5g!Cbg+P]dF-IlrR:hurn%/%rRq/'r7Lu$rRqM0f\,!5g
+YCQ_gAfn2gtgfChr"Fl"6/A%jSn9?jpgG7k2k^cj5T%Uhr!;Iqq_;-rn@>(rn.,"+7GA+?scu;=
+]pc"<)67_5Xn:eP!1m"1bCR84Zb;P1B'fY7R]9p2`s5b4$?VC<`Dsr;,U7f;"d`k`Q#p:`Pfa7r
+l"`R!Q;tS_u[cor58NN"Mqsl_86,drkJKIs1JKH]tF?V!P5i?\Gs#O[^EKLZa-mAZE^X;YHG%1X
+fSS'r2K^ps/,jqrho^nri6"!&?N":Y-5%5W322*Bjk7K>$(]*!*B)&'O"XD>$G05=B\j-<`N-u<
+)caq;H!KknkX.:C27X'DK'T9FEMeOH$XjdIt3*&KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y
+HY==[C3TU]"G_k^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo
+CW%T!quB_rqQNhs8)Wirqu`no_sFAJcG0<J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,LCi"3@N2?HLpSI\_rh]Lf!i)Kaq4[MTrh'4^rgj%YrgO1WOc,TpR:)qlrhp4"Una`]
+VPBfUSsu>MX8f4"WW/ps^AkqOJH'hPS"0JIr1*VSrLX"\!hc6\rM'"\rMB7cs/5mor2'@hqkjIl
+W;WarWsc#2Xfeh1YHbC<Z*OA8#-tSBZa7$Gr3ZO5qR6L9]D/r@]=PVc\@DLH%(*FM[^WcV]=bhl
+_8?2f$c^<6f%oHSoDALarql^ArV#X=gt1--f@es<kj@s5p@RtDlfR3`gXjs'dF6Uqf\PNLme6YU
+&bbkgo_/%PoC;>>o(2DAnF#ZBl4E:Jl0%0fjQ>XhlKms.o(;a/s/#`Rnc/@1b0%rRlI3#;VRNnW
+i8rRnaIQdE=dPGC?XBJ)Uo11s>ZtWF?X6mG[^`fRZE^X@ZELJ+ZA\`.pXHmk^r"%0aN;NB`QHEL
+bg">Tc-",H`kf[2]XbVb\?`?CZi%-)Zi7=QBkhF#DJsN7F*)SLG^=^bI=Hd!K8#&9M2R=QO-,Ti
+Q'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Wd*^=le^i@*g=tE=hVd>Oj5]7`
+k32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG3=J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,L?"%>_G(ojKqM"p%q1\Tsqh+fuo7?Ucs(i-XE,fkpI!pElI!^0bHiA9pGBS.OFFJZ:
+IK4fqIfGK/NWib7C3P5[rdaotrdt*$rIY!!s+:9's+:-#r.P$&pP&d*LkpocM#W;3M"ul/MMmDk
+M?8]pN;JV4NX1]+O-#E`OH5J%OT1ICP5C@CPEM+-OT:RCOoCO>OoLOBOoLS=PEhK"PE_E%S=ug\
+ZFR`e`5]pDdF$:_a1o$_U7RjDSY)XSXgGXO]tV1i['6a7Vkp&YT:hjOV5^T&\\H&$`5'+$^VIY"
+^:Utg]Y=BY(;.5g\%&uZ\$`NGZ*UgE[C3TU]=u2)rQZ5*dF-Org"YBBj5f=akNM3tmHs6(l0@O3
+kQC)7lg4W<s6g3^o(;VIp@n@]q>Bslp%J(Np%J7ZrqlcqJcG'9*PTP%T:;:?S[>,OM2@"GQ`[d"
+I@#%O8k=&DF&5U1I279^:JX\a;c?RjNf8sUMM[+EM26n?L\Q[ds!QRed`&YhQBdl*R@9V6S!fY4
+S=Q1@S"#q:R$O)%QBI5dMi*FIKnf2TreY]1C27[(DfKc<FEVkQH@('gIt3-'KnbD?Mi<[WOckro
+Q^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf%8U/gYCWAi8EVTj5oFc
+kiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s6ou<~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,L77g-I:f$a\r_NPjr_`,^s&&Acr_`Ac%l?'t2`N`P69mk'5sR\"55m\a4$>_h4$Z%s
+5sdn(6:4+7:/">4HqdL:;c?RkrDEYn;Z'Ap;H$Ln<;BGm;Z9Pn;Z'Dh;YO)i<;ont;ufkr<<#ks
+<:a#g<;ons<<#ns<<#tu<!6-!<E)ro<<6-%rDrntp/_)mr`9&#r)ir"%oub6=]JC!<`W=+?!q/R
+C&Vd,C2Ij+D/3lt?W^3&:JOVZ;,g_*@V'1dBkM'h@pr_N>?Y04=BSj6?=7D^E,TZ3CMRd*EH,l4
+CMIV`CHH9EB4YRaAnPX`?X@&H@:<VS@qB4`C2\*2Des9/DfKlAGBnRaIXZcsK8,/;LP1;4Jq/?#
+J:E*#JqO&Ure1]7M2I1KN/`dRMM_=i!/^]1s+Uu=MN!UXOcu&sR@9Y:T)PB'Tq\<XVPpJpXfek2
+Z*UjI\@K/^]thP(`Q--Ec-QC:"4GZIeG[qtf)OA$fE9gZg"GoJ!nl5[rn@M0gY;__s4m\3rS[V4
+ro3q;$f^4*i8EJIgtUQ9f`'J&f)*u!eC)bCdf7_ndeqQOn%raI?<:33>$+p.:J=JL6UjmY?8t5(
+.4$H-4?5/Q84c<?75m+^4?Ybe4'#?]<)Zap;H!Kk!)iSh!6+cPr5JZRpV[!IrkS]P_8*kb^B2-_
+^&G\E])oRS\c0,=[fj.I[C!:>Z3.A9Ycn&/s/cC)X/`3!WW/n!Vl6MkrMBUnW;`dpWWT<'XKDK)
+!3lI-)R?QJF*h\2>Zk64=BSa->?b?:>?Y06>$P66r`]8%#ut#*;H-Rm;,C0_:]=13BkhF#DJsN7
+F*)SLG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'A
+bKS8Wd*^=le^i@*g=tE=hVd>Oj5]7`k32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcG3=J,~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe+=CMe9IR/<cQV>mFcV>d7hUA1GST`1S_Sh$@qP`V6!Q"$SeWMubmUnso_V5L#[St)@R
+XfAJ&WiN/!WP#sZ^V%d_J<^&%rL<_Tr13eXrLX(_rh9:bpS._arMB=e!2odms/5dlrMKdsWMuhq
+rMg.(XK8P+YHP18rj)R/!j]/=qR$:1s0Vd5rjMd7!P#]=\cB;?\cfRT\[f6L[gfdR['[0G['dBQ
+]"5MgrkJu[_o9^Bdb3O?mdg#Cq"k"9q=3_1hqZo:f%T$Akj7j4p@\+No'bl,iSN>Bf\"p6i8s=s
+qYpKrr;-<ir;ZQnqYg6i!<2ur"8_fdo_e=[oE+XXqLS[As#'`+bKA#Ps7E[uVQIDJj3d"nZ]]!S
+MdDa?=^IhuVPpPp>$P9=@9m0M\@T5X[Bd$CZ`gI7pp5nY,l?E3]thS*`Q-*A`l?3HcHOSWbg">Q
+`lZ*9`4`am]"#)OYH[r1q6U(-DJ3a"Ci+'/EH6/CG'A4XI!pHoJV/W1LP^nINK90aPEhH$R@B_<
+T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail0@U$
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$n,In~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe+2?=R_hIf"lgL%p>qKD^>gJIHF4CN"01<.'(AIXQYDHlI?WH?j[WF`W%^I=H]qJ:;rs
+NfT6]N1><7H\)'Er.+j"rIb'#rIOcrre($"rIt'%s+^T1re^Z2rJ:N3rJCK1s,6l6repc7s,I&=
+s,R/?rf@&?s,[&=rfI2Dq2tZ>!KiK?OT:RCOTpo0OcYZcOSt:UP*D<!QC!r*R@TtFW3*D8]"Geu
+d/MKFdEKM=Yc=LlSt)@FV5g](\%TPj]tD"g[BZm7WMZGbVPpPu[CjH"bK.Z?_u%@XaNMfPcdC.d
+ci200bf[uF_nj.)^q[Ut^V7M%aj&,XdF-Lnf%Ss<ioU1%ro=1CjQ5M%jqZt:io/nWjlbmnlg4$,
+mdKZ6nalGIqXsj]s7HTiq"agbrVhBJlMiBlft=,NR[]i'acMC:JqfJnR`g/6E`HO]9lb>L9mqJ>
+It)uE:JOkg;,E;PN<kDuLk^_BKnb<VM3%ZEiUPR>\>5FVR@9P5rgFFeR$sP:S=Q.=S=5k4Q^!\t
+NrFt?Mhd"?L@g<$M/I!@CM[j*E,fo?FEVkRH@1-iJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsuf
+WiN8)Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s6ou<~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe*r7S-<L:A%H\:BF?i;;"kD;&_AL1H%0N2F9_r5sR_#5X.Cq4Zkeh4?>bn5sbH9s$I&d
+:/";T:In2Vr_i\ls&/ko!)WSj"&`&r<;KMn;Z0Jm;Z'Df;YO)s<)lpt;c?Xp;c?Zd;ZTitrD`eq
+r`&nt!*&_ns&Att!`i<$oN(ijr)Nf!qcNl"s&T,$r`;cq=^#$5>[LrL@q&t^DK'T8E,KB#>Zk'*
+:J=GX;c[%+@V9CiChmd"BP(^\?!:<2=BSg4@:s@pEc5c0Ci40/Ci!s,EH6/FGBe=UrcA?cEGfT,
+BP@BZ#A7X]A7]FjDuO\cEH6,CGBnRdJUr?%I=?YCJ,XltH[5U:'RY=YJUr?%JUi9%Jq8Q.LPU\=
+L55\`'8hX$Ll.+NOH>WiQ'[o.SXuIGT`(T'Uo(#eW2Zi"Xfnt6[C<]X]=l%u`Q-*Dc-Oc8d/qbF
+e,Ihsec+/!f)s[Wf%9iNs478$rmh)"rmh/&f\$,U!8IM.rnS">hr*DLi8<GMhr!AMrSJ(?gY(0.
+e'c[ldEg+_c2Prec2>iechu)fcTon)d*L%bcgfY5FC/0Q>$G-eE)05&5X7b77>Nob3%HO9/3H!I
+1.b#,7n#m+2E!Z\4?QYF<Dujp<)QRj:f($a;Z=W3`W*jY_o0I2rkncQ"i8'm_8=(g_>_7M^]2%J
+^&GYE]DfDA\c0)?\$i^DZiRM=rila5YHP+3XfSS'r2KXn!2oalri#gqri5pu"0J`/YPtd*YlM-/
+ZjEs[IVrS$>$>$2r`BP3>?tH;>$5$5>Zt;/=o_V&<sVf*<)Z^n;G^6_:]=1.BPD6uD/O<4EccDH
+GBnL^I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&T
+cdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?
+s+14=s*t~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJRC2.d8L8+F>lD=KUs.fOer1O+br1WeVrgsUaP)YlsQX6PeVl?YmrM'e!US+0LSXup_
+X/i8$ri-7']tV7r]U!YnrgNeTpmh>Ss.9.\rh'7brM'4bs.]Fds.o[koqh_erM][mri#dp$EC/-
+XK/G(Xfen4rNcF-!42[3#ICeDZa@*I[J[E1[J[H9\%&rY\c'&:[fNqHrj;a5r3I3H\$rlX]=kto
+^r"%/aNMoYg>V2[n+?MRs!7L8o^M50iSE>Hhr*PZmdg#Dp\4IXp\"(BkN(X^j5fIjnFun\s8;cp
+rTO7arr)`ir.4mCruM'qbKA#Nr9hh5Vl7/Mj6Y7%XIt5jM-lR9>$dqtrhU@0>?kE@?s[)B\[f5W
+['I!A[BZp=ZM:bbrs/D[^q@J%`5_et)TB_>c-FPZbg"DTai)]H_T'F)]",DZZ*:I=rNc7*rj;]=
+Chda%DJjE5F*)PKG^=[`I=Hd!K8#&9M2R=PO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg
+^VRe*`Q$!@bKS8Wd*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCW%Ts7QHerV6Eg
+s8)Zjrqu`noDX=@JcG6>J,~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJR>@;&ZFFs7Ao7cdhpOiBqnpqZsChRg-E):t2I"-WoH@(!bH?XRUG'.nUJ,Xm,J:E#s
+J<#\NNfA6tF+Jo?JGXosK)L?#K)^DtK)UDrK`?c%L'!-dM#3&,MZ8P3MZ&G5MZ/P5N;nk;Nr>%;
+O9L],O,f9^qN1T:rfI,ArfHo;rJpr?rJpr?rfIAIPE_B!Qi<BPR3S2nU8P)t[(*llcI1:pe'?%P
+]stAKVPBo^V5L>t[^j#_^;0`a'#;2jZELC4XKJe4\%fo'aiDB>rkp&$b0JDbf@ep7hqm8Ji83>G
+gY(62f$r*ocHOGO`lH?Oe_&UTgCW/siSrq[jlGCXgtLH5f@o'[i;_[6h%/E%j6#LflKdg'mI'B/
+nacSK!VH'_p'(-_p\FacJcFs6*TkqbVOX*DS&`7:O,8^KR&SB(J:i/[>A-cQF%]=.IM[B\J5/m9
+<Dl^l:6(?mM2I+ELl$nAKnoJ\!/Q^9'_U5#\#>XXR$sJ6S!oe5R@9Y;S=TYLs-aC`TTbP)P)bHY
+N/<:DL\-E%M>q7*C27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<XVOckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0`lQ9Fbg+M\dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4!+n*fc8nac8B
+o`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#s7$&=~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJR6qC!G9MeS`pe^f_r_WPjfi%fH#W=Io2`E]Q69tN9s$6TJ"$Jh248q>E4$Z+urB^iY
+6:=OC9M8,G9MPI`r_`\ns&&\js%rhq;cEZps&8qss&/nqrDEMks%rhq;cEQkqG[Akr)<So!)rkr
+s&/nqrDW\ps&8qqs&8qss&8kqrD`u"<E3(#r`/qsq,R2j!*B"t!*B,"q,mSs!a/W-r`M`p=BAU-
+>?kH@?t="jEcZ>DDes*!AmnkB;Gg=i<)m.1A7oUkCM[j*DJNln?<pf?>?tK@A8,jqC2%BqBPD3u
+EH?;JH@:;BJcC<9JU`,rH[C'aG]n1LE,BB)C2\0:Gl2k7I!pKqJ:DuoGBJ"KEH6,DG^+FTFE;SI
+GBeI]I!pHnIXQZnI=["KK)p[]reM)AMMd7JMi3RVOd))rQC=BDT)kUYrM':ds.o[l&ZD_2Y->4=
+[^j&c_SjI6aNDa)c2l8<rmCbo#gq,Me^iC)f%0iM!7Unr!7h"srm_,%f@\aTf`Ts_gtVh`s5!S/
+rS@M/$esCgg"4d&ccjMO`r=!Y`r=!_aN)BCb0/$.c2Z)eci;Alci23?c-+u*K5b."='Ag1BjXt<
+9hdlD8rH>&4?G5K2(UpQ0/?'i7n,p82E*NUrB(Hg<E2sr;H-Rl:f1*a;Z4Q5_uIRR_>M1J_%FK!
+^qd_"^;%Cr]tD%k]Xtbdrj`EH\$rfR[C!9GZ*CP4YQ(d*XTPZ*X/c/urM]aos/,dnri#gq!NN4"
+XT,F%Y5b^*YQD)8ZMq30[/RK5[MQ-;J8o%*>$4s1=]ed1>?tE9=^"s5>[./1%9Zt<=&rC&;c-Ij
+;Gg?a:]=2jBP_F!Ci4-0EH?5EGBeF[I!pKpJqJc3Ll%%KNK93bPa.T&R[]k>TV8-VVPgDnXKA\1
+ZEpsI\@K5a^;%M$`5Ta;aihoRcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$m-a?2nF5u=o(2MQ
+p&F^cp\jmeq>^<hqu6NlrU^#>s+14>s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8ND/FECMl$-El_XQUr1a7drLs.`r1WhW)3L#MQ^M6XW2ZerVk^)_USal^U7J!KSZJgi
+WWB0#ri,q3"i%cYi-C:XRfT%MqOIPUs.9+[s.KCcrM'7c$DO5gU8+HWUSFW\q54+gs/>mq!N;pq
+W;W^qWrK.!XT,C(YHbA3ZMq02ZEsP;rNcR4[C,n=$F@+I['[6K[^NZSrj`!;#I_+M[^W`S[f3Z8
+Za0P9(pp]Z\$rlY]t_=t_8F:6b0A8_guRbipA4Ra#6+Jmo'Yc(ro#!Zk3D@'o_81Zs8W)qq"=7K
+md9E0nb;q\s8MuprVZWnJcCE'.,rLob00V\n$T0n\@U/Ul(Y)uY[NGpR$X7M>bS*lVl<j)>[h)K
+?!RB>$+RCLZ*1O@YH4u'Z]+nhqrPZ-_SsO7rl?"taihrTc-FPXc-"/Ie\f5E_Rm@h]!o#MYdFA7
+q6U(-DeE`tCMRd)DfKf=FEVkRH@('hJ:W?+L51VCMi<[WP*;/sR$jG6StD^NUnsufWiN8)Yd(OA
+[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lb
+p@n=\q#C0iqYU0hr;HTdrdk*#s7$&=~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8N?=@G`G(oXEoS)aepOiBqp43KcC3"64;gWq@rdFusI!U*arcf0#G]\%VIsulsJ:Dus
+IufYNND6?fG5QpkJ,t4QrdjotrIairrIafss+UK-s+UH,!/LQ0re^E-!/^]4pl#-1!f`5#rf?u=
+s,[/>!0?o:$'C=2OcYWcOHG\)OSY(?OHK=!rK%>JP*;/sQBdc%R/WK]S"?FTXg>OP`Qci[rmW1?
+c,mo=]!\fFWi)erY-G@C]"PquaNDWF`504%\[JoR\%TWW`VdY7a3;o[f\GECioK4al0%3lki_*i
+k2kX^i8<AFf@JU,g>1WDiSi_RiSrnXio/eLf[S?pc-Fhhf@^)S#he"kioK4`kN`'5!q,OHrUKpZ
+s7-0^rUgEhp%A%Qq"t&As6'DAqUE3VS=5k8^tQ\gMM[(KRE!6tI]S9"Bh<GfFAYe]Islcr:/F_c
+<)QRhNf8pTMM[.DM2?q@L&$Q*Ll_QKpts*%WL0!>R@9Y8R[TY5S"-)JS.D'VQ_BY,QBI5dMi3IJ
+L5,>VreYQ+BPD6tD/O93EcZ>GGBnL]I=?]tK7nu7M2I4MNfT?eQ'Rf*S"-(BTq\?ZVl6VrXfen5
+Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\ssfq>^<gqu6NlrUg)?s+14>s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8N6qL$H:\R`d;#3ue;"miB;@PH=3&W]R6UF%)5s[\"r]U0A#!4k26:!q(rB^cW9hn>V
+.9'&<r)3Mk!E)el;#X;l;u'Am;uKVo;#jMn;u]bo;uBPn;u]bq;uBPm;uK\p;ZTirrDNYorD`_n
+r)<Sor)N_qs&T/"rD`Smn5fQjs&T/$rE'8,=BJX*=',?&s&oA*1KRRV<`iR3?X[M\DfKf>FE;G?
+Des&r@9m&<<E3+(?=78UBPD=&EH,o4BkV'e?sR#C@Jsg<AJ/TcA7o^tEcu\RI"-^$L51M;L&H])
+L&Zc-JU`)prHJBiI=D0G&q>F]IsuinH['[QDJNltBP_R*rbi<bE,p&CG'A1XI=H`qIXcnIJH1<$
+K,fQ!LPU_BMMd=NN/`p_Pa.T&R[p(FU7n<TTq\:ZU&Ui*USXlgX0/_6[CNud_8F42a2uKJbKA#O
+bg"E2c3_hDd*^=je'cXkr6YDirmCkte^aZM!S?!'g&9\*g]?6fr8/(Bh;-i>g=Y$.eC2glbfe)K
+rQ"iU#04g+b0%rQrltMiqp6h=d*L(bccs_Yc-5LGE*ljP>$>'8KPF=X9L)'<H%eXIAiV:u.R$!V
+1c#&$#"D$@2`<`]r]:-]<W#f";,C+c:f7!cs2+TJ"Mhji^qoubs1\QJrOr6D!5&6As1/-='=YEX
+['R*EZ*CO;YHG"0XK8J&Wqr^pW!9/uW2HPlW;`arWrB(!X8oC%Y5b^*YlD!.ZMq31[/[Q6[K*`5
+\,NlGZDiV#@:*8A=B\m2=T)G+>$5$3r`^"=>?P-3?<:0.<E)pp<Dugn:Jpd\r_RNGBPD6tD/O93
+EcZ>GGBnL]I=?]tK7nu7M2I4MNfT?eQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>
+b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6Nl
+rUg)?s+14>s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+7>Ci4BHR&9_VrhehSr1j=fo:l2Wqk,L)P)l*#QscehWMubnVPBoaVPKu[SXuITX/i8#
+X/i8"WP6-]^:aE>JX2jtqjdVUrLEkXs.9(Z!MH.bU'76bU8+HWrLjFiTq\<XV5=$cs/5^lri,pr
+r2K[qrN$+'Y->20ZMq3/[/@61[/RK2[/R?4Za@+=[JmW7\,Ni9[0!eE[f3]7[/R?2Zi.6J[^ENO
+\[f;a]tV;!`Q--Fd+@4<lL+6=rV-='rVH3XmcruqiT01gn+68KrVQU&rquQcp\=Uas8W&qrV_<I
+KDtu9cMks@c27OSZ)On5c/I0bWlpiE?&i9\S6B3nV5C2lWENP1?=@,E>I_;U[^<?FZ*^a;YHmu1
+N;j(\k/P*N`W!pua2l<Ebg"JXc-4GVaiVTO_nsR7]t:ke\?`BCZ2M!(Zi.92BP_F!Ci4-0EH6/D
+GBeCZI!pKpJqJc3LP^nINK90aPEhK%R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoR
+cHstfeCE1&g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?
+s+14>s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+73?=R\hI>7TPreC#umY(1arIXot#&e9lEcH(srd>K0I=?QjH[L-bG]n4QFaegjIt*!!
+rdOj-#EFecIrTjeJc:6&JV&IFK)L>tK)L?!K`?c)K_gB)L51S@qMFs(!fMqnr/1W8NK!dqs,[/@
+rJpr=rf@#>!0@,@q2bB6rK7,Arf@#<s,Zu;!g8b2rKU!AR$jA3S"QUWY-GFI^rFRDe(3.&f$hpe
+`PB0rZEC:-X08h;]"Pu#air&Vd*KtZ`PK=(_SjF4`59F0`5KX:c-b+thV[;PjlZR*"6o+8lMg*0
+lKRNrkN1a_i83>KioK1^jQ,@\i8EMMh:gN4eC)gpeCE+#f@\j5hV[;PjQ5RglKdd&mI0N5naZVL
+!;$3^s7Q`ko_%nNq"t!gJcFp539S#VS=5k7S^H2XNJW7FQ`cm@I%k[\9571CFA#AXIXQZpJ5/m8
+<)c^k:5t9nM2@%CM2?tAKnoM]!/Q^9$iJu(\uM3bR@9S7S,JcmS"-(?S"-"<R@0D6Q'%AqO,]*W
+Mhd"?L\6K%M>q7*C27X'DK'T9FEMePH$XjdIt3-'KnbA>MN!OUOHPfmQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9nac8B
+o`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s7$&=~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+6t7S-<M;,[$`r_WVjr_W8bpJUrem8=9K1G_!L3&X,i5XGB7r]^ZO5!1ng4?Geor^%&[
+6UF(*:/4MU:3B*&;>jDg;>j>j;#sQnqG[GnqGR)er_`_np/:if!)iVkrDNVns&8tsr)3Jlr`&hr
+rD`\ps&AeooiD)mr)Wi!!*9&"r)inus&BG-='&L,>$+j+<*!9'>qfYtBPM@&F*2VKF`VJ<BkCpc
+?<gW6=^5<B@q94eD/XE7F)l27B4PI\A7]=_@q&sIA.rNgCMe'7GB\@^JV&N+K7ei1Kn]J\)MWs!
+K7\W&I=6QoJUrE)J:;onH?jaXFE)5:rbE<dD/F0/E,]f<FEM_LG^4XaIXHQlIt*%JJc^RXLAlr.
+M>W8FNffKhQC"#/St;ULU7n6QT:VUFr1+CkTqeK`WiWD1[_'5e^;%M$rP\`R$cU'(aN;QHbKS/S
+c2Grfc2GlbcMu5ldFA0H#hRYZf@em4gthtdrSR\7rnn7Cgt^Z<f[eU&da6=bbl,ZnbK@uNb/qcJ
+b0.uPc-?76rm:YlrQkPjqp,5c%*S+<JRD\b=^"s4G(]ci(-b5X;FNu39/.nC1Ft^O/i$$h7Rfg9
+r\aa<rB(Kg<`N*s;H$Ik:f("dq,.4.r5&EKrkJEG!PQ5H^&P_F]D];@\c0)A\$i]OZi763Z*:G2
+Xp;)1X/i8"W2TWn!35jos/Z1$"08N)Xo>I)YHY81Z3@SAZa7$Gr3ZU7\$u%?&@]0TVMoY,?X-`:
+=BJ^.=^:r1%9cn;>$>-6>$5$2>?=l(<<c<#;c6Li;Y<ia;#b3FC27X'DK'T9FEMePH$XjdIt3-'
+KnbA>MN!OUOHPfmQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0
+gYCWAi8EVTj5oFckiq?slg4$,n*fc9nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s7$&=~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+7CBQ8<QUo)e@rhTOgoV28Ws.C<oPDbisR#n5DW2HPiTVSE\UnaZVTq7jWWiN0!Wsbr,
+WP6-]^Q5jJLn=O8s.&eRs.9%Ys.KCcs.].Z"/;QeV>[:hVtd4hWVWXpWs,T,Xfo"7rj)O0qQp7/
+rj;R1#dgqDZE^[?ZaBM8rj;X3r3ZI0qQq'H[^WcV\\,Ym_SsR;c-tD'j6,duo_JI[rt,2,q"4(C
+lf[Eom-aE:q>:0[rrE%Ls+:7On'(dR(sDUOaL/(H\\dC`kHMX_A:okKQC1obUS@ac'rkJC>@1cF
+>[+bO]!\rOZ*C[AYH4u(Z]+o)rTMA;^r=F<aiDNCbKJ/Vc-FMWbfRrJcGRNA`PDJb"h:nDYd(S/
+Zi.7LB4u!oCMds-EH-&AG'A1WH[U?nJV/T/L5:\EN/is]P*D5uR@B_<T:r!TV5L8lX0&P/Z*UgG
+\%0)_]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2JFrq-?d
+p\4[^s7u]kqtpBjrVcBfJcC<$nc++~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+76?=mtoK8/NBn:^=ar.=s"s(h[Krc&ZkI!g?kI!g3eH[9s^G^"@TFFJ[hJ,Xs,Isuj,
+O,f66MJ76cJbt&uK)gN%KDL3"KDC,uKD^E$L&6Q$K`Qp`reU?+qhkB2rJLT4!fW+uqi1`=OHBC$
+qiD)GOH5HaOH5E^q2bQ;rf7&@r/^`8s,[2A!0R/?rfSpuPa.T%R$jD4T;/6]X0/_:]YVV2d+-h*
+gY(*'c,di<\[JiJY->:@\\,bsaNi<7fI#;&eBuUgcHXSVaMu6<`Q$$Dd*pY$gtprGi8EVVkNM*k
+kNM-mkPaTSkN1a^hr*MTk2k^bio&_mh?)Keg&'>-f\,!5gtgfDi8Werj9k&5l0@X'n*fc8nbr%Y
+o_\:bp\F[`rVhBJkl3X5^Ta8tR@9YZf:%bWLkh(rZ-RoUDGahV9lkAJ:O[b@IXZcA:JOng;c$5L
+NK&gPM26tELkUP;qM>3.NrKaPb.F[DQC+,0S=>t:R[]e:T:PtO&t>;WQ^a8&QBI>hNJi^OL5(J?
+p5&[(DeE`tC27[(DfKc<FEVkQH@('hJ:W?*KnbD?Mi<[WOckroQ^O>5StD^NUnsufWiN8)Yd(OA
+[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lb
+p@n=\q#C0iqYU0hr;HTdrdk*#s7-,>~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+6u84u]O;,Zp]r)!&`p/:]`nkpA`1GUmK3'KYo5s[b$5!M1n4?bnk4?P\l6:(N9s$I#c
+:/";97nZYV;X[H`;H*Nnr_rhpoi(ifr_`Dfr_rbnnl,E`r_reqr`&qtr`&qtqGdMpq,R5k!*B/#
+s&JttqH*Vt!*B,"rD`l!=8l>W=&i7&>?b?;?!h#MAnc$uEHZSOGB7_@C1q3h@:!/B>[:ZC@:Nk^
+D/scBG'%eHE,>Mh&8GihAS,LcB5)'rDfg,EGBj+5!.=cq#(V8TJ:W6%rdt0&!J5e"HjbCRJUi9"
+I!^3bG^'.1!d&I&rGM^VErL.YF:<>:GBeF\H[:'fIXcnIJcC<;KS>/9M2I1KMi<XUOHG`kQ^=,0
+S"-#JRfSqDrKdGL,FP!jStMgSVl?c%['d?O]">Vf]tD%m]tV7t_Sa=2`Q#s>ao9EhbK@rKb0.uP
+c-QC:$IdPWg"G*6gYCWAro!e7s5FOIi8EMMhVI#Bg"=m+e'e6Bq9K5ic-FSZcMl2idJ_Jpe'c\C
+dJqSlci;8ibQ#^5mC\Hd>Zk35>$5*W9hnDW5XnOMQT%&].P*D+5<LVV7nH9B7RfBr2Z5]H4B,?[
+<E)mr;c$=e:Jgjb"Mhdf^VB`]s1SHFrjs,\]=PP`\@B#V[^EKKZa-j@Yck75Y-"e+XK/B#WV3=l
+X8T."XU;55Y-+t3Yd(L>Zi7?/[K!]8\,!Q3\H0:Pq7$a<X,hI8?X6f<<rH/*>?k?9>?P,.>Q7n,
+=oVS5=&r@$=&`-t;c6Lj;Gd'_rD7EFBPD3sD/O93EH?5FGBeF\I=?]tK7el4Ll%%KNfT<cPa.T'
+S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(sm
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14?s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+7GCNFf[Uo)\=s.oRfo:l8Ys,e1gR@7Z`VPpJlVPC)bVP^,aTqJ$MSZJlmWrB(!WW0[3
+^BD3MPC/PjT(\]WSt2IEpRhJYq4[h]r1O1dUSRjb!2f^mrMT^qrM]Xnql9[sri?4)Yd(J4Z2h61
+[/[K3ZiIH3[/792[/RB0Z2V$3['R-I[ILX'Zi7<4[^H+Cs0i`R]"Phn_SaC9cI:G$hr<e`n+6;O
+rqHF%rV,sRm-*Qnl0e*8p\TOAJcG3=2YG;:aihj&s6d:uWOBUum(]a'P'VV:@$[4L@9fP*Uo1.p
+>[1]F?s[*L\@]8[[Bd*FZ`pO8q6Q"Z-0rgg_8XO>b/_TCbfe8YcHaYWb0%fIbeq?C`PB*t]"58T
+Z*:V/Zi.7GAnPdlCM[j*E,fo?Fa&%TH@1-jJ:`E,L51VCN/`m[P*;/sR$sM8StMdPUo(&hWiW>+
+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHaeae'uq"f@em4gtgiFi8WeXjlY^hl07L!m-X60n*olHncA@S
+rq6<b!;HHes7u]kr;6KkrVcBfJcC<$nc++~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+77@:sG"K8/NBmY("\s+:8d$Zg9.<IB1BIXZZkIf=[!G^4OVGBJ"Wqg]$&I?'AMNfA[8
+D0l)2on33pr.G$$s+13%s+C-#rIt6(qh5-,LPUc]M>E,/MuJV5MuSb9NVeb7O8b.@O-#G$O9Lc.
+O,oB`r/Li>NfO+"!0I/?p5]-5rf@,BqiLi@5Eq@rQC!u,R[]h=TqnK]WNEG5]"l;.db*=1gtC9-
+d)a,>\[8TDXg#4D]Y25(dF[+.i8W\Ph:pW8f@ABud/M<(cd:(hfA#*9h;7#HiSrnXjlP[hqWAUT
+jQ#7YiS`\SiS`VNhVI&Egt^Z=f`'M&fDsV(g(`;sgtgiEi8N\UjlY^hl07O#mI'HBnGi%\oC_eT
+pAXgfq>1*frVZ]ls7lZhrq6Hhqtp?irdk+Krr_]9[@@/a17Z2;`/ot8L6A1PO+)Y!?sm\EF)lA"
+9mqJ<IXb*g:/k1j;,E:3Nf8jPLk^bBL4tA<qhY</O8g@$jNP?=T9Ye5R[fn:S!oe9St;LDS=H(;
+R@'D-OdD5mrJU`5reL0&rJ>9$B4u$qCi+'/EH6/DGB\=YI!pKpJqJ`2LP^nINK90aPEhH$R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB+]k2tmll0@U$
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14?s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+6u84lQN:f73giDKAJohkE\$8aP!2`N`_69mh&r]gNK5X,00s#^6C!($TN%7*<H5sn@@
+:.n;F78HbY;X[Hc;H$Ln<:a&g;Z9Vo;?0Sg;Z'Jl;Y*ia;Z9Vo;ufqq<:<i`<WH5#<r,er<qo_s
+=BGH%r`/u!5Z_&j=BAO)=B\m4>[(H<?=72QAnl7*GBe@TF)Z)9BP(^\>ZXs.>[CcE@qT\#G'J@]
+I!U!YF)l5;DJa3*CM`ue"E8C'Fa*h0s*FZkrdFcprdP?*It)opH[:$cI=-?ercnfpGBJ(PF`_YE
+EW0nXEHD)#!HWA]FVf4FGBnI[H[C-gIXcm!JV&Q/KnbD?M2V=ls,R2BOoCODPQ-^DN\?BNMi*IR
+O,oBbP*2#oQ^XG9TVSKbXKJb2ZEggE\%&uZ]">Sg^V@S#_Sa=2`lJ)"s2b\lbK\AZdF6Xtg"P39
+rn[S1rneCJio8qThqm2FgtUT;f[n^)eC2nGdf.]&eC2prdaHOjdaQ\EeGRkseGdo(daQUkd*L%`
+c-4E2ap6&0aQUU%C1$sC(gC0ON,;<a9gD-<Kg@^[2(pR=.m?*Y1c#&$(.L\O2DmW]4$5Z,<E<'u
+;H-Un;G^.dq,77,"MMO_]Y+3Ts1/`O\@B#W[^EKLZa-j@Yct>1Xob`,X7`LjX8]4"Xo>L'Y6(u7
+ZMq31ZiIN2[K3nIq7-F7!P#]=])0#<\GWo:\d#U;N-Ai@?2dq1>$5!1>$G//>6%h*>6%k+=V"V9
+=&r@$<`E$q<)HRl:f-j]rD76@B4u$qCi+'/EH6/DGB\=YI!pKpJqJ`2LP^nINK90aPEhH$R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB+]k2tmll0@U$
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14?s*t~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe+GE-Hl!VP_k>qkO4eo:c\[OH>s#QslhjX/W%pV#I4jU^<fgTq@s[XK8J(r2]k3$,=3f
+Rrj:NT:__QTDtJ`SY#bMs.8nU!20.]rh07as.BCdUAgtgV>mFlVu<RoWVi^oWV`^pX8f7&Y->/0
+Z2_-0ZN.B3Zi@E3ZN.B3[K!W6[0<nBZEpmCriuI,s02R0r3HC1rj)X4Zhq-/ZNIVB['fk@s0icR
+\[oDe^VRh-air2_f%Jg6iof[up%nF_%K?1so^D/4lg4$.o(W$4s+14>s#9f$b/hZEs8Vr)Z`:.8
+dGWNNWQ2G]M-6.2Rp03pV5C2lWEWV2?sm;G>.M5S['[*CZF.!AXKhW.MuOd^cb@68aO&/OaiMcO
+c-ah^bK\5RaNDZC_p$*<rjr?E\$E6B[.^j)ZuoqlBPD3sCi401EH?5FGBeF\I=?ZrJqJc3Ll%%K
+NfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8M
+j5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe+8@VB_-L5+iEl%JV[$ufusEcH+uI"-WpIXV3C#CC]@H$4CUFnpRfJ,YN/NWXN>Eddh:
+pk&Qur.>!$r.>!$rdb'$re(!!r.PB/KnP,5Knb?]LBE?hM2;"br/1N4rJCT5rf$c7rJpl<rJpi;
+rf@,@r/_#ANfB%qNWY?(O,s7"!0-f7rf7&@rf?r<s,dMLP*;,rQ^Ic?*1EFiT:hpRVQ$`*]"lD4
+eCWL1gY1?0bf7K4\?u7@(pgW[]Y__7dFdC:j5f:\iS`VMhVHr=f%'cN(YIHrgtgiEio8nSiT'%^
+kiq?qki_0mk5OEFj5T%Ui8=Oi%Gopth:pZ9f[eX(f%8RQgATe+g^i6!ioB([jlPXfkih9rlg4W=
+!q5XMrq$3`rUpruo^q\Cmd9?+l0.<nk2tdim-sT;rUg-]"8;Kaq>U9lreCFXh93:"S!oe9rn&NZ
+O,AOIRB<*5J#&<-Bh3;cF%];YIXQZpInrj7<)QRj:6(?nMZ&>6M26k>L\lo.Ll_QEm-2j2X.P]G
+S!ot>Rf8cZS=Q7CSc5,jS!]V3Q'.JtOc><[N/<:CL@pB$M03BABPD3sCi401EH?5FGBeF\I=?Zr
+JqJc3Ll%%KNfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(
+g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_7o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe*t92&+X:u"qG;Y!]^;B.SN1H7<Q2FBbt5s[b$5<_7o4Zkki4?Gks6:+!963g:]9hJ/E
+8l#@_r)32bs&&nq;H*QorDW\pqc!Gks&8\jrDN\or_ihq;u9Jd;ts8j;ta2h<W?%s<W?+s<W#nt
+<rc;#<<Z?#;H$OqpK.8nr`/u!s&];)=T);@=BSd1=]ea-=^,0=A7o^tFEi"RH$OONC1h'b>lIq,
+=U82:?tO.kF*`65I0b1FG^"=TF`hg)EWgB'FEMd+GlN'pH$FU]I=6QorI=ltrI4cns*=Zjqfi?i
+G'8"LEcH$sD@CH&EclMJG'.kJF`hm,FTHZ0rcfK0H?spcI=?ZrJ:W9'KnbA=M2I7NMi3FIKnP&0
+JUdZH#((`FI=R!*reEFgLPL\DNK0*aPa7]+T:r!SUo()iXfo"8[(!TV]"5Pf^;.S&`5]j=ai_iP
+c-ObadaQatf@\dUg&Tn,g'$*_g=b3Zg&K\'f)F5"eGn&!e,Ikseb[i&e^i:$f@SU)fDO2%e^W't
+rmNdRdEp1`bfn5OaN2E@`l,gGgN7%6=BSa/>CV3R:/F\N6UspA5s&";.Q&Y=4?G2P8k;E@77R87
+&Ni-;4Zl\D<)ljr<)QUk:espa;Z=<.])T>@\Gs&<[f<]BZa-j@Yck75XfSS(qPs:js/Z4&qlTq&
+ricC-rj)R1s0_j7rjVd7!P,`6\c0)?\[oBN\bE]8]*>gIK6q<@?N+(3>$5*7>$>21>817F>?kB9
+=]eg-='&F%<`E!p<Dl`o;>*fa:j$>]BPD3sCi401EH?5FGBeF\I=?ZrJqJc3Ll%%KNfT<cPa.T&
+R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3(sm
+lKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOICDK'iSTr+^UV#[CUV>$e\U]7&+P`h/rR$XMFW2Z_mUnafcW2HGeTV%gIX/u/u!NNg3
+^'0M[GDi)crLj.`!20:_!hPsRrgrhUs.K1]s.K=a!hc6]rhKIg"/VlmVu*FmWW&jqWVidoWs>`.
+Y-+t3Yd+25r3HC1rj2X3!k#DCrNlg9Z*L^BZE^\3YQ1s-Z4+"DZ*CUAZE^^AZa@+<ZN.E3ZiRSC
+rO3WP\%0/b^VRe+aNVrWdaZh"g>:oUnFcSSp\t[#q=jUQn*TZ:pA"L_JcC<$o)CZHeB#\N`rGZ*
+bdadW]#<XXe?6f]KjKb0R%%;e>c"6pVlEs+>@:iG?!FkQ]!f#RZ*LdCYcY/+Z]"i0ldNYca2uZQ
+aN;TJcHOY\cHXVXb/qfK_o'a=`4W^n\[\rLYd*o.r3U3NB4u!pCMds.EH6/DG'A4XI!pHoJV/W1
+LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P3:
+h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14@s*t~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOI7?Y!qnJqf$KK`Hl!L$OEcK,8E@CN+<6H[UBmIXHNiI=6KiH$ORWG'<h7!.Xuu$%ID`
+O,f67[q^*_K)(&sK)1-"K)^E%K)L?$KE-`)K`?c+K`6](KEm3cLPL\AM2D4frJCB.s,6l6!/pf7
+rJgc9s,[)<!KW9?O8k=@NrY:@Ns(K&NK0"qNX1]+NfB'YN/`nqNrG(>OT(:@Oo:C>OTgo3Q'Ri+
+rg<_Ts.'+[-D$m*W33P@_T'dFe(34*f@ABtb/V<5]!erQ\@]Gg_T1!Rgu%)OroFCFio/ePgtLK]
+g]-(/h$W#sioB(YioT=ckl'cGkR6Y=k2k[bj5]+Vhqn:es4[k5f[n[)eC<(%g&B_)g]#t6h;7)K
+ioB([jo4BNkNM0qlKdg&m-X60nG_nVmf2VXkiLg]h;$cag'66ag"Y?@j8S0UkN:skl0@U$mI'K4
+nF,uEq>1!cr;M`V,kJpaU77U?RH_B2SW\k^LQes3U4&GO@S:EYF*1/P9n.P>IXh>l%T?>);,<44
+NJi^OLPLbCreC<,!/Q^9.HBaB^oX5sR[fk=SXQ%<S=?(ASt2@@S=>q6R?Wo%P`^ubNJrdNKSG9U
+M#<*EAnPdkCMRd)E,fo?F`qtSH@1-iJ:W?+L51VCN/`m[P*;/sR$jG7StMdPUo(&hWiW>+Yd1UC
+[^`l[]Y;.s_SjF6aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail07L"m-X60n*olHncA@Srq-?d
+p\4[^s7uZjr;6KkrVcBfJcC<$o)F4~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOI"7S-9J;>a8];#jMD;?'N$2)I*J3&j8l5X@^85lX%W5!1tk4?GYf5sdh&62j1W6paUD
+9M@3M9MYO`r)35cr)3Jms&8kqqc!Gk!)rkprDW\ns&8nrr_rYkp/C]`r_rGg#$"W%<`W4"q,R>n
+r`9/%<E/rrs&&nu<`]#ts&K8%<E<1&r`0/'=BSd/r`9)#r`B,#-WF#C<**:1@:X"eDfKiCH$FOW
+Ec,W)A7&SD=^,0<?=7;ZEd)bRHiABqH[9s]G5cX`FpiM;G'A1VH@(!bH@5^@s*t#u!J,b"ILCRO
+H[C'aH$FU[G^'.1$Zg?.DJj</DfB];FT-F_FT-F[G5ldcH2i1:H[L3hI=?WpIt3*%K7no3KS+f'
+H?OCPF)uABEH6)AFa&.ZI=2$B#C_/RJqSi3L]3#[Mij0cPa.T'SY;jWWi`J/Za7'K\[oDc]t_A!
+_o0L5`lH0CbKJ,Rc-FY^dF/$A!7:_krQYPjbfe5Trlteqd*U4he'uptrm_M0e^i=%f%8O)f@SU(
+f%0cL'\(U]e'c[kcHXSWbKJ#KaMu3;_o)Gi"m1VI@9d"8=W*u=F]2.55X@n885M661+jn04Ztn\
+1,;Bjr^HrL2E(Os#sCCM<`N*t;H-Qn;#sHiqGI='rjN!<[C*C@ZN7>8riZI-Xf\\+orJ%mriQ1&
+ric1's0M^3qmQF4r42g<qmla:r42O4q7HX;$+mNhHYQtp=^"u)=p\G<>$>-6>[(B8r`K2%#Zar+
+<)c^p;c<Tlp.tT_C1_*lBkqL$DK'T9FEMbNH$XjdIXm!%KSG8=MN!OUOHPfmQC+)0SXuLJUSOcb
+WN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9
+rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s762?~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOIHBleQXV>@(=V>$ebUF`49UQgq1S![Z\Vl-PlW2$/cV59u`TqS$LXK8P*X/rA&WN!SF
+^V7C>RX^RuU&LedU&CVaTDbA\T)kUWrh'=bTV2+Srh0:bs.]Ld!2BIf!2TUj!N)dlW;W[qW;`dp
+Wr/ptXT,F&Xokl3Yd+/4!42[3rj2C,rNZI1ZM:[(Y5tl2rilF.!3lI-s0D[2rj)O0,dana[C3NQ
+\$`]T]"Gem^qmq0bg+P\d*^=ngYUrOkj@s7qYg0g$2O8cp\Xg^q"ao?s+14As#9W+`Pom;`q05u
+^TXfM_r0k%['ZT?K8a0*RTa-)USjrdWEWV4@:<MJ>IqDX[^ENKZF%!CYHI]-N;k6he\K#Ab0\JX
+aN;TMcI(%cccs_Wb/hfE`QcE@]Y(hf\$E9CZ*sD5r3UTXAnYjmCM[m,E,fr@Fa&(VH[U<lJ:`E-
+L5:\EN/is]P*D5uR$sM9T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHjndeC<($f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14@s*t~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOI9?Y=1tK_gGbL$"'cK.1YREH6)!H[L9kI=6EgI=$9cG^"@TFb#!nJ:E'!J:E$.Nf]9\
+DL?>LqL\^!!/1<'qL\Wtr.=j!qLnj%re19)s+LB*"GV\fLl)%c!Ju^5M>rJ5M>N2-N;nn7NrP1>
+NrP.?NrG+>OT1CAOSt4ANfB%pNr+h9N;nn;Nr+n;NrP.?OT(CAOT(@EP*;,qr0RSTS=H/KS3EL:
+UoCE"[CX)ia3;lWeCN4#e'Z@V^V%:q_8*e#_o^9RfA,?Gk2k[`iSWSMh;7#Gi8EMLhVd>Oj5oFd
+l29iEkl^/4k2cO%%H?@(hqm5GhV?l>f\"gSec=>$f`9b'h#?.0hZ;]qro=%>!TrSEkks]Fl4!"B
+kN:mdio/eMg=OpTe/$TaeCE.%f@\g3gtgcAhr<\Wk2k^cjSn-Gj6#Rkm-X<4p%eNIs#TehYbRVT
+R@0PUi5(b=K8,M_c'O!8FAlU^9lb;J:ecCgI=?Z@:JXqh;c$;NNK/sTMMHqCLk^Y;L]!#/LlhW[
+oBb&EWhYrLS=?1BSXZ+=S=Q:ESXl7?S!]V3Pa%N!P)fO$!K)[3LA$H$M03BABP;-rCi401EH?5E
+GBeF\I=6TqJqJc3Ll%%KNfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&T
+cdC1jeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFA
+JcG<@J,~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOI#85)`Q;Z'A[;>j>X;>jD_;%kcB3B&oV6:*q'5X@Y#5<h:p4?NO)rB^KLr]plX5u(-L
+92.B8:/Caar_iAcs&/hpr)EYq!*&nqrDNVnr_iMis&B"sqbdGn;Z9Vo;Z'Jg;YsDb<!--$<`T,u
+s&K(u!*/nsrD`hsrDW_o!`N&tqc<\t6rd2c<E<.%=&i7$='/U-='&F'=BAO'<)Z^p<EE7&='K!@
+Anc.%F*2\NG'%eCBOY=V@q&hP?X[S^Ci=B=H@(!bH$T@3s*#K.H$FOWG^4R\H[L6kJV&H'J:E'!
+J:W9%IsuclHiA=$H$Xd^GB\4RF`MMBDf9UoEW:%ZF8^4YFoHOhGBS1SG^+L[rHnHir-\iuH[:!^
+F`VM@rb_jUDJjB3rc.mY+a&!SH[U?lIslcoH['g^IY!*(KnbGCO->p!SY;jWX0/Z*YlD!.Zi@BC
+[C<ZW]Y;1r^;%Fu_Sa@5rlGDc`l,d3^q[Y`]ahck_8=.2aND`Pcd:%ddJD8ke+qMle,Ic/dEp4d
+ccs\VaiMQD`l5p8_o'=,r4k&%ie1W<>$4s1=^,'tC/n"p5X\.t83/je.P*D,5!:SU1.ar+7RT3o
+2EX)`4$6SG<rGqu<)Z]o;#*uhZi768Z*:I9Y-"h-qlBImriH7)YHRr0r3?4+rNlO2!O]B7\,Ef:
+\bEZ9\[q^LpU^(1!4qp:%&er/Cg^LN>$+p2>$:Z*(0OmH>$>$1=]SU)<E<'u;-$Rl;c-FhpJ:]`
+F_,/uBPM=!DJsK6F*)PKG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#Y->1;['mHS
+]"G_k^r"".`lQ6DbK\>YdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*mdKW6nac8Bo^qhLp@e7Z
+q#C0iqY^6ir;HTdrdk*#s762?~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+7ID0:8fq52K7p7rLfOdh`,@ATiuX/2_iVPL&cVPKrZSt3"^X:_S9X/i87]YD1sOE?/J
+Una`\r1a4dr1XChTV.pKT:c+UrLs1_q4Rn`Tq\:\U&UkdUBIBhV5C0dW;<LmWr&h&XKAV-Y-5%5
+Yl(g,ZN.B2Zi%30[0!\?ZMq04ZEUR:r36(%!O/d*YQ1s,ZMh'.Z37M>ZEpt<[NMue\@B)^]tV>"
+`QHBJc-O__d*pLqfA#0>j6?"'pA4d]rrW2urdk*#s761Lro:c3`l>sss7O78XgZO.man,*]7YQl
+@$[6b@U,\*V5UGo>?b9=?sR#@\\5M]['[*E['Hp<Z21ecs!?p`_SXC:d*^(Xb/qrQdF$4_cHXPT
+aNVTAc,dl;]XtebZE^X<n[/=-BkM*nCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6
+StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#
+m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBfJcC<$oDa=~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+79@V0P'q1e!bie7>a"`.spEH>+YHj"qHIXHSCHNe_?G]n7QrI>E.J:E*!Iu]MLNfS9r
+F+T&BK)L<%K`$K#K(susK)UE%K`?c+K`?c*K`?c+L'NEcKnY8:Lku"dreLT3MZ/J4MZ8P1M?/Zq
+repi:q2YK9!K`?<O8"_;O,].sNqeV6N;nk;Nr+n;NrG+=Oo:@BOco^-!L/oKQi`_HSGo)ZS/\#j
+StD^OV5:2r[CX/maj&5^eC;soc-=JUai=>!&'2o>db*@4ioB+[io/hPhYuIBi8NVPiSieVjQGak
+lMg,Mli-/clg!d"kN([_ioB(YiSi\Nhqm,Ag=b-2rRq5)!SQ3)gAp%-h#lNkiSsjs!9O4B''JKB
+kND'lk3(mhjQ#7YiSWMIqUu)*f\"g.qq2,+gYLiKroO1@''%s/i8WbVjQ>Xilg4*1o_/+XP5bX7
+]r7:sR2;@Ai6dpQMhRUja.Rp0OChm7:NLSN:ept<(4Uj0:JOng;,C&KO,]$SLkghDLk^Y>r/(H0
+O8gWtfYX\cR@0S7TV%dDS=?(>T:VUES=H(:R$j8)Q^*_pNK0!ULk^Y>nVI3VBkM*nCMRd)DfKf>
+FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WL
+cHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$oDa=~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+6t8P;fS;>a8Z;>*iX;>=&_;#rO0r\tZO6:!n&5X@Y"4[)"m4?Ybg4@2A#6:(T;!CK3Q
+:'O?d5"eUJ;Z'Dj;YEue;Z9Vi<;TVo;ZB\p;ZB\p<;fbq<;]\n;Z'Jm;Z0Pn;ZB\p;Ya8k;ufqs
+;up!"r_rr!<`f,tr`&hsqc3YqrDW\n!`N&ur`0##r`0##r`/nt!*/tu#$4o/<``C+rE')$<W5qu
+;c3Nj'3&(=?Y*ndDfKi@GBRtEDJa3(B)Z9GAS>goDfg2KH2`*mH$FOWGlE!gGlDspH@('kJV&Q0
+L5#VZ$%[\[K7SK!H?jf8H3nkCH$FRXG'7tKrc/$\FSp4YFSp:\G5QRaGQE)9qg/<jrd4Zms*Flp
+H$FRXrcS3`"Eed,EcV,"rGi?jH$k'jJ:N)uI!U'`HN&<lI1C^WK8,2?NKB<hR@B_<TDkMkU8+N]
+VPpJpXfo#-Z37PC\\,WT^_FJn\@&`N['R-I[C<]Y^;7\)a2lF$b5oi4rltJe!6tMg!mf0:rluA,
+cHOMUb/q`Ga2Z*;`5BO2_SX.*^q[\"qnE*D46)E>>Zt<6=BepUQ$-2):-_EBEC`DW681#L/3Z-L
+1G_To7n#j92`<NT4Zkkg<`W4!;cH^p;,U7f;>O/jYPt^'Xn]!sXo>L&YPtd+Z21d)[/RK3[f3`;
+\@K0F])B5@])92:](Wc9]_K,:]E#SC]F(R/J8Se#>?P'2>5h_+>5_\*=Tho2>?kA2=:J;4<`N1#
+<)H[o;,U7gnPK6sBkM*nCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&h
+WiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6HjrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-'U7Ed!&'q53k^qP<APrhT=cqkP[*P)u0%R&$XWX/MnmUo()eUS=KVStN3fY-"h,XK&>$
+^:q:p^P2]5Mu9FOV#$hdV#6teTa@BaTV/!PU7n<Tqk3eZpnIe`"f.ulVPg?gW;W^oWr&jsXT,C&
+Y5YX)Ykt^,ZaB\:!42O/riuO1riua5Ycb.4Yd!o+qlg++ZMq*4Yck77Z*F;6!k#JFrj<oX\%0,_
+^;%M%`Q--Fc-FY^cd:"ce(3.)gu%)PlL4EArdk*#s5j8?lFt0T`5DWQq:E<_YIrBHbeC1)TOX'e
+QC"%D@&0ZsW2HY">[(WE?X6mH^Upq^['I!FZ`pU9[/71gs!@!c_nsO=dF6=[b0/)UcdC(`bfn8P
+aihZBc,mu=]=PV`['HsAn[*IMAS,UhC27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<[WOckroQ^F52
+SXuOLUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-'9uA86(6q1eTsqLnTso7[*qnq7'^CMWoi'mtFWIslcnI!pHjH?a^[G'8CeJq8LPIfb.M
+O8Y(@@dn2Wr.G$$rIb'%r.>!$p4N?rre(0&pkA^%rIt9+!JcL-M>rJ4M>rG5M>N21MuJ\8NVJM7
+O-'@%!07&>plPK9rJpH.rf6l:rf7#>!K`HBO8tFBOpmP=QBmo*R@0P6S=Q8NSc5-+SXuIFTVA3Y
+Xg>OO`QQTWe^`7%e^MsoccaGOb082[eCNF3i8`hpi<%rphu;O6ir.p;jqd.Elg4$*m-X60n*]Q,
+jlGF\j5T(Wi;VU9h:pZ;p"9l0g"Y9:gtgcAhV[8MioB,!jT+H;jT+B@ireB&io9gn&`DR(i8ESQ
+j5]+Wi8N\UjlY_)kPs]EkPscFk7$VAmHsB3o(2PKq>:/Us#JiOXHo6BR$m3^fVb$nJrcA1Q]cp'
+G>N'HFE2Is:OdhAIsuoC:JOkg;G^/LOc>9WM26qELk^V;qM:44+S=='XehGSSXc@FS=5t;SXlFF
+St2CAS!o_5QB[`$PE5^&"H&%kLPG>TG%>/rBP;-rCi4-0EH?5EGBeF[I!pKpJqJc3Ll%%KNfT<c
+Pa.T&R[]k>Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hV[8Mj5]4_
+k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcG?AJ,~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-&OH8P2`Tr(uu^r)!DhpJC?Vpepud!];_hr\ssH69tN9s$6TK#!P144?GYer'LEL$U@$F
+:JOYZ:+_l0:]+,g;#jMd;#jMk;ZTirqGd/erD`,^!)i_nr_i\n!)iSj!E<(s;up$"r_rnu<rH%u
+<<#r#<)Z^ppf.;nr)<Vm!`N&ur`0)#<)rous&K&!qc3Ytr)ah>>$G04=BAO';c-Cg:/4S^;cd10
+@q][uFT-FsF`VSADes0#AnYmmCi=?:GBeI]rHSHhGBa"1!.+Wk#CM#OJV&W3M#N,8KnkJ=KReJs
+H$T@7!."Qgs)n]kFEDSEEcZ>EF8^1]F`dV+s)n?bs*+Her-8?iH[Ga<rd4Hg!.4]ms*Y3$IXQTk
+H[9saHiAEmHOkLPIXm!#JqJZ+J:N3&Jq<oO)2!WsL51VBMi<XVOcbfjQBml*S=Q:GTq\=]V>d8!
+V5UK"Za[KW]XkY`[f*T5[19XS\%0)`^VRh+`5]d8`r<pX`lJ%tqoA`V#K=^%_o'@._>_1L^AGVD
+^AknH]_oJC^'hTe]tD#3Vf6'L>$(]*0r&Z9>>n9^6V(<M765<B.Q/_>4Zb;Q8kDNB7R]9p2EX)b
+4?QVE<`E$r<Dc[m:essd;ZBVmXoGL#Xo>I'YPtd*Z2M!+ZN.B0[/dZ7\,No:\biu3]DfJB]DfJC
+]DoJ?]C<K5^%]/T]r%`\DI6XP='8^0>[1K:>?Y69=]nr->6\52=B8I(=8l2)<)H[o:fC7inPFC>
+AS,UhC27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<[WOckroQ^F52SXuOLUnsufWiN8)Yd(OA[^WfY
+]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXOFCiFWTo;;D]p8%)PqP<k^)5NLYSXQ$WU8FojVl?PiV5L2eVkB]STWP?qXT,C(X/`6!
+^)"JOT7E-'Vl6MjVPU,bUna]\USO]\U\pkcTa%6bU8"EXU&:S[U%b8bUSXibVl0?hri,jrql9h#
+Xf\c(YPtd+Z1bL'Zi.62Zhgs1Ycb15Yk>3tYl:mLYck75Y-5(7ZEggD[C!?M[^WfX]=Yel_8F73
+aihoQrQYu#d*gFof%8R-gYV#Wnb;q[JcC<$kl3X3]u7k,_Z09-lcuo?^<u&hfWi2[@pY7)R%.Ag
+Uo'udVlO!*>[_&K?!FhO\[JoQ['R0IZELC8qm27]*UMS#_T0mKe'6"XbKS>Zda-4`cHOMRb/;0C
+aN)$o]*,UMZEUS&[/X]TB4u!oCMds-EH6,BG'A4XH[U?nJV/W1LP^nINK90aPEhH$R@B_<TV8-V
+VPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3
+nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Bs*t~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXO9?Y4(qK_1#rL%^2rL%L&pKD's+D/434F&RC4It)orrd4isH[:$_rcS<mJc(&uIgLXd
+NfT3\FaS+Tre1-#rIjWlrdt!!re1-%rItH/L5(J>qhYE2M2I2iM>2u.MZA_6NVAJ/O8=t8NrY45
+N<#";NW"n8O8k7>O8k=DOHG\'P5gajQ'Rc(R$sM6S=H.?SXc4>S=Q4BSt2FEU84ZdZb+)obKnT7
+dKS%Fd*9eYrlGVmcICM%hr*JPio8hMg\fh:h;7&Hi8WeWk32'plg4$<mKW(EkN1dbir.mAjPo+S
+gY1?[f_sG#f`0Y(g()lnh;6uDhVdAPioB([j7_L3j8S-=jT+HBjU:/2jlYagjlY^gkN;d*!9X:D
+rosIJ"75FCn,;Y[nFQ;Fp\=R]rK.%?hoN-iR$j>1nA!YgToXegR'W0VIu82B95.+AF\GS[Isl`o
+Inid8<E)mo:lLBnN/ELJLPgnDL4tE[Ll_QapY!KgVOEsDSY2[HSXl7@StDXHSXc7@S!f\2Q'mo$
+OH,9ZMM[+DL@C$!ASu-oBkhF#DJsN8F*)SLH$XgcIXm!%KSG8=MN!OUOHPfmQC+)0S=ZCIUSOcb
+WN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s7H>A~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXO#7nZQO:Adr[;>X2c:]4,W;>3ri;)L0/3!;0+6:!m962s1L4p=)34ZtkgrBgNMrB^cc
+:/4GW4%;q?rDMuZs&/VjrD`bps&/_mrD_rYrDEet<)cdo;YF&b<;T\q<!--$<`T&rqGmGl##\;q
+;H$Oor`/tt!*0#!s&K)"r)E_tr`B&#&6W1@>$4s0='&F&<E)mp:f.-h%oZM6@:s=mE,fo<Df9N2
+D>n8kB4Y[gCN+B=H$Xd]H$OUVFE;JDFEVkPG^+L\I!pSEL&Zf1L51M:JUMnDH4,(II=?TkG]n4N
+FE@D$r,_m[rcS6ar-/0ds*"]nH?sj_H?jf8HN&6lI=D*B!.Oot$%[VWJUrE)JUr@MK)L9"K)UEY
+Knb>;Ll%"GLPL\BMMmFRO-#KePE_>uQBd`%R$sS=U8+Q^W2Q\qX/rJ-YHtUE\%'!J]DoJ@\c98?
+]DoMP]tV7s_83q'^q[Xu^&GbF]aqim^q[\#_8*h#^:V"f\[_XJ!4Mm:rOMm<"M;7X]=dpN"Ot)*
+@U&h61g+"_?Ai;r;*[WA;F=2>4YJ<51FtXN0/H0k7S$!;3&WZV4?GYf<**(!<Dujr;c6Ii:f.*g
+s&&fus/uC*rilC,s0D[2r3ZC0rjMg8rODm<!4qg7qRl^=rk/9C!4r$=!5/9Brk8<DrOr6D!58<C
+qn;pA%^Mg_E*usT<`iL.>[1H9r`^7G=^#$5>?k?6=BAR+=&`1"<)H[o:K(.g;=RK_ASu-oBkhF#
+DJsN8F*)SLH$XgcIXm!%KSG8=MN!OUOHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6h
+r;QZdrdk*#s7H>A~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOIIC34f]VPj'`r2'(^mA9NPqkY'lOIDQ(@&Kp"Wi)biUSaoeU8aiZTV)4c&$)e6XK8J&
+]=l"o^liemV>R7mVl'EhrhTRj$)FDnUSOZ[U8"@\UAq"gU&^ncTELs_U7n7ZU&C\cU]-tlUSO``
+VPg?gW;`auWiN2#rN#t"!3?+#!NiO&YQ(g/YHY79pp0h(rj;[2rj)R.s/uF,qQBn%rNH"#s0!cP
+YHP17Z*L^B['d<M[^WcW]">Vg^VI_(a2lBEb0/#RcHjhadaA'B$e3e^h;IAXmdp5Ordk*#s6K[f
+^Vdq+_Z'Qgl,gcD[`mguaK;M_H@h&_R$q2d>c4KsVlQe#>ZtTG?!CIE]=58V['R-IZ`gI7qm27]%
+IDij_oL!KeBQ.YbKS?4dJqN*cHXSUbK%TIaiM60]">GYZEUS&ZuBPeAnPdlCM[m+E,fo?Fa&(UH
+@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHstee
+C<($f\5*8h;7)JiT&t[k2tjkl0@U$m-a?2nF5u=o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14Bs
+*t~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOI8?taD$K89)Rr.Xfsqh=Wpp4N6q&oDE(E,nm*I=-NnIX?EiI!g3drc\HeJ:W:KJ-g^a
+NfT3]F(fZJr.P!#qh4p#!/0Wis+L0$rIt?.M#<,0M#W>(MZ/M6N;S\5NWP3#Nr+k;OSk1:OT(=?
+NqeS6N;JV4NWG3&rf7&>rf@#>qi^rB#*bC=R$jA2rgX"YSGo&aS=Q4BSt2CArgb4*Uo18u\%T]!
+aiV]KbKeGZcH=2H`5g*Ke_/d:hr*AGg&BSCe^W$qe'lgsf@eg2gtprIioB+]kNCpcj5f=ak5FBG
+j5JhKf@S[Sf)XD#fDjJ'g&0P(h#6%7hr3SRiSrnWir7j;iS`\oi;V^8irS6&roX7Ds6'IGroj@H
+s60RJkPXQDl2KuJlN?MAnF?MM"nhT`q"t#Is#TAda-W-]R%!X(hRf8EJrH)$`g(t'Tj_AC9lkAK
+:elLhI"$Qq:Jaed;c-=eNfK'VM26tCMMQt?LAQdfrtG=c_lfi+S"-%CTq7jHS"6.CT:Z%Qs-sUe
+R[9;,Q'IMnN/`^OLPLWRLi?m9AnPdlCM[m+E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8
+StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeC<($f\5*8h;7)JiT&t[k2tjkl0@U$
+m-a?2nF5u=o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14Bs*t~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOI#8P2ZN;,R9go25B]ohYQ`lV[OW.5Wh>3&``_5s[b%5sRUu5!D+l4Zbbf6:!q'5XIb'
+6:"@@:/"GH92/:];X@9Z;YX2j;ufkq;Z0Po<!$'!<:Eid<;KPk;?Tot;c?Te;uKYu;c6On<;KVp
+<rQ(u;ZKeo<W5tq;Zous;H$Nm<<-"t<<-(s<<H9%<EB$!#$G,5=^,'4r)`r#r`B5&<E9#ss&(+A
+<`iX7@qTIhBPD3sD/O3,Bk:gbA8,n$Fa&(SG^":NDf9T6qedNpE,p#DH$Xd^H?sseI=-?cH$asg
+IXQWpJ:;iiG&hYFq/ZLV!-J-]!-eEe$$UW?H$=LYH?sr;Gli;;HN&6mI!pGAIKP(MJV!`Ns+:H-
+KnP,3rdt'#re(N1L51S@MMmDlN;nnBOHPflQ^F6@Ri7ffSXuFGUSXicWN<5)YHP18Z*UgG[^`iX
+])B5E]">Pc]=S!R!5/3@!5/<C'"YWb\@B#U[^NTQ[^WcW]"G\hrO`6D\@8pG[K!T6[JmT7\,!N:
+\[]/[])K8<\gtD2c$Eo6=BJ^/>-<aD?r^/k6q0sr6TR;/0.f%44ZkDS1It#,7R]d+2E(Iq$s-A,
+<Dujr;,^=f9i:jes&&d$rj2U2rO)F0s1&'=rjqp;q7QC6s1A?FrOi$>s18*>r4E$Cqn2g>otLF?%
+(;pfEFE0X='8X/>?q/2s',M.(KssG>$P67=BAU+<`N+!<Dljq:K(.g;=RJ%A7]@cBPM=!DJjE5E
+ccGJG^4U_I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.EU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Eb
+K\>ZdF-Oof%8R.gYCWAi8ESSj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdr
+dk*#s7H>A~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOILDg-_tor%edq5*k^m%s9Ks-4@]S"#qBVPpMoVQ-JiVl6MjUS4?SYH@f*'s=[?X/iqJ
+]tV:Aqfe!tW2ZbpW2HNeV>mFmV>d7nUSOZ[UA^kaU&UhhTqJ*Qr1a+a!i;ckrMTOks/?!uq5aCo
+s/l("$F$e@ZEpjAZ*UdBrNlI0s0Ma4!jf2;rNQ7(!NrX*Y5YWtYQ1m+YTC'TZEppF[C3NQ\@K/^
+]=ktp_84(/`Q#s>b0/#RcMl-&cHjhadF6Upe^rR6jQc1(p%S95s+14=s#@^-_Sj=ks763-c`FLm
+jQkBnZd#n#MHcC8RUTKtW26JoW`r_4@UNPK=M)8V\@&]MZaI0FYH>)-Z]+o1le9Fua3;r\cH=;Q
+cI(+id*^.ac-4>Qai)EHahbX%]",2RYd!W(EFWNjAnYmnCMds-EH-&AG'A1WH[U?nJV/W1LP^nI
+NK90aPEhH$R@B_<TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Cs*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOI=@qfk/onWO$q1\TsqM"Nonq.3dD/=96FF/FcrI+`ordFfn%=*2CGCb<qJ:W9%It3(J
+NWbDWc"_J$L&Qc(KD:*"KDgH'KDpPpKE$VuL&Qf.LPUcbM>i>2M>)l/Mi<VoMu&G5Nr=qBNfT6]
+O,oBarf@#>qiC`:qi(`;NK&mUrJgi;qiC`<rJq)CO,oBbrK@,Cs-*\PQC+&+RJiQTS"0GJs.07]
+S,Sp,R[]k=S=cRTXKf1C]Y;5%aN;QHaMl'9`lcQSf\,$5g=Xs)e'udibf]q,+NV[Hb0/#RcHt%h
+eCE(!f%A[2hVdDPi8ESPh:pW6f@TiLs4@;(rn7A,rnI\5hr3SSiVha=i8<JMhu;R4i<A6$j5oFc
+roX@Hl0/-2!p]%8qrn+GrosFI%dWKKmI'K7o_%qPq"ajeM#TR&ccMK?R@'E9j1O'6Sq;W[Ximbl
+L9ZkEBh<AfFAYe^IsulsJ5/m8<E)mn:QCNrMi3IKL5LhCL4tE\LlVK_hScXoS=?%>TqS'LSXZ1B
+T:hdJSXc4>R[TV1R?j,$O,f0WM2-k@n;)'oA7]@dBkhF#DJsN7F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@\d1gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s7QDB~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOI%84u`Tl;@OWo2#6[lVS!H1G^sL3'oqt6:(T9"$\t655m\Y4$5hr5XIb%6:!q):JOYZ
+:Gd5hqGQ]Xr_ibnr_iMir_iYm"&r9$<rQ%u;uKVh;uK\m;uKVo;uK\m;ZKer;uT\p<<#ku;H$Qn
+<W5tr<W?%t;uTc%<)lpt<)lptr)3\q;,^Hn<rH%r<X)Q)=&r@%<W6#&='/X/=^(f-s&]8(rE'/)
+>$4r*<ZtF@;Gp@i<**4,?!q,QC2.O"C1q0h@q9:iDKBuFFEDPBrbicnBkV*kAn>L`AS,UjC27X&
+D/O6.D/O<4Fa/4Zrd"cqH?aUTEcD"tqf;^Xs)e6_!-\?c"*f*:HN&-kH$Xg`rHSBhrd=ZmrdOis
+s+16%rdk-&r.G0)KS+sWK*$XWKDpN*L51TaM@kf,NK9-^P*;/uR@9V8SXuIHrhBFf(8[t/X/rJ.
+Z*L[AZa@0N\[f;^\[]2[qRHX<\c02?\Gs#>\@/mG[f3ZQ['R*EZEpmE[^NZS\[oAa]=bbd\@B#W
+[^EOB[f<i2\Gj&<\GEcu]=?.6BP1IN=Beq7RpCeG=$],B9n6)$4``n@2(:aQ4#8Wa84Q0=7Q<=b
+4?Pbh4',E^<)cdr;,^@ir_WSls%rd)rO;d9"1bqO\biu:])]MA])]M>^%f>@^](qI^&>V?]DfAG
+]=PVd]"5NJ]`5\B^AP\E^AG\A^`U+fN,iE6>ZY$1=^,-7=^#$6>[(B7>Zk98>$4p.<EB&u#?+W$
+:K(.g;=RJ&@q9._BPD3sD/O93EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\t
+Xfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcGECJ,~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-'X6EHm22W2T?dqkj+a!2T1^r20@fpS8UjOI;W,@\]p#WMZVlUo1,fUoC#]StW=dX8oF&
+XUM;2]tD(o^5JD.QDgb]WW/prVY[.dVZ3IoUnsmaUB%%fT`Us`U\phcU&h$`r1a:gV>[:kVu*Fl
+W;rssX7r^qXoGR$Y5tl4rNcU2ZEpn:Z2q>=rNld8['[6JZa0P6!3uO,qlTq&o<A.ts0D[2)mm#\
+\%&uZ]">Vh^VIY%_Sa=2`Q$!@ai_fNbPo`dcMl0&cHOPYd*pY)j6#Umn+6;MrVZZl!W;o^rrE&t
+rVukJs-E[E`PB@/_SZ?GrPZptZ,,Acd\*DOU1[hmR[BUL?DOKqWMlh#>[1`H?X6mI]XkS[['[0I
+['Hs=Yl(hdrrMK@rl?5,cd^7_bKSA^e'udjbg+GVb0.uIaj%rG]Xk\bZa6m?p9a_)EFNHiAnPdk
+CM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StMgRV5L8lX0&P/Z*UgG\%0)_]t_A"
+_o9X:ai_fOcHsteeCE.%f\5*8h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQo`Fj]p\jjeq>U6g
+qu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-'6rA864;Lkt\YqhFj!!/10%oRudf#&\0rF)k3*rdOlq$\!GOI=$9fGBn@UJbss,IXlp.
+NK9*ZD0p5NKS98Wre(9(qh+s'pOr9nre(N/KS5&4KnY9WL&Qf.LPUccM>N)/M><&+MZA_3N<#"<
+NW5"AO,f6]O8Y.?O8Y1>NrkE(O8b1>N<#"<NW4t6NW"n8O8k=;NrbB)rfR&@#*kL@QC!u,rgEhV
+rL=(_S=H.@S=TYL&Y#2UR@B_>V5^Q!Z*_$R^r4+h^]hQla32fUrmUnq+OSQ^cHXPS`l?!8_83q%
+^qde(`5T^6_oKj@bK\A[daS3F!7UqspsfJtf@S[Sf`9e*g^W)rhVdAOio/kUi8EMLrSRV4s5=:D
+j5f=`k2tjjkl0fIlKS94!9sCGrp0UNrp:'\n*oo?pA"IZqu)<M!qOdVrKoF0Rd%f?R%Bb!OJBsj
+It!N);bLhIF*(&NIslcqIt19i:KCFn:f*15NJi^PLPUeDLkg_?r.pC5$K/n-Un+!FT:hmMrgj(]
+"/)?[T)P8iS=5n5QC+#(PE1``Mhq@fn;)'nA7]@cBPD6uD/O<4EccGJGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQ'[l,S"6.DU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8R.gYCWAi8EVT
+j5oFckiq?slg4$,n*fc9nac8Bo`"Lbp@n=[p]1-hqY^6ir;HTdrdk*#s7QDB~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-&RF852iV;Gus\!)iYjqbZr]qbZf[(,[p,3&ii`5sdh%5sde$5<h:n4ZtkhrB^]S6:*t)
+5u7JS"AUpG:f.!ds%rboqG@5jq,./iqbd>jqG[Dls&0)#;cH^r<rQ)"<)``npJV&kq,@8j!)r\m
+rDW_qs&8qq!)r_nrDihr#usr(;c?Xo;cH]n<<#ns;ufqr;ZT`nr_rhsr`0#!r`9"urDiu"<)iit
+!EWD$=TVc0=Su;)>$G-5>5hY==BAO&;,9q^:fUS!=^,3@A7fOgAH$$f@qKImE,ff7E,TW3D/F$%
+B4b^b@:3JM?=%#J@:EYQ@:3PUB4u!oCi+(hDuXeVDZXlrE;OVTErL.ZF9$L_GQ2mkGBeCZH?oF7
+s*4Qh!.+Tj"+5HDJ,XutJH16"Jc:95KnP,3K7nl1K7ei1KnY8:L]3/1MB@b8NfT6_Ocu&rQ^F20
+S"H@HU7n<UUSarfWN*##Y-.c-"0o/<[/RB4['Tb=!4DO-rj2X3!4Dg5rO)O0s0hp9s0r'>rji-@
+])B,?\%&pH\GWo;])T;@\GNi8])K;H]Xteg`IV`2r`LXR=]hA3Hqm[@5XS(m8O>F'1Fjh.5<V(]
+1J12.7n,m)3&Wi[4?G],r`'5';cH^p;c-CfrDNYm!5&3@r4E!Ao=b.;otUO@rk/BG]tOEXq7H[<
+rk&*>r4DU7qnE'Es1nZLqnW3Is2#S\R?;T#?<gQ7=BSj5>?P-6>[(?8>$G,.>5q_-=&rF&r`/qr
+"Ai#p;,Qj[EFNHiAnPdkCM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StMgRV5L8l
+X0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE.%f\5*8h;7)JioB(\k2tmll0@U$mI'H3nF?&>
+o(2MQo`Fj]p\jjeq>U6gqu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXOHBm"`[q5F+enttoQpSRY\.@#p`R[@H\W2?SoVl-DhW2QMiTUqaIYHG"0Y-"h/XhDB\
+^;%IVG(c[gW;WXnVZ*FjV?!OlVZ3LmV#7"dUAptgUAgkdUAUecU]@7iVZ3RiVuWgqWrK-rXT,@#
+X8oC%Y5PO*Z*L\4ZN.B3Zi.92[K!W5[K!Q<Z*:I;Z*:F8r3$%&ricC-ricC-qlp+*r3@9J['d<M
+\%&uZ]=bkl^V@V$_Sa:0`Q#p<a2lC$b5]X)bg"ATbfIoLcICP%gtq#OlL"!,n*oo?p%J1Wr:0gd
+rW)opr;Z]rr;M9IS,YLo^VRk+_Z0Z'f='85`RjA-WjC*?J6S%@S"3bkUo(&gVlO'->?YEC?!CIG
+]=>>VZa-sGZE^U:ZMh+grt4VPai_]LcdU4`bg"Yee^W$orm(Pe&';u4`m2`H]t:qf[Bm*AZhLj'
+[<?%jAS,UhC27X'DfKc<FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StD^OUo(&hWiW>+Yd1UC
+[^`l[]Y;.s_SjF6aND]McHjnce'uq"f\,!6h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%P
+p\jmeq>^<hqu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXO9?Y=1tL&-W$L[p2nL$"$rDea?5E`7C8I"-Wprd=ltI!L)<Fp)r=Jq8LNJ-_0pO,f6]
+H"_6rK_pK#K`$Q!K_g>uK`$Q(L&m!]rIt6*!f)Sfqhb<.s,$`4repf6qMPB5NW+n5N<#":O84n;
+OT^c,OH>OtNrP%<NW+t<NVnh8O8b7:O8b7@OoCOCPQ-mHQ2d-QQ^F//S,/WUS"0GJ!h>aJrKnRm
+StMgQUo(/pZ*CXD\@T;b^:qD"`lQ<FbK@uNrlPJfaN)<<_8!b`^AkkL]Xteh^])"[_8=+/a2lBE
+b0A8ZdF-LneG[ntf)=26f\5'6gYCWAhV[8Mi8ESQi8EMLrnm_5ro*k9#3=n.k3(pkrosCHs6BjT
+lg*p'm/H8Qlg4$,mJcM[nF?,Dp\=U^r;MKO48%+>S!KD.R[Wg,[&8n]JsMnAVM0`-F(.XS:3:SN
+:k*tCI=?ZA:Jaec;c-@eO,o6XM27"FMMHt@L&?agrtXeui5MjqSXZ1BTV8!KSt2OITq\3Orgj(Y
+&"8lPQC*r$OH#6YM2-h?L[^+C@q9._BP;-rCi402EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*
+S"-(BTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s7QDB~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXO#7nQNMr_i2^pJUlcr)!8dpJCQ\$oKh"3&if`5s[b%5XGB6)*U2H4?P\f6:!n&6:*t(
+6;L?N:/4SM8kr7U;Z9Pk;XmWa;ZB\q;ZBT&;H$Ln<)Z^p<)lpt;uKVe;uT\n;u]hs;u]hd;u9Pj
+<<-"t<W?"t;ZBYq<;oer;Y<rj;H$Onr_rr!<`T*!s&B"ur`0)#<)rou!*B,%!E`M(=o_e)>5qh,
+=r:IK>?Y34<`W-s;,U@o=&r@(>$k`H?t!LB@ME?aAnYppCM[d$Chma!C27Nq@UW^E@N&`b?XR2F
+>?kKC@:3MP@Us(_B4kmmCi+'.E;a_TE!pZ,EcH,@F`heJG'<k/!-nKgs*4Ng"*f*8GQ)jdH2i3j
+Hj"nJIt3(JJc(/uK`-NUKS>,8LPUeCM27"GN/`jYOH>TePEhE!Q^=24St;RITqS3TUSO]\USXic
+WMuosWs5Q'WMur"Y5PO5Y-5"3YHY77YHY47Yd+/5qm?@1)n*/^[^W]R\%&rY]",A_]",>]\@B#W
+\@B)[])K>>\biu<]E#YA]HG=LCL1+E=]nj/YEW*d9j'_P8RkRb3c-Z,,W%):4"rGh8HVIP6oY*'
+"Znh.4?Q^E<"Do,;c6Oi;,C+e;Gp@h]Y+*Sp:g=:rkSNJs1SQJ^:sT[rk&6CrOi'?qRZR9!5.s;
+s1\-?rP/ELqSN9M#dSrDF^eW]=BPQ,&6rFB>?b?:>?kB:>ZtB7='>N($<C/-<`E$s;,^@imne1;
+A7]@dBPM=!DJsN7F*)SLG^=^bIXm!%KSG8=MN!OUOHPfmQC+)0S=Z@HUSOcbWN*&%YHY==[C3TU
+]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$p&BO~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXOLCj(5fVt-ecVsUAUV=US^V$NBPS"#pWVQ$KmW!fN#Vkp;hV5C#\T<J0os/l=&#edsb
+^qYrjGDlHu"/r2tW;3@hVZ*LjVZ*FjV#6tfUA^bcUAUblUnsobV5C,fVZ*LnW;ijrVuWgqWrK-s
+XSo1"XT#@%Y5YU*Yd+25s0MF+rj;p:[C!?KZi%*.YPt^)XT5O'YPYR%Z2UsEZ*L[?Z*L[A['[6K
+\%&rY]">Vg^;%Fu_>_:V_o0L4`l?'>r5el\s2kqpa2cBKd*gCnf\GBAhVR2MjSe9TlKn!0o_8.T
+q"X[]r;?Qos8Dlnr;c`oqZ$EnrVhBJSGtUs]thM%_uKc+oXF(d_:.T#]rfDIBSDCQQ^V,f?)OTt
+VQ6\">[(ZG?X6gL]=GGZ['R-JZa$[8ZM_%grsS8Kc-FDUd*^1acHuR@(t@!\dEg+_bfe2L`mMrM
+^Uh+h[Bd'AZF0J7qR(-K@qB7bBPD6uD/O<4EccGJGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.E
+U84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9FbK\>ZdF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,
+n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s7ZJC~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO<?tXA'L@pB"L[BiqL$+*iDf,Jp$<)A&IXHQmI!gBjrd+osH$FL`J:N3%rdb#urf./C
+Nbbn8G5[*^L%^2uKDU>uL&Zi+Ka!3bL5(J=reUE-"GhnkMMh(b!fW+urf$i9r/U]9q2kT<s,d8A
+s,R)>rJpf8pl><6r/go=s,R#=rfR5Drfd>G!1!PLs-EbSRf8fRSGeu[S=?#IRLY^RS=H.AStMmV
+VPg>kXo5F-Y-5.>\@]KS^^7ck_8F1/`5BF+rP&<F!5&3@s1JrW^V@S$_o9X9aN;WMcd:);dKA"L
+f%0iPs4@>)rn@k;hVR/JiSi_RiS`\QrSRS4s5F=Eio9"ZjQ>UfrosIJs6K[L!pf4?rp0XPrp'UO
+mJZG[n*oo>p%J1VqY^>Hs#SlMT9be0R@3a/]>fr@K9Ve7U6'elE`6F]:NUYO;,;[kI"$Qq:f'nf
+<)QOhOH5BZMi*:GMMR%DL&6[ersIc*YGIe]StMdLTDkG]T`Us]T`1JoS=>q8R$F/,P`Ul`N/NIG
+LPPATCgpmcAnPdkCM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StVmSV5L8lX0&P/
+Z*UgG\%0)_]t_A"_o9X:aihlPcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO#8P)ZQoMPK`s&&5_rDEJh!)N2_r)!eZ1cIBR2a]r!5sbK8!'gEG#!G.54$c.tr]prZ
+5XIe5:/+JY1L<aNrDEVomo&@H!)ibor_ru"<)cfp;ZB\q<;TVm;?Tot<)Z`n<:Nod<<#ns<:s5k
+<;ohr;ZB\n;YO)i<;ff$<)lt!<)lrt<;ol'<`N+!<E<+"<rQ5#=8uD'>5_\*>5qh,=TM`3r`]V2
+=]ea+<)lut=;4nC?!UW;>?tQB?!LT=>[C`GA7fHQAKtf"Bkh?pARo:^AS,Oa@:3MO?t*ST@UW\U
+AS,OcAnYmoCi0/hs(r'[Df9T6EH-#>F8g7^Fa!b.rd"Kf!I&edGPuahGBe@YHN&6nI=Hcurdt$"
+rIk*$&;5akL51P?LPL\AM2I7ONfX1&$^6g?QBmo*R[]e;Sc52eT:V[ITqS3VV54*fs.fgnUnjib
+W;WarWs>`,X/rD)XKDK)"g>28Z*LY6ZMh*0[/RE2[/[Q6[f<i:\,a);\Gs&;\Gs,9])]GA]DfDA
+]DoPC]`>eG]IU\1O`4]1=BS^->-aT(Bh`/)7n?WP6odUg.kEP05<LST2+L2.77B[+2E(Iq#usr)
+<)cdq;H$Ej;?'Pn;>\*#^])%J^\bbE^%o>=])]G;]CW]3^AYhF^AYhH^A#GA_>M.X_nMk1G@Xr_
+=]Sa3r`^7C>?Y98>?kB:>ZtB9=]e^,=BAL%<E)gp;uTYp;=ICu@Uit]B4u!pCi+'/EH6/DGB\=Y
+I!pKpJqJc3Ll%%KNfT<cPa.T&R[]k>Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:k
+e^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcGHD
+J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHKa9Ed3/,nYl,Yn>?,[n"pqfOd_l0@\os#XJ_qoVP^8iVlQPdTV/EhrN-"$$*:nS^;.D]
+R=(G$VuN^gVuNXoVZNfpVu!:hV#[=hU]7%iTq\:[U]R<eV#@1eVZ<[oW<&rsri5suqQ0[s!3H1%
+s/u@)!3lF-s0MO.s0Ma4"1>MC[JdK4Zi@91Yl:j+Xob`.Y5YX(YQ1m+Yl(a-Yd(J4Z3%;:Zi7?2
+[K!ZA\%9/_]Y2%o^qfob!Q)bR`;ddW`lJ&!s2k;^rl5>db08)Sd*^=mec+#9eCE1'g"P3:hr<_Y
+kN;!nmI0Q7oC_hNp\=R`q>g<ip&Ojbp]:6iJcDDC,M9`G_SO(gs82)t^TFidjm:Tu]V]UuNa\<C
+Rq,g%WhcVpWr?39@UWVL=hVJ[\$`QM[C3HJZ)t7;rNhL`"n:0ieB6)9clUN[dFQjueBu^kcHjbZ
+bKS&Gd*9YJ]Y(haZa$a@[eR6+[<H(iA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPfm
+QC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\d1gtgiEi8N\UjQ>Uf
+kiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$pA]X~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHKC!@qfq4re^9'onW*ms+T`k%<-*(F`LE.I"$TpI"$JAI0G(EH$FO`rdbQ0It3*$IufPM
+O,WORDLVS=!/1<)rJ(-%r.Y3*p4NEuqh4]trIt<-qhY$(!/g`5!fW%qrepi8repi:rJ^`8r/UT6
+qiCf?rf@2BNfO(!r/U`8qi:];!06r;"H\\*OHBI&r/go?s-!AFrKR>Jrg3YPs-`kTs-j"Yrga+^
+SXfYJ!1`qU$CmZYT:qjKTq\6SrLsdtVl?`"YHP4:['mHR\[qaO!5/<C"M2+P\@DOKs0iBG]>;G)
+a2lEJcHjl8dJVDne(+BJ!87A,!SuZ3i;_a:i8OUlro*k9$KL.+j5f=`k3(pkrosCHrp0UO!q,ID
+rpBXOs6g9ao(2PIp\F[`rIk24hSZ+SQC+&-p#aZ,Q^*/UR'=r:H\clK?trJ[EcY/TIt2utIt19i
+:/t7k;,<:7Nf&aPLkpqFLkg\=r.pF6%HPO6V4OHRT:qmMStDYST`Us]T`1M^S.D'XR?j;-Q'.2f
+N/NOILPPATG@G&mAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&h
+WiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\,!6h;7&IiSrnYk2tjjl0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ/@p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHJ^H8P;bK;;kFO;$'Qk;=RHe2Dd?P2`F)%5lj5:r]^]S5<V.n4Zbtr6iK@[6:!t*:JFPY
+:SL9S:$PX@;>sJm;u]hp;uBMn;uK\p;uBPn<;fbp<;KPn<;BJl<<#ns<;9Gt<*!%"<)cfq;ZB\o
+;YO)i<;T]!<E)pt<r5ks<r>tt;up!"r)`f!!*]A)"'\r3>5he*>6S25=BAR+rE9,'!*fD('3A:;
+=&i7%='/U/>[(K??smDRAH$'TA7]=aB4bX^@:EYR?sm>J?X[JXBPD0rrb_dSDJoGjs).jRrbhaS
+s)A$ZrGqs\rc\<c#Bk65G'.tNFoHR`GQ2moH$XgaI!g?kIXh?Irdb'"rdk*%!/:E*!eZ/Zre1E.
+LPGe`s+qnWNK0*^OckomPa.Q$R$a;1R[]e:S",t<S=Q7CTV8*TU]$qeU&UhoUo(&fW2HPlW2clr
+WrT7!XoGR'Y6(r3YPtg*ZMq01[/RK4[edK5\,a)<\cBA?]E#YE]`,PB]_]>A^';9gQucS:=oMMH
+>-ac@=&Dd[5Y"S+<&m,s/M/h35<_.d1It&.7n#m-3&^[s%ouY1<E)ms<)Z[k;,0td;Z9Pl^\YbE
+^Au"H^](tH^&PbD^&5MC]C*?.^&#J>^Au(G^]2+J^\bhH_>V4P_ns:h_[=2cR<E(I>?G'6>lIqJ
+>$G3:>$G69>[(?9>$>$0=]\[*<E<*u<E)gm;H!!\G@G&mAS,UhC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\,!6
+h;7&IiSrnYk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHKs>Ed<P?nYkfPihdW\Od_f.U8OreWi2hmVl-AgUT1#\T:i<hXfhZ)s/l[C]Y)"p^7KM#
+U].1kW;!1iW;ELkW;NRlVZ*FlV#7"fV#R:gV#R7kVY[4jWW/psWVrjsX8f:$XTGT+Xo>F#Xo5C(
+YHY;1ZN%9-ZiIH3Z3RbE[C!?K['fk>!j])8rNH7(s0)@)riZ=+qQ]t(!jf8@qm?R8\%0&\rjr6E
+^;'W^rkeTN"3&:#a8X0X`rX9'rlR">b0/&UcHOMWbg+P\dF6Uqe^i:%f%Jg6i8`q_lKdj,nFH8G
+p%%VBnaQ)>o(;SIq##^CU&P;V]>2>$_Z'Qimb>8@Z+f;diM<a'M1gdkR$jIL?_jQqWMlh">[(ZG
+?<pdI]t:h`['I'H['Hs?YHn,5NW1Bsf[AEqd*L(ccdC:oe^W*rc-Xe_c-4ATai)HKai(j(\[SrO
+Yd(Y3[/[Q3[W5ec@qB4aBPD6tD/O<4EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.EU84W`
+W2co#Y->1;['mKT]=bkm^r"".`lQ9Fbg"G[dF-Opf%8U/gYL]Ci8EVTjQ5Oekiq?tm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s7ZJC~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHKHuAnlIBnqd@&m"bFlqM"El&o_W,F)lVTI=-NnI=6QmH[L*crHA?pK7\aRJ-h9rNK9-[
+H"h;Pre:E.p4`R&qhG')s+^N,oS!3trJ(?-r.Y3,qhP60q2#*/rep`6s,Hu9rJgf8!0-i8qN(N8
+s,m>Cs,R)>s,co6!frA%n;d[5OcY\'OoLUEPPgXHQ'Ra7Qi<BNRK8nJrgj%Ys-s"Xr0n:gR[Te=
+SXc4@S"-%>SXl@FTDbDiTqeKaX/rG,Z*^t;[fEl9Zi[S@[JmN<[CEi`_8=47rlkGgrm1Jg!7Lhp
+#h7DVf\,$6h;8.hro!n;iVh^6iW%p;irJ*<irnK+k3(q,kl9lKlKdd8mJZJPn,D_Un*^2Es7$?c
+o_/%SqYU2Cs"36MVj<[9R%!a5gpO/E`e9DNbIMtSX(c$X8Tf)s92L+fIXcfs:/=Vb<)QRirf@);
+reUf:M2-k?L&?afrtOS:Z)+(hStMaKTUqdLU7n9TTUVPPSIq?[R[KG0Q^!YoNf8mQLPCS>nVD3o
+@Uit\B4u!pCMds.EH6/DG'A4XI!pKpJqJc3Ll%%KNfT<cPa.T&R[]k>Tq\?ZVl6VrXfen5Za@0N
+\\#Mg^VI_(`Q$!@bKS5Vd*^:ke^i@*g=tH>hr*GPj5f=akNM0plg4!*mdKW6nac8BoCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAJcGHDJ,~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHJaJ8PMoWoMPE^qbcTUqbd&`#<"Cu3&a/j5lO%c5X@Y"4[2(l4Ztkg5s[h(5XIb&6;L?N
+r_<P\8kr7_;?0Yh;?0Yl;Z0Jl;XdQ`;ZB\o;uooqr_r_mr`&eorDNVn!)i_n!*&bms&Akor`&kq
+!*&\ms&8turDWbpp/:rjqbmJpqH!Vrr`0)%=BGE$"B8B$<)ifrr`8u"rE9&%qcj#&"'J`/>5h\)
+=:&,7=]ng-<E<1&rDrks-WF,J=B\s8?=.)K@q0%]An>CY@:<ML?XR2H?X[JWBP;0uDJa3,D>n>P
+D/T>i$ZBp"D/O92EH,r;F8g7]Fo6CbF`qnMrc\<crce]oH@(!dI=6QnrdP<+It3*#JUrE)K7npW
+K`Hf(L&Zo-L]<21M@#6$Nf]BdP*;,qrg3YQrL3_T".G^LSc,,gT:hpQTq\9VUnjiaVu<RnWW&pt
+WrfB'X8K(!XU))3Xfek2Yd(J4ZN%62[/.3-[Ks@P\@K2_]=PWQ]`5YG]Y43Tq7ZgBs1]elOEG#9
+=BSg0=gOoT=^+X:5Y"J"?9(5_0eYC65!;"_1J17<7i4ZS3&Wl\3]fH(<E<+!;cH[o;G^4e;,C0i
+;#nH3_"kbD^@o86]_9&;^A#>@^AG\@_"b\C_#D.O_SO(d_YV.X`5T!GG@Xu`=BSm6r`^CH>?bE;
+>?k?6>?Y69>#n[*<`W4"=&i0u;Gg=h;XdM'@:E_XAS5[jCMRd)E,fo?F`qtSH@1-jJ:`E-L5:\E
+N/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\@K5a^;%J#_o9X:aihoQcHsteeCE.%g"P3:h;@/K
+ioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXOHCNt2al_s*HqPO.fpSRtV&Xo8XA#?3&WiE"rWMQSnV5U<kT`M?ur2p"%%'74V]>24@
+fQW1NW2KQlrMTXn!2odos/5[ks/5^jrh]Uir2'4b!Mu[kVu3IoWN,lsriH.%!3Z4$riZ:)s/lF,
+Z*XD7!42R0!42X0!OK0-[/dQ4Z3%;8Yl1d&YlCm0Yd(I=Zhq$3Za-pE['oh="Lu"Q]"IsQ#/%[b
+^qde&rke]O#fFU"`lH0Aa2e/"rlG>dbKS/RbPoZaaXYHVbKS5UcHXSVc-Ob_d+$_%gtq#MjlYjo
+m-X-(l0.C!mdTc;o_/+Yrdk*ErrVH"_>_=Ns"a0(^$;`@g?mUhUqF3OOcGitSQfN-VPgAjWa&b4
+@pr_N>ZnhR\[JoPZF73JZ*(47Zi7=ks![?he_&*md*^4ddam%$e^W!ldEg+`bfn>S`lcTL`P&mq
+\[8ZIZ*^n6[JI=P@:E_WAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdP
+Uo(&hWiW>+Yd1UD\%0)_]t_=u_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60
+n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+14Es*t~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXO:?YF;"L@L-"M!0WdL%g6;Df'Q;EDq:7IXclsIsl]nIX?NjGBnIcJc13#JIR-ZO,]0\
+O(Y>*GDCs.r.k6*reCK.rJ1E-s+^T1r.b9,rIt-%rIt9+!/LN-r.bB/LPL`bM#)u-MZ8V5N;AM6
+N;S\8Muo!!O8Y+;O7nY=O-#E_NfX1$qN(K5pl>H;O8b4CO-#HarfR5BrK7,Crf[GKQ'@O3PlR-L
+QiEHOR0&hHS,AfVS,AfUS,SrXSc>2_S!oe8S,JiWSc,'*S!oe9TV8-VVPpMsY->19ZEUL7Xfen5
+ZEppF[^j#`^;.Y*a2lF%bQ#cdcMc&ud*^7he'ut$g"Y<<hVeCls5Nq7ro3k9!p&J)roa:Es60gT
+m-O-+mHsB2rUBjUrp]sXs763]$2!obq"agarVleNrr_rX`iK**249p-mbtj\Pe)I5T#IXXIYs@h
+Che*6FA,S-Isl`oJ58p8<E)pq:f!15N/W[PLl.(GLPU]_Ll_QbjNFg)TV\9RTqA!MT;&-UTq\3L
+T:MRFS"#k6Q^=)*P)bQ^Mhm+CL5GGVEa`EeA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[^WfY]Y2(p_8=.0a2lEHbg+P^daQ^sf@\g2gtgiEi8N_V
+jQ>Ufl07L!m-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$p]#a~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXO$7ncTNo25<]nko6]!)rMfqbd;g%lQ4&3&`c`6:*t(5X7Ou5lO"I4Tml55sds<646(G
+6;L?N:/<TF92>F`rDWYmr_ieprDW_o!E2nq;>jDb;?'Pm;?'Po;u9Gm;uKVn;ZK_p;ZTirr_i\n
+r_iVlrD`eqr`&hprD`bp"B8B$<`],ur`&hrr)<Vpr)<SorDN\qr`0&$<rQ/,<``@'<``@)=B>E$
+s&92&<)cju<E8uurE0)&r`]>)s'#G*"Bo#6>$Cf-s&f>*rEK;*!*K2$!*K5%!*9"t*)op==BJ^/
+>?kE>?X[AP@UNMI>?tTD@:3JO@q>RM!G6'EBE2cGCB&&QCi+'-D/K8is)/0^EH-#?FEDYJrcS?c
+G'3e-rce?drd"Khrd=`os*jut!.auu!.t3&s+CB+re;eSL5(J=LkpnEMi<UTNfT9aPE_>tQ^=,.
+R$jA2R[]e:S"-%@StDVRT`:bdU^<lpVl-JlWMunsri6"!!ii<%riH.#s/c4&$*UM7YHG(5Yd(J3
+Z2q>=rj;^5s0hm8!4Mm9#.V4T]=Y_iqRlsC]tO9T!58?Fs1SHF/[U@Y@9Zo;=]nk6W/t@f:LQLZ
+8T[]o4$#k]2DRK[4"rEG7nH6@6oR%_4?GY(498G\r`&nr!E)kq;#sKkrDEI,r4`-C!5A->o"Ob0
+rkA<Fp;$UBrkSBHoYL[I_Sc;i$H907G[t)a='Js8qcaqE>?b?9='Jj5?!:<1='/O)<`N1"<)ZUk
+;X[G&@:E_WAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+
+Yd1UD\%0)_]t_=u_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<o(2MQ
+p&F^cp\jjeq>U6gqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXOMDKp\tlDWgBs/,Ogr2'piP+7u1@\fp#WMlbqW;`^pW!'#mT;&IbX:)/3Y.VH\]taT6
+I@0H$rhodp!3,mp!2odmrho^lrh]Xlrh]Fds/#amr29Om!NE*sX8f:$Xo5F%XoGO/YHG(3Y-5+9
+rNcO1Zhq*6Za-sFZa@+9[JdH4Zi%-.Z2Us-Z2Lp+Z2_-)Zi@E0[JmW6\HBFT]Y"-R&%oTi]t_@u
+_84")_o'F3a8*gTao0E[aoBKhbKS2TbK@uNbl,^)c-Xnge^iC,h;7&JioB%YjlbppmdK]:p%J1W
+r.4mDs"`lQ_8O4._Z0Z+kfMtf`RO)4]<fqWFC:5<S=Een?)FQsW2ln$>[(ZG?!LOI]Xt\\[/RH:
+['Hs>Yd=>9NW1BqgXk*%d*g:fdFHk$f%&9tcdC(ac-=P\bJqQKb/h<.]t(MUZ*C\2[J@7U@:E_X
+AS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8T:r!TV5L8lX0&P/Z*UjH\@K5a
+^;%M$_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+Rp\ssf
+q>^<hqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO=@;9b/n;7.#kD/tionE<s(N=/3Ecb6,I=6QnI"-ToI=6KjH?aXZK)L60J:W6#J;oPL
+NK3"DDLV#/s+^N.rJ:K/!/C-"s+^N.s+pN,s+pW1reUK/regZ4s,?W1s,6r;rK$r<qiCN6rf@)>
+rf@)@q2YZ?O,o<]rf@&?!0@)?s,d>FOoCIAOoLOBOoLUBP5pjDPlm>=QC%Q;"dtaHR[]f8SGo)W
+SG\rWS0XSmR@9V8StD[LU8=cdWN*#"Wi<#"YHY:;Za@*J\%&u[]t_G`_["0$aND`MbKTt2%+!;J
+e'ut#f\5-:hr+Fk"QSM$iSjdqs5X+>roF@Iki_0nl0834s6TdQrpKgTqsaXUs763]s7?Qhp\=U]
+qu$GGrrqZ/XI#<ArgGY4jhnHq[=ad6\\!lTYBF&BCJK"o9N"W7IslcqJ5B';<Dudl:m-m"Mi*CJ
+Ll.%GLP1E\Ll_QMjNOj)U84HUU7\*NTqeKZTq\3NTDkD]RgtsVQ^*u*P`^rbN/<:EL[U%D@:E_X
+AS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8T:r!TV5L8lX0&P/Z*UjH\@K5a
+^;%M$_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+Rp\ssf
+q>^<hqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO%8PDlUo259\lr!d\r)*,br)!bY1cI?R2aTeq5lO(J56=#255m\D5mKbD6:!n(6;IMS
+##:XV:/"M^rDN8dq,.;n;GpBj;#aAm;Ys>j;ZBVf;Z0Pj;?Bcr;uT\o;u]_s;,U<k;uBVp;Z]ou
+<W,ks;uTbq;u]hl<<H3!;cWcqr_ir!<E2srr`&nt$WL&'<)cju=&rC(=Su8#<W#nt<;ont<rZ,"
+<EB#t"B\f0=BPK(!*K/&r*';,>$>-6qcNo&r`f;(s'#Y1=]ed/=oDD%=T)D&>5qe->[@>8"^G58
+?=74?@K9s;A,^$=AcH9CAS,RhrG)FMD>e>PDuO\VEH;&#!d/[0rcJEgGBS.RG^'.3rd"Ni!df<B
+rd>3(I=?WpJ:N3%JqAW-re1<*reD8DLPL\@LkpqGN/`gWNfT9aOcu#oQC%Q9$^[6KR@9S6S"-%@
+T)P>dTV8*TUSXgbVuN\1WMlbqX/r>#WiE,"WiN2%Xf\e1Yd")0!3lI-rj2U2!4Dd6"h1qL\%&pG
+\,a);]DoMD]DfJC]`GdZqn2sBrk/9CrjjVdY'OS`>$,!3>$@ts@p;r=5tOUJ?U["i1Fab..m?'K
+1GVKl7Rfg93Arho4:YCk<`W0u<Dugn:f1%d;#X>i^[&W3^\tnF^%K,7^\P_1_YM+I`;@L\\"7kW
+?<^Q;>[:V4>7Y%E>?k?6>?Y9:=]ea,=]kW&s&9,$:f:1gmne7;@Uit\B4u!pCMds-EH6/DG'A4X
+I!pKpJqJc3Ll%%KNfT<cPa.T&R[]k?Tq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)`Q$!@bKS8Wd*^=l
+e^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`no_sFAJcGKE
+J,~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-LpTon*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHKg<F*NA3lDWL9q5+1UOoCjTUo(,iX/MuqV?a)tWM6/\TW\6q%BQ_8XM;H]^;%FPFFp@[
+VuWgqW;idjW;WUjVtm1jVl'Ehs/,dls/,^lrhp($WiE,$X/rE%XT5O&YPkX%Y5tl4qQg1/rO)R1
+qmHF3!k#DBrO)[4$+$qCZa6sCZ*L\6Zi@?2ZN@PAZi7<3[JmQ3[/m_GrO;g;rjr-As1/KJ]">Se
+]tM.qrkSiT_8=(-`Q#sraSs<]aofi0bKB_(s2tAbs31Gb!6kDb*R)dRd*U1ge'uq!f\,$:i8a"c
+lg=-/nac>Hq>1#?s/#`Wn\;u[_Sa7js7l$/k,l2>k3UHlae3C#NaJ6D=CYX6WMQPnW`r_3@q&_L
+>/7ha\@8iO[C3KLZ*1@:rj7[b%.`0)g!%jld*L+if@g/R(t-dYd*Bn\dF-4X`mMrM^Uq.i[^<?E
+['oe<q6k<O@U`kZAnYjmCM[m,E,fr@Fa&(VH[U?nJV/W1LP^nINK90aPEhH$R@B_<TV8-VVPgDn
+XKA\2Za@0M\[oGe^VI_(`5Td<b0/&TcdC1ieCN7(g=k?<hV[8Mj5]7`k3)!nlKdg'mdKW6naZ2@
+oCW%T!quB_rqQNhrqcQirqu`no_sFAJcGNFJ,~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-LpTon*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHKF"A8?4;n;7$ul%f+io7[utCijcAI!^<kIsulqI=-HlI!g-`G^"f>K)U</J:EW?N/s!Y
+GA2&LnqR4$rJ(B-reLB,!/LQ.!JQ:,K`m-aKnb?]L\ll-L\uu-M>`8-M#`G2MuSb7NW"n7N<#"<
+O8P%<NrY:>O8k=@Onk(<OT(CAOT1C>OT1C?O9Ui/OckliOo:FIOcY]eOHG\'P5CFCPl?pQQBd`"
+Q'R`&rKmVPR/WKTR[]fCS,f&USGA`NT)Y>ZS,]#YSIM3bU8"EYV5L8jX0&P.rilR3['dCB\-fgZ
+]=bei^r476ao9EobKS5Wd*^:je(*+)gtpoGi;V[>io/nUiSrkrj8S*EjlY^gkih9qrTaCJ#OLjH
+n*of8nG_qjnF?&>o(2JFp%A(Rq>'pbrVc_Jrrqo7YEtWCrgGY4jO:c8[=aL-Xj*JaQ#p&7Bhibl
+92\Q8J:2osJ58s9<E)jn:m-m"MN!FKM2R4HLP:H\Ll_QNl-6N2V5']VU7e0OU8+TZTq\3OT:Z%P
+&"];ZQ^=/,Q'%)cN/NOIL[U%>?t*SUAS,UhC27X'DfB];FEMePH@('hJ:W?+L51VCN/`m[P*;/s
+R$jG6StMdPUo(&hWiW>+Z*UgG\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&t[k2tjk
+l0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-h6]pn*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHJ^I8PW#X;uBP=;>*lr2)I9P3C?,!5sdk&5lEnT5!;"l4$,bp6UO1+r^-W\##.ie:-M?H
+qGI2hpf%)gqbmJmr_W\m;>a>j;=[Wa;u]_q;>a>j;ZK_n;Zfop;,[Blr)EYos&K(us&Jtrs&/tu
+<E/lrr`&bnrDiks!``2urD`\pr_rr!<`]&u!`i<$r)W_qs&T,!s&T/"s&K/%<r,o!=]kZ+"'So5
+>5hb+=TM]1qH<]"r*98+!*oM/s&fA(=Sl5&>$+o*=V=qD>?tTE@q/tW@q0%\ARo:]A,]p?@q91b
+C&McHC]8/XDJsK4DfB]:F)uI&FoHRaG62r3GQ)jdGli;=IK"WoIJnWpIfP#uJH1<$KE$W)L&Zo*
+LD#E"Ll%"IN/WaUNfK0^OcbilQ2[$JPl[2;rg3bTR[X5F%\0)]T:_dMU8+N[V50rbrM:+'Vl$Dk
+WiE%tW2ZbpWiE,$XSf:%Yl:p,Z2h61[/[Q4[f!W6\H'/=])K>A]`5\F]`5VB]`#GE]",A_rj`!>
+/\A[2[";gp=]ed/=B_hqF'hpS5t"7=M+]in0InY1/3Q*L1GVNn7Rom92`N_n4T8@b<)ljp<)W]m
+!`2`ir_`=&q7usDrk8BIlb<D6!5SQLrPJ6Fr5/6Hn\k7B+L[bgB4"kI?!CT>>$G07>@(K;>Zt97
+>$G36=BAU+=B>E$#?4W%;Gg=i;=ID&?t*SUAS,UhC27X'DfB];FEMePH@('hJ:W?+L51VCN/`m[
+P*;/sR$jG6StMdPUo(&hWiW>+Z*UgG\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&t[
+k2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'aJD0:/_WN"gSjJVpQ'q(PaR:W4nW2H\qW2cenW2QVlUnXO\XU_M8XKJ_,^V%1k^m3,d
+M=RVBWV`XgVuEV#Vl6MkVPg>jW;NOsVPg>jVPX9hqkjInWW&prXT#=(Y-5%5q6'q*YHY7:rj;[2
+s0Md6rO)d8[']b=!OfE5[f!N>['d9JZa7'H[C,t?"LYVC[']S8rO)^8rODs=\c028]DoMF]tV;[
+_>h@U_o0O5a2e2#s2k8_!6b2[s2kGcb0%s-c2Pp(c-4DVbg"GYd*^7fd*^7kg"bKDjQ5Xlm/HD[
+nFH2Dp\=R\qu$ACs/Q)'p;4Ya_o'@js"sB(k,l)9jmV0'['Ft/NFA6ERq,j&Whu_mW`iY2@q&bM
+>$8VQ]!f#S['mEMZEUI:Za@*!s![Hof%\Nsda6@ge_&U,e^`*qdEg+adFcmkaMlNKaMYX%]!o#O
+Yd:e6[J@7U?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckroQ^F52StD^NUnsuf
+WiN8)Yd1UC[^`l[]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'a;?ta;!Ko5DWqhXHknqR'r$?1'0E`IO;I=6ZrrdG*"I=6HhH?XT3K)L9#J-_3qNfB*:
+Rqd-;L\lo+L]<2(L\Z](L]<20M>rD3M>rD1M>W2-M#rQmMu8P6N<,'!rf7#>rf.2BNfK0^OH9@#
+plGH:!0R8BqiC`<rfQo9!g/S+rfR&?s,dAGOcfX)!KiQBP6[>9PE_;tQBhH8rfmPNQ^@Q9s-WkU
+rgWqXqj[STrgWnWs.'.[rgj"Zs.9RgSXuCBS=Q7Crh07_18:VCW2co#Y-5(6Z*CU@['d9J[^WcW
+\\#Vn`5fp>aNDZLbg"GZd*gFof%Jd3h;7&Iqr.M6!9F.@s5s=Ds6'RLlK[^7m/QJPmf)\Tn.bE^
+naZ2@oCMVHp%A(Sq>0scrVc_Is!%?`Z^I2JS!of9jP7_V[=X@*WQ_huLP0&DC/8toFAbqbJ,Xm)
+J5/p8<E2po:f*76reh#=Ll%"FLkg``Ll_QGmE`)9UnaTUU7e0OU84[cU'%'\T:PtO%A98\R?sA.
+Q'%)fN/NMjL[g1F?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckroQ^F52StD^N
+UnsufWiN8)Yd1UC[^`l[]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'a&84uZP;,mNns&-p8r)*_V3&iiV6UUc;"@#.95=#01'0JTK5sn"+5smt):JOVY:,G[<
+:\IZa;Z9Sr<)Z`n;?0Yi;Z9Vn;?Tip;H$Nj;ZB\o;ZB\q;Z9Pn;Yj;m;H*Qms%rborDWYor_ier
+r`/u!!*/kp"'&8u<;ons<;TSs<E)pt<V]Vn<<-(t;up!"r)Wkuqc3\uqc3l#<``=&=8Gr"='/O*
+r`Jnt#?kA9=]np2=T2G*>$G-4r`]>+"C,/9>[.24s'>Y/#$G&1=]np4r`fq9=BAR,>?kKB?XR>P
+@:B.Es'lUN@q/tV@:E\UAS5XhBPD3srG2RRDf0IlDuXeZEcZ;DrcS3ar-83es*FcpIf4]pIfFm!
+J:W:NJc^LTK)LB&K`[!aM#N20M#W;<Mi<USNK0$[O-'@'s,mSMP`q>rQBqK:rg<hVS"'DI#b@QZ
+T:qsQUSI[]s.ogpV5C-eVuEV!WN*##XfSW'XTku5Z*L^B[/IB4[f3c7\-BLT]=PSa\c')>]DfJ?
+])]GA]DoPD]D]AB^&,N!]n^6,=BA^1=BM\mKP"Co6UOC:KNgH$1bUI=/Nu<[2)@fr7n6$:3&WZW
+4?GYf4&o;[<<#l';H$Fj;,C+d;,R#%!5\WLrkJ6Bp:pUBpVHdEqnr3I!6+KHpr3$JrPoJ]Sq(N\
+>ZtB8>[(B:>?Y6;r`oD*s'#\2=]ed-=B>E$"B8B$;c*Hkn5+@;@:E_XAS5[jCMRd)DfKf>F`qtS
+H@1-jJ:`E-L5:\EN/is]P*D5uR$sM9T:r!TV5L8lX0&P/ZEpsI\@K5a^;%M$`5Ta;aihoRcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGNF
+J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXOIDKpSjWi=XLkbeHGR/WU$A>?*'XJr2"Vl6YpWMcVgUnOuoXfnn0Y-5"1]tCtm^Lcqa
+QL:^LWW&jnVZE`oqPXCnq5=OtW2Z_nW2QWnV?!OmW;ib$W2ZesX0&M,Xo5F&Y5kg+YPt^)YPta,
+Z*XG:s0Ma4#.:nK[^WcUqmHI4!4Vs;!4Vs9qm?F4rjDI.rj<$?[C*KQ[^NTOrjN*A\[f;_]=S!R
+s1J3?"h_O]]t_A]_>V7M_Z[s!a2l@$aT]i1bK@rKprWufbg+MYbfe5Tbg"E3c4\INe'ujqeCN:,
+hr3VWkN_C"mJcM\n+#u?p%J.Tq>:,As/Z/(qT-Rm_Sa:jrtY7phQ4*)j6u96VSBQkMd)U<S6K<r
+rhg^6Wi90+>@LuG>ZnhT]=55W[C3KMZa$[;ZF$uus![Hre_AKte'HCgf%Aa.e^`-rdEg+ae(W3n
+aMlNJahtd(]=>2QZ*C\3[J@7K?XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfm
+QC+)0SXuLJUSOcbWN*&&Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daZdtf@\g3gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$q>Ys~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXO:@;'J%Ll1_ZqhXHkmY:a[-ZsNR<-s(CJ:;orIXZfqIX?BeH$=jkJq8H'J:W6%NfB$Z
+N`*H*I-udcM#2r.Lkktcre:H/M#<&-M"-?%M#<,0Mu8P6NW5%=N<#":O8b1>O8b7@O8k77O8+h:
+O7A>/Ont4BOckk+Oopi.OcfO)pltcCs-<YMrKd;IrgEeTr0m\VrgNnXpm_5PrLO"]rgj+^r13t_
+TqMCY#,7ojW2co"ric@+rNZC.rj*oX[C3TW]t_A#_o9[;ai_fNc-FY]d*gIrf\5*8hV[5KiS`\S
+ir8$<jo=KCkPj]Fl2U#Qlg3s(m-X3>mf)\RnGi(ZoDeI_p&Fajq"ad_r;HVGrriAJ[[`Z_RPgT*
+jPA(pXFc+jVT[&7Iu]t+C.WPhFA,M\IslcqJ:C?i:/t7k:f*=:Nf8gPLl%"GM2-b=reQX8.Ibci
+Vk^&[TV8$PT;/3[Tq\9TT:_[DS=Q@DR[BG1QBdSlO,]'QL51QRLi-R-@U`kZAnYjmCM[m,E,fr@
+Fa&(VH[U?nJV/W1LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKJe4Za@0M\[oGe^VI_(`Q#s>b0/&T
+cdC1jeCN7(g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@
+JcGQGJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXO$84lTO;,mHlr_gd6!Au_43"ePD5sdh%5sIS!5<h:n4Ztnp6N'7\6:4(,:/4JX:+KUF
+:f?m^s&/hpoMP]g;Ya5k;Ya5m;H$Km;ts8j;#jMj;uBPn;>jDj;Zp&u;cH`n<<lK'<)lms<E9#s
+q,I,fs&8tuqc*Moqc*Sqr`0,$<)lrt<rQ/#<rQ/#<r?#!<rQ+u<WcE*<`f3$q,mf'>?Y2/=T;M/
+>$5'5=]np3qca)+>Q%h+>6%k(>7"P??!LT;>?tQBra>Y4r*o\9raPk:s'u=FAnPaiC2<fbqec@N
+rbr9cEcZ>FFa&(UGBeCYrd+Tk!doHGrdFfqs*t'!rIOs"!/(9('SD'mKnb>;LPUbCM2R:NNK0!Y
+O,s:&rf[;Fs-3PKs-E\O"dk^GR$jB@S,]#YSc>>^TEh0bUSFW\V5=*c!Mu[kVuEXpWW/suX8]1)
+Xfeh1YHY;2ZN%94[C6(Dqmc[:r4;m>s1JBFq7QU<!5ABGr4iHGO_A*(r`LOL=g"*HD.Ha75Y4V"
+HUBkZ>V7l`5<_.^1.k,084Q*<3&`cY48q>C=&o6!!)ieps&'%u:Jjnb;8Ve<pV?@9rkeEIs2=fR
+p;HaFpr<*LrQ+rX"j"EMK5+]k>6nA:>?Y99>[(P6>QA"->5qe2=B\d.<`iE"<<H/q;Gus[DI6d\
+@Us%^BP;-rCi401EH?5EGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tY->1;['mHS
+]"G_k^r"".`lH0CbK\>YdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;QZdrdk*#s7u\F~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXOMDg6f&WN#3^q5Nh]n#%(hOe%u3MPd>KWiN+uVl?VjUoC;cTs(W#YHRr.$a$SF^V%=q
+^]1!WV"gkgWVNLhWW/pnVtm:bWW0!rW;`^pW;`drWrB%#XKAW&Y55@$Y5b[-Yd(I=qQpI7[^WcU
+\%)FHqmQL6rOE$>[^EOA[f<f:[f3`;\[]0H[fEl9\,Nl>\$`WPrjN!>\[oBL]DfMH]tCthrk&NM
+^;%J"^qde&rke]Q!Pu_R`W*p]a2lBFbKK\'r6$2+c-=JUc-=JWcHjh`daQasf%/L-gYLfIj6#Ri
+lL"!<mL/LQnac;Dp%A%Sr;D3HXT&M%beh<9`5_fV2#-S!X0T@pl0?[(d[4]TNgQ6*>[^m8W2HSp
+Wa&e4@UWMH>/7e`\@8lR\$i`OZELI;['Yhm.J;`Pg=4Hud*L.jg"Y-/e^Djnd*Bthg<e$``Qu]K
+`4`gq\$WHFZa@1;[J@7P?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,
+S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Uqf@\d1gtgiEi8N\UjQ>UfkiqBu
+m-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO=@VTk3MMgq\o8)jjmtM3gCNOW>CjUVYIXuqHIKk4IH@1*bGQ*-nKDg?/J:W`ANKB-Z
+ep_UlpkJj*q1na$qM5'+r.k''s,$c5on`a-M2D1gs,6f6s,@#=rf$o<plGH:!KW?>NrY:?O7n\7
+On+V1OoLREPQ$^IPEM)kqNC`>pQYZB!LB#LQN*<MR/36LS,]#MS,\uYSberUTDtSaTaRTiUnsre
+WN*#$Y-7i/rNZ@-.'p:g[C3TV]Y2(q_8O:3a2uKHbK\;Wcd1"ee_&R.g>1WChr*JPj5^."roO1B
+s6'FGrokZmlg3s(m-X3.mI'E2n*oi:nac;Do_%nNp@n@Xq>1!crVleIru0CsSXGt:R[`j/i7,NC
+K7f2X_T\p4Y]E`:CAr;i9MnQ7IsulsJ5/m8<Dudl;3Hs"N/R[m"cJ4oLk^W_Ll_QAo$jtFUSXZV
+U&L]+U8=c^Tq\3PTUq[DT:qaCR$X8.Q'.2fNJiXKL5:]VLiZp2@:E_XAS5[jCMRd)DfKf>F`qtS
+H@1-jJ:`E-L5:\EN/is]P*D5uR$sP:T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcdC.h
+eCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcGQG
+J,~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO%8PDlU<)i`ns&-m7%lH1'3&s/h5sRb%5X@V"5Q3hK4ZkkorBgcT6UO1-:J^sa##'hC
+:/FhdqG@5jq,-rc!)rkps&&eomSj-bs&8_kr)<Vqr)<Mks&&_mr)<Pnq,RDpr`/MgqGRAnr`',$
+;c?Xp<V]Vn<<?3&=8Z(s<r?##<``B%=9DW*<E9$!#?Or-=BJX+=Sc2#>5qb(=9D]0>?gu.q-3i'
+r*0#&$=-tD?!^lG?XI2KrF#_9@JjU6A,TpAARo=_AnV*V!buLerG;XSD/F1iDuXbbEH6,BF`r"R
+GBe@XH2`*oH[L6iI!pG@J,b&tJcC?%K*$^YK`6])LB!&/L_Yf(Mi3OQNfT9aOcu#nPa%GtQ'I]'
+rg*kWQ^F,,R$jB@RK/iUSHPOVTVA1ZUB%+gUB@?iVl0Ejs/H!ts/Q7'Xf\c*YQ(g.ZEpn:[/[Q5
+[K*f8\,a,=]DoPC^&G_G^\keG^&>\E^\GVD_?7T>Cgm<G,Zn2PXdFlf@95`Z6V2!J<BFqN.OQu8
+4Zb>S1J(,.7n#m-3&gdu"Zodb<)Zcp;[6/t;Gg:f;,Qi"!5nHGpquO<pVlpIo>gdMp<!9S$c/Kh
+CgC4K=^#$7>5h_G>[CZ>>Zt<8>?kB7='/R*=B8I&<`W1";c$@h;XdM(?XR;O@qB4aBPD6tD/O93
+EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lBG
+bg+P^dF6Uqf@\d1gtgiEi8N\UjQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBf
+JcC<$q>Ys~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'aFE,p2VU[tJ`W:-_PW:m,;QCXP7AYZ3'W2lqsVP^;kW2ZbnU8+oqY-+t2Z*(:5^V.:q
+^:o\QM"dkFWW/poW<&rsr2BRlq5F1i!36$ts/Psq%B-8+WN)u!WiN2%X/rH&Y5b^*Y5>F%Y5b^*
+YlCs0ZEpn:[/RK4[K*f9\Gs,>\Gs#@[^WfX\Gj#A]",>[\,E`C\%&rW\@K2]\@8rWrjVd7"1bnL
+[f3`>\@K/]]"@mQ!586Cs1JNK^VI\b_#M7M_Z%F[`5T[6`lH-@aN)@#aoBN`aoBN`ao'=)bg"AU
+c-4GWcd0tde'uq!f@\g4hVdDRjQ5UilKdg)mf)\So)J:ap%J4YrIP!Mrs&>I_8F41aSu2frTrXI
+Ye8`Vm,=b_TP[np?_!Wj@9oe1W2Q_s=^5-?@U<>E_7dIl\,Nc@\$iZLYcb:<[#P(rpZ0r^f[/-o
+d*gM!gXt',rmDS/cI(>!cH4,GccXAK]tCtf[C!6E['oh=ppP6N?t*SUAS,UhC27X'DfB];FEMeP
+H@('hJ:W?+L51VCN/`m[P*;/sR$sM8StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHste
+eCE.%g"P39h;@/KioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14G
+s*t~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'a;@:O(nKDpc!M=68lLB*/-L\?H3DKU&B<IB7DIt3&tI!u!Cs*OlpG^91;%"j._JWGhO
+O,]-AB6Es(qhY9-oS<U)Lkgc`M#W8,L]N?greUW4oniX)",i%pMuJ\8NW4t;N<#"<NUMr)OT1FG
+OHGWeOT(@DOHGY(OnOn3OoLUBPQ-gDOT:R@PPp^GPPg[DQ2HsJQNrhCQ^F/.R@=,C!1NnVs.'+Y
+!1a"Ws-itW!1a%XrgX7bSt2FDSXl@Drh'4`%ABMkUnsugWiE,$Xfel,Yl1j+Z4jRO['d?N\@K8c
+^;.S%`5Ta:aNFM*(X1.Ld*^=mf%A^2gtgiFiSieUj5f:_jo4BEkN:skrosIK!:9[Os6^`mmdKW6
+nac8Bo_%nNp%J(Pp\=R\qY^<kJc@n5g:*`CR[]e:o&noa]sEBEO.XA<^3Z#c=@d4&F`gAU:4IeC
+IXclD:ejth;c-DTOH,<YMi*CMMMR(DK`6dhrt>8%e[2BQV50cXTV%pPV5C#^UAgf"St)=FTphC:
+Q^X8+P)t]`N/NOIL[U%??XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQC+,1
+SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZguf@em4gtglGi8WeXjlYail07O#
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'a&77^-L;Ya8g;X73X;"mia;YErt2)mQU3($"u5X7V$5X.O55Q*bC6NBIO6O6F_9MA/S
+5"eZL;Ys>g;ZBVh;ZB\q;Z0Gm;YsDl;Z0Mo<;f_q<;fbp;ZBYu;H$Ln;uT_t<E)rq;u]bq;uKVl
+;u0Jj<W?)#<E/lr"B8B#<E/rt"]SE!<)cfq;Z9Vo<V'2h<<lQ+=BAO(<E9#ts&K"u"'8T+=8c5$
+=8c2"=8l>$=8uD&=oVY*=oDP&=T2J">4u2#=p%u4>$Lo0r*9>1@/aU6?iXX2@KL%MAH$'>A7baN
+!+l.Bs(DCHrG)OQDJX-+rbhaS$#jm)EcZ;EG'A00GlDshH@,X=.Xc\mIt2utIt3'#JV&H)JqJZ-
+K7nr5KnbA<LkphBM2@+JNK&s[OckolrKR;HpQl,PR@0M4S"#rISc>8_T:hkVU&C_aUC3oqVPgAk
+WMuntWN,rus/Z7'Y5PO,Yd(O@[/RHB['R*G['dBQ\@K2_]Y+6WrP&?HrP/3E!l;[fpqd!Irkg7u
+S8_k==]ed/=g+6II:-2D5t":XNGLU>0J"J*/3Z0M1GVNn7Rfg73&`hp4:kRo;cH^p;cH[o:f:.e
+;,C-g`;@OM`:Ch7`;[aO`pCbAaS*aPb5TKgb/K[%D-pLP>5hb6>$G07>[CW=>Zt>1>7t+A=]\[,
+=B8I&<`N*t<)QRl;=@>&?XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQC+,1
+SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZguf@em4gtglGi8WeXjlYail07O#
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'aIDg6VeX8]-iWV`^fWTU5XVZrNXSsj,bW;NV7W2Z_qW2lqqTqANmYHY46Y-5"C]tD"k
+^l7i0Nq]LOWW&ptWW0!nWV!.fWV*:kWVWXpWs5Z-XKAV.Y5,7$YkYC0Yd(I=Za@*I[^NZSrjMg9
+!kGnRr4)g;qmla<s1/0>rjN3D\[f5[\[o>]\G`o:\Gj#@\@K/[r3m*E\[oAa]=bhj]Y(qlrkJEG
+s1\WN^VKfa#/\3o`5KR2rPSlY`lH->`r='ZaoBE_aiaV)r6#Gkc-4DVbg"G\da\9H&_>Rdg"Y??
+i8N_Wk3;-qlKdm;mfDqJrpg9cp%S:Yr;M9IXoAV&e\]>Ga2n8[2>d4;mB"L^kNpfq_k_[6NFJ?G
+Rq#d%W2HVoX'Jq4@pr_M>ZneS]=>>Z[C3NOZE^U;ZF%!!s![a+f&#*-eBuXkfA#'4f%&7!da6=j
+gXscla2QEIai(p+]XkPYZE^e4[J71O?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQ'[o.S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_V
+jQ>Ufl07L!m-O0/n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'a;?tjA!L&QtrM=cVrL]<2(L\ulTDf^#@;ga%BIsufpIXcfrI=6KhGB\UhJqJZ+JV&H6
+NfB'YO(lXNGP?m]L]E;2M#W>)M"uo+MZ/G4MYr>1MZ/M8N/`elN<#"<N<#";O8k7>O8k7<O8Y1>
+OoCO<OoCIAOnk+6OoCLDPQ$gFP5^UBP5^[CPlHpLPa.N"rK[DK!13\Ns-EkSQ^=),rgEeR!1EhT
+s-s%Ws.&nS!h>aLrL=4cSt2IFSt;RIT:l1W%AKVmV5C2kWiN2&Y-5&.Yl:mkZE^[?ZEpsH[^W`V
+]"Gbl^qmq,`Q$!@b0%oNbg"GZd*gIqf@\g3gYLfGiSrkWjQ,Fak2tjjkiq?slKmm7m1/ROmdKW7
+o(2GDoCV\Jp&=Rgp%J.Tq>:'err)lrL&V82\>#AiRk1*"l/L:B_7tSiS%I+OH&[#V@qne^F*(>V
+It)osIt1<i:K:@m;Gg8POH,;!M?\opM26q@LAm!krt>8)e@2HQVkg&\TqA$RV59u^U]-r$St2IJ
+TUM:9Q^X8,P*(c`NJ`RJL[U%??XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,Ti
+Q'[o.S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Uf
+l07L!m-O0/n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'a'7nQKM;>sM\;Y3iZ;#X>c;Z'Aq1H.9Q2a[L0s$-cS5X@Y#5<o*0q*PKU:JFSX9MRB_
+9MbUbqbd/es&8bls&/nqqbd>j!)rkpr_`\or)EJj!*&nq"B&2u;cEWopJ_&hs&/nqrDWVns&B>*
+<E<.#<`N*up/V,l"]J;u<)QWl;Zg!!<`Srp!*/tsr`/u!rDs,&<)Zaqr`/qurE&r"rDrr"$WpJ4
+=BSa-=BJ^0>5_V(=ohi1r`B/'qHE]!"'Si2>PqY->?kH=>l7k0?=7/LrEoV6q-s;4s'kn:s(21A
+!G?-FC'&0eC]8,MD>nDSDfB[pE<UE+F`qtQrcnHg"FGNDI=;*DrI=itrdb*%Jc:6*K7no3L51N]
+LC8opMMd=NNK'!\OcfX+s-*GHs-<VM!LK,NQi<?YR@9V7S=H.@St5kPs.B=as.KIfU].(gV#[Cl
+VuEUqWN,s!riQ1'#-bA;Za@-JqmHX:\@B)\rk&-B!5AHIqnW3Iqn`?LrPJNNr5ATR/\[Wo?WgN6
+=^"q.SqqH5@phPp86:mR3Bf2O/N#+E4ZbGU8Ol9A7n#?r3'9;%497NDr_rr!;H3Wos%rnq;,:%d
+q8WHRpr;pEn](1@m)]+Hr6"cWrQP8a&BL&nD.-^R>$PB=>$G07>[@>6s'#J+r`Tn9=]ng.=BAO'
+<`W1!<Duam;X[G'?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[o.S=Z@H
+U84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Ufl07L!m-O0/
+n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXOHCjLPjXo>C$WqNF`WqiXTW%"+"SXZ-eV5gMpVl?VnVlQboWiDngYd1L:YHY47Y-5LQ
+]Y(tmm[8KrpSe(j!ii<%ql9Rn!ii6!or.kh!NN3tWWK6&XT#:"WrB%!WrB%%XKAV-Y5#4"YQ1m)
+YlCm,Z2V*0[/RN6\,a)=\G`u<])K5A]",BM\c]LS]"@pPs1/0>s1/0>rjr-?!P#W<\G<]8\-0:N
+\@K3M])fRXr4`0F!5SNI"2M[d_#D1M_?@]m`5BLj_u[isr5\iYs2P;aai_cJao'?]bl>rec3)D?
+eCFNK$J3q`gYCZDioB+_rok$[lg4!*mdBQ5o(;SIp@nC[rdk*Os$-G9_oKm@b0'baqu-0VXME?K
+m,FeRYaL*&>+(nOAR;:8Vl6MnWENM1@UNGH=hhV^\@B#W[^NQKZEUR<['Ykn.K&>\hq?E,daHOo
+g>(H6f@86sdEpV&fZ_FWa3VlK_nNap\[SlMZ*Lh7[J731?[#me@Us%^B4u$qCi401EH?5FGBeF\
+I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF-Op
+f@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXO:?tjM&M#N:uM=ZPrL]<2$LBqm<FE;M-H[pVFIKY(KI=?YEI2.*RKS4r0K7nl/JUrc@
+NK0$X^j9pNonW@!s,$Z0qM>90LPPhapk]'0M2Cn_!/^Z3s,6o9pl5<6!KW6>NrP1>NrP1>Nr4t;
+OT(C@P5^RFP*(n*P5gX>Oo:C:Oo:ICP5pjGP5g[COoU^DPl$aGQ3*D=QN!-QQ^3r(Q^7Q9rg3\S
+rgEeTqj[MRrL<\Ss.01]!2'.]!MQ7dU]7+pVPpJoX/i>)r3$+)r36:.Zi7<C[C3NR]=bhk^VI_(
+`Q#s?ao9F-c-FY]dF6Roe^rF+g>(N@hVmJRj5]4]jlYaikiq?slg4!*rp0^Rm-Xf?#4M'Nnac8B
+rpgotnac;Cp%A(Rq>'maqYU0fr;HWos8W)trr%rY5iB/LR@Tn=S"8g&e^i'aJs2Y2dCaa]LN?m>
+8Tf,s;bqmnI=?ZrIo&p9<)cdn:m-m!N/ELNM2I.GLk^\?Lkq/m#l2u[WhcShTq_O[*MTC,Una]Y
+TV.pJU84HMR@';/QBdVqNK&mTM2$fSM#Uh+?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VC
+N/`m[P*;/sR$sM8StMdPUo()jX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHsteeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGTHJ,~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXO"84uZQ;#XD[;Y*cW;#F2b;B[qU3&ru[6:*t'5=%S"5X@Ot5Wq7m6psC/6UO1-6:+FC
+rCd<778HbY;Ys>e;Z0Pi;Z0Jl;#!oe;?Bcr<;9Dk<!#ur;Z'Jm<;BGr;H$Ll;cETl!)rbo!*0#!
+nPoQir`/nr!)rkrrDWJjs&K"srDi\ps&8tur)W_sr`K&!"B\`,=BYQ("Beo2=^(f-r`]5&r*'#&
+!*oM-s&oe5>$>'4>$5$5>?kG1>l\41?OC1J?t!MS@U`bT@esU7A,p3?AH-3FAnPaiBkhD[CB/2M
+DZ4SRE;sqYF8g:]FqJqCG^4U^I=-HkIXZcrJ:E*"rdb0%JUrFPK,'&nKnbA=LPL\AM2@+IMi<XT
+Nf]?brf@GKP*2#nPa.N"Q2['LQi<?PRJrZTRgtsZSt;RIT:hjNTq\9VU].(hV>mImW;ijrWWoQ,
+Xfek2Yl:p-Z37MA[C3RC\Gs,=\co^Y]tM.orkJBHr4rKP_o'@i_th7K`W*sWa"tVrF^J?T=]np3
+=e(.]H?*L]77^@;C,e@?0eP@55<_1c1J(,-7n,p;3&iiY4$5Yf<`T,u$WC#';c-Ci:f1%c;=DQo
+`W4'HaSj6YaS*aLb4a'Yc25^%bKS2RUl02#?!CH:?!CK8>$P<<?!LW=>5_Y;=BSa-=B8L(<E3("
+<)lmo;Gus[s'KtX@U`kZAnPdlCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK90aPEhH$R[]k>TV8-V
+VPpMqXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8)bG~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOIKEHm&%poF+gr2][oqPaIpri,+[$($jHS"6CSWi)fpW>qe7W2?MmWMH;m['6a<Z*1=6
+Ye@fc^;.IsFG$IbW;ijsWr9!pWW9$sWrB!mW;iguWiN2uWrK-tXS8arXKDH(!3cC,"gG26Yd(M5
+Z2V!,YlM*.ZidbG\@D:Dqmlg=\GNl8]D];@\c',=]*,^W]=GHN\H'5>\c98=\c98@])oXZ^APbB
+^];4K^]VHi_SZ;iqS`BP!64uX!6G/[!6G/]s2t8_rlkDes3:bodaHUormq)#s4I_5hVdAQjQ>[j
+lM^&KlicbFnac8MoE4g^qYYpEXoAJ"h8B66!R/^cs"s9AnZ0UYkO.'!]<eqqOH5ftSQoO#X/N(s
+Wi90,>@CoG?!>"U]=PJ\[^`cQZa-g<Z*Uftrs&A^gYgc5ec+#?f%f*:f@\U%e'cV"h:Tola2lQI
+aMGU&]"5>VZEU[B[emK-[VoJZ?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckro
+R$jG6StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JiT&t[k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Hs*t~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOI=@VTk2rJKoto8**qreUT0onWfkD00i@I=;*D"FkiKI=D-C(4LRUKS>#1KS+i-JV&oC
+O,f9\NG*?cnV@+"re^Q/qhb?/rJ1E/pkem*repW1r/:N4q2P62!0@)?s,[/>!0@&>rK6u?rfR5B
+rK?u=rfR8DqN;>NP*1rjP*;&mP`q8nPEYp-s-*JIrg!JK!gT(;r0RDKr0IhXQ^=),Q^=),R@9P3
+rgNbSrgX._S=?"<SbnrWSH>CTTDYA^Tb!ooUna`\V5C/gWN)u!XKDH(!3cC+s0;R/s0F>b[^NZT
+]=bhk^VRe)`Q$!@ai_iPcHab`daQ[qf%8R-g=k?<hVd>Nio9"YjQ?I)s60LIr9F=Js6KpVmdBQ3
+n,;bRnc/.\o_&4Ws7cNfs7lutqtp<hrVlcorf@'^j0tqTT)P98SF5Ii`72k\QCG/+V0e)RP$i*A
+F`_b#;1O7JJ:<'!:/=Yb<)QRjP)kT]Mi*FNM2D4f",)GcLlhWBqU;sSW2HGcU]-r/U8=cbUnj]W
+TqIpPV4a9FR$O2+QBIAiNf8mQL5(M@nVD*i?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9
+M2R=QO-,TiQ'du/S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0a2lEHc-FY_daQ^sf@\g2gtgiF
+i8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOI#8PDlUrDWGgp/(ffo24aKrD<t]1cRKU6UF()5X@Y$r]giT5<_7o4@DV*6:4->64-(S
+:JFMY9MS8V;>jDi;>F,d;uKVn;>F#k;,C(d;>X8b;u]es;uT\o;ZKer;u]_q;uTYp;ta,h;uTbq
+;u]he<W?%o<VBDj<<-"q<<-"r<Vfbr<W?,!=8l>%=8l;%=8H&!<rcD&=T2G'>5hY->$5!3>5MJ$
+>5_\)>lIt->5q_'=oMV)>Q%k->lJ%/?NshD?smGR@fBg6@f'[8AH$-FAnP^gBPM<urG)@J(2[r-
+Df0K3E,fo=F)uGFF`qqPGBeCZrd+WmrdFfqs*t'!s+(K,JUrE)K7el3LAcl9Ll$qEM2I1KN/is[
+OT(:IOHGZgPEV5qQ'D95!LB)MRK&]lS"-%?St;RHTV8'RU8+KZUnsl_V5:)gri,pts/Q:(Xfeh1
+riuI.!jf8ArjDm;\[h[Mrjr6E^:sN\r5&BLrknTN!6+rU!l`1!qoA]Ws2k;`-H;Hs?s?`:=BSg1
+U4d>hG%O$28Pk@>3BfGs/iGLL4Zb>Q8kDQEr^HuM3&j#!4:+)M<)Zaq;c6Rnr_i_l"&De9akOo8
+an*[RbPB<XbP'0Xc1'$XbmCA.DIHjW=^539r`Tk;>[C]@?!CK;>ZP$/=BJX,r`0A-<E<+!<E)dm
+;,QgZDdHdY@:E_XAS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D6!R@B_<T:r!TVPgDn
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nc&([
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGTHJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'aDE,g,TV"1SaWqEFbWqr^bW"tbkSt9MiW2ckuWi;trWMlepX/MegZ2Lp*Ym%kV]Xtnn
+rP&!(s/H$urN#gq!3>pqri,jp"KA?!WN,ruri6"!poFItr2]n#qlTt(Z2V'.Z2Cm-Zi%*1['d@A
+\,Wu4\bs#C]=PM_]"5HO])TDA]_T/7]DoJA]*#XV]"@dL"1u7]^AYhJ_8#raq8!*I_>D+O`5T^o
+`;R[T`W4'Y`rF*ZaSs<]b5]T^b5]Wmbg"GYcdL:le^`7%rn%2'$/4.kiSrnZkih:1l4<4ImHs?2
+nac8Bo_%tSqu)*GY5\b)gr7CWb0J92ru:k,oW5XPkjR`3WOo?L@$+fdS6KE,Vl?YnX/c/'$"@:K
+?!G+W]Xt]Q\,Wl@[B[!>Yd1Wrs!n!/h;[/;e^W*tf%f-?f[\O%e'Z\'hq6/pa2uWGa2#F$]"5>V
+Z*:RA[emK-[WGe]?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPfmQ^F52SXuLJ
+USXleWiN8)Yd(OA[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiSrnYk2tjjl0@U$m-X60
+n*ol<o(2MQp&F^cp\ssfq>U6gqu6NlrUg)?s+14Is*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'a9@Uj.oK)LSgM>2o$L[^*,Df^#B<IB7EIt*"GIfFfuI!Bpgqh+p#s,[2>"ceY'NK0%e
+LB<9gM>W2+M>i>2L]<2*M>N2,MZSiqMtr;6NJrjVrf6u;s,Qu;rK7,Arf@)@q2tT<rfR5B"-Jb0
+Onk.?Onk.?PP^OAPQ$dIPEbm,!gJt9r0IDNrg*SNrg<\Os-WhQr0[JMrg<_RrL*_VrgWeT#+M-Q
+SXl:@r13kZ!2'4_"/2HaU\pqeV$NrrW2ZbrX/iB%Y5YU*Yd+25!42[3)7?o_\\,Yj^V@V&`Pom>
+b0/&ScHae`daQ_Fee$Hcg"P08h;-rFi8ESQj5f;"jo=HCkPaTLl0@R"lg4$+rU'^TnGMebo(2MH
+p%J+Rq"X[\qYg9or;HTnrf-q*kIIIZSt;LET'bUmd`9RaO.35s`I!,nLfR2b:3C\Q;GDXiJ:;uu
+r_F8/<)QRjP)t]_Mi<UQM2@%DLP:J=LlhWeqU)mRVl?JeUS4?STr+`cV4s]XTqJ!UVP0HHR$X8,
+Q'.8hNf8mQL5(M@nVD9m?=.)L@Us%^B4u$qCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'[l,
+S"6.DTqeH^W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>UfkiqBu
+m-O--n*fc9o()DErq6<b!;HKfs7uZjr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'a%7n?BM;#O>e;Z9Pk;#O8g;YX,O:^/a:3]]5f6i'(S5<qCs4?bqk7/TFP646.V9hnAU
+9heAW9i:jeqbd/epeq/jr_`Vj!)`Yjs%`Yl;>X8b;ZKer;[H?#;cH[p;c6Ljnl#EbrDWhs<)i?e
+!*&krr`9&!pJ_/n<qfVn<WQ3$r`/eqs&f8'!E`M&=T2G(=BYW*!EN;!=oMV)=o;J$=o)>%>Q7q.
+>Q%_7=]ed/>$5!3>$G39>[@>5rEKS5?XI,G?X[C=@fKpAA7B"XA7Y[N!+u1Bs(M@F&8GurCi!s+
+DJsH4EH6,@Ec_5%#'G*4GB\:Vrco`7H[L3hI=?TnIt)osJ:W<(K7ei2Knb>;LPUbCMM[4KNK0(s
+O:ID9PEV5pPa.N"QC!u+RJiTRRh;3_StDXJTV8*SUSFW\V5:&drhodpri,t!riH.%s/uO/Z*L\7
+ZO!qG[C<WT\[f?O]E>m]^:sT]rPAKMrknZPs2G#Vq8NBRs2Y)Z!6P&Z0#au=@9Qc:=]np4Sqq<$
+ASaY#854qf3B9,`.jm/)5!(GS1.au,7R]d,3&j#^r]C6_<)`cq$<'o&;c6Fh:f1"co?$LEo?6XI
+s3(/\!6t5_p<N`cr6P;drm)Y2XGh%+?!LQ<>[(E9>?b?=?<pc?>?kB6>ZY!0=',B%$<L5.<E)st
+:f:+fn5+44?=.)L@Us%^B4u$qCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'[l,S"6.DTqeH^
+W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>UfkiqBum-O--n*fc9
+o()DErq6<b!;HKfs7uZjr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXOGEd)edWUR"hWrT0mX6Ze`WVNJ$QBe/8SR\LqX/i7uW;W^qW"H,+UU%/.ZELR=YckCJ
+^V%7nqn<'Bpo+4ls/Q$urMfq"XK;?#ql9Uos/H."WiGlqs/Z^4Y-+n/XKAV+Xf\\,Y-7f,!O&d+
+ZMh*0[/RE3Zj!kE['d?Orj`$=p::(3"1bqP])K8?\d5p\]Y1tj]=YZR])fLTrOi0Eqn2p?!PH&B
+\coa[]tV7sr5&EKs1n]NpVHmHrkncSpVm0P!6>)Ys2P/]ao'<\ao0@*bK\>Xcd:%ee'uq!f@S[-
+g"G*5h;7)Kj5oIekiqBum-O`=$1IEUoCV_Lq"jo>s/uA,rnPH7ai_oTrr4ABnF<Z_d,jc^WNa+E
+C1*-2S=3Pi?Djg%W2lq%>[(ZF?X@#@]tCuV\-]UQ[^<?FYHY:=NrLU-jkSnNeCE(!e(*:3hqHZ4
+eC;ptj58S8aiMQK`5]R+]Xtb_['?mB['ok>pU50M?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!
+K8#&9M2R=QO-,TiQC+)0S=Z@HU84ZaWN*&%YHY=>[^WfY]Y2(q_Sa@3a2lEHc-FY_daZdtf@\g3
+gtgiFi8WeXjlYail07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXO9@:j=uL@U3$MXlVoM#N2"LaR+YGB@q*I"-ZtJ:2fpIXQZnI"$?dKS"f0K8"u2JV/uD
+NfB$YNK*pt!0-N(s+p]3r.t*(rJ:<,s,-f6regT2rJUc:N;S\7NW>(6NrP1<O8tFAOT(@BOSFt8
+P5LFBP5LI<P5pdFP5pdAPQ-jIPQ$gGPlR'IP6-u6Q2['LQi*6KQg^=>RJrWUS"0JIs.'+Y!1`tV
+s.'+[qk!h[rh0:b!MZ@gV#R:kV#R7tVPg>jWN*&$Xf_T*#-Y88Z*CU@rNmfX\@T>c^;%J"_SjF6
+aNDZKc-FV]dF$Fne^i@(f\"m2gYL]bhuDX7iW%m;j87p;jo=HPkNM0qlKdg'mHs?1n*p>Hs7-Ed
+o^qkNp\=O_q$6fnqtp<irVh]S+m?S8R\$.CStGB1g<I.AKRoYma3f<hN/(D,Cef+o92\RbIiEid
+J5/p:<E2pp;,E=7Nf8jRMi*@KLPLV>LP_,m$2Mu\WhuelU8+I^T`_0jW29Kfs.L4$WhuJZR@'>/
+Pa%>mNfB!TMM?kAM21VWFC&<^@:E_XAS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D9"
+R@B_<T:r!TVPgDnXKA\1ZF%'L\[oGe^VI_(`Pom=b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0p
+lKmm)mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGWIJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXO%7nQNN;>=&d;>F&f;>X8];=79\1C#m"3B'8j6:(Q8'1"lI5<q@p4@2G%6pj@05sdq7
+:]3re:Amlg9N"db;>O2c;u]bl;#jMn;>sAm:Jq$fqc!MorDW\ps&8qqrDN\or_`Sks&8qqqbmMp
+;uK\p<<-"o<<-"l<<-(s<<-(t;uouur`'#!<E8Wk!EW>#<W?)&=&rC(=Su=t=9)M&=9M]-=]nr,
+=nl1t=oV\)=TVf2=oMV)=oDP'>PhS*>?kG1>Q7t3?<plD?iFI5@/sg7@KU+L@UoCJs(24DrFZ+D
+r+Z1G!c2^jrb_dUE,kkts)\-\s)n<as*+Kf!I9"iHPV!UI!pHmIt3'#JV/T.KS>/8LPUbDMZ/P6
+N!PE'O,oBaOckk+P7!P>Q'R`&R$jA2Rf8fUSH#,jStMaMTq\9VUnji`VP^8hri#jr!36%!s/c7&
+s/uC,"1#8>[/RK5[L0LS]">Se]t_=t_#;+L_Z%IN`;[aM`W4*Za8X0XaoBNYb9Y0-I:?G]=]np3
+>FL=cB2i)#5>=ajO?#Ee3%H=4/O)?O1GVQ$7g;CM2`NcZ48q>C4')>[$WU,(<)Z^m;,C.d;";`b
+bkB<]cLfHZd/;5hd.tugcHlC7rm(_NN,W64r*'b<>$>'6>[CW=>[(B:>?Y*1=oDD(<``:%r`&tt
+;>sJ^:ip#N?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckrpR$jG6StD^NUo(&h
+WiW>+Yd1XE\%0)_]t_A"_o9U8aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?)?
+oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14Is*t~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pmd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXOGCjUYjXmiF_X6ckcX8K!qW=c(tQ(O_?V5C5iW2cksVQ-_sri-'sUp73'YlD!0ZaB_H%
+)'Bg^:h7p]=b\aWN#ips/H$urMp+%X/`2#X8K%#X/rE%X8K!rX8f3sWrfB)Xo>L&YPkU(Xo>L%Y
+Pta0Z*L^AZa9Y<rjD^3s0Vs;\%&sC\H'/;\c')>\c'&:\c95@]DfJA^&,GA]`5YF^AYbF]`5\D]
+`5VC]E#\F^]2+F_#V@H_>hCL_u7LW`Pf^6`Q%ks!6G/[s2b8`rlY;arQ5&]$d6f?cHjkbdaQ^rf
+)=23f\+s3gYLcEi8WeYkNV9tli-5YmI'K5oCV_Lp\=U_JcDnQ#2IGFbKS8Xrr<#n1@X\4^"_o?g
+o&PeG@6M?S"#p[?`0s'W2cq(>[(ZG?X@#B^:_(g\@8rX[C*?GYctC=NrLU.jkStQe^r@&eC`[:i
+SE,;f$i*uk2G%=aN2KK_o9C)]Xt__['?pC['ok>pU50L?=.)L@Us%^B4u$qCi401EH?5FGBeF\I
+=?]tK7nu7M2I7OO-#NhQ'[l,S"6.DU84W`W2co#Y->4<[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf
+@\d1gtgiEi8N_VjQ>Ufl07L!m-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$r;V9~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pmd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXO9?tsS&L]*&&M>rJ(M;F%(F)Q2EFaSRbI=?ZpIXQ]rIXZ]nH[CGDK)gT(K*73qOH,A#
+NW5"BN/ijTLkt_Zpk\9n!/g]4s,-]3s,?`4r/Lf=NrG+>NrP18OS4e:OT(C>P5UOBP5^RDP5LLH
+P`q;oP5UUDPl?mGPR!D:Pa.N"QC%T9q3D#Io9fND!LT;SR/`TOR/WNRRK]1NS=?"<rgNnXr1!_V
+!1itXs.B7_s.KOhUSOacV#@+iVZ*LqWN*#uXT5O'Y5kg*YpZlb['d<M\%0,a^;%M#`5Td;aNMcN
+c-FY^daQ^tf@JR*f\,!4gYDea.c0(@i8NYSioB%Yj5f=`k2tjjkiq?slKdg'mdBT6nac8BoCV_K
+p\4IXrqQirqtp<hrVc`pMZ4[_]r%?lT:MUHm,?U>agAI,OIsM@\UUi)>u#01rcABD:OdnEIXltJ
+:C:*$;Gp@gO,o<\N;e_9M2M:f!euJdOT-j,dCcNWX/)McU7n<UW2Q\nUnjcZTV/BaTpqF:Q^X,%
+P)t]aN/<FIL5:]ULicp/?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPinQ^F52
+SXuLKUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$
+m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Js*t~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXO$7SHNNrD<Ago2,3Zr(ufYp.u/W1H7BT6UF()5X@Y$r]gNL5X><3!(?`Ps$H`Q##.lf
+9MJ2Ur_3Pi9h\5Y;Z0Jg;YF&g;Z9Vm;?9]or_`Vlr_rhps&8kqqc!Jlr)3_r;,L4ir_iJhrD`Jj
+!*&Sjr`8qsqc*Sqs&Attpf@Dps&]5$s&](u!*B/#!EWCu=nl+t=TVc/=Su;,>$5!3=]np3rE0,(
+r`K5)qcO&*=BJ^0r`f5&!aAo8r*98-ra#t>?sm>L@:E\U@UWaF@g6CPA7]=_Ac?<?BE)]GCB%uM
+C2@^'rbhaS!H<&XEs?Z+F*)JFFT$@^G5lddGlN'hH6%?[I=6QnIt*!"JV&N,KS5&6LP^kFMMmCO
+N/`jYrfI,As-"[lQ'@Q!QC!u+R@0M4S"#q<SXuFFTV8*SUSFW\V5:&eVl6QnW;rsrX8oC%Y5b[<
+Z*L^C['d?N\$rlX\[oGe^:qA]_>hFL`;dgS`r=$Xans6\anX$XbQ#fac2Z'Ubb9Mo?!(63>$5's
+Hu<G*;cc7R8S!un3bpK&-T!A=4ZbGU8OuBB77K3r3'98`4?P]+<)cjt;c?[p;c6Ig;,C'fbj*I5
+cMGl`d/VMjd.P]bcLoN]d/D9"ZB&s5?<LK9>$P<:>$:i0!F8t/>7=\>=BAU*<``C'<`N3"<<6#q
+r_i2]FBr3[?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8StMgRV5L8l
+X0&P/ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@
+oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcGZJJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXCN+NKQ*("drN5:bs/YXhorJ(ls-a1\?Y3rOWiE&tWY_P2X/`+uWMH8nZEg^?ZEppD
+^;%@m^qK]\!PQ)C])]D=WW0!sWrT7#X7WLkX8f:$Xnf'uXT5O"Y6;)5YHG&,YQ(j,Z2Cs.[.q'/
+[KF%K\@DCGrjW'>\@B*I\cK@OrO3*C\[oAa]=bei^&GbF^&PhF]`>eE^B;3`^:jBUs1JQL^V@S"
+pqZsIr5&6HqnrBN!6+rU!6+oW!6G/["3AU,b5KKbb/qd)apcJ;cHXY[d*^:ieCE+Kf)F;Cg"P39
+h;@,KioK7ckiqBulg4!*mdT`9oC_kRqYU5Bs0)G,g=+6gc-Oc9s8VpBo^&Ztea)Vb[`tD#K9'E0
+S=NhjW2unsW2ch#>ZtTD?<pdL]t:iS\-TXR[C!3CYHkHos!n$/hWE_If@JO'gZ%2Ni7Q]6eC2q1
+j4ql$aN2WD`4s!t]=GAWZ*LaD[emK,[X)1b?XR;O@qB4aBPD6tD/O93EccGJGBnL^I=Hd!K8#&9
+M2R=QO-,WkQC+)0S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uH
+iSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bX?!qDdI#@lYp5/d+nqlIare^W1#'4g*:K:GGr-o-(I=6WqI=6KiH%^j)rdt]8K7f5G
+Nf9$ZNfB$YNJmap!/g]1qhOs&m>:h"r/:T4r/:T6pl564r/Ui>rK$r>s,m5@plYK9s,m5BqN:`>
+r0.,E$Bp^=Q'IT!Pa%Arr07>JQ'M?7!13\N!13YM".,=>QhZsJQi<BNQi<?QR@<l<s-a([S=H(=
+rL3eWrL<eV!1iqWrgs1`rh0@eU\^bdV>d@lV[06#WiN8(Y-+u-Yl:mLZEpsH[^NZU\\#Je^VRh+
+`Q$!AbKS5UcHjkbdaQasrmh,&g&'J.gYCW@hVR2LrSf6cjQ#=^jlY^gkNV9tm-O0.n*oi;oCV_K
+p@\.Rp\=R\qYU0frVc`pM#T0t^87QrT:VaLm+U.;d(?K5Q(,J8_hY(3BjkaPF`he":k4.HJ:N3#
+:/=Va;c6Ihrf@)<$B'k&M2@%ELP:M>OT-j.dCcNWXJVegUS=KZW2Q\qUnsfZTV/HdURIU<Q^O&$
+P*(cbN/<FILPUfVLjE<4?XR;O@qB4aBPD6tD/O93EccGJGBnL^I=Hd!K8#&9M2R=QO-,WkQC+)0
+S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bX7S$-F:]+&g;$'Qk;=dWZ;=m]R;>sAr2`NcM1GqMq5m]eB5!M4o5!;8"rBg`S6UOXD
+:]=#f:B!ua9_MBN;u]bo;u]_s;c6Nm;uT\m;uT\i;[$-!;GpFlr_iYm"B&/r;H*Kmpf75ko2Y`i
+s&9;*=&r@%=&r=#<Vof$=&r@'=BAQ%=8Z+t=8l5#=SQ%n=9)M%=T)D&=Sl5$>5_V'=o_e'=U826
+=BJ^0>?b80=o_e+=o_e*>lJ"3?=-uD?N+=2@/aU:@:EaG@fKp<AH$0>AdrBdB4kmkC2.O!C2@a'
+rbVgVDf9T6EVsh[EH6)@F8L(kG'A.TH?spbI=?WpIt3'#K)U<EJqSf2L5(J=Ll%%KN/`gWO,oBb
+OcklkPa%GuQC!u+R@4&C#+M-RSXuIGrh9@ds.fUis/#an$)ji&WiE,#Xf\c*YPbX)Z37PB\$rmH
+\HTRV]Y(qmrkJQN_Z%LR`W*sUa8a6[ans6WbPfZac2Z#cc2>lbcSi:`@U*&>>$G-8PAY8LC0==u
+7S6dEI61(X0Io"45!D(^1J(2/84Q-=3&ii[3]oMd<E)pt<;]Z";Gg4d:f#B^jj3&8s3LGdr6GAi
+qp5,arltGf!6tMg!R8phci)5hcQffXEFW6X>?Y38?!CH9>?Y9;>[:T==^#$3='/O)=&r=%<EB*!
+!E2kp;X[G.>[CcF@:E_XAS5[jCMRd)DfKf>Fa&%TH@1-jJ:`E-L5:\EN/is]PEhH$R@B_<T:r$U
+VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR@E,p2TU]%:SXn8[kWq*4jYqMN4QX$8gXf8;"X/;hpVl?hrU9Lu/Z*L^@Za@*S^V.7p
+^q[Us]Y;%j]=5>^[^Q.6"KJN(X/kinr2ot"qQ0b#rN-(&ric@+!jSu6ric=*!3uL,riuL/r3QF1
+qm?L6[C6"Cq76L7"1PeN\c',=\c92>[g]dW\[oDc]Y2"m^VIY`^Au(K^Au"I^])"R^V7Fq]Y2"m
+r4W*Es1nWMrkSNLrPJTPs2"fS_Y_7K`;RXZ`5Td<aN)?ua8j?]aoT]0qoT8jcHXY[cd:(fda\9H
+s4.h7f\"m1g=tH?hr*JSjlYdjl0J<7%.<WTnalDHp\F[^r;M9IZ2ajW!R/jgd/O&%r:TaPXiArU
+mbFPZVL+&WA"0']>[Uj<WN<&!W`r\2@UEGH>JIka]",8Z]!o,TZ*CF9Z&Sc4jl#Fef@SU)e_fBF
+io&MAf@JC#jl>1Bb/hZK`5BF)]Xt__['HsE['ok>pU5$G?!^lG@U`kZAnPdlCM[m,E,fr@G'A1W
+H[U?nJV/W1LP^nINK93bPa.T&R[]k?Tq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Ln
+f%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR6@:O%lJc(>tM>2u'M<0QjM>r5.EtWIeG_(BpIsuosI=?TnIX??nLAll+K*d6bKoV4T
+N/s$[qMbT8MMmAfM#W8*M!^'!MY)i,N;AP2Nr4t6OSk7=OSb1:O8tFBP4t(=P5CFCPl6mDQ2m3L
+QMd$JQMQsHQMm-MR/WHMR/`NOR/`NPR/`QSRf&TPRK]+JS"-">rL<nXSG\lVS,f,TT)P>aTV8'R
+rhK@ds/#^l"fJ;tWN3-"Xobf2Yl:m.ZEsP;!k#MIrj`rY]=ktq_SjI7ai_cLbg"GZd*^7hda?Ll
+eC=KJs4.;(f\"pWgE,/+hV[8MiSrkWjQ,FbkND*qlg=*-n*ff9nac8Cp&=Xlp\=OZqYL*erVleN
+s"NuXVPBcVTVA+Ge_8?k_6no^S$(/@H'EJ[A84n_G'-MV:4[kFIt)uE:JOng;c-BjNsq#,MMmLP
+M2@"CL51PGs"")s^8n-5WhcD`U8"TcWN3(rUnaZWTW>#eR[KP0R?NkuOcGH\M2I%CM2C_XE*Q[T
+?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOckroQ^F52SY)UMUnsufWiN8*Yd1UC
+[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&t[k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR#7nHBK;>a8i;=.3W;<h!O;$K9O3&W]H4T.PP5X@\#5<_:r5!Ag2#=LpG6:4OE:&[fi
+:/+GV9hkR[!_Z3ZqbdJo;H!<hrDNVnrD`eq!)`_nr)<Dhr)<Smr_req!)rhqrDW\nr)<Pl!)r\m
+qc3PnnPoZl<E3)s=8Gts<sMi/<``C)<`]3$s&T/$s&T&!s&f;(r`K)$s&]M/=BAR+=BSf+=8uA&
+>5h\%=9)M"=oqo3>5_V%=ohc.r`T5(r*0/*r*B>/s'>S0ra,Y5raGh:&n5?\A7]@bAS,OeB4tsk
+BPD3rrbMLLrG;OPrbqgUs)IpT"*/I)FT$@^G5lddH2i6kI/eZtJ:W:MK)^H3KS>/9LPUeDMMd=M
+NW+qKO-#KePEV5rQ'R`&Q^F20rgWqX)kERmT:hmOU7n<VUSXfaVPgAlWN*#"XK8P-YPtd*YmReC
+['d?N\@K2_]DfJC^'VQi^r!t+_o0O6rl5)]aiaS+!R&^`bPfZablQ,7qTf#br6Y;f!h+aMr*([V
+>)[*4AmnqF5tFOBNE/#&0eP"6/O)B]0JbLU84Q0=7QEFf4ZYYe4&o5Y<W>u'<E)pr;,L.e:>+"o
+dIbf^ci;;hchu)Rc2GrecN)8hci)2n[ZYZA?2e(A>$YB;=^>69>[:Q>>[(?7>?P#)=8u;%<EB*!
+!)rhomndt.?!^lG@U`kZAnPdlCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK93bPa.T&R[]k?Tq\?Z
+Vl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9
+rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXODEd)hbWW&t!Xno3kXnf-uXnf'aWt2/0Y-5*sP_>I$W2?MnXK)9!s.ok)Z*:I;rj2X4
+rk/<HrOriY]tCtf\[]8]\[JrPWN)u!nZ;AbpoaY#rilC,!OB!/Ykt^)ZN%91Z2q;=qmHI4s0qp9
+qmlR5rOMs>qRI!D\[oAa]Y2%n^V@S`_#V@N_>h=N^]2+L_#V:M^\khF]`>hE_#M7M_#M7M_Z.OR
+_u[corl+oUs24iS#K=^%`l5p:`r=![aN)?ta9'K+b59?_b00e/#L:ZBd*^:jeGRiBf%8R-g"Y9;
+hV[5Kio9%]kj%I!m-O--n*ol<o_%tRq"adardk*Ts8UaTbg=bbdf08'rV?0XXiK#UnEHd`VLaGa
+>FV.Q>[Uj:WN)ntWa&b3@UEJI>ZneS]"5A]]",5UZE^X<ZAnkojPoIlg"4j,f&G]Jio/_mf,)le
+j5]"DbK7fL`507']=YV^['HsE['ok>pU:*,F'`3]@:E_XAS5[jCMRd)E,fo?Fa&(UH@1-jJ:`E-
+L5:\EN/s'`PEhH$R@B_<TV8-VVPgDoXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^=le^rF+g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0hqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO7@V0CuLAQf$M>2u'M<0QjM&(SkJqSesE+3p9IXQ]pJ:E#rI=$<qL&HZ(K`m'`NK0)!
+NWkE&O,]*Xreq#=MMd4HL\Z`+M>N,,M>iD3M>`>2M>E,.MZAY6MuAV1NVnh:O8b1<O8G%;OT:LB
+O8b7@Oo1:@Oo:@COckn%OoCOCP5pjHQ2d-SQ^3r(R$X0=Q2m9IQN*9OR.lsIR/WHKR/33NR/WKW
+R[KS4S!j2CrgW_Rs-j"Yr1*k[TDP5YT*(a[Tq_I["JVZdV5=-f$E'i$WiE,$Y-+t4rNQC/Zi7<6
+[C3QRrjW9F]=kqn_SjF5aSj3eb0.uQbg"GYcd2U;!7Ceo1"4Y&f%/I*g"Y<<h;7&Ii8WeWjQ,Id
+kNM3tmI'K5nac8BoC_eMp@n@Xq>1!cr;Q\Ks$6+hVPKiXTq\:IgtU2u`4LYeSZU)ZI#<Dc@r=n]
+FEL;T:4ReDIXclD:JOnh<)HIfO-#?]Mi3URM2@"CL51SGs!lL3Wi3&(V5'`YUT1;oXK/:qUSFES
+WMubbS!fV1PEV,kNK/sTMMHtDM=??$>]X4Y?t!MSAS#LfBkqL$DK'T9FEMePH$XjdIt3-'KnbD?
+Mi<^YP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhrqcQirqu`no_sFAJcG]KJ,~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO$7S6BL;>X2i;=.3W;<(LO;&MS^5XIaq3%m?W5=%S#5X.Iu4[)"s6pj:/r^.#Z6VgKP
+9h\5U9hkR[#>Iib91qlN9Dqce;ZKep;u]bo;>sMn<!-&s;,I6hr_r\lo2GNcr)<PlrDWYm!)r\m
+r)NSmmT'0d#?Y&/<`W:'=T2D$<rZ5%=BG?""B\`*<EK'"s&o>'qcO&(=]ea,qcEr%=BSi,=o2>$
+=o2D&>6.o3rEB,'s&f8'!*]5'qcs/,s'>\4qd'J7?XR8M@q>RKs()+?s(2FIBPD0oB`;]ICMIV`
+CH63JDJj</DJsH2Df9T6EH-#=EcH,?FED\KGBS1SG^=[_H[L9mJ:W9'K7\`/K7el4LPUbCMMd=M
+req2DNfK3`P*;,qQ'VE9s-O7`R[]h<SXuIGTV/!QUA^i$UnsrdW2Q\qX/`5%XKAV.Yd(I=Zi7<B
+[C3NR\[oAb]tM.p^VIY$rPSZRs2G#Y$-C?5bg+P]cd'i8c2Z#eblZ28c2,]gcd:%bchu/]d5SFd
+@9Zr>>?kB:L2CpC@UE;)8P2^+ME3p`0J5:55<V(]1G_Ql84Q*<2`Nf[3]fJd4&f3Y<`Juqs%rko
+;GYd+de_Afd/))bc2c,ecLT6QbkoWbcMl&hcHZ@6rm1Sjrm1Vk,J'.]A6`AD?!:N=>?Y<9>[(K=
+?!:E3=BSd.=]SU)=B8I&<rQ)%;c6Lj;X[H^>]X4Y?t!MSAS#LfBkqL$DK'T9FEMePH$XjdIt3-'
+KnbD?Mi<^YP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhrqcQirqu`no_sFAJcG]KJ,~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bXB5r9IN2s%]Xo>L$YPt^!XoGR"YPYL#XnJjpX8T.!X8f+*WMcbtYHjL\PFncPW<TE$
+Wi`.pZi737ZaI0K\%KJjrOiu\^V.@o]=PVb\[])V['R0JX/i>'X/u6"qlKaus/u7$ql]k#rNH:,
+r3?=-rilC,!j])9rj)R1rj)R1!4;^4!k,SIr4)a:s186@q7-./!4`$="M24W]YFH]s2"NJs2"]M
+s1n]PrkSBF"MVRb^qp#crk\TLs2"`Ps24lT"NA=!a2[nns2P&Yp;d<WaN4A&s2t>aqp#/ds3Chp
+dF$FmrRLr!s48LJg"P39hVR/JioK1^kNV6rlg4$,n*ol<o_%nNp\=U^r;HVGs0Vh+f`BIFrmLfG
+&H;M!nZKaZjmqc:WPtNbNa)LQ**ZfWWN)nqWiK?/>@CoH>[:OJ]t1ba\[oA\['Tb9!4.[bs5YQo
+nCuUIf@]3Gio8qSf[nj)g#V8QdEBVOc,7B5^:_(h[^<?G[^<L?[J.+V>?kH@?XR>PA7]@dBPM=!
+DJsN7F*)SLH$XgcIXm!%KSG8=MN!RVOckroQ^F53StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcG]KJ,~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bX>%25`G)+S(reLQ2oSEF%++A]gIXcp#K5kpMG("jhIXlfpIsZNsKS+o1L4tA:NrG+:
+NX1])NK&sWMMd8hL]E5.M#W>/M#N7tMYrA4MZ&G7MMmDlN;\b7NWY?&O,s0urf@#>rfR/@!0@,@
+!0R2@!0R2@q2kZ=rK.2FOckt.Q2d-OQ^3s:QN`bER$a5,qj%5Krg*AH#+1aCQC!r*rg3MLnsKNI
+S,&KQS,8]USc##XSc>8]TDP5YTDtPaU&:W*Tq\9VUSO`_VP^8hW2ZetX/rG+YHY:9Yd(L?[']e>
+rjVp;$+[[[]Y2(r_o0Om`rF(BaN;QIbg"AVc-FV\d*U1fe'ljtf%/O.gYCZBi8ESRioB([k3)!o
+lg=-0nF?)?oCMVIp@n@XqYU0frV_?J"nod1US4C\U,VDmgsO?c]nDQ>W63S<J=UmpCJ&blF\GY.
+IXuutJ:LEl:/k1k;Gg8POH,<ZMiE[PLkgbAKnk`h&CeFpW33D%U8"EYXfAG'X/c/p(7h2#X/;GW
+R$a>+P*1rfO,]$RLkpnEn;)Eq>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@('hJ:W?+L51VCN/is]
+P*D5uR$sP:T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=a
+kNM0plKmm)mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bX77^-I:ZP@L;;b7N55dYE56O822E*\r5Q<tU5<qFr4[_Y(6UX?A6N^+Z:JLg^!DZAf
+9`Iic9E.Te91hcR;Z9Sp<;TSo;Z0Jj;@$3!;Gg7d:f($a;Yj;l;YsAm<;0>j;YO,f<<#qu<;fhn
+<:s5k<;TYr<`f0#r`9&#!*9)#!*9)!s&]5$!*B,"#?P#/<E3.'=oMP&=oMP%=o)5*=]ea->$4s0
+pf[W!!*T2&r*'8,=^##)>Q.e+>Q.n,>6A,9>[./3!+#G-"^bYF?X[FB@fU'<AH?CUrb2=Grb):G
+rbD@Hs(h[Prb_^QrbhaTs)J*\rc/![rcJ0_)0^=NH$FRZH?sseIXcitJ:W?*KS>)5LPL]bM>rG5
+MuJ\8NW5&+OckllPa.Q%R$j>0R[]h<SXuIGTV8'RU8+N[V5:&dW2Q\pWiE,$XKAV-YHY79ZF%!I
+\$rlX\[oGd]tV7r^qmkd_Z7XS`W*pYa2n,!qT/][!6kGf!mf0;r6PDgr6P,brR1_nrR*=<N+?*p
+>[(K<>_@!9BOkLS5Y+O?EfrCD8MMhU.R$$Y0JbLV7n-!;75m1c4?NO)"?TXa;cW`os&&qq:Japb
+eG@Yjde_Afd.u#acMGfcbjWgHcM#T_d/D?:^R'"Q>[1K=>[:W>>[:N<>?tQ@>?b'/>$>!/=B8I*
+<E3(#r`')";H$Ijmne@8>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@('hJ:W?+L51VCN/is]P*D5u
+R$sP:T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0p
+lKmm)mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJAFp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXBPr0IPHM!gXo>L$YO\jeYPt]uXnAb,V5L2gVPpMqXg#$mOdW2LWrB%!V>de+Yd:aE
+[C3QYrkJKF"1l1]^&GVS]",A_[^<KMZaR9JZE(%+qQ'Xt!j/Q*riQ(#riH1'qQKe#!3uC+s02O.
+!OB!/ZMCj,[/RK5[K*f7\G`r<])K8:\G<]8\Gs,>\Gs)C]">Sf^;0`a!Q)bO`;RRL_>h:O^VKi`
+#Je0k^qmh$_"b_G_Z%IQ`W*pXa8X0[`r<sW`r=$Ya90K(aiXM&s2P,\qT/`[rlYAecHcF6#0tQ@
+bg"J\rm:_qrmh&"-eI#'g"G*6h;7)Kj5f@ck2tmmlKdj*mdKZ8o(;VJp@n@XqY^9irdk*Xrs%<5
+dF-IleGfJ)rqc?ZY.rNImdAo0dC*hQOIMc1>@Cj:WMc\pWi90,@:EVL?!>"V]=PM`]=YP[['?m>
+ZAnl5jQPt$hq?W5gumhZio/bHfA,!2j5o:JbfRrK`PTF*]tCqb[Bd*H['ok>p9t!+DI-[X@:E_X
+AS5[jCMRd)E,fo?Fa&(VH[L6kJ:`E-L5:_GNK90aPEhH$R@Bb=TV8-VVl6VrXfen5Za@0N\\#Mg
+^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*#s8DtJ~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bX>[hDbI,0YSMYr>1MYi80M#3#HI!pEjI=H]qJ:`DmD0(,QIXccpH\R6/K7s5Y!JQ:,
+O8Y(<NsU`'NK&mSMi!7IreLQ0r.tB1rJ:Z5M2@+Hm#(_!!/g`5re^`7N;S\6Nr"h9NrG+;OT1I=
+O8tF;OSk7@OT1ICOT(CBOogi3Q2[*LQiEBOQiEERR@*r>rg*ML!1*PL"IPOBR$[f<!13PLopPiI
+rgEeTr1!YR#aq-OS=?"<SXo\K!1j+\rh'.\"J;?ZT:l.VqkF(crhT[nVl9Tps/Z.#!3Z=)!O8s0
+ZN.B3[K!Z<\%&uY])9/D^;%M$_o)Jl5/kO_aN;TJbKS5UcHjh`d*g@keC<%$f\,!5gt^`Chr*JQ
+jQ,Fbkih9qm-X61o(2JGp%J1Uq>1!drVZWnK)YrO_Pa70U&Ul-ld+A7bf@GNOe&Dge[0k9McFV/
+G'.q%;GM^kIf=j6Inid=<Dugn:lpa!Nf8sXNJ`OKLPLV>O8g]]]r\<<ZDXFlU8G,qX/rA$Unji]
+UT1>lSXPt6R$<esOcYT^MMd4GM2C\Ws'0GJ?XR;O@qB4aBPD6tD/O<4EccGJG^=^aI=Hd!K8#&9
+MN!OUOHPfmQC+)0SXuLJUSOfdWiN8)Yd(OA[^`l[]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ks*t~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bX7S$-F:YekB;<gsX4oIPO4?l"o5s[Cf4$Gk-5Q<nY6pj=.6psC06:+ID9he;T:&[fm
+92&#R9MA)P8kf4V!_GpSr_rhrrDWYms&&Si"Aquk:Jpsd!)rkpqc!GkrDN\onl,Ne!*/tsp/V&j
+!``3!q,RGos&K(urDikur`B&#rE&kss&K&!rE'#!#$+f-='&F'r`B,%rE9,%!EiV*=9_r2=]eg0
+=8Q,"=o;J#=o;J'>6S27>?Y05rEK;,rEBP2>?b?;>?kE;qcs,+s'>k7?=-uF?i+72@L-ISAS#C`
+AS,TQBEDg[C&2TECB/2LD>nDVE,T`9EcV/#2KX(aG'A.TG^4R\H[L3fI!g?kIt3*%K7nl1Knb;9
+L51SAMi3OQNK&sZOH>TgPE_>tQC+&.rgWqX0:nf/TV8'RUSFW]V5C,fW2Q\qWiN5&Xf\b0YctF>
+['[6L\$roY]">Sf]t_=t_#D.N_ScAkrl,eqaN2KFb/hWA_ns1&^VRe+`lQ?IcI(%crQtPkr6YJk
+rmL_np!c@JO(;Hu?!LZ??%?R-BObIT5Y"I?@$4t\G<%031Hmr`0JkOU7n6$=77K6r4?Pbh4?HSD
+<)upr<)Zap;c-Cg;:O+le+qGgdJ;/ccf`UAcg]<[d/_Vmd1OgDR<<%G?!:N=?!UW>?!CN<r`oq9
+=]nj0>$"^,<`W:'rDrqu"B8;u;GljYs'0GJ?XR;O@qB4aBPD6tD/O<4EccGJG^=^aI=Hd!K8#&9
+MN!OUOHPfmQC+)0SXuLJUSOfdWiN8)Yd(OA[^`l[]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ks*t~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q-h6]pn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTDK'iOSc,\iY4SpnY4AdgY5#.!X;.k5V5:)eVl6MlXK8J-Q^*r6W2ZYlr3H[9[C3QR
+]tD%nrk0#\^qICn\\#A_\%&rV[(!NNZa@$FqPsb#Xfeh/riQ=+Y-.]+riZ:)!3lF*!3l@*qm-4+
+s02O/rj)U1rj)X4Zi%30[/dZ3\G`u<])B2:\GEc9\Gs,>\-KRU]">Vg^;0`a!lDjnr5AcV_o'@j
+_>_=N_#V:M_>h:U_8*k&^q[Y"qSE3K&AuH)`Q#s=aN2KEaiDE@a2\(urlG,[s2G)[aSs6[a90Q,
+aiaM(!mT$9rQYAfs31hpcd:(ddaQ^rrmhM0f\"m2gtglHioB+]roX7D'^4lLmI'H3nac;Dp%J.T
+q>0scrVhBJ[f6Qgh9sa#e("?r1]-q;Xfg46mdAZ4d%G\oO^O`N=^td:WMlepX/T</>%:rH?!P.Y
+]Xt_d]Xt\^['Hs@ZAnl5k3MF+inE#;h<F+^iSiVFg>LZ@io]:Mc-",Ka25[.^:_"c['I$H['ok>
+p9o<P>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@1-jJ:W?,L5:\EN/is]P*D5uR@B_<T:r!TVPgDn
+XKA\1ZF%'L\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o^qhLp@e7Zp]1-hqY^6ir;HTdrdk*#s8N%K~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q.Ilorn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPT?t*kjIYs$?M=QQ%Mu/D/M$&*PI!tpAs+(Z1KQ1pNH?sscI"m<.KS98Xs,Ho9s,RbN
+Nf8sUMi!@MM27%GLPUbAM#)u2M2I4Lreg`6onia-r/1H2!/g`5s,-i7rJ^c9qMtT:!K`BANrG+=
+OSk17O8tF=OSk7@OT1ICOT(@BP5^XFQ2[*KQO&tFR$a>1R$a6>Q3EV@Q^=#(rg3SNs-EbRQi<<N
+Qi*6MR/i]RRJrWYR@9M2R[a;FqO@MQ!h5^MrgWqX!hGjPr1<kZs.97]rgs.^s.BLgTV/!Qr1j:f
+s/#an!3,mr!3?(""0Si3Z2V$1['d=@[K*f8\I6$^]=Y_g]tV7t_SZ;j(WFD7a2lBFbK\;Xcd:%d
+daHUneC<%#fDaJ'g)o))hV[5Lio9(]kNM0qm-X92o(;VKp\=R\qu$Bjrr.KK5l\m'VP0`YUSI.o
+gsaNg^4V$.VSpu]L9,T*:2E[KF\G\/J:N-"It)uE:ek"i;Gg;QO,o<\NfK*XM26tCL5:oj-J6&6
+Xfo(1USFW`YH=k,X/MkjVPBueX/MSXR@'>,PEV/kNK&gRreLQ2mtc<p>[:]D?t*SUAS,UhC27X'
+DfKc<FEVkRH@1-jJ:W?,L5:\EN/is]P*D5uR@B_<T:r!TVPgDnXKA\1ZF%'L\[oGe^VI_(`Q$!?
+b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTd
+rdk*#s8N%K~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q-h6]pn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPT7S$3K;;G(9;>!`s4?Yej5!;%k5X.M"6T?ta4T.DT6pa:/6UX:/6:4OD9he;T:/:d^
+!_l?^r_!5`rCd#ZqGdDl!)iboqGR;is&&hqr)3MkrDNYor_ibnrDNAg!*&nq!*&krr)EJlr_ru"
+<`N,p<W?%u<W?%s<<-(s=8c5+=&r@'<`W:&r`&r!r)`nu)HKp@=BAO(=&r=%=BSa/=]ea,=BJ^/
+>$G-4r)a,+=BSd1=o)>"=nl1s>Q.n->Q7n+>7"P=>?kE;>$>-8qd'5.#@CeD?XR8K?iFI4@K0j<
+A,^!CAnP^gB4trWBFeflC27R!CM[j)DJsE1Df>Sn#B=d*F*)MIG5c^cGlN'hHN&7ZI!pElIt*!!
+JV&N,KS>)5L51SAM2I1LNK0$[OHG]hPEhE!R$a;1S"#q<SXuIHTq\9VUnji`VPgAkWMuntX/rG*
+Y5YU:Yd(L?['d?O\@B)\]=bhk^VKibs2"cRrl"iU"NJL&aN=G(s2tno`l,^.]t;"o_SsU>c-QC:
+rm:VkrR1\os4$tsqUYMn4irt$>ZtB;>?kH`?ZKgj@9l,`91iNR:ch`7/138*5!:SV1It#*7Rom:
+3B9#^4$5Ve<`N+";cQgr<)ccp;#jMme,%Mgd/_Pcce6\5dI5N`dj2l%F_4rd>$YB=?!:N>>[(H=
+>[CQ:=B\j3=]S^+='&L)<EE6#<;oer;=78->?kH@?XR>PA7]@dBPM=!DJsN7F*)SLH$XjdIt3*&
+KnbD?Mi<[WOckroQ^O>5StD^NUo(&hWiW>+Yd1XE\%0)_]t_A"_o9X:aND]NcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQirqu`no_sFAJcG`LJ,~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bXA8l[;LTCBUriY:bqlTq&m&p>i!3#mo5,>$MUo1)iWN<5,Y*PQQVPUQ'['R3L[C<WQ
+]t_=r^:V(n^:q7l]=>A^\$`ZT[^ifPZF%$F['d$<XKAV-rN?7)YPtd*Y5kg*YPbX(YQ(m-ZMq30
+ZN%62ZMq-/YQ;#7qm6.+rj;m;\%&rWrODg:rjr*>r4)F1s0rEH]"5Md]tM4s_86,g"N8="`Pqhp
+!5ncPrke`Qr5&EKs1n`O^])%E_%4E#`5K[7`lH0AaiVWFa2\,!%EQZ3a2l<AaN)<?a2Z*t`X9c-
+ai_cLbK@uNbl5odc2GrfcRR;hd*^:ieCE.$f@\a0gt^fFiT&tZjlY^gkNM0qm-O--n*ol<oC_eM
+p\t!gqZ?]prdk*Zs8V$\f$r1!ec#M%r:fc`XjuG!mb=JZV/h<P@\90\AR;C9W2uu!Wa&b3@UNMJ
+>JRtc]">Pc]=G>VZi71gs!['umdoGmf\>?Lki1R[gtCTGgZ%5TimuAtaiMT@_8*^q]!o&QZa[:0
+[WYk[>[CcF@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPEhK%R[]k>TV80XVl6Vr
+Xfen6ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DD
+o`"Lap@nO\s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bX=^YfUFG5U0fSTB\oS`^+!.Xuq"+,EBI/\R(It3'%JT,^WI!^O"KnTAY%>Bh'OH5H^
+NfK0]N/`ksMZScmM>iD3LBiWlLPL\EN/ROkpl#*.r/:Q3rJUZ6!K2p7MuJY8NV8A4O8b1=O8Y1<
+O8+e:Oo:C2OoLUDPQ-pLQ^7W<pR1oFrg*SNr0RJNrg<_Ps-E\Org<_RrL3bSrL3_R!1NnVrgNkV
+!1NnVs-itWrL3bU#Fq?USt;LDT)G;]T)YA\ScGD^TFmljTV8'SUSOZ[UnjlcVl6Sori,t!rN$X6
+Y-,"5Z*LX?['d?N\%&rY\[_XM&%fEb]=bkl^qmk)`5Ta:aSs<]b7MnCcdC.gdaQ[peCE.$f@egU
+fcJl%gtprHiSrnYjlbmnm-a<2nalGIpA"I[qu$Elrdk+Ls!>adW2$,^US@+mh:0]i^4_*/Ur(Te
+H'WVY@r"h`FELMXJ:E'"rdXoC'3/"0;,NF9Nf8sXN/igQLkpe@L6)?UgV0bnYd:@*V5C8sY,n_*
+W2?PoUo:8nVk9HIR?j-;OpI//Nf&^NLkpoVLj!!->[CcF@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?n
+JV/W1LP^nINK90aPEhK%R[]k>TV80XVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.
+g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bX6q'^B:Jo\>lV[XX!^/S,r]U9D!BiRE5Q="V5;kSc5!D>$6pjBA6Nf\A:JX^a9`Ild
+9F4Ee8kVfL91qrOrCHu]r^m&ds&8kqqG[8hr)<Plr_`GgrD<Pmnl,Ne!*9)!!)rhq!*/tss&K%t
+rD`hsmo9?gqcE_ur)`l"!*B/#"'8T,=8c2"=8l>&=T2D#=T;M1=BAR+=BSd1>$:i,!EiV)=nu8$
+=n5_r>Q.k->Q%h,>Q7k,>Q.n-?2n10>Q7t)?2n44?sd7<?iFF5@K'^@@q&qYA7fCar+H"B!blCa
+rbMOM!,_^Q!H2rUEW:(ZF8p=gF`qqPGBeCYH@#R;s*Xfps*k6'JUrH,K7s5X-&.22M2I1KN/WaW
+O-#KdPE_;sQ^F52S=Q1?SXuIGTV8*SUnjjdVZ3P#W2ckuXK8P+Y-7i/s03*@['d?O\@B,]]Y(tn
+^qdec_?Iiq`5T[6rPniX!QiL_bRht?aN)<>`Q--Gcd:%ddaHPBdeVAjeGIenf)""ufJCg>Bj=hH
+>[(K>K3iS4@prS,5YOdSO^0q11G149/O)B\1c%]o7Ros;7Q3:e4?GVe4BMG[#ZXf$;c?Rj:Jpf5
+dF%7-jO4LVT6FjP?<^]??!UY5>o[*T?!L`>>?>'5>?P!.=B8O*<`N1#<)lmr;H$H\:j-&J>[CcF
+@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPEhK%R[]k>TV80XVl6VrXfen6ZaI6O
+\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lap@nO\
+s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$JcGBArVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfaU=H@CgPrN6(%iihFGs,@&@VuEPBV5C#aV5^JpXKJY/Z_=5#Z*LdG\$rlV^;%:m^:h1l
+^:q@q]Xthi\[_XJs0W0A['d0E['d9I[/R3.Yl:j*Yl1g-Ycmo-rNZC,!3u4'!4)U/!jJr7r3Q.)
+s0_d6s1&$<rOVs<rODO2rjW9G]=Y_h^;%J!_Z%FQ`V[[T`<jK#_SX.*_Sa7-rkSTMrkS]P^:qAY
+_>h@R_o0On`r4!Wana!WaSj-Z`r!aT`r='fb0.rMbKJ,ScHa\Zrm(Pg!7(Si!7:_m!RfKsedC$]
+g"P6=i8EVTjSn<AkPs`Ml0I[&mI'KCnHJLUo_%qPrqQNi!rMopJcE:\#N=areC<(#eGfIlr:ffb
+XN]Pgn)U4[_L[E&A=T0\>[OP3WN<)"WENP1@UNRB>6D[R]=\'T#._1LZa$a=NW1EjnaH)-gY1EB
+lfmKhi7uuJkhP4Yk2Y(=bK@lH_SX+%]=PJ[Za7'Gn$[CC>[1QA?X[DRA7]@dBPM="DJsN8F*)SL
+H$XjdIt3-'KnbD?Mi<[WOckuqR$jG6StD^OUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihlPcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcG`L
+J,~>
+JcC<$JcGBArVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfa1!Bl/'KMMfuAq24s*r/)G1Ci=cNI!g9hH[L3hIXlp!JV/StHA$m(L5(K_LB!;RN/`mY
+NfB$ZO,]0ZNfT'UMMd7ILPUbCL51S@reCK4rf-f6oS`[,!K2j5MtN&/NUi,0O8Y1=O8+h9OTLW,
+OSY+=OSb.?P5UREQ2['LQi<BLRJiQSR/<6MQN*9OR/WHNQi`VAQi<<NQiEHNRJ30KS,\rVRfJoV
+S,SlVRJiTOS,o1Pr1EhW!2'4_rLj4crhTOis/#dpri,pt!3?("!3Q7'"g>2:Z*CY7[/RN;\[]/[
+\c02?],J>q^;%J"_SX4/`Pom<aN;WKbg"J[dF$CleGe"uf)O>&f\-8Xs4\FHh;-rGiSrt^kiqF#
+mdTc;o_/%Sq>:-irdk+Jrr^?BWhfWh/u#,_g"4Kh^4_**U;53mH&\>+@r"naF`gDTJ:N-#It)uE
+:et(j<)QRhO,f3Zrf.2@MMHtCLPCli-JZA<ZEgg9V5C,kZ*1:2X/MhuXeVkpX/M\]S!o_1PEV/l
+NK&jRrJC!!G$8-U?!grI@Uiq[AnYjmCMds-EH6,BG'A4XI!pKpJqJc3Ll%%KNfT<cQ'Rf*S"-(B
+TqeE\Vl?\tXg#(:['mHS]"G_k^r"".`lQ9FbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6Hjrr)KgJcC<$rr7K~>
+JcC<$JcGBArVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbf`FE8ki&VbY[n.#ran,5!;"l4?Yk,55mbN5X@V$4?Pq+6P)R[:JOVX9MJ2T9MA/T9MJ7Y
+9*7dX8P8nP!D5r^;Z9Vl;ufkp;Z0Pm<;ohh;Z9Mp;H$Qb;u]f&<E)pr;cH^r<V08c<<-(r<W6%t
+<rc:q=8c5*=&r@%<``E$<rlE+r`K2$!EWG&=T2J'=92K*r`T2%!*T;)!*T)#r`T)$s'#J,r*02+
+!+#M-r*'8.?!L\4>l.h+?N4C3?N4C2@/aU6@fKp=AS1mP!G?$BB*W*aBkhBuCi')gs)7pW"`eU'
+F*)O'FoQXbG7AeBH$Xd`I!g?iI=?Zrrdk*$"+u8[L&Qi,L]<3&MN!LRNK0']OckolQ'R`&R[Tb;
+S=Q4BT:hmPU8+N[V5C/gW2Q\qX/rG*Y-5(6Z*L[A['[6M\%&uZ]=bhk^V@S"_8=(,`5MPmrPoMk
+ai_cLbKS2Tc-FSXcHaeadehMmeGdtuf(mhrf)=4tf_X;"g'#lpBj4d?>TI$S>[_Mc@prS.5Y=XO
+O)?p@:bXLZ/jDH\0/H6mr^Reo6oI"a4?GVf4?HMA;cH[q<)Q[n;Gg7fV:4h]/'"?.Am\eI?<^]?
+>$YH@?!LZ??!UZ7>?Y34=&r@(=B8L(<`E's<)ZXm;=78(>$P<<?XI5N@q9._BP;-rD/O93EcZ>G
+GBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`
+e'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?s+14L
+s*t~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK=L8I=IH`r2p"%qlfLlpoie^*fuDBNK97$Unsr`USareW2m&$YcY+6Yd(L?\%&rWrk8?G%
+D0?f^V7Fo]=GJ^\[K$I[LKXN['[9LZaI0KZ*Ug@ricC+ril@+r3-7-ZEj;2s0D=(s0D[0!4)U1r
+NuU2qQp:2[f*]5\,a)=])0&;\FmE4\-0@R]=bfU^';?g_8=+.`VdaU`rj?"`5DSkrPSKJ"2M[c^
+\ttI_$@lr`5T^9aN+8#rQ5#Y!64iT"3/9t`Vm^S_uRjWa8j?]b5TQabl5mHc-4ATbfe8Vcd:%dd
+F-Oqf@S[-g>1ZEiSrnXjlY^gkNM-olKdd'mI0Q6naZ2Bp@\+Qq"X[\rqc]oJcE:\#NOt#e^rC'e
+c,RmqtTcbXMEZYn*$Oaad7mH>b%FX>[XS5WN<(uX'8h6@:<RC>7J?\]Xthi]XkPZ['HsANW1Hlo
+C);1h:pcLmciimi7uuQkiV!fjl=q=bfe)K`5'.&]Y(e_['R-I[ICVP>$G6;?=.)K@Uit\B4u!pC
+i4-0EH?5EGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.EU84W`W2cr$YHY==[C3TU]=bkm_8=.0a
+2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nlr
+Ug)?s+14Ms*t~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1&(D8p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK='uC2SFIM<p*(DJa6,E,^=)HP1^TI=?WpJV&H'K7no1KSP;<L]3;UNK9'ZN/isYN/`dT
+MMd7JM27%ELPUbCM2$e@M1p_>rJgc7qhkH5q2>93s,6l6r/:T6!0-r9rJgZ6rf-i9rf?u=!0R#;
+oTB*6rK7#@s-*MKrg!POq3h5Ns-`nSop>]GrKdbTQ'IZ$Q^F0<RJ30LRf]%JS,SlUS,\rSRJrWT
+S,SrXSH,8\T*:m[T:VXFrLOCiT:_dLTqS3UUSO^bV$!TmWN6#u!3?("!3Q4&!3lI.s0Ma4!k#JG
+rj_s<s186Brk/9F!PcGL_>hFQ`=Ku/aN;TJbK\;Yd*^:jeCFNK+P59!g"P07gYCZBhr*JQjQ>Xi
+lg4'.nac>Gp\F^`rVhBJr;SXpXK/4mUSOZZj5&D5a1d7[P+fG7_g7<>FCo>]G'8"&;1X=LJU`0"
+:/=Yb<)Z[l:QUWtNW+q=NJd^ks+c[8.c.tDZEgg;V5L8sZEL@3X/Mc%XfJM%X/M\_S!o_2P*;#j
+NfK'TMMR(Gmtc?p>?kH??XR;O@qB4aBPD6uDJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPinQ^F52
+SXuOLUnsufWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&
+mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<:E9h\>[_,1,."unV&3B92cr]C0Br]U9Fr]gEL%R<<I6UX=06UF.9:JOVZr_3Acqb.5f
+9hS/Q8k_kV8cME^8H;B^8c;Qd;uKYq;uBMn;u0Jh;uBPl;$'Wo<;BJl;Ya8j<<#ns;ufql<!$'!
+<;BPn<rZ/%<`N1#r`0,&<`W<#<r,l$=BAO(=',B%rE0&#s&o>&s&K,$qcEi$r`K/$qcNYt!a/]1
+rE8esr*02+s'>P-r`]A-ra#M.!+#S/q-=53?sm>J?=.(=@/=:5@UisJAc?9BB4h-Urb2=HrbDRO
+D/T;j!H<&WEXd,5G'A+PGBeCYH?ssdr-\TpJ,Xs&JV&K+KnY9\LIR)VMMd=NNK0$[OHPcjPa%H!
+Q^=,/S"-">StD[LTq\<WUo()hWMunuXK8P+Y-5%5ZEggD['d?O\@K/]]Y(qk^;%M#_Z%FQ`;[aT
+`s'Q)aN2KFrlY8as3(_mcHab^d*U2>e,Ro"e'upurRV##s4I5#s4I;'qqCo$r7isVS7u54?!CQ;
+>[2VqCL^dW6:"+6<fVJd5$0Zq2C^pT4"iB]84c<A779$o3'9;%497NDr_rqt<E/oqs%rboYgi!h
+psotuUNpHY>[(N??<g]??X@%;>SU@L>?Y35>$4p/=]SX*=&r=%<Dujqr_`_lmneC8>?kH??XR;O
+@qB4aBPD6uDJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPinQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[
+]Y;.s_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+7GEI!2)q6'Uus/u!rriZ(#jfUM1P`Li`N/s.#USXi_Vl-JhW2chtXfSh4Z*LXB[^Nl_
+]Y2"m]tM1o]Xthg\[f2X[^<NO[Bfe=$*q%JZaI6J['d7;Yl1j+YlD!*ZMCd)ZM_'/Z2q;;riuI.
+"1,DC[/RE1ZiIN5[/RH6[^Z4Fs1/0@qRQU8q76O8&\5E]\[f;`]Y(ql^;%M#_Sa=j`W4'Ya9BW(
+`Pf^4rl"fR!lDagrP8QN^VB`_s1nlV`5K[9a83mVaT0E\a8a0Ya8X'Y`;[X__SO((^VIY$`5]g;
+a8X1,b0.uPc-+5Mai_cLbKS5UcdC1heCE1'g"P39hr*MSjQG[fkNDj.rosOMm/HGdnF?&>p%@tM
+p\=R[qYU0fr;Q\Hs1A:9j65LSf[n^*rr3u9qX^hj^=qlAlD22/R"CE]SXc6U?sTn5Xf8;$r`g+?
+@UNGF>en%b]Y(qk]=52TZa$`os!d7*n+,Jnh;.VgkiLg^guItilfR9himuK%bK.cD_83q#]=G>V
+ZF%*Jn@!@?>$P<<?XI5N@q9._BPD3sD/O93EccGIGBnL^I=Hd!K8#&9M2R=QOHPfmQC+)0SXuLJ
+USOcbWiN8)Yd(OA[^WfZ]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+79A86.5b),bJ(34D4D/=',E.3+[H[:'eI=-HlI=Hftr.>')L5,Vd$BL1*O,f0XNfB!T
+re^Z2!f;\freLl8LkgeAM2$eAL]3;4N;e_;N/NUQpP]'/re^Z4rep`6s,6l8r/L]9rJgc9rJq)C
+O,oBarfR,?s,R/AoTB*6rK7#@#*Y=;QC!r*q3h5NrL!YQq3V,Irg3\Pr0@MOQC!u,R/NHIRf/`Q
+RK/iURK/cTQj/nER$jD3S,SoYSY#_N!1s+Zs.97_s.KCcs.]Og#,J)mVl-Jnri>su!3Q4&!O/j.
+Z2q;=rj;a7rjVm;s1/6D]DfJC]`Pp__>_;2_o0L4`l?*@aiMTIbg+M[d*^=lf%&@&f@\d0g=k<:
+h;7#HiSihXk3)!pmI0N6oC_hPq>:*grdk+Is#S3%XfA.lV5'dPe_AEl^4h-$T<lk_H]+22@r6"*
+F`pGV:4n%IIt3&F:Jaed;c?OiOcPN_NK0$YMuJM5LPCli/)\4HZa-p;VPgB'Z*(11X/N,4Y-4n*
+Wi2V_S!o_2Pa%>oOH#6XM26tEM=?=A=^#'8?!grI@Uiq[AnYmnCMds-EH6/DG'A4XI!pKpJqJc3
+Ll%%KNf]EfQ'Rf*S"6.DTqeE\VlHf"Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiE
+i8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.f6oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+6u8PDml;#`T^3]T,[3]fJdr]L0Cr]^EI5lO(\6UF+,6:""8:JFMX:/+JVr_*\o9MA)Q
+92%rN8kDSQ8I7p[8P2TH8P2QGr_i\ns&8tsrDEVoq,IAmrDNMk#Z=Mr:f1+h<)`cor_rbnrDN\q
+r_ierrDN\qrDi_orDiksq,RGqr`&u"=8>ns=8c1t<rc;#<s)K)='#<%rE0)$s&f8%s&K,$pfIQ"
+=8,ho>5DD%>5;;&=BSf+=o_e'>QS,7>5h_+?2\%.?2n.0?2e+-?2n72?Na\B?sm@@@/jR<?t!GO
+@:EaGAc?9ABDuKCBDuQFBkmW_s(hmVDJsK5EH(ks!d&R.rc\?crceZnH@($eI=?VDIL:RTJUrE)
+K7nr4L]3,0M%#<$N/`jXOH>TgPa%I4Q7SAiR[T_9SXlCGTV8-UV5:&dW2ZetXKJ_0YHY79ZEggD
+['dBP\@B)]]=krX^Au(K_Z.RR`<O?&`l?*@ao0B^b6#o4c2>leci2;ndaQ\Ee,e+Nrmq8)g"G*X
+g\ok(g\]e&h>5t2et$S^>Q.nJ>?k?fCi<lo>!bPG8lCOr3Bfne0/bXO4ZkDS2#^#I7n#oH2uko9
+4:=5O<)cjq<)ljp;cEZmjOW2<jjrhN(<r_(B4"nI?<gc@>%1fD?!LT=>\%&ErE9;)=BJW'<shu-
+=&r7!;c?Rl;=@>%=^#'8?!grI@Uiq[AnYmnCMds-EH6/DG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*
+S"6.DTqeE\VlHf"Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!
+m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?CdbfaI6F*WP<o<8.ror\4rpoih_s.1:$Q&pudNK96fV5'fZUSk#gW2Zi#Y-5"4Yd1I@^VBc]
++ht_)^qRLm]=>J`\%9#V\$`]SZa6sD['m<M[^NQLZ*Uh9Ykt[.Yd(I=ZMq31ZMUm-Yd+/4!OK03
+ZMq-.ZN%9#Zj=(J[^WcV\[]0;\I5pV\%&rZ]"G\h]tXK\s1niT_o9X8rl5#[rlGVj`l?!;`Pod5
+_ns:+_#;(X^q[Y"^r!t+_o0L4a8*gVaoBE_a2[tr#faj&`5BF,^qTc\"hqae^r""g_uRgV`ra?&
+a8O$W`tZY=bKS;[dF-Rrf\,!4gYC]FioB,!k5OTEl2U#clg4$,n*fc9nauJHp%J.Uq"X^_r;?Nm
+rdk*]rs.WNk1SG?f@Kp#1]$e8XM3<NnEQg``h\3JP%'uS>[h$BWN<)!XJoB.>%1iE>[5.[^:h1o
+]Xt\]['R$AY`A`4lh'Z9j5&PKp$Lu(j5AVVn*0-!j5\tGd*BhVaMu*5^q74i\$E<H\$YY5G?J*R
+>[:ZC?t!MSAS,RgBkqO&DK'T:FEVkQH@('hJ:W?+L51VCN/is]P*D5uR$sP:T:r!TV5L;mXKA\1
+ZEq!K\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6hr;QZerdk*#s8W+L~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfa'rASQ:=mYUdtg55fds)n]kEGo]2Ci435Hi89jI1CaSIt*$#Jq8Q+KRni=O8b.POH5E_
+O,]*XMiEUNMi!7GM2@,fLC/loLkgeBL4tD;NW"h9MuAV0MuJV6M>iD2MuS_9Mu/J4NW"k;O8=n4
+O8P(CO,f6]O-'4#!0[8Br/gl>!0[>F#Ek=:QBml(R/NHQRfAfURKf7MR[]b5R/30LQN!6QQ^3s9
+QN<MAqO.2Krg<bTr1!\S%%E]RR@'>-Q'R`&Q^I`>"e(pLR[foHSc5/ZS,\uYSc52dT:hmPU8+N[
+V>[:mWN,ru!3H+#rNH7+s0DX2!4Dg7s0r!<s1/3BrOi0Ds1SfT_84"*_o0L4`r=$Ya=bTWb08/W
+cd:+ie^W.#f@\d0g=tE<h;@,JioB+]k32'qm-X<4oC_hPqYU3hrdk+Is"qiuY,e@pV50jSe(iBn
+]t&`WSZp;XI#FSA@r6$XG'6SX:P=7LIt3'!:/Obd<)ZXkOcYY%N<5#pM#N/0L62Ecj2%q+ZEgL-
+Vl@>6Y,nb+UU7J4Y,eS%V4aELR[BG,PEV/jNfK!SLkpnEn;)9k>$G6;?=.)K@Uit]B4u!pCi4-0
+EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[^WfY]Y2(q_Sa@4aN2NI
+c-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?
+s+14Ms*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbf`=B8k`#Xq,$rcb>A1#&3Dp53&io[4$5Se4Zknn5!]*3r^$QO"@>IC9ht[^"\qcd9MA1Z
+9En-`92%rN9);-W8d.jY7nH9Mpf%2j!)r_nr_r_mrDW_q!)rhor_rhprDN\qpeq/jr)<Sos&B,"
+;cEZps&K(up/Uuj!EW>$=8l5/=&rC'<E<+"<``@'<q9<"<``C+=BAO(='/R-mo]Qlr*&r"s&f8%
+r)ir$s'#G*r*02)s&fA)>5hb)>R+P>?!LW??=3\<!*oM0!+5\4ra5\5s'bq:s'u.AAH$0?BE)QD
+BDuTEC&VoJD#\>TDJsK6EW'n]F*2VKG'En0!."Qi!IK4lILC[WJqAW.K7ei3L55_a!/g`7s,K%"
+P*;,qQBml(R$a;2S=Q4BT:hmPUSXfaVl-JnX/i>(Y-5(7ZEggD['d?N\%&u[]=Ybj^V@S`_$%Wm
+`5K[pa90Q*aiXP)"O#$5c-?75rm1Vks3^horm^tus4.2%rRh,'q:l83gt^Z=gt^`Aptki(6J.rJ
+?X6uD>[(K=Nb`ZL@p2o"6V:.)K/l+j1+tL@/Nl3M1Gh]o8Ou9=7Q<@d4Zbbh4BGK^<Dldr;c6Om
+;,L+dn(>V2kLfXa)U540BO>(L?<gc@>%:lE>[1K7?=-l@=^#!3r`9S1='&L)<**$u;cH[n;,QdY
+G?J*R>[:ZC?t!MSAS,RgBkqO&DK'T:FEVkQH@('hJ:W?+L51VCN/is]P*D5uR$sP:T:r!TV5L;m
+XKA\1ZEq!K\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqY^6hr;QZerdk*#s8W+L~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK=F=G^PCMo<8.ror\4rlEBl`s.0.\31H4rN/imWOHcQ:US=W`V5C2kWN<8)Yck15^V7@p
+]tD"k]tV.l]=YS`\[o;Z\$`WNZa@!F[C6(B$+I7I['d6GZEUS/Z2_-,Zi@?0YlM$-YlM*/Zh:U(
+Zh(R'[K!Z8\,<c/\c98=\c9,B\@K5`]tOEZ!PcGL_>h@P`;[aXa2l@#aT0K_aT9K'rl,&Z_ns:h
+_$@cl^qmk(_o)Dk!6=oVs2k;^s2OrV&B;]-`59=)^:h4m]Xtbe]=n3XrP&?Kr5'Dh_SX4/`5Td<
+b082YdF-Orf\,!5gtglIj5]5!jo=HEkiqC3lPJpTmdKZ7oCV\Jp@e=Xq"agbr;HWnrr.KK]`/5r
+mH3*Ug"G!Us"jNEnu]g]lLO8;_o]$1P*04ES=F+sYH"b(X/`.&?!:]E?!LXP^V7Ir]Y(kf[C!9F
+Ycs/f.IHcpm,[$[iUuU'jQ#.So'GW*jQ#4PeBuRcb/_N=_8*ar]"#,R[(!F2[X;4]>[1QA?X[DR
+A7]@dBkhF#DJsN8FEMeOH$XjdIt3-'KnbD?N/`m[P*;/sR$sM8StMdPV5L8lX0&P/ZEpsI\@K5a
+^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Oj5]7`k32'olKmm)mdKW6nac8BoCV_Kp@e7Zq#C0i
+qY^6ir;HTdrdk*#rrE(L~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<stBP_jIm>:^tfSTWNrcS?bEH(no$Z9m(H?spcIXQTmIK"^'JU`<'JV&uENfT5!N?=4?
+NfB$VMMd=LLkpnCLkge@LkpnDL51S?L51V?L5#G^!f`.tqMYB2re^Z4rJUW5s,@/?Mi3OQrJgi;
+rK$o;r/^l>$]gC1O-#HaO,f9^OSb1<P5g[CO9C]/P*;+,PQ7!JQN*9OR/WNORfAlUS,o(Hrg3\P
+qO%;Ls-<_QR$dW9qO7DO!1NhTr0dq[R$O&'QBmf$QN!6NQiNKPQiWVDr0[SSS,SlVRh_HaSY)RK
+Tq\<YV5C/hVl6VrXK/D(rN?+&"0f&9ZMq04['d?Orj`!=rjr'@$ba3d]tV7t_8=+.`;[b4`Q$!?
+ai_cLbg"GZdF-Lne'ut#f\5'6gt^`Bi8ESSjQ,IdkiqF"mdTf>p%S7WqYU6jJcGZJ4NOP+XJD\h
+UndD/hUTca[tBp:YKG(:O.V#4DJW*mFELMYKReT&J:W2G:ek"i;c-DTOH5E^NJrjUM2;.d!/?U8
+/*4^T['-^7Vl6Z0Z*172X/E_;Y-"_(Vk]oUS=5h3Q'.>oOH,9XM2@%FM=67J=^#'8?!grI@Uiq[
+AnYmnCMds-EH6/DGB\=YI!pKpJqJc3Ll%(MO-#NgQ'Rf+S"6.DTqeH^W2co#Y->4<[C3TU]=bkm
+_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+11Ms*t~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1&(D8p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<:E8l&1U;#F27;#<?b3]T,Z2`a#^4[(tk5!D7157KkD5sdq*5u(*I:/4MYq+Luc9hS/P
+92#4T%SKDc8kM`J8kMTE84c<ApJ^les&8hnrDWSmr_r\ls&8nrqc!Gk$<'o&<)Z^p<E)mqr_rkt
+r)EJlqH!Ams&T/"!*9)!!*8kr!*K"trE0)#rE&u#"'J`-=8H#">$:i,r`T/&r`T8)s&o8$rE0&#
+!*T5%!ErY&=T;M<>$G37>$G6;?!LW??=$oE?!UcC?i4=3@0L+K@UinWqIBS<rFc+Cs(MXOCMRa'
+DZ4J\DfKc<F*)JFF`hkNrceBe!."Qi!IK4mIfFm/JV&K+KS4u2KnkG>MMd=NNW"kAO-#KfQ'I[7
+QRJ5iS"-">StMaMU8+Q]VPg>kWN)u!XKAY/YHb@<Za@-K\%&rY]"5QR]`Gj_rkSlW_o0L5`lH0B
+rlY8as3(JfrQbGhs3UqsdF-JBe,Ro!e^i@Of`0Y'gAfn-h"fe)h>lC/htl:+iAB5_D-pOR?!LW@
+?&NQ@BOY7K6:OUEFbr+C:cC!b1b:jT4#Jie7n6$;77K9s2a0;c4ZldE<W>r#<)Zap;c<TldFn?J
+b1S>kWIS\j?<^`@?<gZD?=$lA>?GE@>$>-6>?P$.=&i=(=B8C&<E2pr;c6LjmSJ:6>$P<<?XI5N
+@q9._BPD3sD/O93EccGJGBnL^I=Hd!K8#&9M2[FTOHPfmQC+,1SXuLJUSXleWiN8)Yd1UC[^`l[
+]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JioB(\k2tmll0@X%mI'H3nF?)?oCMVIp%J+RrV6Eg
+s8)Zjrqu`no_sFAJc>`MJ,~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+7AF*`@sWUm=mY4\prY2HM`Y5OpjSjT$8PE1``N00=$V5'l`Vl6SmWiW>)Y-!o%^;%@q
+]tD(p^qICk\@9&Y\[K&Y[C*BK[^<EO[C<TQZaR-HZa6sF['f_7r3H@/r3?C/Yd",3qQg.-qm-7.
+s0Vd3q6^+.rjDg9rO;j<rODj;s1%j7s0i-A]Y(qlrkAHKrP8cV_o0O5`l?*@rQ5)^s3(Das2Y>_
+a2Q!8rk\ZQrPAfW_SjF4`l?'na9'K)a8X0W`sTi)_ns:)]t:qh]Df>@])9/?]`#MK^V7Fs^:q@s
+rkT>d`5]mAbg4Yae(3.(gYCWBi8WeXjSe0Bk3(pkr9Fp]mdBT7nalGIpA"IZqYL-frr)lrJcE@^
+"Q]"6g"QGYrVn5Bp@><(g?S:rVQeI[H!ukDSt)?_@'6Q3WN<,">?k?@?X?uA>JL0Os1JZM\[JrR
+Z`p]ps!dF.lKREeiT'LrlfI3ck4e0+kiC[Zf[S?pc-")H_SO($]t:e^['dBNn$[7>>$G6;?=.)L
+@Us%^B4u$qCi401EH?5FGBnL]I=?]tK7nu7M2R=QO-,TiQ'du/S=Z@HU84ZaWN*&%Yd(OA[^WfY
+]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+75@VK_*L[BrqMV*daFoQV*F`_VBDJa6,DfC,OH[L3jI=HWpIt3*$J9-d4NfO't'p+K9
+Nf8mRMi!=IMM[+DLkpnDLP^cbL^AfmKntM>L51M<qhtN7rf$c5qMP60rJ^c9s,?u9!0$l9rf7#>
+!KN0<NrG+:OT(=9OS=kAOH5HaOHG_)PlI!LPa235rg3YPrgEbS!h5^LrLEnVs-`hQ!1EhR!1EeQ
+!L]>SRK&`RRJN?QR@*uA!1NkU!1NkS!go:>qNV&Hrg3YNs-N_P!1EVL(R^_^SXuIHTV8*TV5:)g
+W2ZesX/rG)Xo>I'YPk[,Z*L\6Zi7?;\@K2_]"5McrOi0D5JFhF^;.S%_o0L4`lH'<a2c9Cai_fM
+c-FV]dF-Lme^i='g"G-9h;7&Ii8N_Wk2tjjlKdg)nac>Fp\F^`rIP"Fs$4Z,YcX^tV50mRf\Y0%
+_75,_Ts)VbI>#)#?;563G'.n+:kF4JIt3$!:JX_c;c?Rk:Q^a!O,o<]N/NOJM2$bHs!HpJZa6j<
+Wi)ku\$<-<XfAPCYHP(/Vl$2]Ssu19Q^*_tP)kZ`MuJS7M2LbXE`lRM>[:ZC?t*SUAS,RgC27X'
+DfB];FEVkRH@('hJ:W?+L51VDN/is]P*D6!R@B_<T:r!TVPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@
+bKS5Vd*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTd
+rdk*#rrE(L~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+6u7S$3I:\[ca;9Vi:4o.;@3X7W)2`No]4Zr[+!C/mJ5RotD5X\:>9hnAV:/">U:&[id
+9,^Js92&#P8P)NH91hfL8kVfL8Oc9A8P)HE8bl<b<;ohr<;TSu<)lpt;cH`q;uT_r;u9Jj;u]bn
+;uT\p;uTbq;tEub<W#ns<rcA!=8u>$<<-)!<<-(s<s)Q+='5H'r)Wi!s&]8&rDrr""B\f/=BY5t
+r`T8'!EiV&=TDS$<ruK)=8l>%=8uD%<sMi/='/R+='5E(s&oJ.>[7,2!+,Y3s'GV2s'bn9"(PkP
+A,^$=AHQISAS;!Us(VIIs(hXNs(qsXD/O93Ec_5%s)n?b$[6i>GBe@XH@($fIK"ZtIt3'#rdkT4
+KnbA=LPL\CMi<XUO8Y.tPE_;tQC"#.R[]e;StD^MUSFW]VPgDmWi<"uXK8P+Y-5(7ZEggD[C3QR
+\@T8`]Y(qm^qfrd!Q2kT`rF*[ao9H_b6#o4c2>lecNV_Ee'lgrr71i!!8.;)qqM,*rSI>,ro!P0
+qVqP8#NXO9D.$US?2\(ZKl2!HA6i8'7nZZpNB07K>q@B[/3Z0X2)@fo7Rfm:7QEFe5!(ki4?HRB
+<!cE%;GpFm;Gp=hqV1/df%K$9s4\sLXFb4r?<^]??<pc@?=$lA>$P`G>$>-5>$+g,<`N4'=BAL'
+<E2prr_ieomSIq,>$G6;?=.)L@Us%^B4u$qCi401EH?5FGBnL]I=?]tK7nu7M2R=QO-,TiQ'du/
+S=Z@HU84ZaWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$
+m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe+AE.3>'X8B'mXnAdjXn/^eYPasiShuq*P)kW`NK96fUSXlcW2ZYnW3!,(B=YXd^V.@s
+^;.Iq\[f5[]",A[\@ArT['[6J['dCB[Ka.GZa-gBZi7<4[^H";p9F\'rilC,r3?F0ZEpn7ZM_$1
+ZEpn:[/%-/[K*f5\Giu9\G!HB]=kqm^V@V#_8=(,_o2Pn"ieU(aN;X(aoKW_bR)G6aN)BBaMu3<
+r5AWSrl4uZ!6P2\rl>&[s2b;_a8X0Za8X'c`P]O-^:h.j]",BM\,j.Or4Dm>*4rnt]Y(ql^V7Ft
+_SsU>c-Xngf@\d2h;@,Lj5g."!9X:D)X-GNlKdg(mI'H3nFQ;Fp@n@YqYU3grVc`pJcE=]#NY@<
+g"Y68g&:q,r;#uecee!Vm\R)7[rl/BA"T9^?"'e7XK/>$W`iY2@UNMI>?eqX^:h7o]t:_\['[*C
+NrLTto'#2shr3Ycm-<`oi9g4&lK@0_h:L0,cd'\S`P]L,^:_%f\$WNM[^>P4s&jJJ>[1TB?X[DR
+A7]CeBkqL$DK'T9FEMePH@('gIt3-(L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&S0ZEpsI\@K5a
+^;%M$`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0i
+qYU0hr;QZerdk*#rrE(L~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe+5@VTk1L[p8oM=68dM>VMqG5l\/Ec>o5D/=-0FF&=_I"-WoIXQ`tJQRhhNK/sXO,f9]
+Nf8qrMuSYBLl$tDM27"FLk^\@reCZ6LPCP:M>i52Knb?\N;nn9N;\\4MZ&J5N;\b7Mueiqrf-o;
+rf7,@NK*pts,Zu;rK$l<s,[2Aq2klCO,oBcP*Gm0".#4<Qi<9NQi3<NRK&]XS"-"<rg`qV#F_'K
+R$jA0R/WNQQiNQNRf/ZNRLkmSR@0M4S"#k8S!ob4Q^3p8PlI!LQBh93!LT5NR/N?ORJrWeS"6.C
+TV8*TV5C/hWMunuXKDE'!3c@*rj)R1s0D[2"15JF\Gj)>]DoPD^&Pf3^V7It^qdh(_o'F2`l5s;
+a2c<Db0.rNbg"J]dF-Lne^i@)g"P6<hVd>NiT'"\kND'nlg4$-o(;VKq"jpdrdk+Grr^EGYcdr#
+*i%uShUBWb\V-HKYJnk:KXctG9l*ULF`^>TJq/E'rdP5L:JOng;Gp@gPQ$ULOH,?\MMR(FLPLuk
+.I"gXZ`gL2VlHl+Yck43WOKdKYcXn$UnXNTS=5h4P`q8mOcPN]Mi*DkM=??$=`mnQ>[CcE@:E_W
+AS5[jCMRd)E,fo?Fa&(VH[U<lJ:`H/LP^nINK90aPEhK%R[]k>TVA6YVl6VrXfnt7ZaI6O\\#Mg
+^VRe*`Q-'BbK\>YdF-Oof%8U/gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HKfs7u]k
+qtpBjrr)KgJcC<$!<7Q~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe*s84uZP;SH!,4o7>J4$#D^3B0#Z4$<L*(I()J5!_G"5<q>'9M8&Q:/4MW9he8R9`@Zc
+9M>@Ys%32_qFUi]7n6&H8HDFSmo'9e<E8us!)rhor_r\lr)<Smr_ierrDWVn!`N&uo2PQdrDiu$
+=BP?"q,[Ao!*K,"s&KA+<`W=(=BJZ&<WH8$=TV].=nl)$=^"p/r)io#"'A].=T2D!=9)G%=Su7u
+=9DW*=',B's&fP.=^#$7?!R;5!a]5ArEoP4!aoGFraPn;raZ.CA7]=_ral+B!bc:^rbDIKs(q^P
+s).jT%rlZ3FE;MFFEM_LG^"CWH2`*lH[U<krdXru#D%JXJqAZ1LAcopM2R=PNfT9aP*2#nQ'Rc)
+R[T_9SXuIGTV8*UV5C/hW2ZesX/rD)Y-+t4Yd(L?['d?O\@K2_]Y(ql^V@S"_8=+h`<jT+aN;QH
+bKS2Trm(Pis3Uen!n,QIrRLnus47>)g"Q>Xs4dV1qVM&+!9*n9s5Wt:!9O(<$K^F4frK%">[1T?
+ra%U5DfTQ%?W]Wg9M]#U3]qXJ/1<>+5<M"]1J(208Ol3=2E3Z[4?Pbh4&f3Z<)Q^q;c$Ck;Gg<I
+h<j"Gg[s;"g\KV,gYCW@o\9l(YCp_$?X$c@?<pf?r`pLK=^YiH>$>-4>$+g,<``@)<`i@$<`Dsr
+<)Z[lmSNpdF]r$T?=.&J@Uiq[B4u!pCMds.EH6/DGBeF\I=6TqJqSl6M2I7OO-#NgQ'[l,S"6.D
+U84W`W2co#YHY==[C3TU]=bkm_8=.0a2lEHc-FY_daZdtf@em4gtgiFi8WeXjlYail0@U$m-X60
+n*ol<o(2MQp&F^cp\ssfq>^<gqu6NmrUg)?s+11Ms*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe+CEINM,e#`DJoWJ4tqORSV)4d4]O,f3YNfo^'V5C/gW2Q\rBP"Za\@B0L^&YkF]+)<^
+]"#5W\@/`NZF.'IrjE?J\@AlP['d*F['[0I[C<RBZ2V'-Z2V'+Z21d*Z21d(Zi791ZN.B/[0j@M
+[^N]U\$`WP[f*Z:\@K-D\IH-^]=ktp^qmn(_Sa7/rl"lWrlG,]$-UQ:c-=JVc-=K3blc25bKBh+
+rl>)[r5JcXaSO!baN)<@aN2KFaN4>%!6G/Z#K=X!_7mOm])K5E\@8rW\@K3I]DoMD]D9)Q]tV7t
+_SsX?cI(.mf\>3<i8N_WroO+@roX:FrojIKli$2^n+#r=o_%qQq"jjarVc`ordk*\rs.WRleUCO
+gY)Q*,5h3,XK1%<nF*'Ve?"%,P@L8VSR#Z1XfSV'WN03->[h,Kr`]iL^:q:p]tM%d[C!6EZB"r7
+naG]&kMY@]nEfE$jQ#k%lK[QkgtUH4e^DacaMl'4^qRFm\[JlS[C<O4[WknW>$G6;?=.)L@Us%^
+BP;-rCi402EH?5FGBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfY]Y;.s
+_SjF5aN;WLcHjnce'ut#f\5'7h;7&IiT&t[k2tmll0@U$mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<h
+qu6NlrUg)?s+13#~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe+8A8H:8dYR7HqK;d\s)eTfE,KN/Ci435rHnTnrdG-&=]gN<MMmCRrf.#=NrG"UMMmCL
+M2-qDLPU_BLkpnCLPgqHLPL\AKnoS\",DViN;S\0Mu/J3NVnb7N<#"9Nrk?$NW+t<O8G">O-''r
+s,co9"-Sn5Q2[*LQiE?TQ^3r(Q^I`>rgNhUpm_DTR[a;F!h#LFrL3\Sq3h;OqO7GPqO7GPs-`tT
+QMd!HQ2d0MQ2HpQQ^F,,R$X/,rKmMN'UbDZS"61ETVA6ZVPpJoWiW;(Y-.`,rNQ=,s0D[2rj#>+
+['d?O\@K2^]=bhj^:q@r^V@V#_8=+-`5KX6`lH*>aN;TJbKS5UcHjkbdaQ[pf%8R-g>(QBhr3ST
+jQ5Ofl0@U$mI0Q8o_/+Xr;HVGs7u[[c)n4RVP^/bV<-Ukd`TD9KRobs_U*[b[!c:VD,>J"F\P_.
+JUi<$It19j:K:@l;c-ATOH>KaNfK*VM26tCL62Eam)HH;Y,eS$Wii\4Ycb+.^UgVQXJhtjUS4?N
+R[KS.PEM&jO,]*VM2_Fjn;)<k=^#$7?!^lG@U`kZAnYjmCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%K
+NfT<cQ'Rf*S"-(CTqeE\Vl?`!Y->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_V
+jlY^hl07L!m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1&(D8p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe*s7ncUh:]NWW4o%2A3]fA$3#an@4$>bl5!;%m5<q=m84lKG9M7uO9he8S92,=X##%Z_
+9M.lJr_*8`s%32^!(ZuYr^d5`8kDNAqG[>j!)reps&K"s!)rhor_r_mqc!Jlr_rbp!)rkr"]JB"
+<`W6";ts>l<<-"r<W,r!='5?$!*9)#s&K2&=BPN'q,mMq!*K5%rE0)$#?Fi)='&L*=8Z4u=9D]0
+=',<%s&o8%"'8N(=8l>%=8Z2!<sVi.='/R+=&rAt=T;P)>Q.q,?3"@3@/jR6@/XO4@f9g8AHZUV
+A7T9NB)ZKDC&_uJD#S8UDJsH5EH6+!F8p>EF`qqPG^+L[H@('gIXcitJV&K+K7\`.KnbA=M2I.J
+N/`jZOckomQ'IZ%Q^F52S=Q7CT:qsQUSOcbVuEV`WN*#"XKAV-Yd(L>Za@*I[^WfY]">Vg^;%Fu
+_84",`Poj;aN2KFbKJ,Sc-FV\d*U1he'umte^i='f@\a/g"P-4g=lP]!o;YeqqVA3i8ESmiW/$;
+iWA3$j8S*>jnn3=kP=6DgobX)>[7873F-!:FE2&)?<9EY9MJiP4$7L?/LWG,5<Ct]1G_Qm7n?':
+2E3Z[4Zkki4&o6[<)Q[q;c$Ck;,U6[hWN_ih"':qhXTJ'i;MR3hY>nTf!1!I@:!,B>[LcB>@(ZA
+>ZkTG>?Y37>$+m.='/O*=B8O(<E<*u<;ohr;=@>+=BSg3>[:ZC?t*SUAS,UhC27X'DfKc<FEVkR
+H@1-jJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\[oGf^VRe*`Q$!@bKS8XdF$Fm
+f%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphK-nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK=74FF&_7r2eJMrN,Ums/u-fs.1='St2@9OcGH\NffX'VP^;kVe9XV[C<WQ[^`lW]=trW
+\Kner[^ilW\%&fN['d3K\@T5Z[^ilR[Bm?LZa6pD[C3QPZE^\6ZLkF!ZMh')ZN%64['R+<Z2h6/
+[/IB4[f3ZD[^W]Q[C!<K[C3NQ\[_LHrjiEJ]Y2%o^qmk(_tq=S`lQ9Fr65/brm(Pgrm(PgrQP;b
+!6Y;_s2Y5]aS<mW`WF3%aSEpba2Z0>`PfX/]t1iT\c9,=[f*ZD\@K2_]=bbf]">Se]`,PB]`,ST
+^V[q/air,\e_/[4hr3SUroF7EjlPY'kPjZ[l0@R"m-X61nF?&>o_/"Rq>1!drVhBJ\Glfsn*]&h
+h:pZ^s"jWJo;\k0ipH3pW7@em>`iNjSXj%q?*:60W2cq(>?kWG?<g]=`P9.#]tD"i\$`WLZ*B>h
+(%^_SjQGI\jm_[%jPoCrm-<lui7m#cf+QWXaiMH<_8*dt]=GDX[^ETO[f*W,[WknW=^,-9?=.&J
+@Uit\B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY==[^WfY
+]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]p\ssf
+q>^<hqu6NlrUg)?s+13#~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphK-nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK<mpAScF<oSD@ZrJ:!#!-\0\s*"Ba(3FM6Des6-E-$ARI=?Tm=]eg]M26qDre^c8NfO's
+(l='+M2@%FLk^_BLP^kFM26tHM2$hAMMD+a"bq_cL4k6XNW"h6Mu/J3NW"h5NW+t;O8Ft:O8P+4
+O8k=9OoCLGPE_>uqNh2Lrg3VO!h#LGqO@2Ks-rtUqO@JQ!1E/Arg<nUQBd]!pltlEQ2R$KQNNVA
+R$df<qj7n^S"6+BTq\?ZVl-PpX0&N'Xokl1Y-7f.rim<GZa7$GZa@*I[^WcV\[oDb]Y2%n^V@S#
+rPCM2`5KX6`lH-@aiV]Kbg"GZd*U1fdaQ[pf%/L,g=tE=hr!DPjQ5Oel0I^'mdKZ8oC_kRqu-MF
+s7lTtcE4CYVPjEj+Q288dEBD9Jq0,^]$%g=Y'aVKCJ];"FA5Y/K7JN%J:RVp&6;b/;c-AUOcb]c
+NfK*VM2D4eOT-cua1&7SWiW2#Xg>::XfJV@ZELL4Vkp2aTqS*IR[KD'P*(lfNJrdQMuJP5M#E,%
+Lj3$)=^,-9?=.&J@Uit\B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`
+WN*&%YHY==[^WfY]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+13#~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphH,nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK<.@8khqP;#O2H;#O8];#WTV4nq,?4$!:"!]iD)r]UNN5!D(k5"PWD"\MEZ92&(Z9FOQf
+8k_lO92%oJ9M8%U8d%dW84Z8M8cM?]8H;9[7K??b;uT\p;tj5k;uBPm;uKVm;Z]os;uT\l;uBVo
+;Zp'"<)Z`k<;ons<<#ts<rZ5$=Sl2"<WuQ,=&r@'q,d]"=BPQ(r)`u$=SPts<<-)!<rc:u=Thi.
+='/T'>5hY)=T2G1=BAU,=&r@'='/T%<rc:u=8u;&<E<0"=8Q,"=Tqu5>[1Q?rEfM2s'Yk6ra>k9
+@:B.EraYq<!+l.As(;IGAnG[grb)mXC27U$D/F0.E,]f:EcQ5CF8^1lF`qtQG^=[_I!gBmIt3*&
+KDgK'Kd;D.Ll%%KMiEaXOHG]iPa.Q#Q^F20S=H.ATV8'RUSFZ^VPgBlWW0"@XKAV-YHY=<Za@*J
+[^WcW]">Se^;%J"_8=+.`Q#s>rlG8bbKJ-/c2Z&ld*^:jeGe"uf)OD&g&Ke+g\fh,h>H(-h>c@3
+hu;R;j5f:_jo+9;jo=K@k5a`AkPaTKhm%30>[:V6>p`m!G]@A,?<9EY8kiH;@QIUK/L<8+5<M%]
+1c%Zn8Ol3<3&rr^4oRPD48i1Z;?p3#;GpIl;,R#Fr8@,&mb[KkoAK<#pu),0rST*WZ\iX/?<^Z?
+?<pi@?=-rA>@^uC>$>-6=]ea,=BAU,='&C&<`N$sr_ins;,C*f:\@P/=BSd2>[1TB?X[DRAS#Lf
+BkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L;mXKA\1ZEq!K\[oGe^VI_(
+`Q$!@b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*#s*t~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe+=F*N(nqQ/5JnZ2bnSG/TRT)Y>aSsu%/NrG"nOHj<gB5)$nXK/S3[C<NO\[])[]XkVa
+\@T5[\[f5YZa6sE\$icU\@&`OZaI6N['m@@[K!Z=[Bd$AZEj,-nZr/#s0V[0s0Mj6[']e>!4Ma3
+rNlR4rjDm;\@DLJrjiQL\@K5a^;%J!_SX4/`;[aT`W=3)rQP5bqTf,es3CYh!RAshbQlD:bKJ&M
+b0'S&!6G/Z!QW:UaU6).`5BF*]Xtec\,Ni7\,Wu<\c95A]Y"0Ss189Drk&*@s1JoX_o0X=cI17q
+gY^oIj5g4$"6S_,k54?AkS*4Hlg4$+mdKW7o()GGp%S7Xqu)*G\,QNnn*^24s4mSQ1]@(>W2dVg
+mIBDHc(B9:P@L5VT3Pl3Y,eY'X/`.&?!CcF?!LUS^q[Us]tCte[C*?HZ&\i1p$(`%jl#.[na5T'
+j6ZL'lKRBegY:B7g"4Ega2Ps3^qRIm\[VRG"1PYG[f3]-[XM:[=^#$7?!^lG@U`kZAnYjmCM[m,
+EH6,BG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeE]W2co#Y->1;[C3TU]=bkm_8=.0a2lEH
+bg+P^daQ^sf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NmrUg)?
+s+13#~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe+3A7fV$L@g;XL\6K#M>qboFoHR`FUE52E,TQ/DJsSs=oMM+=+c*ZLAlr>Ll7.INJrjT
+Mi*FMLl.(HM>`2IM2-nBM27"DL5:YBL5:S>LP:J:KS4r1NK*IeoSrj1qiC`:"-8J'O8b4AO-'-t
+"H\\*OHB:#qiUuDPl@!JQiEHOQi<?QR@=&C!h,UJopl&Os-ikT!1a"W!h,OFm$dsB"dkU@Q'@O,
+Q2d-MQ2?mGQNNVAR$dl>s-O@dS=Q:FU8+Q^W2co"Xf\b/riZ@*YPYR'Z5'^Q['d?M[^NZT\@K/]
+]=bhj^V@S"rPCM2`5KX6`lH-@aiV`Lbg"GYcd:%ddF-Lne^rF*g>(K>hVd>OjQ5Odkj.U'n*fc9
+oCVbPqu$DDs7cNqd&s[\rML^8gZ.,:b/:]>JWle9b//q%G@+is:j7)+9i=c>J:[ZL'i%S#<Dugo
+:mI3+O,f<_NJraOLPU_Is!@0U\?<!8XK&;'['?g;XKfUDYHY"'V50i[Tq@a?R$EhtOcbZ`regr;
+Ll$tEM#N2&LjiE-=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*
+S"6.DTqeE]W2co#Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NmrUg)?s+13#~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe*s84cKN;><uc:Yek;;#jGi4T7M=497N)r\t3E4?GPa2`NiZ7K,gW8H)0]9M>@YrC[/b
+9E%Wb8dS0a91hfJ8kM`Kr^d#[$qa)_8kDNB77K^9;cEWm!)rVk!)renrDW\n!`N*!r`&\l!`Drq
+r)EJjq,I;ms&B"ur)Ni"=Sl2"<WQ9(rE&ht"]n])=BAPt=Sl/"<rQ)*<`iI*<`W:'=BPN'!E`M!
+=o__)=SGl(=BAR)<``C*=&rE#<WH5#=9hu4=]ed/>$Lu2s'>Y2qHj82@K'XA?XR;O@q/tX@q9-L
+AcZOXrFc.B!G?*EBa\]mD/O60DfB]:Ec_2$rH0c;G^4U]H[L3hIXcitJV&N-KS>/8LPL_DMi<XT
+Nf]BdPE_;sQC!u+R@9V9StMeVU+)k5V5C/gW2ZbsX/rJ,YHP18Z*UdE[^NZT\@K5`]Y2%n^VI\&
+`5K[9rl>2abKS30bn87Icd:(fe'umuf%8O+f\,!4r7q5+"Q%tjhVS7h!9!k8!oi8#ro=(@r9!n>
+!9j=E!:'@DrTZ`/[<,e]?!UcB>[;>pEFr]e=$],C9iZ:M4@1eT/N#.F4ZtGT1It#-7R]a83&ii[
+4?Yhh<E<+";c6Uo<)Q[n;Gm;Npu;,.l/;6lq;Ci&r8[)%"kpABDIZuO>QA+0>S(1I?!CQD=^,*6
+>?P-3='/T&<rc5!<WH%s;Z]io;>sDk:\@P5='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$Xjd
+It3-'KnbD?Mi<[XP*;/sR$jG7StMdPUo1/kX0&P/Z*UjH\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(
+g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;QZerdk*#s*t~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe+?G'\Y!Wr&mrX4jTRX7E=nXdkpSSc>;\SHG@IPE,X%+d&!sAYuB*WiW;)YHk^IZaI<N
+\[T&Y]=GPa\$WNM['R.=[g'FR\[JlQ[f3Z;[^<KN[/IH;['-^<ZEj2/q6C",rj(su!4;^4s0hg4
+rNuR3rjMd7s1&*>s0r9D]"G_j^VKfb!5n`R!QW@^bQ#fcc2Z)fci;8kcd;X:s3:YibkfQebfe2P
+bPfQ`ao06[aS<jpaN)?>_n`st]"#5X[C*BK[^NZT\$rlW\[hXLr4Dp?rk/lW_8F76c-XtmgYLfH
+j5f=`rT4LNk2tjhk3(mhl0@R5m/HDPnGi"`oC_eNq>:*hJcE7[#O1UCi8EMMh>R@0r:ff]WPI<V
+oB`9tR=L'TAY,Na>[q'CX/r;&WiB9/>%1iF>[5=c^V7Cq]tCnb[^<BGNrL[)lfdEji8`nfn*0&s
+mIfZ+l/^dWgtCN<fZVCW`59:)^:_%f\$WTQ[^ENOrjDF-ITKWS=^,-9?=.)K@Uit\B4u!pCi4-0
+EH?5FGBeF\I=?]tK7nu7M2R=QO-,TiQ'[o.S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WL
+cHjkbe'uq"f\,!6h;7&IiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFA
+K)^?~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe+3A8#h*LA$GXL\6K#M$%mDFa!M%s*"Ba)KTn<Df'?/DfScVIt3-&K7\Z,KnkD;Ll@.K
+re_&@MMm@JLPUeCLkktc#)S4pM2-nDreCf9L5:V=LP:M<L&Q`)NV&2,N<#"<NV\\4O8Fq;O8b4@
+O8b1:O8k=AO8k=9OoCODP6$o5rg*ML!1*SMs-WhS!LfGTRf8fQS,f,YSGAZRSG\lRRf8fKRKJtF
+QBh<2!1!MIs-<VK!1!JJ!13\N!13YOs-N_P$^mKSSY2^OV5L8lXT#@%Y5GO(Y?%m2YHb@<ZEpmE
+[C3QS\%&rY\@B,^]=bkl^VI\&_o'F3`Q#m:a2c9Cai_fNc-FV\d*U1fdaQ[pf%8R-g>(N@hr3SS
+jQ5RglKmp,nF?&?p%S7XrIP"As#/</Yd::,Vl?]SjP8)'_7+uHPbGG+`I!qlARfORG'8"&;GVpr
+JU`6#J5/p9<Dujp;3[6+NrG+>N<G/rLl$nKru^dQ\?N-:XK&;&Za-d;XL,aBY-4h'VPKu`U7dpB
+Q^.Q5$]pC.Mi3INMhm7HM#N2&LjiE-=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A1WH[U?nJV/W1
+LP^qJNfT<cPa.T'S"-(BTqeE\Vl?\tXg#(:['mHS]"G_k^r"".`lQ9Fbg+P]dF6Uqf@\d1gtgiE
+i8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe*s7S6BL:\[ca:]=2L;?'J_;>E?R4nq/>3u0e92E<l]1c[rl6UjL67Rp!A7n6*A8c;9^
+:&[g(91_`K9M8#N8kDWJ8kDQF84Z<D8kDWJ8P&hN#=_3S85iGb;YO,d;Ya5n<)lmsq,@8j!)rbo
+qG[2hq,R>n!`rK+q,dSur`9)%r`B,%r)`bt!*B)#qcE\rr`B&!s&]2#s&]8(pKIQ!!a&N*rE0&#
+#Zt//<`N1%=BYW)!*K,"qH3`#rET;-s'Yh5ra5_5r*TM5rF5e:!+c(@r+?%DBDuQSBkh?sCM[j)
+Df9T7EcQ7"FT6JQG'A1UH$Xd`I!g?kIt3'#JqAZ0KnkD<Ll$tHMi<XUNfT<dPa.Q$Q^F20S"-%@
+TV8*TUo(#fWMunsWN*##Y-+t4Yd(M5ZOsRP[^WcW]=Ybj^;%G!_SjF7rlG>bai_fNbPoa"cd:%d
+daHUoe^i='f\,!4gY:N=rS@J0s53h6ro3q;roF%>rT=(Bqs"(ErTjILp?MtG\9D@e?!^k:>q'uD
+EG&]c=$],D9N,eF4$PGR/iG=G5!1JT1e:,+77K^83B/r\4[)"kr`';);c?[p<)6Il;GmGT!9Eb3
+m,I?iqVp)d%,A=MDId'Z?!L]A>[.25"^>;A=Bf#.=o_\'<sVo0=&r:#<E<#s;[$&r:esnar_N2`
+ITKWS=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2R=QO-,TiQ'[o.S=Z@HUSOcb
+WN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\,!6h;7&IiT&t[k2tmll0@U$mI'H3nF?)?
+oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAK)^?~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@n=FFA_-V>%%TWrK'hWq*1jXSn[]SH,8\SHG@LPE,X%s,f=,USaogVl?`"YdCdH['m<M
+[CEc[\[]/[[^`]M\@/iT[^ioU\$`TM[C*HL['I*I[(!HOZF$g<YkPEuZKear[/IE3[K<hD[J7*3
+[C3KN[eR<>\@T>d]t_A!_8=%*rPScVa3">'!6kAcrQYDirm(eqcd'h^cd)O7qp,5d#L:T=bfn>V
+bPoZWaV`(<_nj+"]"#2W[C*HO['[9N\$icT\@8sH\bs&<]DK8M^;@e,a32fWfA#0@j8S0=k5XTH
+k3(mgroP!Zkj%I!lg3s(mdBT7o()GGp\F[_rVhBJ\c2`rkjJE-!9*nV1]7"<Vl@MgmdohB^n-7:
+P?aZNSQfW2Z)at*XK/@)>[(ZE?!LZ=_nWn!^V.:k\$`TLZ&\i8p[75*jPf1]m-s9'k4/**kNV!a
+gt^W@gt9ck`l,a1^qICm\[SrS\$WQM[f3],[WkkV=^#$7?!grI@Uiq[AnYmnCMds-EH6/DGBeCZ
+I!pKpJqJc3M2I7OO-#NgQ'[l,S"6.DU84W`W2cr$YHY==[C3TU]=ktp_Sa@3a2lEHc-F\`daZgu
+f@em4h;-uHiSrnYjlYail0@U$m-X60nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@n1@qon0K_C6"L\cbdL\ci'LB*/"FT?U`FTHK$rbXc6DfBfHIt*$!J:WB,KnP;<LkgkE
+N/EROMM[:KMhm.FLPL\AMM[.GLkpe@LPUY=KnkA7Lk^_>L4b)1oSi^-p5\d+rfI/@rf6l:rf@,@
+r/gZ8s,mAHrK[DK!13SK!13\PrgEeTrgWkVrgj(\r1*_T"e;'PS=Q5KSH#)YSGnu[S=>t:p6l/Q
+Q^*buPl?m@Pl6mHQ3<P?QC!s5Qj]@PS=ZCIUSOfeWiZ0%!3cC+s02g4Yct=9Z*L\7Zi@E9[^W`U
+\G`rY]">Sf]tV7t_8=+.`5Ta9a2l<BaiV]Kbg"GYcd;[=+O\`geCE1'g"P39h;@/Mj5f:`kj%L$
+mdTc:oC_kRqtu$Fo`%2*YHG42W2Q_sjQ5+@aM>37JX)t<b/f!iF_PE)8p>H$9i=f?J:W3$It(6i
+:/t4k;Gg8SOcPTbNfB'WLkpnCOT-s(ageUYX/rA%Y-PF>YH>7GWiWA%Vkp5cVPBiQR?s2&PEM#g
+NJi^PMi3CJM2;.doS@`n=]np4>[:]D@:E_WAS,UiC27[(DfKf>Fa&(UH@1-jJ:`E-L5CeHNK90a
+PEhK%R[]k>TVA6YVl6VsXfnt7ZaI6O\\#Pi^r"".`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC?%J,~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@mp8P;`O;>X2c:]=2I;>O2e;#sKTpcSR>pcKKW3]]5\2`a&_4@;M(6q'L47Ros>84H*B
+8kMbU9F=Ed8kViN92%rL8c;9]8IS-[8P2TH8kDWG84Q2L8H20[8FKIC;u]_q;uK\q<<-"p;uTbr
+;uBVk<W,tt<rc@u=8uD&<rcA$=8l;'=&rB$=92Q,r`B)"r)Wl!r`/qur`B&!r`BA+=B\j2>?^u.
+rE92(r`K)"r)`r#r`0>,=BSd/='&L+=oDG&=8c8"=TD\)>l@q.?i=C4@K0^5@/j[6@K^1OAS#KQ
+B)u[YrFl+Cs(_RMs).jTs)A$[rcA0`G5cXaFqAnEH$O^_I"$QqJ:W<(K8#'YLB<9gMZ/PQNK90`
+P*D5tQC+)/R[]h<T:hmPUSFZ`W2ZfqX8f7AXfnt6ZEggC['d9K[^NZU]">Vg^;%J"_Sa=4aiXP)
+s3(Ac"jbQCdaQ\Ee-FOUf@\a0g=uV^"Pqqkhr"Fkro*n:ro=%>!9O1Aroa=Fs60OKros:ErTjIL
+qsFCL!:0RL0Bp,p?sHuC>[:WBH$XFB@9lo"6:spOApHI&1GUUA.m?*Y0f:dX7n,p:77K3q3;u)M
+4Zk`)<E)pt<Dumn;uT\ok4[p,jQtq$iqh^"jR2+Vh7/A]A6rPI>[C]@>@(TA>[_#B>$G-4>$>$/
+='/L*<``=$<`N/u;[$&r:esnar_N/_GZS$N>$G6;?XI5N@q9._BPD3sD/O93EccGJG^4U_I=Hd!
+K8#&:MN!OUOHPfmQ^F52SXuLKUnsufWiW>+Yd1UC[^`l[]t_A"_o9U8aND]NcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H4naZ2@oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,LC3+oWS#NI^Wo0lDWrK-sSF<!VR[&toNJrp\Q(t+OrhpU4Xg5=?[C!<L[C3BN[^iiS
+[Bd6K\$u=G(:CWZ[Bm9K[^EHM[CNcR[Bm0DYd(C7r3?:+s0;U0s0;@)n?`,$rO)[6!OT9+[/[Q6
+\,Wl:\,Nf;\%0-M]`>hH_%"2r_8=+.`Q$!@ai_cMrQY8crm(bpcd'h^ci),icd)L8s3CVirQbGh
+s3:_kbKJ'(aTol*_S<dq\[MIEs0hs7#IV"J[C3NQ\,Ei:\bs#=]DfGU]tD"l_Sa=2aj8GfgY^uM
+jlGP&k5=BBk5OKBjq[.Gl07L!lg4$-n+#u>o_/(UqYgBlJcE:\!po(:ro!n=ir/m5r:f`ZWPdW\
+oB`<ddC>*sOJ&5:>\.6HX0&>%WiK<.>@LuH>[:ON^V.@r]tCna[C*?HNrL[)o&f#oiofOknE]?$
+mI]N%ki1LTgYC`CfuqLW`PTL,]tM%g\$`ZR[(!ENrjDC,ITKWS>$G6;?=.)K@Uit]B4u$qCi401
+EH?5FGBnL^I=?]tK8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfZ]Y;.s_SjF6aN;WL
+cHjnce'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OB
+K)^?~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,L?=mtnIY[TPs+fTgl\F_I*HH+;Des6-DfU8TIXciuJV8`2LPCS>M2R7HMi!>jM$Jfn
+LP^hDMMhCi!f2VcrJ(l:Lkg_>LPLV<KS+r0JqX)]rJUW5qMk?3nrNg4s,[/>rf@)@"-8P)O8Y.@
+O-'4#rK%&BPPpdGQ2m3JQN*<NR/`TSRf8fSS,f,ZSdM$YS=Q4@S=?"<SG\rPS->CPS=Q4?pR25Q
+QBdYtrfR8FqNV#D"I,1:Pa)-3!1*SMs-`bO&"9#ZStD[MV5U>mXfeh/Y5PU)Z2Lm.Z*:M4Z3%A?
+[JmZ8\Gs,>])TAN^:h:r^qdh(`5KX7a8X.4aiMWJbKS5VcHjkbdF-Lnf%/I*g"P08h;-uHiSrqZ
+jlkspmI'H5o(2PKq>:,As7?7?eZl6]X/`2%X5rBpcc3`,JUs)]\B2^<Mn#*eD/4B>G"kn2KRn]'
+JUi7L:D-Z,<)ZXiPECogO,f6[MM[1FLlhWdo#\GMXfJP*Xfo%;Ycb.7\uW!:WMcViV5L,_R@0D,
+Pa%;lOH#0VMMmDlM#`A2L\-CO='/U/>?kH??XR;O@qB7bBPM=!DJsK6F*)SLH$XjdIXm!%KnbD?
+Mi<[WOckuqR$jG6StMdPUo(&hX0&P/Z*UgG\%0,`^;%M$`5Td<aihoRcdC.heCN7(g=k?<hVd>O
+j5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTerdk*$s*t~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,L7S-6H:esp[:]=2f;<q-G;>iTQ4T7M<4;'\:3B/rW3]fDj6UX@36q'L88,bs\8P2TK
+9)_Km92%uO9M%iJ8kVfL9)_Bq7nH9E8kDWI84c?C7n?-?84Q0@rDNSks&/kopepKXqc*Pn!E<(s
+<;TVo<;T\q<rZ/%<``@)pK%>srE'#"r`B5'<`f6%rDs&$<E8rtpJq2n!*B,$rE95+>5hV(=o;J'
+=9M]+=&rB$=8l>$<rQ2"=9)G%=T)A1=BAR+=BSd1>$5!4r`oJ-"'o5??iFF7@:3I@@/aR7@f9g:
+A,p3?AcQK@B`2]GC_(B!DJjB2E,fr?FEMbNG'Eq/!-eBfs*HGKIt3'#K7no3L51P?Ll%"IMi<XS
+NKB9cPa%H"Q^F21SXuFFTV/$SUnsrdWN*#"ri?F.Y-5+9ZF$sG[J[HP\%&u\]=kto_8=+.`Q-'B
+b0.uPc-=PZcd:(frmUns"kD2Tf\"mVg'ZTih;7#Ghr*JQir8!<j8e6>jT"<Ak5OTCl2U&KlN$;N
+lhg&ImJZJQn,;\SmJcJNmK`'mHXU,a?=!P:2g]gfAmnnD6:+:<=(Q205'U![2)IQ\4>A]M7n6*<
+7R]a(3&j)d5!;"h<E3!t;H6Xp:fC:j;Y]JJk3_9ujSIuhjr3-fMf306?!^cC?!UZ??!^c@@9?`<
+=]np3=T);,=B8L(<`E(!;Z9Sq;GmBhr_N/_ITKWS>$G6;?=.)K@Uit]B4u$qCi401EH?5FGBnL^
+I=?]tK8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfZ]Y;.s_SjF6aN;WLcHjnce'ut#
+f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OBK)^?~>
+JcC<$L&^fErVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,LDK^A_SZ8^aWVrdOVtm:gWW0!oSF<"%R[&qnNf8sYPbFkKV5L2kXK\t8[Bm*E[C*9J
+[^<HN[^EQR[^WcV['[6KZa@-KrNuU4%C3IP[^NKHZELI6Y-G82YQD)8ZMq-$ZM1^%[/IB4[/IB6
+['R+9[/[K4[/dZ5[JmT@\@T;b]Y2(p^q]la&]2H(`Q-'@aihoQbfn>Uc-FW5cN)>kci;Alci2;k
+chl)hdJhMmci28pccs\Wb0'V'#0=`u]t1b_r3c:-s0r!;rj`-B\[f<M]DoPY]Y2(r_oBd@cd^S%
+i8WhZjQ5Lck5FHEk2k\'irJ3?k7["Dm-X3/n*oo=oCM\Oq>:*hrdk*[rs.oQlf-sajQ-:>)Z06u
+Vl7MkmdfV=WmeV5P`]@GT3>i5ZE11,ri6c<>[1`H?<gc?_nWq!_7dIk[^<HLZ&\i8q"*V.jQ#Lh
+mI9H+k3DNujQGR^h:pcEhV-2o`l5g3^:h1j]!f#U\$WWN[f3],[WGPO=]np5>[:]D@:E_WAS5[j
+CMRd)E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@Tq\?ZVl?\tXfnt7['mHS]"G_k^r"".
+`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCB&J,~>
+JcC<$L&^fErVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,L?Y4+qIY`gRLWkMQLZ`ddF)Z#7Ci!s,EI7\5s*k$#rdu2ELkLG:Ll$nCM27"GMMR(F
+LP^nFLPL\@KnbA=re:u<KS>/:Lkge?KS>#0JV&i>rJUT4r/LN4lAtn*rK$o=s,[&>qiCiAPPpaG
+PlR'IQ2d0MQiEEQRJ`NRS,SrXSc55XSc##XSH5=Qrga"Zpm_JXS=H(<qO.STQB[VtPQ$a>Pl?sH
+PlI'LPm!D>R$jB?Qkc$XS"6.BTVA6ZWN3/(Y-"k1YctC:rN?C/YHG%3ZMq30[f<g)\@K2^]=Ybj
+^V@S"_8=+.`Pop@bKS/RbKJ,Rc-FV\d*^:jeCE.#f%8R-g=tE=hr*JQj5f@dlg*s+md]l>oChtU
+rIP">rr^iWXfq`*s/l=^+4nfW]X36@Q)(t4^jUgDRq$>O:3LeT;br'uJUW0#JGr=W<`E$s;,EI<
+Ocb]bNK&gQM26qKs"<la]!e`AXKA\1Z*^a?Y-PO;Xf\S#VPU)eV4j?FQ^*buOcYZ`N/NROMi!:H
+M#N2%Lic[!=]np5>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@
+Tq\?ZVl?\tXfnt7['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!m-X60
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$L&^fErVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,L6q^3Ir_W;ar)!5ef2;TGqE+R:rB9p<s#U<A3&iqt3W_Z76iKIX77Tg97S$&K8I.p]
+8P)WL9MA%W8d%^Y8kDSO8H;B]8cM<]8,Z!Y7fZ*Y8,lKc;?'Pn;>*o\;u]hj;Z]p!<r5kq;u]bo
+<;fhr<WZ9%<r5qu<rQ2#<r?#$<``@)r)`l"rE&u!s&\qqr`&r!r`92(='&N$>5h\%=pS53<E3("
+<E<2f=T;J%=:&,6>?b34=^#$6r`fP2?XI4?@0'bCrF#Y6r*o\9!+c(?#\Ia`Bk_6oBkmW_s)%aQ
+s)7pWs)\3^!-\?cs*+Nhrd$hVI!g?kJ:N3&K7no3KnbA<LkpqHMiE^VNfT<cPa%H!Q^F21S=Z@G
+TV8*UV5C/gWN*##Xf\b/YctF=['[6LrjMs=]"7jN%_B?f^qmn*`Q#s>ai_fNrlkntcd:%ddaHUo
+eCE.%f_sM'g'HHhh;@/Mj5f;#jo=KCkPaNLkN:skl07L!lg4W<!:KdR!:]pTq="OWnF5o8qsOLR
+s7$6Z_0f]sra%0`?<qo'De3<Z<C0#E9ikn73]qR\0/bU<4ZkGV1e:/,6q'R52`Wi]5<_4m48r4d
+<`E's<)HOm;GmGYs68S-n)jH-qW?MprT4RI\VkB;?sR)D?X6rB>lJ"N>[LQ9>?P04>$4s/<``C(
+=B8I$<E2pr;c-Fi:f'qar_N/_FB2IG=^#'8?!grI@Uiq[B4u!pCMds.EH6/DGBeF\I=?]tK7nu7
+M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY=>[^WfY]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@n9EI3%pW2ZcnW;NRdVYI"cV!t5WVZ!FeSF2p[S!B+sN/N[TPG4kMV5U>nXg7l0&@8gO
+['mBL[^ilY[^ru[[^5q?s0`3?[C*HP\@8oTrjDd5!42[/!N`I'YlCs0ZE^\3ZN%3,ZMq30ZM_'.
+ZiIH+[/I<7['R*GZa9M8rNum=\@B,]]=bfT^&PkI^^%cr`Q#s@bKKh-s31Phrm18as3C\lqpGDi
+!n#??rm:\k&'iDBb0%iJaN2E@_7dCh[f!Q,[f3c9\Gs,>])T;@])9/M]Y2"o_SjI9bKn_lhW*\r
+jT=W-k5FKCjT+??irA$PjQ5Oel0@[(n*ff;oCMVJq>:'fJcE4Z#OLU:j5f7]jo,38rV,fZVo%B\
+o&ljRe?+1/P$suSS7Z-8Xfn_*X/fK/>[q2J>[1LQ^V7Ft]Y(ea[^EKKNrL[)o]>2qj6>gpnEfE&
+kjRWpj5f+Th;$uGgX!s\`koU,^:_%f[^N]T[(!BMrjDC,Gue!K=^#$7?!^lG@U`kZAnYjmCM[m,
+EH6,BG'A4XI!pKpJqJc3Ll%%KO-#NgQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEH
+c-FY_daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?
+s+C?%~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@n.@VBP%L5:Z_LZaEiL#n$hFQIZFF!bjEChmm)EIE4_IY!!#K7nl2K7ei3MMR(GM2@+I
+M2I(HMMm:GM#E)0Lkbna!euJdrJ1E-!JcF/K)pLSrJUW5qi1E3p5]98O,s7"rf@&?qN(Z<!0Ql7
+rfI2DqNCoDrfmYQQ^=),RJ`KRS,AfUSc55[SH57Orga"Zs.97_s.04]rgWtZqj[_YS=KSJr0d_U
+Q^*g4PP:=APl[29rfdDKrfmMMQhm*LR1#IRSXuIHU8=cfXKDE'!3c@*rN?.%ri\u"ZaI3M\%&rY
+]">Se]t_@u_8=(,`5Ta;b0A8Zcd'e[cHjh`cd:(ee'umte^i=(g"P39h;7&JioB+^kNV9tmI'K6
+oCMVKq>C5Cs761Qf!DN^XfSV+XlSHlbf79$Jq0)]]?.[5KsuM>:2NdMGB?e\L4b&-JUr>I:et+k
+;c6IhPE:lgO,f6[Mi7RkOT-s(agnm_X/rG,Yd(R?Z)t7<XfSV(W2?AcVl$2XR$O#$PECrfN/W[P
+N/NLKLku%coS@cn='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/s
+R$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1je^i@*g=tE=hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*%s*t~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@mn7S6?K:Jam]:]!uc;>=&e;<:^M48V/<4nq/>3t+,/3&s&]6U4(.77B]F7gqjX84cEG
+91_`L92&"W9)hNa9)D0^8kDTHr^d,]8,Gg\7n-!>7n<MTs&/kop/:K\!`Drqr_iYm"B8B%<`S`j
+r)Ebu<W6%r=8u;*=&r=$<``B#<r5ts=Sl/#=BYW(!*B/#rE&u!r`9)%r`B)$"Beo3=]tZ+"C#&3
+<`],u!*8eqs&f>(r`Au!rE9,'r`KM2>[:WA?!^lGqdK5.raQ4EAS#IcB4u!nrG)@J!GlWPDB<_8
+EH-&@FEVkQH[C$_H$OaaI!pElIt3'#JV&N-K`6`+LE_P2Mi<XTNfB'[OHPinQC!u-S"6.CTV/$S
+UnsrdW2ZeuXT#@4YHY:;Za@-K\%&rZ]=Y`T]e[76]t_D#_o9X9aN;TJbg"DXcd:%ddaQ^qf%&=%
+f%A[/g=k<:gtgfChr3SUjlY^gkPjZQl0.?ql0.Bqkj%I!rp9^RrU9dUs7--[r:0UR!qZ!Rq!n@T
+-1J`u@9m2H?X@#EH?O.:@9HSs6:ssTAQ_,ZFuCs$1bCmR4>eqo8.\6\7RK-q3'KPj4Zkf,<E*#t
+<!6#p<)QWclN$5Cl.G4Rl2BfUiOXteA7/YK>[LcB>[1V6>m=D8>?Y05>5hV7='/R+=B8I$<`Dsr
+;c-Fhr_EMjr_N/_Gue!K=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%KO-#Ng
+Q'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-FY_daZguf@em4gtglGiSrnYjlYai
+l0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8NAU&WQQ`9eYn>6)ZqkNkZoV;8Y!2]L]rgNnXm[XcUQBI5bMi*UZUo:/fri$[8Yd1U;
+YctF>[(!KN\@B,\]!o2Z[^Z7Ds0Vg6#I_%M\$rcQ])K)CZa@'DYHP+1XSB(#ZMUp,ZN%92ZMh',
+ZN%<3ZN7G=os4Y'r3H@0!j]/<r3HX8[C!?M\$rmH\cBA@]F2Ee^r"%/`Q60DbKKh-"3o-;chPle
+ci)5fd/_VodJqPkck+OKbK@uLaiMNA`50.!\@&aD[/RH>[^W]R[C!9I[C6(DrODg;qR[0K^;%M%
+`lZHPf\YWKroFOMkN:pikN:pgjPo.ti"P)/j5f=bl0Ia)nF6#@pA"L]rV_<I[f6Tuk2tadjQ>V'
+ru1n3m\Zkshsg3tUp\^\JmFRLTU_Na?ad2@WrB%1>ZtB:@U<>F>fFLl^V7Cp])K,=[Btto-hm5o
+jlGIdl0Ia'lK@<rkMtU`iSWMHi8<;9aMu08_8![r]",8X\c/u;['otAoX=d#I99WT>$P<=?XI5N
+@qB4aBPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroR$jG6StD^OUo(&hWi`G.Z*UgG\%0)_
+^;%M$`5Ta;aihoRcdC.heCN7(g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@e7Zp]1-h
+qYg<ir;QZerdk*%s*t~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8N>%D>bH\V?Op4h"L!/CGok&guPEc>l2Ci"$/IK"]qJ2Mn0K7nu1K7nu8M2I1GM2@+I
+Mi!:JM26nALk^Y>LPUY>L5:S<M2$e@Knb>8K7\]*J;fGFqi(Q7q2YK9rf6u=pQ#-3rJgu@NfT7n
+OSk1>OT1ICP5CFFPa.N"rg3YQs-iqVr1*bWrgs(Z!hPpPrgj"Zs.B=_rgiqVs.0.YrL3bS!gf1;
+r0.,C#*Y::Pa%AqrKR,C!1*SMqj@DO$CdQVT:r*ZWiW>)r2q*EYct=7Y-"h-X/i>(Y->.8['mEP
+\%&u[]Y2%n^qp#e$,a^#`Q-*EcdC29d3[5gdaQ^re^rI+g=tB<hV[8Mj5]7bl0@R"m-aB5o(;YM
+qY^9jJcG<@2qG:;Y-"h-XKL^Ae]PkBY^q=gUqFgYI##4b@nLT7GBJ%,:ks[SJUi<%:Jah_<Dugn
+:m7$'OoCCFNJ`UMLl%5n&G+&T[]QU3Xg#%7['?m=YHe).)QTd7V51&fU7@U:P`q;nOH5?ZMMd@M
+LP^kDreL-%s&OPM=]np5>[CcE@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^nINfT<cPa.W(
+S"-(BTqeE\Vl?\uY->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8N77TmD:&[ud:]F8j:]=2i;>X8D;#jMe48M);4o.;@3ts_83AriY3^H&#6UaC47Rp!>
+7n?/L8chRV9D_<^8P8qQs%<;_s%<5]s%!,]r^cuX!(QoWs&/hno2>Ter_i_opeq#g"B8B$<`T)t
+rD`hspf7>nqc<Vrs&T(uqc3bu<`]0#rE')'=Su5$=]kZ)"B\f0=BPH%!*T;'r`B)$qcWr&#?tA7
+=BAR)<r>r$<``C+=BP2ss&f;(s&oD*r`TM/=BSd2>[787!+5S2rF,b:r*oY8s'uRMAnPaiBk_<s
+CMRa&DZ4SSE;jh\F)l>DG'O"5"+#6<HM`(%IXcfrJ:`H-KnbD=M2@+JN/dgss,Ta5Ocu&sR$jG7
+StD[KTqeBYV5L5jWi<&"XKJb2Z*L^C[C3NR\%0)]]Y;+p^qmn*_o0O6a2c9Cb08,TcHab_daQ^r
+f%8R+f`'S(gAfqCh;7#Ghr*JQioB+]k3(pkkiqBtlg"K8!:9^N!po=ArU0XQrUB[Rq=F=Ps7?9_
+"7j9U@/aFY?<pfBHuX"7?s$Dq6:jmS@oGHPG;_*$2(UsT4#A]`84Q0>7RT992ul/A4UjJQ<E*!u
+<E<!n:K14iq!RhApZq_Cn*A6`rTP3[]8^]=?X-lA?sR&C>?kK?>[1H:>Zt?8>5hV3<``C'<``=#
+<Dudpr_`kq:JO__r_N/_s&OPM=]np5>[CcE@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^nI
+NfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeW
+jlYail07O#m-X60n*ol<o(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,LApA]TRA0MSp8.V]rhKIel_4-Kr1j(XrL<hWn!sTNR[K:sre_&BO-?B:W2Zf!Y-%],
+/@2Xi[(*TT\[o;`]"5>[\@&`N[(!HN['mKS[^WcT[C3KP\$WNJZa$d;Y.aD2qm-+(rj)O0r3H:-
+"0o/;Zhq$,Z3.A;ZEsM8!3uO/"1,DD[f*ZG\@K/]]">Yj_8F42a2lBErlPDfbg"GYchGfcci;Ae
+d/hV?qp5hubf\&LaMu6;^qI:g[^H+As0_d5s0_m5!joADrjVm:s1/-?qR\Jq^;%P'a3)]WgYh,R
+k2k^fki_0nkNM$hj5AhPhVR/Hi8WbXk3;0unF?)Aq"sserdk*Wrs.rRkNM0rlKA-G)?0BuVkq,a
+nFGb;[a_j>?BSinS=Nnm\$<"5WYV\8>$P9@?X@#C`5'(#^V7Co\@8oS[#Y/;p@IA,jQ,Ielg=$(
+kNM3mjl5:Yi8<>JhqZZ%a2Pp2^q@=k\[JrW[C3KM[f3],[f9BQ='/U/>?kH??XR>PA7]@dBPM="
+DJsN8FEMeOH$XjdIt3-'KnkMBN/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEpsJ\[oGe^VI_(`Q$!@
+bKJ/Ud*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBf
+JcCE'J,~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,L>@q\iI=h9Mp4gtKq/kkDs)]<&Des3(Ci+*1I=?ZqJ:N6'K7\c2KntPCM2@+IM2hLl
++,bu1LP:J=LPCP=Lkgb?LPCM;L5:Y?L4tA8KRn`7Mu&D3NUi,*NW"n;O8k4CN/`gWNr4t;OT(:@
+OSt7?NrG(@OHG\#Oogi3Q2['WQ^F20R[]b7S"#t=rga%\qORYVrgieTqjd\W!M#YWRKT%GQ^3m6
+PP^LDPEc'1rKR,C"I>C?QC%Q;!1EhTs-ta6TVA9^X/rG*Y-5%5YHY77YHG%0X/i8#WN3)$Y-,"7
+[C*KS]"G_k^qde'_Sa=k`AGTTb0JD`eC2ptf%&@&e^N!se^`7&f\,!5gt^`Bhr*JQj5oIglKdj*
+n+#u@p@nC[r;?MEs7-+:e[)E^YHb=8YNFTiai1fpJq&oX]Z7^5Lpr1M8o7FNG'$GULP181rIFlC
+#ZXf&;,EI>O-'@%!f`.sreZa:%J.cQ[B6O3Xfnn4['?n8Y8s[FXK/;!V5'rdURdg=Q'.;mO,o6Y
+MMd@MLl.%FreL-%s&OAG=BSg3>[:ZC?t*SUAS,UhC27[(DfKf>Fa&%TH@1-jJ:`E-LP^nINK90a
+PEhK%R[]k>Tq\?ZVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gYL`Di8N_VjQ>Uf
+l07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,L77^!E9i:LYr)*;gfMVZ2ofMt3r&ss?$9L:13]K)W3BK8ar^7Pi7n-!=77Tj=84cEG
+8P2WJ8k_iM91hhU8HVRV92#7V!(d&[r(-`U#=q?T9i4bc;s[B^;>X8g;uT_r<W#hj<<-"s<W?%k
+<rQ)!<;ons<rZ2!<WlK)<``B#=T2A'=BSf*=Sc2"=T2J%=8l;1=^"s1=^#!5>$+j,<W6&!<<lT+
+<E3($=BP2s!*K2&s&oD*r`];("'Sr7?2e.5?t!GO@fBd9A,]p;A,KdN@q9(ZA7]@cB4tsnC27X&
+D/O91E,berr,W!`G'\L^rd"`pI!g?kIf=a$IXm$&KS>,7L]3/1M?AcqNK4"!8!0"!Q'[l+S"-(C
+TqS3UV50rbW2co!XK8P*YHY=<['[9M\@8uZ]">Yi^VI\&_o'F3`lH-@ai_fNc-FY^dF-Lne^iC*
+g&B_*gD\l'h;7&Hi8ESQioK1^jlY^gkNM0plK[^$m/HDOmeuVRnGi%YnG_tXnc8:Yo)81Yo^_Z,
+oY>f^?!^lE?!UcaEc,Jt=B.^T7o!2s=$&Qh2_QL7/j;B[0Jc3i8Ou??7n3J;s#glV4Zc\E<)lmt
+<`;jm<)Z]mnb)DDn+,l%m-!^5l6t`+NG`64>?tKA>[:T=?!^fA>[(H;>?P05>$4s.<EW@&=&i0u
+;c6Qn;?Tin:Jame:\7K`<d7\J=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=YI!pKpJqJc4M2I7O
+O-#NgQ'[l,S"6.EU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!5h;7&IiT&tZ
+k2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAK`?Q~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oHBQf#]Stc%XqPF+cqkO.brLr,Aq4.;Nn"'HI$^d*:Mi*=NNf^*8VZ*P)Ycb::ZEgjE
+[CEcV\@B0M\0&/c[C*BL[C!?M[CE]T[C*KMZE^gHZaI$CZ*2*]^VBEGrNc@+!3lF,s0;X0rNcI.
+!4)U1s0;U.!3u@(!3uO,s02L-s02L-'XG'P[C*HO\$rlW\\#Mf^V@Y'`Pqeq#04g-b08/WpsB#d
+s3LeodeV;fcjn@FbK7iH`l,^-]=>>X[JmN3ZiRSCrO)U1s0Md6rjVp;rji'?s1/-?s18ZO]t_G&
+a3)`Zh;[MpjrrpOkiV'kk2tdbi8<DJh;$f?gYL]Dj6,[onFZAHq>:-iJcE+W#Opm<l0Ra%m/?r/
+rqPp@V7k^ToBE!Se@C0:O^t;[T3Pg8Z`L.+WiW1'?!CcEr`oV/_S3ea^'2-Y[^ENLNrL[(o&Jim
+jlYdmmHa'#kih-hiS`_RhV6rFh:'Hc`PfR.]tCtf[^WcS[^EKNrjDC,H<"!I=BSd2>[1TB?t!MS
+AS#LfBkqO&DK'T:FEVkRH@('hJ:`E-L5:\EN/is]PEhH$R@B_<TV8-VVPpMqXfen5ZaI6O\\#Mg
+^VRe*`Q-'BbK\>YdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]k
+r;6KkrVcBfJcCE'J,~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH?"RnlIt[WQqM+p%dY.@:l?,I9F`_YACi!j#D/X?@I=?]sI=m-*KS>/:L5:_FLl%"H
+Ll%%GKnkG<LPU\>LPCV?L4t>9KS+l2LkUV:KnP)AO,f7qN;JV7Nr+e:NfF!rqi(i@O,o<]N/`hh
+NrP+:NrP.BOH5KbrfIAIOcbfiOoCRDPlI'PR$X/-rg3\RrgWqXp72>XSXuFFqO[_XrL=ChS=H(;
+R@0G0QBdYuP*2%(P5LOBPl6mIQ4&tDQC!o&Q'R`&R$dl@s-j4`T:r-_Y-.c-qlg=/Y-+k,X/W,t
+WW/thX0&V2[CEf\]tV:t_8=+.`5]d9aN;WNcdL=of@S[-g"P05f@SU*f\"m2gYCT?h;7)Lj5]7`
+kiqC!mdBQ6oCV_Mq"jperdk+=s!H@+Y-,"8ZE^^ugXXB`]<J/_OeTJ-\pT7@Lgitn;1!M09iHk$
+K)C-5:/=Yc;c?Oj:m@$%OH5H^N/EIKLlhWho?=bQY,eY+YHG1<Z*CI8Y,n\+X/W(qV5L2dSsbq2
+PEM&iO,]*UMi<OMMMR)fL\-CK<E<1'=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJqJc3
+Ll%%KNfT<dQ'Rf*S"-(CTqeE\W2co#Y->1;[C3TU]=bkm_8=.0a2lEHc-FY_daZdtf@em4gtglG
+iSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg1\^V:p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH7S-9I:\moT;=79H;>iWN481l94oIJK4$5Vd3]T/Y3W;&M6pX.-6q'U87S-0B8P)HE
+rC[&^!_Q$Ur^m2_9)_H`8H)3\8.\?`84Q3A7n?*>7n-9M:/4^d;t3cb;>O2i;Z]os;uT_r<r,eq
+<W?%t<W5r!<E<0"<W?+r<<-)!<W5ts<W?,!=8l8#<<cK*=BAR+=S#\q>5DCu=:JD:=]ed/>$4p.
+<`W4#rDiu$<`\lps&f;&s&]A+>$+o*=oVY5>?Y04>$G6:?!UcFqI0M9@Uf=H!+bt:$tNp]AS,Rf
+BkhF#DK#Gl(34D8F)uGEFEM_NH@($cH[L9jIXZfsrdG-&J:`H.KnbA=reV8FMi<USO,oBbPE_?!
+R$jD4S=]_Q$)+)iVl-MoWiW?%Y!oP!ZEpsI\$rlX\[oDc]t_A!_Sa:0`Q#s>ai_fNbg"GZd*^:j
+eCN7'f\,!4gYCT?hVR/Ji8NYSioB+\k2tjikih<srTaRNlg*p:mJcSSnGhqWnGDbTo)J=Xo_\=\
+pAF[Zp,9^6@pN>G?<pfBI<'4;?s-K,5t=XO@TbfWFZ;$"1bM!V4YJW`7nH3A77Tg-3&j&`5!;"i
+=8c,(<`;jl;H$Hap@@qIo'l2<bjGAq$K\s^DId'X?!L`Ara#P/$XHtB>[(E9>$G*4=oMJ-=]eX)
+<E)ssrDNVlr_WSioMBj6<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBnL]I=?]uK8#&9M2R=Q
+O-,WkQC+)0S=ZCIUSOccWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]
+k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK`?Q~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.o9oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na)-$KLn".8rhTFdq4dh]rh//@qOI;LnspMbSXZ+;SX,FuMhm4JN0'j6VPpMrX8]=@
+['I$F\@AuY\@8iP\$NKO['R'FZFRHN\@;IF&@f-SZEpmF['d3D_o':*^:j9Gs0DL+rNQ(%s02L-
+!jJr7rNQ:)"0Si2Y5GI)Y-5&,YQ;#7rNcR5[^H+C"M)+T]=e-W'u.Q#_8=(,`5]j=b0/&Ucd'h^
+cd:&<cN)>kdJqYldJqSncPb$QbK@rJa2Gm2^:Lh_[C!9HZEpmCZ*UjFq6L(.rj;a7rjVp;s186@
+rjr-A$bX0f_8OC:d+@.6jo4E=k8<=@iSNGIh;$c<f[nd.g>M&Vmdp2Iq>:)@s0DY0nE8rum-Es'
+rVn\Pp@$t:^u"SPih<F&\UnCTA>Pri>@LpGX/`,!XJoE0>@LoF?!UUL^;%Cr]t1b_[C!9#s"*p8
+jQ5IbkNM6ulfmWujlGL_i8NYOgtprFe]GkO`50:(]=PP]\%/oT[C3OC[IgnW<E<.%=]np4>[:]D
+@:E_WAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^nINK93bPa.T&R[ftATq\?[Vl?\tXg#(:['mHS
+]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*ol<o(2MGp%A%P!;HKf
+s7u]kr;6Hjrr)KgJcCE'J,~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.o9oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na'WFoFaa4DqhFm"nq>nQp2oYD!H`J`F=hWRDes6(Chmj)H@:3jIt3'&K7nu6LPCYC
+Ll7+GL5(P?Lkpe?Knb;<LP1M=re1o=KnP)3KnkD<L4thSO,o9[oo/p1rJ^`8rJUf9N/dao#E=e*
+NfB!WNV/>1N<>3%NfO$uqiLc=!0[>FrfdPNQBdc%rfmbTR$a>2S"-(@qj[_YSt5hOs.B1[!1j"W
+$CdKPR$X/*Pa%Aoq3(c?rf[;Fr07,EqNh/Hs-E\OrL*\S%%No_Vl[)+Yck77Ycn#0$*UJ3Wi;tt
+WMuiqVZs*"Y-PIG^&Gbh^qmn*_o9X8a2c?Id*gCmf%AX/gY:N?hr!;Gg=b37g]$"GhV[8Nj5f=b
+kiqF"mI'K6o(2MHpA"L^rIP":s$58GYHG.:Z*CUtgXO<[\$)WXPG5S+XF#Q,Lgs4t;1!M19i=fA
+JUr?&J:C<i:/t7m;,L/RO-#KbNfK*VMMR(Mrtb1M]!SW@XKAY/ZEpjBY-4q-X/rA$WW&b&VkfrQ
+QBm_tOcYW`regr=MM[4HM#N2%LjrE*<``F,>$G6;?XI5N@q9._BPD3sD/O<4EccGJG^=^bIXm!%
+KSG8=MN!OUOckroQ^F53StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@\L\rqQNhs8)ZjrVZZno_sFAK`?Q~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.l8oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na$iTn:&.Zc;YX,N;!_'V4SCl14T7JL4?GYe4$5Sc3W:uc3B0&\6:+%/6UF:77n?'>
+8P)NH8P;ZK8kVcK8P2TH8P2QJ8OuHFr^[#\r^d&Z$:mZX7n-6K:JX_[qc!>hs%rbor_ieopeh)j
+rD`_qqGdJpqGdJps&Snps&Anrr_ru"<)clp<rc;#<<cK*=&rC(=T2J*=]ef)=oDM*=^##)=o2D$
+=oVV(=8uA'<`Srrp/h8rr`T8)qcNu(>?h)1s',M.r`oY8@q9+[raGk;raPn;raPk:rac%?raZFK
+B52:&EcQ,=E,fo=rcA*]%Wur<G^+L[H@($fIXcitrdt-":P"+LK7nu7Ll$tHMi<XUO-#KePE_?!
+R$jD4S=Q:FTqS3VVPgDnX0&P-YHY:;Za@0L\@K,\]=bhj^V@V%_o'I5`lH-@b0/#Qc-F\`df.],
+eCE.$f\+s3gY:N?hV[5Kir7mHioB+]k32$nl0@R"lg4!;mJcPRmf;kTnc/+Xnc&(ZoDJ7Wp%S4Q
+q*OhkHt-Jg?=$oB?@?p4AR/D;;F*fJ='n]b4E<D7-oEVA5<LVV1e1&,7n#j93B/r]4?bnk4'#?[
+<`W4!;G^7i;YftYoCVVFn`TDun,;Y\kIm!rA6rJH>[RJ9r`g4E>?kH=?!:E9=^,$1='/O+<**+"
+<E/rq!Du\m;?'Jl:\7J5<E<.%=]np4>[:]D@:E_WAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^nI
+NK93bPa.T&R[ftATq\?[Vl?\tXg#(:['mHS]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeW
+jlYail07O#m-X60n*ol<o(2MGp%A%P!;HKfs7u]kr;6Hjrr)KgJcCE'J,~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L@W?^@OeMcNqkO4er1`hWqk2i=s-rqVopYrOrLNt[qjm\T/=N&sS!fCuMi!.EM2eI1
+Vl?f%Y->+7ZEgjG\$`cT[C<KM['R6J['@$G\$l7Erj<'B[C*?IZF%$I`;[XV_8*h"q6Bt*qQ^"'
+s0;L+qlfq%s/l@*pTFIs(pC*GYHY::Yd(L>Za@'G['d?N\%&uZ]"7mQrk&fU^:q@u_oBa<b0.rN
+bKS5Urlt_od*L%bdaJ*As3Uel%F*,>b/qZA`5'+!]"#3JZiRM<rNZF.qQfq'#dh"I\$rlY]=\$Q
+s18]P^;.S'a32f]gu7DZr9"(DroY*YiSNDHgtUQ9f[eR%f%JsBl0e3<q#(&@s0;S/n)riulKd^$
+rVnAGo^(D1`Sg:XiLm7%Z\DeKA#5cg>\%3KWiN)"WiB6,>@LoF?!UXM^V0W\"hD.O[^<B$rri&c
+k2k\'k9TB[lfmTrjQ#=]iSrhQh;$oDe]Z"Q`50:(]=PP_\@T)T[C3OC[I^hQ<E<1'=^#$7?!^lG
+@:EbYAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%LO-#NgQ'Rf+S"6.DU84W`W2co#YHY==[C3TU
+]Y2(q_Sa@4aN2NIc-F\`daZh!f@em4h;-uHiT&tZk2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Eg
+s8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L=(>l[G_5mLqhG$&mY'JM!H`DVFRF;MF>.cXFEMVBD/<p!BkqU8H[gNrJq8T,KS>/9
+Ll$tGM27%EM2-hALPCJ;KntJ>Lkg`aKa<HfKnP/5L51Q`P6@&1O,f4iMu\k8N;/;5N/`gWp5T$2
+qi(W;Nr4q=NfX!trfI8FPEPm.r/qGPPE_>uQ^F21S!ofERfJuXSc>8`SXuIGrLX%[r1".aR[KM.
+Q'@MsPED"+P5^[FOoUXBOogi3Q2R!PQ'@MuQC%E5rg*VPrg=%\S=ZIRX0/\3r3-1+ricI,XJu/s
+9<"kgVPg;hW3*>4\\5bm_84"*_o9U7a2uNMdF6Rpf\"p4gYCZCi8WeVi8*2CgtgiFi8N\Uk2tjk
+lKmp+n*ol<oCVeOq"jmcrIP"9s$5;GYHG.9Z*:Lsgsa9W[B?6RQDD"/Z$V).Jn7Pk:j[A/9N+`?
+JUr?&J:LEk:/t7m;,L/ROH5NbNfB!TMhm1Nrt"\H]!SW@XK8S/ZEpjAXfhZ)s/cj4WMcViVkp#R
+Q^3l!P)t`arJLf9Ll."EreL*$H<"!I=BSg3>[:ZC?t!MTAS,RgC27X'DfKc<FEVkRH@1-jJ:`E-
+L5:\ENK90aPEhH$R[]k>TVA6YVl6VrXfnt7ZaI6O\\,Vj^r"".`lQ6DbK\>ZdF-Opf@S^0gYL]C
+i8N_VjQ>Ufl07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+UK'~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L6UaR>9i1[`r_iYkhb``<pcS73pH8I=s#g6As#g9As#9m:'gk;T6pjF77mfd:84Z?E
+8P;WH8kMbU8H_XW84lGM8cD6^8OuDN8,l-Y:B+,i:AIif;?9Wmr)<Vn!)`Vkr)<Vp!*/hos&Jqq
+r)Ef!<E8uus&K(u!*0#!s&B)!<W,l2<E<+"<)cjs<)lpt<E<1'=B\p4=oMM1=^#!3>?b64=^##*
+=oMS+>?Y5/=T2D%=9DW,=',6!pK.>rr`T8)s&o;(r`fD+r`fD-$=-tH@q9+]A7K+YqI9M7ra?7G
+A7T7_A7T.YA7fRnE;jnWE<(%XF'!I+F`qtRH$Xa^H[L6jIsup"K7nl/JUrE*KSG5:M2@.KN/is]
+P*2#mQ'IZ&S"-">StD[LUSXibW2ZeuXf\b0Yd(I>ZaR?R]"5Md^:q@t_8F1/`Q%nt%EQZ7bg"GZ
+d*g@keCE+Ked^6`g=tB;hVR/Jhr*JPro=%>!TiJBl2U&Kli6APmf)\SnG_tWo)A4\o)A7Yo`+Ua
+pA+I^q>0s\qa1.pHXU5d?XI,E?@I$6@pN28;*mcH<aSZb4DHf.,rI;>4ZkDT1Ijr+7n#j93B/r]
+4?bnk4'#B^<`E't;bp7h;Z6=`p%J%LoCVV*nGr(On,;YWl+W9uA,]a7>[ID8s'5S0#?tG<?!U]>
+>5hY3='/O+<`E.$<E2us;Z0Dn;,C*g:\.D/<E<1'=^#$7?!^lG@:EbYAnPdlCM[m,EH-&AG'A4X
+I!pKpJqJc3Ll%%LO-#NgQ'Rf+S"6.DU84W`W2co#YHY==[C3TU]Y2(q_Sa@4aN2NIc-F\`daZh!
+f@em4h;-uHiT&tZk2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#KA9NKQTV_U_rhKCco:brPiLg(<rg`PKs.'(Zs.91[s-j"ZrgWqVs-OFcPDtERKntSE
+VPU5iWj&Y0ZEaD7"15PH\Gio9[NW&e\$NQO[^NZS[C*NP\$NQM[Bm0FZc1#*`Q#g4_7m[trilF-
+s0DL+q60k&q6'UurN6.&q6'[us/u@)!3uO-s0;L-"0o2?[JmW4\,WrG\[oAa]Y2%q_o9X9rPeoZ
+aN4;$*m2[NdaQ^pdEp1abfRrH`l5g1^:^tb[^NQLZa$g@p9F_*[/%$5['d?O\@T8`rjr*@%(s9f
+^r"(4cICM'j6$@)!9a@F$0gX7iSNADg=Y'Wf*p-Xe_&[9jm)@-q"t#@s0;S/o'#9%kj.L!rVn\N
+oBb;2a6<'an"?o:Y_-8EA>Plh>\.9LXK8D%WMs*+>%1fE?!UXM^V7Fq^:Lk`\$`W(rri&ck2bY'
+kPjcjki_*hj5f7Zj5]%RgYLW7bK.`B_SNq!]=GG]]!\oQ[C6(Bo<rsF<`W:)=^#'8?!grI@Uit\
+B4u!pCi+'/EH?5EGBeF\I=?]tK7nu7M2R=QO-,TiQC+)0S=ZCIUSOcbWiN8)Yd(OB[^`l[]Y;.s
+_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAL&ZZ~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#K=_2>dJV3oVreCE+k_.oInT=8Cs)\6`rcJ*[#]aj"C1q6pC2<fs(k-scJqSi3L5(D;
+M2I1HLPUeDLPUeBLkbna(l3s&LkUS9L4k86K8##BQ'7DsPECrdNf<pppl#34qi(H2",r.rN;SY8
+N;/D0Nr=t;Nr>%<NWG6&rfI#<rfR&?s,m8C"dG:<Q^F0;R0f@QS!oh9R[]k?rh0:_r1!q[R[KJ,
+Pl?jJP*(n+P5^XHP*;+,P5gaFPlI$JPlHpIPl-gKQ^3s9QiEEQRJrW]SY;jWXKSn8ZEjD5#dCM6
+Wi2knW2KWn,GqB:W3!51\%0/c^qmn+`5Ta:aihuVe'uq"f\5*8h;7&Jj8S-^jQ#4VhV[8Nj5f=a
+kNV="mdT`:o(2MIp\=R\qu$ElJcG*:"5C8gYPtdJYHm?HdD`c*XeLB4Y-l*aH\SeUA4g]9H?XO+
+;Gi/IJ.7'ZInrj7<E)pp;,EI<rf@)>"H84rLkq/m-M#Nq['$I3Xfen5Za-g;Y-"b*XfSS'W26>g
+Un4!AQ]mYsOcYQ]rego:LPgnDreL*$H<"!H='8[0>[1QA?X[DRAS#LfBkqO%DK'T:FEMePH@('h
+J:W?+L51VDN/is]P*D9"R@B_<TV8-VVPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/
+gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#K6q9mD:Jgpc!)ienr_WSkpe^]^nkegQoK;h/q)nX>!'L0@s#^iR4#o5Z2`EcX6:+%.
+6UjR8rC7&]84cED8P/nR"A)3X8P8eM"\;3U8Ol>M8,c<_:'49e:JLgdrDW\nqG[;ir)3Snr_rbp
+s&8qsrD`kt<W,np<V9Dm=8u>$<W#hr<rZ2"<<#r*<)lpt<E<1'=BSi'=UeJ7=&r@'=B\p6>[(?6
+r*','!`rE'rDru$r)X&&=&rC'<q]Vp=T;P'=T2J'=oqo2=oMV)>6%k*>R=\D@:<YVAS#C_raQCJ
+@q0%Y@:3MP@Us%^Ac?-KA7fOkDJsK7F*)MEF*)O&G5lddGlW0iHY7_SIXciuK7ei1JqAQ*K7nu8
+M2I4MN/j!^PE_>tQC"#-R[fq?T:hmPUnsreWN*#$Y-5(6Z*L^B['dBQ]">Vg]tV7s_Sa@4`lH-@
+ai_fNbg"GZd*gFnf%&@&f@\a/g=tE=hVe@k#ian)jQ5LdkNMp0s6KXNs6fpU!q>aMrpp'[qXjd[
+$24,fq"X[\q"OR\q>^<kqtU*`rWE)6HXcnZ/mVe5F_kPn=B&0b85N;k@luk^2(p:5/Nu?[0JkUW
+84c9?77B*o2a0>f5!:u.r)Eo";bp7h;tp%\p@\+No^)2=o(V\So)%tOn.Fs#P&Ol9?!LZA?!LZ?
+>[:W>r*0J2=^"p1=BAQ&=8l5.;cH[l;,L.e;,:"br_N,^H<"!H='8[0>[1QA?X[DRAS#LfBkqO%
+DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<TV8-VVPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'B
+bK\>YdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCH(J,~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphW1nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oHAU&cXT:hsSqP*k\oUu&QnXfKIqk!\S!1`MI!1`kUs-a.]R[T_7R$[f>/!>mKLkUV>
+NKC'=XKSh3Z`gX<['[9LZaI6L[Bm6MZF.6N\@&cR\$WWS[/IBF[^*6Y`Q#p<_ns:,^qdh%YctD2
+ZMq-+Yl:j)Xob`,Xo>L'YPPF%Xno4#XT5I#XoGO0YHG(4Yd(F:Z2Us/Z*L_7[/[Q6[f3c8\Gs)E
+]tV7s_84"*rPKbr`Pf^4_o0R;cHt"fd*BhWa2Gj2_8!Xp]!o)S['R*Eriu4'qQp.-$a[4J[^NZT
+\[oDb])B5N]Y;+p_SsU@db3I9k32+0l2U#ckiLg]gXt-.e^i:&f%&='gYUuRm.'fFrIP!Rrs/,Z
+kNV3rl0A6I.J`MtgS`6ZnFZ:F[ah"1KoooBSt94u?am,<WN3&">?k???X@#D>/A#R^';9^\[T#T
+[#Y.ep[S7Es5j=ErotZjkN:jdjl>@_j58_Kg=t*"a2Z*8_8!^r]",>^\$WQL[f3]+[XV7W<``C+
+>$G6;?=.)L@Us%^BP;-rD/O93EccGJGBnL^I=Hd!K8,/<MN!OUOHPinQ^F52StD^NUnsugWiW>+
+Yd:^F\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>Oj5]7`k32'olg4!*mdKW6nac8Bo^qhL
+p@\L\rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphQ/nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH>%VYjI=_<NrIsEfiIh,PnoXDEs)T*#F)uGEEcQ5BEc,]-C1_0oD/XlQJ:`<)KS08X
+"bqegL5:ZbLCJurL51V@LkUS<Lk^_Ar.PB1K7oDNPEV71Op7#/O-#B[Mu/J5NV\V2Mu/J5NW4q;
+NW+t;NV\\5N<,'!rf-u>rJgu@NfK2"NrP1<OSt=@P5^UCOp.&6Pa.N"rg3nVR$jD2R$mr@&"B/_
+TV%gGS"#k8R@';*Q2QjHOc]O(s,mAHrfR8Fqi^i?qiq)Fqj%5Lr0IDOrgF(]SY2aUX0/c-[/[H3
+ZV[p2XfA@tVl$>hW2chqVl?`!YdCmL]Y;1t_o'I6bK\A[e'ut"f\5-:hr!AOj5f@cl07Bmj5T+[
+jlbmnlg4$,n*oo>oCVbNp\F[_r;HVGs6BUdgU=>irin,[ZKL#g_7?nPU4J`8[)'n3Lobi9@Vntg
+GBQ\Y:kjOPJ:W6#:JX\b<)ZXk:m7(@Ns1N%N/NLJOT,d]d(H`fXKAY.Z*CX?Yl:d)WuJ1BYH"Ot
+V50oYR[BG+PEV/kNf8mTMi<ILLku%co8%lq<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=Y
+I!pKpJqJf5M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"
+f\5'7h;7)JioB(\k2tmll0I^&mI'H3nF?)?oCV\Jp%J(Zp\ssfq>^<hqu6NlrUg)?s+UK'~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphQ/nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH77TsD9MkL]rD:[7niZV-q)nX>!'L0@s#_/[3B9#W2E<cY4%)J*6q0U87Rop;7nH9A
+8H)0^8kDYR8cM?Y8c)'Y8,Q0]:B"#j:/Y!c;u]bq;u9Jk;u]bp;u0Gn<q',g<WH4t<WH5#<rH%o
+;ufqs<rZ2"<rlE)q-!`"s&Th6<E3(#=^#*;?!:B7=]ed,='#<#r`9&#!*K)!r`8bps&f;(qH3Ss
+"'So3>5he,>6S8;?=./OrF@0`A7fIdARf1X?smDPAS#Ia@q0%]Bl%X(DfKi@G'.nLGBnL\rcnZn
+H[C-fIK"[fIt3*%KSG89K7ST*KnkMCN/ipZOHPflQ'R`'R@9V8SXuIHTq\<YVPpJoXKA\1Z*CU@
+['d?N\@B,^]Y2"n^r""-`lQ6Cb0/$-bm)J>d*^:je,@c)e^iC+g"Y<<hr*MSir8!<jULA8kNM-o
+lKdg'mHs?/rpTmVrpp'[rq$9bp@eL[!;?Bcs7u]k!;l`kr;6Nls8;rsqZ$KmqYp]t_0]Wsra%Wm
+?!`#'Bk(@L<)Z+S:K1Y:4?ZP!0.Sk35!D%^1c.cp8Ol3<7Q3:c4Zttm4Zc\F<E3("<)c^l;cESi
+p\FRXo_.tNk4JTCqss(C&F7,pEai<Z?!UcB>[1K;?=!P8**lfR?!1?5=]ea*<`iF'='&@%;c-Fi
+;Gg7d:Jh$do2'p9<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=YI!pKpJqJf5M2I7OO-#Nh
+Q'[l,S"?7GU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k2tml
+l0I^&mI'H3nF?)?oCV\Jp%J(Zp\ssfq>^<hqu6NlrUg)?s+UK'~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`b'IKK:e_5U&^nVT_Y5FT)YGUT(AEOSG&HPSGo&gS=Q.=SXZ(:R$sD2Q^Ic=$BgC(
+L4b,6MN+X8ri@*DZa@!G[C<HP[^ETQ[^WWO[^riQ[^ifR\$`]Sr3ZO5rl,>_`P]X3`4s(&^qRM]
+Z2_-/Z2_$1YHY46qQ0b!qlT^triH4(Xo>L&XTbf,XK8P+ri?(#"0J`/YPtd+YQ(g,Z2M!-Zi@E1
+[JmT9\[oEP]`c*c_83qa_%si&_8F:7b0%iG`59=)]Xt_c\[JoQ[/701ZEa>5s0V^0pp1=7[C3KN
+[^WcW]"7gOs1JoV^VI\'a32f[g>CuSlKeH9)X6DGi8*,?eC2msf%8I'f\>9Ajlu1%p%\C_JcE(V
+!VGaXklU/:lM^`=p[I:tVk`;Ao^_"Cd\MbVP%:G]Sm5f5[]QX0XK/C*>?YKC?<pf?_8*e"^:q4h
+\$`TMNrK@Zo&Srpk32%.l2p24k5OE\j5T:]hr!2@g!S$ba2Pp3_7mOn\@B,[[C*?LrjD@+HW4!G
+<`iL->?kE>?XR;O@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?Mi<[WP*;/sR$jG7StMdPV5L8l
+X0&S0ZEpsI\@K5a^;.V'`Pom=b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DD
+o`"Lap@nO\s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L``ctlE.ET=L#RdFK)g#mFn0YIFW5FFFEDYIF)uACEcZ5AEcQ/;CM7EoAnc'uIt.HJ
+*J/s"K8,/:L5UnDLkpnFLk^_CL5(J?L5(M>LkpfaKaNQtP*:ujOckllOT(:@NVSM5NW+n:MZA_7
+MtN&/NV\Y8NW+t6NW4q;NW+k:NVeb9NW+t:O8P(AOckihrK.#Arf[>IrKmJMs-WtUQC"$<RK]1K
+R$O&'rKI>HP5^REO-'@'r0%)BqNCW;r0.2HrKdJM!1<_O!1<YP':bYfVQ-i*[C*BL['[0EYH4e(
+WrAkLW2ZbpWMur$Yd:aH]"Gbl^r+.5bg+S_dacq#g"YB?i8WeXkND'olKdg$kN:sllMg/MmLSgW
+oCMVHp@e7VqYU3hrVhBJl2Lh<\?l.=s0<j3gs!OBZ)=:HJ#]onb.*)"H>$i,;1!J09N+cBK7SQ)
+JUm_p&QMe/;,C)QP)k]dNfB!VMi!7Os"!]f]="]AXfeh3Z*U^>XfSY*X/rD+WMcSgU8+9KR?s5'
+PEM#fNJWRPN/@OireL*$HW4!G<`iL->?kE>?XR;O@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?
+Mi<[WP*;/sR$jG7StMdPV5L8lX0&S0ZEpsI\@K5a^;.V'`Pom=b0/&Td*^:ke^rF+g=tH>hr*JQ
+j5f@bkNV6rlg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`^EBk9i"XY;#X>h;UeS54SCl949R`.4$5Y)4TIVD4!$FF4$,Pb3B&oV3BB2_6q'I5
+6q'U:7nH0@8P2NE8cD<a8OuEEr^[)^84`\Nqag]^$VjJm:JOYZ9i"P[:&.`f;ZB\p;?0Sj;Z0Po
+<<#ts<WH.u<:Nua<rZ/&<`N.#<W#hr;Z]ou<W#ns<s)K)=BYW*s&o8%rD`u%=^#$5rE&eprDiu$
+=BPN'!*9)!s&Snro2tlm!*]A+s'#G*$<gS9?!h#NAS5UfrFc4DAH$'?@:EaGAJerhB4l!qCi402
+EcZ>DFEVkSI!g6dH[L8>IK=qKrdk0'L&Qj$KnFu1LP^nHNK90`OckomQ'Rc(R@9S6SXlCGTqeE\
+W2Zi!Xfeh3Za7'I\$rlX]">Vg^;%M$_Sa@3a2lBGbfn>VcHjkbdaQ^rf)F5"ecsaYg=tE<hYuI4
+itCJ9jlY^gkih9qlKdg(mI'E2n,DnXoD\C]p&=Xdp\=O_q#L3gqYg9kr;?NlrojA5_L#]s?X@&G
+?<r&(Bjt:K<)Z.N:/kS9<BNl00J#(64[(q]1c.`p8Ol6>7/f.F4o[\V4?HSE<E<.#<)Z[l;cEVl
+q"sg^pA+CUnFl2@qt0mZmd^VL_3/hJ?<^b7>m">9>@%55"C#,9>@%52s&]q9<``@)<``:$<`Dso
+;Gg@i:/=^c:\.D0<)lt"=BSd2>[1TB?t!MSAS#LfBkqO&DfB];FEVkRH@1-jJ:`E-L5:\EN/is^
+PEhH$R@Bb=TV8-WVl6VrXfnt7ZaI6O\\#Mg^r"".`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>Uf
+l07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+^Q(~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`bBdRL7J7;rh8eRrh%i7nsfWKpR;/Qrgb7'SXl7=R[BP5R$X2,R[BG-Q][>aKnP,8
+LQ874WiN;-Z*OA;#.:tJ['d9OrNuj:Za[EO[C?.C$FmRSZ*_Tl_o9X6rPf)Z^qmn(^q@DZYlM$-
+YQ(d)X8oBsXSf1&Y-"e,rN5suri?($!3H+!"0AW-Y5PR(Yl:m.Yd+,3&[SjMZEpjCZa@-K\%&rZ
+]Y2&T^Ce/l]Y2(q_8*h!]t:hb\$rfRr3HI0ZEjJ9!j]):rNlI0os=S's0Vs<\@K3L]DfMD^])%`
+`Q?ERf%]0Hlg=*+m-<ftjl>:Rf)F,0f%AU+f\,';j6#UmnFZJOrIP!Urs/5dl0@NulKeEK1\L1o
+eu-aPm.Tf-XO<u/MNh\NSt91t?aQr:WN<,$>Zt?A?sd2E>J\+i^V7Cn\@AuT[#Y/0q=<P-jlYgk
+lKda!kN1acjQ#:_iSWJFf%89naiDB<^r$)`#.h@V\[AlPrO)7*HW*pF<``C+>$G6;?XI5N@q9._
+BPD6tD/O<4EccGJG^=^bIXm!%KSG8=MN!RVOckroQ^O>5StD^OUo(&hWi`G.Z*UgG\@K5a^;%M$
+`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*(s*t~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`a*:rF+4"?k(MTD!-R[Np2qU%F`heIF)l>DEcH,>F)uAAEboT+BP1pkBl/6JIt*!$
+KnY9\LE;>/L5:SBLk^_@L5(P@L5(M=L51VALOt2CP)tijOo:IKOcY]fOH5?[qMb6.oSig0s,Qr8
+s,Qo7s,7,@N/W[SNW+t:NVeb6NrY:?Oo:C?OTUc1Pa267qj@DLs-3YPQBqK7!gJn4r0%#@!0Hl9
+qi^];rKI;IrKdJMs-WhQs-NeSr0dk[StW!ZXKJo/[f*Q>ZE^[<Xf/+oW2ffs*iuNJZEpsL]"Pek
+_8XL=c-XkeeCN:*gtprJjQ5RgrosaSmHs9+l0Ia9mLSdUnac;Ep@n:Tq"ajdrVhBJk5R?m\$N<D
+Z*LX@kM47q[]u[%JXWUD_n!I5UO-fhDGkk*G"bh2L4b).Jq/AI:/4ef;c6IhPEPp,s,@/?NJraN
+OT,g`d(?]aY-"n2Z*C[@Yc[i)s/cj2Vl$5^UR[gAQ^3esP)t]aregl;M2@&eL\$=K;cQk!='/U/
+>?kH@?X[DRA7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/is]P*D5uR@B_<T:r$UVPgDnXfen5
+Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`^WQn92>%Ss&&VjePY]rpcJI;"$8V-48q>I4Zkhf4$#Gcr]C-?!B<":3#Xe<6UO=4
+77Tg:7n6*B8k;NF8kMZG8kDQE8cD6e8OuBD8kDTF85T(Ws%WJf!`)Qdqc!Mm!)rho!)`Vkr)<Vp
+r`'/'<E)mq<)iQkqH!Vrs&K,$qc<VprD`\p!EN;#<rQ+t<rcA#=oVV(<W?##<E<1%r`/tts&/tu
+<E8rt!``9%r`B,#r)Nbtq,d>nr`B,%qH<i&r*','#$P8<?t!PWrFl+C+_k\'@q&tZAS5XhBPD0r
+D/F0/E,fi:EccJMH[C'bH[C2?IMdQbJV&N-Knb>;LPU_?KntVEMiEaYOcu(0QRA)cR$jD4S"6.C
+TV8-VVPgDnXKAY/Yd1UC\%&rY\\#Mg^VIY&`Q%ks$cpK6bg"DXcd:(feG[tufDaDFg"Y<;h;7#H
+ioB([jlYaikNM0plK[^$m-O0/n+#u?oD\C^p&=[ap\ssdqYpBjr;?Nlro="\_0TKpra%Wm?!`&)
+Bjt=L<)GtR:K1\'=Zf84/hJt75!D(_1c.`p8Ol6=7QEFf4[)%m4?QYF<E<.#<)Zan;cEPkq>10i
+p\XX[pA+%Kp%J:UnFZYM$LbioEai?U?X-lBr`fM/>[784s',h6>$"j0=BAU*r`B,#r`'2&;c6Oj
+;c-<f:\.D0;cQk!='/U/>?kH@?X[DRA7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/is]P*D5u
+R@B_<T:r$UVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`G^*SMk0g@rh9%YpRg-1n=0EIpR;/QrLF1_S=5q:R$sB?QnstnQBRQ!NerFAL4b;?
+WN)u$Yd(LA[^W`V[C<ZR['d<M[^EEL[C!?L\$rcPZa@*\a2e1u!6"lU$H'm$_8*h%_7[IdricO.
+YHG"0rN-%"qQ0^ts/c1$s/Z='XKAW"X8f:%XST!tX9u)4Y-5(6Z*CO:YPtd*YlM*/Z2_-.ZO4(J
+\%0)^]Y2"n^\tkO]t:hb\[],Xr3cU5rNcL0qQ]q'rNlI0!4Dg5s0W!:Za@-Jqm?C2#I_.Q]">Se
+]`,VG^qp#e.E'<Od+-k,jQGdnm-Es$l0%3ggssm%e(*"#f%A[1h;I;Skj7a-pA4`=s0_k-p[J+G
+!:9^b2#d+6h:AIDl1"B9kd/[*P_t]2W1]\dA72dHXJr>%XJo?,@pr_M?!P7^^V7Fp]=GG\[C)%p
+/,Abtk2tjil0@QukiV!fjlPO_jP\qOf[eU!c,n#G`50:(]Y(ke]"#2WZi.<'[X1qP<E<1'=^#$7
+?!^lG@:EbYAnPdlCM[m,EH6,BG'A4XI!pKpJqJc3Ll..NO-#NgQ'[l,S"61FU84W`WN*&%YHY=>
+[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFALAuc~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`F*CtG('4@p4UbEs)m[MolUL\FE;PGEcZ7!EWU3#EW0o"ChdTpBP)$rIsuirK7nr5
+LPUbEM26tCLP^eBLkg\?L]3&.M#W29Knb;FP*1rjP*,a,"Hen2OcfX)r/:Z7N;AJ4Mu\e4Munor
+N;JV6N;ee:Nqn\7N;AM6NqJD2NrG(>OoCIBO8G"@P*;)org*JKs-<hQP*;)lOT(CAOopo1OcoU(
+!0I#=!0[>DrK?u?rfdDHrKI;IrK[JNR/N?SR$jA2RJrWaS=cLNVlQr(ZF.'I[']e>!j\u.rhfar
+ri7-BY-5+8ZF%*N\\#Pj_oKpDcI(+kf@o'<iSrt^kiqF3m/QJgn*]T2n*]Z5nF?)@p%J+Rq"ada
+rVhBJjSo>9\[8X?Z6?R<gW[F?YbdtCQ`da6_S:ktF)P]/971r,9N"]AK7\W+rdb#D$s$>,;c-AT
+PE:ieNK*pr!K2errt4qN]X=fCY-5%6Z*U[=XK8P+ri?a5WMcSfTV7mFR?s5'Ocb]cNfF!q!JuX2
+L\$=K;cHat='/U/>?kH??XR;OA7]@cBPM=!DJsN8F*)SLH$XjdIt3-'KnbD@N/`m[P*;/tR$sM8
+T:r!TV5L;mXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg1\^V:p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`CENm9^ts';=$F>48h;@3s@`04?Ybgq)]9O3B8uV3]K,\6UXF67R]a87n6-DrCI/b
+8P)NG8c)'Y8H;<\8H;<\;#3rg:/Cg`s%`nq9iFqg;c6Llr_`_nqGR2hs&Aqs"B8;u<)iNjrDj,(
+<`N.#=',9"s&K(u!*/tss&K%t!*/qt!``3"r`0)%=BPQ*s&];'<rGu*;c6Ij;H$Oo;c?Xqr`0)#
+<*&uurDrqu!*B/"r`8kss&f8'rE0)$s&f,#!Er_+>5qeD=^#$7?=75QAS,RgBP2$oCi+'*B4>:X
+A,U$`BPM=!Ci4*-Df0K4EH6/FG^+LZH@($gIt3*%K7nr4L55_`re^Z57?!4dO-,ThQC!r*R$jA2
+S=Q7DTqeBYVPgDnXKAV-YctF=['mHS]"5Md]tV:u_oBg@b/qcJb08,UcHjkbdaQ[qf%AXSfcAf$
+gtgfChr*JQioK4_k3(pkl07L!lg4!*mI0N7rUg-`r:g3crqcZl"T85sr;?NlrVkRO6,IqW?!^lF
+?<pfeF_P;g=Ar*a85WDp@U;2d1G:@=.R$'Y0f1^X8P)EA77Tg,3'KPj4Zto.<`N.#<E)pq;H$Qo
+rVl]prVZZorVQTfr:^$^qYp<eq"ja[pu1oVnA:?/@U<)B?!^fA>[(G1>SC=H>$>$1=]nj.<``@'
+<``=$<E/rr"&_uo;>a5]:jZ,?<E<1'=^#$7?!^lG@:EbYAnPdlCM[m,EH6,BG'A4XI!pKpJqJc3
+Ll..NO-#NgQ'[l,S"61FU84W`WN*&%YHY=>[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)J
+ioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFALAuc~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe5t/o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF@rZpHQ(IrKs.T+YpRg-1!1NAGrg`bQs.'(X!M,bZRN%`bQ^X;.QBmc%PEhDrMMHn>
+K7o5bY->+7Z*OA;&\#*R[^W`R['d<I[C*?I[^NUC[KO"FaN2O'`rF!i_o0O4`l#[0_SEn!^:UVR
+Y-.Z'p8e(l$*1/.X/rG)X/`2uWrT7"XT5I$X8T."XTGZ/YPk^*YQ(j+Z2V!+Z2Cm2ZaI<R]"@sS
+rk/NK]"#8X[']h=s0Vg4s0;[3YkkX(YQ1s+Z2h92Zh_!.[K!Q7['mC=Zob\(\%0,_]Y2%o^qde&
+_Sa=2a3)ZTfA#6DjlY[ejlPO_iS<)8da?LleCE.&g"P6;i8`q^lL"-7q>GmE[f6U(o'>T-lKmj9
+ruh:3leU*ga6N6hn*6RnS!](t>cF?e>\.<LXfSJ'WiW3!>7b7N?!U[O^V@Ls]Xt_`[^EN'rrW&d
+mJZ5JlMp)LkiVj**ou>@iSWAAf$VaeaiDE=_SNt!]Xt_b]!f#S[^NTOo<s*H<)lt"='8[0>[1QA
+?X[DRAS#LfBkqO%DK'T:FEVkQH@('hJ:W?,L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O
+\\#Mg^V[n-`Q-'BbK\>ZdF-Opf@S^0gYL`Di8N_VjQ>Ufl07L!m-X60n*ol<o(2JFp%A@Y!;HHe
+s7u]kr;6Kkrr)KgJcCK)J,~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe5t/o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF=CPo\H%>dGon;^bj+7>SF`m=urcA!ZpiQ^]F)uJGrGr-aF)c8AEW0n\Ec5r;D/0&_
+'4tlnIt<0&KS>#2LPUbAL5(M?M>i88KnkG<L51P=rJ(Q2Q'@MqOoCLHOHG]hPQ$[MP)t]`NJrdR
+N;JP4N;8D2Mu\k:N;nk;N;\b9Nq&,/NqJD3Nr>%;OSOqCOHPimQ'R]#QMm*KP5paDOSFqBP*(ig
+Ockn,OT:RDOT:L@Oo1C<P6-u4PPULEQ'VB88!oX1R@9S4R@B_<StD^QW2d#)Yd(F:Z*:O=ZEL@/
+Vl-JmWN3)%Xfen5Z*^sK\[oGg_SsX?d*pRug>(TDj5oIfl0Ia(m/HAPmeuSbmdKZ8o(2MHp@n=V
+q>:*hJcFa05hiZTZEU[AZEi]IbJ1HgV4W@,Z+%Zd_0VSnF(T;_I!9d/;G`+#Jq&B&J:C<i:K:=k
+;,EI>OH5KaNf8pTMi!Pq-2,^![(!6BYctC;Z`pX7Xf\b.XK/D$VPBo[T:DC=Q^3l"PE1e(N<kE"
+Mi*CJLkgcWLji9%<E<.%=]np5>[:]D@:E_XAS5[jCM[j*E,fr@G'A1WH[U?nJV/Z2Ll%%KNfT<d
+Q'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_Sa@3a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tjk
+l0@U$mI'H3nF?)?oCMVIp&F^cp\jmeq>^<hqu6NmrUg)?s+^Q(~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe,n.o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF6psR::ARce;>F&R;>!cV;>sDj49.J34SLo;3r:u=4T7JH4$5Vd3rD)>3YXP43&ifV
+3CQA+7RKX67Rp$A84cGQ8cD<_84i\Lr(-lcrD<;cr_<GhrD!Gh;H$Ng;?0Yo;Z9Vo;ufkn<;9Jn
+<r>r#<``=%<rQ2#=92K(rDikss&K&!r_rr!<)ris!*&qts&K8(=BAR+r`B,#!*/kp##eK$<`N1#
+r)WhsqGd`!<``@&<EK0#q,[T!=nu2!=TDY)=TDY)>Q.h*>6%k+>6\A@@Us%^B)Z?FAnYmnAn:mL
+#@h=VB4u$pC]8/ZDJa90DfB]:FEMbOH2`.^I=H`tK7no3L51SAM26tEMMmCONK0']OckomQC!u,
+R[]h;StD[LUSO``Vl6SqXKAY0Z*L^C[C3QS]=Ybj^V@S$_oKmAbKTq01saOrdaQ[peCE+#f@em4
+gt^`BhVd>Oj5f=`k3(pkl0.BslKdg(n*ff9nac>Ep%J.Sq"ambrqcirrVc`pcMn*cH<ac]?!dM9
+/:hqX@Tur6;F3oO<a]6@3^Y\[/i>.C5<LSU1e:2.7n,p97QECe5<_7o4BDA[s&B"r!E2tnrqcTn
+rr2lnrq?<bqtp6fq>L'hq=sCPr:oRO%e7H#Eai<Z?<plC?!LT<r`fG/r`fG-r`T8'$s-G/='&F'
+=&rC%<E&in##\;q:f'q`o2'm7<)lt"='8[0>[1QA?X[DRAS#LfBkqO%DK'T:FEVkQH@('hJ:W?,
+L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O\\#Mg^V[n-`Q-'BbK\>ZdF-Opf@S^0gYL`D
+i8N_VjQ>Ufl07L!m-X60n*ol<o(2JFp%A@Y!;HHes7u]kr;6Kkrr)KgJcCK)J,~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`aa.EJtej2U7n:OT_kA5T)G,IS,SrQRkgA"S"6(?S",q7R[9D.Q^F))Q'IPtQ'7Ao
+N/!%@KnbDAY->17['d9IZa[?O[C3KN\,Nc=ZaI-FZF'V>s2PtraN)<?a2Q!8_ns@4`l#^1`PB4&
+]XtALriH.#!NN3qWrK+"WqrdqX8o=#WWB0#ri?%"s/cC)X/i?"XoGO(YP,4#YPYR%Ym%G>[C*NT
+rjriV]=PP_[^NQLZEga@Za6p@Z*1A1YR[qDYd(I=ZE^[?ZE^^AZi761Zhh'-[JmN4[/RE3ZimeF
+\@T<O]edF=^qmn*`5Ta:b0%rSdad%,hr3PPhVHr@g=Fa$dF-Fke'uq!f%Jd3h;@2Qkj.[,p%s=?
+[f6U+p$1o1lg*j8s"sZElJ9sfa6`Bkh<1BNR#m2mOJ\\B>@h3JXfJG'WiW4(>?YHB?!UXN^q[Ut
+]t:ha[^EN's"F6<p?1W$kNV9ski_-kjlPXcio8kOg""Tuc-=AN`l#[0^V%4j]=>AZ['d<M[C,V7
+s&45C<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7OO-,TiQ'[l-S=Z@H
+U84ZaWN*&&Yd(OA[^WfZ]Y;.s_SjF6aND]McHjndeC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3
+nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL];l~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L``ckfDM!CmL%'cmK@b_NF9$CXFT$:XFSg1^F*)O'FU<,2F)l>AEcH)>rGWZmE,ff5
+DJEftBP(smCk%"hJqeo1KnbJ?Lkktc!/^]1!euJbre:?,s-*\NQ'7>mP5^UDO9q)7PED#jPE:fb
+rJ^9)s,?u;s,-l9p5T'1p5T'3qi1E3rf@)@plGH:s,d>FPQ$jGPRE\<P)t`cOH>TeP*,^)!g8\.
+rf@,CrK.5GOcb`erfI8FOcfU*p6,K@rfdAH!L8uMQi3<ORK&`bR[]k>TV.pNU8=fgXT#@-XfSS)
+X/i4urhodps/H%!*NZEHYd(L@[^WfZ]tqV-bg=kkg>:cGioT@el0@X6mJlVSn,D_cn*ol<oCV_L
+p\=OZqu$ElJcFa0.GMDDZ*UdD['SuMbJ(?eUn<7*Z+%ZK]m>l`D.[a&H['a/;c&4$JUi@OJH&CN
+:/k.i;,EI?OoCFGNf8pTMM[Gp./2-&[)T;QYd(F;ZEUO7XfS_/XK/D$VPKrZSXc1;Q^3o#OcYW`
+NK!jp"c/%lLkgcWM#UD"<*!%$=BSg3>[:ZC?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^nI
+NK93bPa.T&S"-(BTq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeX
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`^E9f9htL]s%r5_k"tqPpe^uPr&k!@n3$P/r]9m;q`Om?!':$>r](iS2`WiY3'9Vu
+6UXC47n?0C8P2TH8P2QH9)_E\8H)3\;#aDk:]O;i:B"#k:/=V\rD!>erDWVls&8kor_rMin5]Ki
+s&K&!r`B,#p/V,lr)Nbt!EE+r<<-(u=9Vc,<`N.#rD`Vn!`i<%r`')%<E3!ur`9&!!`W0#r`B"u
+pfIDrr`B,%!a/]1r`fD+r`]G-=^(]-"^>5;?t*XFA.`<\@:E_U@:*GO@q9+^B4u!nrbM^SDJsE2
+rbrNkF*)VNH[L9mJ:E*$K7nr5L51T`M?&S6N'`MaO-#KePE_>uQ^O;3S=Q7DTV8-VV5C/hWN3,&
+Y-5(8['[9N\[oAb]Y2(q^r!t+a2lEHbg"GZd*gCmeCE+#fDaD+g"Y?>h;8.h,3%YDjlYahkiq?s
+lg*p)mI0N6o()DDp%A%Pp\4IXqYL-frr)iqb5XW@H!Xob?<plD?%I-4@9Zf4;+!lO=("O&4$YVW
+0/bRN5<LSU1e:2.7n,p97QECd5<V1n4'#?]<`E'u<;fbgs8N#ps7cNerV$0WqW@SFpBU6,PB12=
+BO:XCr*0Y9>[(H<>$>$2=]ea+rDsS5=&r@$<Dual:f:.f:Jak`:\.E_;gMDD<``C+>$G6;?=.)L
+@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!OUOckroQ^F84StD^NUo(&hWiWA-Z*UgG\%0,`
+^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*)s*t~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`FO7KKrpo>U%k;OT@fb5ReN<ORf8cXS=?#ISGSd/R%'P5S=?":S"#q:R$X,+Q^=#)
+Q^*o&Q'@JtO,SjIJqSl6N3BCeYICpI['I'GrjDd5(U^`YZa$jB[^*0C`lc9Ba2Z->`Pod6`W!aT
+`;[XS`W!^Y_8!U`XK/?"WqiXkWqrdoWWB0#r2U((Xfee,X/rH#Y55='Yck8/Xobf2Yl:j)Yl:m?
+Za@-L\[oAa]"#2V['R'CZ*:J+YPk[,Z*L\7ZNme@ZEpmCZEsD7rNu^6Za9Y<s0Ma4-+::m\@T>c
+]tM1r^qmn,`Q60CbKS5VcI(.lf\>39g"4a'e'ZVCdJqN*dF-Oof%/O.gtprJjlu.$o(N$5s0hq3
+p$2#6m-Es9s"sWEl.sjea6N6ip#_mhcFf+(Oe\S@S7Z06XK8D'WiW1'>ZtQD?<p`9^VIRu]t:hb
+\$i])rsS\hs6/\/kiqBuki_s-+R%tKio8hLf@86pbf\&J`l#X/^V.7k]XYJ[[C*?L[C,V7s&45C
+<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"6.EU84W`
+W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL];l~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`E?klEJB!tL%p>lK@keMFT6F[FT-=_FE;O#FT-CeF*2PFF`_a)F$4VdEcH&=EH,r;
+EH#o:EH#i8ChdWrAS,UiCk71hKS>)8L4tA:LPUbALPUeAL4k;8LkUJ6PEqAsP`q5mrK.YSOHGZg
+OcbfjOcb`dNf8mSrJLK1rf$f8rJUc:NrG%<N;\b8N;SY8Nr4n7Nr=t4NrP1?OSFn:OT1ICP5UUK
+PEM)kOHBI&s,d8Cq2bT;r/gr@r0$r>rK@#@rfRDJPa%AqrfdMMQC!s9QjT7MS"#q<T:r!SUAgo"
+V5L8lXK8J%WMZPhVP^8gVl0Nm-`O,HXKAY0Z*UjH\\#Si^r4IDe(EF2iT&t\kj%I!m-O-.mdBQ3
+mf)YbnF?)@oCV_Lp\F[_r;HVGs5Eu:g#ofM[C!?L[-HDi]sY&?T7WE8[`$%pH'>+oBQ7j7GBS(,
+;2'XRJ:iB&Inrj8<)Z[l;,<@<rf@;DN/W[QM3.`hpX6aXfWVK_ZEUU>Yck.1Xfnn/WiDtmUS4<N
+S!f\2QBdYsOH5B\Mi<ROM2M7fo83KGH;mmF<`iL->?kE>?XR;O@qB7bBPM=!DJsK6F*)SLH$Xjd
+It3-'KnbD?MiEdZP*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-
+g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`C*6h92A:F;:n_D48h;?47YN33s7T+3]]A$3rD);4SV#<3?0t92`NiY4@M\*77Kd<
+84Q6C91_]I84cEF8OuGP8-_XU:f1%c;,R9gs%iYi#>\)j:/4S\:Amri9iP'i;ZB\q;Z'Jd<:Nug
+<rQ+s<WZ9%<rQ,!<;ont<;0Dl<;oqu<W,u$=BAL%r`/ttpf7;os&B&"r`'#!<E8uu"'&B%<W6%l
+=8Z2#=8uA&=o)>%>6nD8=^#'8?=.(=?4'qD?=.&J@q/tV?iF=C?=.&J@q9._AnYjmC2@^(DK#Jm
+&TMc/F*N"XI"$X!Jq8N,L51Q`M#N8MMi*FPNK0']OcklkPa.Q%R[]h<StD[MUSXjeV^&1@X0&P.
+Z*LaE[^`lZ]=bkk^V@V%_o0U9aihrRcd:(geCFNK&_G[ggY:N>hV[8LioB([jlYb*kSrdOlKdg'
+n*ol<o(2MGp%A(Rq"X^^qtp<irr0k9/\cOc?!^lE?XI,lG%tGi=B&-a85WDq@p(iZ93Nu,1d=/d
+4Z5,f8Ol9?77B]F3<),G5!:ti<E<-!<;]\Os7cNgrVQN\qrR\Pp]g<.PB(,7G5PYG>RFbA>[:Q<
+>[(E8=T)D&<XVo/=BJX*<)cjs;,dEjs%iVjo25NdH;mmF<`iL->?kE>?XR;O@qB7bBPM=!DJsK6
+F*)SLH$XjdIt3-'KnbD?MiEdZP*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8X
+d*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*
+J,~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`FjIQKrgi=U&1MOT@fb3Re`HORf8fVS,f&XSG\lSRM;0YS"#_3R$sD/QC!r'Q^*o%
+Q'IR4PS91=KnG#0KnYJfY-51>Za7*M\$u@D&$rXL[Bm3FZa-jB`Q-!;a8O!caMl-:`50C0`l#^4
+rkelT_S3aqrMoXlr2Tdtr2Katri5jr!3H1#!NiO(XT5I#Xo#:"Y6(l/Xo5F&Y6;#1Y->/0Y6D/8
+ZEppGrjETP[C3HKZE^X=YHP+3Xfee.Y-5%3YHRo/riZC.ZEjJ7qQp+,rjDa4rj;a8rO*!@\@B)\
+]=bhkrkT>e`5]j?bg"GZcd'h_d*gFqf\"d(e,.N-d*L(cdaQ[qf%8U0gtq#NkNhU+o(mq;[f6R+
+lgO<0lg"KL.K&f&hUSUFlLXc?jIjrH]o88@@@s-]ARM^CXK&D&XJoB.>@CoG?!:A0^B_Hb]XkY^
+[^D.q/GnW1l07Bqkj%KtkN;$olK.'ciSE2;e'QFabK.]C_ns7)]t:tk\@K,W[C#q@o<s-H;c?[s
+<``C+>$G6;?XI5N@q9.`BPD6tD/O<4EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo()j
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DD
+o_%nWp&Ojcq#C0iqY^6ir;QZerdk*)s*t~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`E[+rEJ8stL&6PlK@kbUEqXVSEr^=ZF8p=^F8U.ZFoHL]F8p=nE,ou?EcH&<EH#o:
+EGof8DuO\eChmZqB4PXgCk@1hKS>/8L]3,HLk^_@LPCS=L4tA9KSGYSPEM/oP*1rkrK.8EOcbii
+OoCLIOcYZaNJmdns,6]3rf-i7s,I&;!0-c4r/C]:o8Wd1s,[2?"-8J&O8P+9O8b4BOckn+P66u1
+Oc]L%mu[R3s-!)<s-!8CrK75GPa202"-o1<Qi3<ORK/iVSHGIVUSRmcs.][lV5L9kWX#N$Vkg/d
+VPjEjs/5mq+fVKBXK8V0Za7'J\\#Mf_TC*Pf@o'=iT'"^kj%L#mI'HBn.G*Un*]Z7nac8Bo_/%S
+qYU3hJcFX-2:_<3['d<M[']/Rc+^ThVOiC*Yd_Qe[X+FAU1eL^:Npu)<)J:#JUrH(J:C?j:/t7k
+;,C*gOog`+O8b(=Mi*Vr"S^?YWnmZY.C6:aZEUO6Y->+4XK&7sUS=HRSXPt6QBmc!P)t`bNJrdR
+MM[4ILPUcXM18E%;cQk!='/U/>?kH@?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+L51VDN/is]
+P*M?#R@B_<TV8-VVPpMqXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>Uf
+l07L!m-X60n*ol<o(2JFp%A@Y!;HHes7u]kr;6Kkrr)KgJcCN*J,~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphT0nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`C39g9MSLK;:n\F3r;#<4T%;44T.A:3WM2;48_5:49%;`2`<WU3&s#h6psL87n?3D
+8kV`H8k;KE8kDTF8Ou?B:\IWb:BaHf:JX_\r_NPh##@uh9iFqfpJ^`apf7>pmoB?ds&/qt<W5ts
+<W?,!<Vof*<E<+#='&F&=&r=#<:<ic<WuK&<)lt"pJq/mr`95)='&O.qH3]!"'A]0>5h_0>$G6;
+?=3Y>!+5\1$t*LQ@q&hP?!CQ@?t0+Gs(24C'kh;rC27X&DJjB3EH,r9EHc\SH[UJEJd@!_L51P?
+M2I5jN;neLN/`jZOHG]jQ'R`&R@B_;T:r$Vr21d<WN*##YHP4:['d?O\\#Je^;.M!_8=+0a2lBG
+c-FY_daQ_Ff)F85f\,$7h;-rGi8WeXjlPXfkir*3)!gPTmdKW7o(2MGp%A%Qp\Oa`qu$BjrVjY5
+"MJr=?!dM;-!ji1GALbo=&`'a85E;r?rf<W:1Q(<1bCmS4>o#e8Ol9?77B]F2ul)?4U=,3<E<.!
+<)lor;pbRCrq66Xr9!k^o#6f6@oIVX?N+71>lS(8>[:W?>?Y35=oMP'<rZ;%<s_o/<`E!t<)HUm
+r_Wen:esnao21!8;c?[s<``C+>$G6;?XI5N@q9.`BPD6tD/O<4EccGJG^=^bIXm!%KSG8=Mi<[W
+OckuqR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JQj5f@b
+kNV6rlg4$,n*fc9o()DDo_%nWp&Ojcq#C0iqY^6ir;QZerdk*)s*t~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l2V?N.dgorh97_m[r1(pmV,MqO7GRqj^9JR[]e8R[BP4R$a;1R[K\5R$X2+Q'[`#
+Q'@PuPE_;qP*:ucLOt)/KSGDfYHbC=Z*h'I[C3HL[C!3GZaI3I[C!rl`5Td:a2\,!!6"lU"iS6n
+_SaCl_Zduq^q[OrrMoRjri,stq5OLsXK;9!riZ(!poaY!!3H.$ri?R2XKJb0Xf\b/YHY::Zhq-0
+ZMq'/YHI`(qQ9k'Z2Cj(ZM(U)[/.31[f<fP\@8rW\@K2_]=bhl_84",`lQ<HcHt#:d3I)he^rC'
+eC;srda?Ihd*L(cdF-Ile^i=(g"kNDjQGjrnb@\8[JpEtnF,c2lMgf?rU]=3f;cjTp%\%;Yg\rE
+NFS2]TV.fd@'?]6Wi`>'WEWV4@:*>H>?SbV^V7Co]"#/V[>t8?qs".Fl0%?qlKdZsk3_R%jl>=Z
+gtC6+d*KqYaN)9:_SO%$]=kke\[]&T['mBMo!\QsF];@A='/U.>?kH??XR>PA7]@dBPM=!DJsN8
+FEMbNH$XjdIt3-'L51VCN/`m[P*D5uR$sP:T:r!TVPgDnXKJe4Za@0M\[oGf^VRe*`Q-'BbKS8X
+dF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O-.n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+
+J,~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l21rEH-M\re:9'mXs2Erc/![piQ7OqK*$bFEM\IF*)MEErL,AEcc;AEH6#;EGof8
+DfBW4DfBW5E,B?(AS#CaBPW-MK7el3L5:P>Lk^_BLkUV=LPLV>LQn!cP*D/prf[AGOSt=ANrkE*
+PPpUNP*(fcN/`dTNK&nqMu/J3Mtr>2MuJ\6NW+t1NW"n7O8k=@Nrb9#rf6o;s,d;Erfd>EqiC<0
+s,m>CnWEd5qNCoDrfn:cQ'@MuQC!o'Q^F20S"#t?T:hpRV5C-fV#mQnW;`drVurrrVl0Nks/5mq
+s/H$u*ilBDYHbF@[^`o[]Yhn;db!4.hVdGTjlbmpmI'K5rpg$W%drfSnF?)@o_%tRq>:*hJcFU,
+/CX"/['mBN[C#AXcbHokW1\d/Ydq`i[=t/mOD.L-:O%,+<DeC$JUiB(J:RVp&62\.;,C)QP*(id
+O,T!VMi*Vr0)<u1XOj_]YHtO>Za$^9ZEg^;X/`+qUnOHQSXPt6Q^*buP)t`bN/NUNM2I1IreU-%
+s&4&><E<1'=]ns6?!^lG@U`kZAnYjmCM[m,EH6/DG'A4XI!pKpJqJf5M2I7OO-#NhQ'[l,S=Z@H
+U84ZaWN*&&Yd(OA[^WfY]Y;.s_SjF6aND]McHjndeC<($f\5*8h;@/LioB+]k3(smlKdg'mI0N5
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l1A<8PDiTk#'f.rAsj<r]L'>ofW48oK!"73rM/<4Sh,S3]T/X3&rrY3CH5)84Q-?
+8P)NG84rkPs%35_r^lf[!)NSj!)NSg!DZGh:B+,h:&n#e<;BJc<;fhr<WZ9%<q',g<;oku<)riq
+oMl&o<E<1%<rH#!<)rlrnl>Whr`/u!q,RDns&K)"s&]2%rE9/&"'J`.=o;A&=^(`-"'o5?@JsX8
+@/XCI?t!JQ@UWVN?t!MS@q9+]AnPaiBPD2[C'AEjDf9T7rbrKlGC"R^IXcp#K7no4LkpnFN/[aq
+req&@Nf]?cPa;<8%%*KQSY2^RW2co!WN,rs,-%`IYd1UB[^N]V]=bhk^VI\&_SjI7aND]NcHjnd
+e'ut#rR`XRg=tH>hVd>Oj5f=ak3(sll0@U#m-a?2nF?&?oCV_Lp\4LZqYU3hrVlf1s"1[#J8&@s
+?X@&DLO!cI?<C0)6V($V@pi;"6o77c-o<M>4ZbPZ8P)EA7n,p:r\t<K5!;%j4B>K_<)ZdrrDU<-
+pAXjcmJIjn`fkIR;fZ/K?!^`?>[:ZA>[:W>>$5$3=nu/,<E<."<)lmp;c?Tn;#jDk;"@K`;fu&>
+<``C+=^,-:?=.)L@Us%^BP;-rCi402EccGIGBnL^I=Hd!K8,/<MN!OUOHPinQ^F53StD^NUo(&h
+WiWA-Z*UgG\%0)_^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hr*JQj5f=akNM0qlg4!*n*fc9rpg*]
+o`"Lbp@n=\q#C0iqY^6ir;HTdrdk**s*t~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`PcM@Mi!r%U&L_VT)bP]T@oh1Rf/`ORf8fRS,f&XRL,IPR?s;-Q'du,rL!bTQ^!j9
+Q2d$fQ'7GtQ'7JrOc>3OJ:iK+Mls=k['[6J\@&]LZMh*0[JmK5_o_hr"i\O%`Q6."`WX2u_o'@i
+_uIaU_Zdll^V6_Jl_sudX/rE!WrfE+Y5,3rXob`.X8]4!X8]4#XTP`.XfVK'#Hk;8Z*L^AZMq-/
+YQ(d&Xo>EuY5,:.Z*L^BZEggCZEjJ9s0Va4r3lO4s0s>b]">Vf]t_D"`5]pCcdC1ie^W+!eC<%!
+f%AX,f@JL'eC;mnrQtMj&(8tYf@\g3hVdARjll.+rdk*YrrM`ZrpKmTli$i=o]tMgXN0W!p[I4G
+e=!%jQBYjPTq5LsY-"b)Y,eS&>?tKC?X6rA=i%ng^V.:l\[Ju,s"F9?s6Ak5kih9skih3umH`lo
+iS`GCeC)^gbfRrG`5BF,^V.7m]XbS_['d9L[^G\7s&45C<E<.%=]np5>[CcE@:E_XAS5[jCM[m+
+E,fr@G'A4XI!pKpJqJc3Ll%%KO-#NgQ'Rf+S"6.EU84W`W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WL
+cHjkbe'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+M#Vu~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`Pc,!F*3!2L&QbsK)gT%K@tkSErU4VFSBkQFT6CfFEM\IEcQ/=EVsh[F)l8=EW0qW
+D@1?#DfBZ6E,TW/C&MTGAo!!OK`6]0Ko(V@KSKJ]!JZF0L&mI'rKI\RP*D/nPa%;nP)th*OSt=A
+PQ$[GO,f8"N<"q9Mu/J'MuSb6NW5%;NW+n6NW+t9O8k7=Nrk?$NW+t9NrY:>P5gXHOH5H_rf?T2
+!g/S+plYT<s,d>DOnb(>PQ$gEQ2d'`Q'[f&Q^=)-R[]e;T:r'XV5L8kW2KQls/H!rs/H!qrh_$?
+W2Q\pWiE,#XKA\2ZF%$I[^Wibaj/;af\>9AjQ5Ofl0Ia)nF?MK&Fo5WmdK]:o(;SIp@nC\rVhBJ
+hZ#.Tm('O4[C*HMn))O1[]l^'KU9!U_SNU3T65KpE,JKtGB?PVK7e`*Jq8H&r_Er&<)QRi;3R0*
+OcGK^reup<1&9;4\'21_Z*UaAZa$a;[Bd$=X/W"nUn=<OS=5k5Q^!_tOcYW`N/NUNMM[4ILl$rY
+M>pM#<)lt"='8[0>[1TB?X[DRAS#LfBkqO&DK'T:FEVkRH@1-jJ:`E-L5:\EN/s'`PEhH$R[]k>
+Tq\?ZVl6VsXfnt7ZaR?R]"G_k^r"".`lQ9Fbg+P]dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+p]*~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`Pb2;8PDnU;>sDc;#jMk;;"eB3rV5?4Sh/44T7AA481f93s.T,3]d7%"$AY,4T.>G
+3]oJa3B/tr3!)*/7fGp`7nH<F8OuEEr^cuZ!DlYb:]aEh:]!oe:]=,f:&e2m;ZKep;ta2g<Voh_
+<Vobq;ZKeq<<6-%qc3Yqr`9&!!*&nsrD`Pl!*9"t!E<(t<WQ3$r)Nbrs&K%t!*0#!!*B,$!*T/#
+s&o8%&6W1@>?Y38?!^oI@U`bS?srtB"(G\JA,B^8A,Ts<AcHECBE2cGC'ABiDJsK5rbiQkFa8=]
+I=Hg"K7nu7LkgeDMi<XVNfX-uBTA7?Pa.Q#Q^=).S"61GV5^MsXK/D%WMur#YHbIC\%&rY]">Yh
+^V@V$_o0R8aihrQbg+P^e'uq"g"G*6gt^`AhVd>Oj5f:_k2tjjl0@U$m-X61nFH2Bo_%nOp@n@W
+q>'pbrVaA."LE-">[RD82Mc^!AR8M>;F<uP>%(f=4@V+b0fLm@5<V+`2+L5.7n?';7Q3:d4?bnk
+4$6PE<)caq<DugqTE"N^$M;B&F(8Ee?!CW@r`oJ0"^GA>>[(G2=o;>1<EN:%=&i4!<E)go;c<Tl
+s%i_n;"@K`;gMDC<`W:)=^#'8?=.&J@Uit\B4u!pCi4-0EH?5FGBnL^I=Hd!K8#&9M2R=ROHPfm
+QC+,1SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCN7(g=k?<hVd>Oj5]7`kNM0p
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk**s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`F3\5KTM`&T^eZ%T(SQPS+iBNS,AcZR[]\6Rf/ZRQkPmVR$O,-QBmc"Q^*i&Q'ISt
+Pa232%$cg0KReT(L5;t=ZaB_>'t:TW[C!<I['?sF`P]^8_oK^;`l?'u`YHG3a2Ps8_SjC1_o0R4
+`l,a4^qd[rlDXibX/l/us/Z1%!3Z."riZ4%ri?(#"08H%X8T+"Xo>C'XfSW'X8]4*Y-5(7Z*:G2
+Y5>@$X9,N*Xo#:$YPPL'Ylh;<Za0S:!4)U1!OT96[f<c6[f*]6\IH-^]Y2%o^r"(4bg=kjr7V&#
+qUc#'e^W'sdaA'@'@G7UdaQ^sf@ej3gtpuIio]S!qLS[UrrV`ZnG_kVm/?r>p$:YkXiTl&p@71F
+e=*LtR$;'RTUoFtYHFt,XfJM&>?kB@?X-lA>/A"g^:h1k]!o/.rrr<"qX*P3robTml0.F%m-<]l
+iS</>e^2ahbfRoF`59=+^:h.l]XbS_['d:?[IUbU;H$Ln<`W:(=^#$7?!^lG@Uiq[AnYmnCMds.
+EH6/DGBeF\I=?]tK7nu7M2R=QO-,TjQC+)0S=ZCIUSOfdWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]N
+cHsteeCE1&g"P3:hV[8Mj5]4_k32'olKdg(mdKW6nac8Bo^qhLs7QHerV-BgrqcTjrVZZno_sFA
+M#Vu~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`E-G_Ed*!2K^j]BK)'EeF8L(PF8U+^F*)GFr,hjW&TMc0EcH);DfK`8EH#l8DJsLl
+D_>d=AS#C_BkW*QKSG58LP^h@M26tCLkUS=PEM/pP*M5sPEV5oP*(ihPECrhOSt:LP*;#lP)tie
+NfB!VrJUT4oo&j-rep`6rJ^f;rJgf8s,@)=NK*pt!KE-=NrY4<NVeb5O8b7>OoCI?O8P+=OnOn2
+OT:LAOoLUEPPgRDPP^UCPn01IQBml)R@0M5S=cILVlBZqs/ZI*W2Q\pW2HQkWB[;ZVl-DiVl6Pn
+WN)u!XK8S.Yd1RAZa@-N^r=LBdad(-iSrq[kNM3tnF?/Ep@\%HmdBQ6o(2JFp@nCZrVhBJh>[N%
+df-`S[3P(re&Ai%WM5*6Zb+#h["G&oL1bIC:jI8-:/QXsJq/H(It7Mos&BM,;,C,RP*(idNfB$W
+N0!uhqU<1%]sP#KZa-mCZ*:I@ZELC1WMQGeT:haER@'>-Q'7AnOH5B[Mi3FLre^W1nqhio;c?Xr
+<``C+>$G6;?=.)L@q9._BPD3sD/O<4EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo1/k
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkiq?slg4$,n*fc9o()DE
+o_%nWp&Ojcp]1-hqYg<ir;QZerdk**s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`C!*e8PJhSpJK=7pcAC9r]L!<p,i@:48(]93BI.$r]:$?s#g6As#U-@'KA*22`N`W
+3(-5-84Q6C8kMWF8P/nP"%c*^;>a5j;>X/i:]=/l:Jajc:B+)m:/=Y\:]4#a;u'Dl<<-"n<W?+t
+<<-(u<W?+o<W#hq;u]hr<W?,!<<H9%<)ifrs&Ahps&Aeor`8kqpf@Dp#?4](<E)su<rQ1n=92Q.
+rE0)&rE9G1?!UfG@U`dF@fBd;@UimH@K0d;@q,FIs().@s(;:Es(VLJ!c)Ugrb`itDJa91Fa&1[
+I=Qp%Knb>;LPUbCN/`p^P*(idN/is^rfdhWQ^F/.S"-%@TqeNcri?+#ri&PkY->7>[^WcW]">Vh
+^VI\&_Sa=3aNMcNc-FY]dF6Xrf@em3gYL]Bi8EVTjQ,FbkND'nlKdg)n*ol<oCMVIp%S4Uq=sd]
+qu-Klrk&16Y&@u[?X<Y;2d_>fEFrT]<E)@W;d*O9<'3]-4>8]N/j;B[0f;Np8Ol6=77K3q3'BJh
+4Zbc,<`N'r<E3!t;j%(cp;iJ=A8GOX>lJ%/>QeD?>[:V6>8^RG=]nj.<`iI)=&r:$;cHas<)HRm
+;,L.frD<&^Io93D<*!%$=BSg3>[:ZC?t*VVAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^qJNfT<c
+Q'Rf*S"-(CTqeE]W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tml
+l0@U$mI'H3nF?)?oCV\Jp&F^cp\jjeq>U6hqu-HlrUg)?s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`F<n?K:/;.T_>#&ScG2CRf8fTS-5:NS!oiGR0o:JR?a/,Q'dr-QN!6VQ'@W#Pa%N"
+rKI8Grf\1[MM6\5K7er<ZEq'M[^<EM[C*?G['R-Yrl4uW'Zn>6`Pfd9`Q#j:`l>s7_Ss@._nuDk
+#K+Kt_Sj5U62mhOWW0$sWr9!qXSo7&Y-"i#X8f1%X/rG*r2^+'XK8J&WiQ-#rN6.&riZ.#riH+$
+!j8Z.ric%"!O8s/Zi.92ZN.E4[f<c7[K*f9\Gj&=\dc9a]Y;+q^r"+6cd^S%rn[e6gtC<2rn./%
+$J<t\e'laoda?LkrmUnss4@;($JXCoiSrkXl1"HFJcE:\#P[ZTnaQ#9mf!/-p[7+qYK?/*p[R:F
+eXEV$S<IEUTV#IuYcb(.Y,eS%r`ftB?X6uC>/A"h^:h1k\[Ju,s"F9Lna>Z-lKRNul0.O(mcrlm
+i8!&=e^2^gbK.`C`507*^:_+l]XbS_[C*BK[^>V5GZ%I=<)lt"=BSd2>[1TB?t!MSAS,RgC27X'
+DfKf>FEVkRH@1-jJ:`E.LP^nINK90aPa.T&R[ftATq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEH
+bg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@
+s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`E6VcEI<?8K_C&CK(a6^FS9eSF9?T+FE@D&$?C30E,ou;EH-&=rc/6_DfK`7DfKaq
+DZ"E$DJX$"ARoCbBkrBVLk^_?LPL_CLPCV?LQn'gP`q;sPE_8oPEV,lOT(CJOcYWeO-#KcrfRMK
+P*(igN^5u,N:i,/MZ/P5N;/D2Mu\k9N;\_:NfX1"rJgi;!f`5#ooK*6!frG)rK$o=!0R8D"-J\,
+O84n0OoCOCP5pdDPQ-jIQ2[$HPlR-KQP,[RR[T_:T;&-\X0&S.Xf\V%W;NXoWrK%!Vl9Nk32igU
+WiE,#XKAY/Z*LaDZa@-N^;J"7cd^V&hr*JQj6#UnnauPMq"OIOmdBQ5o(2MHpA"I[rVhBJh>[Z(
+\$i]R[f3Z`mblR6\[/<1Kpf<[_8!=/UND6)EbnQtGBQ\YK7ni,Jq8H%:Jahe<E&lo"Hnt2OH0="
+!K2nts!d]j^>uN*Z*LaBZEpg?Z*q!CXfA=sV50cWSXZ%7Q^3o#P*1ofNK&jSreg]3s+p6&GZ%I=
+<)lt"=BSd2>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-jJ:`E.LP^nINK90aPa.T&R[ftATq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-a?2nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`C*-e7nutV;#=,7;"csL48qA<481l;48:i:3W2#<48h2?48qA@3rD)>3<hE"2`WlW
+4oRqV8P2QH8P)NGrC?obr_`\l!)`Pg!)NSjrD*Dfr_EGg!DZGi:'+-U62X[W<:j/k<`Susr`/u"
+r`/qus&T8&<E8uss&8qss&K(urDiku!*/bmrDihrq,RGq"]SK&<`N/n<rZ1s<r?%n=T;P(=p8&2
+='&L,rE9G2?!guKAS,NQ@fg+J@/aU8A,Tm8@j,AmA7T7`AnPdjBk_?uCi+'-E,]]4DfKlCH$b!j
+K8##4re1N2Ll.1RP5^\XP)t]aOH>ZiQBml*R[]k>T:hsTVQ$VtYHG"/WiWD0['d?O\[oAb]Y;.s
+_8F42`Q63Fbg+P]dF$CleCE.&g=tE>hr*MSjQ5OdkNM-olKdg)n*oi;oCV\Jp\4IYq"agarVc`'
+rs#QB>[C`B?iF@fLjX5V@9Zc26qL<^?sQ\n8M`C\2)HpM4?P>T8P2QE7Rfg82`Nc[5<V.k4B,?]
+;c6Ror_nsZ#kl9$EFXT#?=!M9*aE#W>[:W>>$G-3=]nj.<`iI*<`N(!<)lpt<)HRmr_W\p:]=2]
+;0Yu;;cHat<`iL->?kE>?XR;O@qB7bBPM=!DJsN8FED\MH$XjdIt3-'L51VCN/`m[P*D5uR$sP:
+T:r!TVPgDnXKJe4Za@0M\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCQ+J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l2G4LPD^pTV1nKcCP$(qjIMQm@+$Dr1!bUrg<hTR@4&@s-O(YQC*u+QC*r)rfn@c
+Q'7DrPa.GtP*M;rOcG?RK7JW.K8HqC\Gio9ZQZfb['Rck`Pf^6_o'L6`Pf[4`l5s;a2Z->`l#d5
+_Sa71r5/QP_u2k&VPpHaW<0*#X88grX8K!sX8T."X8]+"X/brq!3H.""0AN%WrB(!WWfH)XKAV+
+q5jb#X/i?#XTu&4Xfek2Yd"&/rNQ=,"1#;?Zi%31Z37MA['[7>[K*f8\,j1QrO`fW^VIY$_T'dH
+e_B$Bj5T"Rg=Y$Vf`'P.f\+p/e^`1Kdh^B\e'upte^`=*g"Y<=i8WhZkN_I,qgndXrs/;co(2A>
+n*^/S1AC;#fs&Tdp\==>Xk&uBNgl2@TV.l\@pQ7=XKJV(X'/b5@UEDI>["tZ^V@Lp]XbM\NW1@%
+s7>XBmHWs$lg!a'naGf(iS`JEg!e?qc-",J`P]R.^qICo]tF?S"gk\F['m@4[=(nM;cHat<``F,
+>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/sR$sM8StMgRV5L8lXKA\1
+ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l2(kDK(5XKS8rLc@Y\/"`nd,F*)NsF8U.XF8p@[EX6Z(EH#r;Ec?'uE#<M4DJjB2
+E,KT3E,]`4D/!WoAS,RdC5%EALC&cjLPgnDLR+3irfdAF#*Y:8P*(okrK7MMP*;&kP*(igOH]U)
+!K`HB62lfBN:i,/MZ/P2Mu\k1N;nh8N;eh3NrG">NfT8!NrP(@NfT6_plGB8rfISOOcb`dOH5Ha
+Ocbb&OoLUEOTL].OSt=DPEM+.PPgXOQ'@MuPa%H!Q^Ic='UY;WS"#q?U8=llYd(F8XK/>!WN#ir
+"f\N$WMlfnW;ihRWiN5'Xfek3ZEgmH[^WfZ]u%e2c-k.qgtgiEiT04jo(MnUq"F=KmHj6/nalGJ
+p\=R\rIP"(rrpWY[C<WRrj=3Ci6oWUZ`KmTRC0]E^p8WhFFn1GCeo>$F\Pb0JqAN)JU`/F:et(k
+;uTYoP5gUIO,T*YN/Wht1%s,2m^9C,Za@!DZEgaA\[/N@WMl\jUnFBOS!fY1Q'ISsOcYWaNJi^P
+MM[1IM26uYM1&6!;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^Y
+P*;/sR$sM8StMgRV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oe
+kiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l1>98k`#Yp/(Zac;=-orB($ApcJ75!'Bg6!]`;&r]C'>r]:iW4$,Jb3]oMd4$#A\
+2E!QT3BK]#8H)6]8cME_8c2Eb;>a5j:\RZi:Jah]:/+O\:AmH^;H$Ln<)`Znoi:fgs&]5$$s-J/
+<)lq!<``C(<E8io!*0"tpJq/ks&8bn!*8qrs&K/#<;T\q<rZ1r<rQ2!<WuQ*<``C*r`T/$!a/W.
+rE9;)=BJ`)=q+\A?t!PWBP1pe@UW\QraGb7r+#b;s(24Bs(D@F+),J*Ci"!.DfKf;EcZ;EGC"Ua
+J:`H.KnP)3L51\IPQ$hZPE:f`MiEd[PEqT'R[]h=T:r$VVPpJoXfnt5Z*:I;Za@0L\@T;b]Y2(q
+_8=.0`lQ<Gc-F\`daQ[pe^i@)g"P08h;7&KjQ5OekNM0qlg4'.nF?&>oCVeOq"aa^qYU3grVlf'
+rs#E=ARAeP?iF@iLja>X@9cl46qL?_@9unq8i&F[2Dd!M4ZkGV1Ijr)7n-!<2`NcZ5<V.k4B,<\
+<)Z^p;c?SVruC[LP&Xog>$bKA?<poC?=$lD?!LN9=]eg0=BAQ&<tA>3<)ust<Dugn;c?Oj:fI<h
+nPO[3;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/sR$sM8
+StMgRV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pc>8OG:'/n=S$us-`_Ps-`;DrgO%\R[K\7r0dSPrg!JL#*tOAQ'I`$rfmkTPa.Jt
+PE_8rPE1n+P8fR>K7\W*JqJog[Bm9G[C<KKZ,OZ#`59I2_o)Jn&&cB*`5]d:`Pfd:`l>p8_Z%IP
+`;daO62mhTW<'$"r2Tdrs/Q'tri-.&WiN/"WW&jrWVWUrWN)usWroB&X/u9#r2KatriGmss/QC,
+Y-"h/YHP,.YQ(j)YQ(j+Z2V$/Zi%03Za-n8ZN.B2[N)ce\[]2]]=bei]tV4r^qmn-b0\\miT91]
+i8*,cf_sM&fE^$Ze^W.!e^XTKs4.e6f\,!4gtglHjQ5Ohm-jN?qgndYrs/;doCDJBnF$8T*;8ma
+g9\ujq"jUBY1B)GNgl2?TV7r_@pZ:<XKMQ'$!CM<@UEDI>["uC^BM?a]XbM\NW1@%s823ImHa$%
+lg*g'oC2&+io&YHf[J9qc-",J`P]O-^:h4p]t=9R"gk\E['m@4[=1tN;c?Xq<``C+>$G6;?=.)L
+@Us%^BPD3sD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a
+^;%M$`5Td<b0/&Td*^=le^rI,g=tH?hr*JRj5oFckiq?sm-O--n*fc9o()DEo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PbtoF)d"cn:T&=noF\Ms)e*Ys)S*[%Wlc4FE;JDF*)MFF)c2=rc&-]DfK]6Ec:qr
+4`51WDf9N3DJsE/DJsH4ChREkARo@aC5.FsLP:M@L51MKPa.JrPEV/mP`q>pOd)#mP*;#iOctrk
+Ockh*OoCODOnq?FMi<VfMuS\6MuJ\8Mti55Mi<RQrJUZ6pl564!0-u<!0@,>r/C]:pQ,?9r/guB
+rfR5Bs,[/@s,m>Er/puAs,m/@rfd8ErK[DI!L8uLR/WK`R[]e;T:r'\Y->17XfAB"Vus$!WiQ)u
+s/?!sri,prs/H$us/RoVY-5(7ZEpsJ\@K2`^VIe-b0JGdg"Y?@io]Opo_A7Wp%7bAm-F$+o(;\O
+q>1!crVhBJh>]7P]X>5X[^EQOmbcI2\?i<4L7,H_`5/X1UNDB,EbnNsGBHVY:P47LJq8K&:/F_d
+<Drfn!0[>D!0@,=!K;qts!RKg^$3A?Za7$DZa-m@[(E]LXfA@uV5'`WSt)49Q^*f!P*(ifNfF$r
+!/g`3s+p6&ISj!A;cHat='/U/>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]
+P*D9"R@B_<TV8-VVPpMqXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gYL`Di8N_VjlY^h
+l07L"m-X60n*ol<o(2MGs7QEc!;HKfs7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pb298k`#Vp/(`cr_WJfePPftrB($ApcJF:"Ze_,4?P^u3WM2>3r_;?3r_;A4T@JF
+3]fA`r]:KM3B/rU3&iiV3CcU<8H;B^8cDQc:BF?i;>j;k:]!rh:Jh$f!DcPj:B"&h:AR9T;uBVf
+<W?,"<W,tr=8u;#<!ZK)<`iI*<`W5n<;onu<W6&!<W?+n<!$'#<r5nr<Y&22<E3("<E<.#<E<.%
+='#0!#Zb#-<``@)=',9$s&fA)=nPr,>@(]H@qKCeART"T@/aU5@KKtI@f9h/AS,OeB4u!nC2.O"
+D/O92EcQ8DF`__JGBnL]IXm')L5(D;Ll7=WQBmbuOcGBYMMmIVPaIl-S=Q4BT:hpSVPgAmXKf+=
+[C-"@+1AYg]">Vg^:qD!_Sa@3a2uNKcHjkce'umtf%A[1h#?+>hV[8OjlYail0@R#mI'HBnI"jZ
+p%S7WqYL-grVlf%s"")ECh$j\@UNPM?&3oMBOG%H;aj8X>[q,>4\7Io0/k^>5<V.a2)Ilq7n3JH
+$oU.+4?ktl4$6JA<E/oq!E)dWrtG%AO`=l^?sd5I?!UfC>[:WE>[@>5r`K;)='5H's&KV/<`N't
+<E)dl;c6Ih;c!BhnPOd6;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O93EccGJG^=^bIXm!%KSG8=
+MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^=le^rI,g=tH?hr*JR
+j5oFckiq?sm-O--n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`PcD=Q\M]5n=S$ur0dJOrL*/DrgNnXr0d\TR$mr@s-F:^Q^<o$Q'Rf)QBmf$Pa.Js
+rKI>FPl6dTP*)#hM26_4JUrH1\@)=C'",'P`5T[6`l,a5`5T^5`l,p;rkoAe`l5s<`l,g7_SsC0
+_8O70pd"nYoVqehrM]gtWW&jpW;rssW<9)sVl9Tm$)ji&Wi;qpVl6ToW!03%X/rA'r2Tgtri?(#
+q5jb%Xf\c*Xo,@!Yl:j*Yl(a,ZEsM:s0D^4rj2X4s0hs:"h;+S]=PWR]`5Yc]Y2(q_8=.4cI:J(
+j5]+ThV?f<g">!2g=b-0f%9cLr7;S7g=k<:h;7)LjlbjnmI0T<q>>gD]Di-3nal>BnaQ&HruCe$
+k1d8DlhCAMj0@1&Y)\s6@A'<c?".*BXK/N'WtJT?>[h&G?<g[N^V7Is]tCnc\;gM;qZ$T_lL!s%
+lKdd#mdT]0jl57Tg"=g&d*9_Sa2Ps4^qRLr^V%1g\%2IE!OfB+[<YVI;c?Xq<`W=*=^,-9?=.)K
+@Uit]B4u$qCi402EcZ>GGBnL^I=Hd!K8#);MN!OUOHPinQ^F53StD^NUo(&hWiWA-Z*UgG\%0,`
+^;%M$`5Td<b0/&TcdC1jeCN7)g=tH>hr*JQj5f=akNM0qlg4!+n*fc9rpg*]o`"Lap@nO\s7u]k
+r;6KkrVcEgJcCT,J,~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`PbtrF)ctdn:T&=rGhmXoQ'nO!-J-[rc8!Z!-J*Z!-8$Zs)J<`EcGu9DfGYps)8'Y
+E,TXmDZO]nrb_pYDJjH1BP@BU&nPZgLkg_?L5CY>Pa.JuQB[Strf[JJPEM/orfR5Ds,d;ErfIJL
+OHP]fO-5Wgpd"n=p5As.regc8rJL`9Mi7RnqMY?3s,6l6",i+sNW+k:NW+n8NW+q<O8P"ANK0$Y
+NK3jrrfI&?pQ,H=P*5O$rfRJLP*2#mP*>j/r07AMQ'Rd7Qs5uIR[]e;T:r'[Xfeh/X/i4uWMler
+WiN/"WN)qsW2ZbsWiN2#X/`5&Xfek4ZEpmG\%0,`]tV7u`5]pDdb!:2io]Lmo(MhQp\+7LnF,f6
+nalJLq>1!drVhBJh#B.N]XG;Y[^`cTmbZ@0\[/B4Lk;tHahY'6TlZ$'EGSEqGBHYY:P44KJUi9#
+:JO\c<)`cn!0dDE!K`?@N<"lts!I<b^$!MEZEpmCZa-pB[^EKHY,\J!V5'`WSt)4:Q^*f!P*(ie
+Nr=n;MMV7gs+p6&Gu7I<;cHat<`iL->?kE>?XR;O@qB7bBPM=!DJsN8F*)SLH$XjdIt3-'KnkMB
+N/`m[P*D5uR$sP:T:r!TVPgDnXKJe4Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/gYL]Ci8N\U
+jQ5OekiqBum-O0/n*olHncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,$c+~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`Pb/68k_uTnPK$Wekl?-niH_2!'L'=rB(-C3]d4$pc8I:3][1#r]C$=!'C0Bs#^3@
+!'C0Bs#:$>2Z>Z83=/5K8P2QH8P)cVr_WVjs%r_mr)!>fq,%)e"\h`d:JO^\62sm]<:X#k<`N1$
+r)Wl!r`&r!r`9)%rDru"r`/bnr)W\r!EN4p;up!"pf.Ar<E8uus&B,$<E8corE'#"r)`l"r)s&'
+s',J+!*T2&"C#2>?Xj"G!+Z":!+>e7s'bt<rF5_9s(2mVBPD-oBkqL#D/O92EH6/CF`mY+EHc\R
+H[UBrL51SBNK93dQ'IPqOH,<ZN/is^Q'n)1SXuIGTV8*TUnt&lY-G=@\@K/[\$rlY]=bhk^VI\&
+`5Ta:aihoQcHstfeC<%"f@em5h;7&Hi8N\VjlbjllKmp+n*ol<oCV_Lp\=R^r;HVsrri1lCLLTL
+?m]2e?AO#MB44tG<(0,Q>\7AA4\7Il0/bX=5!;"_2)7`o7n-!;7/f.V4?ktl4$6MB<E)pr<)ZXk
+OoGaZ^lNGDI:HVi?N+4:>?kE>?!LZ@>?h)0r`Bb6<EN@)<*!!u<)lmp;H-Lk;Z'A];0Yu;;cHat
+<`iL->?kE>?XR;O@qB7bBPM=!DJsN8F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:T:r!TVPgDn
+XKJe4Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/gYL]Ci8N\UjQ5OekiqBum-O0/n*olHncA@S
+rq-<cp\jmeq>^<hqu6NlrUp/@s,$c+~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PZDER#.K-rLa+_!hZ-Yq4H!)s-`nSrL*VQrL*POs-`SL%\&oWR[Tb8R$a;.R$a5,
+rfmPLQ'VE7s-<kUQ'7JsOd#d/s-5U-PEV,hP*(ldLOao-K7\ic[C3HL[D^)(`l5p:_Sj@1`l#g5
+a2Z-<`Q#m7`Q-!:`l#[1`Poa6_Y-7qW:d+iWqr[qW2KQlri$%!Vl-DhrMTUk!N2gnVu<OoWr/n)
+Wi<"uX/`2#X/rDuXT5O$Xo,=%YPYR(YQ(g-YH[o/s0M[2"LYVE[C6%C!k>ePrO`*B(VRPr]=bhk
+^VIe.bKn_mhr*GMh:p]<gA]b2g=Y$.f%8L)fDX>=f@\a/g=k<:gtpuIj5oFflg=02oChtUrIP!]
+rrDloo)nRTnF6DV*;Jp^g9n'Dq#C!ISCNq.O.)5>TV.l^@U6.<X0)B%%pE1B@UEGJ?!>([^;%@p
+]`,I$s"F3Js6T+>m-<m%m-O30mcrlniSE5?f$_pjb/q]C_nj.&]th@p]=>;Z['d9K[C#M4IS`m>
+;c?[s<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<[XP*;/sR$sM8StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBum-O--n*fc9
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PYttG'&7dn:T&=s)S-Zs)S-ZolBnMq/ZLV%!6Q3FE;JCF)l>CEcV/!!,qgT$#ag&
+EH#f7DJa:hDuX\aDf'9.DJa-#@q0+]AnV*u*eoH+PEhE!Q'IZ!P`q;qP*D&mPEV/mPEM#iP*(ih
+rfI/C!g/Y-p-A\9q2>60oo&d+"H/4tMi7FjrJL]8Mu&D3NW"n:NW5%<N<5&uNr"h/O8t@>O8tF@
+P5:=?P5UREP5UREPl6mHQ3W\@Q^F/.R@*uAs-a=dStVpVWN*&$X/i2sW<]H(WiE%tWi>ut"KSW+
+XK;E's/n#YYd:^D[CEcZ]Y(to^r"%/`lQHSgYh/Xmd]rCp\=OXp@\+No^h_JpA"L]r;HVGs4dPT
+aLnt\\,WrZ\*r/#`4E7SUkjW(^<+0mH(T,4Bl\#cG]n4);GVrEJc:0':JO\c<)W]m$'UO7OcYT`
+NJrgWrrhl@^$Ef=ZRE2eZa@'H['[$>X/`.qUnaTSS=,e3QB[SrOcYW`N/NROM27%GM26uYM1/8u
+;H$Lo<`W:(=^#$7?!grI@Uiq[B4u!pCi+'/EH?5FGBeF\I=?]uK8#&9M2R=QOHPfmQC+,1SXuLK
+UnsufWiW>+Yd1XE\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=akNM0qlg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PY,98kr,WnPK$Wekc?-r&aI1n2pY2s#]p8!'0s<r]C$=!'C*@s#U-@'KnQ?3&rlU
+3B&rX8kDZI8P2iX;,[Bir_EYn;,L.cr_WMgr_NYl;,I6fr_<Gfp-A[Wr`&_os&Snps&SttrDrhu
+#Zk&,<E<+#<E8rr!*9)#!EN;$<rZ8$<WuK&<E3(#rDikupf7;o!*/nss&B&"r`/hrpK.;qs&T2&
+r`K8*>Q.e+>Q.h+=oV\*>ROhB?!q,O@preR@:B+D+Cehh@UinYAS#IcB4kmlBkhC"D/O61EH6,A
+FEDYKGBj+4CNk&LH[ga+N/s'`PE_>tP`_&jP*(liPE_E&S"-(BT:r!SUo(&hWiWA,Z*LaG\@B)\
+]"G_i^;.S&`5]g<aihoQcHjkce'uq!f%A[0gtprHiSieVjlYajlKmp+n*ol;o(;YMq"X[^r;HSr
+rrr1gC0t=Ura5\32Mlj&BOFtD;aj#M?"dSC3^ttg/iGO<5!;%`2)7`o7n-!;7Q3:d4[2(m4$6MC
+<)cdo<)ZXkOoGXV^l<;BJRnad$sd1F>?tH>?!CQ>>?h&/#Zt/0<EN=(<*&uu$rg/';c?Oj;Gg7f
+:f-^[IS`m>;c?[s<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<[XP*;/s
+R$sM8StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,`3Kq"'jTV8$Orh9:`s.@H*rg3\Rrg<YPrgNbQrgNeRp6kuLrgF.]Q^X2+Q'[i&
+Pl?q/QB[PuQ^*c"QB[SuPa.JtPEV/nQ'IJpOcbfiNfAgJIXd!"Ko!+Bai;B@`Q#j7_Sj7-_ns=1
+_o0Up`W!dX`l#g9rl"iU!lMjkoKiMUq5F@oqPjIlpo":mVPg<hVuEOnVu3ClVuEUpWrB(!WX>`(
+WN3)"WiN2%XRiRlXoP[$YQ1m*Yl(d+Z3IYB[C3KO[f*]7\-0@R]=bfU]bS8p^:h1l^:q@u`5]pD
+d*pV#gYCQ=rS.A+s4RG)$eO%_f\5'4g=k<9gATb<gtpuKjQ>[jm-a?4oC_kSqu)*G]`/62oCVYH
+oC;DMs"a?:jP.)bmJ6eVk+1(jY`P<:@%X*_>[jq?X/iA'XK8@)>[h&H?<paM^q[Xt^:_%f\W-VA
+q>^K\m-a9+m-F$+nF5l2jQ#4TgXk',d*KkWa2Ps4_7mUu^:_(f[^NTO['d=3[!khK;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)
+Yd1UC[^`l[]Y;.t_o9X:aND]NcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,`%Cj:)NKS9&Ob(9V5rc7jTpN$.Pp2^.R$$($,E,fi;EcH'tE=[)/DK'T7DK'Q5
+DK'N5Df>Sls)00"DJa6/Dej*!B4>@]@qKD/KpIsgQ'@T!P`q>oPEV/mPEM)nrf[8C$^-U6OcY]f
+P*1rgORtj=MY2l-MZ/P6MZ8V2MZ8V5N;ne9N;\Y7N;JP4N;nn;Nr=t:Nr4n8NrG+<OT(=5OS+b7
+P5CFUP`q;qPa.Q#Q^=#'QBmo*R@'B@R0oCPSXlCIUo(#iX8]*uWX5`+WN)u!Wi;ttri?(#s/lI-
+Y-5).Y7.\B[C3TT]"G_j^VRed`<sW*bL>5)kjJ!5p&=^cq#:'rq"OLUp\=R]r;HVGs4dQ0qo?=X
+\[]2[\$th_d`&i)WhbH=ZbOZ#Xa-R]KkYRC:O%)+9i?XrJq/E&JUi8G:K:=lr_WucP*(lfOH,<Z
+N0!unn'Sf8aKi1ZZa@'F['d?LZ`gL3Wi)_iU7n0LR[KP/P`q;nOH5BZMMmCLLl.%FM2Ce\IS`m>
+;c?Xq<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdP
+Uo()jX0&P/ZEpsI\@K5a^;%P&`Q$!?b0/&Td*^=le^rI,g>(N@hr*JRj5oFckiq?sm-O--n*fc9
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,_a8P2ZOn5/mUf22H-rB'O1nN6G*!'1!=s#L$=s#^->!BWFB49%Dd3]fGd4Ztke
+3&`]R3&iiZ8kDlV;,U7h;,C%a:/4S];,R6frD*Pm:Jak`rD3Pk9hk7G!E2tp<W?.p<W#nq<rc;"
+=8u;%='#<#!*8kprE&qur`B)"r)NVpqGmPr!*/ns!*B/#!EE2"<W#nr=8l;%=8c5%='5H'!*K,$
+s&oD,qcX5/>[:W??!Uh:@fKm:@fKs8@fKs<AH-6@BE)ZFC'\TiC2@^(E,]jrEt<D:GBeF\H[9s^
+H$t@'Nfj=)s-3JG>*P;;Pa.Q%R@B_;StD^NUSOccWN*##Xfeh1Z*^pI\%95c^;%M#_o9X9aND]M
+c-Obbe'lgsf@\d3h;7&IiT'"[jlP[hlKmp+n*oi:o(;YMq"adarVc`pWrFO>Qtg#:?XI2I>[<27
+EG/]^<`2=W<F'<J;*%3*2_[-G/Nu<[0K)No8,bsl77Tg,3'BGg5!(l+<Dujq;H-Rl;3Ck_n\'m"
+@Y/1j?N4:V>[(K>?<pc=>[1K9=]ea.<`i@(<``7$<`E'u;c-Il;,C1g:B")\;1;>=;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)
+Yd1UC[^`l[]Y;.t_o9X:aND]NcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWJLrVc`nr;6Njs7uZh2YZq=p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pc8*K9DIhrh97as.KLeT:a8t"dbUCQ^F3>R/NEQRe<*IRfAcXR[KV5rgEbS"IGOD
+Q^@]:#FC[?Q'.DsPl6jJPEl*2s-"dlP*D2pQ'7>nOcklfP)>'EJpr9'KS[^i`l?'<`l?*:_Sj=0
+_o2Pl&B)W/`l,a4_8=+/`5K^7_Sbn0!3#Xkri6!srhoLhs/?'uVl0Nmrh][nrMKUms/6%!WiE-!
+WrAssWr8suXS/drY5bU(Y5YO(Y-7c-s0)I-!3lI-#I(J<ZEggC[J[K5\,Ef?\[oAa]Y+-T"2;I]
+^&G_V^r+.4b0JDaf@ej3gtgfCrnSmUgY1?6g=Y*5gtUZAhr*AKhqm2HiT'(`l0I^'nFQ8Ep\Odb
+rIP!]rs/8ip@e.Mo()bZ*;8d[gU5,lqZ$BST%0:;NLH#=TV7o]@^*#9XKDK'&uf&>@piVL?!4tY
+^V7@p]=PP`NW1-rs8VBMmHs9,lg=-0n*TE$j5SqMf@JL#ccjPQ`PfU.rkAcR]XkV][C!?L[d^[(
+:k)>?;cHat<``F,>$P<=?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:
+T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MGp%A@Y!;HHe!r;]hr;6KkrVcBfJcCW-J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZh3VW7@p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PbkeCj(&QKS5!UK`$JFK)TchEqs_MErC%fFE;JCEH-#=EcQ/>ErL+]EH6*tE<pT(
+EH,o:E,]apE;OSRDAI),Df9N3DJa9.DJs?0C1h!d@q91aC&O8(Q'@Q"Q]mVtP*D/orK7\UPEV,j
+OcPQbOcYZgOcY^q5lcf?MZAY6Mu&>/Mu8J4MuJ\5MZ\ipMi@Okrf$l:!06l7rJpf8!fi>&rfHi7
+qiLZ:!0I/ArK@&As-3JI!1*VN!LB#MQ3!A@rg<\Q#b%6RStDaPV5X?lrMp%#X/i?$WrK."XT,C<
+YHY::Yd(I;YHY=>[^`o[]=ktp_8=.h`XKr2dbEgHnFZGJp\=O_q#U9brq-Khp\=R^rVhBJgA_3J
+a8WV2\@K,Y\*r2%`O`@SUkkGJ^WOHrH_5GDBl\#cG^":);M0RQJ:N3%J:LBk<`;po;,EF=OcYWc
+NK&mUO8gs&cb8;XZ*UgD['R-H[C3KLY-+k+Vl$8aTV%dER@';*PEV/kO,]'TMi3IJMMd4IM=QQ(
+:k)>?;cHat<``F,>$P<=?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:
+T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MGp%A@Y!;HHe!r;]hr;6KkrVcBfJcCW-J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pb/584H;A;#O2<;#EBP47bN43rhDB49%>D4$#Gbr]1$@rAss?r&Os@3]]8^r]1!>
+"$8P*48_/>49%DD4$<L(s#^EI4?Y\cr\aj=3&s,";#aDl;@$)p:JO\]:f1*f;#X5s:/=Y^:JXha
+:J^LH!*&nss&Str!EN4r<rH)%<``@'r)Ehu<E3)s<<ZE'<``='q,[Ms!*8tsrDr_o"BJN%<)r`p
+!*/tu!*/ns!*B/%s&]5&!EiP(=8c5$=o;A&=^1l/r`f;*s'5Y3@/XO6@fKp?@UikWraH+BA7T7_
+B4krXCAquPC27[(EH;&"s)\`oGBeF\H?j^YG^Y7%Ng'I,?B^V;P*2#lP*(olQC"#.S=Z@HU8+N]
+Vl6SqXKAY/Y-5(8['dEU]tV7t_8F73a2lEHbg+P]daQ^qf%8R.gYLcEi8WeXjlY^gl0@X&mdKZ8
+o(;VKp\=O[rVulrW;esMP\FK4?=.&G?!W;8E+`N]<`;CX=(#`P;*7?,5qk2Q/O)B\0K)Km7n,s<
+77Tg,3'KMh5!(i*<Duiq;?Bco;3Ckdn%"?o@s2Nk?=$oDr`gFL?!U]<>[(E9=]ea.='/L*<E3(#
+<E)st;c-Ilr_`\k!`2`jnkoE`Io0*B<)lt"='8[0>[1TB?X[DRAS#LfC27X'DfKc<FEVkRH@1-j
+J:`E-LP^nINK90aPa.T&R[ftATq\?[Vl?\uY->1;['mKT]=bkm_8=.0a2lEHc-FY_daZguf@em4
+h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?oCV\Jp&F^cp\jjgq>0scqu6NlrUg)?s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrph]3nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PZ/,KT)@hTqV@Xs.TIcs.AePrh&5BrLa+Ur0R>KrL!YSopPiKs-WnTRJrWaR@9P3
+R[TS0R@'>+Q^@Z:&<W6BP*M8rQ'[f#Q'7GrP`l$.rf[;D$BL@2OckigMLpD.rlYYk`lQ3?`l5s;
+_T)Sls2=oRs2,;_`l>m7`5T^4_o'L4`:$"kW;rmqW<B6%Wi;rqVt?nfVuEUtVPU,eVu<ImVuEUq
+WiQ,t!NN-tW;iguWiN3!XSAprY5YR$YQ(j,YPtd+Z2_$0Z*L_8[/[Q5[Kj:O\@K/]\\%jRs1SBF
+rk8?E!58BG-,@F<aNMoXeCN7)gYCWBio/nShVI#Bg"P39gu%#JioK1^k2tk+kRQkClg=01nFH5E
+p\F^brdk*]rs/;kp@n=SoCMq\*;8aXgU+rgqu?HRT[;,pNLl>BTV7r_@^*#:XKDK'&uf&>@piVM
+?!5%Z^qRIp]XtbdNW0+Ts8VB`mJlMgmI0K3mcj#ujPo(Of[eU#d*'SR`P]Rl^]2"Q]Xt\^[C!?L
+n$N*kGYq@;;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:`E-L5:\EN/s'`PEhH$
+R[]k>Tq\?ZVl6VsXfnt7['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYail0@U$
+m-X91nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrph]3nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PYegDKL5SK7j&Sqh+Bire'6_rIaue!-7jSrGhmZrGqdV"*&@$EW0tdEH6&>F)u>@
+EcQ/=qf36cEH#i9E,T]8E,T]5Df0K2rbVXQrb_[O&8l?&Df0E+ARo;:QC!o$Q'M?5(mUDNQBRMq
+Pa%>nOckigPEV)kOckifOH9C'mm6r2!/gc6p58j-reg]5rf$f6reg`7r/:Q5oo8p1rJ^f;rf@&?
+o8ip5s,m>ErfR5B!0R,@rKI8Gs-<SLs-NbQrKmGL!L]>SR1bsYSXuLKUSXicW2ZetXKJb0Xo>C$
+WXZ#1Xf\e2ZE^aC['d<MrjN9F]">Vg^V@S#_SjFm`tHJ8c.(P/lga]Dp\4IYqYU3fq#9pco`Osa
+qu20Hg&D0Fa18e\\Mgt,[dN#"`O`=SV2(DE_9'TsH^^sqBle,eG^":);M9XRJ:N3%J:LBj<`E$q
+;,EI>P*(fdNrG$!rsJ,<]u\7![C!9IZMq3U[^39BXfJJ$VPKoYT:VL>Q^3o#P*1rgNJraQMi*=J
+MMR.Hnr!HDGYq@;;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:`E-L5:\EN/s'`
+PEhH$R[]k>Tq\?ZVl6VsXfnt7['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYai
+l0@U$m-X91nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PY/77n?BNn50*[p/(`cj&#\OqE"O9o/ce2"$/M)3rV2D3]fA`48h5?48Lu?3BB/\
+rAk$B4?GY(3qbZ74<ZjM3]K&V2c<ON;,C+e:f("e;Gg:e:JO\]:f1(d:esnarD*Dir_NMimm6VH
+"]SK%<)clr<rZ5$<rH"u<rH%t<<$"s<W?)$<E<2r<WlE%='&H$<VKPl<<-"r<W?,"<<uW*<E<.#
+<E<3"<rZ5&=BAT&=9)Lr=T;P.>?Y37>$Lr1#@1YB?XI2L@K'^<@q9+[ra?RO@:E\WAS,UiC27U$
+Ci+'.DfBZ8F*%>&'QnVDG^4U]H$FRZIt`fAPEhGuPEc'1rfg?DP*2&pQ^XJ;TV8-VV5L8kWiN8)
+YctC<Za@-L\\,Yk_8=+/`lH3DbKS5Vd*^@mf%/I+g=tH@i8N\UjQ>Xhl0@X'n*ol;o(;VKp\4IZ
+qu$Gis"Wi#B4#%Q?XI,G?&<uLB3nbA<('>Z@VB7K4[i100fCg>5!;%_2+^;.7Rp!<7n,HsrBC6C
+$!(&+;c6Ll;c6GSrs\>(M/6X0B3nqO?!^b6>mXb>=^508>$4s/r`Bn8=B8I&<`N*t<Duan;c-Cg
+:f1%d;"@K`:j>i8;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<^Y
+P*;/sR$sM8StVmSV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Lnf%8R.gYCWAi8EVTjQ5Oe
+kiqBum-O-.n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCW-J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5i*HAdQVRA$>QUApqcT`:YZT(\fMT),)WT(\fTQN!3PQC!s9R.6RHR[KV3rg<bT
+rg<kTR$X6=QPZ$TQ'@N!Q'@MrP`h8tPa7SuOd(ukP*,a,%$?d;O-,QbOH5QeNm@XJ,Kn0NaiVWD
+`lH*<`Pfa6_83q)_SsF0_o9X8`Pf^3_o'@0_X0ViWMo`onYcGcrhogprhomrV5='ds/5jp#-+Z$
+W2ZerrM]^p!ii<%r2]n#rN-"#riZ4'!jSu6r3-('riuL0rj;^5s0_s;\G`r>]">TP]`,VE^AY_a
+]Y2%n^V[q0b085]e^iC+gtglHjlY^ejPo.VrnSONioK7al0@R"lg4'.naZ,<n*oo>oCV_Mq>:,A
+s1/.7p%J+Rp@\+NrVnYGlJ]4Z_t!^*p#2Ojd^G7,P[^;ZSm>g1Y,ne.WiW;$>?kB??=-uAZG=5h
+^:h1k]=O"%.eiQ7lg=--m-O00md9B)kiCdahqZl9eBuUeb/hT@_SEt%^:q7m\$i]OrjD7&s%n,@
+;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCI
+USOfdWiN8)Yd1UC[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5huAoMaAItNCNK_pDsK(aijK)1,tK(aicEW'nXF8U(XEsHf-F)c5?EH;%u")r7!
+Er9qWErU+mE,or;E,T]6E,ff8Df0E1D/O6.rb_dSDf,Ji#&A*nDf0?Yrg*\PPa;<6s-3PK'9ncH
+Q'@GpOctrlP*(liPEV/lOoCFDO-#Fi5m3+'MMmDeMYN,/N;\\6MYW20N:i/5NfB!WNVnh,O8b4E
+OcY]gP*>a)!0[>Ds,mGIPa)-3rg*PMr0RMOR/NBMR7E^8SXuIIUSOcbW2Q\rXKJb4Za$a<Xf\Y)
+XKJe6Za@-L\%&rY]=bkm^:q:o^;%J#_o'I6aNDZKc-b/!jQc4,p@n@Xqu-Kn#lOMmp\+=Vqu20H
+g&D*Aa8EJ+\@8s8hU06PZ)NV9QF4TN_5DXLWf:e7D,>J$F\PbfJqAQ)It<-#:/=Yb<)QRiLQ[d^
+O,f8"NK=)elHR#L`NlqZ['d3H['mBJZ)t..Wi;kjTqS*LS!fV/QBRJpOcYQ]regu<M2I1HM2Ce\
+s%n,@;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0
+S=ZCIUSOfdWiN8)Yd1UC[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5]7`kNM0plg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5h`84cNNktq(Np/(T_r)!)ar&Xj>s#U$=oK)t5#<Y%/3]fA`481f848q8B3BB5!
+3W;&B4$5Sc48q;=3rhDA3tjY;4?Yee<)Zap;Gg:f;,L.d;,[Bjs%i\kr_<Mk;,R6fpeU9Cq,RGo
+s&8qs!``9%rDiks"B/9!<E/rtr`&\no2biiq,IZ#<E3!t<E3)q<W#nq<W,qu<W6##<E<0!=8c8$
+=o2>#=oMP'>5_Y+>$Lu2!F9%1?iOL>@:E\UAS,OcA,TjI@:Eb[BkhBuCi+'-DfKi?rGqs\rcJ<e
+G^4W6HO+qFI=d34OHYn+PUr,fR@BY3Q'@T#R$sS<Tq\?ZVPgDnX/rJ-Z*LaD[^WfY]=u%r_Sa@4
+a2uL'bU1T\d*pLqf@\d1gtgiFiT'%]kNM0qm-a?3nac;Dp%J+Rq>:*grM0AtjG[bZ?X@)Hra$S$
+HuWb)=B%^V8loP;@8K'T;*?Wm1bLsT4>8WbrC7&]77Tg,2`Ue#s#U<T<E3#r;ZKXVrse>&LMUF$
+AR8_M?<pcAra#P.*EZNK>?Y03='/O*<`iF)<`N.!;cQan<)ZXk:f1*h;"@K`:jl2=;c?Xq<``C+
+=^,-:?=.)L@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo1/kX0&P/
+ZEpsI\@K5b^VI_(`Q$!@bKS5Vd*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfW)I?fVnRf8uXU&:S`T)bJ-TD"QNQi*6ARJrZSR/<<OQm.laQ^=,+P*D8tPa%Gt
+Pa.JuPa%AqQ'IMuPa%>qP`_&iP5^X^OcYZcONu+qcHOJTbfn5OaiDE@`Poj9`W!de_8*t,`ko^5
+`Poa5_SjC0_WjGcWVrdnVu!@lVuN[uVl6PlVuEOiVZ!CnW2]`o!3,srrMfdr!i`6$q5jUu#Hk22
+Y-5%5YPtd'YPtd+YmdqEZaI0I[^W`U\[oHQ]`Gj\qn*!D]Y4<Ys1\TK^&G_f^V[q/air,[eCN:*
+h;I;Qk3D3pk2k[bj5T(YkNV:!rpC'\nFH5Fp\=ITrq$Efp\4IZr;M9I\Glg*o_/%Rp%@tUs"*m1
+ijH/1o`+s`hON3H^Q+YF@\B?b?"1(AXKJY)X/i4'>[(TB?X6j@^q[V_]`PjY]8cgoo_/+Hn*g8C
++n+phmHWp!j5].UgtLE1dEg%[aMu08^qmh$^:V"d[^ELA[ICPP:Jakb;H$Op<`W:)=^#'8?!grI
+@Uit\B4u$qCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hWi`G.Z*UgG\@K5a
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfVtBlnEPIf=usK_pB%K$ArJEpn#IErU4ZErL.ZFT-7[Er'b]E,or<EcGu9ErC"X
+E"[/0EH#l8DJsH2E,TZ4Df9K/D>eANC]SFArg3qWQBml(QBda7PQ?u4rg!JI#*P+4PE_2nrf[;D
+"H\b.O,rQl!/gc6pknj)s,?o7rJLB.s,?T0s,?o9rf6u=r/gi;q2kT=!L&]COU.&2OckomQ'R^7
+QN3EOQi<BPQi<BNQN3EPR7<X7S=Q:GUSFZ`W2Zf!Y-5+:['Hp?Y-5%3YHY@A[^WcW\[oDd^r"%-
+_ns1'^qde'`5Ta;bK\>Ydam11j6,e!o_81YrV?Hsqtg'`qu20Hg&D*;`r<OK\hLY'\*r5&`OiCS
+Lkh;)`6#fkH(q@-C3"2gG^+@+;M9XRJ:`9%J:LBj:K1:k;,E&IOoCC@N<#!"s!R$S]XGM[[C*BL
+ZaI0JZa-g;XfJM$VPBo\T:MF<R$O#$P*;#iNK*pq#)\7pMMR+Gnqqll:f("e;cHat<``F,>$P<<
+?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR%'V;T:r$UVPgDnXfen5Za@0N
+\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N_VjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HKf
+s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfV^7nHBL:ARfe;#jGj;#jG;;?&`U3qbZ/3r;#<3WM8>3r_;?3r_;A3WM8?3r_2B
+3]T5]r]1<H4?GYe4$#GcrB($Ar&Xm@rDWbqrDEVmqbRJo;Gg:f:f%'c!`2`krD<>dl9YAKs&9%u
+;GmEl!E<(r<<#nq<<#ts<;T\d<WH.t<<#l!<)lmsqc3Ysr)NSoqc3Sqs&B&"r`&r!rE&r"s&fe5
+<`W=)=]ed/=]ed0>5MP&>l@tF?XR8M@q9(\B4b^b@UW\S@:E_YC2.R$rb`BfE-$/GGBS+NFEVkQ
+H$O^`I=?YEIpmq`MN!OUP*;,qQ'Rc*StVmPT:;:;R@9Y<U8+N\VPpJpXKJb2ZEppH\@K5a^:qG#
+_o9X9ai_iPc-FY_e'uq"g"P6;hVd>Nj5oIglKdd&mI'H4nac>FpA"I\r;HQkUAlUrKk4Ut?=.)H
+?!`J<EG&T[<(02J>%_SY:HD$D6npVV/j;E]0f;Q%8,l$d77Ka+2`Nra5!(hur`&qrrDN\nOoH*\
+["`@'?X@&G?X@#C?<piA>?kA2>8^UH>$"j/<E3+&=&i4"<Dumr;,^@i;,C+er_W/_ISWd:;,U=l
+<E<.%=]np5>[:]D@:E_XAS5[kCM[m,EH-&AG'A4XI!pKpJqJc4M2I7OO-#NhQ'[l-S=Z@HUSOcb
+WN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:h;@/Lj5]4_k3)!nlKdg(mdKW6nac8B
+s7H?as7QHerqQNhs8)Zjrqu`no_sFAMuS;~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfW+Kp[_$SarGuTDt2KQ2m9NR.csJR/WKRRf8]\QC4,-R?j5,R/WEYPa@`&Pa7W&
+P*>m0"I54:PEc$0!KrTDP5garOHPWdOHPdNccjSWbg"AWbfn8Qb/qcH`Q-!;`5KO2`5TR1`59F1
+_8F4j`<*oq`99JhW2Z\mrMKUmqPaFls/>jn!iDfjqPO4hpo"1lr2Kq$WMur"XSo1!WrT7!XT5O%
+YPtd(YPtd+YmdtG['d<N\@T;a]Y(rU^APYD^AkkD^&G_Z]tV7u`5g!CcdU@nf@o$<jQ5RjrTsOK
+''niKmI0Q8o(2JFo_%tSqYL$`rV-NkqYU3iJcE4Zs7ZHd!qu<ZrVnYIm,PI[`:a01o@gA"S$nAf
+P[gAZSm>g0YH4n.WiN2!>$P9>?=-uAXhhcd^V7Cp]Xs1'#kmr]m-aB1mI'uC(%(8Kk2YI[hV?c9
+eC)^fbK.]B_SO%e^]1qG[fNnDrjD7&HV[I7;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@
+Fa&(VH[U?nJqJc3Ll%%KO-#NgQ'Rf+S"6.EU84W`WN*&%YHY@?[^WfY]Y2(q_SjF6aN;WLcHjnd
+e'ut#f\5*8h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!VZ9dq#C0iqY^6ir;HTerdk*-s*t~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfVtD09rUJc:;pK[#/KEW1"JEVOSREr^=]Erg6#rc&0]EH#o:E,fgqE<L6#EcZ0t
+E!:6#EGof7rGDUPrGMXR'PqZ&Ci!s*Q^O2+R$X2,R$X/*Q'VE7&!N9CP`q>qPa%GrPE_5nPQ$^D
+Oog`.Om#(3Mi@Ihpl#02r/:Q3pP]'1mu@=,rf?o;s,[2ArfR,?s,d;EqiLlArfI2Drf[DJQ'V33
+rg<\O!LT;SQi39`R@9Y9SY)RLUnsreWN*)(Yd+27s0_j4/[Vjk[^`o[]=bei]tV>"`5KR2_84"*
+_o'F4aNDcRdF6Xuh;I;Sl0\$6p\Oj`rr`5sqtu$Ff`++p`4<Ij]=YY`\+8M,`O`CTLkh>.a2u&h
+KqigKCJSkFG^+@+;M0UQJ:`9&J:LBj:K17j;,Mt.OckfdNrG$!rs@i4]t1VY['d9Krj3QNZEg^:
+XK/A"VPBr\T:VO>R$O#$P*1ogNr=k?MMR.ILl$uZML/,q:f1+h;cHat='/U/>?kH??XR>QA7]Ce
+BkqL$DK'T:FEMePH@('hJ:`E-L5:\EN/s'`PEhH$R[]k>Tq\?ZVl?\tXfnt8['mHS]"G_k^r"%/
+a2lBGbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U$m-a?2nF?MK!V>s_o`=d\rV6Egs8)Zjrqu`n
+p&9OBMuS;~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2YZq=p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfV]7nQKNrD<AgqbmGkr)2$Ar]:$?rAsU5pH&.4!BN=>3rV2E3]T5_4$*@&r&Fd=
+3Vtl948q;@4T7GA49.JB<!lQ';cH[p<)QUk;>sAn:Jamc;?'Jm:B+,h;>j>i:Zt+E<<#kq;$'Wo
+;u0Jn;u]f";cH^r<W5tp<<-(q=8Gqt<W,ns;Z]ou<W#hq<W6#!<VTVp<<-(u<W,ts<=)W)<``C)
+='/R-r`K2$"'8T,=oMP'=TV].=oDP(>Q.n-?2e10?NjhIA7K._rFQ(AAGp+hBPVC"Ci4-/DfBc?
+G'A+PFEMbOG^4R\I"$QqJUrH,Ll%"JNf]EgQC!u-SY2dTV5']SR[T_:TVJ<[VPpJoXKA\1ZEppH
+\%0)_]tV>"_o9X9ai_iPcHstfeCE+$g"bE?i8N\VjQ>^mmI'K6o(2MGp%J.UqYL-grr)fqrhBEG
+eU_:=?X@)I?X7!!Ir]4/>#e!Z9O):I?VNXU2`WT@1bLsR4>A`c84Q0>7R]d9r\tBN5!D%j8QAbk
+<)Q[o;c/\W$g=pNCgLXU?<poE>l@t.>RXnC>?P06=BSd/=B8K$<t/,/<)QXo:fC4g:Jjqcr_W/_
+HV[I7;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJqJc3Ll%%KO-#NgQ'Rf+
+S"6.EU84W`WN*&%YHY@?[^WfY]Y2(q_SjF6aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg'
+mdKW6nc&([oCW%T!VZ9dq#C0iqY^6ir;HTerdk*-s*t~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Q,MOKI'T(/K!TDXuJQN*<NR/!*IQj/tGR[KS2RJiKQQN!3OPaMH9!LK)MPS0:G
+PEM/nP`h2oPE_;tOcbfhPl?aMP)tgOd*0\Yci22oaj&&RbKS0/ao]]*_u@[U_@XN"`kfR/^qdh(
+_8O:2`PfXU5lmm\rh]Xl!2odo$`Br$Vl6PlVl$>hVZ*FgVZ*LfW;ERrX/`6"X8o=#WrB%!XSf1#
+Y4\suYl1g,[/RH<[^WcY]Y(qkr4W0Er4Md;(V[Z"_84%/aN;ZPdF?^tf\>9@jQGgqn,DnXnI"jY
+oC_eNp\=LVp\sseq?Zolq"ad`qu$GEs0hq-rVlKipB(-`p&4n?q!@(JZc2Y<s7*:qgm5=.@[(Ds
+T:]Cu?EUB4XK/D%W*3G1?s[2G>FrY/^]2"K]Xs.&.eW?#n*o`4mdT`7lK@<jj5](Sgt:<0da67^
+ai;<:_8*k#]t:nc\$`TNm^.F=:f("e;c?Xq<`W=*=^,-:?=.)L@Us%^BP;-rD/O93EccGJG^=^b
+IXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8Wd*^=lf%8R.
+g>(N@i8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]PuDK^2Vre'fqc@Z+;rGhgWrc&$\EH-$oEV=DWF)lADF)l="E<'qVDuaeREW'h`
+EH6#;DfBW6Df0OnDZt)sD/O3/rbMjXCi,T.Q^4#,rg4mpR$X/*Q^3o&QBd\tPa%GrPED&pP*;&k
+OckliP*(ojOc\]k!K2j7M>iD2MZAY6MuSb6MuAP-MZA_3NW"h6NVeb9O8=t<O8"b9OT:RBOo(:J
+PE_;sQ'Rc'QBqH8qj@DOrg3\Rrg<_S&tPVcT:r$UV5C,gW2m#'ZEpsJrj`WN\%0,^]=bkl^V@Lt
+^q[_&_Yq:h_Sa=1`Q$!Ac-Xqif\,!6hr3Y[m-jN=p\XparrE%Ls473/h86e8]">Ve\@;+keAf,,
+WeZ@s]?/4.KS?@GN+u.+:j@5.:/Xl>Jq/H'Jq/AH:JXqf;Gg;;rfR2@s,@#=O8fCGbK7?([/IE3
+Zl-3UZELC2XK&4rUnaWUSt)49Q^*euOcb`crJLl:Ll.%FM2Ce\ISWd:;,U=k<)lt"=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"-(CTqeE]W2co#YHY==[C3TV
+]Y2(q_Sa@4aN;WLcHaeae'ut#f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,?u.~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]P\84cNNr_`&\ekuHD"?\b-3]d7%r]9[5p,W493rV2A3]m1!#!4k-4$#Daq`=R6
+rAjs@4SCi=<)lmrr)<\q<;ohr;Z9Pn:^Koo:f:.f:f1(cr_<Ghr_`Vjs%hcC!E)eo:]aKm;uKZ&
+;cH[o<)cdp<)lrs<;TYq<rQ2!=Su5!<rl?%r_s)#<)lt#<`T,ur`/\nr)NMm!*B(urE'#$!EiP(
+=8uA(='/T%=TDS&=TDY)>6%q->le8>qd9A3%qB-]B4tsmB4bahBk_<uD>nGPDuXeWF8U,kF`qtQ
+G^4XaIt<3)Knb><M2I4OOHPioQ^O>6U8=feVPBcUSXl@HUnsufWN*&%Y->1;['mEQ\\,\m_Sa:1
+`lH3Ebg"G[dF6Uqf%8R/h;@/KioK7dlg=02o(;SJq"jjar;N)`0?SWO?!glE?XR2HO+MFd?<U>t
+6VUj%CgB:i:c1?i-o<P>4ZkJX1e:/-7Rom:7fGCH4p!f.7fHEc;ZK[WruL:-KPG42?=%#H?!UcA
+?!U]@>Zk68>?Y04>$+j,rE'#"$WU/*;H-Ll;,C%d:]4,\;1;;;:f1+h;cHat<`iL->?kH??XR>P
+A7]@dBPM="DJsN8FEMePH@('hJ:W?+L51VDN/is]P*M?#R@B_<TV8-VVl6VrXfnt7ZaI6O]"G_k
+^r"".`lQ9Fbg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60n*ol<ncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcC]/J,~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3D2b-HU%"`,TD5)VQ1UC@R/<<OQiNKPR/`QSR/WK]R$O,*R$O&'QC!o&rK[PN
+Pa7O4PV85`OckumP`h8pP*1rlP*D,mOckjOc-F\[cHOMXbKS/Rb08&Pb/qfJaMu3:`Pqhp%`QB&
+`507*^r!q(_Sa71j?WsHV5:&dVuEXnVuN^pVu<LmV>-qfVZ`rtWN)usVuWgnWrB'uXT#4%X/`2#
+r2ft%rNH7(ric:)s0;U1$+.+K[^WfY]=biV^AkkK^;%CrrOi$@!5AHG-GI:3_SjF7bKJ/VdaHXq
+f%Jj9j6#OimIU#Eq"OU[qYU3fqYU0drqc`lqYg3nqYU0frV_<I[Jp=*q=jm^!r2N_rVml4mGtOY
+a7fQ5nZK@VQ`lU@Q"6V]T3Yo4Y,nh.ri6F*>?kWF?=-uBQb^E9^B;3b]Xs.&.eW?#nF5l7nF5o7
+l0%3ijPetOgY1<0da67]aiDB<_8*q%^Uq+e[^`]Pm^.F<:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\
+B4u!pCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hX0&P/Z*UjH\@K5a^;%M$
+`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*.s*t~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3?Z1:5JFJ6;KDfijEVskWEW:%[EH:hor,MdWrc8$[!-8'[#]ap*E,fi9Df>Vo
+rGhjV!c`-trc&TjDf9W6E,T]6DJj<0DJsE1D/O4iR2)0XR$X/,QC!o(Q'[f'QBml'Q'@JqrK@PP
+Q'@GrP*(oiP5LFBPiP+3MM[2hMZ/P6MZ8V7N;SV4MYi>3MZ8V7N;8J4N;nn9N;SY:NfT8#O8t@@
+OSY%9OSb.CP*(oiP5^XOPa.Q$QBml(QBqH8qj@ANs-WbQ#b.?TT:qsQUS[ses/,ptXKVW/#dq4T
+]Y1tk^:sQ]s2"ZLs1\TM_>_:i_o0O5`lH3EcI(.mg"Y?>i8Wh\lgF<9pA+Z<s31KFg:k21rk(8'
+\[_Cqf#YV4WeZ=s]?/4+KSljOJST7C:jI8.9iFi>Jq8N(Jq/AH:KCFm;Gg;8P*(ogNfT3[NfX2f
+jibTR[^<KN[^EKL[Bd*CY-"b*W2HMgUS4<OS=,b3QB[SrP)t]_regu<Ll.%FM2Ce\ISN[8:f1+h
+;cQk!='8[0>[1QA?X[DRAS#LfBkqO&DfKc<FEVkRH@1-jJ:`E-LP^nINK90aPa.T&S"-(BTqeE\
+Vl?`!Y->1;[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,?u.~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j37S66F:?b[?;=79Z497N)r&ap>o/lb/s#U3Ar]Bm9s#UHH4$,Jb3]]A#3WhB%
+3BI."rAk$B4?G\'48r.X;uKZ);cH[p;cH[n:f("c:f%'c!`)Whr_W\m:]=)h:]=5k:]X?gj?`]A
+!)rkrrDW_qr_ihs<W,nn<Vfbr<W6##='/Q'<WZ6!;uT`"<``=%<)ifrr)Wht!`iB'r)N_ss&B)#
+=8l8"<W6#'=&rC)=B8K%=8Z1q=oV\'>QnD>?=.)Ir*BJ4@:<[FAH?IYr+Z7KD>S5NDuXbYEH6,B
+rcMXmGBeC[I!pKqJqSi5LPUhGN/`m]Pa@c*S"?=LW2ZYjUS4<QTqeH]Vl?\sXKJe4ZF%$J\%0,b
+^r!t,`lH-Ab08,Ud*^=le^iC+gYC]EiT'"^l0Rm0o_/%Sq>1!erg!Kc^j'<prEoS4*FFt^G%k;e
+<CK8M?#4:]5X&(&2(pjE/j;E\0fCie8H2-^77Ka+3W2,L4$5r3<E<$s;,gFjOoGdNYCpY#@U<AJ
+?X<Y9+C/5W?!LT<>Zt94>?P'1<``@)='&F&<)ZUm;,U:g;H!Ehnkjj2:Jakb;H$Lo<`W:)=^#'8
+?!grI@Uit\B4u!pCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hX0&P/Z*UjH
+\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0D2P6QRdZpJTDtSUTDP;]TD>/QU&Uk_Q1U@DQ^F0;RJiL(Q^F,-R@'>-R[0>,
+R$Nu%QBRW"Q'R]#Pa@VuQ'7DoPED&mP`h5oP*)#lPPpXWbg+GWc-+>XcHOMWc-+;Tb0/$.b6#f+
+b5TK^a8a*[`50Ck_Z.FU^r*t(_8>.srMKUns/5mo"K/2sVl0*_#cFW"WiE%tW2TZor2Tas!N`@$
+XS]"!X/rE$Xo#7'YHY::rid3DZEppF[C3QS]=bei]tV7r^:q@s^;%D]]_fDB^AkkS^;7\)`Q63G
+bg"M_rm`">f\50=jQ>^onb)\Rr;HWnrVQKgqYU0fr;6?frqZTj!rMooJcE(V!r;Wdrq?Hgp\b%A
+qX3LNZH2e?s7!/'gSUs/Q]kmPTV,P"?EUB4X/i>&W*3G8?sd8H>F`LErkAQL^V.7=s"46DnaZ,=
+mdKZ7md03$k2bU]h:p]:f@86rc-+5L`PfX0_nWpu]"#5Y['d9Ln$IO>:f("e;c?Xq<``C+>$G6;
+?=.)L@q9.`BPD6tD/O<4F*)SLG^=^bIt3-'KnbD?MiEdZP*;/tR$sM8T:r!TV5L;mXKA_3Za@0M
+\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HHe
+!r;]hr;6KkrVcBfJcC]/J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0?u::7IIDjfKE$VrKDU>fKE$T+E,fmsErU.PErC"XEWC+UEWgB&EH?4#EZ&t=
+EcH,=DJsK2E,T]9E,]`9E,T`7E,T`7rbr-]E,]`4Df'B/rbhb)rgEeR&Xo,SQ^F/+QC*r'Q^3u)
+QBdg7Pm!;8PED+/PQ-dHOd#a+iBdF"s,6i5!fN"rnr*O*!/pi8qMkK5s,Hr8r/Cl?O,oB`OS=h6
+OSk7>P5gXHP*;)org!MLrg*VPrg*YQQhm*JR/iWRR08tJS=ZDQU(X5tVP^8hW2Zi!Yd(L@\%BAh
+^\ttK^])%K_>_4n^VR_%_Sa:0`Poj;a3)TOdad"'g>(TDioK:fmIBiBq"oXBbl9cT]tCth]">Sc
+s7GF*ahY<dLPD81bK@>INMq8PBQ.caH$=I+;br$tJUr?'J:LBj<`Dsp;,MV%Ocke'NfX2HjiP3I
+[^EQP[C6(As0<iQY,n\'Vl$>eU7n3OS=,e3QB[VsPEClaNJiaQLl$tEMM^k\ISWd:;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@G'A1WH[UBoJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%
+Yd(OA[^WfY]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8Bs7H?a
+s7QHerV-HiqYL-erqu`no_sFAN;nD~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX077^!D:$GRC;<^pV48qA249%GA48M#<3rh>@48Co?3BK8_48q8H4$#Da3]]8^
+3;GT73rD)>;uBPn;uK\q;[ZQ';cH[n;G^1e:f.*dr_WVl!)WVis%r_m!)VW?rDW_qs&8qq"]JB"
+;c?Zi<<6-%qH!Vq!*/qtq,@T!<*!(#<E)rp<W6&!<<6-%r`/eq#ZXo,=&r@'='#9$"'/K*=Su5#
+=oMP!=oV\*>Q7t->l\4.?NXVA?=*V=#\%:SAS,UkCi'&frG;LNCMn'0E,ou?FEM_LGB\:XH[C-i
+JqJc3LPL\BMMmFSP*D9"R@Bb>USXldVP^2bU8"H\Vl?\sXKJb2ZF%$J\@K5a^;.S'`lH3EbKS8X
+dF-Opf%/L,gYCZDioB.al0Ig.o(;YMq"t$grfmFB\8bqb?=.#G?sfRjK6V*=>?+*Z:0qdR><kDK
+2)HsF1G1jS4>A`M84c<@7n#m:3''8f5<_.k7fHBk<)ZRl;GiSV*9=2RBO5.S?XI,E?!LZ@>?kH=
+>[(E8=]ed,=BPQ('3J::=&i7";cHXl;c-Fj;,C(d;"7D3:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[
+B4u!pCMds.EH?5FGBeF\I=Hd!K8#&9M2R@SOHPfmQ^F52SY)UMUnsugWiW>,Z*UgG\%0)_^;%M$
+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojcp]C9fqY^6i
+r;HTdrdk*.s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfW&E/19QRHU=@TDYAYU&LeaU%4rXU\L,OQN*6JQN*<OR/`QSR/NHPQiWVArg3eU
+QC"!;QN*3VQBdZ"QBd]"Q';02s-!PMOcYe+OT:IAPQ-dIPEO5ibl>rfbSeRJc-OYYbg";Sbfe/O
+bK7oLaiMTC_oK[6rko)Z`59=-_nj.,ha.:>rhoamr29.`s/,psWN,rrs/H("q5XFp"K\Z*XK2<"
+s/Z.#riQ.%s/l=(!3c@*!j]/=rj2g9\%'#]rk/<GqS**G^V0WZr4W*DrkB_p_oBa>bKS5Vd*pOs
+f@\a0h;I;QkN_L,pA+Xbr;?Hfq>:$crqlipqYU9gs8)lqrVhBJZi:.&q=aU^p\b%Gr9rdOZH2h@
+s6m%tgSU9qQBG[LT:fG!?EUB4X/i>&W*<M9?sd8H>-brZ^V@S!^V5X+./39%o();=nF,f3l0%0g
+j5AbHgY(-,da67_aiDB>_8=.+^:q.g[^bY1!)NSjG>_@<<)lt"=BSd2>[1TB?t!MTAS,UhC27[(
+DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<dQ'Rf*S"6.DTqnN_W2co#YHY==[C<]X]Y2(q_Sa@4aN;WL
+cHjnce'ut#f\5*8h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*.
+s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfVq?u17:If"ccK_pDmK`$JlK`5rjEURrIEVjbVF8g1\F)h2""*8I&F8^(dE,T]6
+DK'T7E,fi8qeud[E,T]6Df0FkDuOVUD46piR3e2eR$j>.Q^F&)Q^3o%Q^3u)QBdc"P*M2pPEV5p
+P`q5nPEM&lha.'qm#1n&qi(T9pl5<6rJgi;p5f*4!g/S+r/pl>%$Qp?Q'R]#QC!r*R@4#@!13PL
+r0dPQ#b7HWT:r!SUSRmds/-7'WN3/'YHbFB\\,ZU_#D(L^;'T]s1]bn_84"+_o0O6a2lBHd*gFo
+f\,$8hVdDTkN_F'nalGKqYc!FcMp,X]=bbf]">Pbs7GF)b/1ThL5283bf[DIM5Yi@B5hZ_G^+F,
+;br$tJUr?'It19i<`Dsp;,E%2P*(fdNfB'ZrrqH'_n*:crO+#ZZa@'EYHFt-WMcShUnXQUSt)4:
+Q^3i!P*;#hNK&jSMMR(FM=6<%:]=17;H$Ln<E<.&=]ns6>[CcF@:EbYAnYjmCMds-EH6/DGBeF\
+I=?]tK7nu7M2R=QO-,WkQC+)0SXuLJUnsufWiN8*Yd1UC\%0)_]t_A"_o9X:aihoRcdC.heCN7(
+g=tE=hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]kr;6Kkrr)KgJcC]/J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfV\7n?3F9^#C@;=%*Z;>`NS4RbH34T.A@3WM8?3rD)83r_8C3]fFu3WqH&3B0"s
+3W;)>48r1Z;u0Al;uBSs;cH^pr_`eo;,R<hs%`Sir_WVls%r\js%i\mha.0=r_iYm!*&\mr)Nf!
+qGmVu<W#hr<<-"t<<?-#<qfVl<WcE(<E/rtr)Wbts&K,$r`9#"!*K5'r`B,%s&]5&qH<`"#?tG=
+?=.#E?Mn10@/aU7@M30]A7fLiCi+$*Chmd%Ci+'-DuO`hF*)MHF`qtRH$XgcItE<+KnbA=M2I4M
+N/j!`Pa.T%R%'_DVl6SnW2?DgVPgAlX/rG+Yd1UB[^WfZ]Y;1t_o9[<bKS5Wd*gCnf%/I*g"Y<=
+hr<_[l0@^*nalDGp@nCZqu$HmQ2_&jE+!'[?X<Y<2P-(aGA:Sm<^];N?Z0db5X&"&0ePCA/Nu<[
+0fCgY84H'=77B[*3^5em5!(l!<E2st<)HUmOT,^KWIS\n?s[5K?<ge8>RatD?!LT=>?G!1=B8U-
+rDs>,='/F%<Dujr;,dHkr_W&\!)NSjG>_@<<)lt"=BSd2>[1TB?t!MTAS,UhC27[(DfKf>Fa&(V
+H[U?nJV/W1LP^qJNfT<dQ'Rf*S"6.DTqnN_W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'ut#
+f\5*8h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*.s*t~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Q&EegHURH1%8U%>#NU]7+iPkUIAQMd$HQN*9PR$mo?rL"msR$a;/R@'D/Q^F,*
+QBd]#Q'IZ%Q'@Q"Q'IStPE_;nP)te(OTpl0OckmSbl5lrc-+>Rb07uPbKA)Pc2PodbQH&4aij\*
+&]Vr4`Q#m7`Pfa7_SX.,_8!eA62me]VYm@gV?!IkVZ*LnW;ih%W2ZbsWi2kqql9Xrs/Z:(XK2?#
+"08N)Xo5@#XT5O&XT5O'YQ(j,ZN.B3[0O1O]=bhj^:s?Vs1\KGs1JBFrP&<I*5]Y6aNMfPc-Xkg
+f%8R-gYCWCioB1clgF<:q>(!c!r;]irVZZls7uorr;HQlrdk*Us8Viqp\=O_p\b%2rUB!RZH2kA
+s7!+ugol]qQ'%i7TV#J!?a$Q6X8]1,WEWV:?s[2G>-e.Cs1ncP^V5X+/bei,nal;>nF,i3kiUsc
+io&YHf\"d(dEp+^aiDB=_SO4-]tV%h[^WZP['d=2[!kbG:f("e;c?[s<``F,>$P<<?XI5N@qB4a
+BPM=!DJsN7F*)SLH$XjdIt3-(L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen5ZaI6O\\#Mg^V[n-
+`lQ9EbK\>ZdF6Uqf@\d1gtgiEi8N_VjlYail07O#m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcC`0J,~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Pp@r?^?Ien]8K_o]gEW'n\F)l;BF80eUEVa_UF!PaGEcZ8BEcZ8AF)l8?E,T`7
+DfB]8E,fo<EH#i7E,fc7Df9UoDZO]nrb__*r0mYRrg3nVR@'>.QC.Z;s-EhRQ^*p:Q4]CJQ'@Pt
+P*D/pQ'7DpPEM#ih*Lpqonrg-rJUQ3rJ^f;pPo35!KE-=NW5%:NrY:?O8P(BP*(lgOSt=>Oopo4
+PEc!2rg3SNs-WnTQi3<OQN3ENRK&]aS"61ETq\<WV5:)eVZ*MWWiN5'Y-5.<[(*`]^:h7o^;%Fu
+_8*k&_8*n(_Sa:0`5Ta9a2lKNeCN7)g=kE@hr3VXkj.X(nF?,Cq>PsFci4*n]Y(iT]DoGas7G@%
+bJLZiL5284cHN_KMQ;;DB5_X6G^+C+;c&*urdb`7J:LBj<`Dpo;,E%2OckffO,]0[s"NHR_n3Cf
+[^NTO['R-FZ*1:2Wi;nnUnaWVTUqX?R?s2&PEM/mO,]*UMi3FLM2I/ZMLJ;r:f("e;c?[s<``F,
+>$P<<?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-(L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen5
+ZaI6O\\#Mg^V[n-`lQ9EbK\>ZdF6Uqf@\d1gtgiEi8N_VjlYail07O#m-X60n*ol<ncA@Srq-?d
+p\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]P[77U!E:?b[?;=dW^;#iZS48_5348qA>48q8C4$#Gar&aa9s#U3Ar&ad:"$&>#
+3W;#;3WD,?<W#er;u';m;c6To;u]hs;u]bp:^^&q:JO\\:/F__;,R9g!DcPJ62jg^;Z'Gn<;TYq
+<;fhs<WZ?)=8c2"<W?,"<Vohp<<60%qGdSt<E8osqc3SqrE&u!r`B&#rE9&#s&]5&s&oA(s&f>(
+rE0S5>?kK@?XI,G?XI2J?iFI4@K0dD@q9+[ASGppCM[bbC]85ODZt-$EcZ>FrcTB-G^4U]I"$^%
+Knb>;M2@+IMiEaXOcbilPa7`.U8FmgWA:EMW2Z_qX/i>)Yd(L@[^WfY]Y2%q_o9[<b08,Ud*g@k
+eCE.&g"bE@i8Wh]l0Rm/oD\Ccp@n@Yqu6SZrs#<:?t!AK?2e1ZSrnSHCL^UM6pjdYE,JiE5Z9Qq
+/iGLM5!;"_2)Iip7Rfm:7RfC!5Q3kH3s\JZ<E)su;H-PUrs@Y_IqN7u?=.)GrETA."^>59>$G2/
+=T_],=]kZ)$<C50<)lps<)ZUlrD<Vm;,HaZISN[8:f1+h;cQk!='8[0>[1QA?X[DRAS#LfC27X'
+DfKc<FEVkRH@1-jJ:`H/LP^nINK93bPa.T'S"-(BTqeE\VlHf"Y->1;[C3TU]=bkm_Sa@4aN;TJ
+c-F\`e'uq"f\,!6h;7&IiT&t[k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?
+s,I&/~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/2AoCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3ATs$'R@'\@TV:eHr1X.bs.ShSq4mh_s/#^Zpm(lFq3CoE!13SM)OHhZR$j>0
+R@';+R$O,,Q^3u(QBRZ!Q'RYurfn@ePa%AsPED#lOcY`eOHPdVd*^(^bg+DUbP]QacMl&fb8&:G
+bKS,Qbfe,MbfRuHaiMQB_oBU4rPAWP_nk(n!2odms/>pprMKUks/#gnVYm=rWN)u!X/`3!W;`dp
+WrK.!X9,N*XSo1$XKAW(XT,=&XKAZ(XoGO,YHY::Zi7?9[^`o\]Y=9Xr4r<Hs1\KGrk&6ErOsSn
+_Sa@5air#Td*gCnf@\d2gYL`EioB4dlg=67p\=OZq>0sbrVl^%rVZQiqYU0frVc_Hs0DY*r;$<d
+!Vc<cruCq(kcV53q#CB`XL-c\Mi3j,US+9O?".-CXKJW'X:_F8>[h)I?X6j@_8*k'_8*h"MuPC&
+nac5Ao'c,<mHNfrjQ,:Vh;$]9f$r*nbfe,J`PfX0`PT@&]=YP][C*BL[ICPQ:/=\_;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*&%
+Yd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nac8Bs7H?a
+s7QHerqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/&=oCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3=Cc>rH[bgDk_/tiiIq5bqJcISrc8!Z!ci@'pMp7RrGqpX(is_=EcZ;BEH-#=
+EcZ8@EcH);Ec5l8Df5Po&oqr1DfK]6E,]`6E,KQ3Dk*8drg<bTr0dPO!1NnSs-F1^Q^3u'Q^=#'
+QC!o'Q2['QP`h8oPEPp/!g8b1gHkaps,?f4s,-c5s,?r8s,?u;!07#;rJ^]7rJpl:s,R&=qN(]>
+rfI/CrK6r>!0dDH!gT(;qj75J"IYXDR$di=!goCDrgF4aS=Q7ETV8-UUnspeVuEV1WiN5'Y->4<
+[C<]Y]Y(ql^;.Lu^qmhb_$7co_o0O5`r=!qaNMlVe(3.)gtprHio9%\k3)!pmI0W>qLS[mrrUEW
+^&>Q&]".k3j42;g[BG@AR_@%l[tBO=I;3G79RD#/F\Pe1K7\Z*JqAN':/=ni;,U7fLQdj`OH>N_
+NfO,EiPr^G[^`cSrjDd5s0*BEXK8G"VPg2`TV7sKS!]V0Q'7ApP`_#dNW+k9M?8WlM"$:O:/=\_
+;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"?7G
+U84ZaWN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6
+nac8Bs7H?as7QHerqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/&=oCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j377TjA:/C:UiDBSOnPT9Hq`F^<mQ:G0"Znb,3]fG#3rM/;3W_B(3rM/>3Xn/3
+3]T5\3&rrX3B:&;q,@>mrDEVor_ibps&92$<)Zaq;GmBh$VsSq:JOY\:/=\`;>j>G5laj^;ZB_q
+;ZKer<W?%s<W#qt<WcE(<E9$!s&B/#<E</u<<?3&<r5nr<WZ?'<r>to<r?%t<rZ8"=Sl8"=T;G'
+=BYQ(!*T5%"'So6?Mn.F?sd>M?t!GN@:<VS@q9+]AS5[jC23``s(q[P$u^*)EcZ;EF`qtQG^9:7%
+"*MTJq\o6Ll%"IN/dgqs,@>GOcu#rS"ZXTVuEV9WMlhsX/rD*YHY=>[^WfX]Y(qn_SsO7aihlPc
+dC5@e.:*]f\>6?i8`q_lL"-5p@nR]s7u]k!rW#rPQ(`SC0k<I?RoMk?D*C2F_YAh=%,MQ?u^-h5
+<i(*0eP=54[)"k0f:dZ7n,s<77Ka,3C!L,!]rM;r)Eer<)ShX&`0C6B45(P?!prC>[:T??!CV6>
+6n>6>$>'2=]ei+<tSG6<`E(!;cH[m;c-Cg;,C+dn54[1:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B
+4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52StD^NUo(&hWiW>,Z*UgG\%0,`^;%M$`
+5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*fc9o()DPo`+Uap&Ojdq#C0iqY^6ir
+;HTdrdk*/s*t~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0@sa5rS!a/JoUu/VoqDG]q4d_\qP<k^s/,g]rKQc9s-EYNq3VJVR$j>/R@'8*
+R/<0`Q]mVuQ'7MuPE_;sQ'@MqPE_8lOoCFOO4DY)dEp7cc-+>Ubfg"0!6tMe!Qr[dbQ#d%c,n/R
+bKS)OaiVWD`lH!8`5BI._Sj:C5mjKeVl6PlVl$AjVYm:hVZ3P"W2ZesX/`2!Wr8pqWrB'mX8oC%
+XT,@$X9#H+r2gO5YHY@?[C*HP]Y(qk^VRe(rk\WMs1eTLrP/BH#/.ab]tD%mrkBku_o0R9b0A2V
+d*gIqf\+s4gtgoJj5fCflg=67pA"FYq>1!cr;HQkq>16krVhBJZMt1-q"XUYq"OL[ruCk&kcV22
+q#CB`X0^W^N/O!-U7e0N?"%'BXKAQ&X:_F8>ZtNA?X6mA_8*n(_8*h"MuPC&nac8Bo'l2=mHNfr
+k2bOYgtUN5e^DjjbK@oF`PfX1`PT@%]XkV^[^<EL[ICPP:/=Y^:f1.i<)lt"=BSd2>[1TB?t!MT
+AS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf*S"6.DU84W`W2cr$YHY=>[^WfY]Y2(q
+_Sa@4aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8No*+dZp%J+RrV6Egs8)Zj
+rqucoo_sFANW4M~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0=_D_qIXZnGKD^E%KD'uoL$s]dL&Zo,E;jeTDuanVEr'kJEXHf-EcZ8AF)l5>
+Er0hiEc5l8E,KW5DK'Q7EH#l7DfBZ5rGMaTSt#_J!LoPWR0K+JR$jA0RJiKTR?s8+rg*bQQC!o(
+r0I>IrfdAF"-Je3P1W&'MMmCON;JP5MYN,0N;nk;Nr=t9N;\b6NrG%<Nr>%5O9Ui1Ocb`fOo1CB
+P5ppJPl[2;rg3_SR/NBMQiNKPR/NBNQr9?@R[]e:StD[LU8+N\VPg>jWMlerX0&P.Yd1UD[^`r^
+]tM.o^VIV"_83n%^qmn*_o0O5`lH0Bb08/Ye(*+)gtprHio9"ZjlYajlg=68q18Rms"F5j]tM%h
+]=YV`s754#aM50eLPM>4d*K4SM5u,@B5UCgGBe7);GVpsJUrE)J:IPo%9-2&;,E%3OckffO,]-Z
+s!ZgF_Rd1b\$i]O[C!9EYcb+/Wi2bkUS=HTSt2=<R$O#$P*;,mNfK+uMZeonM2I,YMLJ;r:Jakb
+;c?Xq<`W=*=^,-9?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*ol<
+o)J:bo_%nNp@nO\s7u]kr;6Kkrr)KgJcC`0J,~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX077g'C:/OmV;UJ>B4?NL&rB'm=p,i::q`Fg="Znb,3]]A!3rM/<3WM8@3rM/<
+3r_5=3!!#Yr_rVl!)r\kr_reqs&/tu;H!Ehr_NJf"A_ik;,Gn2#?"K!<)cdp<;ont<;onr=8Q#&
+=&i7$<`N0!;up!"qGmPrqc3Ys!EE1s<<-(u<=;i/='/O*<`W:&=',<%!*T;'!*B,$s&]5&!*T/#
+s&fJ,>$>-9rE]J2ra6CJ?smDN@:<VT@UiqZAnYjlBkhD^C]A3%DJsE2E,fl<FEM_LGBS1UH@($f
+IXcp#KS>/9M2I7ONf8pVNK90aPa@o7V>R:lWW/tVXKAV-Yd1UB[^`l[]Y2%q`5]g<b0/#ScdC1j
+e^`:(g>(QCj5fFgm-jN<p\=R[qYL*dr;HVYs#Tt?Bjb:T>[LlG?Cm71F_P8e=%5SR@<6En5<i%)
+0J5455!;%k0f1^X84?!;77Tg-3&s/c5!(l"<;feu;H$JTrtO:dI:Zen?=$uE>[1Q>?!UZ?>[(J2
+=Vt4B='&C'<E3(#<)lps<)QRk;,C(e:/OjW;1;89:Jakb;c?Xq<`W=*=^,-9?=.)K@Us%^BP;-r
+D/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@
+bKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*ol<o)J:bo_%nNp@nO\s7u]kr;6Kkrr)Kg
+JcC`0J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.Apff#U7;(Sq4R\[pS.MZ!2TOfqkX(br20Cir2BU[r06Z8!g]1>qj7AMrKo=-
+R$O,*R$F&)QC+#*QBmc$Q'IZ#Q^!\tPa.MsQ'7;kPE:lhe'ZUmda?Fgc-FVXbPfWfbKA)Sbl5`j
+bK7lLair#OaSs9jaN)?B`l5m:`5BI._SP_-nj<%9r20RoWW&dnV>d@kVuNaoWrK'pWr9!oXT,@$
+XSo:"Y5PL%Xqe1GZaI6M\@TAf^VI\&_Sa:0_o'@.qnW6Hs1\BF/&9!;_o0L6aihrRcHt%jf@\d1
+gtprIjQ>[jl0Id-o_/%Sq>0sbqu$Ekr;?HkquH\Hs02M.r:p![p\+=Rr;Rc3mcU^Wao28>nuK1S
+[uH<3?)+-eS7Q05Y-"e+ri?I+>$P6=?=-uBZGQUWs1eZM^5W(Drq>mQo(2GCnaGr3k2tdciSNAE
+f@SO"d*0_UaMu6<_Sa@0^:_.i\$rfP['T5.In`[6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPM=!
+DJsN8F*)SLH$XjdIt<6*L51VCN/is]P*D6!R@B_<TV8-VVl6VrXfen6ZaI6O\\,Vj^r"".`lQ9F
+bg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60nF?&>ncA@Srq-?dp\4[^s7u]kr;6KkrVcEg
+JcC`0J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.>%i&$Jpr<'o7R!pnqHmmpP&6os+gVnqeuLRs)J!Xr,_IMrG`0bF)l8@EH6#=
+EH1tus)A-[EH#mrEW0k^E,fl9E,TT2E;jb_SXZ.?S=>t9R@9TDRK&]ZR@'A0R@*r>s-4@cQ'[i&
+Pa.N"Q'@Q"QBd]#P`q5lP*5<#nj<%9r/:T6rJLZ7r/1]:Mi3OQo8WX-rf%8FO,o<]O,oBaO,s4#
+s,m;Bs,m>Erf[>Hrg!kUQC!u,R$a>1RJN<KQN<D=rL!VQ$_!QTS=Q:FTq\<XV>dA.W2ZbrX0&P.
+Z*L[B[C3ZZ]Y2"m^V@S__'d%7^qmq,`5T^8a2uKIcdC4mf\,!5h;7&JioB+]k3(smlKn!2q#5jE
+dJlK'`P&pr]">P`\,Z$ZeB#A2YD.h&_U6cAK8HUaC1_BXH$FRU<DnL&Jq8K)Jq/>G:JXqe;Gg8F
+P*(ohO,f3ZNrK:>`kf6o\,E`^[C!9EYcb(-X/MnmUnOKSSsu4;R$O#%P*D2nO,f3YMi3IJM26uW
+MLS>q:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u$qCi402EcZ>GGBnL^I=Hg#KSG8=MN!RVOckro
+R$jG6StMdPUo1/kX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8Wd*^=lf%8R.g>(N@i8EVTjQ5OekiqBu
+m-O--n*ol;o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*/s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.77TpB:/=_amo%P1r]C0BrAsm=r&jF0!BN=A3WM893rM,@3]m=%s#^0?rB's=
+r](*]<)cjsrDWPl!)r\k!E2nq;u]hs;Zfop:f.'c!DZGi:'+3f;=HmB6M<_D;Z]p!<r5ns<rQ2"
+<VTVp<<H3#<`\oo!EN1t<W?%l<W6)"=T;D(=&rC(r`BJ0=BAU+=BJ^.=oMS-=]ed/=o;D#=T_i3
+>@%26ra5P1s'Yq;A,KjFAnPdlC27U$Ci+'-rbi![EH6)AFa!_-*dN'ZIt3-'KnY89Ll%"JNK0']
+OH5HaOHG`nS=l^Vri,prs/H%!1T[a`Z*LaF\%0)^]Y;5!`Q#s?bKS5WdF-Oof%8R.gYLcIjlkpm
+mdTi@p\=OZqYU3hrfR3^mYtiX?T;:r?=.$/O+MLf?s-Q"6r7E9EF(jp;EHQa1b(^R4ZkV[8Ou??
+77K^97Q3:e5!;(l4A8[P<E)rs;NUnagS9..@:3AJ?N".U>@(T?>?tE;>$5!1=]ed-<`W:&=&i7"
+<)ljr;Gg:f;,U7f:JgOXIn`[6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPM=!DJsN8F*)SLH$Xjd
+It<6*L51VCN/is]P*D6!R@B_<TV8-VVl6VrXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Urf@\g2
+gtgiFi8WeXjlYail0@U$m-X60nF?&>ncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcC`0J,~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.B7ZD-X.H$aTE:g[T_bAYUACY`V#@+iV#$qeVZ!FkW;NXlWrK-tQ2Hm9Pl[2;
+rKmSNq3VbZR$j>-QC*u%Q^*o'Q^=#%Qi<6TQB[PsPEM,pr0.02!n,WJrmLho%F3;Ed*9hYbK\5R
+c-"3.aoBTbb6#o2bl5ZnbK7iJaMl0<`lH$:a2Ggn6.SC&Vu<IoV5C-eVuN[qWVWRhWr9!rXT#7$
+WiQ-#!j/Q+rN?1&rN6^9Z*UgH\[oDc]tV>"_8F40rP\oX_o'@.rkS]R_8!b^^_al+`5T^9aN;WM
+cHjqgf%Aa4gtq#Mjll^0%dNELo(;YMq"ad_qu$?hrr)lps8)orrVc_Hs02M.rV?0]p\"7Qr;R]0
+mH1OVdJj1Go;oIY\W2Q5?D=0eSRl65XfhT'&ZJu>>$tZD?!FVO_SO((^V@LAs"=9Co()GEo();=
+m-3]qjlGCVgtLB4da?Fcb/q]E`59C/`PT@%]t(V\\$WQL[d^YR9hnJ\:f1+h;cHat='/U/>?kH?
+?XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?\uY->1;['mKT
+]=bkm_8=.0a2lEHc-F\`daZh!f\,!6h;7&IiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,R,0~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.>\nP*LOk&/o7Qsoo7[1!q1\TuoS<I&rG_XPs)7sXqf2[XpMpCVEcQ/?r,MaW
+)K9_<EcH)>EGol:EcH,?EGol:E,fo:DfBW5rG_aSs.0:^St5kNs-jFbR[KY5R[BM4R$a;/rKd_U
+Q^=#)QC%T8"dYF<QBd[4Pm!>:Q'7@06.SBuMu&D4MuSb-NV&8/Nrb9%qN)GQOH>TeP*2#nQ'IZ$
+Q^F2.R@9P4RerNPR/30JR/`QiR[fq>StD[LUSFW^Vl6SoWiN2'Yd(M5ZOF4K\@T>c]tV4q^VIY`
+_'[%8_Sa=2`lH0Bb08/ZeCW@+g=tE=hVmJSjQ>Xilg!g&mI9cDrdk*ss!m?P^q@:j]=GG\s7#$t
+aM,'bKnlA>daPd\MlV\MAT(7fGBe:2;1sRRJc:9$J.PIO:K11h;,E"1PEM#gNfK*Zrrq/s^pph^
+rjETO['R*EYHFt-Wi)_iUnXKRSXZ%8Q^@W6"-JY)NW"b;Ll$tEn;;]i:/=\_;,U=k<)lt#=BSg3
+>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%(MO-#NhQ'[l,S=Z@HU84ZaWN*)'Yd(OA
+[^`l[]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Mj5]7`k32'olg4!*mdKW6nac5OoCW%T!quB_
+rqQNhs8)Zjrqu`no_sFANrOV~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.6q9d@:/=_`rDEAgb>J:$!^&P+r&Xg=q`O7-r]1*@3]m-ur&Y'C4$#Da48h5<
+49%>F3E9'Y<E9#trDN_r<W#er;ts8j;Z]os<;of#;Gg:f:JO[a:]F/k:JO^b6.S@&;u'Gm<WuT,
+<`N.#rE&ks"'&<$<qfSp<*&iq!E2tq<W5tt<<-)!=8uD&=8u;$=8Q,!<ruK,>5VP&=T)A1=BAU,
+=]ed/>$G6;ra5\2"(,GD?iFFN@UinYAS#@^A7]CdBkhF!Ci+$,D/O<4EH;&")K^.IG^4R\H[UBq
+K7nu6LPUeEMi<XVOHGZirK@JNR%0kGVl?ZoW&(HSXKJb2ZF%$J\@K8b]tM4t_o0U<bg+S_daZds
+f%A^2h;I>TkNM0smdTf=p@nCZr;M`V6/mT0?s[2F?!L]BRu`,ABO=nC77:$bF`UqU5Z9d"/MnqA
+5!1qc2+^>077Ka87Rf9q3BfSi4?Q;:;cQgs;GpGTrs78NH=gVo?=.(=>mXb??!LW<>[(H:r`K>,
+=]ef(<Y/20<Dumr<)QRj:f1+g;,C*Y;1D;8:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCi+'/
+EH?5FGBnL^I=Hd!K8#&9M2[FTOHPinQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^:ke^rI,g>(N@hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0
+s*t~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eofVm<o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+B82k4X.u>\T:hjNTV8(OUAC\cV>[:jVZ<UnVu<RmWW&piWrfAdPl$aEPjak>
+QC!u)qj@DM/=;]hQ'Rf*Q'RW"Q^*l'QC!r&Pa.Q"Q'7DpP*D/oP*;*Ye^N'tdFH[mdaJ-B%+!5D
+c-4;RbKJ,PaiaV,!m/U-rlYAeaij\*s2t\fai;?A`5TU3d6[r4Vl$?eVZ<^lW;ijmWr8t)XK/A%
+X/rD'WiH'"s/l4%s/c=)YPta;ZaI6O]">Vg^;.V&_o0L4`W!jX`Ph\ls2+fR!lDdirkeZQ!65#Y
+*m)RKc-F\cf%A[2hVmJTkN_F%n*]Z4nauMKp\FX]rqcfqqu$Bir;chJs/uA-rr)Zfp\4CSo_e^m
+p?^qDZL%Sj'D8N=hlMirQ<p;ZT:KP%Y-"k.Xo>C0WEWV2@:!8G>I)/`rk\TJN;kR0p%%\Go^_SB
+n*K9$k2kX]h;$`:f@&'nbf\&I`PfX2_o9I+]Y(eb[C<NNZa@.1[!teF:JXe`;,^Cm<E<.&=]ns6
+?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=QOHPfmQC+,1SXuOLUnsugWiW>+Z*UgG
+\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o(!%Wo^qhLp@e7[
+q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+?#=b-KnKAVo7QsoqM"g$reLB*pkSHsq/H:NrbqjWrc/![oPstOEr9qWE#We9
+EH#o<F)Z,;EH6#<EcH,?E,]f:E,fi9Df>Vorbi.8T:MRES"?.>S=KSJs-iqT"IPXGR$mr?rg<_P
+rK[MOQ'VE7s-<qSQBd`$Pa.Drd6deioSiC$q2PT;NfT6_r/^W7#EOt.OckomPl?sJQ33J@R@=,C
+rgO"YR@0NBRK&ZSR/iWQRJiQSSGo&lStD[MUSO``W2ZesXKA\1ZEpt<Zo5>$\\#Mf]tV4q^q[\#
+_8*n'_Sa:0`Q$!Bbg"DZeCN7(g"bE>hV[;OjQ>Xilg4$,n+-/IrIP!qrrhK$_7dJ[])T5ts7#!r
+a1\g_KnctTf$h9cN3%PGAoC@gGBe70;1sRRJV/Q+J:LBj:K11h;,E"2PEM#gNK0!Ys"2sD^pge]
+\$rfT['R*EYcb(,WMcVhUS4<OSsu.8Q^3huP*D/lOH#6YMi*FKre^-%In`[6:Jakb;c?Xq<`W=*
+=^,-:?=.)L@Us%^BPD3sD/O<4EccGJG^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8StVmSV5L;mXKA\2
+Za@0M\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N_VjQ>Ufl07L!m-X60n*ol<nd"dYo_%nN
+p@nR]s7u]kr;6KkrVcBfJcCc1J,~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eoeQ12o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+77TpD9`%Zd;?'Pd;>O,R;>X8e;#iZR48_/=48_563rh>=48q8E3BB/]3]m4"
+r&ap>"$8P)48V);49&@\<<6'!rD`eq!E<"o;ufkk;Z9Sp<;of%;Gg=g:/=V\:]4&96N'p`<rZ1t
+<WH5"=Sl,%<E)t!<r5l$<)lpt<EE5o<W>tu<)rour`9)%r)`l"rE&r"!a/]1rE9/&r`T8)!EiP(
+=oMP'=qb+F?!UcB?!guH?XR8M@Us%^AS(jO#A.U^BkhF"D#S;ODBNk:EH6,BF`qqPG^4X`I"$Qq
+JV&Q/KnkMBMi<XUO-,V)PSoaPR%'_DV5UAoWN)qsWiN5'Yd1UB[^WfZrk'Mi^VI_)`lQ<HcdC1j
+eCN:*gYLfJjll!pmHsE4nalDGp\OdbNrK:9J7Dql?N+71?8e=6J9#=1=]IjX>A8>(@R37Y3&*!A
+.R-*Z4>euf7n?'=7n#m:2E3]]4[(tj9N>"k<E)jo;iq"ef:dG#@U<AJ?=$oCrEL4E=^,'6>$4s2
+=]nj/<`N.$<E)pt<)cdr;Z0Jl;ZBS_;1D;8:JXe`;,^Cm<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH6/DGBeF\I=?]tK8#&9M2R=QOHPfmQC+,1SXuOLUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&T
+cdC1je^i@*g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o(!%Wo^qhLp@e7[q#C0iqY^6ir;HTdrdk*0
+s*t~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^M/UqOK52VTDtSaU%kA[U]7.eV#[ClVuEXmWVrjlX7`OoXo=O[Q2[$;Q2d-j
+R$O,+Q^F,,Q^<u(Q^*i%QBdf%Q'[f%Q^3o$Q]qE5!0dDF$'CC8Oj__/da?PCdK7tIe,Ic+d*^1c
+cHOPWc-+>QbKS8SrlGJhai_ZIbfe2NbPoQba2l9?rl*/Lq54CnVl6PnWUd(fX8]-uWroH'WiQ-#
+!3Q("'<eXFZ*UjH\@K5a]tM4t_Sa=1`W!jga2l?B`Pf^4_Sa:0`5BI/_u@XT`tcV8aN;WKbg4\d
+e^rL/hVmJVkj.[+r:($_p%J1Uq>'mdqu6Krqu$Ekrdk*Nrs8W$q"XUWp%@qSrrr&]lE/5-rr424
+Y.<PlNJj'7U7e-KARVaDY,n_,Y,nU,>?YHB?<pd@`PVVjs1JEHN;kR0p@@eHoCDJAn*B3#k2kX\
+hV?c9f@/-nbfRrG`l,d3`P]O*]t:hb[C<NNZaI42[/WjM:/=\_;,U=k<E<.%=]np5>[CcF@:E_X
+AnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2I7PO-,TjQC+)0SXuLJUSXleWiN8*Yd1UC\%0)_]t_A"
+_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qlg4$,n*fc9o()DD"n_K\p@e7Zp]1-hqYg<j
+r;HTdrdk*0s*t~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^Kti(G(kYLK):5tKDU>uK`Hl)L]*&,L[9fsM=tofDuFYFEr9nnE,fi9DfKc9
+E,fl:Ec>u<EH#r<EH#r:rG_dT$?0p%EGqA=T:MLDrgX%]S=TYL%[rlTR[TV3R@9P4Q^F20r0RGL
+!0mGJ!L/oKPQ@&6rKYYprJU`9rf$f6s,?N.s,R)<s,[/>s,R/ArK$c9!g/S+rfI2DrfmDI$C7$F
+R$jD2R@9V8rgWqV!L]DTRJNBPS,SrnStDXJTV8-VV5C/iX/rG+Yd(LA[C6(B"1G\L]`,SE^AP_o
+^qmh&_8=+.`Q#s?bKeJ]dacq$g"P6;hV[8NjlYdklg=00nauSOrIP!ps$5GV^V.7j]",;Zs7"so
+a1J[`Kq#s'gX3NaMlqSGAoCXpG^":0;1sRRJV/N*J:LBj:K14i;,E"2PECrfNfK*Zrug+:^pge]
+\$i`S['R'CXf\\(WMl\iU7n6OS=5k4QBd^6P7<\:NfB$WMi*FKM27%GnV[?@Inid9:f1+h;cQk!
+='8[0>[1TB?t!MSAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cQ'Rf*S"6.DTqeH^W2co#
+YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8Bo*+dZ
+p%J+RrV-BgrqcTjrqu`no_sFANrOV~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^I:^e9MYC[pegWZlV[UYp/1fMq)eL8s#^-@p,`78q`Fg="?AM(3B?jqr]:-A
+481c:4$*:>!*9(u!``3"r`&hpqG[Pq;GpHh;?9]qrDW_o#>n8m:/4S\:<l3+<rH"t<rH#"<``Au
+<rZ2!<WuK(<E3!tr`'#!<EA`ls&9,$<``=%r`9)%r)`l""BSW)='5E(s'#8%rEB2'#[1G9=BSg3
+>[786s'G_4#$tYE?t*VVrFH=HARo@bBk_<tCi')frGO3+EcZ>FG'A.UH@($gIt<3'K7nr5LPUeF
+N/ipZOHPinQC"#0St`'YVlHfsXo>F%XTu&7ZEpsK\\%jRs1TDe_SjL;bg4Y`daHXrg"bHBj6,[n
+mI'H3nac\O"nq]cq>:/PrrpSl@:!8IrE^=HSW8/=B3eY?78.0.H?3CY5$']t/Mo+Fr]L3<)+d=h
+77B^87n,Es3^5bk4?Q><;cHat;,U>Srs7)EH"LGl?=.%<>m">;>[.22"C#&5=]kZ+!E`G&<=)]+
+<`N*t;GpImrDEPl!`)ZinPT<\Inid9:f1+h;cQk!='8[0>[1TB?t!MSAS,RgC27X'DfKf>Fa&(V
+H[U?nJV/W1LP^nINfT<cQ'Rf*S"6.DTqeH^W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnde'ut#
+f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8Bo*+dZp%J+RrV-BgrqcTjrqu`no_sFANrOV~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^MSt'OfA8N!20=bqP!tbrhTIgs/,dn!3#mrrMoOkpoO@priZ6`s-!GIqN_)F
+qNV&FpQbcEr0RGN!L9&OQOB1GQBdc%Q^<u$QBqH6rKIJLP*1rjeGdo"daZjsdJ_PndKn1Hd*^1d
+bg"E3b8SLHbK7lMaiV]IaiMTGbK7rNaiqfIa2c<Aa36jOW2HQmV$NrrW2Q\pWiE&kWr9!uWrK+&
+WiW8$WrB+"XoGO(YPbX)Z2V*0[KX1P]Y(qnrk\`S`5MYps2Y,["ieO#`5BLj`;[Xl`5Td;aN;QH
+bKS8Ye(3.)gtpuLkNVF)o(2hPs7HNgq"a^\rqcZls8Drp!<.QLWrE>'qt^$]p@\+Urrr&]Y-#h?
+rr4/.WOLllNf'09U7n3LARM^EYH+_*Y,eO+>?YHB?!U[?`r<gW_7mUsN;kO+o^q_Io^_SBmd'*"
+k2kX\hV?i<f$_pibK.cD`5KX4`P]I(]Xk\a[C<NMZaK;0s%Rr;:Jakb;H$Ln<E<1'=^#$7?!grI
+@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&iX0&P/Z*UjH\@K5a
+^;.V'`Q$!@bKJ/Ud*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*0s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^L(o,G(TXEqh+s%qh4g"rJ(?-l%o"h!/gDfs)7jTs)I[Oq/Hm_EH#l:Ec?#;
+EH-#>E,YSmqJZOTE1EEsS-,=RS=KPKrgXRhS!oh7S!]V3R$a;/R@'>-R/WHPQN!-XQBdc%Q'RW!
+Pa%GuQHV\qMu\e8MZ&J5N;nk;N:i/1NrG%<NrG%7O84n;OoCODOV*eAPa.JuQ'Rc(R@0M4S"#q<
+r0m_US+iBNS,]#[StH"T%ABMlV5L8jWiW>+Yd1Y8[f<fB[^W`U\\,Sg^&>\F^])%K_'6b7`Q-'B
+bg"M^e'lk!g"Y9;i8WhYkNM0rm-X<5o_&%Wrdk*ps$58P^:_(h]",<Ms7,$o`4E:1Kq#^$gsNK[
+Mm%bLAo:RnGB\1/;1sRRJV&K)It(3h:K::j;,E"3P)tccNfT0[s"W3G^UUhb\@8oT['I!BXf\\)
+WMl\iUS4<OS!o_1Q'7GsPE_5kNf8sVMi*FKM27%FnV[?@ISN[8:f1+h;cHat='/U/>?kH@?X[DR
+A7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-LP^nINK90aPa.T&S"-(BTqeE\VlHf"Y->1;[C3TU]=bkn
+_Sa@4aN;WKc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUp/@s,R,0~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^I:ae9MP4W!)`/\gemr0qE+^<!'C0@s#^3Bm5t8-!'0d7r&a[7s&T(u!*8ts
+r)EYo!E<"p;ufkl;?9WmqGRSr;,C"`:/B)#!*/qrrDies!*/qt!``3"r`0)#<`Suqpf75mr`/u!
+#$4i*<``@)rE'#$s&]2#!*B)$q-*c#s'#G*s'#G,s&fJ.>?b?<rEfM2"^YPE@U`mHAOC'@AnG[g
+Bk_<sCM[g(DK'Q5DfKl@F*)PJGBnL]I!pKpJV&N-L51SAM2[FSNK93cPa@c*S"?7IV5C/iX0&S0
+Ycdu-0<_Uc[C3WW]"G\i^VIe.bK\>[e'upuf%8U0hVdGUkj%R'nF?)@o_%qPq>1!drf7"&]lmdj
+?!U]A?<sY(NIPnZ?!0Wb:L8'iEEb[p=?&#e2(q2n4T@8V8Ol<?77Ka87Q3:f5<V1m4AAdR<)lpq
+;H&\W&($_fARf%R?=-uD>[1K=>lIt,=rgaJ>$4s0=&i:%<)Zar<)Zao<)ZXl;,L4h:esqbnPT<\
+ISN[8:f1+h;cHat='/U/>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-LP^nINK90aPa.T&
+S"-(BTqeE\VlHf"Y->1;[C3TU]=bkn_Sa@4aN;WKc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,R,0~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^Mf(.P+_fHs.KCcqkF+cs.o[krhf[ms/>ssri5OiqlKXrriZ4'!3lBas-*JI
+qNV&FrK[AHpQb`Ds-EkSQ'[i)rg*eRQ^<u'Q2R!kQ^3r&Q'@MuQ'@MuPEM0^f%&=#d*gFnf%/@!
+e^;gne,Ibpcj%hAb08#Pao9I!bfe5Sb0%iKaiMWKbKJ#NbK%fI`lH-B63*q^V?WrsWMuntWUm.i
+X8f4"X8f3uXT,F&Y5PO(Yl:p+ZOaFN\%&u\]Y2(r_Sa:0`5V_q!6>&Z!6>)Y!6+iRrkg#"`lH0A
+b0.uQcdC4kf@o';iSrt_lgOE9o_%qPp@n:Uq"ad_rVHfsqu$BjrVhBJWW)tqrq?KfoC`"\"n_/`
+Y0$S?rtjgqf&!NiMj@YCTq@ic@'?c9XfSV+Wi5o#$t3LK>[+MQ_ns7,^V#L)0)>,2o_.tLoC;57
+ki_*ij5AeLg=b'*d*BhVaMu6=`P][4^V.:k\[T#T['d6Jn?i3iISN[7:f(%g;cHat<`iL->?kH?
+?XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:`E-L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mHS
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^L2#-G^oXDon<@!qhG**l%o%ir/1#`!,qgTs)IaQr,DaVDuObTE;snZE,fjq
+E<(%XEW:"XEW9tmEH#i9T:VUES=5q=SXuFDS=Z4?S=TYKs-itUs-O"WR?s>0R$mr@s-EhRQ^3p8
+Q3`bAQBRW!PE_?T6Mu`GN/NUQN/`e^NW5%<O8b4@Oo:CAOnt4MPE_>tPa.Q$Q^F2/R[a;HqjRbZ
+S"#k7RJWEkS"-">St;RITV8*TUo(&gWN*&&Yd1UD\%&pG\Gs)C]"G_i^:jN[!5JNKs1okq_o0R9
+b08,Vd*^=nf@\g4hVdGTk32*smI0N7p%S:ZrIP!mrr^Zd]tF?U34ZR!s75-q`OiI2L7?!-gs*$P
+TrW`]B5UCgGB\1/;1sRRJ:`B(It19i:K14i;,E"3P*(ieNfT5#1B#hD]skP_]"#2W[Bm3EY-"b*
+Wi)_iUS+6NS=5h2QBRPrP`q8kO,K!VMi3IKM2@+HnV[?@ISN[7:f(%g;cHat<`iL->?kH??XR>P
+A7]@dBkhF#DK'T9FEMePH@('hJ:`E-L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mHS]=bkm
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^ILjd924AAhGF8NpcA75q`4^=r]Kg7s#U-@r]1-A3]]:r3r_;A3r_;A3X%T+
+3]g>Ar`0"urD`r#<E)ut;ufqt<;]\l<<#nm;?B]n<;TSs;Gg7c:Wc!/<E<.#<E<.%r`0#!qc3bu
+<)rispJh#is&T,!r`0##r`9&!!*B/%!EE1u=8u8(<``@*=^(f-"C#&4>$Ci,!*]A)!*]2&s'>V1
+rEf_9@:<YWAc?<?BE)ZFC&_p_CM[g(Df9T6EH6,BFEM_LG^4U^I!pKpJqAW/LP^nGMi<XUO,oEf
+R$jD4SY)UNV5C2jX0&S0YHP+2Y->1;[^`l[]Xtkl_8OI>d*pOsf\,!3gY1K?iT0.clL"'1nalAE
+p%J1Wqu$DOs!t?l@U<AJ>[C`BY+L]&E+WBY7RU'_GC=F45"JU40eP=65<V+k2)Rrq7n3JH$:I?D
+3''8e5!(l$r_inu<DcYTrs?i5F(\rh?<gfCr`oP/?2e%4>[(B8=]el,=;P%=<`W4"<`2mq;H6Xn
+;,L+d;,C+d;,Hd[s%Rr;:JXe`;H$Ln<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]u
+K8#&9M2R=ROHPfmQ^F52SY)UMUo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,A8mF(PFJ2:TV/!PU8%X^#bn)hUnsobVl0Nms/?!uoW.qlr2odtric.%!jRuR
+r0%&C!0m8Dqipi?rg*SNs-<eSQ'[c&rfmYRQ'[c%QN!-SPEhE"Q'@W"rfmYLeC2t!ec*u(e'cap
+f$r0se'ZSBdK%\ocjJ+Ac-",NaiquNbPfQiaN;NFbK7rNbfft,!64FnnjD\/"K/,pVl9Qno;_\g
+#HFi+XfSV+Y5YU)Yl1g>ZE^^A['[6L\%&u[]Y(qm_84%g_uRdU`W4'WaToo-a2Z*:`Phbp(rXD5
+a2lBFbK\A[dFHh#g>(QDjQ>[ln+$DL#57feq"aa^rV6Kjqu$?mrVhBJVuHu!q"OOVo^r%\"SD&^
+Xip\C-fh5]f#Eu5QX->ZTU]P#YHb13XfSY)W*<G0@:*;F>I)5c_SEq$]SleBp[RnIp@e+Lna>c-
+kN:mciSNADg"+U!cH=5L`lH*<_o0C*]Y(eb\[SuR['R./[JimL:/=\_;,U=l<E<.%=]np5>[CcF
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-,WkQC+)0SXuLKUnsufWiW>+Yd1XE\%0)_
+]t_A"`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,=^l8sG^fOBq1S^#s+^H,lA5Is!/UH-pkf&klu;oCrc/!Yrc7gSs)8EeDfBW6
+DfBZ8E,oo;EW0n^DfB]:EGol:rc&*ZS=?(@Sc5,YS/RrgSt2FBSXZ+=S=>t8R@9S2R?s8-Q^XA0
+R/NBLQ2m3KQMm'KPO:d.6g@#:Mu\e7N:`)0N;8J2NW>.8O8tF@P5gaGPlI!RPa.Q$Q^F2/rgNhU
+q4%SVR@9V6r0mbXSY#hQ!29Ces.r)[W2ZbsY->1;[C3QS\@K/]\[oAa]Y2"m]tV7r^qde&_Sa=3
+`lQ<GcHsqcdaZk#g"bKCj5oIglg4'/nalJLqY^>Ds3(EEbJCs*rji'<s8OqHim>]XZ\F4+`n9+i
+Xa[+BQ#C;R9R1i+F];4kK7ST+JqAN':/=Yb;H$FhL6e!cOcPN_NrL3re]#84\[]2\\$i]NZa$[8
+XK/D"VPU&]T:VUBQ^3s:P7!P<OH>N_NJrjTMZ&D$MZ->!:/=\_;,U=l<E<.%=]np5>[CcF@:E_X
+AnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-,WkQC+)0SXuLKUnsufWiW>+Yd1XE\%0)_]t_A"
+`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,6UjU<9MFVGi)08I!'Bp9qE+R8r&Xm>p,i:8"?SY+3]d7#!BN793rV2B3]fD%
+3s%HC<W#nq<<Q?&<E)uq<;]\p;ufkq;ufkp;?Kco;,[?k!*&qr!`DllmR$J3l9bDL"'AW)<Vf_t
+<E)ur<rH"t;uK\m<W?,!<W?,!<W?,"<W,r#<E<1&r`9&!s&K5'=BSi,=U858=^#!3=BSf(>5qk,
+>Q7t.>6J8>?=.(=@/aU7A-6CTAS1pSr+KhZCMRa&D/X?3EH6)@FEMePGBnL]I!g?lJV&Q/L5:\C
+MMmITOHG]jQ^O;3SY)RKUnsreWN3/)YHY:8Yd(I>[C<`\^:h4o^Ve%6d*pS"gtpoFi8WbXkNM3s
+mI'K4nac;Dp@n@Yr;DNQ"J9F:?XNe=10n.iToXbDB3n\/6rI]EIV`"H:JF54/i>.C4Ztnb2+U2,
+7n,p97Rf?s3^5bk4$65:r_ikt;GiMT&B0fRA7JtS?!^lE?<pfA>$Lr1'3\O@=]\a-=&i7$<E3'u
+<)HLl;Z9Mn;Z9Pm;".?]9n#i5:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!DJsN8FEMePH@('h
+J:W?+L51VDN/is]PEhH$R@Bb=TVA6YVl6VsXfnt7['mHS]"G_k^r"%/a2lEHbg+P^daZdtf@em4
+h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?oDeI_p&F^cp\ssfq>^<hqu6NlrUg)?s,[21~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^LMADW0<U@TV/!QUAL\hUnsobVl0Nnri5msqQ0XtrN?+&r361(!3l4&!4)Qf
+"I#"2P*5g.s-3DGrKIAKPa(p-#*tL<QBml&rKdMKrKdtYPa.T$Q^*i"PEh>sPl?q'PLJ(4eC;ps
+e^i4"eC;moeC;pte'cXlda?IhdEp1`c-4DTbKS)Obf\&Mbg";OaiM[)aTK`.aN+-DfgGF!s/>pr
+!NN-kWrB'uXT,=$XSo7%Y-@o1!4)U1"1#8>[/RHI[^WcW]">Vg^qdh)_o9U7`Q-$?b5TWab6Z22
+a2Z*<`l5pq`[JmKb0/&UdF-Rtg"Y??iT'%_lL"'1o_/%Rq"OOXq"ad^q>0sbr;6Ekr;chJs/5l$
+rV-$Yp%%bPrrhu]Xfg"Ls![m*Yi3dCQ!]e^U7n9NARM^GXK8P*Y,eL*>@M#J?!U[?`PfX/^V7@=
+s"=':o^h_JoCMJ?m-<fsjlG:TgtLH5e'cRcaN2BBa2Ps6^qICm]"5AZ[C*BJ[d^\R9MJ5V:Jakb
+;H$Ln<E<1'=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdP
+Uo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olH
+ncn^Xp%A%Pp\jmeq>^<hqu6NmrUg)?s,[21~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^KG#bI<g8<KDU?$L&Qi+L[KuoM>W81M=lc)EU@`EEW'qSEW:"WE<'tWE<1#r
+rbr<dE,T]9EH6#;Df9T5EW0ntEGqA<SXc4>SXl@BSt2FAS"6+?T:MLAS=H%:R@=)B&X\uRR$j;.
+R?s5*R$a2)QBdd6Q2d*F6J4a!6N;rHN/NXSN:r81N;AP3NrG+9OT1IAP5^[DPQ7!IQNrnHR@9S6
+S"0GJrga"Zs-j"WrL<bU#G%HYTV/'UV#I2,Vl6SpXfen6ZaI6N\@B)[]"5Mb]Y(qkrkBhp^VI\%
+_SX4/`lH3EcHjkbdaZgug"Y?@ioTCflg=-/nalJLqu-MFs3(F-qSpCe]"#5Z\@;M<o]+B>]<[0F
+TuPmDa/OiqR$MYaDbPG$GBHk^KS+i,K7\]*J5/m@<)QXl:kk7!PECodO,j5Bp!Ujlrj`!=*OiJa
+Za6m>XfSS(W26>dTq@pIR[BD,P`q;qPE:k)N<bB#Mi*@JLktPXIS<I1:/=\_;,U=k<)lt#=BSg3
+>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqSl6M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVd>Oj5f=akNM0qlg4!+n*fc9rpg9bo_%nNp@nO\
+s7u]kr;6Kkrr)KgJcCf2J,~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^I1L^92&(C;!V!V;Z9Pe;?0Sm48:l548M#:49%A>49%A@3rh>?48_/=3VYW9
+4$*@&!':!Ws&K,$rDrks!`W0"qc*JlqG[GnrDEet;Gp@i;Z0Pn;?0Sj6J4a!6N:'c<WZ9%<Vf_t
+<E)ut<rZ2"<;fbo<;T\q<rZ2!<r,hr<<#r&<`iF)<`W<$<rZ5%=BYE&s&f>(r`T2'rEBS5?!U]?
+?!^iE?iFI4@SpWGAS,OeB4tpkBPD-oBkqL#D/F0/DfKf=F*)PKH$XgaI!pElIt3*'KnkJ@M2R@R
+OHG]jQ'e#0S"6.EU84Z`W2ZeuY-5+9ZF%!I\@T;dr4jGk`5g'Ke(<=/hV[;OjQ>Xilg4$,n*ol;
+o(;SKq"jpfM>oi+An#+R?<plC?*g;fJT>C/=@GVXBRYDF;a+2N6o$)G.m?'Y4>eud7Rop;77B[8
+3&j/f4[(qi9iP%i;H-OlOT,Uc`/nqL@:3JKrEfJ.!F8t0?2n+A=]ed/=]\[)<E<+"<`E!o:Jt*i
+;#jGl;$'Qi;".>29MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!
+KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWA
+i8EVTjQ5OekiqBum-O0/n*olHncn^Xp%A%Pp\jmeq>^<hqu6NmrUg)?s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^LVYLTp(rET`ChcU]$tmV5C,fW2ZcnX8]4"Xo#:"YPGEuZ1kO(Zi60fPlHsI
+P5UUDPlI$GPl?pJPkUFOQB[]!Pa7Q"QBdf&Qi<6eQ^!i%Q^<o&Q'R\uQ'7H_e(*!uf$`*ue,@f%
+dF-Ome'ujqrR(esda?JAcMl'#bfRoKbK7iKb08#LaiMTHbKKn,rBeq"p-S_WoW%kj!N`F&X9Pf0
+Xf\e3ZMh*1['Tb=!k#PKrjVs=rjiiV]YD;#_o0O6a2lBEb0%oPc-4DVbPoTaa2\,!!65#Y(s'hA
+bg+S`e(*%&gtgoIj5oIflgF63o(E"Us7['!q>1!aq>0sbr;6Ejrr)hIs/5l$qtKgWp%.bOrrhu^
+XKC"Os![cGZ0%mlRV%grU7n9OARM^GXfSY+XfJC)>[h,K?<pd@`l,a0^V7@=s!d[7oC_bLoCDG=
+m-*Wojl>:UgtLH4daQOdaiMKCa2Z$7^qICm\[])Wrj;d6ZgbAP9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#&9M2[FTOHPinQ^F53StD^OUo(&hX0&P/Z*UjH
+\@K5a^;%M$`Q$!?b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O--n*fc9s7-3^o`"Lbp@n=\
+q#C0iqY^6ir;HTerdk*1s*t~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^KG)dH$Xr<KDU?$L&Qi+L\Q\tM<9]mEUIfEEW1"SE=6`*DfB]7E,]`7DfG\o
+(iaJ6E,ou;Ec?#;DK0Q4St)@BS=Z4@S=KSL#+h<SSXZ.?qj[h\S!oe5R/E?\Q^4#+Q^4#*R$O#'
+Q2[*JQ2O%t6hWkHMuSb/NW4t5NW"n:O84n;Oo1@BPPgXGQ'VE:!1EhT!h5^Nrgj1`St>kN"e;'P
+SXc5KSK+5nTV8-UV5L2fVl6SoX0&V1Z*LaE[^`iX\[oEN]E#YD^*^V1^qmn*_o9[;b0/)Vd*gCm
+f%8U1hr3VXkj%L#mdTi?pA+Uardk*mrrqo1^q@7grO;h,0_XSVa1Sd6KquiJh8=u&Z$V7G:N06X
+GBe70;1sURJqJZ,It19i<`E!q;,E"3PEPp,!03*>+Rmar]",>\]"5AY[C!9EZ)t+.X/MnkUnF?O
+S=5k3Q'M?5%?lp8N/imVMi3FLMM[/YMLS;o9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkqL$
+DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPa.T&R[ftATqeE\Vl?`!Y->1;[C3TU]=bkm_8=12aN2NI
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@
+s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^I:Xc92&.D;"IQS;YEub48Cr548M#;48q;=3sdr03]]>`4$#Dar]:'>"$/G'
+3Vkc=3BK8_r)Wbrs&T/$"'/E%<rQ+r<!$'!<;]\n<!-&u<)`co##eDs;Gg=ir)<P\dR3^p!*9)!
+qGmYt<)rou!EE+s;u9Pl<W?+s<<6-%r)Wbr"'/K*=Sl/"=T2G+>$5!3>Q%b(=T;P(=pA,5>$G39
+>l@t,?5R$W?t!JQ@UinZAnG[gBP;*oC2%EtCM[hdD%:H%E,p#BF`qtSH[C-fIK"^mJ:`H/LP^nH
+N/Wg[P*D5uR@9V8SY)UNV5C,gWN32*Yd1UC[^Wi\]tV;!`5BL0`5Tg@d*gIsg>(NAiT'(_kNM-p
+lKmp+n+-,Eq"ajdreg^Xn;:gcra,S0,@@dQOb.Xe?!0Wb<GR/8B15$g3B8fC1bV'W5!1_\84Q0>
+7fGg_7Q<@m5<_1k4AGcQs&&hoOT-!g^5[#A?sm>J?=.#E?!^`=>?kG4=o__)=:A>6=BAL'<E3("
+;c$9h;@$)s:f:4h;,C'X;1D869hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkqL$DK'T:FEVkR
+H@1-jJ:`E-L5:\FNK90aPa.T&R[ftATqeE\Vl?`!Y->1;[C3TU]=bkm_8=12aN2NIc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^LhhQQ'S*BUA^kcV>mCpVl6Sori?%"rN6+&s0)F+!3uC)qQ]k%pTk:8PEV/m
+PEV5qPEV/mrKHr>rfmJLrKRAIr08ChQB[]$Pa%GuQBRW!Q^<u%QBdc$Q]m]#Q'.B]daH[qrmh%u
+"kD,Re^DqEdf7f"dF6Rldf.Pqda6CgcMYodb7;V8aNDWJb/h]HaN2KHaiQpG6N=%XWrB'uX95T+
+Xf_T+!O8s0ZN[_D[C!?OrODp>rj`$?rjrWQ^VRe*`Poj<b0.uPbl,fdbQuJ;b0%oKaN;X'aoBO(
+bg4\cf%A^3h;@,Lj5f@clL"$.nac>Gp@n=Vq#'sfq??corVZWnJcDVI#QFVpp%@tKo)&Fip$o)b
+fDbduq5_9qSu%O:Q=Q\`Tq,b&YHY12XfSY*LKe"n@:*AH>I)8f_SEq#]SleBp@\"Lo_.nHnEoQ*
+kN:meiSWJFf[\EtccjMPa2uEB_o0=']=PP_\@&`O['d70[/`o"9n,o6:f("e;cHat<`iL->?kE>
+?XR;OA7]@dBPM="DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k>Tq\?ZVl?\tXg#(:['mHS
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBO8j_~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^KP;kGC+r<K`-W)LAco)M#3&,M?&RnM?&S1EUIfFE<(%XE<'tUE?B.>E,fl:
+DfBW5DJsE3E,TZ7E,fi;DfB]8DK)2;S=]\Ms-s4_S=Z:@r1":eSXl7?SXZ.<R[KY5R[KTCR/`TS
+Qj&eBQC!o(rKdAHa[>kj!K2p1NW"h4NW+t8OT1FDOHKI(!0dDF#a:L:PE_>uQC.Z>!1WtXs.'.]
+rh'+["eVBWSXc;NSc53#T:hmQUnjibW2HSnWN*#$YHP4;['dBQ\[oAa]DB/g]tV4q^qmk(_o0O7
+aihrScd:+he_&R0hVdDSk32*rmI'K8o_81YrIP!krrhH$^V.5X[lCn,s8VfSeAo81L4lDGin_G)
+O1'7WCN=>kH$FRV<)J=%JqAW,JU_E1:KCCm;Gg;GP`q5kOcPN_rr_Z8_n,fW*kJef['R'CYcY%.
+Wi)bjUnFBQS=,b2Q'RYuPa%;krf-r:!/gc4!K)^&M?$?L9n,o6:f("e;cHat<`iL->?kE>?XR;O
+A7]@dBPM="DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k>Tq\?ZVl?\tXg#(:['mHS]=bkm
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`np&9OBO8j_~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^I:Xb8kr.[:[V'Q;=[WQ;>E<L3qtf73rM,B3]T5^r]:6D4$#GbpH&=7"$/G'
+3W(o@3BC2@<VTVp=8u=t<W?"u<U`uf;uTYp;uKSp;,[Bla[>kj!E<(r<rZ2!<WH.q;uBVl<W?,"
+<W?+p=8u;$<W6%n<rcA#=oV\*=oDG'>$:i.#?b56>?kE=?2@n-?NX\E@:K4G;.X?OB4kmkBk_<r
+C2.O$DJa9.D/O93EccJKG^4U^H[L9lJ:W<*KnkJAN/`dTO-,WjQC+)/S=Z@GU8+Q_W2ZetYHY7:
+['mHR]"G_l_8F7k`ui=Aai_lTe(3.'g>(NAiSrnYj5f=bkj.X,o_81XrVhZR/_bhd?X@&G?!UcD
+[%`\8F_G)c771*mKRRN#6=)T-0K(dA5!1tj2Dn&r7n,uI71_XC3']\l4$,Q!;H$Oo;GpARrtk::
+LMgU0?=7,H?X@#C>?tE:>?kB:>$:i,(g0pC=&`4"<E3!s:f(%e;Gp@g;,U4e;,?[Y!)3AdInid9
+:f1+h<)lt"=BSd2>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*1s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^1MbWPb4nKrM'IjV5C-hVuN[tWN*#"ri?+%rN?1(!3l@*!4)L,q6Kh&r3ZF1
+!4MiirfR>HPa)$.pltZ@!1*SKs-3MJ%$ZsAPa7W"Pa.MuQ^%H6!0mDH'pFoKe'c^od*gClf$r:#
+e^W*sdaceFe,Ri&eBuaoeC)dld*M[;$-^Z:b07uNaiha(aTou/b0.lHa2l1dr'LF`!3,anri?%"
+riH:+YctD3Zi@E4[K3kIrjhp;!P?#D]a_cn_SjF5aN2KGbKS5Urm(Mfs3:VhrQGGicHaYXc2Pun
+cdC4kf@o$;ro,![k32$nlg=-0o()DFp%J+Sq"aa\q>'mar;?NkrVhBJVZ-o#q"FCRo^VJKrri)d
+WiXtSs![ZB]]l>_NgGu?US4?NARMaIXfee-XfHMG>@V)K?X$a?`l,a0^V@F>s8VdDoChkMoC259
+lKIEojlGCXh;$Z6da?@aaN2KFaMu*8^V.7k\[],V['d6J[.(L'9`Ih9:/=\_;,U=k<*!%$=BSg3
+>[:]D@:E_XAS5[kCM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE
+\%0)_]t_A"`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojd
+q#C0iqY^6ir;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^0>8nGCG8CKE-`(LB!&*M#)r.MY`7sMYE&/E;=M@E;FSSE;jhcE,T`8EH,r9
+E,TW5DZ"GNE#!;1ELiVjSXZ.?S=Z7BS=Q1?S"#t<rga"X$D!ZVS=Q1?S"#h7rg=+[R?s8.Q^F,,
+QC%T:"-o1<Q2[#d6i9:ENW"h5NW5%=O8Y1=OTCW0rfd>Gs-*JG#EtC:QBml)RJrWWS"-%?rgrqX
+!20=`!1s1^!1s1^*2'""USO`aW2ZerWiE/&Y-5(7Za@0M\@K2]]"@pR/%`I-]t_:r^qmk(`Poj<
+b08/XdF6Rpf@em5hr*MUk32*rmI0Q9p%S=[rIP!krrh,q^q7/U[ii-Zs7PF&aM,-<KW*,UhS=f(
+[=312E,JKtG^+@1;1sT"Je<K<:JY"i;Gp@hL6Rj`OHGN_NrLiucb[0'\@T5][^<EIYd(F8XfJJ#
+Vkg,^TUq[AR$a2)Q'7DrOcPN^NJrdQM2I.IM"$<%9`Ih9:/=\_;,U=k<*!%$=BSg3>[:]D@:E_X
+AS5[kCM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE\%0)_]t_A"
+`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^-kI_92AC_:\.EV;=mcL;?&]Q48M#348h5>49%AA3WD,E4$#Da3]fG$3WqN*
+4$#G!3W;):<VBGn=8Z+u<W?"u<UWo`;?0Yp;?0Y66i9:H<WZ9#<;9Dj<!$'#<rH%p<rQ/%<``E%
+<rZ8"<rZ8$<rH,"=T)D&=o__(=T2J#=p%u6?![G9s'H4C?XI2L?t!MR@q0%\Ac?9BB5%3W7VZ^T
+D/F0.D/O94EccJLH$O^_I!pHoJV&N-KnbGAN/ipZOHPckQC422S=ZCJTqeE\W2cr%Yd(I>['mKU
+]=bkn_8OC9qoTc"cHt%jf@ep7hV[8Mio9"YjQ5Xmo(DhULAr^GG[b#d?<piC?XC%3O+DFe?Wold
+=)`kBAOAah2D[!E1bV$U4$5DY8Gu$W71_I=3']\k3]fK!;GpFl;H$GSrs%u"Kl(=-?i44X>[(B;
+>?b?:>$5$4=BJ^/=&rC$=&`1"<)QOh;Gg=i:f1(d;,C+cn593Zs%Rr;:Jakb;H$Ln<`W:(=^#$7
+?!grI@Uit\B4u$qCi402EccDHGBnL^IXm!%KSG8=MN!RVOckuqR$jG7StMdQV5L8lXKA\1ZF%'L
+\[oGe^VI_)`Q-'BbKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HKf
+s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eofi$>o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^1`.cRAm3\U8+KZV5C/hW;`arWr8t"XKAW(YPbU)Z2:j+Zi.3+Zi.90[J[K2
+\,;HgP5(79PQd><Q'R]#rg*SLrfe%ZP*M8tPE_;tPa%JsQ'RZ!Q'VE6"-o+9PlB,Bd*gClda6Oo
+e^`0teCDssrR2G0e'c^peCE'se'QIid*L%_dETi5bQ#WcbK.fIrlY8^!mA[+njDP-lU1V;!3,an
+s/Z+"$a$S8YHY:;Za@0M\G`r<](ru<]a2?e_8=+.`Q$!tao]f3cMl/fc3VbCcd0n_cd:&<cN)>k
+d2UTcf@es8i8`q^k3)!olg4$,nF?&>oCV_Kp@nR]s7u]ls82rsrr.KKV#LYnp%@qInaZMV"ShPf
+X53dT./'[SkcUD6Q]kmSTV,S%@'Qu=Y-"e-X)2!C@q&eO>?eDQ_nj.'^V5[,0)kS?o_.tNoC229
+lKRKnjQ#1UgYCH6e^;^daiMWHaMu*7^V.7k\[f2W['R-Hn$RX<9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lH@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOckroQ^O>5StMdPUo()jX0&P/ZEpsI
+\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olIo)J:bo_%nNp@nO\
+s7u]krVQQkrr)KgJcCi3J,~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eoeuI6o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^0GJtHA76/K_pK&LB!&)M#E2/MYE&&MXZN(N;delEVaVSEV+5IEW0qWD\-o-
+EGof8EH#i9DJsH2DJsLnDZarsE,Y`Hs.'+[!h>aOrga4_S"-%<Sc,&\SXc1>rgaIfS",t;S=5k6
+Q^X;.rg<_O!LT2OQN`\?Q'R]#njDP-lU1V;q2P?3qi1T8!0@,@)3U2HP*;)oPa.N"Q'IStP*2#n
+Q'Rf)R@9WCS-5CST:VYNTDbG]TDtSaT,=5pTqeEZVPpGnX/i>'Xf\e2Z*CXB[C3RB\M(P+]">Vf
+]tM.p^VI\'`5]j=air#VdaQ^rf%A[0gtpuKjlYajlKms.oCVhSqu)*Gb5X<J`50!o\%&oU[K$9t
+imYu`\V5[8cKF'!K9*BjEbKH/:jRA19iOuCKS"f,JqAJU:JY"ir_`hqL6Rl#OTCH'NrLHgc,%!&
+\%0&\[^<EIYd1L8XfJG#Vl$8aTUq^CR[BD+Q'.;oOcTI#"cJ7qLl.&XMLS8m9heAY:f("e;c?Xq
+<``C+>$G6;?=.,M@q9.`BPD6uDJjE5F*)SLH$XjdIt3-'KnkMBN/`m\P*D5uR@B_<TV8-VVPpMq
+Xfen6ZaI6O\\,Vj^r"".`lQ9Fbg+P]dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-a?2nF?PLs76Ed
+p%A%Pp\jmeq>^<iqu-HlrUg)?s,d82~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eoec=4o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^-kF]9MJ@]:\7K[;=d]H;>rWP48M#149%A?3rh>>3WD,?48q8C4$#DarAss?
+s#U$;pf75m"BAK'<EK-"!*B,"rDiGgs&/tu;cEQk!`MupnjDP-lU1V;r`0#!rD`PjrD`es"]eW'
+<`W<#<WH4u<rZ8#<r?&!<rQ2#<rQ2#=SZ)#=BYW*rE0,(r`]G/?![G9s'Pb5!b#JEraGn<@fBp<
+AcH?BBDcI5C27X&D/O91E,fr@Fa&(UH[C-fI=?]tJqAW/L5CbENK'!]P*;,sR@9V9StVmSUnt#h
+X/rM/Z*LaE\%'#_^;.S%`5]pubSnXGb0/&UdF6\!gYUiHj5f@ckiqF#mdKfCrIt7S]5h=g?N+4S
+?=.!CSrS;@BOG%56s"DaIq1o7>rOPl2DQpK4?P>V2+U187fGgf3B/u`5!:qg4\\gP;,U:j;iq"_
+lE5_SA7,:A"CGG>>[.24'O+aE=^#!3=B\m0=&r7"<)lpt;Gd?is&/em!`)WhmnnR-9MJ5V:Jakb
+;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOckroQ^O>5StMdP
+Uo()jX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olI
+o)J:bo_%nNp@nO\s7u]krVQQkrr)KgJcCi3J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V+?8Q^b"VUSFW\V5C/hWVidqWs#N+Xfnr,Yl1g,ZM(X&[/.3/[eI9.PP^O<
+PPLFCQ2[*LQ2[*LQ2QsIPP^RHPE_;srKIAKQB_B4s3V&"da?LldaJ-A(Xgj`e^`1"eC)pse'ugp
+eC)doeC)jpdJ_GlcP"IJc-=GSaih`Hb/q]HaiV]Kb4\3X7.*GA6Md_^X8f74X/rG*YHP17ZEppG
+\%0)^]D9)S]tD"l^qde'`5K[9ai_fNbg"G[dF%j<rm:ntdEp4ddJ_E3dF6Uqe^rL/h;RASk3(sl
+lKdg(n*fc8nac;Dp&4Rip\=R\qYU3grdk*DrrVreoD\=Wrri&cWN+kTrtG+*^uhhdNL,f9US4;b
+@pcLGXfhZ*&Z]hQ>%;#K?<^X>`koO,^V7F@s"=<Dq"47Po^hS?mHNlujlGI\h;$f<g!nHrc-"2P
+aiMN@_nWpu]=GG\[C!<K[-tC'92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?
+Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHstf
+eCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*2s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V*ojG'f"$KS95V!/CK.q2"p)rJK]ppPf&iq/P\=r,MCK")i-sE;aYaDfBW5
+DJu&8St2CASXc5LRh_KcS=Q4@SXc1@S=H.>S=Q.=S=Q.>r0n7dR@0A/R$j>.Q^F)*R$X))rK[GK
+p-[V'mR-t?rf-o9"cJ=uNK&nrNW"k?O-#KdP5UUEPlI$IQ2m3LPlI$MQ^RiArgWtZrgs(\!1s%Z
+oq;>Ys.]jqVPgAmX/i>'riQU4Z*L^C['d?N\@DOK0=\R(]"G\h]t_=t^r"%/a2uKHbg"M_eCE+#
+f\,!6h;@2Pk3)!pmI'K7p%S=\rdk*lrrgQa^q$uS[fEl9ruLUddDil0KS-;Nl/9:-OgB[ZBQ.f`
+H$FL,;c&.#r.5*%>#.pp;uTZ#;21@"P*(idOH0>pilf0M]",>]\[JlOZE^^<XfSV(W2HMgUS4<M
+R[TV1QBd\tP*(ibNK&mTMMd7JM=6<&92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(
+E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]N
+cHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*2
+s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V*',852fUr_NGg!)`Mfq,-WZkY_:>q)e@4ofN17r]C-@rAjF0r]C-@s#L*Z
+!*8kpq,R`#=&r@'<`W<$<rH%r<<#r!<)rfp"B/9!;c3Kk!E2ni6ek)t6iKCP<W#hk;u]hn<<H9'
+='#<%!E`G%<q]Vp<rZ8#<rQ2#=Sl5)>$4s0='5B'!*]>*s'>V1!+5\4-=L:i@U`hX@UiqZAS#Ic
+B4kmkBkhF"CM[j*DfKc;F*2YMG^4X`rd?VQJ:W<)K8,/;M2I4NO-,ThQ'Rf+S=Q:GUnjlcW2Zl$
+Y->1;['mHS]"Gbl_Sa=4aihoPrlQ##cHstgf@f!<ioTCgm-aE8p%J.Rqu)3J.]dGq?sR&E?!^jR
+Y+:N"DeEB[7RU=#M1K/'79_f/0/YO<4Zke\2DmrmrC6fUs#:?G5X%=l4$657;GmEk!)o!Z#3De6
+B45.Qr*KD.s',J-"^5,7=^"u-=T2A&;c`is!E)bn;?'Mo;#X>k;"%6^92,=ZInid9:f1+h<)lt"
+=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'
+Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;QZerdk*2s*t~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V+B:R%(.[rhKapVPgAkWN,lss/c7&s/uC*ricC-rNc=,qm?=0rO27*!k=DV
+qigl>q31W=s-<YOqj.8IrfdSMOd2,rQN!0LPQ$dOPF%Q!Pa9hIrmC_ns3hG(e'ZOjdaQare^;gp
+df%W;dF6LldaQ^peC;snd*L"ccdC"]bf\,Ob/qoOai_`Ia8A<O7.<SD634*eri-X4XK8J(XKAY/
+Yd1RA[C3TU]=bfU]`>_C^&G_U^VI_(`5]j=b0%rQcHai6dK%bodK7nGd/;;kckY!XeCE+$g>(TE
+j5fCekiqC!mI'K4rp^0_oC_bKp&=Xhp\=U]qu$DDs.]Mpr:fg^nc81VrrrDqn>E5Crr4A=W5[l8
+QA_&6US4BR>@V$FYcY(0Y-"aD=^#9D?X6l@ZGsbs^q[UAs"=3Bp\"7RoCDA;lfdTrjl>CZh;-l=
+g!nHsc-"5Qb/_TA`5'+"]=PM][C!<K[-tDO92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MSAS,Rg
+C27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6
+aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+p&9OBOT0h~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V*rkG'o(%re(9*r.b3+qM=s(rJLK1pl,-/nVdR0E,]grE;=M>E;OYSE!(#r
+E,YYos)7pV#]FU#Df0K4St5kNr1+:dSXc1?SXc7@SXQ%<S,Ji]R[fh:S"-&JS/%K^R[BS4R[9A.
+Q^F,+QC4,+Q^3r&r'Sh!n3d4Bs,?r8"cSG$N/`hrNrG(BOHG]iPQ$gEQ2d-MQi<<MQiEHTR[]fG
+S,f,ZScYOWT_G&ZTV;:V!MQ7cU&UkkUo(&hWiQ-$#d1D8Yd1RA['fnA!4Vm9/\/I(]Y(ql^;.S#
+_8O@6ai_iQcd:+ie^rI,g=tB;hVdDUkiqF#n+$#Bq"jr?s2k9Db/1m'\G`o9ruLO`cc*T,K7^,N
+lJfO0PI-EjB5^IiH$FL,;c&+"r.5*%>>J'r;uTZ";21@"P*(ifNW0(=bJ3td.(H[lZa-g>Xfeb,
+WMlbmUnaTTS"#k6R$X,)PEV/kNK0!WMi*CKMM^eZIS3@.9heAY:f("e;c?[s<``F,>$P<=?XR;O
+@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]"Gbl
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NlrUp/@s,d82~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V*!*85)`Tqb[8hpJCN[qblENs#L-Ar]9j:pc@n+s#U*=!]W5%r&ad:r&XmZ
+pf78lqc<_s!EN4p<rH%q<<#tp<!Q?$<)QXm;Gm?Zcp[@js$H`b!`Mupqc!Jns&B%uqc3Gm!*B)!
+q,dPr"'8N'<rH,"=SZ)$=BAW%=oMV(>81@M?=$uH@:3GK?=72NA7T1\@q0'KARoCcBP;*pCM[d&
+DJjB3EH-#@G'8+VH[L6jIt3*%K7ei2L51YDN/`j[PEhK%R@9Y;T;&-XVPgDnXKA\1ZEgmH\@T;c
+^VI_)`lQ<Hc-=JWcd:+if@ep7iT04gnF?,Cq>:/Bs8W*aRqQ5;?<gcA?=(CLRYcB/AmJP.6s+Yl
+Jn%,8><jqr2(LmT4ZkGW2Fp8+77B^876*=f5<V.k4$657;Gg=j;NLi"hkPO4@UEGJ?XI)E>[(H;
+>[1K:>?Y05=]eg/=&rF%rD`l!;Z9Pm;?0Pm;$'Qk;"%8192&#R9hnJ\:f1+h;cQk!='8[0>[1TB
+?t!MSAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY
+]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBOT0h~>
+JcC<$OoP+RrVc`nr;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:\<=S<g7\V5:&dVl6QnWW9*tXT,I&YPtd*Z2Cp'[/@?1[eI9,\-0@*Ocbh+
+PQ-mIPP^O=P6$o3r0.5IQN!6MQ3<G;Q'7I3P67)6PEPg-s-!PHQ'@R5dg+COdaHUmcdM^<$I[DQ
+f%&6te^DmqrmLhq*R`HcdF?Xmda?Cfcd0tddE^"\b0.uMb/h`Kai?cg7.N\GWiQ-#rN.KNYd(L?
+ZaI9Q]=bei^:h1l^:q@s^qdh'_8=+/`lH0Bb08,Td*L(fqpbSn!RfBndK%\nd/VMndh:0\f@f!<
+ioK4akiqBumI'H5nbr%Xo*k9ap%J+Rp\F[_r;HVGs.fSur:]aQo'u5HrrrAon"nG-rr4A>W8-LR
+QA_&8US4BQ?=I9HYHG%0Y-"a>=^#9D?=$i@ZGsbt^q[UAs"=0Cp\"7RoCD;9lfmWrjl>=XhVR&?
+f@JBtcH=ATbK.fF`PB4%]=PM^[^<BK[-tF&97BQ/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#Lf
+BkqO&DfB];FEVkRH@1-jJ:iN0LP^nINfT<cPa7])S"6.DTqeH^W2co#YHY==[^WfY]Y2(q_Sa@4
+aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`n
+o_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:[fkH$P1&rIt-'!/L?*r/(E1rJTfspl58lrc%pWrG_gVrGh.Bs)A0\EH,r:
+rbhmXDf9OjE;shYD/aE3rgj(\s.'7`SXZ2IS-kgYSXuCBS"6%<Sc5,YS.D*[S"#t=R[]e8S!ob6
+S!s>D$C@-IQC!l'R$O")`^KAb!K2s5NWkK*O-#KdrKR,C!LB)MQiibFS"'AHs.':aT:V[Jq4Re]
+rL`qZ%&'DiTV/!QUSF]bWN6!"!3cC,s0Dm:[^NZS[f!Z8\Hf^X]=bej^;0`a+iMC@aN;TKcd:(g
+e^rL,g=t?7g"bKEjm)4#n+$#Bq>1&@s2t?Fp;k.a\[_XJ2n&bdrTi4__n<F1T"rhAikL&BZ]oB?
+DG5>$G]cbZ:kXLQJq8N*IooKC<`;mo;,N(4PEV,jOH'8Bgr[:BrOO,\[Bm0EZ*1:3XK/>"W2?Ab
+TV%aER[KP1QBmc!OcYQ^repu<MM[4Imu%-<IS<I1:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[j
+CM[m,E,fr@G'A4XI!pKpK7nu7M2I7PO-,TiQC+)0SXuLJUSXleWiN8*Yd1UD\%0)_]t_A"_o9X:
+aihoRcdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTd
+rdk*3s*t~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:Zj)8kVoWqG@/gpJB77r]:$?!':'?!':'?pH%n-rAsm;r]1$>p,W18r`/u!
+s&B&"r)N\p$<:,-='&F&<`N.$qc3c"<`]0!qc*Ppr)<o"<)Zap;Gfg$7.N_F;Z9Vp<;T\o<;';l
+<rQ2#<WZ9%=8l=u=8u;%='5H's&f2%rE/br"'So5?2\./@/jR<?t!MUAn5KPAH-6@AdE$_Bk_<s
+CM[keDcLarEcQ8EFa&+WI!pHnJ:N6(Jq8K)KSPGDNK96dQ'Rc)S"61FU8=`bWN*&$Y-5(8ZaI6O
+]"Pkn^r""0aNMiRcd1"fe^rI/hVdGWlg=66pA+UbJcG]K5`fSe?=$lA?<pjNWgSZgD.HpS78@H>
+Ne:n0;-QFC/N#%B4?P\\2)Iil7n#j;77B-p3^5ek4$,Q!;,U=j<)SeW"PTGlB4LpIs'Pb2!*fG-
+"'\r3>Q.e+=oDJ&<rc1u<X_r.<)ZRi;c6Ii:f:0i;"%9]97BQ/9hnJ\:f1+h;cHat='/U/>?kH@
+?X[DRAS#LfBkqO&DfB];FEVkRH@1-jJ:iN0LP^nINfT<cPa7])S"6.DTqeH^W2co#YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nc/.boCV\Jp%J+RrqQNh
+s8)Zjrqu`no_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoeuI6o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:\<?SWp:WVZ*LnW;rssX8]1%Xfei)Yl:p-ZM_'+[/.6-\,Wr<\c'&6\H'5>
+OoLUDPQ$dHPPUI<PP^RFQ'VE9rKdGH#*kF:PEh>srKIVNPa%ArPL\.2ec+#1da?Ljda?LldF$:h
+dF-Lme^i=NdNR#fdF?UkdaHUmdEp:idaQRicdL.ccHXYXbK7rMbK.iL_aO)`!^`uir2h$DZ*L^C
+[^`o\]Y2%n^V7Fs^qmk(_o'F1_o0R8aN=G*s31\ndF-LnqUPVq!n5TFrR1_nrQtMj(=Udbf\GEE
+jQ5UilKmp+mdK]9o'u;BrpgNio_%qOp\4L[qYU3irdk*FrrMrhrpg*Znb`=hqt$h`ci*k[p8?g.
+b+=KWBVM2nSnDJ;YHP(3Xf\\*r`T_=@U<AF>dDAe_8!e"MuPF*q"ORWp%%_Bmcis!k2t^_hVI&C
+f[n[%dE]t\c-+2M`l5d.]t:ne\@&]O[C#D1IS*7,9heAX:Jakc;c?Xq<``C+=^,-:?=.)L@Us%^
+BPD6tD/O<4F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Pi^r"".
+`lQ9Fbg+P]dF6Urf@\g3gtgiFiSrnYjlYail0@U$m-a?2$h3]Wo(2JFp%A%Pp\jjeq>U6hqu6Nl
+rUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoelC5o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:[ckH?k:$rIt9+r.k0*r/(E1s,6*"s,@#=oo/s3rG_^T!-%mVs)@sWlYulD
+rbr'[E,]`6E,YYn#&\C!DfBWdqOJ4gSXc7@SXl:@R[ot>St2FDT)P3&R[on<S!oh9S=?":S",t<
+S"#k:R@0G/R?s;,R$X2*Q^GZYo0WLEqMkoDOHGWeP*D5sQBqH6!1*VN!1<\Ps-itWs.'.[rgj%\
+!20=bs.]Fb!20=`r1G(&TV8*STV/!QU8+Q`WiN8(Y-+t5ZEggD[C3NQ\,Ei:\c02?]DoPD^*US2
+_SX:3aN2KGbKeJ^e'ut#f@\d/f@8C)hW3nemdTf>pA+UbJcEmm"R=%E]"%aKs0ht-2#6@gbegrF
+JY0s:lf>j4Wj8"6AoCXoG^+@3;GVt!JV&K)Jq$Kk:f^Lm;Gg;GQ'@JpOH>J%/)&(X]Xk_d\[T#R
+ZEga=XKAS(W2HSjUnXNSS=H%:R$X,*Pa%8lNfB!WN;\V8M2I/[MLJ/j9MJ5V:/=\_;H$Ln<E<1'
+=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F84StD^OUo(&iX0&P/
+ZEpsI\@K5b^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8N\UjQ5OekiqBum-O0/mgJXTo()DDo_%nN
+p@nO\!;ZWjrVQTlrVcBfJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoec=4o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:Zm+8kMkT:]OAe;"mib;!UsY;Y3ib3rM,?3rM/?3rV583q>B23rV/33q65K
+<!$'#<rQ2"<<H3$<`f)tr`/hps&K"s!)rkr!`N&s_aO)`"%#pb<;oqt<<-"t<W?%r<W?+t<<lQ+
+=&r=$<`f9&!EiOt=8c5$=o;Cp=Tho4>[:\8?i=C2@0'hIra]YOARo@`AnG^iBk_<sCMdp,E,]f;
+F*)PIG'A4YI!pElIXcm!J:DrqJVAr>O-,ThPa%N&S"64GUSXidWMuo!Xg#(:ZaI9O]"Geo_8=.2
+aNMiRd*^=mf%]$=j5fCgmIBiBqY^>Ds8Ds`l@ibU?<piC?<gdLWg8B`CgpX>78RTGNJ1t2:g-CF
+/N#1G4Ztnc2)I`l7Rfm;77K'm3^,_j4$,Q!;,^Ck<DnnX%+LhmB4>7T?X@&E?<mJ6#@(G:=^+s1
+>5_S'<tAD2<E<.!<E)mn;,gCh;,I6hm8/7(92&&S:/4S]:f:4j<)lt#=BSd2>[:ZC?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[]t_A"_o9X:
+aihoRcd:(geCN7(g=tE=hVdAPj5f=akNM0qlg4!+n*^YRnac8BoCV_Kp@e7Zp]1-hqYg<jr;HTd
+rdk*3s*t~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9uMOp'8ri#gq!ii<%r2^%'Y-+t3r3?:-rj2O0rO)U4r3uR5qRQC4qiUoA
+s-*DGqiUuDP51=<Pk^OQQ'7JuPEh>sQ'@PuPl?jKPgIq.rmM8'e'laodF-Lle'ZPAd/qeDeGdoA
+eBu^me'c[odaQXmd*pIjd*g@kd*L%dd*Kt]bg+>Qai_cL^I7]]riQ4($F-nC[CNiZ]=kqnrkKGe
+^qmn)_o0L4`lH-@ai_cLbg"GYcdC1he("<G"P2,ReC4<C!7C\jrQuD0f%Aa7ioK4blKdg)mdKW7
+nac5@o(2kO#5%T^p@n@XrqZ]orVhBJV#LJkp&=O^nGE4gq=1DZci*kkpSQg.c(&1.B;;/nS7c9;
+Z*(44Y-"h,=^#$<?s[/D>dDAf_8!e"MuPC(qtKmZp%%YAmcs$!jlGF\hVI#Bg=Oj&da$.ac-4;O
+a2Pp1]t:qf\@/fQ[dLO)8kVkW9mTQ1:f("e;cHat<``F,>$P<=?XR;OA7]@dBPM="DK'T9FEMeP
+H@('hJ:`E-L5:\ENK90aPEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkm_8=12aN;TJc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*3s*t~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9fDgQbbre:?+s+gK-q2,-/s,66&oSrX+s)7jTq/Q@Prc.4Bs)A6^DfBZ6
+E,Y_p!c`0urbhjWR\'JK!1a%Z#G.HVSt2ICS,Sp"SXZ7BS=H.=S"#q;S"6%=S"#k:S=5n9S",t:
+R[fh7rg*hWQC!o(Q^GNUoL&V<s,R/ArfIDKPa.N"Q^@W9!1<YO!LfMWS,o+LrLNt[s.9:arLj4c
+qk<hY!hZ-Zr1O(`'V_@uVl6YuY-+t5Z*L[B['d?N\$u=Gs1/0@rk&3C'>D5r^qmt.`lQ9Eb0/#T
+dF-LneGe#1f@AC%g"kZNlg=04o_&"Vrdk*lrr_,t_Rf]T34?6ps7ka-ahYH?JY:-Gmbu!5Wj/%8
+95d^RG^+@2;MKjWK7\]-JU^Bj;-$Un;Gg;GP`q;nO-#A$/D%qT]Xk_c\@8iOZEg[:XK8J'W2HMh
+US4BRS=H(;R$X,)Q'@DoO,f0YN/R[m!f;eknVRB?92,=ZH;774:f1+h<)lt"='8[0>[1TB?t!MT
+AS,UhC27[(E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;.s
+_SsO9ai_fOcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]kr;6Kk
+rr)KgJcCl4J,~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9K8P2TNr_WJhqb[&bpJB^Ds#L$=q)eO9r]Bm9nN6\1!'0s<!'C'=!`W0!
+r`&qtr`'2(<E3("<`N/u;ufqs<WH4u<<-(u<W,tt<Vo_q<W,ku;cH]p<51in6i0m`<;fhs<rH%u
+<r>to<WH5#=T;P&=T;G&=Su8#=Su8#=TDS"=o;G)>?kJ5?34JA@/XO5@K9s;A,g*>AcHBABE`*b
+C27[(rbhmYEcZ@%FTcl4H@(&=I/ncrJ-g[QIt<<1N/s*arfdt\R@Be@U8+Q^W2ckuXKJb3rj2X3
+*k8eo^r++1aN2KHc-Xqhf%Aa6ioK7dm-jQ?q"t!gJcG]K,M.<R?s[)E>[1Q?]Vq*JFD5&c7RU0k
+LQ@(#5u1]W1F=q355mY_2Ddup77Tg;7R]d&3''5e4Zkeg9i4hd;H-PTrsd>AF_+ug?=.#F>[:Q<
+r`oJ,"C#,6>?Uo,s&Tk9;H6au;cH^p;,U=i:f1%e;Gg6X:]a6^9`@b4:/=\_;,U=l<E<.%=]np5
+>[CcF@:EbYAnYjmCMds.EH6/DGBeF\I=?]uK8#&9M2R@SOHPfmQ^F52StD^NUo(&hWi`G.Z*UjH
+\@K5a^;%M$`Q$!@b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@Srq-<cp\jme
+q>^<hqu6NmrUg)?s,m>3~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:"N1uT>WN#irqlBn%Y-5&.YQ1s+ZN%9/[/RK5[f*]4\GNi-\cBA=OoCLD
+PPpaGPPp[=PPUODQ2['NPa7X7PS97GQ'7DsP*D5rPE_<]daHXndF8*C"4PcJe,@],e'QIhdEg1f
+d+$RoeCE$re'n6C!mf<ArmUnp%ar_Md*L%`c-4GWbK7oL]0u?[%Bm%BZaR?Q]"G\i^qmkd_Z.CU
+_Sa:0`Q$!uaT]i1bg"J[rm1hrdaHUneGIeqeGdkte'cVAd/q\?chu0;e(*+)hVmPXl0@X&mdKW6
+nac;BoCMVFoCV_Kp@e7Uq>1!cr;HVGs.oZ!p[n%IoC28Hrri)bV5)fDs!R<3h;lnP@$bK%TqIrg
+@C<DDXfnk.XfGT/>@CoG?<h*J`l5d/^qPa,/GT&8p\"1LnaGi/l0%0gio/bMgt:60eC2jlcd9t]
+b0%iF_n`ps]XbM\[^PS2InE@,9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit]B4u$qCi402EccGJ
+G^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA\2Za@0M\[oGf^VRe*`Q-'BbK\>ZdF-Op
+f@S^0gYL`Di8N_VjlY^hl07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCl4J,~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.9gDgQecrJ(?-reU9)regZ4o8N@%nW*TerG_RPr,DXTm;N&Dr,<<fE,]`6
+E,KW7E,T]7SXc4@SXc8MS-,=RSY#eN&Y>J]S=H%;SXc:BS=Q4@S"-#HRf]"IRf8iWRgtsXR[]b6
+R$X,+R@';,Qb,ZZ6iN,HOoCLFPEhI4Qi<BPQNNVCR@=&CrLEeV!1s+\qOmh]p7VGXrh0:b'V_@u
+V5UDqY-+t5ZEggD[C*HO\@DLJs18-@s1JcR^VIY$_o9X9aNFM*!mT$9rm2>+dacq#f\53@k3MC%
+nFQ>Iq>C2Bs2t?Df>YP8rjVp9,IRROp#FTD^:8iHWQso%g:Dg6ZCZ/3E)V(.G]m(bLP:A3K)U<4
+Inig;<`;pp;-&F9PEV,iOH0>oqUNTu]=YYb\$iZNZE^U9Y,n\'W2HMgU7n9RS=H(<R?s8+Q'@Gp
+O,f3YMi3INre^]4nVVfg91qrQ9hnJ\:f1+h;cHdu='/U/>?kH@?X[DRAS,RgC27X'DfKf>Fa&(V
+H[U?nJV/W1LP^qJNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6aND]NcHsteeCE1&
+g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.9L8P2ZOpJLlcqbco\i)'JPr]0p<q)eL8r]Bp:nN6P-!]`;'rAk-_<`W4#
+<)ros#ZXo*<`N+!<EB*!r`&nt"BJT)='"fjoi(uk<)gItp-\^Wqc<_sr`02&<)lt!<W6#'=&r@'
+='/T(=oVUo<s)Q-=]kZ+s&o_3=BJa2>?Y37>lJ(0?iOL9@:E\SraPk:s()(>s(D:D>\RtiD/O60
+E,fl<FEMbLG'A4XH$O^^H[L<nJ:W?-M2dUZOckrnQC+/3SY2[PV5:,iX/iA*Y-5+9Z*UaD\\,\q
+`5BR4`lQ?Le(!%(gu%,PkNV=#nacAJqYc!FrVn^kF(/N_?!^c@>@"h;OaqIb?<K`d=`TOeI:5B9
+>"pb!1bV$U4ZkV[8Ol3;7R]a87Q*4er]^<D##/#p;,U@kO8fm;Q#gJD?=.#E?<gc?>[(H;>$>/0
+=oqi/=8l;.='/C$<`W0u<E&lp"&Vrm;#X>o:/=aV:k))192&&S:/=\_;,U=k<*!%$=BSg3>[:]D
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-5]lQC+,1SXuOLUnsugWiW>+Z*UgG\%0)_
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?tm-O--n*^GLnac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*3s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh4SSRCp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V")sM5QZ?WN,ruriH.%riZ:*r3?4+!42[3s0_j7s0qm8qml=0qRZd@OSFt;
+P5UXEPQ$a?PPLICQ2HsHPld/7Q2Zs`P*D/oe'cardF-Fjf$`$rdF?[ndF-Llps9;pdF?are'cUl
+rmLhq%arhTda6CicdC(cd*L"_rm(YjbK9->ksaZ$p-T1p[^`o\]Y;4u_o)Dj!5nfS$-($-bfe/P
+c-O`8d/MGmdf.\qeG[nteGdqodf7\od07nBcHX\^rm;>,e^rL1i8j%blKmp+n*ff;oD\C]p&F^d
+p\+U\#5J#jqu$ElJcDPG#6+;do'u8>qu6j!p?n]Mo_ne&l(d=ud@=j8AYu2oS7Z3;Ycb/.XV%Y8
+=^,*<?s[/EHEtQ0_8*h"MuP@&q=jXVp$hG:lfmZsjQ#1VhV?l=f@JBudF$IlcHOGRai205]t:qf
+[^W`QmBusdInNI09hnJ\:f1+h;cHat='/U/>?kH??X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`H/
+LP^nINfT<cPa7])S"-(CTqeH^W2co#YHY==[^WfY]Y2(q_Sa@5aND]McHjndeCE.%g"P3:h;@/L
+j5]4_k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V!]XDgm"eLAco-M"uo*MYrD,N:i1rNr<nnE;FSOE;sqDE;abXDfB[pD\m;1
+Df;2;St;FAS"61ASXl7ASt)=ASt5YG#b@KVSt)=?R@O8Gs-sRgS=H(;S",n9R[]e8R@*uA!go=?
+m6p2-j@&]/"d+t2PE_C4Qi<BPR0&hFR/WQRRff1MS"0JK!hPsRrgs"Znt5uVrh'7`r1O%_';D7u
+W2Zi"YHP4:Za7$H[C<WT\G`u<]D]Al]tV7q^VIY%`5]g;aND]Mbg"DXc-FY^dF-Osgu%,Ql0Rg+
+nalJKq>C5Cs2t?Id_il0\%&lS[f6:`oAS0<]siTC][ulVe$OP+YFor7Dc1n+G]d"`L4b,1Jq8N(
+Inrm;<`;mo;.G?GPEV/jOH0>Bp!q%[]G.oc[^<BHZ*1=2XK&7tVPU)_TqItUS.M-VQ^<u&P`h/i
+NfB$VMi*AjM?&M'MZ6:u92&&S:/=\_;,U=k<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m+E,fr@G'A4X
+I!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiN8*Yd1UD\%0)_]t_A"_o9[;b0/#ScdC1je^i@*
+g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*3s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^Uum$84lQNm8<USi_fML!''s<rAs^8q`=a=qE"1/!'L6Bq`4^;r]9sW$!(#*
+<E)su<*!&u<W,ns<W5r)<E<+#=&r@$;cH`i<<?-"<;fbq<<#tu;ufka7-R/$7.rtJ=8Q%u=8l5'
+=&r@%<W,ts=8u;&='/T'=Thi.=&i9"<rcA%<rcA#<s)Q-=BPQ*!ErY*<ruN/>lIn5>[:WA?XR;M
+?t'"Cs'l.A@q9-KB)cNCB`DcSCM[j*DJsK6EcQ8ErcTK0G^4RZH$OaaIt3*)Ll.1ROcklkPa.Q%
+S"-(BTqeH]VlBWq"0AW.Yl:p1[(*`^rk]Mj`Q$!Bc-b(ogY^uMjlYdklgF64p%S@^JcG`L6*G-5
+?sHrB>?kIX\YY@9Eb/NZ7RU^4QC`;)5$;#a0e,"54Zb_f2Dn&p6q'R76q'R'3''2d4Zkhl9iP%g
+;cHYUrr^6%E+JoS$=-tC>ZtB:?!LN;r`TS1=BAO*=]ea-rDaD.;cQ^o;,U7h:este:esnbn50-W
+InNI09hnJ\:f1+h;cHat='/U/>?kH??X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`H/LP^nINfT<c
+Pa7])S"-(CTqeH^W2co#YHY==[^WfY]Y2(q_Sa@5aND]McHjndeCE.%g"P3:h;@/Lj5]4_k32'o
+lKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:\#sMPurCWr/suXTGZ/YPtd&Z2V*/Zid_E\$u4DrOMU4qRcU:!POWpOSP%=
+P5gaGPl6gEP51=>PQ6pHPlHsGPol6UPa.JuP*;&mPge15e'caoeBu[ne'c^ndaQ[kdaS3B&^ShP
+cdC+ddF-Ole'l^me'ZYDdM(!Ue'c[jdF$Chda$1cdEg%\cHl/OfL>'npHo7u]Y;1t_o9U7`qdXW
+b0/&TrQbJjr6bGjs3q"trR:\ms3^hm*RE*YcHXSVbKeG\dF6Urf\GEGkNV=!mI'K5nalDNp&F^n
+p\=OZq"ad_qu$ElJcDMF#5n5go'u;@qu6fup$SO#r;RS4Zh)MdUM#m(V4sTPARMpNY->%1Y,nW%
+>7=qJ?=$p&a2Q$7^q[XBs"F0Dp@e1Nn*fZ0kih0iio&bNh:pT5e^DmneCE!lbf\/O`P]L*]=kbc
+\$i]N[^>P3s%3;b9`@b9:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH?5FGBnL^I=Hd!
+K8#&9MN!OUOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWB
+i8N\UjQ5Oel07L!m-X60n*ol<o(2MGs7QEc!;HKfs7u]kr;6KkrVcBfJcCo5J,~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:[TXDLQqdLAZl*M>)o%N:r7nNr*blE;OYADuahUE;skSE&2KQEH#l7Df0K4
+SXuFDS=Q1@S"#t>S=Q1?SXl7@St)=?R[]h9S=?"<SXu=@S=5q;R[jAH':PD\S"#h8S",q;R@9V8
+R?s8-Re9)$7I!;86PP`KQ'[l*R@0M4S!oh9R[T_9SXc5LSHtaVSXuFDSXuGHTDYA]TCnlTTb*up
+Vl?_uY-G:<Za@-K[^`jG\c98@]DoSD^AbkT^r!t+`Q#p<aND]MrlkGgrm)5(dF$Clf\GEEk3;:&
+nauPNqu)*Gao;Xk_nERh\$`WQrr4hGiR5`Y[=Osni;`2iL5N^:SpO@S;L3S4F]D:nKS"f.JqAN'
+:/Fbf;c6LjF-W&TPELuhNrKmce&/i5]=b\_[C*?HYHP(/X/`+qVPX9d&YGVaSXl4:Q^<u&P`h2k
+NfK+uMuSY9M27#YMZ69L92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@G'A4X
+I!pKpJqJc3Ll..NO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(
+g=tE=hr*JQj5f=akNV6rlg4$,n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:Zd#84lQOnPSpTqGI8hnPSpV!`;iUr]'p<rAsa9nN-S0!'9m:s#g<Cs#L9C
+3]T5^qGdf%<E)su<)lmsrD`hupJ_H!<`W4$<`N*u;u9Pi<<-"s;Zp&u<)clj7+arn7/'(H<WH5"
+<WQ9%r`8ksr`K2's'#D)#$=r.<`W:'qcEi$q,dVur`K)"s&o>)$X6kA?=.)K?smDP@fBm:A-caW
+AnGUcB4u#YCB&&ZCi+'.DJsK7F*)PKG^+N5H67K[I!^9kIt<</M2[LWP*D9!R$sM7StMjTVPgAl
+WiH'"s/dWOYdLsN]=kqo_SjI7bfn>WcdL=pg>1`Jk3(snlg=03o_84[rr%EJ"TP-/?s`h;3a,`m
+c+0U1IrJt)=@H&#K:e3F7mLWX9/J(S/j;BZ4Z5/g7R]d977B[83'0/b5!1qj7oWGd;H$OnO8fI"
+N,E-3?s[4>>n:.F>Zt?9=^,'6>$4s.=]kZ)s&T/"&QDb0<Dujo;c-Ii:f:1g:/FaU;#a,g92,=Z
+Inid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@G'A4XI!pKpJqJc3Ll..NO-#NhQ'[l-
+S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f=akNV6rlg4$,
+n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:[osM5cuBXK;E's/l@*rNQ4)rj)R1s0Vd5!k,SIqmcO6qmu[:qRlX;s,m2?
+qN:f@!L&cFPQ-gDP6-o2PP179PnK=FP`h9^e^`7"e^DmneC;mme,IepdfRnEci)2jci297cdC.e
+eBuXldF6OldF6Fie'laocd:(ddEp1ccd'k_bg-#Pcpd7gpd52#_SjF6rlP/^%EZc8bKJ,ScHjh`
+d*^89dK@nFda@p<s3^kn+j\HZcd0n]bfn8Qb08/Vd*^=lfA#3Bjll!qmI'K5nauJQp&FacpBp]k
+q>0sbr;HTnrdk*Drs&>op@@hGo)&Fir:KEMdf'1nr2@U1T<=GkQ"?hgT:BD![^!!?Xfeh-WENM0
+?sm;I?*hSj`PTF+MZ<_Q/beu2oC),6lKRKojl,.Th:gQ7f@86se(*!rcHXPWai2-4^:V(j\@8oS
+[C3I3[JrjK92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/Z2
+Ll%%KO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;.s_SsO9ai_fOcHstfeCE1'g=k?<hVd>O
+j5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]krVQQkrr)KgJcCo5J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:[QXDgm"dLPPb`pko!-q2G!+k)TFZrGDURqJcCQs)7sVpi$4Omr82E"E89u
+DK,TH$D3l[S=H(>SXZ(=rg`tY#Fq?SS",t;Rf8cVRf8ftSsu.<R[fk:R[fe8S=H(=R@9V6S!ob7
+R[KV4Q^IS:cpd7gpd51NR$j>0rgNeT!1`nV!1s.[qk!eZs.97]".YpRT)>5\T)5,\TV).Tr1Oat
+Uo(,lXKJb2Z*LaE[^WcV\[h^N0>"m0]tV7r^qmh&_Sa:0`Q#s=ai_fNc-FV\d*U1gda?LkeCN:+
+h;RGXm-s]Drdk*krsAPF`P&gk\@&`Orr4eFiR5]W["+jikPshgK9X<!J8J/%;L3V5F];4nKRn`-
+JqAN':/Fbe;c6LjL6\'gPECocs"Nif_S*[p]XYDXZa-m@Y,n_)WMcYjUS=KVT:DIDSXGn5Q^<r$
+PEM#eNf8mTMi*GlM=HK'8q0K-9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJ
+G^=^bIXm!%KnbD?Mi<^YP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^VRe+`lQ9EbK\>ZdF6Uq
+f@\g2gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAP5g%~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eoelC5o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:Zg%7nQKOohk0Ss&&Meqbc]Xs#L!:!'1$>q)e+-niQh5s#^3@!BE4><rH#%
+<*!%!<)rosqc3Ais&BY3<E3("<E)pr<E)pt<E)st<;fhs<;oet<)Zcl7*nBg7/0.J<rH%r<WZ?'
+<rQ2"=9)M$=ohc.pK%>srE05)=&rB#=8u>!<rcA%=oMV,>[Ce:@0U+J@q0%ZA,^'>AnbmiB4bdi
+Bk_?uCi4*-DJsE1DfKf>G'A1UH$Xd`I=-HmJ:N-!JV8`4M2R=SPa@i0T;/9\Vl?_uXf\b/Xfek4
+ZF%$M]YD>%`Pop@bg"M_e'lgtf\5*:iT'%_l0I[&n*ouDq"jsgJc@;$P\=H/>[1K;>$B1]UQ0_@
+A6i;+;J1ijMeb^LD)aI..PrbA4Zkkb2+U5+qaLiN3BBAg4$5W"r`&nq!*,*[&c9.sCh-p[?=7)F
+?<^Z=>[1J3>Q7n,=T;G&=T2A:<E<.#<)cmt;c?Ok;,U4e;Gp=f:JgOVs%7c69MA/T:/=\_;,U=k
+<E<.%=]np5>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52StD^NUo(&h
+Wi`G.Z*UjH\@K5a^;%M$`Q$!@b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@S
+rq-<cp\jmeq>^<iqu-HlrUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9kG)3)eVld)(r3$+)rNZ@-rj2R1rj;a7rO2d:p::47rO`!?o"G!as,d8A
+rfHu=!0[,@!g8b2rK@2ErfdDJqNUuE&<iBDQ'@JtQ.=C6e^N(#eCFNG+jnffeC)dkd*^=kdaHLh
+daHLhda6=ddEg:jdaHUjda?MAciVYBd/M>odEg1dci)5g7.Wk/7e9(87/91O`Q$!uaq)\>bKJ,S
+bg"DYd*L%bdF%sArmCborm:hpcd'c3c2Puhc-6.2s2u8%bK@uLbK\>XdF-Ilf\PQKkj%L$n*oi;
+rUUBhpA"IZqYC!bqu)*GSc8ojq"OIPoC;_X"TJ%jT@Ei>-ha@_oW4aHR$D6ZUn=&b@(3AEZ)k+1
+Wi0-+>$t`E?<skX`Poa1_2J=DrqZHbp%7kCmd03$kiLpci8<DGf[nX%daH^se'H:_bKS&I_SEmu
+]t:b^rNuX4n?r9gs%@f79heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('h
+J:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]=bkm_8=.0a2lEHc-F\`daZh!f\,!6
+h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq/5BoCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9_ASupCKntQ]M>N2+Mtr>)NTZ?#Du=MQDu+GPEW9tXDtn;ODt.cODfK`9
+E,T`9rLO._StDRErL<kWrga"X!h,UKrLNtXs.'+Y%\0#WR[fk<SXZ+=R@Kb9rL*eWR[X5D"IkgJ
+S!s>G!1NgRo0qb1o0r"6q*Y1MrL3bUs.'+[s.07^T)P8^St2GOT)YA]ScPITrga1^S"-">r1<nY
+q4@SX!hQ'ZrLjt#USXoiXfek3ZEppG[C<ZU\[f;a]`,VE^)"K!_8=%*_o0L4`Q#s=ai_fNc-FY]
+d/DDld1"CMe(*((gu.8Xn+HL-s2k9IlcR/X]"#5Y[^?&6*V/.8`OgeRUs89+kJMe?_1?fFEGna$
+H$F@/:ks`'K+`ceJ:LBk:fUFl;Gi16QBRJmO,a/]lHd8Z^:Utd[^<BHZEUO6XK/=uVPKu\TV7pH
+T:MC<rg47`Pa.JrO,T'WMi3IMMi*@JnV[?=s%@f79heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]=bkm_8=.0
+a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq//@oCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9K7RfsE:\@TE;#aDW;Z/WU3<(o>3&ru[pcJ",niQe4r]C$Y#?Or,<E)su
+<rH%s<;]bj<<#tu<rQ)#;cH]h<!ZK'<E)mp;H$Qm7.Wk/7e9(87/94M<rH%o<WlK+='/T&=TDY)
+=Tqo/='/R+rDio"r`K2'!*K5$s&]/"r`B&#s&f>*r`]G1?X`nCrac%=raZFKA7fIfBPD-oBkhF"
+rGMXR=)MqrF)uMKG^4U^I!^9iIXcp"J:E-%K8,/<N/j$bR@BhDVPpMrY->1:Za6pC[C<`[^:h>"
+`lH0Aai_iQcdC4lf@\g3h;@2Njlbmnm-aB6p%J1Wr.4kRs6YVR?s[,D>lInJd(6$5I;`\&7mp?r
+NhM8A6;(uO1GC[C/j;E\4>f"q7heK`7R]d93]T5c5!(kh9iY.l;GgGTrrhr"Kkb)r?N+71>6J28
+>?kA2>Q7k==B8O*=B8O*<E3(";c?[q;cEZms%i\kr)!Gjn5''Vs%@f79heAY:f("e;c?Xq<``C+
+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9
+['mHS]=bkm_8=.0a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NmrUg)?s-!D4~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9iGDW8eVld,)YPbX&ZN%91[/IE4[f3c8\GEc7])K>?]^<B4OSt=AOT(=>
+OSb16PP^LCPPLFEPE_7-PmEV>Ph"@8e^N+KdfS(Lec*ttdF/$ArmM%ueC2mpdf%K9da-4ccd:"c
+dF6RmdF-FidaQXkd*gCkcdC+cd*L+dcHeoO7G10(7IES=6P%8[b0.uPbg"GZcHaeadEqg=s3gkn
+s3Uel#gLT:aiMTGaN=A&s2tMgbK@s*b5]R,b0/&ScdC1if%]0EkNM3tmdKZ8o()DDp%A(Sq>0sb
+rVhBJSGrfiq"OIQo()\X"T@thT@a&A-h="ml,T?SR?V0WUn:t'?am;EZ)k+1X/K9.>$t`E?!O\W
+`l5p5_MeFEr;6?ap@RtDmd'-#kN1a_i838Cg"4a%daQdtdE]t[bKS#H_SEn!]t:e_rj;d8[.(L&
+8q0K-9heAX:Jakc;c?Xq<``C+>$G6;?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt3-(L51VCN/is]
+P*D9"R@B_<TV8-WVl6VsXfnt7ZaR?R]"G_k^r"%/a2lEHbg+P^daZguf@em4h;-uHiT&t[k2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-!D4~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq//@oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9^AoN6IL%pN&MYrD-N;&=kNr3hlDZ=YPE;sqXE;jePE;jeNDusrsDuO\U
+DuO\VEH(lJ!M,h]SHkaVSXZ.>S"0JIrgX%ZSXf\MrL+@hR[KY6S"#q<SXc1<S!oh:SXf\K%%NfT
+S!ob6R@B\6RRHg;fgb[(mR6h;rgNkVrg`qXrgj1^St>qPs.97]rgj+\rg`qVrgX.]S=H(=SG\rX
+T)P>aStDXJrh9@d0;G>@X0&M-Yd(L@[C*HP\@K,[]=bej^;%G!_8=(*_Sa=1`Q#s>aiV]Kc-FY]
+d/DAldf7])d*^:ke^rI/hr<hdoD&98s3(EKj2SpH]"#5Z[C6)71\9PO`4LYPVUGMEj1]uE[[)#L
+Ec"X"H$;t]:kjXVK7ec,J:LEl:K:=k;Gi16Q'7DnOcBAlk01TQ]t:nd[^<BHZELF4X/i1sV5'fZ
+Tq@mGSt2=<Q^3u(Pa.JqNJrmVN;e\9Mi*A\MZ-4t92&&S:/4S]:f:4j<)lt#=BSg3>[:ZC?t*VV
+AS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiW>+Yd1UD\%0)_]t_A"
+`5Td<b0/#ScdC1je^i@*g=tH>hr*JRj5oFckiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*4s*t~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9I77p0HrD<AgjA>PIm8EjBs#C!:s#C$=q)e+-q)\X=4$*7#r]L-\!EN;$
+<WcE(<E/rt!*9(urD`hurDiSkr`/u!#$"W%;c?XqrDWbsr_s/'<)lmt;c6L]ogRP'p-nC;pd=sZ
+qH!Mr!EiP(=TDY)=oMP'=8u;-<E<1&=BJX,=BGK&s&]5$!*K2$rE0)&s&oP0>[:]FraPh9s'c"=
+AGp(PAnPajBkhBuD/O6.D/O91E,fo>FEDYMH@(!dI!pElIt3*%JUrE+LPUkINf]BgQ^aYCVQ$Z"
+Yd1UB[C<]X]t_J(a2c9BaiMTHbKS5WdF-Inf@o!8hV[;Qk3)$sn+$&Dp\F[aJc>iPg4!Z5?N47`
+>?Y4`]qga<E+N9E6s"N,TS6oA<a\?P/iGL=4[(t^2Dmup84Q-=77Ka.3B9;fr]CBZ<E)pr;H8eX%
+IUHOBjtFT?X@#D>[(J4>74V;>?Y66=]\[,=',B%"B8B#;cEZp!E2ho;>sAl;>j>\:]<t992&&S:
+/4S]:f:4j<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0S
+=ZCIUSXleWiW>+Yd1UD\%0)_]t_A"`5Td<b0/#ScdC1je^i@*g=tH>hr*JRj5oFckiq?sm-O--n
+*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*4s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh5kk!Gp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_'hH\nVjWNND-Yd"&1rj)R1s0Va4rjMa7rOMp=rO`$@ke6eRr/^i=qiLlA
+qNLZ:p66#OPEh>qPge+2e^`7%e,7bqe-OLPdaZ[mdF-JAdh^?[dEp4dcd0tbcdC+dcd:+gdFH[m
+dJhPud*g@hd*^;>d/_Jf7Is"78+T4E7INY?6O_/\bKJ,Tcd0n^d*^8?df.YodLFUNcd0n]bfe/N
+aN)9>rl"lWrPnu]b0'_*rlY5^rlYkscd:+hf%Ad:j5oFelKdm+rpU!ZoCMqR"8M]hrVlfsrdk*B
+rs&;oq"FCOo)&FirUZhVh#76dm\B.(f:RtfP%(2[T3Yr4\?`?DriHa4W*ES9?X@&D?*_Sm`Q#g5
+MuP+"qtg-]o^_G<lfmTqk2YFYhV?i<f@86tf%/<rc-4ASc,dl@_>_+P]=GDY[^N[6[Jic!92,=Z
+ISN[8:f1+h<)lt"=BSd2>[1TB?t*SUAS,UiC27[(E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[o.
+S=Z@HUSOccWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkNV6rlg4$,
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCo5J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh488IBp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_']B5rBJK_L?$Mti8+NSTWnDZ=YMD?+VLE;a_PE;a_JE!1)uDf9UkT)>,Z
+T)>)ZS"0DGrL=7bS=>t9S!oe8S!olGRg,CPR[oq:S,SoZS",uIRf8cYS=?"9q*jmElUUP9pI4O=
+q*P=TS=Q4@SGf#XT)P>dSt2FDSt2GNS,f&XRf8c\S=?":R[]fESGf#VT)PD_TbX;sUnjldWiW>)
+Y-5+9Za@*I[C<WTrj`iW]tV;!_o'@._o0O5`lH0Bb0%oOcHjl9dJqW-e'ujre^W1%f@\j7hrEka
+nFZO-s31KLg;Uk=\[o8Z[^H,71\BVP`4CPMX4I=Ni44<FWhsrOE,ABsH$<"^:kjXUK7SW*It1<k
+=&`*r;Gi17P`qAqOcBApjNG9O]Y(hc[^<EHZELF5WiN(qV4s]XTq@gGSXPt7R$a/(P`q;mNJrmV
+NJ`UOMscK%8c_RYr_7i::Jakb;H$Op<`W=*=^,-9?=.)L@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'
+KnbGAN/`m[P*D5uR@B_<T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daQ^sf@em4h;-uH
+iSrnYk2tjkl0@U$mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBP5g%~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_'H77^'GrD<Mkj\YYJkYh:<s#Bp8s#:!>qE+1-n2pJJ!*9#!s&T,!s&K/#
+<rQ(p<VBDh<<?,u;tj8h<<,tn7Is"78+T4E7INY?6iC$b<rZ8$<rQ4t=oVY*=oMM#<X;]+='&L+
+='&N'<WH5"=9Vi/=BAU,r)s&'#$Y><?XR8KqdBG4"CbkNA7baP(M.5mC27['DJa6.DfB]9EcZ>F
+Fa&+XI/SKnIOfo!JqA]2LP^qKNfT<cPa@c,T:r*[WiiS2ZF.-M\\#Sl`5fsAaiV]JbK^%3(XURY
+eCN7(g>1WDioB.`lg=66p%S:[rdk)!s29%j?=$uE>[1K9j2e3^HuES#7RUI+V5AlQ5@IPl1Ft@=
+00ME[0K(cd7h\<\77B[,3Bo\k4?GZ"<)cdp<)eqY'BuNHBOP7R?X@#D>?tN<>[(E8>Q.e7=]\^-
+='&L(<*!!t;uTbr;u]\u;Gg7f:Jq'en5'$U!D?,c9n#i5:f("e;cHat<`iL->?kE>?XR>PA7]@d
+BkhF#DK'T:FEVkRH@1-jJ:`E-L5CeHNK90aPa.T'S"-(BTqeE\W2co#Y->4<[C3TV]Y2(q_Sa@4
+aN;WLcHjnde'ut#g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*4s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh5POmFp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_'jH]"YiX0/Y1YkkX(Zi7B3[f!W5\c02>]D]D&^%RQeNrb?'rfI#>!0[>F
+oof?=pll;PQ'7Grda?Lldacmsf%/CNdj3Jme^DssdF6LkdEp=gdF6RldEp=fd*U(acd:(acI("e
+e^;hDd0J.Kd*^7fd*hp@!71O2p.!n/og\aGn3m(>s2tAb#0b?:cHstermLkqrQu,%cHXSUaiVWE
+`l5m8`5DSms2>)[a2l@$a8=!Ya9p)5bg"J]e'ut%h>Z=?ioK7clKmp,nF,o<rq$?dpA"O_rr.KK
+U&P,lrqQZjoCDMMrri8kUn?TDrtF_(pX7-PBUN/'V4aDc@pQUNYd+20&?;[6>[^uG?!CU?b/hTB
+`5IT6/GoA@p\+.Hmd9?)kND!fi8EGGg"=j(daZjudE]tYbK\8P`PKC*]tV.h[^H+Cn$RU98kM`L
+9MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?Mi<^YP*;/t
+R$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^V[n-`lQ9Fbg"G[dF6Urf@\g2gtgiFi8WeXjlYail0@U$
+m-aoB$h3]Wo(2JFp%A%Pp\jjgq>0scqu6NlrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh4SSRCp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_']BQ/BIKo#Y`r/19.pl3seqecCPphp(Lq/H7Mr,DOOq/H@P%WH?*Dk3Dh
+St)CCSXuFDrgY%#S",t<S=?%<S!oe8R[]h;S"#k9R@9S3R[T_9R@=,F&tPJ\R[T_8SXc1>S=5n9
+R[]e8qaL3JhFI6.q*jd@q*Y1PrLNt[s.B7_!M>t^SH>=NS,SlVR/i]SS,A`SS,\uYS,JiWSc52h
+SXuIHTqS3UUnjibW;`e$X/rG,YHY>2[/[Q>\%'&^]tV:urk]2``5T^8a2lBFb0/#RcHjl9dK.hH
+rm_S3f[nd-f\,$9i8Wk^m-jTCJcF$q$.d,3]XbSa\@8pGs"jT6dDWVJI]_?(s4t,@_P*?<;K,<V
+H['^.;c&4&KS+i.Jq&;H:fgUq;Gg;GQ^!c#PECk)*ob;U^:h.i\$iZNZ*:F6XfAD"VPU&]TqIsI
+St279rKdtYP`q8mOGo3ZN/ELNMscIO8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnPdl
+CMds-EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5a^;%P&`Q$!@
+bKS5Vd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6KkrVcBf
+JcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_'G77g*G:ZP@H;<(RN3W1r:2ubi=3BB4u47>6*3rh>?48i4_<``@'r`B)"
+"'8K'<;ol!<`N2p<VTMo;cN`r"'/E%<;oer<V]Vo<<-"q7J94-8+f@I7IW_@6iL*c<rQ/$=BYT+
+rE9/(!*Jtrs&],#rE&o!!*B,$#[(84=BSg2>?q,4%:<FI?=.#G?=.,N@q9-KB)cKGBPD6urGDdW
+E,fl<F8g=cGBeF\I/JF1It<3*L5:\DN/WaWOHYrqQ^F53StMp[XSo:NYHY@A\@fYsaNDZKbg+P^
+dEp=jeCE.%g"Y?>hVdDSk3;7%o(MkSr;D3H"TPoM@UK+@,@+MX>3s\FR=K3e>=M"cI]T>q>sN1"
+82;YP.m6$X4"rQL8H)*`77K^77QNU04p*o.4AGfS!`N)tO8fpUV0lrb?XI,H?!LT>?<LN;>$G07
+r`KY1=B8I(=&r@%<)QXqrDX&#<)HRk:f("cr_EMknP=U*8kM`L9MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O
+\\#Mg^V[n-`lQ9Fbg"G[dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-aoB$h3]Wo(2JFp%A%Pp\jjg
+q>0scqu6NlrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eof2U8o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$kI#4_mY-5&.YlD!-Z3%A>[/RK5[f3c7\,s4P])K>@]\^?nOT(==OSk73
+P5^[=PS_fse'c^oda?Rpe^N(!eC;ste^W-ue'S*B$.%&KeBuaoda?JAcPP!Ud*L"acHab_daHOk
+da?Ifcd:(ddEqm?!7:^6pdWb'pdY$InO31?!QiL`bQ#cec-QC9s3V2#cd0k[bK@uKa2\+ts24rU
+_Yq@X`5T^8`l5p;a8F!f`l6$AbfnA[daQ^rg"ZM^(#Im/jlYdklL+*/nF?,Bp%J.Vr;HVGs.TGt
+rqcKdq"F=Nqu6ftntVi;rVn7F\,N,.P%BnjWMH2Y?".-M['?m;Xf\V%>?kTD?X-f@ZHC;0`l,fR
+s"!sDq=sXQnF#Z/l0.<lio&bMg=b-.dF?^teBZ:_bf\5PaMbp4_7dRq\@;FFn$N-er^qW49MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8
+StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eoeuI6o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$]C2eWNM#<,0MZ&J2N;&=_NppraDu4MNDuFYTDuX_SDu=SOD[2l)St2IE
+SXf\M!1a"Y#Fq?US",t<Rf8cZR[]h<S,SrXS,SfmS!oe6R@BY6S"-"<R[]e8S!f_7S=?%;S,SlU
+7JK@%8,,RK7I`eA6NWaISG\rWTDtJ_Sc5/WS,\rWR08tJS!ofER/i]QS,AfSSID-`TqS3UUSO``
+VPgBlWW0"5XKAY1Za@'G[C3TU]">Vi^qdh(_u@US`<sW+aN;TJbKS8XdJ_K/e'umuf@\d0g=k<;
+hV[;PjlYgonFld2s3UcPe&B,8]XYP_\$l881@*K.\Uo76hZ*W1LQ'H)Kl'Y);g`n9F\Yk2Lk^S8
+JV&H&J5/pA;cHXl:kk=%QB[PpNW0%:ao9!f]=GDZ['R!AY-"h*WMcVhUnOKSrgj+[rg==aQ'R]$
+PED#hNfK*XMi*FNmYV!9r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJ
+G^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uq
+f@\d1gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eoelC5o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$G7S$-Gk"tkNhGX,/r&=a:3&pmts#U*?mQ1&'qH!Ytr`9)#rDs&$=',?$
+!*0#!s&K)"qc3Jlr`&qtqGmMnpf%5nr^HTOe49:'pdO^@q*P-^r)Wi!r`T8'!*T;'!EiP&=8Z,!
+<rcA$=8uD&<ruK*=8Q)$=]ef*=UA;9>?kH>>[1Q@rE]G0s'Gk;@q9-IAcua\CM[keDZ=V`E,fo?
+F`hkNGB\:YIK"^dIXcp$KnkJ?M2R=PO-#NgQ'R`$QC"&2U8=fcVPU)bW2m&)[_0Grair#Vd*^@n
+f%Jd3gt^`Bhr*GPjQ,LhmI0Z@q"t!gJc@8#VJfmM?!^lD>[1J'gVBM;F(JQF6skSOUOGj&F?MW<
+.PreB5!1n^1c7i'7g;=M77B[+3W;2G4$#Gt<)ifpO8griSpG$X?!goC?!LT;>Zt?9=^#!5=]ng.
+=B8L*=&r=#<)Zar<)Z^p<)ZXl;,C+f;#X5j;=RE^8cD>292&&S:/=\_;,U=k<)lt#=BSg3>[:]D
+@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-5]lQC+,1SXuOLUnsugWiW>,Z*UgG\%0,`
+^;%M$`5Td<b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@Srq-<cp\jmeq>^<i
+qu-HlrUg)?s-*J5~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/AFoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:kBmYc8Up@2-Yd(J4Z2h61[/RK4\,No:\c95@]DfJ%^&>VC]DmrcOSb+;
+OSb11P5^[FPQ6mFPQoUbe'cXmdf.]6dF?^sf$r0ue'lgre^`-sdF$CicdL:idF-GAdfRnDd/D;j
+ckF^Pcd:+ddF$CjdEg4fd*^4ecI)GWb")7sqF0pBqEk;)ao'9`bKS2RrlkDc$d-T5aN)<>`Pf[4
+_u.@Q_o0Lm_u@RT`Q%nt%`ZH+`lQ?Hc-Fbde(!"&rS&(Bh;I;Pj6,[lm-X93oC_hNq"jpfrdk*D
+rs8T"qYBp\oCDMMrr_qhTBZ=S';rkMSuId>Q"?kiTUfb)?+.,FYl:a8Wi0*+@:*AH>\14bb/_N>
+MZ51'rVH<^o'c#5lfmZrk2P=VgtLH6e'lmte^Dagbfe2Sb/_H;^qdXs]=@dIn$N-er^m2a9`@b8
+:/=\_;,^Cm<E<1'=^#$7?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!KSG8=MN!RVOckrpR$jG7
+StMdPV5L8lXKA\1ZF%'L\[oGe^VRe*`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlY^hl07O#m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-*J5~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k>A8),Iu=5^s,-Z2nr;@`rf-Gc!c;gmrGVLNr,;OQ"E/0pDJoGl!-%gR
+$D!]XSXc:BSt2FBrga._SXc8JSH#)YRL#COR@B_9S",rHS-#+JRf/W\R[]b9S"-":R[X5F#b%9R
+S",t:R%!h?b")7sqF0pBqEt:PrLEnW!h,OGrgWhSs-rnS!1EeQ!1E\Ps.'+Ys.'(Zs-t=+TV/$R
+USO``Vl-JlVl6SoX/rD)Yd(O@['dBR]"5Me^VI_c_tq;!`lH-@b0%oOcd:%ddaQ^rf%A[0gYL`C
+hr3SUjlP[im-sW@qu$BjJcF:#$IHf,]Y(hd\@K&Urr4_Egr[0\IC.u5s4N-lgN\*\Ec4j&H?aO3
+;GW(&KS+l-JU`2F:f^Ln;GgGKQ^=#'P)TDWg;Ue@]t:h`[C!9FYck11WMuemUnjZXrgspsR[KS2
+Q^*i&QBRJnO,]-XMi*CMMscH&8cD<_92,=ZISN[8:f1.i<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+
+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0SXuLJUSXleWiW>+Yd1XE\%0)_]t_D#`5Td<b0/&T
+cdC1je^rF+g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcCr6
+J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k6q9d@9MsqKr__KLr_`\Tq)S=3!]N(urAaj=rB'C-s#U3ArB'sZ!*9#!
+!*9#!!EN:t<rZ/"<rQ)!<r,hm<;';n<)Z`k<;B#+8,5XN7I`eB6iC'a<rcA%=8u=t=9qu/<`N1$
+='&N'<WQ<*r`B)$s&f>(r`T8'r`T8)s',J.s',S1?N"10?N+;G@Us%^AS,RhBP2$oD/F31DJjB3
+EH#o=FEDYJG'8+UH@1*hJ:W<*L51VCMiEdZOckonQ^3o%QC"#/StVjPU8+N]Vl-MqZ+.Qea32`S
+dad"*hVR5NioK7akND!kkj.U(nalJMqYYpEs8O=4CLUUU?!^fB>?b:mb,UMKBjF4t@>;+_H:^PV
+3AiKK1bV&l49@Du2>p#U6UaI57QEIm5!:tg4AAgTr_njW%FpniARJqQ?X6rA>?Y;2>6%h*>5q_0
+='/R+=&rE%<W?"r<";i);c6Fh;,C+f;GU+d;=RE^8cD<_92,=ZISN[8:f1.i<)lt#=BSg3>[:ZC
+?t*VVAS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0SXuLJUSXleWiW>+Yd1XE\%0)_
+]t_D#`5Td<b0/&TcdC1je^rF+g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7iC4(u<WOB%8Z*CU?rj2U3!k,SIrj`!=s186Bs1I@)qn2g<s,R)>qN1N6
+rK-i;nrj$:!L/cHPQ6mGdl>b(daQUle'lame^Dsse'c^pe(3$ue'lane'ZLhda6Chda?LkdE^%b
+c-Xb^cHae_cd:(gda?D>d0.hBd*U2<7d!;:8E`S>7f#RD7/B7UaN;NDa2l?BrlG,]#ft-0aN)?@
+`Ph_ms2"`N28[8J_8*k&_8=+.`5T[5`Pf^6a2uNLcHt"feCN4'g"G-7gtpuJj5f@dlKdg)n+$#A
+p%eF_quH]prr2lrrdk*Nrs8Q"qYBp]p%.ePrr`%lT'lRW-DelbW1f<BP[^SdT:BM%\@8fLYcY"/
+X*7cR@:3GI?&c/6b/_N>MZ54)rqlK`o'c#5lK[TqkMkFWgtLK7e(!!ue'ZIcbfe5Tai;38_8!at
+]=59K[K3eCn?i6fr^qZ59MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmnCMds.EH?5FGBnL^
+I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/
+gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7i>AA5/K8]\bs,-f6rf$H.erKcImr&)BpMg+MrG_dT")_smDYe8ODZ610
+S"6+ASGeufS=Z4@SXc1>SXc:AS!s>G&tGDYR[]b8S",q:S!o_3R[9G0rgEbTrgX7`R[KY8S",t:
+rgWgTk=>;<kXYG<qF0pBqEt1M".GXFR/WNORK/iURf/ZSQi`VAR/<9ORf/`TS-tmXS"#t@TVA0U
+USRmdrhoap(94F;Y->1;Za@*J[^`iY]=u%r_ns:.r5'l"`5KX7aN;QHc-ObadaHXrf%AX.gYLcF
+iSrq\k3(snm-aB6p%S=]JcF=$$hDQ]^:_+j\[f2Y[Jp1\qr5l8KRLDms8U`)QdC5+C3"2gI!KsZ
+<)SL,KnG#0JUr;X:f(1k;c6J1L6n6mQBI7-*Vn=)^V7Cm\@&`O['?m>Y,nV%VP^/cTqS*NSt;AK
+R/`H_Q^!YrOH5E]N/NRNMi3ILn;73;r^qZ59MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@
+bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEg
+JcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq//@oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7i6qBjB:%qK`;=dWa;;P4J;?&TS3;Y`23;kl:3rV5/3WV<'r]:6D=BJX*
+r`9)#rDs,&=&rC(r`02(<``=&<W,tt<W?+r<W5qt;uTbm<<?3$<W5qt;u9Pl7d!;:8E`S>7f#RD
+7/B:N<rZ8!<WZ?'<r?&%=]ea+r`&r!r`9;)<E<4'<`]3$"B\i1=BYW*#?b/2=^#!5>Q%h*?2n4@
+?!^lF?t!MTAS,OeB4trWBEi6gDJsE1DuFVpEHH>GG'A+SH$XjeIt3-'KSG;?MMmITOHG]kQ2[*o
+QC!r+R[]k=T;&-ZWN3&"Xg,7D^;J%8c-Onngu%,Qk32+/ljN7MmdK]:oC_kRqu)*G5QC24Bjk7P
+?!LZ?>?b7ue$YQmCg]e%@u@LbGt:JM3&*$D1bV!T4?YS]7n?-?7R]a87QNRj5!D+k4%2kC<;ogV
+rt*G<EarKa?<plC>[(H;>?Y81>5hY/=BSa-=&i<#<W>u,<)lmr<)Z^m;Gg:f;,[?hn4s$Ur^qZ5
+9MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckro
+Q^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"
+m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLFUrVc`nr;6Njs7uZh6hg<Jp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(gC4M;AYIUmBZ*L[A[/RK5[K3kIrOMs>!kZ+Xn%Jb6q7Z[<ot10_rf@#>
+pQ,66plY02$'UU<P*FABdaQYCe,7W5d*pLoe(3$se'ujqeCDspda?CedF-Iid*^:krmD;'dF$7e
+cHah`cd:"bdF8'A#LLlGd*L$-7dik,8FK(F7f#RE7/B:Mao09ba2Z->`l?!s`rF!X`;[XS_Y:eM
+^qmk(_Sj@0rPT#]a2lHJc-F_bec+,;f\5-9hV[8MjQ>UfkiqBum-X93o(;YMq>'pa"T8/orVhBJ
+Y5eP!#5\/kp\4:Oqu6cqn"8V<s!FSds0&,WRZh0XTq>V$@(<\OZ)t11XfGT/?"%,I?!OV>bfRoF
+`/=RKrVlZfp$hG<m-Es"kih*dhqZu>f@/:&e'cXhcHOGTc,mrA_nj%$]XbM[\$`ZQ[.(L'8cME_
+97KW09hnJ\:f1+h;cHdu='/U/>[1TB?t!MSAS,RgC27[(DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#Ng
+Q'[l,S=Z@HUSOcbWN3/(Yd(OB[^`l[]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,n*fc9o(!%Wo^qhLp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLFUrVc`nr;6Njs7uZh554dEp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g>\nJ2LQ..IregW3!0$o:rf6l8muIF-m>h()rGD%Ar,;=Ks)7gS!H2lT
+D?"MRDZXfpSGo&ZSGA`USGo&_S=Z:@S=TVKs-a=bR[KS4S"#k8S"#rIRgYXQR[BP2R$sG3S=BMJ
+rgNkVs-s4]R[Q]8mmlA.mmm4DqF0sCqEk@RS"#lGR0K+JR@BY6RJWHOR08nDQ^F0<RJrZTS,Jib
+SXc1=S=ZCIU8+KZrhf^n!i`3"ri6^6YHb@=Za@*I[^WcW]">Yi^VI\a^ad1;_o0O5`lH0Cb0A8Z
+dF-Ope^iC*g=tH@iSrnZkND*pm-O33oC_nUrdk+#rs.o7`4`jr]=S!O!4Mk+-0`mr[=GIDs8UW%
+S(rX?Bl\&eI!Kp2<)JC*KnG#0Jq8DG:f(3l;[60RL6n6lP`q+,+nF+!_SEjs\$i]O['R$@YH4_&
+Vl$8bTqS-OSXl19R@'<>QOf=COcPK^NK&jRMMmCMM2Cb[s%35_s%@i89heAY:f("e;c?Xr<``C+
+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\Vl?`!Y->1;
+[C3TU]=ktp_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5UoCV\Jp%J.S
+rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLFUrVc`nr;6Njs7uZh4SSRCp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g6qBmB:/UmbqGHo^rDE5cs&&8`r_`PjrAX^8qDnC3r&O^:r]BU1s#UEG
+4'#Eb=]tN$!*9)#"]e]+<`W<#<rZ/"<rH%r<r>to<;KSr<`N/q<<#GV8)d).8,>^O7IikC6iU3q
+<`N1%=B8L)=BAR)r`AttrE'#"r)`l"s&fA+=oMM.=]eg0>?Y37r`oD-!+,Y4'4G9V@:<YVAS5Uf
+B4tpjBP;-rD#S9DDJsH4EH62FGBeCYH@($eIt3*%K7nr7MMd@PNf]BePa.T&R$jD3S=Z=ETqeH_
+WiWD,YctF?\@fYub0A8\e(<=1iT04gmdTcGo)A4bo_/%RqYU5BrsA_^L1k"#?!LW@r`h<bpYEWX
+LN-g,6sbhZUNoC(JiPY@2)6dI4?P;T2b-D/7n,s:7Rf0p3BfVi4?H82<)Z^p<0$t^`/S_G@:9(@
+$=-n@>[1K:>?b97r`KA*=BAU+rD`u";c?Xpr_j5);Gg=h;,:"c;G^.cn5''Us%<;aInWR2:/=\_
+;,U=k<*!%$=BSg4>[CcF@:E_XAnPdlCMds-EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^O
+Uo(&hX0&P/Z*UjH\@K5b^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*ol<
+nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLFUrVc`nr;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(gCOqVGZFmHIZEggD[JmW5\Gs,=])TG6^%T)=]D]D3])[oiNrG(>OS"V4
+OS+b0P5g^QPg@_'dF$Cke'c\@dfRtHec+&$f$r-seG[hrd/MGmdKRtGd*L+frR1blrQtSi#LC]A
+cd:"bdf%PqcdU7fnji:Bo1AOEnjiOGqF1!DqEt;(s2PDd`l5p;`l?!:rPeuY_ns7*pqHjD^])"M
+_Sj@i`;de"aN;ZNcHt"heCE.&g=tE?i8EVVk2tjjkiqBulg4'.nac\Os7HKfp\4I^q#^EirIP!P
+rs8W#qtg-`p\"1TrrVb`h#76cUs/kJTT,A&@Affk?"@<P[^*.:X:VM6=^53??s[,DZa.cra2c)U
+s"+0JrVH6[nF#`2lg!]tkMkIXh:pW7eCN=&dEp1abKJ,SaMu-7_8!as\@AsG[K3eCn?r9fr^qW4
+9MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/s
+R$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$
+m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6NlrUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(g>\nP4M2dCMqMP?4rJgf:s,HN.oo8a,ooB)jr,(q@rGV@J!,qgTs).mT
+rb_[Q!,qh+rLNtYqOI\XSY#hO$(d]WS=Q1>R[TZDRfAiZR@K_6qjRSPrL*\Q"IYXGS"0JIrgEtZ
+R[oq;nji:Bo1AOEnjiOGqF1!DqEk:ORf8`SRK8nHrL!hXS"#k8R/E<JRJ`KRS,SrXSJ.N_S=Q7E
+Tq\9VUnsobVl6SpWiQ-#%^*">Z*LaD[^NZS\@K/^r4W*E.DWd:_o9X9aN;TJc-O_`daQ^rf%8U/
+gtglHioK7bkj%L#mI9`@p\Oi>s4.,WjiYKU]tM(i\[f2YrVnSAfZ(FQWo!dUdt4(9M0N]RD,5P)
+G"kn3LPCP8K7\]+Inig:<`;mp;20glQBd\tNW0:Od(mE2]t:b]rj3lUYck71Wi;nnUnaTWTV%dH
+R@'D/Q^3u'PEV,iO,f3YMi.Ll!fDejnV[?<r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\
+B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*
+`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6Nl
+rUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZh4SSRCp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(g77^!C:/^pbqGI#ar)*8fohk'R!''m8r]'a7qDeF6r&Xd<nN$\4=8c/"
+=T2G'=RoPn<WZ?'<qo\n<r>qt;u9Mu<E)st<)Zcq<Vobd8+T:C8b5LD8,>^O7IrqD6iC'i=B/@%
+=BGH%r)`o!r`9)#qH*Vt"'Jf1=T2G)=B\o->Q7q4?!LZ@?=%"<@/OI5@fp7RAnV*V"D;C^Bl!]a
+s(sQ0DfB];FEMePH$OabI=HcuJqAW.L51VDN/ip[Ocu#qQ^F20S"#t@U8+T`WN*#%Z*^n;[NE#l
+_8XR@c-FV^eCN=.i8s.fmdTi@o_%nNp@nCZqu20H"olhtARJdB>p3N[>Zk80k/jT]G%OrI=b3rT
+G=G;M5;OlL1bLpR4"rQMr^RYj7R]a875d1e5!D+l4&&CJ;c?[pO8fUe]7k-2?=7/H?<g_6>Q\88
+>?h)1s&fh5=BAX,<E3!u<)Q^q<)W]p##\;s;Gg=hr_NVm;".9\8cD>292&&S:/=\_;,U=k<)lt#
+=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQC+,1SY)UMUo(&hWiWA-
+Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*olIo)J:bo_%nN
+p@nO\!r;]hr;6KkrVcBfJcCu7J,~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg621*Hp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%fCkS%P[_/oPZa@.>[f3c7\,j.Ork&3Cp:^76k.CVRrJp?-rfH`6plbZ@
+#0tQ@cHsqarmLhq!RfHodKJ%Ie'cbEdgOUQeC2jpdE^1fcd2R:s3gqrs3VM.cd1"`cHX\]cHsna
+daHOicd:&48,#R68bbjJ8,GdP7IrqD6NP6Ir5AZSrP\fU_u@OQ_$%Qf^V@S^^]2%I^]D<ir5ATR
+)T^%Dbg"M^e'uq"f\,$7hV[>PjQ>Xgkih9qrp(!ZmI'H4naZ2?nac;Erq6Hhq>:,As02M/rquZj
+qYBmYoD8IgoqL%9rtD0]rQCjmRZaVHTq>V"?F[DJYc[o+&$&l<>[_#H?!O_AbfIiE_MeFIrVlZj
+p@IeBmd09)kih0hiS`PGgXt',g""KrcHaVVc-=>L`59@*^:Le`\@/lTm^3'd8cD<_92,=ZGtq.3
+:f1.i<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKqK7nu7M2I7PO-,TjQC+)0SXuLK
+UnsufWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olH
+ncA@Srq-<cp\jmeq>^<hqu6NmrUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg4SSRCp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f?>Oe9MN7Okrf$c7muI"!r/U9-rbh[Omr&,Cmr/;GDZ4MQDZ6.+S,So^
+SXc4@SXc8JS-5CQS=?)JS-tgVS=5n9R[KY6R@4#B".PaKS,SlVQj]=KR$X50R[fk:S=BMHs-r^P
+pIO:8pdk!HqaUENo0iFBqO%JRR@0M4r0dGKqj@JRRJrZTRhqTcSXc1=SXl@ETq\9VUSO`aW2Q\q
+X/l6%#d1A8Yd(RB[C6(Ds1&?F]=bbg]Y4<Y.)3U8`5Ta:ai_fNcd:(fe(*"#f\,$7hVdAQjQ>Xi
+lg4*/nFQALr;M9Iec,p5b/1p-]tM%grj_q,0`'YL]Rlp/s8UZ$VTYEPBQ@p9HZsX-;br1'KnG#0
+Jq/>G:Jb(j;H$GILR4<lP`^t*2!E3"^qROo[^NTMZa$a<YH+\&Vl$8dTV8$NSt2::R$X,)Q^*f"
+OcPQ`N/NRNMi<ROMM^k\!D#f]8c_RYr_7Z5:Jakb;c?Xq<``C+>$G6;?=.)L@q9.`BPD6uDJjE5
+F*)SLH$XjdIt<6*L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfo"9['mHS]"Gbl_8=.0a2lEHc-F\`
+daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg4SSRCp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f6qBpD:/^pbq,.&drDE>fmSWIO!]`5"rAX^8pc873rAj^8s#]g5!BW@A
+=8c/"=T2G'=SPts<WH4t<rZ/"<r5nq<r5nq<!ZE%;cH^p<)Zcq<W,nj8,#R68bbjJ8,GdP7IrqD
+6iU3n<`N.#=&r@'=T2D"<WH5#<r,nr=T;M1>$5$3=]em3>?q&2!+,Y3r*]M4s'u(>$"dg`C2%?q
+BkhG_D#\?IDJsK6EccGIGBnI\I=6TrJqJ`1L5(J?Mi<XUOHG`kQC+&-S"-%@TVJ?^WN3)$YHkRF
+\@T>e^VRn1bKS2QbK\A]e_/d:j6,[onFQ>Pp&t0dqYgDErs/S:HY-Vi?!dM9r`^-;nC=k0H>6_U
+;0T7GH:CkT82DhT2#]WA3\`NM7n<PJr^@>e2E3]\5!;"i9h\Mb;cHYUrt"e.Jnnk'?=.&F?<^]?
+>?q/3s&ok7=BSa.<`iF(<`E'u;Z9W+;cH[o;Gg=h:f:1f:Jakbn4s'U8cD<_92,=ZGtq.3:f1.i
+<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKqK7nu7M2I7PO-,TjQC+)0SXuLKUnsuf
+WiW>+Z*UgG\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olHncA@S
+rq-<cp\jmeq>^<hqu6NmrUg)?s-3P6~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqeDhaRV[_2UH!4Dd6!4Vs;rji$?rk/'?pq5Y!!KW??O8k7-O8b75Onk1?
+ci),lcd'h_dJ_MqdaQ\EdL+IOe'c^oeC2mre,@\reC)hEd/hS=rm:bpdJhT#d*^1bd*L(ad/D8n
+d*C"bchU*,8G5XA9(kjQ8G#FL7f,XH7/94M`!O?"`5BL2`5BI/rkSfS_8*e"^VKf_rkABI!lDjm
+rP\]S(WXY?bg"J^e'uq"f\,!5hVdAQjQ5Rfkl0iHl2^/Llic_DmHsBAmKr@Oo(2MIp\=U`JcE"T
+s8E6!qtp6ap@\:^!r8[brVmM-iq_)sN1""MV4aDb@9g@LZEX;.&#i];>[_#I?!O_^bfIlF_i+OK
+rVu`ip%%V?md06(ki_*hiSiVIg=Fj)g==QrcHaVVc-=AO`59@+]t(V\\@&cR[-tC'84ieQInNI/
+9heAY:f("e;cHat<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa.W(
+S"-(CTqeE]W2co#YHY==[^WfY]Y2(q_SjF6aND]NcHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*
+mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFAPlH7~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe?Yst:MN7[oq2G93o8`I&r/U-)qJQ=M!cDjln8A5Dno4PG$>s^OSXc4>
+S",t;qjdeYSXobM$D!]XS=Q1@S=H.?rgO"YS!oiFRK8hDrL3eUrgWqU#FLjGR$j;0Rf/]XR@9S4
+q+(6Op.=UCp.>*OoLJdJqaL-Fq*Y1Mrg<_Pq3_)H!1<YO!LfGURfAiaS=Q4@S"-%?StD\SUB76f
+W;`drWrT7#Y5b^1Z*:O?Za@.>[KO(L\@K0K])TAj]Y2%p_Sa=3aihoPcd:+he(*%$f\5-:hVdDR
+jQ>[jm-X92o(;\QrIP!ursRT&_8!b!]tCqd\[VM:,j*FeKRVDMs5\m9aJ3umED1b-GBHYZ:PXXV
+K7SW*J:LBj:f[Kn#>p5BQ^3o%P)]J`il]$O^:Un_[^EKKYct:5X/i8!V50o]TV/!MS!o_3rKdkV
+PE_5lO,f0VMi.Ll!f;eknVR?<8cD>392&#R9hnJ\:f1+h<)lt"='8[1>[1TB?t*SUAS,UiCMRd)
+E,fr@G'A4XI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_A"`5Td<b0/&T
+cdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*6
+s*t~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe77^$D:/Xqd;"[Zc;#F2d;X[KL;Z/WT3<(r93;GT43;bf&3rN.[<WH5#
+<WH5#=TDS$<s_u1=&rC'=&r@'rDrYmr`8nrs&8tsr_rns<W5qu;cN`r!*&baq+13Nlq6tCqFL6K
+qaUHOoL/LBr`8u!s&f\2='&F&<E<1&<`]#trE0)&s&oY3>$5!4>$G80>le2:ra-@I?XI2K@:<VT
+@q9._B4tsmBPD3rrG,JND/F0/E,fr@G'.tQH[U?mJ:W<)KSG5:Ll74OO-,WiPa7])R@B\:T:hsU
+VlHf!Y->7?\%'#^^;.V(a2lBGbfe5TcHjngg"bKFkNhR+o_.tOq"al>s8W*JY'+;^>[1T@?!^c@
+=o\9R^7Kmo?V!P)TsKMF=)h+p/i>+A4Zb_[2DkA%%n&iT7Rf?s3BfYk4?H89<;oer;31_\l_o5D
+@Uf=D$!gkA?!LQ=>[(G3=q"J9=BJX+=BJU)<E)lq<;TT#;Gg4d;Gg7e;GcjY!D#f]8q0K-9MJ5V
+:Jakb;H$Op<`W:)=^,-9?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'KnkMBN/`m\P*D6!R@B_<
+TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_daZguf@em4h;7&IiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-3P6~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\8R(gVmsD=[JmW6\,Ei>]">Seq7ZR9hn/lK!0H<'rfHc7rfR>FP0X'Q
+!RAshc4eONcdC4ie'c^odaQXme'Z[qda\9F-IgJle'caqdF6Lkcd0tbdF$=ie'QUld*L%ecHae_
+d*L%`d*U(br($TSpdsC9pdt?RogemKqaL*EqEt;!s2"uV_SO+*_8,o^!5SEFrkJTO_o)Gkrl#eq
+a2uNKcd:+he^rF*g"bKBi8WeXkNM0qlKS<5!:0XLrp('\lg4!*mI0N5o(DbQqu)*GYl=_$rqccn
+p\"C_"9%_]l2L]/ma(ppU5G@EWMQ;[BOP2VZ`pX7XKAM$>?tHA@:*8FZHpb9a2X#:0`D%Iq==+E
+md9B+l0.<njPf(RgtLB2e(`L#cd'h[bg"DTai)'3^qI:g\@8lS[C#D1IRm%%8kM`L9MJ5V:Jakb
+;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$U
+VPgGpXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiSrnYk2tmll0@X%$170Ln*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\6j)rIuB?^N;AP/NqA>/NpVo*NqdMjD=2<@Dt\/JDZXfpSGo&ZSGeo[
+S=Q1@Sc,&cSXc7@S=Q1ASt)AMSH#&YSGo!"R[]b8R@0M4S"#k:S!fe8R@'A2Q^=,-R[T_7S=>q8
+r($TSpdsC9pdt?RogemKqaL*EqEk7LrK[PPQC!s8QiNKPR/*0KRM_NaSXc4>S=Q4BStDaPUSO]^
+W2Q\pWiN9$Xq%Y>Z*CU@Za@-IZa@*I[f3`f\[]/[]">Vg^;.V'`5g$Dbg4YaeCE+#f@\j5h;7,M
+jlYdllg=-/nFQ;Gq##^CeGfp+`pr3,^:h1k]"#9Js"!Qi`4(9)qu?5uSC"ooAoULlH?aR4;GN"$
+JqJW+JU`2E:et(j;c6JIR$[f;N;kWjaM>U)]X>/S['R*DYcb.0X/`+pUSOWWTV7sHR[KS2R$X/)
+Pa%;kO,f3XMMd=MMZ/J&MLJ)f8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnYjmCMds-
+EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8X
+dF-Oof%8U/gYL]Ci8N\UjQ>Ugl07L"lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCu7
+J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\4&q[9MY%RohtBYkYh@>of2e.r&FX8mQ(A/3rN1\=8Q"u=8l>&=Sl/"
+=T2A&<`f)tqGdPs<W,tq<W5tt;u]f%<E)pr<)Zdsr($TSpdsC9pdt?RogemKqaL*EqEt9`q,dMq
+"'8K&<r#hp=9_o3>?Y03>5_\*>Qe>=?<gh8?NFJ?r*fV8"Cu(UB4q3W!,;FI>AItgCM[j*E,fl<
+F*)PJG^=acIXm!$K8##6LkptJNK0-bQ'IZ&R@9V7SXl@GUo(,lXfo"9[^WfY]Y;1t`5Ta<b0%oO
+c-FY_e(*.+hVmS\md]oApA"L^rdk(prL@e9LjiW7?!UcC>$M%,l,fl]FCeWEA=L,n?:oHT1G1L7
+4oRPZ2`3H_7n,s977B[83B/u^5<_.k9iY0l;i^l7iM(X1@:EPM?<pfB>[1K:>[(H9>$G'2=BJX+
+=BJU(<E)mr<Dugq;c?Rm;Gg7g;,C%a;"%2/84cBF8kVfN9heAY:f("e;c?Xr<``C+>$P<=?XR;O
+@qB7cBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TV]Y2(q
+_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k32'olKmjDmI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`np&9OBPlH7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\8R+hVRX:HrO2a8rj`!=s1/9D]Y+0Uq7Ph$s1J?Crk/6Bs,QB*rfI)>
+rK-i;rK%/EP*4,9r6Gu#bg+MXc-FY_e'c[nd*gCkd/DAqdF6Rme,@]#eC)jrda?Ijci29"c-aqb
+eC2dle'cRjchbohcd>6QqagQTe4TR/qagENqaUKPo0iFB#f"*g^qde&^qf`[rkJQL_#D+K^]M?h
+_YqFN`>6M8bK\A[dFHk#g"P6=hr*JPj5oFekl0fMlKRTul0/$/s6:!XmI'H6oCVbPqu$GEs0;V(
+qZH]ip\+F_!q`2Err4;=[K!k5@$kW,VP'Mm@C`qSZEC=2XfA=)?=I;M?<gdAcHOAM`esfrrr;d3
+oCDA<mHa*&kih3jiSiYJg=Y!*f@J6ncHZ=3%a2u4_83q"\[],W[C3HLn$N3f8P/nRIS3@/9hnJ\
+:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"?7G
+U84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9
+s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\6s2tIuB?]N;\b3NqJD0Np_u%Nr!YjD=2<?Du"AMDZarsS=KMJ!1a%X
+!LfMSS->CPSXc1>rga1^SXc1>rL3eWrgWnU!LoMVRLGRQS!fe9R@9V6R$sEAQNrnGR[T_97n<GI
+qFT1/qFUQTp.,!Lr'g3FqEt7Is-ESLqO%/J!goCDrL*bVSGo#WSc>8iT:hpRUSO`bW2ZesX8]7$
+Xp2)7Z*LX?ZMq31[/[Nf[^ENO[^WcV\\#Mg^VRe)`Q-'Abg+VbeCE.%f\>3<hrEh]l0Rg*n+$#A
+pA"I[rIP"!rs\GEi;``T_S*Xq\[]0Is"!p#aLd&+jT#4tMrTeA9Q3sYH$=C2;Mp9aK7ST*JU`2H
+;,pUq;GpAHR$R`:N;k`h`P9.%]XG5UZa-m@YHG".X/`+qUSOWWTV%gGS!f_5R$X/)P`q5kO,f3X
+M2R7LM27"FnVRB=8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(
+g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\_Np%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\4&nY9MSG^:f-a\oMYH]k#21Us#:!=o/QV-qDeL8n2^S33r2tY=8Q#!
+='>N)!*9)##$+f-=BAO)pf@5kr`0)#<`])trD`bps&Atr!`VZ[qagQTe4TR/qagENqaUKPo0iFB
+#$+`(<``C)r)No$<E3)o=8c5%=^(f-rEK5*"'o5<?N+=3?3"@3@0BtH@UisJAHZXZBkV5[C0PIg
+C27X&DK'W:F)uGGF`r%VH[L9mJqJc2L5:\DMiE^YPEhH$R@B\;T:_gOU8+TbX0&S2['dBR]=bkm
+_8F42aN;TJc-FY]d*gFqgY^uOkNhU-o_/(Vqu20H$K-hVH'sqa@9m/Gr`oL'*VJ*mPBpqK7U(b\
+T4gTI68KrG0KhQ\4>o&e84H,K71D^T7QELm5<h:m4AJmUr_njW*SHm'AR]"Q?<plC?!LT;>?kB;
+=^#$1='/R+=&rH&<<cE$<)cao<;oes<)W]m"Ahli:f-UV!_>mSr^qW49MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDnXfen5
+ZaI6O\\#Mg^r"".`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3nF?PL#P7T[p%A%Q
+p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh6hg<Jp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[r7"hVRX:H[C3NQ\,Ef<\[oBO]DoMD^%o>(]D]AB]DT>=]D[cUO8b4C
+OcYWbr/gi=qN1X#r6P;drm1Pj*n&E`d*U4fdaZXkdaQape'ugqeBu[leBuXjd*L(brm1YnrmUnp
+!mf0=rm(_ocd'k_qagTUm7R%Em7R7IqagHOqaUKPo0iFB"MDF^^;'Z_rkAHKrP/BJs1\QLrP/BJ
+!PuYO`;IRa`lQ?IcHsthf%8U/h;@,hi<SE(jQ>Xhki_j,roOdTk3(sll0@X&md]o@p\=U_JcDqR
+"8hohp\FgjpSHL?rt1h%R\G_-B;q`#S7Q-?\?`BCri?X2Tj1o5?XR2E?*_bua2Z,Us"=<Ip[dkC
+md0?+kih9oj5JtRgtLB2daZdmcd'e[bg"AUai)'4^q@1f[^NZS[-k@%8,u6\8c_RYr_7i::Jakb
+;c?Xq<``C+>$G6;?=.,M@q9.`BPD6uDJsN7F*)SLH$XjeJ:W?+L51VDN/is]PEhH$R[]k>Tq\?Z
+Vl?\tXg#(:['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8B
+oCW(Us7QHerV-HiqYL-erqu`no_sFAQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[pa/uJ;]H^Mu\k5NqJD1Npi&!NqmSiD=2<>Du=SNDu?.'Sc>5YS,JlU
+Rg5IQS",t=St#_L&Y>G\S=?%=R[KV6R[KV4R@9QCRf/`URKAkCRJrTQRK&cR8Gc!G9(bjE9)D3W
+8G>XO7f5^H7/B:NQ2[*JQiEEQRJrTNR/iWPR/i]SS,8`eT:hjNUSFZ`W2ZesXK8P+riZ4(s0;R/
+rj2X3rj=5a\%&oW\\#Ph^VI\'`Q$!Bbg4\ceCN7*gYC]GjQGjrn*ol<o_81Yr;M9Ie,KI1cMIPC
+]XbP^qu8,-cb>(.g].<#I,oKsAoL[sH$=@1;Mp6aKS"c,JU`#B:fUFn;Gg;GR/WBOQ&YeuqU`U$
+^V7=g[C!<HZ*1@5XfJJ%W2?AcU7e-MSXc1;R$jA/Q^3l"OcYWaNJiXON/R([s%!,]r^m2a9`@b8
+:/=\_;,^Cm<E<1'=^#$7?!^lH@Uiq[B4u!pCi402EH?5FGBnL^IXm!%KSG8=Mi<[WOcu&rR$sM8
+StVmSV5L;mXKA_3Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-a?2
+nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUg)?s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[mikY9MJC_;"IQV;Z0JS;?0Sl;!g7@3VYT'3rE+Z=oVV(=8Q%u=8l;,
+<``=&=&rF*rDiu$<E8rtqGmDnqc*Yr;ts>h8Gc!G9(bjE9)D3W8G>XO7f5^H7/B:F<rZ8$<qKGr
+=BSg1=o;M&>ROhD?!^iE?X@&H@:B(Cs'u(?s(D@Grb;ILD#S5MD$=frEH6,BrcLnXG^4U^I=?a!
+KnbA=M2@+LNffNkQC+)0S=Z@IUSO`aW2ZhuXKJk8[^j#`^;%M%`Q$!@b0/)Vcd:%eeCWF2i8j%c
+md]rBp\XjeJc?1sJ7c*fV4aQc\mJ`J>lOaDik_7=DI?"5I(-1u5__6S/N#4G5!(kc2F^5-7RmAG%
+n8rI3^#\l4ZY]"<E)jp;i^kgcBN?Y@:3GL?!UZ?>?b99r`fD+&mJC<=BAR(<EE."<Dugq<)Q[pr
+DNu";,U7f;,:"bmn`sS!(m/^!D?,c9n#i5:f("f;cHat='/U/>?kH??X[DRA7]CeBkqO&DfKc<F
+EVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfe
+CE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DDo`+Uap&Ojcp]C9fqY^6ir;HTdrdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[r7"kV7F/9[f<i:\GWo;\cBA<]]6X"]_T2;Np2T+OHG\%OT(C<OS[9%
+cN2;:rlu8&cHX\]dEg4ddaHLke'cUkdF-CheGdo*dF-Ild*gFldF-@fdJM9"e'QLhd*L(ad*Bq_
+cd)M\qapBOj%Ju9qap]VpIG*Mr'g6Gq*Y+orP&6FqnW-Es1eZO_YqCc`Pfa9a2Z3Dbg"J]e^iC+
+gYLcchu_ltjSn6BkN1k*jo=HWjQ5LcjlYail07O$mdK]:p%S7YrIP!OrrMohq>UNpVk3ke,bat.
+XH/f_Whl>YARE!WZ*CI6XK8F(>[:fI?X6lCZHgV4`Q!c7(&n('naGr6m-O!"kNLsbiSNDGg"4gS
+e.p?TcHXVWc-4DR`PTI,]t(\^[^W`Qn$N6f84Z>O8q'E,9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L
+@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*D9"R@Bb=TV80XVl6VsXfnt8['mHS]"Gbl
+_8=.0a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqYg<j
+r;HTdrdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[pa3"J;]E`N;S\3Nqn\5Npi%rNq[GhD=2<>DuO_ODu-"'SHk[US=H(;
+S!s>H!h,UIrgWqY$CmTVS=Q.=SXc1=rgF._R@9V6R@9M2S,8W`S!f_5R@'D/R?s8-R@4%FqapBO
+j%Ju9qap]VpIG*Mr'g6Gq*Y"Es-N\Or0dSPr0[eYS"#q<SXl;MSJe#lTV8*TV5C2jWiN5'XfSY,
+Y-5%5YHY::rNcI0rj;^6-b$Uq\[f>c^;%J"_o0O7aihuVdF6Xtg>1]Jk3)$sn+6/Ep\F[_rdk*s
+rrCjKrrK[?qu88;f"m&ieGoR,K"utgBlR+$H?aU5;N$<aKS"c,J::6h:KCFn;,U>IR$X,)P`>\e
+o[:Un^:h+d[C!9FZ*1=3XK&8!VP^/aU7e-MSXl4;R$j?@QOK.DP)t`bNJiXON/NM\M$$7=84ieQ
+IS3@.9heAY:f("e;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<c
+Pa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`kNM0q
+lg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD#8J,~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[mikZ9MJC`;"7E9;ZBVi;!L%?3VYQ63V#6-=Su>%=8Z,!<s;W,='/O)
+r`9>*=BAR)<``?"<W?+r<Vohs<<6'!rDWkt<)Z`p<;oGc8b5R79CkdQ8c2-R8,GdR7J'"D6hsdS
+=8u;.='/U.>$>-7>$>/0>RFbC?<plD?XI,H@/OFA?t!MSAS#LfBkV0oCAr!NCi+'-DfB]:F*2YL
+GBeCYH@('hJV&N.LPUhFN/s'_Pa%K$R@Bb>Tq\?ZW2co!XK8S-Yd:dK]=bhm_8O=5aND`Ocd0tc
+e'ln"g>1ZGjQGjto(DbSrIOtYs0$Oj`PB*mY-G^^fN_\\rtFkHWf(q-8O[a$[=^na6o$DQ00T:s
+"#`)/8,c!V71M1:3^5hm4?Yf$<E)jp;i^l)`/JYF?XI,G?!UZ>>?b?:>$G-5>$+g,=&rC'<``7"
+<E2sr<)Q]o;u]bp;#sKjr_W)["%PmQ8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKpJqJf5M2I7PO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$`5Td<
+b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olHncA@Srq-<cp\jmeq>^<iqu6NlrUg)?
+s-<V7~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof;[9o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[VpnkV7O1FrjMm;qRQR:rOhs<!4qR0pq6=4qMsg$!0I2Br/gr@qN1Hs
+r6P8cs3D)"dEg7ie'c^odEp;>dLO[SdF6LmdaQXnda?Ijdf.T*ccskbd*p=cd*L+dcd:"`c:Ik)
+oh+sOlV.(Hoh,-Rr(-QPr'pQPogJUCr4W-ErkJ<F!5JNIs1eZO_Z%LP`=g86a2lEIc-Oeff@\d3
+hV[5Ki;V^8irJ3?j9=T'jQ,@]roF+@&*E'<kih<umI'K6oChtUrIP!DrrVqel2L\pVr6s]P+@c7
+V4X8g@(WnQZ*+)-%'*N:?".5L?!FV?c-$%*M>mn\qtBOKmd9B+l2KlVj5StRhV?f9f$r3tdEKo6
+bQuD6`PTI,]stWP[fX(H[d^\R7n?0B8P2TJ92&&S:/=\_;,U=k<E<.%=]np5>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'B
+bKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O6lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD#8J,~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[UF*#JW'Gbq2GB8qMtN6r/U<.l&PXY!,_UN!,_%>rGM[Tq/?"tr13hW
+rgNnXrgNqWS,SrXSH>=NSGo')S=?(<S!oh8S!oh8R@0M4R$sJ3R%'S6S!]P1R$sG1R@'>-8Gl'P
+9(u!E9__9R9)M9Y8G>XP7f,XI7/94MQNWV>Q'Ra8Qi3<ORJiNPR0/nIS"0DI'qV%hTV/!QUSOcc
+WN*#"XfSV+Xfei+Y;EJgZ*LX?ZEpjC['[6K\%&rY\\#Ph^VRe)`Q#p>bKS8YdaZn&hrEqdlg=-0
+oC_hQqu-MFs1SF]q;''&K!kXYn;43ZQtpbZI<p-\<)JR/KnFu.Jq/>G:JXti;c?SLL6qn*!0iKC
+1@EN)_S<gq[^ENLZ*1@6Xf\V%Vkp8dUS=ERSt2F@R[BG/QC!o&P`h,iNfAsRMi<RMmtlK`84Z<D
+8kM`L9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'KnbGAN/`m\
+P*D5uR@B_<TV8-VVl6VrXfnt7ZaI9Q]"G_k^r"%/a2lEHbg+P^daZguf@em4h;7&IiT&t[k2tml
+l0JB9$170Ln*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-<V7~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[R<VY9MXqOq,.2iqGR)cpeq)gohaj3!'0d5s#Kd6r`B/%qcNc!s&]8&
+r`8qus&f2##?Fo.=BAO(=8Z(s<r>ts<WlE'<`N/u;ufqs<<#ks8Gl'P9(u!E9__9R9)M9Y8G>XP
+7f,XI7/94L<rZ2"<rc@s=8u>$<<QB*=BSi+>67u5?2e+.>l\40?N=L2@16OP@:EeZAnPdjBkhD^
+CB/5NDB!M5EH?5EG'A1VH$XgbI=?a!K8#&9MN*^\PEc'3%[NHMSY2XMU84ZdXg,1:rj*iW\%0/b
+^;.V)`Q--Ec-OecdF-Opf%Jd3h;7,Nkj.a1q>:,Arsnsro]b>edE'2<^WkNurr2p<qV/EBH=pMR
+A=pPt9ikpt0/b[N4?G\a2b->,7n3JH%n8H:3C#em4?ZD4<)Z[n;i^kn]7t-1?XR5I?!UZ>>?Y38
+>?b66=BJW'<sr/4=&r:"=&r:!;cNZn"&Vrn;#O5k;"%2/7n?0B8P2TJ92&&S:/=\_;,U=k<E<.%
+=]np5>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo1/kX0&S0
+ZEpsJ\[oGe^VI_)`Q-'BbKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O6lj<(In*fc9o()DErq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD#8J,~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@-@0T;B00\,Ei8\c',5]DK2*]DfJ7]D%?NNrY:@OnFh/cMZ#fc2c)f
+cMu8jd1XpVdF6Ijd*^:hdF6RodF$=geG[i*daQ[ndF-Fhc-Oe`daS3Cs3Lhmd*2G[p.G0Soh>*S
+oh>3Tp.G6SrCHZQr'pTQoL/LBr4W-E!5JKJs1\cR^V7Fs^qp#e"iJ<u`5T^paU6,3bg"J^e_&R0
+h>Z=3i;DR5iW\B%iSrnWrSnOOjlYahkiqC!mI'K6oC_kRqu20HV#LMkUuMCR,P97\l^+0,W2?5X
+@plpXZE^O5X/i7'?!UlI?X-gAZH^M3`JOUJrquWcnF,c3lg*fukN:dbi83;Eg"4g(eC)[ecHOMU
+bKS/P`PfU.^::__\@/oSrjMC*s$m,]8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS,Rg
+C27[(DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1jeCN7)g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@,jaH\%*7N;8J"NqSP!Nr4t7DZ4M8DY7r@SH#/WS,f#WS,]#YRhD0[
+S"#t<SXZ.?S=H.?SXQ"8RJ`N`R[]e8R@9V6R$jG3S"'DGs-WqTR?meCp.G0Soh>*Soh>3Tp.G6S
+rCHZQr'pTQoL/LB!13SK!13YOs-`hQrL3bU#Fq?US=Q4CTDkJiTq\<XVPpJoX/l6$rN6+&s0)I,
+s0;O./$lUh['d?O\@K2_]tV7t_Sa@4a2lEHc-Oedf%T$@kj7a,naZ5DpA"I\rIP!]s"!3T]n<KO
+s8Tp(fYh]LD1$\SF];4rL4t53JV&E%:/=\d<)Z[mL5)%\QBdF/([9/[^V.:i[^EKKZ*1C7Y,eP#
+VPg8eUAgf!St2FAR[BG0QC!o'P`h/jO,]'Sregc4mtq'7!_>mSr^qW49MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$UVPgGpXfen6
+ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@+dq92/7W;>F&e;>sJj;?'P_;?'Gm;=[N`;;=/03Vb`8=92K*r`B&#
+r)s#$"'8N(=8Q,!<s_o0='&L*<``='r)NSor`/u!"'&B&<;]br<!#ut;uK;]9);3R9_V9S9_qEU
+9)M9Z8G>XP7f5^I7/91N<`T-"s&T2'r`K)"!*9)!&m&1:='Ag4>$G09?!^c@?!LZAra5V3s'bh5
+AR].ZAnG^iBkhBuChmj(Df9T7EcZ>FF`qtRH$amcI=?]uK7nr6M2dU]Q^=),QC+&.S=Q1AT:r$V
+X0B"@\@AuV\@K8d^VRh,`Q66Hbg4Y`daQ^rf@em4h;7)Lk3D@)p\Xr@rrCsTrs8AejP88.dGOHk
+s"<KOTRq#e7pM(fU1HoGD_X.+4Ztki2E+,q7n,s9779R(3B9>h5!(o%9N>"i;NCc3q6GWf@:*AJ
+?!LZ>>[(B9>Zt<6>$+m-=BJX-='&F$<)ust;c?Xo<)Q[o;,^=g;,[Bimn`sR!_>mSr^qW49MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:
+T:r$UVPgGpXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@-@0Tr#E3\G`u6](ru4]&gR(]`,P@]`3ulO8+b#O8k:AOnXt:ch5T^
+chl!%c-Oe`d*L.edF$Fjda6Fjd*^=kdJhSrdaZeGdhL3Xd*gCkd*L+ccdU7gdaHIgcUg_&9)D9X
+9]JkC9`.QX9)V?Z8GG^Q7f5^J7/0.K^&PeL^VIV"_#;%J^'DEg_SX.*_o;Vn%`ZW4b0%oPc-Xqi
+g"bE?rndb7iVhd8i;hg8iV_[Lj5T+[k3(pkl0@U$mdK];p%J4Zrdk*FrrW+qgAV$q[K!k4AX-`%
+Tq#Y$]!nuLXfSS(WEEM3@:<MJ?*^c\aN)8Us"=9Fo'l)7m-O$$kiUscio/bLg"=p-e'uglbg+GV
+b0%rPb/V?8^V74f\%/oW[/RN)[Jrbs8,u6\8c_RYr_7f9:Jakc;c?Xq<``C+>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]k?Tq\?[Vl?\uY->1;[C3TU]=bkn_Sa@4
+aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*7s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@,g`H[q(PNVSS7O782,O6_i(O8P+>D?+VRDZ"A5DY\2PS=Q5=SGnuk
+R[]h:R[T_7S"#t=SXZ1@S"-%>rL3kWS"0JI'UbDXR[]b6R@BV5S=5n9S!]V28P/YKqb-cZj%]>C
+r(HcVrCQoXpdb6Or'g9Hpd>(Jrg!PNrL!VQrKmSQr0dYVSc5,\SY)PRT`:_hUSOccWW&suXT#@$
+XoPU&Xtd/dZ*CU?Za@'G[C3QS\[oDc]t_A!_SjI8ai_fOcdC4lfA#0Cl0\$3o^qkNq"ajdJcEC_
+/+1j$Kr<i.s3?ScNH\6<;1*S1<)JO-L4b)/Jq/AH:et(j;c6JIL6n0kQ&P_tilT$O^Upq^[C!6F
+YHP+2WiDtoW26>cTqJ$MSXl7=R$X2+Q^<u%PE:icNf/aPMN$t[s%!)[!(m/^!D?,c9moc4:f(%g
+;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"61FU84Za
+WN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o()DE
+rq-?dp\4[^s7u]kr;6KkrVcEgJcD#8J,~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@+dq92/7[;=m]Y;?'Jm;?'Jd;<q$\;)gNqgc59nr&Om]=]t`+qH*]!
+r)s#$"'8N(=8l;&='5B%#Zt/1=BAO)<`],unlGZgr`&nhpIb<UqFopDq+U]ZpIbBUr(-TQr'pTQ
+ogJRBr`9&#rE/u!$!(&+<`iI)<a&`+>5__4>[:T>?=.&J@K'XE@:3MO?t!JQ@Uiq[AnYoXCB&&R
+Ci+*0EH6.!F;oCIG^4XaI=?ZsJqJ`0KnbDBOd2<&R[KS4S=TYN$(mlbUo12pZF.1@\08Dq^;%M&
+`lQ9FbKS5Wd*L+he^rL.gtglHio]Ooo(MqZJc>_gqYp`qn`J]go_e_/n]n+jEa_L<J%W%,6]OJh
+.Prb@4$5G[7Ros<7fGgd7Q<Cf5X.Fo4\naN;c?SSrt+XtI:lts?sd2F>[1K:>?kG4=qFh==&rF)
+<``=(<`;st<)cco;[ZK%;G^:h:f((d:JgLUs%!)[!(m/^!D?,c9moc4:f(%g;cHat='/U/>?kH@
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"61FU84ZaWN*)'Yd(OB[^`l[
+]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o()DErq-?dp\4[^s7u]k
+r;6KkrVcEgJcD#8J,~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$g:1Unta'\bWi3]C`]"]DfGC]DT>@^&PbENrG+7Np;]#O9!Z*ch,K_
+ci),sbg+JXcHjhadEg4hrm;&!dF?UmdF-IleGdi"daQ[ne'c_EdL=LNdE^.ccd'k`d*^;:9)M?Z
+9\E/;9`.QX9)V?[8GG^Q7f5^J7/0.K^A,JC^Al"J_#_EjrPT2dai_fMbg"G\eCWF1hV\=jro*k7
+ro""<iS`YQrSmh:&`i*;kNM0qlg4$-o(2PJq"t&As.fSpW1a+h,+nn)VMgdPWM5tq?b3YNYcb(.
+Wi90->[UrH>[4S[c,[iCM#Sk$p@.S?mHj3(ki_-hio8kPg=Y*0f[SBtc-4JWbf\,Qc-42F^qd\`
+\-0@M\?rX4[f8kt8,u6\8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJjE5F*)SL
+H$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHerqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$f^_I=[@VNVSV4O8b.>O7\G4O6_i)O8"b8DZ4SSDYe53DZ+MPSH#/L
+SGAWeS=>t9S=?"<S"-(@SXc7@S=Q/KRfAiZR[]b8rgF%ZR[TV5R[X2C!LfMQ9)M?Z9\E/;9`.QX
+9)V?[8GG^Q7f5^J7/0.KQ3!>>rL*SN!1EeSs-rtW%%X#_TV8*SUSFW_W2]css/c1$!j&N+rN6.(
+riuL//$lUi[C3QR\@K2_]Y2%p_8=.1a2lEHbg+Ydf%8U0i8a"fnb)VNp\=R]r.4m\s"!it_hN`n
+s8Ur+gNS!WE)M(.F]D=sL4t52JUr?%:/F_d<)Z[lL6n6lQ'@7-+l:5V_8!Oh[C*?HZ*:C6XK&4s
+VP^,_US+9PSt)=>R[KNAQjf=HPa%8jNfK!SMi*J]M>p*G8,u6\8c_RYr_7i::Jakb;H$Op<`W=*
+=^,-:?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:
+['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHe
+rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\SJp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$e[q92,:]n5/sYoMGNakYV:Vr]'m;gc59n!':*\!a&T.r`K2%!*9&"
+r`K,%r`B8(<`W<$=9;Q+=T2A&<`f9&s&]5$!EW>#<VBGr<EE7&<W5tt<VT2a9D_E9:&@W^9D;'W
+8c;3T8,PjS7J0(D6iC*b=T)>$<X)W+='&F(=oDM3>?tK=?!LW=>@(ZDrF#h:@:3JMra>b8&S#?_
+AS5[jC2.O"Ci401EH6.!F;o@HH$XjdIXZcsJV&T0L51SAN0'9jR@9V8SXobP(8.@sVPpJpXg#1A
+\\#Ph^VRe*a2uNKrll/&cd1"ge^rL.gYLcGjlYdnnFQDPJcGHD!r_cfqYr+RP':D.7sMAPJ4+oK
+1bCR<4Zkhb2b$;.7Rfg87n,Hu3']\l4$?A=<)Z[mNrKgUU3U?Z@:3AI?!LT<>$>07>$5!1rDrr"
+$!:81<`;st;cHZn;[?9";G^7g:f(*W:]Erb8,u6\8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L
+@q9.`BPD6uDJjE5F*)SLH$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:['mHS]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHerqQNhs8)Zj
+rqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$g70VPUs$](EW/]'[--]E#YD]_K2>Nr+n5Np2W%O9!W+d/D;]c2l28
+rlkAds3CeodF-GAck+UNda6Fjd*g:ie'ZRhdF-MCdLOaQdaHLhdEg4bcdC(cdecZ79DhKR:%(jJ
+:&I]_9DM3Y8c2-T8,PjS7J0(E6NKNfqS*$GrkJKKrkTPj_o9R4`Q-*CcHOPYd*pOugYUiFi8NYS
+i8EMlh>lI3i;qlqro+[QjQ#7[jQ>Xhl0@U$mI0T9o_/(Vrdk*ErrT0no)AY5VY&ZHNgXR]US(k"
+]=+uKY-"e*W*EV5?sm;G?*_`!a2c/TruD%4nF,f3lg*fukN1dbi838DgY(<5e^MpjcHXT4b6Q89
+bf7Q9^qK`W"Lb_I[^>P4s%!)[!(m/^IS3@.9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$
+DK'T:FEVkRH@1-jJ:`E.LP^nINK93bPa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]N
+cHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!;ZWjrVQTlrVcBfJcD&9
+J,~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$f^^IY!LSNqAD0NrG(>NrG+/Nr4t0OT'.pDu"83DZ=YPSH#/NS,o+L
+r0m\Tr1!YR&=f2[S"6+>SXZ.>S"#e5R[a;F%\&lTR[KS4R@BS4S!f\6qb$cZr(QWTmnWFJr(R#]
+q+CTWr(-WRr'pTQogJUC"[\QBR$jB@R/NEiR[]e8S"-%>S=Q4CT:hjNU8+N[W2Zi!X8]10Y,nb,
+WiE/&Xfek2Yd+25/$lXj[C3QR\@K2_]Y2%p_8=.0`lH6Fbg+Ycf%A[1h;@8UlgF?:p@n@Zr.4m[
+s!m!LLk<>?s7(iYXb(8+<.9+9:K!()KS4r.JU`2F:et%i;GpAHR$O#'P`5VRg;_(I^::VY['I!@
+YcY+0X8]"<V5'cYTqJ$LS=>t8R?s;.R?s2'P`UrdNJiXOMN!G]M>p*G8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^,-9?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'L51VCN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mI0N5nc&(`
+oCV_Kp@e7Zp]1-hqYg<jr;HTdrdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$e[q9MA=M;#O8E;#F2i3;Y_l3<)#:<ruK,=oMM'=8Z,!=8uD&=TMW-
+r`B8(<`W<"=T;G.<``=(='/R+=8c1u<V9Am=8l8#;ufqq9)M?[9^tjG:@_-W9`.QZ9)V?Z8GPdR
+7f5^J7/91M6N1'b=SPr"=BA[1r`T;+r`f\4>[:Q=?=.(<@K'[6?PQjQ?smJTAS#IdBPD3sCM[j+
+E,fo>rH(eWGBnL]I!pHnJ:W<*KnkG>M2I7PP*D9"R[fn>T:hmPUo1/jX0&S2[^s,b^;.V(`Q--F
+bg+P]d*^7heCN:+gY:QAiT97em-sZ@qYc!Fli.ZIC.q-3Vo4]hB37&E2)%3W4>Jc`r^RSj77B[8
+3B9&`5<V+l9iY.j;cA_V,M\Z.A7AtT?<gc?>$G06>?Y35=]ed+='&L+<`iF';cH^p<;fbq;@?E$
+:f:.e;,C%a:f-XWs%!)[!(m/^IS3@.9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:
+FEVkRH@1-jJ:`E.LP^nINK93bPa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHste
+eCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!;ZWjrVQTlrVcBfJcD&9J,~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[q0N4VPUs'](!?/]'6j*]_oJC^AbhE^AO#iO7nV*NrY:<O8Y1=ci2;i
+ch#H^blQ&6rltJe#gUfDcHsqce'S*ArmD_1dF-LjdF6RldaQ[nda6Fhe'lakdEg+acHuM^rCd&^
+ohG-TpJ:KXohGBYr(HiXrCQrYq+(?Pr'g9Hq*Y0KrkAWP^VIV!_#;+L_@si*`Poj<aii)Yd*L+i
+f%Ss:i8FRmrnn">io&\Ni8FUn(ujT8j5f7]jlPXfkiqBum-X93o(2PLqYc!FU]1DlU[8![+g08f
+bEAH'X.u:n@D'(TYcb(/X/K6.@pr_N>\LFfbf@_Ys"XHFnF#]1lg3p"kiLjbi8*/@gtLN8eC)ah
+cHOPVbfn>Vbf7Q9^qI:f\[])W\$icTo!\Nf!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K
+@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k
+^r"%/a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(sml0I^&mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zj
+rqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[om0WIY*RWNpr,0Nr>%<OSt74Nr>%-OSj"oDZF\MD=_WFDt\)KSbelV
+SbATRS,SogS",t;R[TY5S=>q8R[]h9rg`tY!1NnW(7L__S!f_7S!oe6R[KY7R[KV5R@9P4rC[#]
+r(QcXp.k?Xp.k9TrCm,^q+CTWrCH`Sr'pTQogJUCs$HaRrL!SPrgNhUrga"Z!hQ$Vrh0UlUSXid
+WiN5%ri?1'XK;B$2QEj]Y-5(6Z*UdD[C!?M\$rlX]">Vg^;.V%_o9X9ai_iRdaQe"g>(N?hr<e_
+m-jN:pA"L^JcE=],enu@p&G&PTZNgAF%h(/G>;(oLP:D5J:`9$:Jb(k;c6LrL7%t+N;ka1f#>MC
+^UU_ZZa-m?YH=q-Wi)bkV5'fZTqJ!KS=>t7R@'A0R[9;(PE:icNJiXOMN!FKn;7-7!_>mSr^qW4
+9MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5u
+R@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(sml0I^&
+mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[mEJQ92&4M;#=,F;#4&e3;Y`$2uku43;HVZ=BSd/=BG?""BS]-=]tZ)
+#$4i+='/R+rE'&#r`9)%r`B,#s&B&"rDiMk"BSW)<E8uirCd&^ohG-TpJ:KXohGBYr(HiXrCQrY
+q+(?Pr'g9Hq*Y0K!a&N*r`K/$!*K5%s&o;(!*fD,r`]D.?2e.5?t!JN@/aLM?<piC?!guJ@q0(^
+B520sCM[j*DJsK6F8g8WFa&+VH?spdIt3*%KS>2;Ll.(JNK93cPa7Z(R[ftCU84ZbWN3/)ZF%-S
+^;%M%`5fs@bKS8YdaZdtf@\g3gu$uGi8Ne^mHsE8pA"RbJcG$8-XTDTR)kt!;0#Db2CgsR4>Jfc
+7n?->77Kd:3B98f5<V.o9iY.k;iUeZe!"f^ra6.@?!LT;>?b98>?Y04q,[]$<`N'trDW_q%T?8'
+;c-Fj;,C.f;,:"bn5'$R!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O<4
+EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_
+daZh!f@em4h;7&IiT&t[k3(sml0I^&mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[UjE3VP_#;](rr<]_f;@]_oDA]'?p+]`#PB^&YkE^AYh4NrG(>OSFn7
+OT(=?OSR3&d/;5ec2c)fcMu,mbg"AUc-613+O&-WdF$=ed*U1ed*g@kdEp4ge'ZRkd*g@ie'lgn
+eC+?CrQbPm8kT%TrClr[qG--JqG-cZrCm/_q+CTWrCH`Sr'pTQogJUCs$Hb$"Mqmh^VKfas2#Ac
+`5Td<aN;ZTe^N!sf@\m7htuC4i!86&lKmZmi8FUn!oi8#roF+@s5jgSkiqBum-X92o(2PLqYc!F
+U&P,Orr4/<`rGRoS<L"MT3Pl4[^*0@X/i8!>?t`I?X6s/ZHLJ4`eaX7rqc<Wmd9H/m-*WpjlGFZ
+h:p]@h:pQ1dE^"^c2Podc3_b>`l#U.]t(V^rjN!?[C<X9[f/bu84cDP8q'E,9heAY:f("e;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\VlHf"
+Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nc/.\oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[TR'XIY3W?Nqn_9OSb(=OSY%7OSk19Nr>%-OSt=;DZ4SRDY\/ADZ"GP
+D?=`oDZ-.&SH#/VSGJ]dS=?"<R[]b7R@9V8S!ob6Rf8fVSJ%NaS"#t=S"#q9R[TY6S",n:Rf&TR
+RKAsN9)VE]9_V9X:?>:J:A7K]9`7W[9)V?[8GPdR7f5^J7/94M63*GQR/WNQRf8fVSH#/[SdV0`
+USOWYUSargWiQ'!5-:ofX0&\4Y,nb-YHY46Z*L^D['d?O\%&u[]=bhk^qmk(`5Td=b082\e^iC,
+gYL]BiT'%`lL"-5p%eL`JcE:\-*HP5s2UGa`G]g6IX666;br4'K7\W)It1?l<E)mp;L4(aQBmep
+rtP+R`59=&\@/cNZE^U:Y-"_&Vl-BjU]7%fTDtDsS!ob4R@'D1Q^*f!OH5E]Mi!@KN/NM]M>g!H
+84cDP8q'E,9heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\E
+NK90aPEhK%R[ftATqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]4_
+k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eof2U8o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[R*AP8ki1W:]OAi;"miF;"mi_3;Y`&3;bf93!;6$3*9;Y<rcA%=TMW+
+q,RT!=BJ`(=9DW*<EK-$$s-P4=&r@'='/O*<`f)ss&K,$pJq>s8kT%TrClr[qG--JqG-cZrCm/_
+q+CTWrCH`Sr'pTQogJUCs$?cg=BPN'!*K5%s&o>)!*fD,s'>Y/!*oJ/#%(bG?X@&Gra#h:@U`bR
+@:E^FA.*$`BkqL#D/O92EHD,$:N^l+H$Xd`I=HcuJq\r7Ll%"IN/is]OckroR@9V:TV80YW2Zi"
+YHbIC\\>kq_SsO9aihlOcdL=nf@o$9hVdAPiSrq[lL"-4p%J1WrIP"4rtJXr`ia)IM/b4,1Hdi^
+0fCmZ7n#oH705q<3W;5J4?Z50<)cdpNW0I.NG`65?X@&E>[(B9>P_M&<rZ;%<sMc+<`E!t;cN`p
+s&9G+;H$Fk;Gg7e;,L.e;".9[7fl4Q8cD>292&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAnPdl
+CM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@K8c^VI_(`Q$!@
+bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD&9J,~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@,sgKr1c\qRc[<s1A3Ake$f+rOr!?pqQigm#M(+s,[8BOSY%9OT1@C
+ONu/Bci),jbg+N.bm;P<c-4DXbg=`9cPk3Xda6Cgda?Ijd*g@id*U4ie'capd*g@fd/M>kcM^E7
+9_hE[:ARcM;#3uc:A@Q^9`7W\9)V?[8GPdR7f5^J7/94M63+n"_>_=O_[j]+aN;QHc.1P%f\"p5
+hVnIp&*)[0io/nYlgXT9lK@6fj8S$<j8S*PjlY^gkj%I!m-X60nalDHq"t#@s.'*3[f=UCAX-`%
+Tq,\"[^*0AXfJM$>@(fJ?X-jAZHCA2`eaWtrqZ9Vmf)Sum-*WpjlG@Vh:pfCh:gN1dETt]c-4AU
+cd'hZ`l,[/]t(V^rjN!>[C<X9[f/es8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?=.,M@q9.`
+BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4
+aN;WLcHjnde'ut#f\5*9h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*8s*t~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@,OLDgm=uqN(Q9s,[)>rf?f8ooJU(plY8f!,qgRqJGhAr,;UQ!cOU!
+r13GLq4%;P#b%6OR@0P4S!s>E&"B#YS",t=S=H.>S=H(;RJiQZS=>q8R[9G0rgE^XrCm#]qbHu`
+kYV+Or(d#]rCm/_qF^]XrCH`Sr'pTQogJUCs$HaQ!h#LFrgNkVrgX[nSt;RHTVJB]Unt#hWi`G,
+XfSY,riA2`Z*h-LYck45Ycb16ZEppF[C3QR\@T;a]Y2%o^qmq,`Q-*Cbg4_ff%A^2hV[8NjQ>[k
+m-sW>q"jr?s0_kMdZ*R_F\lsPHZsX4:PXXVK7ST'Inrm@<)ZXlLPD.]QBdF/1[iQ,^qdUl[C!6F
+Yct=5XJr.sVPU&`U7n9QSt2@>R@9M1Q^X>0QBRMnO,f3XMMm=MMXQE$8,l*[8cD<_92,=ZI83R7
+:f1.i<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQ^F52StD^N
+Uo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8R.gYL]Ci8N\UjQ>Ufl07L"m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-E\8~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@+^l7nQKQqG@)es%r;anPB3_oMG3Xp,E(53;tr)3<)#=3WhB%3'$h;
+qc<c"r`K8(=8>l!='/U.r)a/)<`N4&=BPQ("'AT*<r5qu<r#bq<WH5#<WZ9%<W6%t9DqQ[:&@]^
+:ZtXO:]*u_:&Rca9DV9Z8c;3U8,PjS7J0(E6iTLQ=T2D$=T;P'=oqo5?2e(/?2e.1?2e.4?X[AN
+ra#h:?=%#J@qK6M@f9dDA7]@eC27X'DfBarFT6IaGBj+48:,c6J:W<*KnbG@MN!OTOHG`jQBmr/
+S=ZFJUo12lXKJe4['mKV]tV>#`Q-*DbfnA\eCE4*gtglGiSrnYk32*tnalGKqu)*Gjo6FA]6-K,
+9JS(S0KqQ\2Dmup77K^77RfC!5X.Ip4\STL;ZKgWrs-2jBk(OV>[IA5"'So6=oMS.='/L(=BYW)
+!*0"ts&/nsr_j)%<E)mq;H$Ijr_N\o:JamW:]<la8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;
+?=.,M@q9.`BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU
+]=bno_Sa@4aN;WLcHjnde'ut#f\5*9h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;QZerdk*8s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@-!hLSgu^qn)I4qn)g>pUg45rOr0DoY:?am>h4-rK%)COHBI&plPI"
+o[!E[!6k2^qTK2id*C%ccd1#<ciDMmd0\+Ed*g@hd*^:jrmD&!daQRjd*>;_9_hE\:A[iC;#=&e
+:AIW_9`@]]9)V?[8GPdS7f5^J7/94L6N4k%_$.`n_o0O6rQ,Plce%+4hqm2IioK7dl0&'-$KU=6
+mdp/Gna5W)rT+"?roX7D&*W9Clg4!*mdTc<p%J4Zrdk*>rudp5Vl+6pA#Q,nA7)jQZ*170X/K9/
+@pr_L>dCZWb/_MXs"aTKo^M;:m-O'$kN(achqZuChqm2Ce^DdhcHXSXbg4P[bf[oB_8*ap\@B#X
+[^``S\FR-.8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCM[j*E,fr@G'A4X
+I!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.
+g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD&9J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@,OLDL[7tqiC!'pQ+g*oTAQZqebtCqJZ>&r13MNpRD/Ps-s%Wrg=._
+S=5q9R@0P5S"#uIS->=LS"-";rgEbS#b.9OS!f_5QqRBOq+^c^qbQ$EqbR/cq+^f]r_*)[rCQrY
+q+(BQr'g9Hq*Y-Js-a(YR$jD4rgX%\St>qR:8+JaX/`+sX/iA+Yd(@7Y-+n/YdCpO]XP8RZ*:F9
+Z*CXB[C3QR\@K2_]=bhk^VI\'`5]m@bK\A]e^rI-gtglGioK:fm-aE8p%S=\JcE.X+l%P7JUCC7
+;1!P1<)JI+KS+i,It(6j<E)jn;MU!nQ'R\ortah@_nj't[^EKJZEUO8XK&7uVkp/aU]-r,T:DI@
+R[KV4R$jD1QBm_uO,o<\N/EONMi*=IMXlW'8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC
+?t*SUAS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`
+^;%M$`5Td<b0/&Td*^=lf%8R.g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD&9J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@+am7ncWSqb[2fs%r2^pJBmInMpM.r&=[:oJlk2r]:'>rE0)&r`K&!
+!*K5'!E`G!<WuQ,=]nj/r`B)""BS],=BPQ(r`8qu#?Fi*<E3!t<W,tu=8Z)"<D39aq+^c^qbQ$E
+qbR/cq+^f]r_*)[rCQrYq+(BQr'g9Hq*Y-J!*K2$!E`M(=oqo6?2\"/?!mG7!aoGFrEfn<?X[DT
+An>I_ARtdM?"@MYB523uD/XE6EcZ>FG'8(SH$OacIXm!$KS5)9MMmFQNf]BfQ'[o-S=Q:GUSXle
+WiWA-Z*^sK]"Gbm_8O@8bKS8XdaZguf\50=iSrnYk3)!pmIBiAq>:)@s5X,"ImK;[1b(=84Zkhb
+2+L,)7R]a97Q<Fo5<_.k9hkUc!*#!Y$2q/]BjkFW>[:V6>67u4>Q.h+=9;N'=T);)<E)pr<Drfp
+!*0"t%oQ>);Gg=h:f("d:/Fe`;"@E]8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`^;%M$
+`5Td<b0/&Td*^=lf%8R.g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD&9J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$fmgLSgsF]CNW7]D9,:]D9,<^&>\7^\Wr_NrG+=NrG(>OSt=AOT1C<
+OT3Z-ci)/_chl#UblGuecN_bEd*L(ddeqDsdEg7gd*^4ddJVDqcd:(ed/H`8:&Icb:\.EO;=dW_
+:]4&a:&[ib9DV9[8c;3U8,YpT7J0(D6iTIY`5BI0`5BO5a8X1)b0/2bioT=ajQ5Rhlg4$*l0.Bs
+lg408p\O^XnF#T+l0.@1l2U#Kl2KrUlg=-/n*oo?pA"OaJcD/<*h0'dQt<4kSn;B>ZEg[9XK&4'
+?".5K?!O\@aN;KBM#RYWp[I_@mf)M^l0.3hj58\KhW!DHg""LKc5+[KcHje]bf@Z=^q[Om\%&oX
+[^`cT\FR--7t4'$8P2TJ92&&S:/=\_;,U=k<E<.%=]np5>[CcF@U`kZAnYmnCMds.EH?5FGBnL^
+I=Hd!K8,/<MN!OUOckrpR$jG7StMdQV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1
+gtgiFi8WeXjlYail0@U$m-aoB$h3]Wo(2JFp%A%Pp\jjgq>0scqu6NlrUg)?s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$fFLDL[4rqiBs&qiC9/n<*?\rbq[Oqec%Er,;G%r13SPopblLs-s%W
+!1EeT#+V-MR[]k:rL4%^R[fk9S=5iERK&]ZS!]V4R[O.KqG$l_rD3#]mnr[QrD3Aeq+^i^rCcuZ
+r^m&Zq+(BQr'g9Hpd>'J"IbaGR@F2G!M,h\T*(gaXKVW*"0Si3Z2V'0YPta5Z*LjN]=u"k\$`O@
+ZN[bF\$rlXrODm=,J1V&^;.V'`Q63Ebg+Vbe^rI-gtglGioK7em-aB6o_/.Yrdk*Uru662AoLXq
+H$*.dM2$_9JV&E&:JXti;,U;HL6qn)N;jmXai)$1\[JoPZEUR:Xf\S&Vl$>eUSOWWTU_OArgF@c
+R$a;2R$Nu#PE(]`NJi\nMZ\imM2Lk\rC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SU
+AS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$
+`5Td<b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6Kk
+rVcBfJcD):J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$e[m84u_S;#aDj;"%9Y:uG4=3;tr;3;tr33<)#<3r`@\=T)A&=Sl/"
+=T2G(=BG<!#Zk,2=]ed-<`f9$"BS],='5B%!*9#!s&KA)<)lms<E3*!=8Z+u9_qK]:Amu[;"%9Q
+;#O2g:AIW`9`7W\9)_E\8GPdS7f5^J7/0.L6N:*l<``F->$G6;r*08/?iFF8@:3JMrF#V3#@LtL
+A7fFbB)?0=Am8n^CM[j)DJsK7F*)PJGBeCZH[^EoJV/Z0L5:YCMi<[XP*D9"R@9Y:T:r!TVPgGq
+Y->1<[C<ZV]Y;2!a2uNKcHt%ie^i@)gYCZDioK:dlKms0o_&"VrVhBJiVsfZ1bCR<4Zkea2b$8,
+7Rfg:7QELp5<V+k9hkRbNrK:QX+"_i@/aL4>S(+B=^506>$+p0=B8O*=B8K%<<#ns;ufkp<"Do*
+;Gg7f;,C(d;,0qc:JgUXrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SUAS,UiC27[(
+E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6KkrVcBfJcD):
+J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh4nn[Dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$fjfKVkXB]C`c8]D0&=]DB2=^&>\3^\Nl]NrG+>NrG(@OHG\&O91K)
+OT(C@ciDDjcM>f]cMu,ubg"DVc-=JWc-4GVbg$(0s3:Jg!71Ykrm;>'dEg+ccd:+ge'ugodF$Cg
+9_qK^:Amu_;#!oY;Ya2`;#O2h:AR]`9`@]]9)_E\8GYjS7f5^K7/94K6N>"(`XBc*a2uHGbKJAg
+j6HU/"mkXEn*fcEn,Mk`o_8+Ws8;]co'ZMG'CbJYmHs9+lg4!*n*ol<o_81YrIP!7ru6rcB;qVt
+B48<UZE^R7XJoE0@UWSJ>dCZUaN')91B$t;n*]T0lg*fujl57VhV[2LhV-W2dEp1ac-FV\cHjbZ
+`l#^1^V..d\@8uV\@/lVo!eQf!_>mSr^qT39MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-r
+D/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k_8=.0a2lEH
+c-F\`daZh!f@em5h;7&IioB(\k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]1-hqYg<jr;HTdrdk*9
+s*t~>
+JcC<$QiHaXrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$fFMDL[4qqN(91rf?i9s,Z`4m#gjVrbq[Oqec(FrGVJ$s./qT!1WnV
+s-j:_S"#k9S!oh:r0m\TrL!_UR@F/D!1EhUrgX4^S!ob7R[T`BRKAtG9_qK^:Amu_;#!oY;Ya2`
+;#O2h:AR]`9`@]]9)_E\8GYjS7f5^K7/94K6N<JSS,SoYSY#hQ"JDKeY-@o1s0D[2"LPSF[C-"@
+4LM`4]YD>!^V%.d\@K2^]=YYc\@8uY\[oDc^:qD"`Q$$BbKeJ_e(*%%g=tH?iSrt^l0Rj-o(;YO
+qYc!FZ2YbVEDq:1G#hLtL4t52K7JJJ:fUIl;Gi1'QBmeort+&._o'7"\$WHHYck73XJr2uVBVk3
+US=ERSXl7=R[]_4R@BY4QB[VsOH5E]Mi!CMMi*=IMXlW&7fl4Q8cD>192&&S:/=\_;,U=k<*!%$
+=BSg4>[CcF@:E_XAnYjmCMds.EH6/DGBeF\I=Hd!K8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0
+ZEq!K\[oGe^VRe*`Q-'BbK\>ZdF-Opf@S^0gtgiEi8WeWjlYail0@U$m-X60nF?MK#4qK[p%J+R
+rV-BgrqcTjrqu`no_sFAQiDR~>
+JcC<$QiHaXrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$e[n84lTPo2,<]r_WAes%qNKlo=u)s#Bs;s#:!=qDeL8s#U*]r)il"
+!*K/#!*K5'!E`G!<WZ?)=oMM'=8Q%q=8Z+t=8u>$<W?#*<E<+#='&F'=&hrj:&Ric:\R]\;=[W\
+;>*ib:]=,c:&Rcb9DV9[8c;3V8,PjS7J9.F6iB=T='/U/>$Ll/%p`LK?t*VU@UWYP?XR8N@K'^=
+A7fFbAc-0AAn_0X>A@tiCMdm)DJsN8FEDYLG^+L\I=?a!K7no3LPL_DN/j!`Q'Rc)R[fq@Tq\?[
+Vl?c$Z*LaE[^W`V]>2;(b08)Td*gFof%8R.gtpuKjQGdmm-aE8p%\C^rdk+,ru3RI0KqT\2`=,p
+7n?*=6q00t5X.Cn4AALJ;c8VT&a,p7An#1V?X@#B>$+s5>$G2/=9Vc.='/L(r`&nrrDWl!<)Zcp
+;[ZE";,C(d;,0qc:JgUXrC6o[8P/nRI7m7.9hnJ\:f1+h;cHdu='/U/>[1TB?t!MSAS,UhC27[(
+E,fo?Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&T
+d*^:ke^rF+g>(N@hr*MSj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjeq>U6hqu6NlrUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$]^dKVkTWq7HF7qRc@3rOr0Dl+d%RqMtQ7qi:Q7pQ,H;OHKCds3L\i
+r6P&]p<<T]rQY;b"O56<d*M^=#11Z@d*g7fr6GMmdF-FkrR(\mqb@&brD32bqbd)cpJ^far)*5c
+rD3DfqG$r_r_*)[r^m&ZqFCHQrC-BIq*Y*I!QE+YaT'?gbKS8^gu[nin*g8Gs7-Edo^qbGo^qhU
+p]16krr`/op%/1U&bbnio'c#6mI'H5oC_eNq>:/Bs-*I#BW7c!>[b+JZEUL5XJoB.@pr\K>dDJm
+a2`u8)#a0tn*fW0lfmZsjQ#7Vh;R>Ph:gK0d*M[;(!k7QcHODK_Sa4)]stP]\[T&X[^Wd;\,Ahs
+8,u6\8q'E,9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?,L5:\E
+NK90aPa.T&R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`
+k32'olg4!*mdKW6nc/.\oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$]=KDLd:qqiCH4qN's(l&kFPrbq[OqJH%G!,q7prL<_TpR;5SS"0JI
+!1NkSrgNnVrgO.]R@9V9S",uIRK/cTRg,=NR[]b8RJT_X:Amu`;#=,a;YO,a;Z'De;#O2h:AR]a
+9`@]]9)_E\8GYjS7f>dK7/94K633RHrLX%]-_R0.W33D3ZEppG['mEQ\@T2Z\@K/^]Y2+u_SEt%
+^:_+m^VIUs]Df>g]">Se]t_A!_o0U;bKS8ZdaZh!g"P39hVmJTk3;4"nFH5Fq"ajdJcDtS&QF1(
+G"kkkLP:A3Jq/>H:KCKp;$;W@Q^3qqruTk8_o'3u[^<?FYck43X/MtpVkp2aU7n3NSXl:?Rf8]h
+R[]\1Pa%AoO,f3ZN/<INN/EFJMXlW&8,l*[8cD>292&&S:/4S];,U=k<)lt#=BSg3>[:]D@:E_X
+AS5[kCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F53StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(
+`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O#m-X60n*olIncA@Srq-<cp\jmeq>^<iqu6Nl
+rUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$\Rl84lQNnkf?`qG>X<krA>rq`"R9pf[Sur)j#%r)Wl#r`K8(=8>l$
+='/U-=]ec&<r,nr<rH,"<WH/!<<#tu<rQ/#<r5Vj:Amu`;#=,a;YO,a;Z'De;#O2h:AR]a9`@]]
+9)_E\8GYjS7f>dK7/94K63^Rr>$G6:?2e(3?!^iE@fBjM@UNPM?smGQ@q0(]B4b^dB4kiUBO>Ih
+Ci!s*Chmj'CMds-EH?5EGBe@XH[L9nJqJ`1L51S@MN!RWOcu)tR@B_;T:r!TV5L;oY->1;[C<WT
+]">\l`5^!EcHt"hf%8O,gYCZEj5oIhlKms/oChqSqu)*Gh>[X44Ztk^2?$)T7R]^676*=k5<V(k
+9iV*jNW0RCR<<(M@:*>G>[(B6=^,'6r`KS1<``@)=&r=#<)`cq##eN$;c?XorDF#";,L.d;,L+b
+;,:$Z:]3f`8,u6\8q'E,9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('h
+J:W?,L5:\ENK90aPa.T&R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:
+hV[8Mj5]7`k32'olg4!*mdKW6nc/.\oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^BUeKr1]WqRcU:p:L(3rk89EkeI/3!58/erJp]5qi:T8pQ,B9psAuc
+!m]-<qp,5dqTf#`$-^Z=bg"AVc-4H2bQuJ=cI'tadEp2;ciMP?rm;(uc-Xhcda-CjdFA.irD*>f
+q,$udr)2QRr)3GiqG@,dr_E>br_3;aqF^`YrCH`SrC6]RogJUCr^%CAai_`Kbg4_ghWO=roCV\J
+p\+@Tp\=a^!;QQh!W)fprr`5sq=ssb&Gl4sp%7kIo()DEp%\@Zr;M9IOT-,lTNu$:Za-g<XK8I+
+?"@AM>]d9ma2Z/Ts"aKFn*of5m-Ns"jlGL]h;@5OiS</=daHLgd*U+cd*L"]a2Gp5^V.4g\%&uW
+\@K&X\FR*/7fGpX8,u6\8c_RYr_7f9:Jakb;H$Op<``C+>$G6;?=.,M@q9.`BPD6uDJsN8FEMeP
+H@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjnde'ut#
+g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^B1ID1@(nrf@#>s,m5@p5e^)k`Pk+lu)f@r,2=Iqek_ir1!YTr0nIj
+S"#k9S"-";S!oe6R@9S6S=5n9R[O,Cs-s%Y$_*QOR[]h:R@BY6SGl7]:B"&b;#F2g;WC^R;Z'Dg
+;#O2h:A[cb9`@]]9)_E\8GPdS7f5^J7/94L65Q5cTUqgLTq\?^YHkOC[^WcU\@K/]]=\!R&\Yrq
+_nj.)_8!_!^qmq*^qRM[]Hk2)^qmn+`lZBIcHjnee^i@*gYCWAiSrt^lKms-o(;VLq>:)@s/uA<
+H$;t]M2-h<JUr?$:Jb(k;,UeVQ^3l$N;jOcd`0/@]t(PWZE^[;Y,n\'W2KWk"JhfcTUu.Qs-jRf
+R[T_7R$O#%P)t`bNK/pSrJL`6MMgt]!(QrXs%!,]r^m2a9`@b7:/=\_;,U=l<E<1'=^#$7?!^lH
+@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O\\#Pi
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFAQiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^ACj84lQNkYTc+juE&pr&F=O!*K/%$WpJ3<`W:(=BSd/=8>l$='/R-
+=]ec&<WuQ,<`W:'r)Wbts&K,"r`&ntr`0##r_<>dr_N>dr)*Aij&>kRr)*;erD3Dfqb@&`r_*)[
+r^m&Zq+(BQr'g9Hq*Y-J!EiY)>lS(@?=.)LA7T7^@piYO?t!PUAH$3@AS,OeB4bagB5)*rCi+!)
+CM[g&Ci+*0EccJKG^4U^I"$TsJqJ`1LkpnFN/`m]Pa7])R[ftBTq\<YVl6YuYHbFA\$ro[]Y;2!
+`Q?<Hc-Ohff%A[1h;@2OjlbppmI0W<p\=R\rIP"'s8P1a1,_Wm7f>aa7QEIn5!D%o9iFtg;iUe^
+c&ZgS@:!5Gr`]M.=B\p3r`T;'rDjA/<E<*u<)cdq;cQdr<Vo]#:f:.f:Janb:An#[:B3l`8,l*[
+8cD<_92,=ZI83R7:f1+h<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK7nu8M2R=Q
+OHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ug
+l07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^BUeL8UlXrO_j;ot1(5r4W-El+d84rk8?ErJp<*qi:Q7qiCf=r6YJi
+s3UVgps/i_r6G;ds31Gd#L(H9c-=JVc2PoebPoceci25iciVM>dJhGtd*C"ad*:"ed/Hc=:B"&c
+;#O8h;X[Q`<:<ca;Z0Jh;#X8i:A[ca9`@]^9)_E\8GYjS7f>dK7/94K6N51AcI(1piT]h'p%\C\
+qtg0dqtg3hqYp?lr;HX)rr)cmqYU3fqu$BhqYL3es8)co!<.QLN;jVuA%8nNYck10W`iY<@:*8E
+ZH1)*`eXRLp\"(Gn*]T0kiq9ljPo%Sio8nPg=Xj'dEp:gcd:(bbf[oA_SO%$\@B#W\[K&Y[^`j<
+[fAns8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pNr
+K7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;%P&`Q$!@bKS8Xd*^=lf%8R.gYCWB
+i8N\UjQ>Ufl07L!m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^B4JD1@(nrK-o=r/gZ6qN1W;s,cK-qN1Ghs)%IIrbq[Oq/-.Lr1*eV
+n!s<FrLEkVs-inU&"9#WS=>t9S!ob5R%'P4Rf8`TRLYaSS!oh9S=,k7S!]\7RJoq[:B"&c;#O8h
+;X[Q`<:<ca;Z0Jh;#X8i:A[ca9`@]^9)_E\8GYjS7f>dK7/94K64KT[TV8*TV6$o-[C3WWrk&0B
+!5&3C$,4*d^r+(+^qdeb^bEUB_Sa:._83q&_8=(,_o0R8aihrTd*gCof%8R-gtprJj5oLim-a?4
+o(D_OqYU8Cs/l;99iHn(L4k21It(6i=&`'p;21F'Pa.4-)Xu"i_8*Xk['R'DZ*1:3X/W%qVPU/c
+US+9OrgWtXrL+FjR[BA)PECoeNfB!TMMm@MMM[4Jnqd?9r^ZuZ!(m/^IS3@.9heAY:f("e;cHat
+<`iL->?kH??XR>QA7]CeBkqO&DK'T:FEVkRH@1-kJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&&
+Yd(OA[^`l[]Y;.t_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-3^o`"Lb
+p@n=\q#C0iqY^6ir;HTerdk*9s*t~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^ACj7nZQPkYV+Qr)2HMpGi13n2U)$!''mZs&ehps&]8&r`02(=BSd/
+=8>l$='/U-=]ec'<WZ9&=85ho<rl?%r`&nt!*9(nr_EGgqG@,fr)2u^r`&>brDNSkqG@/er_E>b
+rCm2`qb$iZrCHcTr'pWRogJUCrB^Ng>Q.k7?!^lF?t*YWAn>NN@00qMAGp'>B)ZEIAnP^fBPD5\
+C]/)LD,bIoEcQ8EG'J7XH[L9mJV&N-KnkJ@MN!OUP*D9!R$sP9StMgQV5L8mXfnt8['mHS]"Gbm
+`5Ta<b08/Ye(*(&g"YECioK:flg=03o_8.VqY^>Ds4[J\1,_Wm7RT^76q'*qr]^HG4AGcQNW07!
+LhgC*?sI":>5hV6>$5'5>$4m+=&rC&<`N)s<"2c+<`W0u<)Z[m;,L4gr_Ner:f1%d:f-^Y!(QrX
+s%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Qm$KSG8=
+Mi<[WOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnY
+k2tjkl0@U$mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/bSG(lci\@_CGq7HL9qRua>n\>+<rk8<Ds189Brf-i9mu@4)rK$l<
+!0@!'q9S`Zqp#)brQPJhc-=JWrlbDfb5TThc,n/Qcd:#9d/VB!cd:%ad*Kt`c-Xj4r_EGgqb[5g
+rDNAgoi1lip/LcbrDNVlqG@/er_E>br_3>bqF^`Yr^ciTrC6]Rp-e^Dr'Cb:dF?e&ip6+-q"ssg
+$3'u(rVZQjrVZZnrrrE%rr2inrr)lrJcC<$s8N_A['?j>XfJL*?=dSQ?<a_VaM`l6.K0&4naGr9
+mHj0&k2k[_hr3VTi8*,>f$i're'ZRid*BhV`59F-]t:fQ[fs4N\$ifVo!\TgrC;?.8P)NH91qrQ
+9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0
+SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/bHA8ZmIMid[qr/gf:qN0a"q2kT:pMTqHoksbIqel7IqOIMRnXTKG
+rLEhU".G^KRf&WTRJiQWQ^F22SGScTR1#IQS=5t:R$sG3Rn`lWr_NDfrDEMkpJ^`arDiPjpJ_#g
+r_`Mgr_NMgqb@&`s%E2\r^m)[q+(BQr'g<Iq*Y'Hs.M$=V5LH#ZaRBT]t_@t^VIRt^V7Is^V7Ft
+_o'=*^VI\&_84"*_o'F3`Pf^6`W!k$`Q#s>aihrSd*gCnf@S[.gu%)MjQ>Xjm-a?4o(;VMqYU8C
+s/Z/4M2$b<KRn`):Jb(l;c-GIQ^<tqrs.`2`59:#[C-">s0*QHXK&8!Vl-AgUnaWVT:MLCS=>t:
+R[fh4Pa%>mOH'6u!/gc6"H&%mMMgt]!(QoWIn3.&8kM`L9MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K
+@Us%^BPD6tD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zj
+rqu`np&9OBQiDR~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/b07Rg!E:[:jR;>O2J;>3'K2t&a#3<31Y=oDIp=oVS(=8l8#<s2W.
+=BAT$<rZ8!=Su5"<<?3&=SZ"q<rl?%rDWbkr_EGgqb[5grDNAgoi1lip/LcbrDNVlqG@/er_E>b
+r_3>bqF^`Yr^ciTrC6]Rp-e^Dr'LEg$XI(F?XI2M@q0(^B)Z<I@prkX@q0%\AS1pS!G6!BB`;`G
+CfkOlDJsK6EcZ>EFa&(UH@10jJV&N.KnkJAMi<[WP*;/sQ^XG8StD^OV5UAnXKSk6ZF%'M]"Gbm
+_o0O7b08/Ye'lgug"YBBioK:dlgF64o_8.VqY^>Ds4I>X7n,s977K^82`^k%"[+qA;c?YSrsc;b
+Bjk@U?<^T:=^"p1r)sb9<`N:'=&i:%<Dums<Dupu<)cco;[lT%:f1"b;,L(c:esnankT6TrC;?.
+8P)NH91qrQ9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKpJqSl6M2I7P
+O-,TjQC+)0SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iYRFbZik\\,Sg]tF?XqRld=qRlX;qnDX9s1\KGrk/9Crji-@\G_Ea
+Nphu*Nr"e:OSmH,cd:&8cN;D<chbrec2Q#dbm2J;c-FVYc-613!mAg1rlkAd$d-]9bfe2UcHsq`
+d/D8icj7qDc-Oe`cq[@8:]!uf;>jDg;u9Pf<W,tl<Vobk;uT\n;>X2h:]F2e:&[ic9D_?\8cD9V
+8,YpT7J9.F6i97Vf@o*Bm.'lJrV-<mrVZZop](9mJcC<$q>V#2Yct72X'&b7@UNJGZH1)*L]91.
+p@%M>mdBK/lfmWpjPo+Wj5]+Sg=Y$+daZandEp7cbK.W>^qdXo\@K,Y\$iiV\%&s>\,Sqr7fl4Q
+8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYjmCMds.EH?5EGBnL^I=Hd!K8#);MN!OU
+OckroR$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYai
+l0@U$m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iYHA8QmJMu8_:P5CC7OQ;Q"OT(=@NrP+3DZ">QDJa7dDZ4SODZ+GM
+S,f&WSGSfUSH#)VSH#)XSG\i]R[]e:S=5q9rgO%YR[KV5rL41_R[BM1R%0Y9S!f`DRK&`^R[fe7
+S!fa@:B"&d;#X>j;Ya8g<;'>j<q]Pj<;BJl;Z0Ji;#X8j:A[cb9`@]^9)_E]8GPdS7f5^K7/94J
+67AY,WNNM4\@T;c^VRb'_SEq$^;%Cs^qde(_SO"%^qmn)_8=(,`5KXo`WXB'aN2O'aWJ^Mbg"G\
+e(*('g"Y9:hr3VWk3)!qmdK]:o_%tSqu20HWW*NaKS4o.Inig:<E)gnL6n3kMuOFJb/D33\[AfL
+ZE^[=Y-"h+W2KWl"f.oeTV%hTSJ[ibS!oh8Q'@MrO-#B\N/ELNN/NUMM2I2^M>p'D7fl4Q8cD>3
+92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYjmCMds.EH?5EGBnL^I=Hd!K8#);MN!OUOckro
+R$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYail0@U$
+m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iY17Rp'E:]+&g;>*i_;>O2J;>sDb3;b]:3&`eg3;GT3=T)D"=SQ%t
+=9)G$<WZ?)=T2D#<WlK)<``B$=9ho.<E<+#<EB*#qH!Prs&K8&<)cUfr_NDfr_`Vlq,@/ip/V&l
+p/Uuhq,@8jrDEGgr_NPhqb@&`r_*,\r^m)[q+(BQr'g<Iq*Y'H!+#S1!FK76@K9s<B+&9_A7B"X
+@Uiq[AS1pS&8#QgBk_<qBk_=!D/O92E,tr!:NU`&GBnI[I!pKqJqJc3LP^nHN/is^PE_B"R[fq?
+TVA3XW2ZeuYHY:;[(!QV]YD8!`5Td>c-Oede(*('gtq#MjQ5Ukmd]oAp%S:Yr.4murt%Xf77K^7
+2E<c]5<V)&;c?\Us!R?7HY-\n?X?o==^"s1=]ns3>$4s-<`rI)<E<.#<)lmt;cQdr;c<Tns%rep
+;>sDl;$B]j:esnao2#BUrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='/U/>[1TB?t!MTAS,UhC27[(
+E,fr@Fa&+WI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD):
+J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\\Mp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iYRFG?ck\bNl7]E#S@]_B,<^@T,=^AknG]`5SD])B/>\Giu7NW5%<
+NW+t7N<"q4NW+t7O8@6"ch,N]blH&[blZ,6bl,cibg"AUb0Bn/s3L_l!R]9mc3;P>cd9q_r_NDf
+r_`YmqG[;kr)Ml[r)N\pqG[Akr_`Phr_NPhqb@&`s%E5]rCQuZqFCHQrC-BIq*Y'H#3"_2oDSXe
+q>UQrs8W%Ks+146rsl97XK,N2?"./H>I2Dk`eXQtqY'IKnF$;B-0j^Wk2bO\jQ#:Zh:pW7daHXo
+dF$=fcHF5G_na(#\@/lT\@9$H\F[307f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;?XI5N
+@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X]Y2(q
+_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]hr;6Kk
+rVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\\Mp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iYGA8QmJMu8_9P5CCAOSt=AOQDW#OT(=@Nr+h9D>8#JDZF\OD>8#J
+Du4DPD>Ke%S,]#QS,AfTRfJuLRf]%JRf/]ZR[]b7R@=)B!1a"W!1NkSs-a%ZS=,iF:]!uf;>sJi
+;uBVm<T[?[<W,nn;uT\o;>X2h:]F2e:&[id9D_?[8cD9W8,PjT7J0(E6i97[XKJh8]=bei^VI\&
+_8#u`!l)IbrkSlX_83n$^qmn)r51,)`Q#s>ai_fLbKJ,RcHjkadF6Rpf@em4h;7)Lj5f@dl0Ia)
+n+$&Cp\F[ardk*Jrsj^5JU^Ek:fUIm;21F'Q&GY]f>tkH]=>8UZ*LX<Ycb+0X/MqnVl$8bTqJ'M
+rga%YrgF@eR?`u"P)kZ`NJ`UOMi*GjMXu])7f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;
+?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X
+]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iY/7Rp*FrD<Agq,$rcqGQBOp.t`LpGi.4!''g6of2e.pK7Guq,mJr
+rE'&$rDiu$=BPQ(r)Weu!*K5'"B\`+<`T*!s&]2#!*B,"r)Wo"<W5ek;#X>k;Yj>i<;]bY<r>tr
+<;KPm;Z9Pj;#X8j:A[cb9`Ic_9)V?\8GYjS7f>dK7/94J64I:.?X[DP@UinYA7]=_rF5e;!G,mA
+B*i0_BPM9tChda%rbhaT<,lr"FED\MG^4X`I=6QpJV&N.L5:YCMi<[WOHYopQ^F53SY)UMV5C2k
+XKSk5Za@6Q]"G_k_SjI7aii#Xe'lk!g"Y?@ioK7dm-aB7p%A+TqYYpEe,TA8$8sq*5!M1l9iFtk
+NW07ARrr4M?sR+;>5q\&=V+b==B/F*<`W4#=&r:#<)cfq<!?2u;,^@hr_Wnr:f("c:ejpf;"IK_
+7f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-
+L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8N
+j5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`PQF+pNg\\>fR^%K&6^&>\:^](tI^&PbF])]G@\H'/<\,Ni/NW"n9
+NVnb1N<#":O8@6"cgf<LblGudblQ&5rlbVhbK7oObfe91cNMP?c-Xc8cN)8icN$c<;#X>k;YsDk
+<;fhe<r?%h<rH%s<;TVn;Z9Pk;#X8i:Adic9`@]_9)V?\8GYjT7f5^J7/94J63HuWqYg3hs8Mfn
+!<.QLJcG0<s/QK0?<q#I?!FVVa2Ni6*;K3snF5o6mHNs#kN:jcioT1YhqQr>f@/0te'e6B&C/M?
+_o'7(]=>8W[C<WU\@:t;!_#RJr^ZuZ!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq>^<iqu6NlrUg)?
+s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZh5POmFp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`PE@r6dJMu/V:P5^UBOPc2sOT(=?NqeV5D#\AKDZ+MRDYe5FDZ4SR
+DYK[lS,AfFRfJoURfStIrgFLfR@'D2R@'G5S=>t:R$sG2R[TZDRfH7];#X>k;YsDk<;fhe<r?%h
+<rH%s<;TVn;Z9Pk;#X8i:Adic9`@]_9)V?\8GYjT7f5^J7/94J64gQ5\@]De^:_1p^V7@o]t_>]
+_>h@W_8*h#^qde'rPSrY`5Ta;aiVa)botBYd*^:ie'uq!f\"p5h;@/Lj5oIfl0Ia)n+$#Bp\=U`
+JcDSHs*tGO:f(.l;Gi18QB[@.)#;Y#_ns$p['R'DYd1F8XfSS%Vl$AgUS@a\(nR:hS=?":R[]_2
+PEV/kNJrgRMi*IOMMgkZ!_#RJr^ZuZ!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq>^<iqu6NlrUg)?
+s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZh5POmFp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`P.7Rp'D;#4&`;#F2g;WUdK;#X>k3VYT43WD)82to<03W<1I=Su>"
+=9)G%<WZ?)=T2D"<rZ5%=BGH's&T/"s&K5%='/Q"<r?#!:]!uf;>sJj;uK\o<Uj,f=7K>i<W,no
+;uT\o;>a8i:]=,e:&[ic9DhE\8cD9W8,YpT7J0(E6i97Z>?kH??XR8K?t*VU@K'^>A7]@bB4q3U
+#A7^aBkqO%D>e?QDfB]:FED\MH$O^`I=?WpJ:`E+KnbD>M2R=PO-#NgQ'dr-S"6.CTqnQbX0&P.
+Z*LaG\[oGf^r"%/a2uKKdaQ^rf@ep7i8Wh\lL"$/oCVbPqYU2As3^iT6q0*q3BfYj4%rUP;iUe^
+d?/BY?sm/Cr`U+@=BJX-=BJa0=]\[,<`W1"=&r7"<)Z`p<!?3";c?Rjr_Wnr:esn_;,C-Z:BEsS
+7fGpX8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?,
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8M
+j5]7`k32'olg4!*mdKW6nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EGPEe^Ki\Gj5<^%K&9^&Gb;^]2%I^&PbF])fLRrODg8qR6'Vqi1Z9
+qMb3/rJps)r6PMkd*Va;m`t=H!mJp6rlbDfb5TW_b7Db=c-=JYd*U(acd:"acHc>as&&bnqc!Gm
+r`/\npK.5opK.)ir`/qsqc!Jlr_`Sis%iVhr([/ar_*/]rCQuZqFCKRr'g9Hq*Y'H#4hBYpA4[b
+rVuosq#:?nJcC<$m/IAp?=dSQ?!FVWaG9csrqQ$_n/(N[mHa'#kN:jcioK(UhV$];f@&*reC+?C
+&C/M>_nj+%]"#5X\$rlX\$tk:!_#RJr^ZuZ!(m/^IS3@.9heAY:f("e;cHat<`iL->?kH??XR>Q
+A7]CeBkqO&DfKc<FEVkRH@:6mJV/W1Ll%%KNf]EfQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"
+_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EGD@W-gKMZ&\:O8tF>OQ2K"OT1C@Nq\P5N;nn9D#\ALDYn>PDYe5F
+DZ4PSDY9OlRfStIr1*8G!h,UJrgEkWRJrZRR0&hER/WQRRfJlURf/ZP;#aDl;YsDk<;onl<qf\m
+=SGnk<rQ+u<;TVn;Z9Pk;#a>j:Adic9`@]_9)V?\8GYjT7f5^J7/94J65?c2ZaI?T]=ktn]tM(l
+^;7Y$_83q&rP&EL_8?,g#0"U'b0/&Trm(bpdF$CjeGe#:f@em5h;7)Kj5oFdl0@U%n*oo>p%S7Y
+rVhBJV#L`r:fgXr;Gi18QAbc!n]f(k^Ugk[Za$d=Z*1@3XK/:tVPg5bURn-OSt)@AS=>t9S!fS+
+P`UrbMiEUON/W[QmYM!67RmAIs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!p
+Ci402EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9F
+bg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?
+s-Wh:~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EG.7Rp'E:]4/^;#F2j;W^jM;#*uf3VYT23<2&82u#B23WE:^=mK2f
+=o;A%=8l5%='/T(=8l7u<rlE)r`B/%rDrqur`Ahp!*B(ps&&bnqc!Gmr`/\npK.5opK.)ir`/qs
+qc!Jlr_`Sis%iVhr([/ar_*/]rCQuZqFCKRr'g9Hq*Y'H$!CA5>$P<=?t3^F@K^1PAS,TRAcQKC
+B`;`HD#J3PDJsN8FED\MG^4U_I=6QpJ:W<)KS>2<MMd@QO-#NgPa7])S"6.CTqnN`WiN5)Z*UjI
+]"5Si^r"%0a3)TMd*pOqf@es:ioB.`lL"$/oCV_Mq>:*hJcF*s#rak/5!M1l9N4uMrsHZ#CLU[X
+>[1H9>Q.bQ=B\^->$4s/='/L(;H6du;cQaq;H$Rp;cH[o;GU.d;,C(d:esk`mnX!R7RmAIs%!,]
+r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EH?5FGBnL_IXm!%KSG;>Mi<[X
+P*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-Wh:~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EGPEJUNj\,F&:^&#AC]tD#W^&Gb;^]2%J^&GYH]=PSarj_p9rO)^6
+rjMg6nr<R-s,Hl6qMkN8rQkMjrQkJis3L)Xm`cEhc-=DTc-4DTaiVcMbKS5Tc-X`7cNMYAcHji9
+;#aDl;YsDl<;onn<r?%o=SQ%o=Su7s<rQ+u<;TVo;Z9Pk;#a>j:Adic9`Ic_9)_E]8GPdS7f5^K
+7/94I63ZiGnb2kYrr<#t!WW/qrrE%Ls+147rruq?>["JVabTlsr:p9\!UoFTlm1iZkiUsdio8qR
+gtUT9f@&-seC)^kd*BhT_nj.%]=>AZ\$rp8\,o)g7f>i,84cBF8kVfN9heAY:f("e;c?[s<``F,
+>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:iN0LP^nINfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA
+[^`l[]Y;.s_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EGD@W-gKMNO%nOQM]%OT1C@Nq\P2N;nn7D#S;KDZ"GQDYe5LDZ4MP
+DXs=lS,JcUS,AfERgbaTS!f_7R[TY3R$sHBRKJtHSXTMH".GUFRJp%_;>sJj;uTbq<V]\n=85nm
+=nl+s=8Gts<W5tp;u]bp;>a8j:]=,e:&[id9D_?\8cD9V8,YpT7J9.F6i01TYck:<\\#Pgrk/9E
+s1eTLs1\TM^AP_H^qp#e/]>WLaihrTd*L(ddF-Lne(*(%f\+s4gtpuKioB1al0@X$mI'K7o_/%S
+qu-MFs.TGs<E)jnL6n3ars7i5`5KC#[Bm4=YlCm0Y,n\(WW&e&UnXTVTV%gHSXc5KRg#4GPE_,h
+rf$l7s,?u9!/g6%!_#RJrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SUAS,UiCMRd)
+E,fr@G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8X
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD,;
+J,~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EG/77^'F:Jk!X:ukLH;"mid3V>B03WD)82u#B1>5_Uj=Su>"=9)G%
+<WZ?)=T2D#<WlK+=BAT'=9)G"<WcE(='5E%!*B,"r_WVlr_iVlr`&ksq,[DppfR;opfRGqqH!Sq
+r`&bns&/hnr)!Dhr_EAcr_3>bqb$iZr^ciTrC6]Rp-e^Dqa)$"<EE@0?t!MR@q&qXA7]@bAS#Ib
+BDuTDBj>ChCM[j+EH?2CFEVkQG^4U^I"$QqJV&N-KnkMBMi<[XP*;,pQC"#/SXuIIUnsufWiWD.
+ZaI9P]=bhm_8O@6aihrUe'uq"g"bKEjQ>[jm-X92oC_hPqu$GEs3:TD56O,19iP)Nrs#o_Bk(OX
+?N++O>?G$0=BAO*>$+j-<`iC'<)lt"<)ljr;H$Rp;cHXn;Gd?is%ihq:f'nbmnX!R7Rm>HIn3.&
+8kM`L9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt30)L51VCN/is]
+PEhH$R[]k>Tq\?ZVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!n
+lKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAR/_[~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<APEJUKh[D2[S!58BGr4N*CrOr6F!58?FotUL?s1SEE"1u.T\c0,<
+\,Ec7[/dZ6[JmQ4NW+n3N<+utqi1Z9q2G31p!<Was3LGb!6t;aoZ[B[rlkPhc-4E2bn\IIbfe,O
+aihlMcHFGVcd0n_cHjd4r_`\nr)<Sor`/eqrE&o!k#qUarE&ksr`/qsr)<Sms&&\jr_NPhr([/a
+s%E5]r^m)[q+(BQrC-BIq*Y$G"RkmRq>L3iqYpQpJcC<$kPkZi>-lAnL]7JRp@.SNmK;hAm-4N4
++Q_\DiS`SJh:pQ4daQUmda6Fgc-+2G_SEjs\@ArU\@M":!_#RJrC6o[8P/nRInNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsuf
+WiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X60n*ol<nd"dY
+o_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<AC@W-dJMNRRnk`P\&s,[2?pPo!-rf-bjrGDFLqelIPq/$+Lr,);#
+!1WhTpm_,K!1WnVoU>iLrgO"YS!ofFRh_B]R[KP2R$jD1S!]V4S"#k9R@9L>r_`\nr)<Sor`/eq
+rE&o!k#qUarE&ksr`/qsr)<Sms&&\jr_NPhr([/as%E5]r^m)[q+(BQrC-BIq*Y$G"L#,=\@VRM
+!PQ;J^]2+L^(e>t^V@S#_8=(-`lQ<IcHjkbdF-MCe/d)jf@S^0g=tH@iSrnYk3)!olg4'.nac>G
+q"agcJcD>As%riPQ^*L/#iEhD`4`[dZa'M6s/u^1XK/;!W2?Gfrh9RhSt;LDSG\i[R?j&#OH0=!
+s,-f6s,-9%!_#RJrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@
+G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+e^rI-g>(N@i8N\UjQ5Oel07L!m-X60n*ol<nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<A-6q9mD:JpRWk#(_Hq,.,hr]0R0q`+X9q)A11qHEc!mTBBir)iu#
+s&K,$r`K2%rDrr"r`B>*=]ea+=8l5$<EJoq!)WYls&/bnr`&ksqH!Prr)i)ar)io!qc<\rr`&eo
+r_ibnr)!Ags%`Jdr_3>bqb$iZr^ciTrC6`SogJUCqa1<b$<phE@U`hV@Uin[ral+AA7]@dBkV3p
+BPD3rCi+*1EcZ>FF`qtRG^4X`I=?]sJV/Z1Ll%"IN/j!_PEV5sR$jG6StD[NV5L8lXKJh7[C<ZW
+]Y2(s_oBd@bKeJ`eCE.&gYLiKjlbmnlg4*1o(DeQqYPjDbPq].3_`RQNW0phWI8Gh?X@)B>$>'3
+=BAU+<`iL,=&i7&='#<#(fjU9<E)jp<Dugq;H$Ii;,L.d:Jjqc:/^OV!_#RJrC6o[8P/nRInNI0
+9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0
+SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X60
+n*ol<nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNAoW[(VR+%PpV$X@rOr9Hr4_j=rkAEGs1JBD"M2.S\@DLHrO2R1
+qm6@2rf-f6rf-f6s,Hr:rf-f6rJgg%p<W`bs3LGbrlt;bn]`-!b08,Sb0A2ScHOJUai_iNb08,S
+b0A8YcHf?b;H!Ekr`&ksqc<\trE/brnQPWhrE0&#qc<_sr`&eos&/kor)!Ags%`Jdr_3>bqb$iZ
+r^clUr'pWRogJUCqa(DWq"jpfrW<&trdk*#s5*bWZHLCGs"=-AnF,f5mHa-(lKIEnjlGF[hqd)B
+gXk!+e'ZUldEp4`bK.T<_7mOk\@/lV\a?m,7K,dU8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3
+>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M
+\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?#P7T[p%A%Pp\ssf
+q>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cN=^l;tJVfMOq2jg&qN1];s,Qi5p5K!1ph]kFqel=MrbhIIrgWeT
+rgNqYS,SrTRf]%JS,/QRS,AfHRhhH\R[]b6S"#k9R[KV3R@9S3R@9P2RJiTS;?'Pl;uTbq<Vohr
+=8c7p=n,\h=oDJ%=8Q%u<W5tq;u]bq;>a8i:]F2f:&[id9D_?\8cD9W8,PjT7J0(E6i01P[C3TW
+qn)pCr4i9G28?rA^qde'_o'F4aihoRcd:(edaQ^qe^i@)g"G*6gtpuKjQ,IdkiqF!mI'K6oCVbO
+q>:,As.')jL7"6as";sG`5B6tZEga>YHP+3XfSP%W2HMiUnaZXTq7jHSt):=S=?"8QBRMpOH#3X
+MZ/P5MXQB%7K,dU8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/D
+GBeF\I=Hd!K8#&:MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uq
+f@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?#P7T[p%A%Pp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cN6:==99MeS`nkeOInkf0[qbdDkr]0m9!&sm:s#9g7r&Oa9q`"I5
+r`T,%q-!2hr)rr"r)`l"s&]5$!EE2"=8uA+='8X,='#<%s&K,$qH!Vns&/bnr`&ksqc<\trE/br
+nQPWhrE0&#qc<_sr`&eos&/kor)!Ags%`Jdr_3>bqb$iZr^clUr'pWRogJUCqa(Wo>[LoK@q&nW
+@q>IJ!+u1C?>4.hCMI['E,fo>FEMbMGBe@XH@($gIt3*%KS>2<MMmITOHG`jPa.W(S"#tATqeH^
+WN*&&Yd:aH\@T;c^VRk.aihrTd*pLqf@\g4hr<_YkNV@#n*oo@p\F^aJcEjl!_lWnNW0pXSonUQ
+?X-l>=^,'4=B\d-<`iL,=B/@'='#<#"]eT&<)liq<!Q?$;H$Ij;GmEi"Aquk:f-UV!(HlVr^ZuZ
+!(m/^InNI09hnGZ:f1+h;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3M2I7O
+O-,TiQ'du/S=ZCIUSXleWiW>+Yd:^F\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X60n*ol<nd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLAoWa&VQdeL^\tnF^](tF^Au"E^]2%H^]2%J^&PbF]*#XT\@DIG
+rjMX1pU'pZq2><5pl#34qi:Z8rf$i9s3LSfs3L_jr6PAhs3LMd!R8pfc2>l_blc27c-6+1s31Gd
+rlY;crQ5,arlPDhbfe5Vc2LW>;uTbr<Vohr=8l=t=o)=k>PhV"=oMP&=8Z+u<W?%r;u]bp;>j>j
+:]F2f:&dod9DhE]8c;3V8,YpT7J9.E6i01Wq>C6jrr)fps8W(Ls+13$s5a1bq=X7Fn*]T0rp(*Y
+kN:jciSNGGgY1E7e^`+IdJqQ)ccXAN`59@)]=>AZ\%&uY\*pj,7K5jV8,l*[8cD<_92,=ZInid9
+:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^O
+Uo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Opf@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?
+oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZL=^lAuJVWr\l]M(+rf@)>pl4m(rJgMeqec7KqeuIOqecA'qj[VU
+qO@JSs-rqTrgWeR!1WnVq3qJTS"#lES,\rUS,\oaR@9M1R@0M3R$a?AR/rbDr_i\nr`&ntqc<\t
+r`Ju!qHEAmqc`eur`K/$r)Wess&Anps&/hnrD<Jhs%`Jds%NDbr(?r[rCHcTrC6]Rp-e[Cqa(=m
+]DK5C]t_:rrP&9G%)B`s_o0O7aNMfPcHlL;,1=ukeCE+$f\,$6hVdAQjlYail0I[%m-X92o(;YM
+q>:-iJcC<$V#MS6eB#PC]=5)OYd(C8Y-4t/X/`+sVPL#_U8"?RSt2FBrgNkV"dkU>P*(k*Mu\b7
+MuSY7M=69#7K5jV8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^OUo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Op
+f@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZL6:=C:9M\J^;>j>i;>sDU;=dW[;>O2i;>rTR3;ti:3;b`53;Y`8
+3;tl93<*1Z=oDOu=n5\m=o;D"<s2W,=BAT&<WH5#=T;J&=Su7q<rQ"q;uTbr<Vohr=8l=t=o)=k
+>PhV"=oMP&=8Z+u<W?%r;u]bp;>j>j:]F2f:&dod9DhE]8c;3V8,YpT7J9.E6i01O?=..?@fKp>
+A7]<NAH?=Rr+KANCMRa(DJsK6F*)PJG'A1UH$XgbI=?`uK8#);M2[CRO-#KePE_?!R@B\:T:r$U
+Vl6VsY->1<[^ir\]YD;#`Q--FcI(+jf@em5h;@5Qjlbjmm-X<5o_84[rdk*#s3go_e<b&`?s[,D
+=]ns3=BJX,=BA[/=BJT&<s2Q(<E<0!<!?2u<)ljrr_i\ls%iep:JXgT:]El`7fGpX8,u6\8c_RY
+r_7l;:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&
+S"-(BTqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHsteeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*
+n*fc9o()DDo_%nWp&Ojdq#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKY]5SmVQ@H0^Au"F^Au(B^\PVD^&PbF]*#XT\@D@DrO2^5o<eFT
+mYh.*qi:Z8!fW+urQk5`r6PAhrm1Gdq9Ai_p!"E!c-=JVc-"5Sc-"2Qbg";Pai_fMbfe8VbYn@;
+s&B"ur)Weur`K#"rEB)&mTfWnrEB&#s&f8%r)Whtr`&hps&/hnrD<Mir_EAcs%NDbr(?r[rCHcT
+rC6`SogJUCqEk5\!<2urs8ITLJcC<$jSoJ^q!mkBn*]TAli6,Ojl>@Yhqe:d)VWipe'cUjdEg1d
+bK%`C_SNst\[])V\@K,Yn$rBds$luXs%!,]r^qT39MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"".
+`lQ<Gbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKY[MNtJ;99]ORA8.OT(=@NqeV'N;\b/D#.uMDJa7iDYnAODZ4MP
+RfJuTRfJuTS,SrWS,SiYS",t;qjRPSr1*GL$_!QSR[T_6R[]e7RJrZSQjB+KR@9M3S!d1P;u]hs
+<W#ns=8l=u=oDP$>OGbn>Q%b%=oVV'=8Z,!<W5tr;u]bp;>j>k:]=,e:&dod9DhE]8c;3V8,YpU
+7J0(E6i'+L]DfJC]*H!^^:q:o^:sT]0u1WD`Poj;ai_iOcHjnddaQ^re^i='f\5*8hW!VYkj.R"
+lg4$+mdTc;o^qkOqYU8Cs+13Fs"Eoi`l,U'\$NBEZ*1@5Y-"_(WMl_lUnaWWUS+6NSXl7=S!fb8
+R$Eo!P)tZ]NJ[Xm!fDnmmth!4s$luXs%!,]r^qT39MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"".
+`lQ<Gbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYXCuR9MSF`;#jGi;#jMY;=dW\;>F,e;>`HR3;,943&`eq3;Y`8
+3!M<$3*BBf>5DD$>5VP'>5_V&=9)Lu=Su>!=T2D$=T;J#<WlK+=BAT'=9)Fu<rZ5$;Z'Jn<<#tr
+<rQ2"=Sc2!>5MOl>l.b(>5DD%=T2D"<rZ2!<;fbq;Z9Pl;#a>j:Adid9`@]_9)_E\8GYjT7f>dK
+7/94H63(Ek@L$CRAS#C_AS1jR?#".jCi4-/DfB`=F`qqPG^+L[H[L6jJ:W?.M2R=QO,oBbP*(ok
+Q'[o.S"-%AU84]cWiWA,Z*^pK\[oGf^r"".a2uQNdF6\!gYCZDioK4akj%L$nacAIq"t&As+13u
+rsm&-DId-]>[(H9>?P'0=oDG%=<L[G=BAO(<E*%#<)cdq;c6Rp<)Z^n<)HLh;,:"b:JXgT:]El`
+7fGpX8,u6\8ps?+9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@q9.`BPD6uDJsN8FEMePH@('hJ:W?,
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aND]McHjndeCE1&g"P3:hV[8M
+j5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD,;J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJY]5SjV5_/CrkSKIrP83Crk8HI^:sT[rk&BG]",>\q7$@3rO)L/
+s0MX1rj2Warf$i9mu7:+r/Uc9s3CPgq9B#ccMPrfd/;5fcM>`_cM#Kabg"B2bPf]cb6Q26bfe/O
+aiXP)s31F?s&B"ur)Weus&f/$rEB/(iEZ=cr`]2%r`K2%r)Whts&Aqqr_ibnrD<Mir_EDdr_3;a
+r(?r[r^clUr'pWRogJUCqEbAbrVcWlrdk*#s+142rtG>)nF,f4n*K?*mH`rtjl,1UhVA+b);3Wn
+daHLicd0tabK.cC_SNsu\[T#U\@K0<\Go"t7f>i,84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?XR>QA7]CeBkqO&DfB];FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l\
+]t_A"_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]k
+rVQTlrVcBfJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJY[MNsJVB6^ORA8.OT1CANqeV%N;S\.D"MTDDZ4SPDZ6*lS,]#V
+Rfo1LS"-#GRfAlTSG&EQR[a8ErL<hU"dtgJR@'E?R/`TQ;u]hs<W#ns=8uD"=oDP&>N&ic>Q.h'
+=oMP'=8Z,!<W?%s;uT\p;>j>k:]=,f:&[ic9DhE]8cD9W8,PjT7J0(E6i'.K]EPp[]Y;(mrkABH
+s2"`S/B5`Oai_iOcHjkcdaQ^rf%/I*f\,$7hVmS[l0@X$m-a<1nFH5Dp@n@YrVhBJJcDJE0^$a#
+_nN^gZE^U;YHG"1XfJJ#W2HJeUS4BUT:VXFSXZ(;R[]b4QBRMqOH,9ZM2M7i!/g6$s$crWrC;?.
+8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m,E,fr@G'A4XI=?]tK7nu8M2R=Q
+OHPfmQ^F52StD^NUo(&hX0&P/Z*UjH\@K8c^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^h
+l07O#m-X6@mfi4No()DErq-<cp\jmeq>^<iqu6NlrUg)?s-`n;~>
+JcC<$RK)pYrr)ior;6Njs7uZh5kk!Gp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYXCuR9MP:ZrDMuZoMGB]qGR&bs#L'<r]'s<nMgG,r&Oa9s&f8'
+s'#2#!*]8&s'#>'r`K2'q,mPtp/q;qrDiu$=BPQ(s&f;&q,[Gms&B"ur)Weus&f/$rEB/(iEZ=c
+r`]2%r`K2%r)Whts&Aqqr_ibnrD<Mir_EDdr_3;ar(?r[r^clUr'pWRogJUCqEk*h#%M4TA7]@b
+r+Q+G$#FHrD/O61EcZ@%G#!:-H$XgbI=6QpJV8i;N/WdVO-#KcP*;/sR$sP8SY2^QVPpMrXfo"9
+[C3WW]Y;1u_o'L8b088^e^rO1hVdARjlbjmm-aB6p@nC[rIP!"s3go\\UeI)?sd/A>?P-3<``@)
+=B8O+r)`o!s&K)"s&9_3<)Z[o<)Z^n;cHUl;,L(a:esn`;"%3[7K5jU7t4'$8P2TJ92&&S:/=\_
+;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi401EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/tR$sM9T:r!T
+VPgDoXfen5ZaI6O\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI(#C"n;'Q
+o(2MQo`=d\rV6Egs8)]krqu`no_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpi#<nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIY]5SfUo;!"_#(nG^AbhC]`5SF]",?H\,Ni7[JI90Zi.9.Zi?$Q
+N;eb5Mu\k7Nr@9&chbrcc2Z)eci;Aichu)ac2>lWbnnRJbK\5TbKA)Rc,n)KaN;TI;c?Xp<E8rt
+s&]2%r)s#&r`f/&q-Ef&q-Ec#r`fA*r)s&%r`B&!s&K(ur)<Vns&&_ks%iVhrD!8bs%E5]r^m)[
+qFCKRr'g9Hq*Y!F"9&,prIP!"s+142rrN#jrp]sU..-?fmHWlrjPo+SgYCQ<g=b$,dF-Cicd:"`
+b/_Q@_SNsu\@AuV\%1n9s$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKqK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@
+bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD/<J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrphu;nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIY[MKqJ;3r_mZIC.s,[2?pl4Tur/L>bo548?!M#YWRe3*KRfAlW
+SGAZSS,f&VRfAlTSFN'WR[]b8R[]b6S!oh5R/WHPR/^+b<<#tr<rZ8#=Su>$>5hb$>kq\$?MRn%
+>lIt,>5VP'=T2D#<rZ2"<;]\p;ZBVm;#a>j:Amod9`Ic_9)_E]8GYjT7f5^J7/94H63+Xs]`5\D
+^Akr$^;7\*`lH0Ab0/&Tcd:(fe'lgsf%/I*f\,!4gu%/SkiqBum-a?2o(2SKq"adbJcC<$T`5GY
+bf7N5\?W<EZ*:F7riH:(WMl`oV#I(lTqJ$KSXfYJ$C[BLQBRMqOH,<Zre^f:Mi3J]M#TpD7f>gY
+84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJV/W1LP^qJ
+NfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC.heCN7(g=tH>hr*JQj5f@b
+kiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrphu;nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIYXCuR9MbO_qGQcZoMGB]qGQr_s#Ks9s#L*=ni-P-q`4UWr`T8)
+nQGfor)j#%rE9#"r)r\prE'#"$!151=BAR,=BS`'<X)Q&;cH^r<W#nt=8l>"=oMV(>PMJ!?27h&
+?2.\(>Q.h(=oVV'=8c2"<W?%r;u]bq;>j>k:]=,f:&[id9D_?\8cD9W8,YpT7J0(E6i'.J@fKs@
+AS,RfrFc:ICMRbcD-(UnE,p#AF`hkOG^+L[I!g?kI=Hg$LPh"KNK'![OHPfmQC+,1S=ZCKUo()i
+X0&P/ZaI6N\\#Pj_SaC7ai_iRdF?e%gtpuKjQ,FdlKms.oC_kSr;M9IJcF4!%JZuOB4,+R>Zt96
+=]\W&<t/87='/O(=&i=&=&i:$r_rns<W,i!<)Z[n<;fYu:JFY];,1!W:]El`7f>gY84cDP8q0K-
+9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJV/W1LP^qJNfT<dQ'Rf+
+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC.heCN7(g=tH>hr*JQj5f@bkiq?sm-O--
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh621*Hp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHY],JaU8Yg$_#(nF^AbhC]EPpY]",>\q7$@3s0_a2r3QF1q6U+,
+!K<$9N;nh0N;AJ3N;eh:NW@DtcMGfccMZ#gd/;5fcM>`_cMu-,bg"DVc-=GVbKJ/Rc-+ASb/qiL
+b0.uPbKKn,!6Y:?s&K"us&]5&r)s#&r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vn
+s&&_ks%iYir([/as%E5]r^m)[qFCKRr'g<Iq*XsE!W;nIs+13$s5a26q=O.FnF#c4mI9Q-k2tU\
+i8<8EgtUK5f$i'qd*g7dcHaPP`l5g2^:_"e[^W`V\aR$26q'O67f>gY84cDP8q0K-9heAY:f("e
+;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*S"6.DU84W`
+WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh5kk!Gp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHY[MKpIu!uamZIC.rf@&=qi0j!rJgi9nSIf6r,2J's-rtUpRD&K
+s-s%Yq4%DS!1WnTs-rqVs-j^kS"#k9S!oh8R[]b8R[]_5R$sG2rgNkTrL!R`s&K"us&]5&r)s#&
+r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vns&&_ks%iYir([/as%E5]r^m)[qFCKR
+r'g<Iq*XsEs1A?FrOrlY^;%Cu_SsO8aN;WLc-Obadf.]8eCE+$f@\d0g=k<:hr<b^lKdg)nF6#@
+p@nCZr.4m!s.B<KfuV.I]XG)NZE^[<Y-+n.Wi2koV50l]U8"<PT:ML@S"#k8R@0A,PEV/kNfB!U
+MMd@NN/I+\"@P[I7Rm>H!_>mSr^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4
+F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaea
+e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh5kk!Gp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYXCuQ9htXaqbliZohbK^qblo\!''p;r&F[9!''L-r]'p<qH3`"
+s'#G*s&f,#s'#D)qc`_srE/u#s&]V0=BJX,=BAU+='5E&s&T"us&]8&rDrnss&K"us&]5&r)s#&
+r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vns&&_ks%iYir([/as%E5]r^m)[qFCKR
+r'g<Iq*XsEs'c1CAS,RfBP7<X!blCbrbMdUDJsN8F*.A'9m1`*H@($eI=-HlJ:`K4N/`gWO-#Ng
+Pa7])S"61FUSOcbWN*&'Yd:^F\@K2a^r+15bK\;WcdC1kfA#0?ioK4_kiqF$nFQ>Iq>C5Cs+14!
+rsS"`F_"rg?!CH8>$:`('3/.9=&rF(=&r="<E<'u;cH^p;Z0N';H$Ol:f1(d:Jaha:K$[X"@P[I
+7Rm>H!_>mSr^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(
+L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/L
+ioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGY]#D^TVoN?qnW*DrkABFqn2s@!kPqQqmcX7rjMj7qm?7,!4;U/
+qm$3\rf-o9rJUN2repc7"H/4tMi7Rnrf-p'p<NHXs3CPgs3U\ir6G,_r6FrZq9&l_bKJ-/b65r0
+<)lrs<rZ8$=Su>$>5qh(>l@t,?KGPm?N+7->lIt->5_V(=T2D#<rZ2"<;fbq;ZBVm;#a>k:Adid
+9`@]_9)_E]8GPdS7f>dK7/94G6@o/fs+143s"+0FoC22;nFQ2>n*B3"jl57Vh;$f?g=Xs,da?Fi
+dE^(^bfRlE`59=)]XkZQ[f<o,\,\qr7K5jV8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH6/DGBeF]I=Hd!K8#);MN!OUOckroR$jG6StMdQV5L8lXKA\1Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFiSrnYjlYajl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NmrUg)?s-`n;~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGY[DEnJ;00ROo(7>O8b1:NT,ltMi@.ArGDOOq/-+KqO@PTrL3SP
+pmV5Ps.&nSs.'+Yr0dVTr1*DKq3h\ZR[T_7R[KP2<)lrs<rZ8$=Su>$>5qh(>l@t,?KGPm?N+7-
+>lIt->5_V(=T2D#<rZ2"<;fbq;ZBVm;#a>k:Adid9`@]_9)_E]8GPdS7f>dK7/94G65I8K^V@Ls
+^V@Lu_SsR9aND]Nc-FY_df.]8eCE+$f\,!4gY1B:hVmPXl0@X'nF?,Cp@nC[rIP!"s.KAsr7&d*
+^:Uk[rim3DYct:4X/`(rV59u^US=KTT:MOCS,SlVR0f7HQBRMqOH,<[r/1T7M=?<$7/fXT7fGpX
+8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$G6;?XR;O@qB7cBPM="DK'T9FEMePH@1-jJ:`E-LP^nI
+NK93bPa.W(S"-(CTqnN_W2cr$YHY@?[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVdAPj5f=a
+kNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYX:oP9MSI];X[KX;#aAm;#4&d;XI?]3;bf63;tr<3;tl93;GN4
+3!!,aqH3`"s'#G*rE/u#rE92(qHESqs&f2%oN:Zcs&K2#<E8uus&]5&r)s#&s',A*rE]A.j^7sm
+ra#D+r`fD+rE9/&r`B&!s&K(urDW_os&&_ks%iYir([2br_*/]r^m)[q+(BQrC-BIq*XsE"(Z"W
+B`;ZDBLQWMC27U$D/O93EH?5EF`__JG'A1WI!g?iI"$TtKntYGNK0$\P*;/sR$jG7T:qsSVl6Sq
+XKSk6['dER]"Gepa3)WPrmCbo'\(^egYUlKjQ5Rhlg4*3p%J4Yr;M9IJcF7"'\J^i@preO>$5!3
+=]\^-='&F&=BGK&#?Or*<E3("<;TSo<;of#;H$Ok:f1*h:]jHi:K$[X!(?fTs$luXs%!,]r^qZ5
+9MJ5V:/=\`;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4EccGJG^=acIt3-'KnkMBN/`m\P*D6!
+R@B_<TV80XVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*/&&P+\_drP89ErkABFqn*$C]"5HJ\G`o:[edE/[/.-(ZMoj[
+N;\\%N;V#pcM5ZacMZ#gd/VDncHji7cM>`_cMYombK\5Tc-+ATbPfZnbKS,Obf\)Obfa!drDrr"
+s&f5&s'#D+r*95,ra,>+mU5fsra,S0r*98+r`]8's&f;&rDrqus&Aqqs&/korD<Mis%`Jds%NDb
+r(?r[r^ciTrC6`SogJRBqEfc5JcC<$kPlM"q==%DnFcDCnaGc+jl>@YhqQuBgY160e'cYBck4OH
+bK.]C`59=)]XkY^[C3TUn$i?cr^HiVr^ZuZ!(m/^!D?,c9n,o6:f("f;cHat='/U/>?kH@?X[DR
+AS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1XE\%0)_]t_D#
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2MGp%A@Y!;HKfs7u]kr;6Kk
+rVcEgJcD/<J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*.MRG(#+,n<*U0rf@&=oo83ps,6l8!,VXMnSA2Bqel7IpmhAR
+rL3\SopYoMs.&nSs.'+Yr0dVTr1*\S#b%6OS"#k9R[X2E$_!QQR@BV4R[]aG<W,tu=8uD$=oV\)
+>Pqb*?2e1)?g_=s?iFC2?2Rt->Q.h)=oVV(=8c2"<W?%s;u]bq;>j>k:]F2f:&dod9DhE]8cD9V
+8,YpU7J0(D6i'+O^V7Fsrk8iW_SsO8aihlOc-Ob`dJhT!eCE.&f\,$Yg_8Q%i8`q]kj%L%nFH2C
+p@n@ZrVhBJJcDGD(\6"p_nWdiZEgaAZa-d;XK/=uVkp5cU]."fScbORS"'DG&t#)SQ^3l"P)kW_
+NJi[OMi3ONn;%'4r^HiVr^ZuZ!(m/^!D?,c9n,o6:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'
+DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1XE\%0)_]t_D#`5Td<b0/&T
+d*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2MGp%A@Y!;HKfs7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*-M`8kVrWrDN&\pe^reqblKPrAa[7r&F[9pc/+/r`9)%r`T/$
+rE02*=]t]*r)r\rmofQj#Zk,0=BJX,=',B'"]n`,='&N&<ruE&<W,tu=8uD$=oV\)>Pqb*?2e1)
+?g_=s?iFC2?2Rt->Q.h)=oVV(=8c2"<W?%s;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpU7J0(D
+6i'+LB`2TCBFJTiC27U%D/O92EH6.!F9Qf1GBeF]rdI=eJV&T2Ll..NNfT9aPEhH#R@B_<TqS3V
+VPpMrYHY@?[^`iX]Y;5$aNMiSdF$Cke(31*h;I;Qjlbjmm-jQ<pA+R^rr.KKJcF:#%*=BD@piYK
+>$5!3>$1`)#?Fo,<E<.#<rQ)"<`T)s"B&2t<)ico$WKr!;,L.d:JO_^;XdH^7/fXT7fGpX8,u6\
+8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:_GNK90a
+Pa.T'S"-(CTqeE]W2co#YHY=>[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYchr%OJ/Sa^qff]rP&6Drk/9Cs1/3@qRHL5s0hd3qm?4+os+S(
+p5Jm,oo/p1s,7$-dEqm=r6G;dr6G)^s3CDcq9J`Zrm(>a"j>08bKJ00b6Z86b0.uMb0/$-<rZ8$
+=T)D&>5qh)>lJ%.?Me+-@/+1.@eaC1@/=70?N4=/>lS%.>5_V(=T;J$<rZ2"<;fbq;ZBVm;#a>k
+:Adid9`Ic_9)_E]8GYjT7f5^J7/94G6@o/fs+147s"O?EnaQ#;p%7hFmHNfqio8nPgt^`?f[\R$
+dEp=hdEp.]aiDB>`59:']Xt__[C3O3\Gnts7K5jV8,l-[8cMD492&#R9hnJ\:f1+h<)lt"=BSg3
+>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84StD^OUo()jX0&S0ZEpsJ
+\[oGe^VI_)`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssf
+q>^<hqu6NlrUp/@s-`n;~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYchDQG(,()n<*^3rf@&=oo86qrJUQ3qePe>!,_RM#An?rD/Go:
+Sc"u\S"-"<S,A`SS+N0?S,A`SS,SrRRg#7MS!oe8rgF+\R[KV5R$jD4rDrr"s&f5&s'#G,r*95,
+ra,J/r*];.r*oG0rF#J/ra,V1r*98+s'#A(s&f;&rDrqus&Aqqs&/korD<Mis%`Jds%NGcqb$iZ
+r^clUrC6]RogJUCq*G(rrOso"_SsO8bKJ,RcHjkadF-Lme^iC,g=tE>hr!AMj5f=bl07R%n+-)B
+p@n@Zr;M9IJcDGD2X&H*_nERdZE^^AZa-g;XK/>!VP^2bUS4BRT:MOCS!oh8R@0G/Q^*f!P)bQ^
+N/NRNMi*INn;.*4s$crWr^ZuZs%35_InNI/9heAY:f("e;cHat<`iL.>?kH??X[DRA7]CeBkqO&
+DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&T
+d*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYcgG`8P;fW;H!0br_iYkqG@)erDMQNq`+L6rAaU5r&FU5!*K2$
+!*K/%r`K#"rE/u#r*','r*&_qs&f8'q,df%=BJX+=S5bo<rZ8$=T)D&>5qh)>lJ%.?Me+-@/+1.
+@eaC1@/=70?N4=/>lS%.>5_V(=T;J$<rZ2"<;fbq;ZBVm;#a>k:Adid9`Ic_9)_E]8GYjT7f5^J
+7/94G63(ZtBF\ZgBkhBuCi+'-DfBZ8ErL,VFEMeQH@($gIt*!#K8,/<M2I7PO-,ThQ'Rc)S"-%B
+Tq\?ZW2co$Z*LaE\@B,_^;%P'`lcNNcdC1if%A^4hr3SUk32*smd]rCp\Odcrdk*#s4.,^\qOm-
+?s?l==^#$4=BAU*=&rE$<r,f6<)QUn;cHXo<)Z^n;H$Lj:f1(d:esh_:JgOVs$ZlUs$luXs%*/]
+s%7c69MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZ
+P*D5uR%'V;T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"%/a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBRK%d~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYchr%OJ/V_pV6[@rOr3B!kPqQqmcU6s0hg4qm?4+qm-7,qm-7.
+oSi[*rf-]3s,@02e'cXjrm1Jes3:GdprrfaqTni[pWW]`r658cc2PocbmDS;bf\,ObKS/Pr`9&#
+s&f5&s'#G,r*98-s'GS0rF#S4k@4Bura>V1s'G_2r*98+s'#D)s&f;&rDrqus&Aqq!`DlmrD<Jh
+s%`Mer_3>bqb$iZr^clUrC6]RogJUCq*KZ4JcC<$li.Onp@.V@o_%kIn*TB&jQ#7WrnSRLg=Os+
+da6FhdEp4_bK7fD_o'@+^:_(g\$`ZQm^W9bs$crWrC;9,8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2
+>[:ZC?t*VVAS5[jCM[m,EH6,BG'A7ZI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI
+\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^Xp%A%Pp\jjg
+q>0scqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYchDQG(,%%mudU1rf6Z2l\tb"r/CW5q.okDrb_[Or,)4Hs.BId
+St2DLS,SoXS,A]VS",u?Rf8fVReN<LRf&WTSG\iWR[a;FrgO4_S"#h7R@9V6RJp7e=8uD$=oV\*
+>Pqb+?2n7.?i=C2@HV+u@K'[3?iOI4?2Rt->Q7n+=oVV(=8c2"<W?%s;Z]io;>j>j:]F2g:&[id
+9D_?\8cD9W8,YpT7J0(E6hs%f^;%Fu_SsO8bKJ,ScHjkbdF-Lof%Jg5gtglGro"LLj5f@cl0I^'
+md]l>p%J1Xr;D3HJcDGD#iX"G^qI4_ZEaD8.^?.YX/`(rVP^2bU8"<PT:VRBS!fb5R@0G.QBdYu
+P)bQ^N/NRNMi3OOn;.*4s$crWrC;9,8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[j
+CM[m,EH6,BG'A7ZI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(`Q$!@
+bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@
+s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcgG`8P;fVohkTaqbd5efMVH(p,W+5r]0j8s#9pZrDru$qcWr$
+qcWi!r)rr$rE9,'oND,p!*T5%!EWD&=8l;'='/T'<ruK*=8l8#=8uD$=oV\*>Pqb+?2n7.?i=C2
+@HV+u@K'[3?iOI4?2Rt->Q7n+=oVV(=8c2"<W?%s;Z]io;>j>j:]F2g:&[id9D_?\8cD9W8,YpT
+7J0(E6hs%TBP1skBkhBuCi0/h")i-uEW1#UFa&+XI!gBmJ:N3%Jq]#:M2I7POHG]iQ'I](R[ftA
+TqeE[Vl?`!YHkLB\%'#^]t_A!_oBd?c-Xkde^rL0hVdDSk3)!pmd]o@p\=U_rIP!"s472Ur2k?Z
+@:!8E=oMS*=]kW("'/K(<W,tu<<#r&<)Z[o;c?Tn<<#l,;,U=k:Jk"e:f'q_:espW:]Ei_7K5jU
+7t!p"8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EcZ>GGC"UaIXm!%KSG;>
+Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[
+k3(smlKdg'"RYXGnF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBRK%d~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc_o%OJ&M[p:pR?!58BE!P>rB\c0,;\,Wo6[JR?-Zhq'-Z2(^*
+Zh'.RMuJ\7NV\S=f%&:"e'cXjrQkDes3:Gd!mSs5qoo,dqTo2es3:>apWW]]rlt>`rlbenbKA#O
+aiqn.<``@)rE9/(s',G,s'>V1r*TG2raGS2mpl-%raGe6r*TJ1s'>S.s',M,rE02(=',?$s&K(u
+r_rhps&&_ks%iVhrD!;cr_*/]r^m)[q+(BQrC-BIq*XpDJcC<$JcG0<1B.+AnaQ)Ap%7b@mHNfq
+j5f.UhV[/Cf@SHud*g@hccsYTa2Z'6_ns4']Xt_`[C3NQn$rBcs$crWrC6o[8P/nRInNI09hnJ\
+:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pNrK7nu7M2R=QO-5]lQC+,1SY)UM
+Uo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<
+ncA@Srq-<cp\jjeq>U6hqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc_AQFaeq#nWEg4!KW96NUD`,Mi<VlMuAV3MuIPjC\_fBD#nNk
+qel>)!hZ'Tqj[ST!1WnTrgWPKrgWkTpm_5NqjRSSrgWeRrgO=aR[KV5R%'LE<``@)rE9/(s',G,
+s'>V1r*TG2raGS2mpl-%raGe6r*TJ1s'>S.s',M,rE02(=',?$s&K(ur_rhps&&_ks%iVhrD!;c
+r_*/]r^m)[q+(BQrC-BIq*XpD"2DXg`W"'\bR;\@d*^7heCN7(gthtfs5Eq9&`i'9kiqF"mI'K6
+oC_hOq"t#@s+13DruTq:`4imnZE^^@['R!=Y,eS$Vl-AfUSFQWT:_[ES,SlVR1#CKQBmbuPEM#f
+NK!jos,-o:MXZH%7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO%
+DK'T:FEVkRH@1-kJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"_o9X:aihoR
+cdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\!;ZWjrVQTlrVcEgJcD/<
+J,~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc^D`8kVoUpJLZ_!)`Viohk9Vn590Fr&FC1q`=^:rAa[VrE'#$
+r)s&%qcO&(='&L+qH<f$qcNo&oND)o!*B/%qcEc!qc<u(=&r@'='5E(s'#G,rETA.ra,M0ra>_6
+pgW]%pgX52ra>Y2s'G_2rETA,s'#A(!a&N*rDrqus&Atrs&/korD<Mir_EDds%NDbr(?r[r^ciT
+rC6`SogJUCpd,3uAnc!qCi!tfD?+YTE<pT+FEMeSI=?\FJOb<EK7nr6Ll.(KNK93bPEhE!R$sP:
+T:r$WW2cl!Y-5+:[C<ZW]=kqn_Sa@5air,[daZh!g>(QCj5oIglg=35p%A(TqYc!FJcF=$($qW8
+ARSqO>?Y05>$4p.<EN=(<`N<%<WZ9%<W5qu;GmElr`&kq%T6/&;Gg@j;,C(b:/F__n5''Ps$crW
+rC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pNrK7nu7
+M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_V
+jlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jjeq>U6hqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc_i!OJ/SZotLUC]tM)X]DoGB\bru;\,Ec7[JI9-Zhq',Z1tU+
+Za-n,N;eb4N;nn8N!\.gf%&:"e'cXjrQkDerQY;d!6tMer655eq9K&drQY2an'1gT$HgT8bfe2P
+='&L+rE02*>?h&2s'>Y2r*TG2s'bb5r+#)(r+#V5raGh7r*TJ1s'>S.!aAi3rE9/&!*B,"s&K(u
+r_rhps&&_ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XpDJcC<$JcG6>0`Ln>o'l2Co^hV?lg*ft
+io8nRhVR#@f[SBuda?IgccjSSa2Z$8_S<k"]XkS][^PS5s$ZiTs$luXs%!,]r^qZ59MJ5V:Jakb
+;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^k32'olKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)]krqu`no_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc_>PFao%$oTB-7rf@&=p5SU$pP]$0qMYB2r+uCKokaVFrb_[Q
+s)%aQs.T@`!hZ'Tqj[ST!1WnTrgWPKrL<_RqO@GPoU>iNrL4._S!fb7R[I5Y=BPN)!a8f4rETA.
+s'GV1ra>b7qI9A4lt$$(qdTP5s'Yb3s'G_2rEKD.>$Cl-s&]8&rDrqus&Atrs&/korD<Mis%`Jd
+s%NDbr(?r[r^clUrC6]RogJUCpd,#(bP]QrcHjnddaQaug"YBAioB([jQ$7!''/0:kiqBum-a?4
+oCVbNq"t$hJcC<$U]2Y;f#YeD]<nlKZF%!EYH=t0WMubmVPBr^TqJ$LSXc1<S!]V3R/WB]P`q8l
+O,f3XM2@+JMN!G^M#TmB7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd"KSG8=MN!RVOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9F
+bg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<iqu6NlrUg)?
+s-it<~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc^D`92&)VqGHo`r_`SipegNWmns!Cs#B[3q)\O9!]i>%q,mSs
+s&f2%rE0#$!*K5%!*K&"s'"emoiM2srE'/'=BAW&=8uD$=TVc2>Q%h,?2n7/?iFI5@JXI2A*db(
+A,Ba7@K0a5?iOI4?2\"0>?Y5/=oVS(=8c2"<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9W8,YpT
+7J0(E6hit`C27X%D/F0/DfB]9EcZ;EG'\RdJV&RQK11HIL5:\DMi<[WOcu#qQC+,2SY2[PV5UDp
+XKJe4Za@0N]">Vh^r"%0a2uQOdF-Opf@ep8i8`q\kj%O'nauPLqYU3iJcC<$fDcN>P]C;C?X6i=
+=^,$2='8U,=B8K%=8u80<)lms<Dudp<)HRn;cN`p%T65):f(%f:esh_:JaharD<,^s$ZiTs$luX
+s%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VC
+N/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^
+k32'olKmm)mdKW6nac5OoCW%T!quB_rqQNhs8)]krqu`no_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc_etOJ8VYp:pXAs1JBDs186@rj`!;q6g:2r3Z@-qm-.)os4V(
+k)9;"req9>g"=p.f%&:"e'l^krQkDer6>5d!6tGcrlkGgq9K&drQY2ao?I-U#g:B5aiqq0=BPQ*
+s'#G,r`oJ/s'GV1s'Yk8qdTP7rFG,'rFGn;qdTS6s'Ye4s'G_2rETA,!*]>(s&]8&rDrqu!*&nq
+s&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]Rp-e^DpHjH2JcC<$o)CKDq"""Fo_.qInEfK-ki_'d
+hr!AMgY(3/eC2modEg%[b/_K?^r""*^V.7i\$`ZQ\@M(<s$ZiTs$luXs%!,]r^qZ59MJ5V:/=\`
+;H$Ln<E<1'=^#'8?!guJ@Uit]BP;-rD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc_;NFao"$p6#?9rf?r:oo8[(p5As0qhtE1s,6;]rb_[Qrb_UO
+rh0@cU&:PbT:VVNS,SoYS!s>E!1NnVo:#ZJr0mJOrL32Es-a+ZS!mD\=T2J'>5qh+>lS+0?Mn11
+@/j[4@fBm9AE[V'AH$*9@fKm:@/XI4?N4=0>lS".>5_V(=9)G$<rZ/"<;fbq;ZBVm;#a>k:Amod
+9`Ic_9)_E]8GYjT7f5^K7/94E6N54/bmhtFdaZdsf@ep8iSrnZroP!XjPo1[jQ>Xil0I^(md]o@
+p@nCZrVhBJJcDMF2t5;;_S3ReZE^aCZa$^8Xf\V'W2?DeUnXQST:MOCR[]e7R@'>-Q'@GqP)kZ`
+NJiXMMi3INMXZH%7/fXT7fGpX8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$P<<?XR;O@qB7cBPM="
+DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoR
+cHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*<
+s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc^A_92/.X;>!id;>F&c;=79L;=6I;3qc\S=8uD#=o;D$=TDS&
+<rc@b=TMW-n6#Zk"B\`,=BPQ*s'#G,r`oJ/s'GV1s'Yk8qdTP7rFG,'rFGn;qdTS6s'Ye4s'G_2
+rETA,!*]>(s&]8&rDrqu!*&nqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]Rp-e^DpHnmrs(r9b
+E,]f<F)l>DGBnRaItE=PK`6TmKS>/9M2@.LNK0-bPa7Z'R@Kh?TqeH^WiW>+Yd1UC[^iu]]t_A"
+_o9^>bKeM`e(*('gYLcGj5oLhlg=02oCr+YrVhBJJcF@%#KMa?@UEJI=oMS2=]ea-<`iC(<`f9#
++BDHA<*!!t;H-Om<)Q[p;c6Ok;Gp@h;Gg7d:Jah`:K%-foM>KTr^HiVr^ZuZ!(m/^InNI09hnGZ
+:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLK
+UnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X60n*ol<
+ncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc_euOJ8PZq7lsDs1SHF"1u.T\bru;\,*Q5[JmQ1Zg"doZf6rC
+gAfe3f@JO'eC;srdaA$>r6G5brltMgqTJubcMZ#gc2l8:rQYAf!71VhpWW]]rlbSibg">TbKKk,
+!*K2&!a8f4rEKD0?=*S;s'Yh7r*o\9rabe8mq2B,rac"<r*o\7s'Ye4s'>\2rETA,!*]>(s&]8&
+rDrqu!*&nqs&/korD<Mis%`Mer_3>bqb$l[rCHcTrC6]Rp-e^DpHjH2JcC<$o`$WDp@IkFp%J"H
+mHj-(kN:mbi83DJg"=p-daQXld*KqXaiD?;_SO"%^:V"f\@&cRm^W3`s$crWr^ZuZ!(m/^!D?,c
+9mf]3:f(%g;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0
+SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWAi8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-it<~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc_;OFFJk#q2tQ9!0?l7oo8j-qMY60qhtB0rJU#Yrb_XP!,_^Q
+rh9+[!hZ'Tqj[ST"e1sLR@0NCS+E*JS,A`NS,JfRRfJoVRg,=NS=5q9S,JcU=T)A(>$G50>QS2;
+?N"72@/aU4@fKs;AGBa)B)-$;AH$*:@fKm:@/XI4?3":0>lS".>5_V(=9)G$<rZ/"<;fbq;ZBVm
+;#a>k:Amod9`Ic_9)hK]8GYjT7f5^K7/94E64_AdcHabbe^rL.gYUlJj5p7%(?OW:ioK1^kNM3s
+mHsB4oCVbOqYU9kJcC<$U]1eac,IK4\$NBF['d3DXo>C7Wi;qnV5'i[Tq@sJSXc.<R[KTCQ4&q@
+PECrfNJrgRMM_=js,-?&rC$ZSs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]
+B4u$qD/O<4EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0
+a2lEHc-F\`e'ut#f\5*8h;7)KioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc^D`92&(Z;=mcd;>X2i;#jGi;=.3J;?&WD3VPT0=9;W-=oMP'
+=8uD#=o;D$=TDS&=8l=c=o)5#=8l;+='/U,=BAW'<rcA$=TVc2>Q%e.?!^k9?iOO5@JjU7A,^$6
+Aaa7,Ac?6>A,Kg9@K0a6?iOF4?2\%.>6%k*=oVS(=8c2"<<-"s;u]bq;>j>k:]F2g:&[id9D_?]
+8c;3V8,YpT7J9.F6h`nZD/O60E--5GG'.qPH[U?nJqO&U8:uMHKS>,8Ll.+LN/s*bPa7])R[p"A
+TqeH^WN3/)Yd1XD[^`o\]t_A"_o9[<bKeJ_e(*('gYLcEiT'%`lKdj)nF?2HqYc!FJcF@%%CUh%
+@U*,A>$>'4=]ef&=8u8B<)lpt<`E'r;c?Ol<)QUm;c-Ll;c$7f;,L.d:Jah_qbZr]rC$ZSs$luX
+s%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;7)KioB+^
+k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcV_mO.rGYqnN0Fs1SHFs1A<Br4)X5s0hm6s0V[0n$;tuqm-1,
+j,Euk%b]Rig"4j,f%&=#e'lamrQkDer6>5d!6t>`!6tGfrm(GdqTeo]q98l`s2tJdaiaTcs&oD,
+rETA.!+,V2s'Yk8r*o\9rabn;rFYk<qIo_<rFYn;s().>r*o\7s'Yh5s'G_2r`oJ-s'#D)s&]8&
+rDiu"<)ifps&&horD<Mir_EDds%NDbr(?r[r^ciTrC6`SogJUCpHjH2JcC<$pAZlDp$qVDp%RtE
+lKIO"kN:mbhqm;Hg"=m,eC2gmd*9eVaMl-7_SO(']t:ha\$i`S\*pj*7/o^U7f>i+84cBF8kViO
+9heAY:f("e;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.
+S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcV5KFFJh"qN:];rK$Z4q2P91pl#-1qht?/r/1Q6lYQK9rbh_/
+!hc6\pn.\\St5bJrgWtXr0mVSo:#ZJr0mALs-iYNs-s4]R[TY5r`T8)!*fD,s'5V2rEoS4s'bh7
+s'u%=qdo_<q.KP;qIfb=qIT\;s'tt9s'bq8ra5\3s'>V/s',M,r`T8'!*B,"!``3!rDW_o!)`\k
+s%iVhrD!;cr_*/]r^m)[q+(BQrC-BIq*XmC-dL&ae(<:.gu%#KjQ,Fbk2k^cj5K"XjQ5Ofl0I^(
+n+$#Ap%J4XrIP!"s.]N%hoisQ]XP/OZ*^pCY5YL0Xf8:uV50l^TqJ%WSJ[lcS!f\3QBmf$PEV/j
+O,]-WM2@.KMMmA]M#BaA7K5jU7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$q
+Ci402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OB
+Rf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcUAb8PDiTnkoHbr)!Air_ibnlVQtGs#BF,pcACV!*AturE9/&
+s&]5&r)rr"r`K5'rE&o!l<3XZrE&u$s&oD,rETA.!+,V2s'Yk8r*o\9rabn;rFYk<qIo_<rFYn;
+s().>r*o\7s'Yh5s'G_2r`oJ-s'#D)s&]8&rDiu"<)ifps&&horD<Mir_EDds%NDbr(?r[r^ciT
+rC6`SogJUCpHfC.DfBcAGBe=UH$b!hJ:`FQKLpfIJqJ`1LPUhGN/is]PE_>uR@9Y;T:r$VVPpMq
+Xg#(:[C3QS]=kqo_SsO8b0%uUdaQaug"Y<>i8N_Wk32*tmI'N9p%S=^JcC<$g&F)*W-W)b?<pc<
+>$4s1=BAO(='/O)=&i4!<`N*u<E)ms<)Z[n<)QXm;c?Rk;,C.g:esk`:Jah`:]4,_:]3]]7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@
+N/`m[P*D5uR@B_<TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]
+k3(smlKdg(mf2_`nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH;MgNhE5SrP/?G!kl7Zrjr6C\[h^Lq7$C4rjDa4rj2(!r3?1*
+r3PFB!SZ<-gAT\*f@KoN!7_"s!7Cbkr6G5brltMgq9/lacMc)gcMYracMPl_bl>iobg"DVbfe.3
+=^#$6r`oJ/s'G\3s'Yk8rF5e:rabq<rau+Ak\0p-rau(>s()+=raPn9s'Ye4!a]/<r`oJ-s'#D)
+!a&N*rDiu"<)ifp!`DlmrD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-O?1JcC<$qYr>Mq=F1K
+p%J+KlfdQslfdKliSWMKgXk*/f$r0rdEp.]aiMH>_83n$]t:ne\@&cR\@M(<rC$ZSs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90a
+Pa.T&S"-(BTqeE\W2co#YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH;)GF+&Xtq2t]=qN(B2r/LT4p58p0qht<.r/:Q5s(h"<r,)FN
+!MQ7eU&CVaTDG5\T)bGZS,SrXS,SlTS+<$JS,A`CS,\oYS"-#JRg#6`=^#$6r`oJ/s'G\3s'Yk8
+rF5e:rabq<rau+Ak\0p-rau(>s()+=raPn9s'Ye4!a]/<r`oJ-s'#D)!a&N*rDiu"<)ifp!`Dlm
+rD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-K8:eC`R5hr3VUjQ5Ocj5^*t''&'7k32'qm-X93
+nauMJp\OjfJcC<$U]27cb/M*,[Bd'E[C!0?X/`8&WMuelUnaZXT:l1S&=f2YS!]S/QBdYtOH>N_
+N/[ans,-r9Mi$qZrC$ZSs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6u
+DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE\W2co#YHY==[^WfY]Y2(r_SjF6aND]N
+cHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!+s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*<
+s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH:5`84uWQoMYWbs%r_mqbmGklqm%Gs#BC+q)\FUr`Aqu!*T;)
+!*K5%!*K/%r)ir$!*K,"rE/AgpfRPtqcF#'=]np4>Q.n-?2n71?iOO6@Js[8A,^$:Ac?<?BBX%-
+BDuN@AcH<?A,]s;@K0a6?NOP>?2e+/>Q7n+=TV],=8c/$<E)rr;Z]io;>j>k:]F2f:&doe9D_?\
+8cD9W8,YpT7J0(E6hWhSEclVQH@(!dI=?]tqL\a#1kg[?M2R=PO-,TiQ'Rc)S=H1DU84ZbWiE,%
+YHkOB[^`r^^;.V(`Q63FcHjneeCN:+gthtf%H6@0l0@[*nFQ>Hq>C5Cs+14(rs%GLFCS`b?2e"0
+>?P*2r`::E=BAO(<E)t!<E)pt<Dugq;c?Xn;c?Rm;Gp=e;Gg:f:f%'e!DcYl;>F&e:]3]]7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?
+MiEdZP*D5uR%'V;T:r$UVPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]
+k3(smlKdg'mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck0CI#FYpXM;OL^AbhG]E>dW]".dLqR?C2qm6@0n?Vqrqm-+*
+repN0rJU?-s4dJ*rn.A*f@KoNs4%(t!R]9nchu)dc2Pugc2#Q`c2Q#gci25fc2>lcc2,ZabPo]k
+bK\;UbZS+R>Q.k/?!^k:?iOO6@Js[8A,g*;AcHBABDH6.C&2NBBDuNAAcH<@A,Tm:@/s^6?NOP>
+?2e+/>6%k*=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hWits+13$
+s8;mKrV,mUp%J.RnET6"kNV0kio/eOh:pQ6e^`0uda?Cdb/q`D_ns4(^:h.g\@;IG!4hO-rC$ZS
+s$lrWIRm%%8kM`L9MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?+
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8N
+j5f=akNM0qlg4!*s6g?bnac8BoCV_Kp@e7[q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck07BQANPL\[)4OSOt6Nr4n6N:2]$MYrD0N;dV^D#8)KDZ?I/
+U&L_`TDYA^T)kLQr1!\UrL3eUrL<,AqO@MTqO@MRrgNnVrL3ml>$G51>QS2;?N+=3@/j[6@fKs<
+AGg$=B)ZH=B^KO1B`;ZDB)Q<@AH-0<@fKj:@/XF6?<pk9>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94D64)/ngYUlKj5f:]ro+[OioB([jQ5Oel0@U%n*ol<
+o_%tRrIP!"s.fSto$b^t^UX9Lrj42ZXK/A%X/W%pV50l\U7S!JSXc4>R[TY2QBd_uPE:icNK&gQ
+M2I4LN/EM^M#BaA7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<E<.&=]ns6?!^lG@Uiq[B4u!pCi402
+EccGJG^=^bIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/a2lEHc-FY_
+daZh!f@em5h;7&IioB+]k3(smlKdg'mJlV_nF?)?oCMVIp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck/u7n--F:Jpjaq,.#er))lYl;@O?loG),s#U9C=]tZ)rE&ku
+!*T;)!*K2$!*K2&r)ir$!*K%urE/GiqcNl"r`B/%rE'/)>$G51>QS2;?N+=3@/j[6@fKs<AGg$=
+B)ZH=B^KO1B`;ZDB)Q<@AH-0<@fKj:@/XF6?<pk9>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVm;#a>k
+:Amod9`Ic_9)_E]8GYjT7f5^J7/94D63q^XH$amcI=?\FJ38C5JV/T.KS>/9M2I4NO-#NgQ'Rc(
+S"-%BU84ZbWiE,#Y-G:>[CEc[]thJ%`Q-*Dc-Ohee^iC,gt^`bh@/?%k3DC*o_%qOq>1)As+14(
+rtN_;CL^[V>Zk36>$>$1='/O(='&E$<rQ+u<"i81;cQao<)QXn;H-Ol:f(%f;,I6f!`2Zhqbd/c
+rD3A[s$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\
+I=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0
+gtgiEi8WeXjlYail0@U$m-XiA$h3]Wo(2JFp%A%Pp\ssfq>^<hqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck0DHA\DnVn^"G^&l!\]`,PB\c0,:\,*Q4[/dT2Zh:X"Z2:j)
+Zi@E0Mtr>/Mtr;3gATe*g&]m\rn.G,f@JL&rRCkr!R]9nchu)cc2Z&hc2#Q`c2#Z]c2Q#fblc27
+bffq.s3(Dcs31RJ>Q.n-?2n71?NOVD@Js[8A,g*<AcHBABDZBAC&;Z;C]%rGC&;TDBE)TBAcH<@
+A,Tj<@:3LB?iOF4?2e+/>Q7n+=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9DhE]8cD9V8,YpU
+7J0(E6hNcss+13$s8N$QrV-'Zp\=LTn*0#sjltmfiS`SLgtLB2e()ssda?CdbK7fD_SO"%]t1hd
+\@&cR\$te8rC$ZSs$lrW!_>mSr^qQ29MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)L@Us%^BPD6uDJjE5
+F*)SLH$XmfJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjnd
+eCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck07B5r?MK`$u3OSFn7Nr+h6N:2]#MZ&J.N;IDgD#S;KD#A/M
+D?4UJrM':b!MH.cT_kA\T`:VbSXfVIrg`nU!1a%Xn='BHrgN\Q"ItsOS!s8Es-ikT!Er_,>lS+0
+?N+:5?t!LB@fKs<AGp*>B)ZH?B`;`CC@l<>CAhlDB`D`FB)Q<@AH-0<@KKtG@/aO5?3":1>lS%.
+>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic`9)_E]8GPdS7f>dK7/94C63Gcjgu&+jr8ACM
+j5]4]jlY^gl0I^(nF?)@p%J1Wrdk*#s.oZ"kg.8a^::SXrj=8_XfJM&WiN+tV5C)aTqS*NSXc4@
+S!oe5R$Nu$PELufNf/jSMMd=MMMmA\M#BaA7K5jU7fl4Q8cD>092&&S:/=\_;,U=k<E<.%=]np5
+>[CcF@U`kZAnYmoCi4-0EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O
+]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9f
+qY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck/u7n?6F:Jk!a;Ys>h;Ys>Y;!CjS3;bf93qbT53WN:\=oMM(
+='5?$rE'&&r`T;(rE'#$r`T/$r`K5'pfIGsmo]`p=]ec'=T;J#=92T0r`oJ/s'G\3!aoGFrF5e:
+s()(>s(;7Cqe5tCqeGb=r+c1Eqe6"Bs(;4@s().>rF,h:?srt@s'>\2r`oJ-s'#D)!a&N*r`9&!
+s&Atrs&/korD<Mis%`Mer_3>br(?r[r^ciTrC6`SogJUCog8\%:jIA7I=?WpIt3'#K7ei1Knb>;
+M2R=QOHG`kQC!u-S=Q=IUSargWiE/&Yd(OB[^`r^^VIb+`lZEJcdL=ne^rL/gtUW@hV[8Ql0n9=
+qYU9g!W;qJs+14)rtN%sCLURT>?P-7>?Y*1='/L'='&E#<XMi-<E3!t;H$Ro;Z9Yq;@-<";,C+d
+;,C.dr_NVk;#=,c;#O2g7/o^U7f>gY84cDP8pj9*9heAY:f("e;c?[s<``F,>$P<=?XR>PA7]@d
+BkqO&DK'T:FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@
+s-it<~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb*DH\n\uVuFI1^&P_F]DfD=\G`o3[f3Z5ZhC^#Z21d(Zi.9,
+Mti8/Mu/G;g=b05g=tB]gAKV,f[n^)ec+(tdfIkCrm1Vis31PhqTT&dc2#Q`c2#Z\c2Z)ec2Pon
+bKS2RbKS/QbZk'Os'5V2ra5\5!+Gh8s'l%>rFQ"@rb).Bs(VFHk%jp1s(VCEs(D@DrFQ">!+Yt:
+!b#JEra5\3!+#S/s'#J,r`T8's&]2#s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9H
+q*XgAJcC<$Jc@P)qXsXYp\4CPm-*Qmj5o@^i8<>Gg=Y!+dFHaqdaHIeb/hZB_83n#]tCte\$rfA
+\@K*;\G\hq7K,dU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@:EbYAnYmoCMds.EH?5F
+GBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZdt
+f@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb*6BQ8QRK`7,3OSY%9Nr+h6N:;c$MZ&J+N;75hD#%rGD#\>P
+DZ4MNU&UkdU&:S[T)bP`T)kLQqO7JTr1!_Vs-rMHrgWqVqO@JSrgO4_S"#k8S!oe8>Q.n->l\41
+?iOL6@Js[8@fU'<AcHBABDcHCC&Mf/C]/#JC&DZEBE)TBAcH9@A,Tj<@:3LB?iOF4?2e+/>6%k+
+=oVV(=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNbMf@o*>i8<Gki"k>4
+j5f:_k2tjjlg4'.naZ5CpA"L^rdk*#s/#`"hos'R]!o0J[4J\iXfJG$Wi;trV5C&_U7e-MS=H.?
+R[]b5Q^*i#PECofNfB!TM2@.=MMm>[M#BaA7K,dU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O
+\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV-Hi
+qYL-erqu`np&9OBRf@m~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb)u8Ol?H:]=5g;Ya2f;Ys>\;!(XN2uku73r1l83rE+[=oMP!
+=8Z2"=o__(=8c5$=o;D$=TDS!=8l=p=TDS#=oMM0='/R+='/O*=Bkc0s'5V2ra5\5!+Gh8s'l%>
+rFQ"@rb).Bs(VFHk%jp1s(VCEs(D@DrFQ">!+Yt:!b#JEra5\3!+#S/s'#J,r`T8's&]2#s&B%u
+rDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA"*Sm7I/\OhIXciuJqJ`0Knb>;Ll74P
+O-,TiQ'Rf+S=Z@HU8=`cWN3,'YHbC?[CEf\^;.S&`Q63GcdC1je_&R0h:p]?hr<b^m.'iIr;QZm
+qu$ACs+14*rt5(*H>$bl?<^T:>?Y03=&r@%r`0#!rDrks(fOC4;cH^o<)QXn;H$Fh:f:.e:esk`
+85K%Yq,%#crC$ZSr^QlWs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4
+F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjnd
+eC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5OoCW%T!VZ9dp]C9fqY^6ir;HTerdk*<s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\kRp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb*@HAAMrVSE,Erk/9C!4r0?r4)X5s0_p:rjMj7s0Vg4kd(,m
+qm??]r/:9-qhtK5rS%8(s4RJ-rn@D*s4@M.f[n^)ec+(tdfInDrm1Shs31PfqT\cYqp+]Us3(Vh
+bfn8Rrlk@H!aT,=ra,_7@:B.Es'l%>rFQ"@s(D:Drb;CIqJ5tEokjSBqeQ1Gs(VFFs(D@DrFH%@
+@q5LIs'Yn8ra5\3!+#S/s'#J,r`T8'!*B,"!``3!rDNbq;,R9gs%iYir([2bs%E5]r^m)[qFCKR
+r'g9Hq*XjB!'u29JcC?%/GSi3q=jXUnEK0!k2YI\iSWMIgt:3.e'Z^qe'c[kcH=5K`PKC*]tM%g
+\$u@Fm(!!^r^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@
+G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Ln
+f%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb*4B5iBOKDgr3OSk1:Nr4k:Nr4jsMt;o'C]8/GD>nALD>9e)
+UAgkdT`:VaT_=uYSt,VG!1NkUrgWtXn='$>rga"X"IbgLR[X5Fr`fM1?=*V<!aoGFraPn;!+c%>
+s(;:DrFl1Es(_CGqeYqBqeZ.FrbDIIrFl4Ds(;4@!b>eNraPn9!+>e5s'>\2r`oJ-!*]A)s&]8&
+rDiu"<)ifp!`DlmrD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-JgHf\HD]!T;u9it:A7k3(sm
+m-X92nac>Gp\FadJcC<$V>gbQbJM$+[C?.C"gbD5Wi<#tW?\=;V50iZT:_^FS=Q4=S=5h3Q'ISt
+OcYWaNJiXMMMm@MMM^eXrC$WRs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<E<1'=^#'8?=.)K@Us%^
+BPD3sD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4
+aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olg4!*mdKW6nac5OoCW%T!VZ9dq#C0iqYg<jr;HTd
+rdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\kRp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb)s84H0E:Jq!er_`Ykr)*>hqbcu^jAG_4r]0d8q`4[;s'#8$
+!*T;'s&]5$rE&o!!*T;)!*K/#r`B/%rE0&%!*K"tr`Jeqs&f8'rE'2(=BJX+r`K/)!aT,=ra,_7
+@:B.Es'l%>rFQ"@s(D:Drb;CIqJ5tEokjSBqeQ1Gs(VFFs(D@DrFH%@@q5LIs'Yn8ra5\3!+#S/
+s'#J,r`T8'!*B,"!``3!rDNbq;,R9gs%iYir([2bs%E5]r^m)[qFCKRr'g9Hq*XjB9gNrJH[C-f
+I=Hg"K7no3L5(J>M2[FTOHG`lQC"#/SY)RKUSauhX/rG,Z*UgG\@T>d^qdk+`lcKLcdC1if\>3:
+gY(B=iofXto_SRcs8W#srdk*#s5!\^jI(!u?sm8C=^521=9DW-='5E%"BSW*=&o6!#ZF]$;cH^p
+<)NWns&',!:/Xqd:JXe_r_WGgohbTTr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1TB
+?t!MTAS,UiC27[(E,fr@G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a
+^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb*@HAJSsV7s\C]`GdXrjr$<rODd7!4`$;s0hs8s0Md4l*C2m
+qR#sSp5Jp-rS%,$"kqY`g=b0XfE9aVe^aZK!7Uqq!7:_krm(Pgs31AbpWN]`cHc:2rlk,]q98kD
+!F9%2?iOL6@K'a9A,g*=AcHBBBDlNDC&_rFC]8/JD=DHAD>e;KC]A/LC&M`FBE)TCAcH9@A,]s;
+@/s^7?iOF4?2e+/>6%k+=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?]8c;3V8,YpT7J9.E
+6hWhH6%T&es+UJ(rV66aq"OIPlfdKmjl>C[hqd,CgXk$+e'care'c[jcHF>M`PKC*]tCte\Gio;
+\@M%;qaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb*5AT30MK)C`2OSt7;NqeV6N9,ueN;mYnCADZED#.uKDZ">O
+T_>&^TV8'PT_"cVSt,VGs-iqVrg`tWns]3?s.&nSs',S1?N+=3?iXX7@fKs<AH$0?B)cNBB`DfH
+CAVfGD#A/>DZ+GND#A)KCB&#HB`D`FB)ZBAA,p-=@fKj:@/aO5?3":1>lS".>5h\)=9)G$<WZ9#
+<;ohr;ZBVm;#a>k:Amod9`Ic_9)hK]8GYjT7f5^K7/0.C63'=Mg]QBiiSsjs&`i'9kNV9tmI'K6
+o(;YMq>1&@s+13Irt+bLahtm']!o)T['?^5WiE#sW>_Y1V50fXT:_^GS=Q4=S=,b3QBd\uOcYW`
+NW+h8MZScoM>E&%M>K^@7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]D@:E_XAnYjm
+CMds.EH?5FGBnL^I=Hd!K8,/<MN!RVOckuqR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRh,`lQ9F
+bg+P]dF6Urf@\g3gtglGiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFA
+S,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb)t84Q6F:Ae#i;>X2h;>=&d;>!cH;?&TM3;tr63rD#:=o__%
+=9M]-=BAT'<rQ1u=9)M'=o_\!=8l>$=oMP"=8l=o=n5\p>QJ,:ra5\5!+Gk9s'u(>ral+As(D:D
+s(VLJqeQ1Ir,(q@rGDLLr+l=Is(VFFs(D@Dral+?!+Z";s'Yn8ra5\3!+#S/s'#J,r`T8'!*B,"
+!``3!r_rhps&&_ks%iYirD!8bs%E5]s%3/[qFCKRr'g<Ipd=aA90miKH@($gJV&K+KS>,7LP^nH
+NK0*_P*M?"R@9Y;TV8*VW2co"Y->4<['dES]=ktp_o0R:bKS8YdaQe#gtplAgtglLlL4B?rqufq
+rdk*#s5!\id>`'S?X6l?>$>-5=&rF(='/L*<`]3$!*/nq##\B!<)Q[nr_j)#;c$4c;,C(brD3Jl
+nkoB_qaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh9DA/Rp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb'>GDE,jVnTmY]Y(kg])0&7\,a#9\Gio>[C!<IZgG'oZhUp"
+MtW,/MuME/gAfh.f\+p0rRh8+g"HAW"P;5Ue^aZK"OkfIdEqj<s3CYhrQP5bpWW<T!6kGe"3f$7
+bl5lebQ,icbl:rK?N+:5?t!LC@KL%MAH$0?B)cNCB`DfHCA_lHD#S;HDY7rCDZ4MQD#A)KC&huH
+B`D]FB)ZBAA,p-=@fKj:@/aO5?3":1>lS".>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amoe9`@]_
+9)_E]8GPdS7f>dK7/94C63'<&s+13*s"+'@qY9gYoC(r+k2YL]io&_LgtUK5e^W'rdFH[ndEp4_
+aiMH;_8!Xq]=>BM[K<tL\*pj(7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N
+@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s
+_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f@bkNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb'2AT**KK`7,6OSb+<NqSJ4N9H2eN;RGdC]8/LD#eJMD>p4%
+U&UbeTqJ(MT)kORq4%>O!1WtXrL<DIrgNnXqO7JRr0m\TrgWpn!+,Y3!aoGFraGq=A7Y[Ns(;:D
+rb2=Gs(_IIrbVRNphobCphp(Js(qUKs(VOJrFl4D!+u4As'u+>raPn9!+>e5s'>\2r`oJ-!*]A)
+s&]8&r`9&!s&Atrs&/korD<Mis%`Mes%NDbr(?r[r^ciTrC6`SogJUCog/jKg=b9=i8O[p''&*9
+kNV9tm-X92nalJJq"ajeJcC<$VuI7jcc*]4\%/rT['Hm:WiH#s)lKR0VPTu[StDUFS=Z7>S!ob4
+QBd\uOcYW_NW+h8MZScoM>E&%M>K^@7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#=BSg3>[:]D
+@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Urf@\g3gtgiFiSrnYk2tjkl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb&r7nH?I:B"/k;>X2f;>*oa;>O,K;$&X72to<23Vb`83Vut[
+=o)8#<ruK*=8c2"=8Z/#=oMS)=Sl/"<r?#!=T2J&=Sc+u=S>nq=9)G#=9)G%=T;Y,?N+:5?t!LC
+@KL%MAH$0?B)cNCB`DfHCA_lHD#S;HDY7rCDZ4MQD#A)KC&huHB`D]FB)ZBAA,p-=@fKj:@/aO5
+?3":1>lS".>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amoe9`@]_9)_E]8GPdS7f>dK7/94C63]`$
+H$b!kJc:6dK8#&9M2I4MNfT9bPEqN%R@Bb>Tq\?ZVlHf#Yd1XD\%&r[]tV;!`Q$!AbKeJ_e(*+)
+gtpi@h;@2RlgslJrr2p#rqu`mrIP!"s5*c2]Rjp.?<gZ:>$>$3=B/C'=]\X+=&r@'=&`-t<)Zaq
+;c-Il;H$Im;c?Rm:ejh`:Jajd;".?];#<Z\7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#=BSg3
+>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M
+\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtgiFiSrnYk2tjkl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb'=FGQ]`Wk&,Bs1JBCqRQ@1rjMp:[JmN5Zgk?pZhCd*Mu8J.
+Mt`21ecFCTrn7>*s4RA'qUtl#"P;5Ue^aZK"OkfIdF%j;s3:JcrltAb!6tJdn]h'Ws3:Gb!F9%2
+?NFPCraPn;!+c(?s(;:Drb2=Gs(_LJs(q[Oqel@Nmr85DqelFNs(qXLs(_RJrb2=E!+u4As'u+>
+raPn9!+>e5!a]/<r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[r^clUrC6]R
+ogJUCog/XEJcC<$M>o@,p\=IUp$_81k2k[aio/eNgtUQ8f@A@!da6Ikda?@dbK@oG_83mu]Xt\`
+\$i`T\[V%;qaCHQs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@qB4aBPM=!DJsN8
+FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeH^W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHstf
+eCE1'g=k?<hVdAPj5f=akNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb'2@rHdEKoc4pq2YN9pPo33m#1%cs(hLHq.ftHphg#&rLinY
+r1NYR!M5kXS,A]VS"-#GS,/TRS,SlUS,SrNRf]$a?N+:4?t'%Ds'l%>ral+As(D=Es(VLJrG2FL
+rb_OMrGV.DrGVRNs)%dPrG2FJs(VIGs(;=Dral+?!+Z";s'Yn8ra,_5?![G7!aAi3r`K;)=',B%
+s&B%urDNbq;,R9gs%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA!^YMsrSS@Jj5oFdkiqC!mI0Q7
+oCVbNq>:,As+13JrtFA9`PT6s\$`WNYcXt+WMlepWM]Zk(Sm^tSXuFDS=H(;S!ob4Q^*buOcYW`
+NrFq9MZScoM>E&%M>K^@7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!^lH@Uit\B4u$q
+Ci402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt8['mHS]"Gbl_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFA
+S,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb&r7Rp'D:f.-gr)!2dohtW`s%qTMrAO[7s#C$=q`+R8qE"LW
+"'Jf2=o)7u=8c2"=8Z2"=TM]/qcEeur)Wr%=]t`+qH*Yuq-!5i!F9%2?NFPCraPn;!+c(?s(;:D
+rb2=Gs(_LJs(q[Oqel@Nmr85DqelFNs(qXLs(_RJrb2=E!+u4As'u+>raPn9!+>e5!a]/<r`fM/
+>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[r^clUrC6]RogJUCog1f-H@CEqJ:W9(
+KnbA=MMmFQO-#KfPa7Z(R[ftATq\?[VlHi$Yd1XF\@K5a]Y;.t`5]mAc-OeceCWC.h#?%>gu%)P
+lLXiMs8W)sqYL*erdk*#s5<nrqPSUN@:!2B>$5!3=BAO(='/O*<E<."<`N.!r_rhr&5l>&;c-Ik
+<)Z^n;c$4c:f%!cm8<aKs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_XAS5[k
+CM[m,EH6/DGBeF\I=?]uK8#&9MN!OUOHPinQ^O>5StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'B
+bK\>ZdF6Uqf@\g2gtgiFiSrnYjlYajl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s-s%=~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcY!;EJU3XWjKLS]tCth]"7^JqRHR7s0hp7rj27&os=A!"1>MC
+N;eb5MYi>+N;qH.ecOIUf_jG"f_aA$fE9aVf%'`K"OkfIdEqd:!RAsfbl5lbbl5lbbk00ZbQ>u4
+bPo]h?=.&I?t'%D!b5bOrac.CB4q3Ws(MIJrG2FLs)%[OrbqaSl>cfBrbq^Ps)%dPrbMOKs(VIG
+!bZ+Wrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=TV],=8l5%<E)rr;Z]io;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNbG6%T&es,?t5rV66_p@RnBki_'hj5K"ThV6f=g"4g,e'l^jdF-LkcHj\V
+aN237^:V%i\@B#V[^`m9\GJ\o7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uiq[
+B4u$qCi402EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7['mHS]"Gbl_8=.0
+a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFAS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcY!0@W-UCKoQ%mrK$l:qi1Q5mu-:d"-&7uD#S5JCAVfFD#8)I
+TDP;WU&:STT)kOSq4%;Ns-j"Yq4%;NrL3eUrgWnWr0n(_S!oh8RU0?.?smFB@KL%MAH$-AAnPcU
+B`DcHCAhrJD#\AMDZ4SQE9_HBE;jeRDZ=SRD#S5MCB&#IBEDgYB)Z?HA7K+Y@UW\Qra,_5?![G7
+!aAi3r`K;)=',B%!``3!rDNbq;,R9gs%iYirD!8bs%E5]r^m)[qFCKRr'g9Hq*XgA)*ua(gtpuK
+jQ5Ofl0@U$mdK]:o_/%SqY^;Cs+13Krt=#-_S3Rm[C!9FY,nY&WMleoVZ*CrUnaTUSXuDNSH#&d
+R[KP0Q'7DpNfT3\reg`6!fDnnqM=j%qaCHQs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:
+?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2co#YHY=>[^WfY
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;QZerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcXup7Rp*E:Jh!erD<8doMYB[!)V]QrAOj;2`E]Up,W%3!*K5'
+rEB/&qH3YsrDrkur`K)$qcE_sr`B,%!*T;'qH*Yur)r_q!`rK*r`B>1?XI2K@K'^;@q9-LAHHIV
+BDuTEB`MoHC]A5ND>\;NDuFY?EW0qVDu=MQD?"GOC]A/LC&VcIB4bcTAHuaU@q&nU@:9(A!a]/<
+r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Mer_3>bqb$iZr^clUrC6]RogJUCog1`+H$b!i
+JV/Z2LPUhFMi<[WOckrpQ^F52S=cLLUSXleX/rM/ZaRBS]"G_j^VRh+aNMfQd*^:kf@\gVgCW)o
+hW*hfpA=mirquTcq"jl=s+14.rtOO^EarH]>Zt95>$+j-<`N:'<*!#t<Z"h9<)Z^p;c6Ii;c?Ij
+;H-On;H$Cf:Jajb:]XEkmnrsMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC@:E_W
+AS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^O>5StMdPUo1/kX0&S0ZF%'L\[oGf^VRe*
+`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-s%=~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+E/:$UW3O+N]tCtg](NW4\-BFN[^ENM[/RE*ZM1]oZiH$`
+N;nh5MYrD.N;qE-ec+/"f_sM"f_aA$fE9aVf%'`Ks3h(udEp8<cN2>9qoo&arQP;dqon]WqTStH
+s'Ph8raGn<AH$0?AcQKCB`DcHCAhrJC]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huI
+B`D]FB)Z?HA7K+Y@UW\Qra,_5?![G7!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNbG6%T&es,R+7r:g*]o^M;5kN:mdiSi_OgtUT;f[eX(daHLgd*^=icHaVU
+aN)38^V.:l\[],W\%'!:\,\no7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<`iL->?kH??XR>Q
+A7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DEo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+@W?^CKo>kjr/^f:r/LQ3s,6f6qMX<k!,MRMs(hLHr+l7I
+rGDS+r1EhYqP!h[o:H)USXfPGqjRPS!1`kSrL35FrgNjos'Ph8raGn<AH$0?AcQKCB`DcHCAhrJ
+C]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huIB`D]FB)Z?HA7K+Y@UW\Qra,_5?![G7
+!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hNb^6/12OiT0+_
+kNV9tm-X61o(2PJq"agbJcC<$WW+"1eB#J?\@T&QYck.0Wi;trW2HJfUnsl^Tq@mHS,JlVS,\ie
+Q^*buP)kZaNJi[OMi<OOMY`/&M#]p@7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<`iL->?kH?
+?XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_
+]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DEo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eog&0@o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+77KmA:Jasf;#jGg;>sJn;ts8b;>sDO;#iQS3<(o;2Z>W;
+3&s#\pc8@8s&oA(r`T5(r`T&!r)`htr)`o#r)j#%r)`esr`B,%"Bei/='#3"s&f;(mo]Tss'Ph8
+raGn<AH$0?AcQKCB`DcHCAhrJC]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huIB`D]F
+B)Z?HA7K+Y@UW\Qra,_5?![G7!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W
+8,YpT7J0(E6hNbG62lE<K8,,9L]3/tMi<[XP*;/sR$jG5StD^OUnsugXKJe5[^WcX]=kqo_8F43
+b0/&Ud*gCof\5*8gYCWBj65t*r;Q`qr;$*\q"jr?s+14/rrpf1De!*Yr`TD,=BJZ(<<-,"<WZ?'
+<W6&!<#&>0;c6Oj;,^@g;GpIl;c6Lj:JXe_r_N\o:f1-Z;#iu]7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@H
+USOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXT
+o()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+Dhs^NWNNtKrk&0@pUU=6s0r$:s0_d3rNlC,r3PRns,-l9
+rf$u<Mi7LjqhtE3!R]BqeGn(uf)OA#g%s@ug&BV+f@JO'rRChq!n,HBr6GDhc25`_c1fHSc2Poo
+bKO=$@:<VS@q0'KAHug[B4tsmBkmT^!c2^jrGMXRs)@jTrc7pXoQ:"PrGqgUs)A!VrGMXP!,VXM
+s(VOJrb2=E!+u4A#@q=S@U`bS@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8b
+s%E8^r^m&ZqFCKRr'g<Ipd=aAs$;59JcCi3(Adq'naPu6kiCjcio/nRgtUT;g"4g*rmDY1cd:(g
+d*BnZb/hWA_S<dr]=PM][^WcWm^N6ar'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W:)=^,-:
+?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW
+]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+@;pI>Ko,biqiCZ8qi13+rJTZos,6klrbVRLr+c+ErG;M(
+!hGpSr1EeXqk<q\o:H,VSXl;JS,8ZSS,SrRS,\rKS,Jc]?XR;N@U`hWAH$-FAnPaiBPD0qrG)IN
+D/K5hs)7pVqf2UUr,_LPr,_gWr,MaUs)7jRs(qaPrbMOK!,;FGs(;=Drac=F@q/tW@:<RC?O'nC
+?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]Rp-e[Cp-SdF(#e36
+jlYailKdd'mdTc<p%J1Uqtp;Bs+13Mru((I`kf6u[B[!?Y,eV'WMlbnV50raUSFNVrgs.[(nI.d
+S=5q7R$X)&P`h)gNf8pSM2R=MMi.@fp5/i;r'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W:)
+=^,-:?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<
+[C3WW]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[
+q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+7RfpA:/CO[r_iYmq,7#crD;HMr]'m;r]'p:!]W2#r]9m9
+r)s#$rE0,(r`K8(=8Q+t=8c1t<rcA!=TDS&=8Z+u=8uD%=TDP&<rH+g=:/,3?XR;N@U`hWAH$-F
+AnPaiBPD0qrG)IND/K5hs)7pVqf2UUr,_LPr,_gWr,MaUs)7jRs(qaPrbMOK!,;FGs(;=Drac=F
+@q/tW@:<RC?O'nC?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]R
+p-e[Cp-SdF97qqPL5(J?MMd=NNKB9dQ'Rf)R[]e;TV8-WVl6YuYHbIC\@K5b]t_D$`5]m@bKeMa
+eCE1(g=tH?i8Ne^n+ZbZs8W&oq"FFWr.4m!s5Eth\qFa,>[1K9>$4s1<`E("<;oo=<E<1%<`E$s
+;H$Ll;c6Ll:f("e<)QUm;Gg4c:f%'e!`;ckmSX$Pr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo
+<`W:)=^,-:?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"
+Y->4<[C3WW]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\
+p@e7[q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wc*]XT;f$-]Y+6Us18$:s1&';s0hj5!4;L,ijA`nr/1Q6
+rf-r:oSWgrcI(,>e,\%uf)O>%f`'S#f_aA$f`0P(f%'ZI"OkfHd*MU7m*,+Hs3(qqb[Fph@UiqZ
+AS#IcBDuQGBkhD^CBA<hD>nGQDuXeSEW:(YF7s_PFn^"WF8p:YE<:)tDuFPTD/=%fCBnTgBkV0m
+B4h-S#@q=S@U`bS@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[
+qFCKRr'g9Hq*XgAs$;59JcCo51\pt<n*fZ,kN1a_inrYLgY1?6f@JO&e'c[kc-XhdccsbYaiVTA
+_8![p]=PM][^N]V\*pg,6i9@O7K5jV8,l*[8cD>092&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZ
+AnYmoCi+'/EH?5FGBnL^IXm!%KSG8=Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".
+`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10WaKdhIY<RWOSk17Nr+h0N;\[qN;SV2C]&#BC]A2TR[]h;
+SXuGNTD5)WU&:STT*([USXfSHqjRPSrg`8CrL3aps'c4CA7T7_AnG]TBEDm_CAquMCi+%gDZ=YT
+E;X_UErL.RFS^.SFT-@]Er9nYE,T[nD?=ZkD#S2TC2%BqBP1sirac=F@q/tW@:<RC?NFJ=r`oJ-
+!*]A)!a&N*r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[r^clUrC6]RogJUCog8[Es5amVkiqBu
+m-X60nac>GpA"I[r;D3HJcDeN'B7<V^q%+_YHY11X/`.tWMl\kV#I.hTcKbsSt2C@S=?"<R[KP1
+QBm`!P)kZaN/`^OMi3INq2+g&!(6ZPr^HiVr^ZuZ!(m/^HqR.-9hnJ\:f1+h;cHdu='8[0>[1TB
+?t*SUAS,UiCM[j*E,fr@G'A4XI"$TsK7nu7M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d
+^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-e
+rqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10W^TBJ9287T;#jMl;ta,?;>W?N3W:u<3W(r:3<31Y=o;D!
+=TDS'=8c8!=8c1t<rcA!=TDS&=8Z+u=8uD%=TDS%<rZ7j=:J>6@:<VS@q9+]AS,Oerb)@IC23``
+!c2^jrbhaSs)@mUs)S*[p2p.RpN6CUs)S$W!cW'rrGD[RCi')d#ARseBP;$kB)Z?HA7K+Y@UW\Q
+ra,\4?2e+/>6%k+=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNeG
+5tZicLPUeEMMmFQNffKhQC!u+R@B_=Tq\?[VlHl&ZF%'K\@T;d^VRe*`Q-*Dc-Oece^i@*gu%)N
+jlc""pA=des8Mrmq"X^_rdk*#s5O%cWHr2a?<pc<=BJ`*<=i22<)lt"<E3"!<E)pr;H$Nn;@u`(
+:f(%f;c?Rm;,L+b;,C(br_WVlmns-Qr'^NQs$luXs%!,]r^qQ29MJ5V:Jakb;H$Ln<`W:)=^#'8
+?=.)L@Us%^BPD6uD/O<4F*)SLH$XjeJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wc*ZTTW#-o]`5SD])&u;\Giu6[K<kD[/%&f[/IE4N;SS6
+N;eh9N;\\4N;h$'c-F\arR:htrmq,$!8.;(qUk\urn.8&!S5fte-".Hd*M[9rQXcSoZdE[%q/pV
+@q9+]AS,RfBP;*oCAquMCi+%gDZ=YTE;aeVErU4XFSp:PG5QL\FT-@]ErBtZE,T[oDZ=PRD#S2T
+C2%BqBP1sirac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/korD<Mis%`Mer_3>b
+qb$iZr^clUrC6]RogJRBp-SdFJcC<$Q2`*-qYKXImHj#sjPo+UiSN>Cg"G$0f%&6tdEp+_d*g=e
+bKS-.a:6)(^V.7k]"#5X[^`lWn@8KcqaCHQs$luXs%!,]r^qQ29MJ5V:/=\`;H$Ln<E<1'=^#'8
+?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10WaKagIY<RVOT1C9Nq\P1N;\[qN;SV6MZ7MiC\qrHC]&#I
+RK]1NS=Q7Cr1EbWrh91]o:H,VSXl;HS,JfUS,SrCS,\of@:E\UA7T7_AnPaiBPD0qrbDROD/K8i
+s)7pVrGhjXs)\'Zr,qRRr,qpZrcA*[rG_mXDf>Vms(qaPrbDaRBk_6oB4kiUAH?=OraH+@?sm>K
+?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/0.C6N9=b
+kiqBtlg4$,n*oo>p%J.TqYU3iJcC<$XT&mcb/1m(\?E'=XfSS(WMlbnV>d7jUAgkdT)Y>]SG\ii
+R[BJ/Q'RVtP)kZaN/`^OMMm@Mq2+j's$QZOs$crWr^ZuZ!(m/^HqR.-9hnGZ:f1+h;cHat='/U/
+>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH
+\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60nF?MK#4qK[p%J+RrV-Hi
+qYL-erqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10W^T?I8kr.T;?'Pn;ta,=;?&]S3;>N23rN1X=o;D!=TDS&
+=8l>"=8Z+t<rcA!=TDS&=8Z+u=8uD%=TMW+rDrr"n5p30@U`hXA7]=aB4kmkBk_>]CBA<hD>nGQ
+DuXeTEW:(ZF8L(WFn0_RFo6@\F8p:ZE<:)tDuOYSD#eDOCBnTgBkV0mB4h-S!G#^>@L$=L?sd8I
+?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=aAs$8l)
+M2I1KN/`gXOHPfmQC!u,R[ftBU84ZaWN<8-ZF.-N\\#Ph^r"%/a2uNKcHt"ge^iC,h;@5SlKn!2
+q"t!grWW5rqY9scJcC<$j8U(_RWN(G>[1H8=BSd-<E3(";cd""<E<+#<E)rs;\`2,;Gg=j;,L.f
+;H$Il;,L+b;,C(br_WVln5B9RqaCHQs$luXs%!,]r^qQ29MJ5V:/=\`;H$Ln<E<1'=^#'8?=.)K
+@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]Y2(q
+_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6Kk
+rVcEgJcD5>J,~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/WbmHPU8Y9o]E,XUqmla:rjV^3s0Vj6qQo4hqR-9\qhkH5
+r/LQ3s31Md"O,-9d*hpB#Lq;Sf%/I)f`'S#f_X;$f`0P(f%'WH"4PZEchu)fc0igJc2V5R@q>RM
+!G6!DBE;g^rbMOM!,_^Qs).mVrGhjXs)\*[rcS3`m!&DOrcS0]s)\3\rc.sWs)7mS!GuZPC]A,L
+C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNeG6%T&es-NaBqt]jNmHj&ujQ#7Yhqm2EgY(62f%/@"da?Ccc-Xhbbfe5Q
+aN)?>_8![q]=PM]\$icV\+$p-6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dp]C9fqY^6i
+r;HTerdk*=s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/WaB[fIY<OUO8t@9NqA=gN;JP4M?&M3D#.rHD#\AKD#]t'
+R0K+LS=H.AT)>5KT_G)VT)Y>]SG8TQRfAlVSF`6KRf&ZT@KBtLrac+BBDuQFBkmW_s(h[PrbhaS
+!-%mVs)S-\r,hp\rc[XPrHA0_rH/'\s)S*Ys)A!Vrb_aRD#S5MC&huIBE;aXrac+@A,]pB@:3JM
+?X@&Er`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N9=`
+l0I[%mI'H4nalGIp\=U^r;D3HJcDkP+SF7*^q7.aY-"h,XK&;!Vl$;dV50l\U7e-NSt)@@S=9GH
+rg==aQBdYtOcPQ`N/`^OM2R7Lq2+j's$QZOs$crWr^ZuZ!(m/^!D?,c9mf]3:f(%g;cHat='/U/
+>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+,1SXuOLUnsugWiWA-Z*UjH
+\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<o(2MQo`=d\rV-Hi
+qYL-erqu`np&9OBS,\!~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/W^]KL8kr+T;=[W6;#jGk3WM2;3;tr53X&Yg='&L+qcWi!
+qcNo$qc<c"qcE_srDru$qH3f#r)`kurE'#$s&oA(!*B,"s&\bns'c"=AH$-@AnV*V!GQ<JC]A2N
+D>nGQDZFbTEW:(ZF8U.ZFoHRNGPu^aFo?F^F8p:[EW:"XDuOVTD/B2es(VOJrb)=FB)Z?BA7PUJ
+#@V"J?XI,G?2e(0>?_#/s&]8&rDiu"<)iiqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]RogJUC
+og8[E7u<._N/`jYOHPfmQ'Rf*R[fq?TqeH^W2cu'Z*UjI\\#Mf^r"(0`lQ<Gc-OeceCN:*gYLfJ
+k3;4#oCr+ZrVlfpqtg0drIP!"s5a1ldZA?U?!CK7=BSa.;cct!;cN]rs&B&"rDN_p;u9Jm;#jGl
+;[u](;,C%a;,C(b:Jakb;=IK`6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dp]C9fqY^6i
+r;HTerdk*=s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7](Xp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WGI3HV5LB,]XteeqRQO5qmQO4r3ZI0jL"fls0Vd5s,6T0
+r/LZ6qo],dc-F\armM,%e^`7%f@S[Qg&'G"g&BY(f)aIQqU>VrdEp59cMbudbOj$PblV?aAH$-@
+AnV*V!GQ<JCB86grbhaS!-%mV!ci@'rH/$]s*"6_ms+\Qs*"BarcJ0]s)S*Ys)7sVrb_sXCi!m&
+C2.J^BE;aXrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVn;#a>j:Amoe9`@]_
+9)_E]8GPdS7f>dK7/0.B6N9?&s+13<rtYA/md9B+l/^pbiS`PLgtUT;f[n^)rmDM,c-FY^cHaVU
+bfRrH`P]O,^:ChcrjMs;\%1t;s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@
+?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a
+^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7\tUp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WEsC^J:`Q<OSk16NqSIlN;JP4MYr>-C\_fGD>e;NRf&QX
+R[]h;SXuGNTCJTKTD>)YSH,2RRfJoVS,]#LS,SlURf[&/AH$-@AnV*V!GQ<JCB86grbhaS!-%mV
+!ci@'rH/$]s*"6_ms+\Qs*"BarcJ0]s)S*Ys)7sVrb_sXCi!m&C2.J^BE;aXrac+@A,]p<@:9(A
+#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVn;#a>j:Amoe9`@]_9)_E]8GPdS7f>dK7/0.B6N9=^
+lg4$,n*ol<o_%tRqYU0fJcC<$XoBC+cc3i5]rnK?XK/D%WMcYkUSXc^U8"?RSt2FBrgOLgS!oe6
+R$X,*Q'7AmO-#?[N;eY9Mi*FMqMFs(s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/
+>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG
+\@K5a^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jme
+q>^<iqu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7\nSp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WC9<I9MJ:V;=mc9;>sDl:]!3J3Vkc==^"s1r`9)%qcWi!
+qcO&(='&F'pK.>pr)`_t!*K)!"BJT+=BGB%!*B,"s&\hp!b,YMrac+BBDuQFBkmW_!GlWPDZ=VT
+E;abXEcZ=#FT-F_G5?FOGkuXaG5cX`FT6F^ErL(YDuahUD?k#pChmg$C2*Z\!G?$DAH?=OraGn:
+@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&bls%iVhrD!;cr_*/]r^m)[q+(BQrC-BIpd=^@
+s$?[D5`LebOHG]jQBml+S"#q>TVJ<[W2co%Z*UjI\@T;c^V[q.`Q-*Dbg+S`e(3.(gYC]GjQGdn
+mdg)Jqu-Nnr;?Qk!<.QLJcFj3+2!8@@U32B='8[-=B/C&<)cds<`N1"<E2ss;H$Il;>sGt;c6Cg
+:Jt-j;?]oo:esqbr_NPj!)`2_s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@
+?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a
+^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZh8,)`Np%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WG@'DVPgB)]DfD>\c0,:\,Ni7[JR?2[H=jo[JdK2[Jc$Z
+N;8G5N;1R,bg"G[dF-LmeCE+#f%8O+qq:o"s4R8$"4u,Sebdhue'ZOgqTf,cr6+`Vprs@[A7]=a
+AnPdjBkhBuCM[g(rb_aTE;jkWErU4[FT6L_G5QR`Gl;pZHMi'fGl2dcG5l^aFT6F^ErL%ZE,Y_n
+s(qpUCMR["C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=TV],=8l8#<<-"s;u]_q;>j>k:]F2f
+:&dod9DhE]8cD9W8,YpT7J0(E6hNeF6%T&es-s$+qY9LFlfmTnj5T"Thqm,Ag"G$0f$i'rd*M^:
+&C8YGbK@rJa2l6;_8!^q]".gLs0_p<n$rBbqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+
+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DTqnN_WN*&%Yd(OA
+[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WEsC]ItECPO7\J.NT,ooMuS\3M>rJ-C\_fHD#nIApmM/O
+s-s.]St>kPoq;&Op7D8S!1`8Bs-ieR&t5;"A7]=aAnPdjBkhBuCM[g(rb_aTE;jkWErU4[FT6L_
+G5QR`Gl;pZHMi'fGl2dcG5l^aFT6F^ErL%ZE,Y_ns(qpUCMR["C&VcHB4h-S!G#^>@KBnFra,n:
+?!U]?>?b;1=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNeF5n<;M
+n*ol<oC_hPq>1!drdk*#s/uAViQfBV]",#HYH+e*WMlenVPU)aUS4EST:VUDS=?":S!f_5R?s5)
+QBm_tOH5H_N/[am",i%pMY`2(MZ6'@7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@
+?X[DRAS,RgC27[(DfKf>Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsugWiW>,Z*UgG\@K5a
+^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WC9<I92/1\;Z'Da;UnYD;#F,b3qkZ63r<%[=T2A%=Sl8!
+=Sl5&=BAT'<q]Sp<r?%q=TDS"=8,hr=8u;$=7oZ,@q9.^AnG[hBPD3rCMRa&D>nDRDfG\qs)S-\
+rcJ0_rc\3`rcnBeo6U=[rcn?bs*"EbrcJ0]s)S*Y!H;uVDZ=PWChmg$C2*Z\!G?$DAH?=OraGn:
+@/aL<?<piA>[(E9r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA
+r]ru4NfT9aP*;/tR$jD4S=ZCIUSXidWiWD/ZaI<R]=kqo_SjF6aihlQd*gCof\5-:hVdGUkNVC&
+o(MnTrVulsrVQHirdk*#s5s=gWHi,a>?k?6=]ef)<XMi+<``:%<)lpt<;ohq;@uc(;c6Ih:f1+h
+<)QUk:f'qbrD3Gi!)`2_s$QZOs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMdQV5L;mXKA_3Za@0N\\#Mg^VRe+
+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WG@$DW2?Kl]DB&<\G<T6[e[<2[/@?'ZiIN0[/79.[/IE/
+Mtr>3NW"h9b5TT`b5TQpbg"G[dF-IleCE+#f@\^-q:YJos478%rmgqr"4PZEchbreblGudbP'0T
+bm@olAS,RfBP;*prbDOND>nDSDfB[pE<:0%F8g:]FoQX`GQ2peH2)^\Hh_pdH2i-fGQ2jdFoHL_
+Er^7[E>rk8Df0H0D/=!'C2.HrBP1siAS#C_@q&nU@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr
+;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N09%s+13As"=3HoBkr1jlGL_iS`SLgtUT;
+f[na+daHOgccs\[cHXMSbK.`D`Pf^2^:h+f\c0)<[K*l,\Gnqn7/o^U7f>i+84cBF8kViO9heAY
+:f("e;cHat='/U/>?kH@?X[DRAS#LfC27[(DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJ
+UnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4N
+o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WEj:]J:N=NO7SD0NTlB%NVe\4MuJV1M>iD*C\V`?R0]1J
+S"-%>SXuGNTD>/OTD"lUSH,2GS,SlORgEV:AS,RfBP;*prbDOND>nDSDfB[pE<:0%F8g:]FoQX`
+GQ2peH2)^\Hh_pdH2i-fGQ2jdFoHL_Er^7[E>rk8Df0H0D/=!'C2.HrBP1siAS#C_@q&nU@:9(A
+!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N07Z
+n*ol<oC_hOq"jmcrdk*#s/uA*fuqCJ\[2:<"feZ(WMcZnV>m=tUS=HRT:VUDR[j>F&"/fPQ^=#'
+PEV,jNfK*XMuJP8Mi*FMqMFs(s$QZOs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D
+@:E_XAS5[kCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WC09J9MA1Y;Z9Pe;UnYD;#3ud48M#53<D6D=Su>%=T2A%
+=Sl8!=Sl5&=BAT%<q9>g=TDS"=8,ho=8,f'A7]=aB4kmkBkmW_!GlWPD?=`qE;jhYEcZ=$FT6L`
+G5ZXbGlE!`HMDj^HN&3iGl;jdG5l^aFT6C^ErL%tE,TZ4DJa6,CMR["BkV0mB4b^dA7T1Z@UW\Q
+ra,\4?2e(1>?Y50=TV],=8l5%<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hNeF
+5sp]pOckonQC+)/S"-%BTq\?ZVlHi#YHkOE\\#Je^qmq-`lQ?IcHt"fe^rL/h;@/MjQ>[lmdK`?
+q>:-hrr2loqu20HJcFp5#3hV"A7/SEr`T8&*`c?C<E)mt<`N1!<EE.!;GpFm;Gg:h;c6Fi;,^Ck
+rDESks&&_js%i\mmo'0QqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB4a
+BPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF6
+aND]NcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh7ecWMp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WG6m@WMZW,rOVs<s1%s8qmQ:-pU'k+q6^(-q6^(-!0$`3
+!0$i8s,?r:!6b&X%Elu?cHstedaQ^re^rFPf_jFofDsP&f)=.ue-"1Id*MR6s3:Pes3(,[qT]%O
+#%hL\BP;*prbD^SD/O60DfG\q!ci@'rcA3aG'<h.s*4Qhqg/3fnU1:^qg/9fs*4Nes*"EbrcBH-
+EcQ/>E,]`5DJa6,CMR["BkV0mB4b^dA7K+Y@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"<)iiqs&/ko
+rD<Mis%`Mes%NDbr(?r[rCHcTrC6]RogJUCog8XDJcC<$T`6P<rUB1@l/q'eio/eNh:p]<g=Y$-
+daHUkccsb\ccs\VaiMNBa2Q$7^qI>Y\c9,A[^W`V\+$p-6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-W
+Vl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh7ecWMp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WEa4ZJUrK9r/^Q3qi0ZqqhtK3q2,$,!,V7Bs(haRCi&j6
+rKmYSS"0JKs.9.\rLiVOp7D8S!1`MIqO78Ms()CHB4kmkBkmW_#&J-oDJsH4rc&![F*%>&!d/[0
+rHJ9ds*=KfrHn'^rHnEfs*=WhrceBcs)n<_-$+*IEH,r:Df0H0D/=!'C2.HrBP1siAS#C^@q&nU
+@:3GL?=$q:>R+J:>$5!1=BGH%!``3!r_rhps&&_ks%iYirD!;cr_*/]r^m&ZqFCKRr'g9Hq*XgA
+r]pn]o(2MHp\=U^r;M9IJcDqR&,+Mn_n!@`Y-+n-X/W(rVZ!;9US=HTT:MLCS=5k7S"#k8R$X/*
+Q'IPrOcYT`NJi[OM2R=MMtr5(MZ6'@7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSXleWiW>+Yd:^F\%0)_
+^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WC06H92/.M;V"_E;"mc^48V);3W;)=>5DD%=T2A%=Sl8!
+=Sl5&=BAT%<q]Sp=T2Cu=TDS"=7o\q<rlE)q,mZ.#%hL\BP;*prbD^SD/O60DfG\q!ci@'rcA3a
+G'<h.s*4Qhqg/3fnU1:^qg/9fs*4Nes*"EbrcBH-EcQ/>E,]`5DJa6,CMR["BkV0mB4b^dA7K+Y
+@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"<)iiqs&/korD<Mis%`Mes%NDbr(?r[rCHcTrC6]RogJUC
+og8XD6BRFpPa7Z(R[]h<T:hpRV5L8kX0/_6\%0)^]tM4t_o9^>bK\A\e'ut$g>(QCiT'%_l0I^)
+nb2bTqu6WorVZWmJcC<$kl2@GNc&?5>$G*3=BAR(<`N*s;H?gurDX5);GpFk;G^4g<)c[j;>sGu
+;c-Fj:Jancr_Nbq:f1%d;=IK`6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH
+@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt8['mHS]"Gbl
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi;DnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W+pX7WM-E*]=PTP\bru;\+d?/[J7-+[J@3-[J@3,[/mXm
+p5B!2qMbHtoZ@Tcbg"G[dF$FleCE+$rRh/'q:G]!q:G]!rRUturmV&!da6>=cMu2lcHXW5bl5f[
+bl#^$AS,RfBP;*pCMRa'D/O60E,]f:EcZ=$F96T.G5c^cGlN'fHN&9jI-Z4ZI/eQlHN/9jGlDpe
+FoZ[aFT6D!EcH)<E,TW3D/F*)CMITuBP;$jAn>OaA,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ/"
+<;fbq;?0Sm;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/94C6N09%s+13Es8VpNmd0<&jl>F]iSWPI
+gY1?6f@\X&daHLgc-+DXc-+8Oa2Z*;`5TR-]t1_a\@B#V[^is<\G\em7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%(MO-#NhQ'[l-
+S=ZCIUSOfdWiN8*Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi/@nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W*F%UIXm1KO8k7>O8k77NTc?!MuJV0M>E,)D#%lGD#0P"
+R/NHOQj9%KS=Q4BT:YtQ!2/\Np7D;Ts.'%W!1`eQpR;#L(1h)jB4tsmC27U$D/F0.DfBZ8EH6,A
+rcA3aG'<k/s*4QhrHeHird=$[rI"WlrHeKhs*4Nes)nBbrcJ0](ijV9E,]`5DJa6,CMR["BkV0m
+AnGUcA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[r^ciT
+rC6]RogJUCog8XD#kR]]p\=R]qu)*GJcDqR)=>hj^q7(ZXfe_*Wi)eoV5C&`UnaWVSt;MOS-GIO
+R@0M3R/WB[Q'7AoOH5H_N/NRNM>`A.M>2u,6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<E<.&
+=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?N/`m[P*D5uR%'V;TV8-VVl6VrXfnt7
+['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J.S
+rqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi/@nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W'j*E8kW"Z;Z0Jh;V"_E;"m`e:f0=P4T7G=3rM)8>5VP'
+=T2A%=T2J'=o__'=Sl5&=BAT%<q]Vo=92K*qcNo$rE'#$s&\Mg(1h)jB4tsmC27U$D/F0.DfBZ8
+EH6,ArcA3aG'<k/s*4QhrHeHird=$[rI"WlrHeKhs*4Nes)nBbrcJ0](ijV9E,]`5DJa6,CMR["
+BkV0mAnGUcA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[
+r^ciTrC6]RogJUCog8XD6'IOuQ^F21S"-(CTq\?ZVl?`!Yd1[H\\#Gb]t_D%a2uNKcHt"ge^rL/
+h;@2OjQ>[lm-X95p%S=]rr<#trr)hIs+147s!GL8Bjk@Q>$+j.='&F(<E2ss<E3!u<)Zap;c6Ol
+;c6Ii;c?Ok;>sGp;,U<k:]OAk:]sWk:f1*Z;Z/u\7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s
+<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%(MO-#NhQ'[l-S=ZCIUSOfdWiN8*
+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@mgJXTo()DEo_%nN
+p\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W+gI5WM$?k])0&;\Gs&2[K*`1[/@?-[/79,[/@?1[/Q!Q
+N:=t"bKS5Vd*^7ieC<%!f@\dCfE'UTqpk\q"4P]Gd/D8hci;8hbl5f^bQ?&5bl5ifAnV*V"_h^e
+CM[keD?4Zprc%sZF8g7_F`qs-G63#7H2W'hHiJKiIJeQhJ,=]lIK+]pHi86lH$FT5G6`;6F`__H
+F)q8"%rcH)DJa6,CMR[!BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`Dlm
+rD<Mis%`Jds%NDbr(?r[r^clUr'pWRogJRBp-S^DJcC<$V>iFNqt0:BlK.*fio/kQhV?l>g"P'.
+eC)gmd*L"^cHXPTaiMNB`l,j8^V.4h\@K,W\$rfU\F@!+6i9@P7K5jU8,l*[8cD>392&&S:/=\_
+;,U=k<E<.%=]ns6?!^lG@U`kZB4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR%'V;T:r$U
+VPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg(mdKW6nac8B
+s7H?as7QHerqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W*<kPIX[%DO8k75NU2W%MuJV0M>2r.C\DTBC]8/JRJ`HN
+RJiKVR@B_;SY"o7p7D8S!1`_OpR2/QR[X5F!G6!DBE`*bCMRa'rb_aTE;jhXEc_5%!d/[0rc\Eg
+H$T@7s*OcnqL/9jpj`0iqgJKls*O]j!dT$8rc\TjF`heJF)uC$E=[#,DJj<.Chmg$Bk_6oB4h-S
+!G#^>@KBnFra,\4?2e+/>6%k+=TV],=8l8#<<-"s;Z]io;>j>k:]F2f:&dod9DhE]8cD9W8,PjT
+7J0(D6hWkF5mI#Up\F[_r.4m!s0)G4hos$O]!JQBXK&A%W2HNlV$s/pTq\3QT:MOBR[]fGRMM<Y
+R$X,(P`q8mOH,?\N/NRMM2[@MMXZK$6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<E<.%=]ns6
+?!^lG@U`kZB4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR%'V;T:r$UVPpMqXfnt7ZaR?R
+]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg(mdKW6nac8Bs7H?as7QHerqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W('9I8P;nZ;Ys>g;V4kH;"d]`;?&ZW48V,?48Cr;3VQ_U
+=oVV'<rcA"=o;D!=TV],=8Z+m=8Z2#=o;D#=8l;%=7')jAnV*V"_h^eCM[keD?4Zprc%sZF8g7_
+F`qs-G63#7H2W'hHiJKiIJeQhJ,=]lIK+]pHi86lH$FT5G6`;6F`__HF)q8"%rcH)DJa6,CMR[!
+BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[
+r^clUr'pWRogJRBp-S^D3gH"uR@9V8StMdOUnsufWiWD/[(!QV]">Vh^r+15b0/&UdF6Urf\5-;
+i8WhZkNV=!mI9]>q"jsfJcC<$jo5S]V0?Q]>?kA2=9MZ+<`W6";Zp-$<E*#t<;oc";c6Ik<)HKf
+;@-,q;,L+c:eskar_W5arDNS]r'^QRs$lrWs%!,]r^qZ59MJ5V:Jakb;H$Lo<`W:)=^,-:?=.)L
+@Us%_BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%S"-(BTqeE\W2co#YHY==[^WfY]Y2(r
+_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W+L.1Unarqr4;g:s1&';pU:%.r3ZC0q6^(-q6^"+rNuU2
+r/:3+mE,^Xbg"G[d*^=lrm_##lIZ-hf)=.seGmu!da6>>cMl,jcHZ@4r6,#^rQP=Trb*![C27U$
+D/O60E,]f:EcZ;DFEMbMrc\EgH$TC8s*Ocnr-eTorI=9drdXorr-\WoH[G^;#C1Q=GB\4RFoHI`
+F)q8"$?0p$DJa6,CMR[!rb)=FB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!E`G%<WZ9#<;ohr;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N'3$s+13JrtPA0nEoQ+k2bU_iSWMJgtUN9f[n[Q
+dhC-UcHOSZc-+8Na2Z*;`5KL-]Xn*P!4Vp8!4hR-rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t*SUAS,UiCM[m,E,fr@G'A7ZI=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo()j
+X0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?oDeI_
+p&F^cp\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W*3_MIXd$/pQ,64pPnU"qhtK3q2+a$s(h=Er+l8!pmCuI
+rg3kWS"-%?T&cO>ScYOUT)P8\SGAZGRf/]UBDuQYBkhF!Ci+'-DfBZ8EH6,AFEDYKG5c[eG^4T6
+HN/?lI/JEmIf4cbJGt&tIf+TqI!^5=H3\_?G^"@TG'3e+!HW;\E=-Z'DJj<.Chmg$C&VcHB4h-S
+#%V4Q@UW\Qra,\4?2e(1>?Y50=TMW+rDiu"<)iiqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]R
+ogJUCog8UC"S_]fqu)*GJcDqR0A4If]XtJPY,n\*WMl_lV50r`U7n6PSt2FBS=?":R[KV4R$Eu'
+P`q;oOH5E]N;e\;M2R:LMslN$6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF
+@U`kZAnYmoCi401EH?5FGC"UaIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPpMqXfnt7ZaI9Q]"G_k
+^r"%/a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6nac8Bs7H?as7QHerqQNhs8)Zj
+rqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog&0@o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W's0F8k`%V;>F,F;>sDc:B45g;>iNU48_5@48V)1>5h\)
+=T2A%=Sc2!=Sl5&=BAT%<q]Vm=9)M#=T2Cf=9*"5BG>/qCMRa'DJjB3E,fl<F)uGFF`qs-G63#7
+H2`-iHiJKkIK+cpJ+%peJ,XopI0+eCHi86qH$FRXGBS.PrcA0^ErL%cE,TW3D/F*)CMIS_BE;aX
+rac:E@q&nU@:9(A!FB(2>QS,5>5hY*=BGH%!``3!r_rhps&&_ks%iYirD!8bs%E5]r^m)[qFCKR
+r'g9Hq*XgArBWH2R@9V9StMdOUSXidWN3/*ZF.0N\[oDd^VRk/ai_fOcdC4lf@\g4hr3VWk32*r
+lg4-2p%SC^rdk*#s5s=ui0J@o@Tlu<=BAU+=&i7$;c?Xr<Dums<;fbn;ZBZ);,C+g;Gp@j:esna
+;,7'd!_uQgnko?`rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,Ui
+CM[m,E,fr@G'A7ZI=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'B
+bK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?oDeI_p&F^cp\ssfq>^<hqu6NlrUp/@
+s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2F`pTVAEiqRZ[:rj_p9qmQ=.!4;[3q6^(-q6^(-qm?C0
+s0DN[oo/4Z#g:H:cHsqce("BI!8$Mg!S>p$ec""sdfn1Id*L%`rm(Vjc2PrabPfZbbm\5uBPD3s
+CM[j*DJsLnE<^H)FEDYJG5c[eG^4T6H3/G@I/SKnIf=inJFe?gJGt&uIf4ZrI!^5>HN/6jGlDmf
+G'3e+!HW;\E=-Z'DJj<-Chmg$C&VcWB4b^dA7T1Z@UW\Q?XI,G?2e(0>?_#/s&]8&r`9&!s&Atr
+s&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]RogJRBp-S^DJcC<$WW+.=q![S7l/q'hj5JnQh:gW8
+g"4j+e'lalccs\ZcHOGQaSs0g`Pf[/^:Cea\[]&V[^Q1Fn@/?`r'^NQs$luXs%!,]r^qW49MJ5V
+:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uDJjE5F*)SLH$XmfJ:W?+L5:\EN/s'`PEhK%R[ftA
+TqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9
+o()hP"n_K\p@e7[q#C0iqY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2F-EI=Hp+q2b<2qi1$&r/:Q3q2+["!GQ<AC]A5NC]Bgp
+R/<<OQj&qJS=Q4BjIc7>s.9:_rga%ZqO@&Es-jF0BP;*pCMRa'DJjB3rc&-_F*)MHFa!b.!dK!9
+rd"WmI!km@s*jrsqLJ0gqLJQps*jop!do?Ard+Ti!-nKe!HrVbF9-H'rc&9aDf0H0Ci!m&C2*Z\
+&8,TdARo=]@U`bS?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9DhE]8c;3V
+8,YpT7J0(D6hWkF5lpo_JcC<$YQ#F/e&K/7\$<*<XK/G%WMcViUnsl]TV.qVT)Y8^S=5k5rg="Y
+Q^*i#P`q7/Ns1N$Mi*CKregc6mtq!1r'^NQs$luXs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:)=^#'8
+?=.)L@Us%^BPD6uDJjE5F*)SLH$XmfJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW
+]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2E*R8P;fSr)!Jm;tj2J;>sDd:]F8e;?&ZS3r;#:3q6DQ
+=oVV(=8uD!=oDJ"=TV],=8Z+r<rcA$=8Z2#=nu/"=7')uB4tsmC27U$D/O60E;jh]EcZ>EF`hm,
+G63#7H2`*kH[L5>IK+cqJ,4]eJbjorJ,aurI0+eCHiA?kGlW*gG6)l0rcA0^ErL%cE,TW3D/=$(
+CMIS_BFnfgAS#C_@q&nU@:3GL?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8bs%E8^
+r^m&ZqFCKRr'g9Hpd=aArBW!(S=Z@HTq\?ZVPgDnXKJe7[C3WV]=bkn`5Td<b08/XdaQatf\5-;
+iT'(`roj^TmdBT8p%eI_JcC<$kPkn0Melj.>?b31=BPQ(s&T.u##nT&;cQdrr_rbn'i@k-;c-Fi
+;,U=k;,C(b;,L+c:esmc:]ODc;>jDk6i9@O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@U`kZAnYmoCi4-0EH?5FGBnL_IXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P
+]"G_k^r"%/a2lEHc-FY_daZh!f@em5h;7&IioB+]k3(smlKdg'mI0N5nac8No*+dZp%J+RrqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2FWkRAd'hq7?O8rj_p9s0h[0rj2[5q6^(-q6^(-r3ZI0
+rNcH^qMY--lH0FVbfn>Wcd:(geGdu!f%96?!S>p$ebmqsdf\%GdEqg;!RAshbk]H^bl;>hBkhF!
+Ci+'-DfB]9EcZ;DFEMd+G63#7H2`*kH[L5?IK+crJ,FirJc(,nKD^?#Jc(&uIfOrrI0+eCHiA<l
+H$K=4!HrVbF9-H'rc'0%Df0H0Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(E6hNeE6%T&es/c5Nr;H3Slg!`sj5o=\
+hqm2EgXk*0f@A?uda?Cbbg"GWbK7iF`5BO3_S<aorjW!;[JmW7\F6p*6i9@O7K5jV8,l*[8cD>2
+92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Qm$KSG8=Mi<[XP*;/t
+R$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'
+mI0N5nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2F'CH%:R*qiCK3s,@)?NK*@br/:Q3q2+TurG(t?!,V+k
+qO%MUS"-%?T)PA\T(\fVT(elQT)YDcSt2FBSGSfHRf@%6BkhF!Ci+'-DfB]9EcZ;DFEMd+G63#7
+H2`*kH[L5?IK+crJ,FirJc(,nKD^?#Jc(&uIfOrrI0+eCHiA<lH$K=4!HrVbF9-H'rc'0%Df0H0
+Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#<<-"s;u]_q;>j>k:]F2f:&dod
+9DhE]8c;3V8,YpT7J0(E6hNeE6%T&es0)GEjNb]V]X+fEXfSS'W2Z_mV50r`U7e3PT:VUCS!oe6
+rg<\O$'ga=P*1rgNJrhqM?&M4MuS\'M>]g>7/fXT7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``C+
+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkRH@1-kJV/W1LP^qJNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O-.n*ol<o)J:bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2E'R8kMiRr_WYnrDWDfohk]bo25Nap.t]bq,./gpH&46
+r]9OPrE9#"qH<c!qcNu&=',<#rDs)'='/T'=8Z2#=m&oeBG,#oCMRa'DJjB3EH-#?F*)MHG5c[e
+G^4T6H3/G@I/\QoIfFoqJGt,tK(aipK)U?!JH(*!If4ZrI!^5>H3&;9rc\BdFoHI`F)q8",B.R=
+DJa3+CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5h\)=9)G%<rZ/"<;fbq;?0Sm;#a>k:Adid
+9`@]_9)_E\8GYjT7f5^J7/94C6N'20T:hjNUSOcbVl?\sXg#+=[^WcX]=bno_o9X:aihuVdaZh!
+g"Y??ioT=cl0.F!mI0T9o_%tTrdk*#s69OoY^C.o>?b64='&L*<``='r_rhs"B8E$<)`]mrD<Sn
+;#XAm;$Bip;,C+erD<MirD<)_rDNS]r'^NQs$luXs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2e6LQJI5YP5X-\c92<\,Wo4[J%!)[JI9.[JR?1Zi.30
+Z2KXXMu/IrapH88c-=P[d*^=lrm_)$f@TBA!S>p$ebmqse,RkrdJqPmc2u>;c2Pr_b783"C27U$
+D/O60E,fl<F8g7cF`qtQG^+N5H3/G@I/\NqIXckGJH(3"K(jopK_U3!K)^E#JH(*!If4ZqI!bj=
+$[HuAGB\4QF`__HErL%^E,TW3D/B2e$>O9gBP1phAS#C^raGn:@/aL6?=!P8s'#J,r`K;)=',B%
+s&B%urDNbq;,R9gs%iYir([2br_*/]r^m)[q+(BQr'g9Hq*XgArBZ#7JcDnQ2#I:AmHa'#k2bX`
+io/bNgtUH5f@JL$daHOhbKS2Tc-+5M`l,j7_na$t\[]/Y[C<TQ\[_+;!(-WOqaCHQs$luXs%!,]
+r^m2a9`@b1:/=\`;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is^
+PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjndeC<($g"P3:hV[8Mj5]7`k32'o
+lg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2e'Dg$Y`M>`M0Nr"b)N;ne;N/NVnMY`1sMY_)^C[@Gb
+RK&`XS=Q5HT(\fUT(elRT)YG_ScG>\SH#)YRK/iLRLX"FC27U$D/O60E,fl<F8g7cF`qtQG^+N5
+H3/G@I/\NqIXckGJH(3"K(jopK_U3!K)^E#JH(*!If4ZqI!bj=$[HuAGB\4QF`__HErL%^E,TW3
+D/B2e$>O9gBP1phAS#C^raGn:@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDNbq;,R9gs%iYir([2b
+r_*/]r^m)[q+(BQr'g9Hq*XgArBZ#7JcE"T1Yg*m]XtJQXKAS)Wi2koVPU)bUnXQVStM[GS=>t9
+R?s>/Q^3u'P`q8nOH5E]Mi*@KM>iD5MXQB%6N':K7/o^U7fGpX8,u6\8c_RYr_7T3:Jand;c?Xq
+<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:iN0LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'
+Yd(OB[^`l[]t_A"_o9X:aihoRcdC1jeCN7)g=tH?hr*JRj5oFckiq?tm-O--n*olHncA@Srq-<c
+p\jjgq>0scqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2da84lKJ9i4edqG[/epJL`_peh&fpJ:`aqGI2fn2g#A
+qcWl"!EiP$=oDJ"=TV],=8Z+t=8c7u=8l>%=nu2"=7]N(BPD3sCM[j*DJsK6EH6."F9Zl2GB\:V
+H2`*kH[L5?I0+kIJ,OotJc:8qKDU>sKDpK&Jc1-!IfOrrI0"_Brd"rtG^+FVG'.qLFE;L%E<U<"
+DJj<-rbDjUBkV0mAnGUcA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jd
+s%NDbr(?r[r^ciTrC6]RogJUCog8UC2kZk=Uo(&fW2ZeuY->:A[^`l[]=ktr_o9[<b0A8\e'ut%
+g>(TEjQ>Ugl07O#mdT`9oCVeRrIP!"s6K\'m@JE2@9Qo<=B/C&=&r@$=&i0t<E3"!<)Z`n;ZBT(
+:f1(d;,U:h;H$Fh:f1*f:]F5l;,Hg\r_`__rBpHMs$crWr^ZuZ!(m/^!D?,c9m9?.:f1+h;cHat
+='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.
+Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL`Di8N_VjlY^hl07O#m-X60nF?MK!V>s_o`=d\
+rV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_1KT<"0WqO"(\bru8[f!Q.[/%--[/.3.[/I?0ZMh''
+N;SV5N9/1ibKS5VcHjkce'upurmq,$mFVHkf)=.seGdo"da?Ihci),hc2Prab8+f,CMRa'DJjB3
+EH-#?FEDYKG'A.TH2`*jH[Pg@s*artrIFp!s+:0$rIj]prIk*$s+:9%rdb#u!.Ooqs*Pr9H?sj^
+G^"@TF`heJF)l8?E,]`5DJa3*CMITuBP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#
+<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/0.C6Ms-#s+13TrsJc'p@%A6l0.9jj8S'<
+hBgt2f\"g-eC;ppd*Bn[bg"GVaiDE>`Poa1]t1_a\@&`Q[^WcVpU9n,s$H]PqaCHQs$luXs%!,]
+r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(L51VCN/is]
+PEhH$R[]k>Tq\?ZVl?\uY->1;[C3TU]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'o
+lg4!*mdKW6nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/YNoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_#D01>]Ll[VkNq\P&N;nh8MYr=qMZ.G`C[.;`R09"L
+S=Q5HT(\fTT(elST)YG^SckUSS=?#>RMKUPCMRa'DJjB3EH-#?FEDYKG'A.TH2`*jH[Pg@s*art
+rIFp!s+:0$rIj]prIk*$s+:9%rdb#u!.Ooqs*Pr9H?sj^G^"@TF`heJF)l8?E,]`5DJa3*CMITu
+BP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]
+8GYjT7f5^J7/0.C6Ms-#s+13WrtkCZa1o6oYcb(0X/i8!W2HMhV50i[TqVIX'qLkaR[fe4R@'>,
+QBd\uP*1ldNf8nqMZ/P6MYDr&M>opA6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3
+>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOcu&rR$sM8StVmSV5L;mXfen5ZaI6O
+\\#Mh^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dq#C0i
+qYg<jr;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)^`84ZBK9iC^aqbm/cpe^c`s%rGcrD<>fr_WSi!'B^3
+m99BirE/htrE/r"!a&N*r)WbtrE/qur`K2'q,mVtpK/55BkhF!Ci+'-DfB]9EcZ>EF`qqPGBeE4
+H3&A?rdFfq!.Xrts+13%r.Fs$nV-ppr.G$$s+10"s*k#trdFfo+FAE\H$OXYGBS+OFEDSEEH,r:
+Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rs;u]bq;>j>k:]F2g
+:&[id9D_?\8cD9W8,YpT7J0(D6hWkE5rPF3V5C/hWN*&%Yd1XE\$roZ]Y;.u`5]m?bKeM`eCN:,
+h;7)MjlP[ilKmm*n*oi:o^qqTrdk*#s6Tand?&6V>Zt<5<`E+$r`0/#=&r7!r`')%<Dudor)3Jj%
+8]o";Gg=i:eska:/Fdd:\.E\;>sJn6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jakc;c?Xq<``C+>
+$G6;?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+S"6.EU84W`WN*)'Yd(OB[
+^`l[]YD8!_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq
+>^<iqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_/J;pP,W;!n&\c92=\,Wo7[J7-)[K!W.[JmQ1Zi%-+
+Z1a.TMuUocb5]T]b5]Wlbg"GYd*U4ieCE+Kf)=4hf`0S%ebmqre,RhtdEp5=c2c,fbl,^,C27U$
+D/O60E,fl<F*)MHG'A.TG^4U]H[L3hI=?Wprdb$"s+:3%re19)m"YLns+L?'s+:9%rdb#u!.Ooq
+!IT7nH7O8cGB\4RF`__HEcH)<Df9N2D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?=!P8!F&b,=oVS(
+=8l8#<W?%t;u]bq;>sDk:]F2g:&[id9D_?\8cD9W8,YpT7J0(D6hWkE6%T&es0M__rr)ETlg*cs
+jlYR_j5SqPgtLH6f[nX%daHLfc-4GWccaGN`l,d5_n`ss\%&oU\$`ZS\@;4@q7$Ajr^6QNs$crW
+r^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6
+M2I7PO-,TjQC+,1SXuOLUnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_V
+jlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/YNoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_#C3"iVKo_;jNq\P&N;nh8MZ8OnMZ%AbCZh)]R09"L
+SXuDJT)P>^T),)VT)##UT)YG^T)Y>_S=?#@RNH9[CM[j*DJsK6EH6,BFEMbNGBe@XH?spcI!pEl
+IXh?Is+13%rIb*&re9]nre:B*rIb-%s+10"s*k#trd=fpHiA=AH$FOWG'8"MFE;JBEH#i7DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVn;#X8j:Amod9`Ic_
+9)_E]8GYjT7f5^J7/0.C6Ms-#s+13Ys![-X`4`gjY-"e,X/i4uWMcViUnsf[TqS*NSt2C@S!ob4
+R@'>+Q'@O4OpmD2NJrdPMM[7LMMd8bM"uo-6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq
+<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf+S"6.EU84W`WN*&&
+Yd(OB[^`l[]YD8!_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"La
+p@nO\s7u]krVQTlrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)^_7n66J:/^jcr)38dpe^c`r)!5cr)!;grD<Aer]Bd6
+l<=!ds&f&!rE0&%"'A]/=T2D#<rH+s=T)>#=T;P"=Su7u=T;GEC27U$D/O60E,fl<F*)MHG'A.T
+G^4U]H[L3hI=?Wprdb$"s+:3%re19)m"YLns+L?'s+:9%rdb#u!.Ooq!IT7nH7O8cGB\4RF`__H
+EcH)<Df9N2D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>sDk
+:]F2g:&[id9D_?\8cD9W8,YpT7J0(D6hWkE5r>C6Vl6SpX0&S1ZaI6N\[oDe^VRh,a2uKKd*gCn
+f@o$:i8WhZk32'qmI'N8oCDPGp\Oc<s+14:rs?2dBOG(L=BJU)r`9S1<E<1$;cHas<)lps;H*Nl
+'MhS(;,U4f;Gp@g;,C%b;GL%a:f%$d!)`Jer)*Gks$H]PqaCHQs$luXs%!,]r^qZ59MA/T:/=\_
+;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R[]k>Tq\?Z
+Vl?\tY->1;[C3TU]=bno_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5O
+oCW%T!VZ9dq#C0iqYg<jr;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcV,IZ:,!X8':(\HB@N[^Q(@q6^"+!4;F,s0VU.rNc=*
+s0D?WrJLZsrQ4HLrlP,]$HpZ;c-FV]dF-Lnr71hurn$Yls478%rmgqrrmUkp!RT0lc2c,fbl>ld
+CCtB"DJjB3EH-#?FEDYKGB\:Wrd"TlI/\NpIXh?Is+(0%rIb-'s+U?)rJ1*&rJ19)s+UK+rIY0'
+JV!fN!IoRtI0"_Brd#'"G^"@TF`heJF)l8?E,Y_n"`8'kCMIS_BF8BaAS#C^@q&nU@/aL<?<piA
+>[(E9r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m&ZqFCKRr'g9Hpd=aAr'>o6JcE.X
+/,fD9mHj*"jlPR_j5T"Rh;-f<f\"g+e'c^lccs\Xc-OST`l>s7`5BC'\c0&B[CEZR\%&pA[e[E4
+6N0@L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+W
+I!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/
+gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcV!CN=oULAd22NqeV'N;nh9M?&LlMZ8V2D#8#JCuq&\
+R0B(MSXuFDqO[\Ys.9(Zqk!YVqk!h[rgs+[!M#YRRf@.8Ci+'-DfB]9EcZ>EF`qtQG^9:7!IK4n
+I0"eHrdb$"!.t0%s+LE+qhG')p5&[&qhG-)s+L?'!ePuSrdY$!If=`rI!bj=%XE;CGBS+OFEDSE
+EH,r9rb_mVChmg$C&VcQB4b^dA7K+Y@UW[D?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&&horD<Mi
+s%`Jds%NDbr(?r[rCHcTrC6]RogJRBp-S[CJcC<$\Glfkb/_6,ZELD/XT,4KVl$>fUo'l\TqS*O
+SXl:?S=5h4R@'>+Q'@JrOckcbNJi^OM2I4KM2I/aM"uo-6N0@L7/o^U7f>i+84cBF8kViO9heAY
+:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,TjQC+)0SXuLK
+UnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4N
+o()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcU^7n63H:\[lc;Ya2b;#4#l:f1(d;#*oe;#*ue;#=&g
+;#WNU481f">5q_*=Sl5$=SQ%t=T2J'=92Q,r)`o!rE&kurE&Vnqc<c"r`B,8&Su<%DJsK6EH6,B
+FEMbNGBeE4H3&A?rd=frJ,XuuJH1<#KE$W)L&6W'L\?Q&L\li+L&Zi)K*$XUJc:0#It%BF!IT7n
+H4G4FGB\4QF`__HEcH)<DuOVXD/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#
+<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hWkE5r5I=WN*&$Y->4>[^WcX]"Gem
+_8F75air&WdaQaug"YBAioK4akj%O%n+-,Ep\FX]r;M9IJcG0<%/?WCA78YF=BJR)<`f9#s&KA(
+;c?^s<)uut;uTZ$;bp7g;,U4f;,[Bi#>n8m;GL"`:B"&k:Jap_;#F2i;ZB)_6i0:O7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJH$XjdIt3-'L51VCN/is]
+P*M?#R@Bb=TVA6YVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'o
+lg4!*mf2_ZnF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFASc=3~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/SLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcV-I#OqrXSTO+\c92>[fEl2[JdK$[/dT.Zi.3,Z2V$/
+Z2BRVNW4t:a8O'ZammORaT0K^ao9E`bKTt1"jYKBdaQ_Dec"(ufCISof)XD$ebmqre,Ibrd*M^:
+!6tJd(2I`'DJjB3EH-#?FEDYKGB\:WH?spcrd=frJ,Xs"JV&LQKE$W)L&Hc*L]3+uM>i>1L])u-
+K`Hf)K)pRTrdZJJIXZ]nI!^3dH?jaZGBS+OFEDSEEH,r9DJj<.Chmg$BkV0mAnGUcA7PUJ!F]C8
+?NFJ=r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8OA
+JcC<$\,QU(n*K<'roG?`j5JnQhV?o?g=Y'/e^MsqdE^%]bK\DXbJqQ?_Sj@,]=IpM"gteI\%&p@
+[e[E46N0@L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8Xd*^=l
+f%8R.gYL]Ci8N\UjQ>Ugl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/YNoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcUuBQ8KPLQ@MoNq\P)N!"usMi6GLregc6r+u@LqJ?2!
+!13&>s-NYNr0[VTS"0JKq4@SXrLWqZq4@GTrLX%]rgs+[!M#YTRMK[TD/O60E,fl<F*)MHG'A.T
+H$Xd`I/\NpIXh?I!eGrTre(6(s+UE+reLK/mtq%"reLH,s+LH+rIY-&Jc:0LIsuipI=-BgH?sj]
+GB\4QF`__HEcH)<Df0H0D/=!'C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rr
+;Z]io;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNeC6%T&es1J@Cqq9!'^pC8KXK8J(Wi2hn
+VZ*D;VP9fYTV%mKSXc4>S!]S2R$X,(P`q;nP)kT^Mi3FKMMmFNM=uc$M>opA6i0:O7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\
+P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*9h;@/LioB+^k32'o
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/SLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcU]84H6F:ARoa;Yj8d;#!of;#3rf;"mic;#=&e;#`QT
+3rV5;3rW:K>5q_.>$5!1=RoVn=T2J&=Sc)!<rH+s=T)=n=SZ#6CM[j*DJsK6EH6,BFEMbNGBeCZ
+H@(&=I0"eHrdY'$JqEuSs+LE+rJ(<,reU$"reUQ/rJ(?+!/1<'!J5n%J1?%tIXQWlH[C'bH$FOW
+G'.qLFE;JBEH#i6DJa6,CMR[!BP;$jAn>OaA,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;f_s
+;Gg<i;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/94C6Mj&%WiW>*Yd:^F\$roZ]=ktq_SjI9b08/X
+dF6Xtg>(QBioB1alKmm+nFQ>Iqu$HmJcC<$mJdRKQ#L;>>?P'.<**-"<<?3&<;oer<rQ+t;Zous
+;c6Hk;%uo);,L4f:f1(c;,U.a:JXe`;,C-`;#F2i;ZB)_6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcV,G`AVrX1.u;rji'=rjVm8qmHI4n$W,$pTse'r3?4+
+s0;Q^s,6l8qi1Tprl=rXs2jlTprNodbKS5UcHaeadaQ_Cec42'e^i='fCRYpf)XD$ebmqre,Ibr
+d*M^:,0e?UCi+'-DfB]9EcZ>EF`qtQG^4U]H[L6iIXcitJ:W<(rdt9*Kn]M\reLN0qhaj#qhb<.
+s+gT.s+LH+re(6&!.k-"%Y&qUI=-BgH?sj]GB\4QrcAHfEcH)<Df0H0D#S2RC2%?pB4h-S$Y3aV
+@UW\Q?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZr^clUr'pWRogJRB
+p-SUAJcC<$])OVboBtr/kiLmdioB"ThVHuAgY1?5f%&9uda?@bbfe8Wc-+,H`PTR2^V%(c\$i]Q
+[^WcUp9se+s$HZOr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@qB4aBPM=!
+DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SsO9aihoR
+cHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?
+s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcUtB5i?ML5l(jp5Sd)qMX<irJL]6Mtq2hD>n>OC\sIb
+R/WHLR/WKTR[]iHSbSfVTDY;ZTD5#TTDbA]TDkG]SH57MqjJUCD/O60E,fl<F*)MHG'A.TH$Xd`
+I!pElIt*!!JV&LQK*$^[L&Qi+L]<2-M=HK#M>i>2L]3&.K`Hf*KE$N'Jc:00IsufoI!^3dH?jaZ
+GBS-.F:!#/EH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr
+;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjS7f>dK7/0.C6Ma!!s+13art+YH`4imkY-"e,WiW1uVkp9i
+V$!NfUS@a\!M>q^RhM6XR$j>.Q^*f!PEM)iNJrdRMMhCk!K)a-M"uo-6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,Ti
+QC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcU]84?3E:/^sfq,6o`r_WAes%rVhr_W>dr)!;eqb[2N
+pcAFWr)rr$!*Snsr)ru#oNCojp/h)mrE&Vnqc=kUD/O60E,fl<F*)MHG'A.TH$Xd`I!pElIt*!!
+JV&LQK*$^[L&Qi+L]<2-M=HK#M>i>2L]3&.K`Hf*KE$N'Jc:00IsufoI!^3dH?jaZGBS-.F:!#/
+EH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k
+:Amod9`Ic_9)_E]8GYjS7f>dK7/0.C6M`u"Xfen6ZaI6N\@T;c^VI_(`Q-*Dc-OeceCN=.h;7)L
+jQ5Xllg=-1o_/+Xr;M9IJcG-;'#KB<@9m)>=&r=&=B/C%<`E!rqc3SnrDEVkr_WYnr_X&$:f("d
+:Jjq`:/=[a:]OAd;#F2i;ZB)^6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!^lH
+@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm
+_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcS(FcN>tWj;K4"M)%P\$tt;s0_g4rjDa4!4D^2q6Tq'
+rNZ:+r3?$UrJgitrl4lV"j"a*aN;Quao]]-b4s'cb0/#Qc-FY^dF-MCeG7Ypf)OA$fDsOuf`0P'
+f)F2#eC4BGs3ptq!R]9nc5t6SDJjB3EH-#?FEDYLGBeCZH@(!dI=6QoJ:N3%K)UB'KSBAZ!f)Sf
+r/(H2rJU9+rJUZ4rJCQ1s+gT.s+LH+rdt6'Jc:0UIsufoI!g9eH?jaZGBS+NFE;JCEH,r9DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_
+9)_E]8GYjT7f5^J7/0.B6Mj'"s+13`s!Ia=na5W*k2k^aj5JnPh;$iAg">!1f@AC!da?@bbg"DY
+cHF8J`W!a\^V%(c\$i]P[f3f1[edK46N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL-
+>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUnsufWiW>+Z*UgG
+\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcRqATE6LKo>bepl5'-pl"Bo!/pf5pP\f_rbV^QR$dc;
+m$Ra<r0[JO!h,UKrgiPMrh&qVr1EqZs.B:^rgj(Zr0mY')K0S7EH6,BFEMeOG^4U]H[C-gI=?Zr
+J:W9'rdt6)L&H`-LPUcaM>rJ3Mt;o+MuJV4M>rD3L]3&.K`Hf*K)pRTrdZeSIXQWlI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa3*CMIQtBP;$jAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=^@qa#f5JcEOc#3*hH]=5,Lri?4%X/W#qV?*Nj
+rhC(!TV7sLSXZ(;R[BJ1R?s8*Pl?jLP)kT]MuJV6MuSY7M=uc%M>fj?6i9@P7K5jU7t+!#8P2TJ
+92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m\P*D6!
+R@B_<TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcR]7Rg!D:Jgmdr)2`U!)WVir_W>dr)!>fpJCKCs&o>'
+r)ru%s&o)"!a/]1r)ru#qcNo&r)r_qp/h)mqcEVrpfIK5)K0S7EH6,BFEMeOG^4U]H[C-gI=?Zr
+J:W9'rdt6)L&H`-LPUcaM>rJ3Mt;o+MuJV4M>rD3L]3&.K`Hf*K)pRTrdZeSIXQWlI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa3*CMIQtBP;$jAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=^@q`ug<Z*UjH\%'#\]YD4t_o'L8b08/XdF6\!
+g>(QBiT'"^l0I^'n+-)Dq>:*hrdk*#s6osuXF"Md>$+m.<`W:&<EE4%r_jt?<)lmt<)Zap;c6Ij
+;GU.f;,U7g;Gg7e;,L+d:JOY\:]4)i;YErb;?'Pn6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e
+;cHat<`iL->?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUnsuf
+WiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgFH*)sW3Q93s1/0>!4Vg5r3u^7s0Vp8Za981qQot&
+riuC,qQ]^P!0-rtrPnZRs2Y2^pr`9O$HgQ9bg"GZd*^:jrm^\ms475%!nc,Vrn%5(rRh/%!7q/"
+!n>]JrR:hrrmChpd/M</DJsK6EH6,BFEMeOG^4U]H[L6iIXZcsJ:W=OK)pXZreCH.!/UT1s,-f6
+qMb--q2G?3s,-c3!f2Vere;kUKS4u1Jq8K'J:E#rI=-BgH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$
+C&VcQB4b^dA7K+Y@UW[D?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&/kor_WVjr_EDds%NDbqb$iZ
+r^clUrC6]RoL/LBog8OAJcC<$^Afq[n*K?(jlGL^j5AkPgt^Z<g"G!/f$r0sdEp1`bg"DYcHF;K
+`P]R0^V%(c\$i]P[f3f1[edK46N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUSXleWiW>+Yd:^F\%0,`
+^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg@rd!MKST>_p5T$0pl"Bos,6l6onrfep1s_Grg*VP
+qj6Z:qj7;Lrg<eUS,JlHT)PAVT)5/ZT)YG^T)P;\SH#&tRVm%_EH-#?FEDYLGBeCZH@($fI=?Wp
+J:N3&rdt6)L&Qi,LB*//M>rJ4Mu&D+NVSP5MuS\5M#rKgL]3#WKnP,3K7\Z*J:N,uI=6KiH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&dod9D_?\8cD9W8,YpT7J'"D6hNeC6%T&es2+dAfuLhCZ`gR7Xo>=GW2HMj
+Vl$;dU7n9QTV7pJSsu1<R[BJ1R@'A,P`q8oOcPK\MuJV6MuSY7M=uc%M>fj?6i9@P7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m\
+P*D6!R@B_<TV8-WVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!n
+lKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg6q0aA:/1Xbr)2`U!)WVir_W>dqb[8fohb9ArE9)$
+rE05+>?Y50=nl1r=oDJ"=oMV(=nYtl=8>tp=8l;&='59")K'J4EH-#?FEDYLGBeCZH@($fI=?Wp
+J:N3&rdt6)L&Qi,LB*//M>rJ4Mu&D+NVSP5MuS\5M#rKgL]3#WKnP,3K7\Z*J:N,uI=6KiH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&dod9D_?\8cD9W8,YpT7J'"D6hNeC5qB7I[C*HQ]">\k^r""-a2uNLcdC1k
+f@ep7hVdAQjlYgnm-aE7p%J4Xr;D3HJcG6>%Hj4$@p3/?=B/C'=B8K%<W5tt<W5r&;H$On;H$Ik
+r_X8*;,U7h;c-@f;,L+c:JOY\:]4)i;ta&c;?'Pn6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e
+;cHat<`iL->?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUSXle
+WiW>+Yd:^F\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgEJU3cW3ZB5"M)%P\$u4BqR6O7[C#_8qm?4+qQg%(
+qm-+(s0D<VqT&KQqT&WWs2k,[ouRZcbKS2TcHjkbdaQ[peFqDmf)!u"f\+sVfE'UTrm_"urR:bq
+,Lb)hdEp0VE,fl<F*)MHGB\:WH?spcI=6QoJ:N3&JqJ]/L&Qf.LPUccM>rJ5Mu8P5NW"n3O8Y+<
+NVnb8MuS\6M)'mBLPCP;KnP)2JqAQ(J:E#rI=-BgH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0m
+B)Z?BA7PUJ!F]C8?NFJ=r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Jds%NDbr(?r[rCHcT
+rC6]RogJRBog8OAJcC<$_>c.coC)#0kiLmdj5](Sh;$i@g"G$0f[\F!dEp4bc-4DVcd'bU`l5j3
+_S<an\$u=E!k5\Kp9sh,r^-QNr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L
+@q9.`BPD6uDJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2cr$YHY=>[^WfY]Y;.s
+_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg@W-XFK8KA`pl531pl"6ko8EWb!,_LIpm:uG!13&>
+qj7;Lrg<eUS,JiWSai<NTD"lSTD>)WSKFAkDK'T8EcZ>EFa&%SH$Xd`I!pElIt3'#JqAW-KSBD[
+!f)Sfre^Z4s,6f6rf-l:pQ,95rf-i7s,6o7reWCdLPLV=KnY24K7\]+J:N,uI=6KiH[:!`G^"@T
+F`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rr;Z]io
+;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hNeC6%T&es2G!Zo?kLr]X4oGXK/A$WMcVjV5C)d
+U8+HVTqA!KSt2DNRK8hDrg=CcQ'@JrP*(fcN/NOMMi*FMMM_%_qMG2<rBpKNs$crWrC6o[8P/nR
+IS3@/9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPin
+Q^O>5StMdPUo1/kXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYajl0@U$
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg6q0g@:/:^crDMiV!)WYjr_W>drD<Dfo2,*@qH<_u
+r`K>,>?b;/=o)=t=oDJ"=oMV(=nYtl=8>te<ul0tEH-#?FEDYLGBeCZH@($fI=?ZrJ:W<(K7ei2
+re:K0Lku%es,-i7r/CW7rJpW5rJpl:r/CZ6s,-f415L^@L5(D9KS+o/Jq8H&IsufoI!^3dH?jaZ
+GBS+NFE;JBEH#i6DJa3+CMR[!BP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;f_s
+;Gg<i;#a>k:Adid9`@]_9)_E\8GYjT7f5^J7/0.B6Mj%uZa@0M]">Yj^qmq,`Q--Fc-Obdf%A^2
+h;7)Kj5oLilg=02o_&"Tqu$GEs+14?rs[)/D.$dT=BJX+=B8H$<WH+u;Zg!!<)ifprDEu":f1(f
+;,C.f;c3Nj!)`_ks%`Gf!)rSfr)*Jlr^-QNr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W=*
+=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2cr$YHY=>
+[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgE/'^XX0;K4!k>_KqR670!k,MDla-Joqm$%(qm$+*
+s,6o9s,Ho7prE9Oq8`NVs2k/\ouRZcbKJ,TcHjncdaQ[peGdtueG7W"f%8O)f%8O+rn7;'!S>p%
+eH"+te,IiCe'c[lDfB]:F*)MHG'A1VH?spcI=6QoJ:N3&K7ei1Knb>;LPYqd!fDnorJ^c9rf6c7
+r/g]7rf7#<rf$l8s,-f4!JlO1L&m!]rdtN/JUi9#IXQWlHiA='H$FOWG'.nKF)l8?E,TW3D/B2e
+"_qabBP1rVAIE$Y@U`bS?sd8I?=!P8#?tA8=]nj/=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9DhE]
+8cD9V8,YpT7J0(E6hNeB6%T&es2=p@rq5dJlK\B1/`YpNi83;FgY1B7f\+g*da?Ijcd0k[bg"GY
+bfIfC_na.(]stP\[^NZR\%&p@[edK46N':L7/fXT7fGpX8,u6\8q'E,9heAY:f("e;c?[s<``F,
+>?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=ZCIUSOfdWiN8*Yd1XE
+\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X60n*ol<ncA@Srq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh9)&&Qp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSg@;U4=KSb\Jr/UQ3r/CE/jbiSdokaDir0@>Lm$R[:
+rg<\Q!LfMVS,f,MT)PAUT)>5VT)G3'DfB]:F*)MHG'A1VH?spcI=6QoJ:N3&K7ei1Knb>;LPYqd
+!fDnorJ^c9rf6c7r/g]7rf7#<rf$l8s,-f4!JlO1L&m!]rdtN/JUi9#IXQWlHiA='H$FOWG'.nK
+F)l8?E,TW3D/B2e"_qabBP1rVAIE$Y@U`bS?sd8I?=!P8#?tA8=]nj/=8c/$<E)rs;u]bq;>j>k
+:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNeB6%T&es2Y."jNY]V\?`<?XfAD%WMl_mVPU,bU7n9R
+T:VXFS=Q1>S!ob4R@0G/Q'@JrOcb]bN/NOMMi*FMMM_%_qMG2<rBpKNr^HiVr^ZuZ!(m/^IS3@/
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84
+StMdPUo1/kX0&S0ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3
+nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSg77KjA:/:adr_hrWqG?rarD<AepJ:icrD3Jiq`=[9
+s#TpXr)ir$!*]A+qcWf"q-!Mqs&o>)r`SqspK./mnQ-lPE,fo>FEDYKGBeCZH@($fI=?ZrJ:W<)
+K7no3L5(J=M#N54MMmDkN;nn:Nqe\5OSFn9NrP+<N;nh9MZ/G5Lkkta!JQ4+K*d-\J:N,uI=6Ki
+rd#0%G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S$Y3aV@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"
+<)iiqs&/korD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8L@.CZgt]"Phm_8=+/`lZEJcHt"i
+f@ep6hV[8NioTCgm-a?5oChtUqu-MFs+14@rti"hB4+kE='&L+<`W4$<`E$s<E3!u;cN`ps&'%u
+;H$@f;,R<js%rqu;,C%a;>s>l:/Ca`!)iMer)*Jlr^-QNr'^NQs$luXs%!,]r^qW49MJ5V:Jakb
+;H$Lo<`W:)=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(CTqeE]
+W2co#YHY=>[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiGHnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSgDh=.LXf8kA\@8sA[f*Z:[^EL0ZN7A<rNc7(qQg%(
+s0;X2rj)K\rf$l:repisr5\NNpW*<T!6P/]p;m<WrlYJhcHjncdf._qeGe"ueG@_mecOIUg&0J'
+f@KrO!7^trrm^ts)K9\9F*)MHG'A1VH?spcI=6QoJ:N3&K7ei2re:H/M#N54MMmDlN;nn;Nr4t;
+OReP4OSt7?NrP+;MueioreWmrLPLV=KnP,3K7\Z)J:E#rI=-BfH?ja[GB\4QFEDSEEH,r9DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@#Dr`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_
+9)_E]8GYjS7f>dJ7/94C6Ma!!s+13hru^q&m-<isjQ5F\iSWJHgtUQ8g"4g*e'cXkd*Kt\bKKn1
+'$\M<`P]L.^V.1e\$i`S[^N]Tp9sh,r^-QNr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Lo<`W:)
+=^,-:?=.)L@Us%_BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE]W2co#YHY==
+[^WfY]Y2(r_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Rcp@n=\
+q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8CnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSg?u0q7KSKDbpl531oS_skmu-jTp6Y`Ds-N)>qj7;L
+rg<hVS"'DI!1iYOrh&nUr1EeVs.('IEH-&AFEMbNG^4U]H[L6iIXcluJV&N,KSBD[!JcL1M#rQm
+MuJ\8NW5%:O8b73Oo:C?O8k7?NW"e:Mi.Lj5_t2NL5(D8KS+o/JUi9#IXQWlH[:!`G^+FVG'.nK
+F)l8?E,TW3D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?![G7!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2g:&[id9D_?\8cD9W8,PjT7J'"D6hNeB6%T&es2k9Yh9*UP['6[7XK&>#Vl6MjVPU)_U7e3Q
+SY,nP'qCb_R[KP2R[BG.Q'@JsOcb]bNJiYmM?AcoMM_%_qMG2<rBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84
+StD^OUo1/kX0&S0ZEq!K\[oGe^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3
+nF?)?oDeI_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8CnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSg7R]j@9MPLbs&/Vh!)W/^r)!/crD<AepJ:icr_WPh
+"?8D%3]d*tp0%>rrE0,(r`fD+r)rr$s&oA(rE9)$!*T;'r`T8)r`Sqs!`rE'r)Wo$=8H%l<ukCE
+=)`/!F*)MHG'A1VH?spcI=6QoJ:N3&K7ei2re:H/M#N54MMmDlN;nn;Nr4t;OReP4OSt7?NrP+;
+MueioreWmrLPLV=KnP,3K7\Z)J:E#rI=-BfH?ja[GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mAn>Oa
+A7K(X@:3JM?X@#Dr`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjS7f>dJ
+7/94C6M`tq]">Vh^;.V'`5]m@bK\A\eCN:+gYL`EiSik[kN_F%nac>Gq>1$fJcC<$oD]6iTQOgO
+?!(-.=BJO%r`'#!;cEWo$WC#%;H-Oj;Gp@f:]=5k;?p&s;c-@f:Jq*e"&;Wg:]4)i;YErb;?'Pn
+6N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?[s<``F,>?kH??XR>PA7]CeBkqO&DfKf>Fa&(V
+H[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@HUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^=le^rI-
+g>(N@i8EVTjQ5OekiqBum-X60n*ol<o(2nRs7HHep\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiAFn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJeD17M>Wi3G;\,<Z7[J.*1[C#\7r3H:-rNc1&qQg%(
+s0D[2rj)R1q2G?5!li:$p;['Ms2OcQs2b5^rlXrVs2tAb"3f':dJhPoe,Ikrec""pec42#ec+,"
+fDO;$f)XD$eH"+te,IksE>!;6FEMbNGBnL\H[L6iIXcluK)UB+KS>/8LPYqd!K)g7N;nn;NrG+=
+OT1I0P5^UDOSt7?NW>(<N;ne9MZ/GhLkg_>KnP,3K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i7
+DJj<-CMR[!BP;$kAn>OaA,]p<@:9(A#@:\A>[1K;>5hY+=BAT'<rZ/"<;fbq;ZBVn;#a>j:Amod
+9`Ic_9)_E]8GYjS7f>dJ7/94C6Ma!!s+13ks#']EnEK6$jlYU`iSWMJgtUQ9g"4g+e^MsodEg+_
+bfe2RcHa\Ta2Gj1_S<ao\$rcR\@/iUosXb,rBgHMqaCHQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln
+<`W:)=^#'8?=.)L@Us%_BPD6uDJsN7F*)SMH@('hJ:W?+L5:\ENK90aPEhK%S"-(BTqeE\W2co#
+YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Ua
+p&Ojdq#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8Cn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJe?#+J/K8';bpPo33m>LCimYh+(!,_LIo9]EAs-N)>
+qj7;L"dtgIR[]fGS,f,MT)PAUT)YG_ScGDYT)WdCEccDGG'A.UH?spcI=6QoJ:N7NK*?p^L5(J>
+reUZ5MuJ\8NW5%<O8b7@OmJ81OoLOAO8k4?NW+n:MZAY6M):$DL5(D8KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2%?pB4kgfARo<M@KBnFra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&[id9D_?\8cD9W8,PjT7J'"D6hNeB6%T&es31KYpsd:!\?iHCXK8G%W2QVk
+VPU,aU7n:[TDtJ_Sc5,YRK/cRQj]4EP`q;nOcPN^Mi%Fjs,-o8M=uc&M>]d>6i0:O7K5jV8,l*[
+8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZB4u!pCi402EH?5FG^=^bIXm!%KSG;>MiEdZ
+P*;/tR%'V;T:r$UVPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg(mdKW6nac8Bs7H?as7QHerqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiAFn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJe779[?9hePa;YO&e;"IQ^;"mie;#=&`;#X8j;#=#g
+;#WES3W;)=3V-DP=Su;)>$G37>5DD$>5qb"=T;P(=T)A(>$5#$=9)G%<rH+p=S5`1=E/>$FEDYK
+GB\=YH@($fI=?ZrJ:dcQ"b_SaL51TaM#iKlrf$l:s,R)>rfI/Bm#q@1s,d2?s,I)=rf$l8!/gc4
+1l-pAL4t;6K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$BkV0mB4b^dA7PUJ!F]C8
+?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&/kor_WVjr_EDdr_3>bqb$iZr^clUr'pWRoL/LBog8L@
+-G7%+^qmq+`Q60Dbg4Ybe^rL/gtglGiSrt^l0Ia*nalDJq>:*hJcC<$o`#-FODnZ8=]bT)(KXO7
+<E)ss;H$Uq<)Zao:fL@k;Gg=g;#X;o:f1(fr_Wbo:/4[c:]F2i:]4)i;>*ia;#jMm6N':K7/o^U
+7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]CeBkqO&DfKc<FEVnTH[U?nJV/W1
+Ll%%LO-#NgQ'[l-S=Z@HUSOccWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVT
+jQ5OekiqBum-X60n*ol<o(2nRs7QEc!;HKfs7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiMJn*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeC4(u6V5h#6[^NTO[.^m-[.gp!ZM1X"ZMh'.ZN%91
+ZN%92[.fOL`r!aJa8a6\aoBNYaU-,3b0%oObg+P^rmCeqrm^qtr7(Vo!7q/"!S5m%f_sD%f)F2"
+eG[i>e8]MMFEMbNGBeF[H[L6iIXcm!JqJ]/Knb>;LPUeDMMqIms,@#=rf@)@s,m5Br0-l>r0.&A
+s,m>Crf@)>!0-u:!K2j7M):$DL5(D9KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D/=!'
+C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]
+8c;3V8,YpT7J0(D6hNeB6%T&es2t@"p@@S7lKI?kio/kRhV?l>g=P!/f%&6td*U(ac-4DTbKeDX
+b/_N?_SF"&]XbM\[C3TR[^Wa>[emQ36N0@L7/o^U7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``F,
+>$P<=?XR>PA7]@dBkqO&DK'T:FEVkRH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC
+\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi>En*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJe?"e8-JVB,ErJ^f9rJgi9m>LCimYh+(s,HtoqeZ7t
+oU#H@l^7U:rg3\RrgNkVrgWtZnXfcQ!20%Ws.B(X+E;FCFEMbNGBeF[H[L6iIXcm!JqJ]/Knb>;
+LPUeDMMqIms,@#=rf@)@s,m5Br0-l>r0.&As,m>Crf@)>!0-u:!K2j7M):$DL5(D9KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D/=!'C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],
+=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hNeB6%T&es3CWelHR>`[Bm'=
+XfSS&W2HPjVPKu^U7\-OT:VXFS=5t;Rf8`TR/`KcQ'@JqP*(lfNfAsRMM[4KMi!;aM#3&,6N0@L
+7/o^U7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO&DK'T:FEVkRH[U?n
+JV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@
+i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi>En*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJe779X<8kr8^rD<PkrDEDfp/1Z_q,./gqbQu`r_NPj
+qG7,fr&F^:s#L-?nQG`kr`T8)!aAi3qH<f$!*T"tr`K5'qH<Jn!*B,"r`9)%r`AqupfASXEcZ>F
+G'A.TH?spcI=6QoJ:W<)K7nr5L51P?M2@+Jrf$l:!07&>s,d8Cr0$uApQYT>r0%)Bs,d5@s,I)=
+repl9MZ/GhLkg_>KnY24K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$jAn>Oa
+A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<rZ/"<;fbq;?0Sm;#a>k:Adid9`@]_9)_E\8GYjT7f5^J
+7/0.B6M`to^VI_(`5]j>b082YdaZk$g=tH?i8N\Wk32'rmdK`<p@nF\rVhBJJcGEC(V>93?sHi:
+=&rF'<)lpt<Dugo<)cdo;uBN$;,C+f;,C.g:f1(fr_X#!:/+S^:JX_\:J^sd!DcSd;#F/j;Z&l\
+6i0:O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCi4-0EH?5FGBnO`
+IXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"%/a2lEHc-F\`daZh!f\,!6
+h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9)&&Qp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeBR5`7VQ.)5rjD@)q6T_!pTaV$qm$1,rj2X1s0M^3
+!4DT\rl+EIqo&QToZ%'TaiV^#aoBKkai_fNc-FY_dF-Lmrm^qtqpbAjqUbburRLqt-.?mUFEDYL
+GBeCZH[L6iIXcm!JqJ]/Knb>;Ll$tGMMmFPNK0%uNrkE*Oo:ICPQ$g8Q2[$IPPpXGOcY\(O"cTR
+NJrgSMi*@JLkg_>KnY24K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$jracIJ
+@q&nU@:3GL?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]_9)_E\8GYjT7f5^J
+7/0.C6MWous+13orsn_klg!`ujlGCYi83;Fg]#n+efrSmda?Ihcd'eYbK@uPbg"5J`PfU/^qRIm
+\$rcR\@/iT\+[9-\,8Sl6i0:O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@U`kZ
+AnYmoCi+'/EH?5FGBnL^IXm!%KSG;>Mi<[XP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/
+a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`n
+p&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJe?"e8,J;*o\qMag"mu$Oks,?r:!07%prb_XNqj-l@
+qj%5Kl^7X;rg3\RrgNkVrga"Znt,iQp7D;VqOSsQF*)MHGB\:WH@($fI=?ZrJV&N,KS>/8LPUeD
+MMd=NN/`jXrf7,BOcfU*s-*GHn!3m:rfd;D!g/S+rf8anNK&mUMi3ILM26qAL4t>7K7ec,J:N,u
+I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fM/>$Co.!a&N*
+r`0)#<)iiqs&/korD<Mis%`Jds%NDbr(?r[rCHcTrC6]RogJRBp-SR@JcC<$d/Po[ai;B.Z*(10
+X/W(rVl$;fV5'cYTq@sKSXuCAS=5n7R$a5-Q^=#'PEV5nP)t`aNJiYmMZ8V7M=uc&M>T^>6i0:O
+7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^IXm!%
+KSG;>Mi<[XP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/a2lEHc-F\`daZh!f\,!6h;7)J
+ioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJe6psO<8ko4\qG@/e!)WAdqG?ubs%rSgpe^ob!)WMf
+r_N\m3]];!2uku,=o2>#=oDP"=oMS)=nYto=TMW-o2kuor)WVpr)ies,][sJFEMeOG^4U^I!pEl
+It3*%K7ei2L5(J>M2@+IMi<USNfO+"!g&P,rK@2Erfll:rfmDGrK75EOHBI&0TM-PN/W[QMM[1G
+LPCP;KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/B2e"_qabBP1rVAIE$Y@U`bS?sd8I
+?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g9Hpd=aAq*?7A
+_o'L8aihlQd*^=mf\,$7h;@/Mj5oIflKdm.o(;YNqY^;Cs+14Drs/J"G\(8i=BGK&!``3"rD`eq
+!*&qrqbe;/;GU.e:f1"a;GU.f;,C%a;,C(b:JOY\:]=/k:Jpg^r)!Glr'LBMqaCHQs$luXs%!,]
+r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)L@Us%^BPD6uD/O<4F*)SLH$XjeJ:W?+L5:\EN/j!_
+PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+n*fc9o()hP"n_K\p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9DA/Rp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdBR,W9YG\b8[J[E/Zi7?1ZgY3pZ2Cp(Z2_-/Zi@?2
+Zi7?2[J5[\`;[aU`rF$M`r!aT`q7:OaS![Sap6,6c-FY_dF/$Cs4%%uq:,>m"4YlOf)+)!f)4&G
+F*)MHGB\:WH@($fI=?]sJV&N,KS>/8LPUeDMMmFPNK&sZO-#HcrK@2Es-3GHqj./Hqj.,Es-3PI
+rfR>FOHBI&!KN0=N%U$GM2@%DL5(D9KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$
+C&VcWB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?r[
+r^ciTrC6]RogJRBp-SR@JcC<$ci4OPo'ku1kiV!ei8NVNh;$``fHf)!e^Msnd*L"^bfn5Qc-FSW
+a2Z'7^qde#]=GAY[C3TR[^Wa>[emQ36N0@L7/o^U7fGpX8,u6\8c_RYr_7i::Jand;c?Xq<``C+
+>$P<=?XR;OA7]@dBkqO%DK'T:FEVkRH@10lJV/W1Ll%%KNf]EfQ'[l,S"?7GUSOcbWiN8)Yd1UC
+[^iu^]t_A"_o9[;b0/&TcdC1je^rF+g>(N@hr*MSjQ5OekiqBum-O-.n*ol<o(2JFp%A@Y!;HKf
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9DA/Rp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGd>@qo*JqAl>NVnb-Mu8J2MslPkMuSb8NW5"=NVdPk
+D>BLiQi!*KQg0t<Qi<?PRJrZTS,SrXSarBOT)kOSpn%MXr159WFEDYLGBeCZH[L6iIXls"JqJ]/
+Knb>;Ll$tGMi<USNK0'\OH>V'P5gaGPl-gDQMd*HQMZsIPlHsHOogc-OT(:ANfF$s/rPUDM26qA
+L4t>7K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>Oa@q/tW@:3JM?X@&E
+r`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/0.C6MWous+14!
+s!dot`P&aeZEC=2XJr1tVl-AfUSFNUTq@sKSt2C@S!oe5R@'D.Q^F&&rf[hSP)t]`NJ`RMMi*FN
+M2Cq^qhb5;r^6QNs$crWr^ZuZ!(m/^!D?,c9n#i5:f1+h;cHat='/U/>[1TB?t!MTAS,UiCM[j*
+E,fr@G'A4XI"$TsK7nu8M2R=QOHPfmQ^F52StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>Y
+dF-Opf@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGd77Td=925C_r)!8d!)WAdqb[)cs%rSgpe^ob!)WJe
+s%r\jr&Xj<s#B@JqcNc!!*]/#r`T;)p/q/onQ5cmr)WVpr)iku-ZaBOFa&%SH$XgbI=6QpJ:W<)
+K7nr5L51SAM2I4MN/`gWO,oBaOo:ICPQ-mFQ2?mFQi!*GQ2d*KPQ$^HOcY\(Nrb9#rerIfMM[1G
+LPCP;KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo:\@U`bR?sd8I
+?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(D6hWkB5pF4d
+ai_fNcHjndeCWC-gYL`DioB+^kNV9un*oo?p\=U^rdk*#s7cO"gluhg>$>$1<`o?$#?Ff'<`E!s
+<;of$;Gg@j;Gg:er_X>,:Jt%e:f("d:eje`;,C%a9i"Xb:]X?hp/(Za!)i_]r^6QNs$crWr^ZuZ
+!(m/^!D?,c9n#i5:f1+h;cHat='/U/>[1TB?t!MTAS,UiCM[j*E,fr@G'A4XI"$TsK7nu8M2R=Q
+OHPfmQ^F52StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>YdF-Opf@S^0gtgiEi8WeXjlYai
+l0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGdATWm/YGni)[.L^%ZMq-)ZM:^(ZM:^)ZMh*4ZEpmE
+[/@?3[f;?aN;pcq`;7IG`qm[R`q@CPaS*aUap?27bg"GZdF$D?e,InmeG[qseGe%tf)XD#eJiRO
+F`qtRH$XdaI=6QoJ:W<)K7nr5LPUeDMMqIm#*"Y(O-#Hcrf[;F!0mGIrg*PMnsKBBs-EVKs-3PI
+rfTR0OH>NaNfB$WN/NRMM26qAL4t;6K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-CMR[!
+BP;$kAn>OaA,]p<@:9(A!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`Ic_9)_E]
+8GPdS7f5^J7/0.B6Ma!!s+13truh(,mcs'#jlPL\i83;FgtCE7f@SO%daHLgcHXSVb/qg*bnJ1<
+`l,^/^qRLm\@AoS[^`cR\@):DosXoer'LBMqaCHQs$luXs%!,]r^m2a9`@b1:/=\`;H$Ln<E<1'
+=^#'8?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<
+[C3TV]Y2(q_Sa@4aND]McHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGd=_2T$K7f'YN:`%kMZ/P6MXuc+N;nn:Nr=t;D>\2M
+D>0@eQi36LQg0q<Qi<BPRK&`URfo7PS=Q5AT)P>^T)P;WT)YG^Sf;`mF`qtRH$XdaI=6QoJ:W<)
+K7nr5LPUeDMMqIm#*"Y(O-#Hcrf[;F!0mGIrg*PMnsKBBs-EVKs-3PIrfTR0OH>NaNfB$WN/NRM
+M26qAL4t;6K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-CMR[!BP;$kAn>OaA,]p<@:9(A
+!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6Ma!!
+s+14#rseDA`Po6kYcY".WMuhorh^$uUS=EST:hgISY#hM$(@9LR$X,*R$Es9PR`k<OH5E]N/NOL
+MMd=JMXZH&62X(K6i0:O7K5jV8,l*[8cD<_92,=ZG>:q1;,U=k<)lt#=BSg4>[CcF@:EbYAnYmo
+CMds.EH?5FGBnL^I=Qm$KSG8=Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ<G
+bg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI0N5nc&(`oCV_Kp@e7[q#C0iqY^6ir;HTerdk*?
+s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGd6q0X<9hnIY;#X5j;"mi`;#4&h;#=&`;#O/i;#*le
+;#=#g;#<9S3BHJ/qH3;kr`T;)oN;#oo2tunr)WVpr)ir")fp+DG'A1VH?sseI=?ZrJV&N,KS>/9
+Ll$tGMuJY>NK0'\OH>V(P5g^GPl6mHQN!6AR/NBOQMm*KPlHsHP!P4lOH5H_NK&mUMi*@JLkg_>
+KnP,3K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TZ4DJa3*CMIQsBP1siAS#C^raGn:@/aL6?=!P8
+s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@qEZ:FbKS5U
+cdC1jf%A[1gtglHioK4`kiqF"n+#uApA+R_rdk*#s7lU2_M;i6?WgK5<``:#<E3!u;c?Rn;c?Rl
+;uTZ!;c-=e;,C-g:^Klo;Gg:e:JOb`r_ESj:f73g!DZJ\;#io[6N0@L7/o^U7fGpX8,u6\8c_RY
+r_7T3:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkRH@1-kJV/W1LP^qJNf]EfQ'[l,
+S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:b0/#ScdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O-.
+n*olHncn^Xp%A%Pp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTlGp\Xfo.=Zhq-.Zi@?1Zhh!'Z2_-)YlM*'Z2_-.
+ZNRS?Za@+;[K!Z=\%%BUNK*pr!5eZOqSi-IqSiHRoZ-sPprWQY#g:H9c-FY^dF.sA!n>cNrmUqs
+r7(\qrmUqurmq)#+kG2oe9#kXGBnL\H[U<kIt3*%K7ei2L51SAM2I4MN/`ksNrb?)rfR>HPa)04
+s-E\OqO$oCqj@DMs-EVK6'RRsP*1riOH5H_NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+G'.nKF)l8?E,TW3D/=$(CMIQsBP1rVAH?=OraGn:@/aL6?=!P8!aAi3r`K;)=',B%s&B%urDW_o
+!)`\ks%iVhrD!8bs%E5]r^m)[qFCHQrC-?Hq*XgAq*BT3JcF4!2>6P*l0.<lj5JqShqQr?g"=s/
+f$r0sd*L%`c-+;QbKS8VaiDB=_SEq%]Y(ea\$WTR[^N[6[K&Vk6N0@L7/o^U7fGpX8,u6\8c_RY
+r_7T3:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+
+S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--
+n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTjhqcJV8mUN;\\7MZ/OsM?&S5MXuc+N;nn9Nr4n:
+D#\AOC]]ohQhQg9Qi<<MQfa\7R0/nIS"0GJnt,iQ!1s.[qk!h[s.16QG'A.UH?spdI=?ZrJV&N,
+KS>/9Ll$tGMi<USNrG(?OHKO*!gAk5rg!MLs-NSLoU5TDs-NbOrKT[5PEV/mOcb`dO,f6[N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mB)Z?BA7PUJ!F]C8
+?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&&horD<Mir_EDdr_3>bqb$iZr^clUr'pWRoL/LBog8I?
+JcC<$fDdnkaiD<,Z*(1/Wi<"rVl$;fUnj`XTV%gJSt)@?S!oe5R$X2+R@'8)PEM)kOcYT`NJi[N
+M2I1KM2LeZ!($NLr^6QNs$crWr^ZuZ!(m/^!D?,c9m9?.:f(%g;cHat='/U/>[1TB?t!MTAS,Ui
+C27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(`Q$!@
+bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OB
+Sc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTgV@A9MSCV;#!o_;#=)i;#=&`;#a>j;"@E];#369
+=nl+k=oVY*=n>bo=oMM'=8Q,"=8uD%=8Z+p=8l;F='/O*FEVkPH$Xd`I=6QoJ:W<)K7nr5LPUeD
+MMmFPNK4"!!K`HCOogi3Pl?sJQN*<JR.QgDR/`NQQMm(7P`q;oP*(lgO,o<]NJrgSMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e(1
+>?Y50=TV],=8l8#<<-"s;u]_q;>j>k:]=,f:&[id9D_?\8cD9W8,PjT7J'"D6hNeA5p4=pcHsqd
+e(*('g=tH@i8`nZk32'plg=33o_&"Tqu$GEs+14GrsPuVA78_G=&r=&<E9#t"]\K"<E3#s;?Kip
+;,[?is%j,!;Gg7e;,U4e:/=_ar_NPhs%iVj!DcP];#io[6N0@L7/o^U7fGpX8,u6\8c_RYr_7T3
+:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+S"?7G
+U84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olH
+ncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTl>[NVm3?%Zi@E1ZhUj+Z2V!%Z2_&uZ2_-+Zi@E1
+[K!Z8\,No:N<"q:NW-fm_u%CE`qdUR`q.7Ma8j?\aT'B]ap?27bg"GZd*^;>e,Rntec+(te,Ikq
+ec+(teH"2"f-8erFa&%SH?spcI=?ZrJV&N,KSG5:Ll$tGMi<USNfT6_OoCLEPEc'3s-E\OrL!SP
+rgNMLrL3_RrL!VOs-EYL!L/fIOo^],rf9L.NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@T
+F`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7T1Z@UW\Q?XI,G?2e(7>?Y35=]ed-=8l5%<E)rs;u]bq
+;>j>k:]F2f:&dod9DhE\8cD9W8,YpT7J0(D6hNeA6%T&es472Wqt9FDlK@<lj5T"rh>l@1g&KYK
+eC2jod*L"^bfe/Nb08)Qa2Q!5_8*h"]t(Y_[(!KQ[^NZSn?r<_r'LBMqaCHQs$luXs%!,]r^m2a
+9`@b1:/=\_;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$
+R[]k?Tq\?[Vl?`!Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*
+mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTj_e]It`XSN;SV"MZ&D,MXuc+N;nn9Nr"b7D#eDO
+D>ok"Qhm$:QiEBNQfa\6RK&`ZS=Q4BSarBOT)bJ]Sbo#YT-/9#GBeF[H[L6jIt3*%K7ei3L51SA
+M2I4MN/`jYO-#M'Oo^c2rg!MLs-N\OrgEbSopboKrgE_Ps-NbOrfmMKPQ$^GOc]R'7?3@dN/NRM
+M26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jAS#C_@q&nU@:3GL
+?=$q:>R4P;>$5!1=BAT'<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]_9)V?\8GYjT7f5^J7/0.B6MWou
+s+14'rsd]']XY>RY-"_'Wi)blrhUC*TqS*OTV%gIS=5n9R[KP1QBml)Pa263s,m>C$'("(Mi!:K
+MMmA[M#]j>6N0@L7/o^U7fGpX8,u6\8c_RYr_7T3:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#
+DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN3/(Yd1UC[^`l\]t_A"_o9X:aihoR
+cdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTgV@@9287\;#=)i;#!o`;#=,i;#F,a:]O;i;"7?]
+;#aDh3ojH>=S#Yr>$:Dur`T5&s&T2&qcEf"r`B"uq,dPts&U=cGB\:XH@($fIXcm!JqJ]/L5(J>
+M2@+JN/WaVO,oBbrfR;GPl?sJQN*<MR/WNQRe<0KRf8`RR/`NQQN!-MP`u*0!KiKCO%#(gN/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mAn>OaA7K(X@:<PN
+?X@&Er`f_5>$>'3=BJX+r`0)#<)iiqs&/korD<Mis%`Jds%NDbr(?oZr^clUrC6]RogJRBog8I?
++3`$WdaHXrf\,$7hVdAQjQ5OglKdj)nFH5Fq"agbrdk*#s82g5jI::%=BSd.<``@&<`2mr<Dugq
+;c?Rl<;oeq;$Tln;,C+d:f73g!)rkn!)NSjr_ESj:f73gs%i)\!($NLr^6QNs$crWr^ZuZ!(m/^
+!D?,c9m9?.:f(%g;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$
+m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTl#7BTrb3dZN7A<rj)R/!O/j)Yl:m.Yd+&/p9FY'
+rNcX4Za7$Gr3ZU7\$u=G!4i&gs,Hom"N/0r_o)Ai!6+WNpr*6Qqo8]Vq8`?Qs2k8_#g:H9c-FY^
+dF.sArmV"ueC=HGs4%%ur7(bs!7q/$)Kp=LH$XgbI=?ZrJ:`E+KS>/9Ll$tGMi<UTrf75EOcklk
+Pl?sJQ2m9MR/`TSReiNKSGAZSRfAfSQp@"(QBd`"P`q8nOcb`dO,f3YN/NRMM26qAL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BFnfgAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'
+!*B/#s&K(ur_rhps&&_ks%iYir([2br_*/]r^m)[q+(BQr'g9Hq*XgApd'K2JcFC&"S_HSlKJ60
+($"<3hqd)Cg"P'/e^N!qd*Bt`c-4B1aVN1Hb/_K=^qde$]Y(e`[^3BN\@/lU[ICU)62X(K6i0:O
+7K5jV8,l*[8cD<_92,=ZG>:q1:f:4j<)lt#=BSg3>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd"
+KSG8=Mi<[WOcu&rR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZguf@em4h;7&I
+iT&t[k2tmll0I^&mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTjDJUI=m7ON;\\#MYN&,MXuc+N;nn8Nr"_8Nr*\j
+Q3<PAR$X0:QLU:AR/<6IQiNK?R/NEUR[]h<Sa`6MT)bJ]SbnusG'A1VH@($fIXcluJqJ]/KnbA=
+M2@+JN/WerNs1W-P*2#nrg!ML!13YOs-`nUqO@8Mq4%DQs-`hQ5aRe&Q'ISuPEM)kOcYWbNfB!V
+Mi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]@U`bR
+?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNe@
+6%T&es4mVtm`rnp[^<6?X/`/!Vl-DhV50lZTqJ'NSt;IBR[]_6R@*u>".>I>Pl?jJOcYY'N<>&p
+Ll)+gm>1g/r'LBMqaCHQs$luXs%!,]r^m2a9`@b1:/=\_;H$Ln<E<1'=^#$7?!guJ@Us%^BPD3s
+D/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WL
+cHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6KkrVcEgJcD;@
+J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTgV:>8kVlT;".?X;#=)i;#=&\;"7?\;#aAm;YrNO
+=oV[o=nGhn=T_c/=]kQ(nlYlos&f2#!*K2$s&f8%qH!Jpr`C(^GBeCZH[L6jIt3'$K7ei2L51SA
+M2I4MN/mmu"d"k0P*;.0Q2d-MQi3<ORK&`PS+rNLS,\rWRJiL<Q^3r&Q'@MsP*1riOH5H_NJrgS
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C&VcWB4b^dA7T1Z@UWYP
+?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8F>
+*RE-]e(*(&gYCZCi8WeXk32'pm-X93oCVeQqu$ACs+14IrsQYtBOY:M='&F'<E9#t"BJK#<)iip
+##eDs;Gp@gr_`\l!)NSj%8Thu:f'n^:esh^:JO[a:]F8k:[_-\62X(K6i0:O7K5jV8,l*[8cD<_
+92,=ZG>:q1:f:4j<)lt#=BSg3>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd"KSG8=Mi<[WOcu&r
+R$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k2tmll0I^&
+mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTkf(;UTC9cZi@?0Z1P7&Z*:I9r361*!3l=)s0D[2
+rj)R1s0V^3!4Mm9rjW'@]">WSNrP+7_>qLQ`;RUQ`;[aM`q[LQ`r!gV`qd[PaT'B\b5]Zhc-FY^
+dF.sArm^ens4%%uqp[+Gf%5+iH$XdaI=6TqJ:W?*KS>/9Ll$tGN/WaVO,oBbP*2#nPa.N"Q^@]=
+!h#LGr1!\UrLNbUrLNqXr1!_T!1EeQ!LK,OPl[,5rfTI-OH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[9s^GB\4QFEDSEEH,r:Df0H0Chmg$BkV0mB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&
+r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZr^ciTrC6]RogJRBog8I?JcC<$gA_WUna#H'k2k[_
+i8EMKh#>t7f@JI#e'cOecd'bXrl>\pc-48I`507*^V7@k[^NNN[JmW7\*pa*62X(K6i0:O7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VC
+N/is]PEhH$R[]k>Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`
+k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dp]1-hqYg<jr;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTjDDQI=d'/N/[[ml\bLprJL3)s,?u;r/UT4!fi>&
+rbhaQq3D#Irg<_Pr0Hl>s-W_Nqj@DMl^.jDR[]h<SbJ]USbo#XT)bJ]Sc,/[G9qN\H@1-hIt3'#
+K7ei2L51SAM2I7NNK0'\OHG]hPE_;sQ'Rc'rg3bTR[X/Drg`qXq4@PUrg`nUs-`qUrKmVPQN!-M
+P`u*05*:qfO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH$FOWG'.nKF)l8?E,]`5DJa3*CMIQs
+BP1siAS#C^raGn:@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8bs%E5]r^m)[
+q+(BQr'g9Hpd=^@q*BT3JcFU,-fiIe^9t8LXK&;"WMcYkV50l]TqS-PSXuFBS!fb8R@'>,QC!u)
+Pl?gTOckfeNfAsSLl%"HMi6tZ!($NLr^6QNs$crWrC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3
+>[:]D@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOcu&rR$sM8StVmSVPgDnXfen5ZaI6O
+\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI(#C"n;'Qo(2MQo`=d\rV-Bg
+rqcTjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTgV=<91quV:f-UXrD<Dhs%rSgoMG$Qs%r\l!`Dlm
+r]:-A3VZbV>4bte=Sl8$=9;W-=T)Cm=T2J'=Su8#=T2D%=T2Cu<r5rH=Eet7H?sseI=HctJV/T.
+KnbA=M2@+KN/`jYO-#KeP*;,pQ'IZ%Qi<?RR@9TBS,SrVSb\lUSc5/WS,\oWRJiKRQ^7W9!L/fI
+P!5"iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?jaZGBS+NFE;JBEH#l8DJj<-CMR[!BP;$k
+An>OaA,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GPdS
+7f5^J7/0.B6MWqIdMgWdf\,$8hV[;Oj5oFelKdg)n+-)Dp\F^`rdk*#s8;m)Y'aec>?P$.<``:"
+r_s/';c?Xo;c6Ikr_ibn&l;J':f'q`:esna;G^1b9i4\_r_EVk:Jjpe:]O;Z;#io[6N0@L7/o^U
+7f>i+84cBF8kViO9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6
+M2I7PO-,WkQC+,1SXuOLUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_V
+jlY^hl07O#m-X6@mfi4No()DErq-<cp\jjeq>U6hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS2CGN2NnV[/@91ZM^uuYkbL$YkkX)Z2h60ZN%92
+[/@<3[f3c8\-9FS]=bhkr/UQhpr!*Lrl+WOpr36PrQ"lVqT&HRrQ5>fbg"GYd*_a>rm^ens4%)!
+qU@%GGBeF[H[U<kJ:N3&K7nr5LPUeDMi<USNfT6_OcklkPa.N"Q^=),R@0NBS,]#YSbJ`TTD5#W
+Sc>5ZS,\oWRJrTRQU-q&Q'@JrP*1rhO,o<\N/W[PM2@%DL5(D8K7ec,J:N)sI=-BfH?jaZGBS+N
+FE;JBEH#i6DJa3+CMR[!BP;$jrac+@A,]p<@:9(A!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6MWous+14+rsnhrn*B6%kN1dai8EMKh#>tQf@AC"
+daHCcc-=JTb/q`KbKIrF_ns4(^:_"d[C!<K\%&lT\$c.BosOfcr'L?Lr'^QRs$lrWIRm%%8kM`M
+9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+
+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--
+s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS1n'EdraoM>W;3MZ8P%MYDu-MXuc+N;nn7Nr"_8
+Nr>%:DYTOtQi3<OQiE?PQ^70.rg<SLrL!PMm?e$ER[]h<m[jHN!1s.[s.1]aG^=[_I=6QpJ:W<)
+KS>/9Ll$tHN/WaVO,oBbP*2#nQ'IZ%Q^F/.R@=)Ds.'+[pR_AVpn%JUs.'(Xs-`qUrg<_P6'de$
+P`q;oP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQs
+BP1rVAH?=OraGn:@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[
+q+(BQr'g9Hpd=^@q*BT3JcF[.)V<$L\$N<@X/i8"Wi)blV50l]TqS*MSXuCArL+"ZQ^F,)Q^!c"
+rf[VMOH>K^N/EIKrJCW3MXQE%62X(J6i9@P7K5jU7t+!#8P2TJ9MA/T:/=\_;,^Cm<E<1'=^#$7
+?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;[C3TU
+]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0i
+qYg<jr;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS1.H77g-G:ZbOS;#=&\;".9[;#aAm;Z0Gn3BI.$
+p0%Auq,urarE9#"r`SbnrE0,&r)`l"r`9)%r`Aqsr)Y@lG^=[_I=6QpJ:W<)KS>/9Ll$tHN/WaV
+O,oBbP*2#nQ'IZ%Q^F/.R@=)Ds.'+[pR_AVpn%JUs.'(Xs-`qUrg<_P6'de$P`q;oP*(ieO,f3Y
+N/NRMM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1rVAH?=OraGn:
+@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@
+q*>tKe^rI.gtglGiT'"\kiqBumI'N8o_/%TqYU8Cs+14Lrs[kREa`?Z=BAO'<`W/u<!cQ';GpIm
+;c-Cir_`Ph#u4;n:JFV^:ejgc;#O2i:]O;j;#a;Z;?&r[6N':L7/o^U7f>i+84cBF8kViO9heAY
+:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,WkQC+,1SXuOL
+UnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4N
+o()DErq-<cp\jmeq>^<iqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7l7BMQ!bY['I$Erj)R/oW\:trN?"#s02C*s0;X0
+rNcI0rj;X3rjDg9rj`!="hVF\^;%J^NqL9a_u@UR`V7CI`VmgVa8<mRa83jWao9EebKS5VcHsu7
+df@noe+qMndiNaZH@($fIXcm!JqJ`1L51SAM2R=ONK0'\OHPcjPl?pPQC!u+R@0NCS,]#YSc,/Y
+TC\`TTDY;\SH,2ZS,\oWRJrQSQ^7W94d;.nP*(ieO,f3YN/NRMM26qAL4t;5K7SQ'IsufoI!^0c
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%!``3!
+rDNbq;,R9gs%iYir([2br_*/]rCQuZqFCKRr'g9Hpd=^@pd'K2JcFX-2"pP.lKIHojlGI[i8<AG
+g=b02e^W'rd`p(^c-4;OaN)KIaiD?;^qdXs]XbM[ZEpsI[^Gq>osOfcr'L?Lr'^QRs$lrWIRm%%
+8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<c
+Q'Rf+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?t
+m-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7kb#Dgd7jrJUZ4r/(0*nqmC(oS`a.rf-i9q2P<5
+!0I.sop5WEr0Zi;rg<PKs-W\Mm[+-FR[]h<l^n'G*dDsVH[L6jIt3*%K7nr5LPUeDMi<USNfT6_
+P*2#nrfm\RQ^F/.R@=,Es.'+[rLWt[o:Z)Tr1<qZ!1a%Xs-`qUrg3_QQN!.4P`q8nOcYWbNfB!V
+Mi*@JLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S$Y3aV@UW\Q
+?XI,G?2e(1>?Y50=TV],=8l5%<E)rr;Z]io;>j>k:]F2f:&dod9DhE\8cD9W8,YpT7J0(D6hNe@
+6%T&es5X,=m`rnn[Bm'<WiN/!Wi)blV50i\TqJ$LSXuCAR[TY4R$X,)Pa@Z#PEM)kOcPN_NJi[M
+M2I4LMX?9#62X(J6i9@P7K5jU7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]BP;-r
+D/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R[]k>Tq\?ZVl?\tY->1;[C3TU]=bno_Sa@4aN;WL
+cHjnde'ut#g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0iqYg<jr;HTerdk*?
+s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7jtE7S6<J:JgFUrD<8bohbEZ!)WJes%rMg!)WVS
+o3)&rr`S8`s&o,!!*T,"!*B#!rE0,&r)`eu!`rK+r`Attr`:.cH$XgbI=?ZrJV&N-KnbA=M2@.L
+N/`jYO-#NfPEc'3#*tUCR$jA2rgWqXs.0+[rL`\Srh'+[s.'.[rgWqV!1EhR!LK,OPs(@qP*1rh
+O,o<\N/W[PM2@%DL5(D8K7e`*J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jracIJ
+@q&nU@:3GL?=$q:>QS,5>5hY+=BAT'<WZ9#<;f_s;Gg<i;#a>k:Adid9`@]_9)V?\8GYjT7f5^J
+7/0.B6MNhbf%A^2h;7&JioB._kiqF"mI0T9o_/%TqY^>Ds+14Mrrp>rB4>1Mr`B,#%96>+<)lps
+;c6Rn;c-Ek;@uc&:esqb:ejh_:/4S^:f'qaqG.;l:Jak`:JgLWs$?QLrBpKNs$crWrC;<-8P)NH
+92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!K8,/<MN!RVOckuq
+R$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&
+mI(#C"n;'Qo(2MQo`=d\rV6Egs8)]krqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3#M4LfR\,EW4Z2Cj+YPYR%YP51#YH[o/!jJr7
+rNcF/s0Va4rjMj9s1&*>#eRa_^;%J!_86,2o>1OG_Yh=L`;[aM`q[ON`W4'U`W4'Y`W4'UaT'B^
+ap-&5c-=P\dIG]`eGdo?G^=[`I=6TqJ:`E,Knb><M2@+KN/`jYOHG]hPE_>tQC%T<!L]DURf]+N
+Sc55[TDtSPU&L_bTDbA]SH,2ZRg,=LR@'A.QN!./P`q8nOcYWbNfB!VMi*@JLkg_=KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C&VcWB4b^dA7T1Z@UWYP?XI,G?2e(0>?_#/s&]8&
+rDiu"<)iiqs&/korD<Mis%`Jds%NDbqb$iZr^clUr'pTQogJUCog8F>JcC<$ir:%qq!m\6l/q$f
+j5T%Thqd,Cg"=p-e'cXkc-FSXbl5Zu`lcKHa2Gm3^qRIm\@&ZL[C3TR\$u4BosOfcr'L?Lr'^QR
+s$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DK'T:FEVkRH@1-jJ:`E.
+LP^nINfT<cQ'Rf*S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC1ieCN7)g=tH>hr*JR
+j5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n2hDg?qfrepf6qMG$*nqmC(oS`^-s,Ho9qMkE6
+rf@,Brbh=ns-NVMm$Ia>q3M)KqNp`>s-EkVR[]h;m%43I+aA<ZI!pEmJ:N6(KS>/8Ll$tGN/WaV
+O-#KeP*;,qQ'Rd9QiWVDrgNtZSXobOrh'4`m\0WQs.B7]s.'.[rgO+\R@0G0Q^7W930]ViP*(ie
+O,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]
+@U`bR?sd8I?=!P8!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9D_?\8cD9W8,PjS7J0(E
+6hNe@6%T&es5j7biQAsJ[]ut6WrAt;VPg8eUS=NVTV%gHSXc1<R[KM1Q^=#&QBd_uP5^RJO,f3Y
+MM[/fM?/QkmYUs0r'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7b
+BPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:
+aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBf
+JcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n2J77g3K:$tmV;#*o];"mcc;#*od;#4&g:]O;j
+3Up8O>5qaa=9)Lq=Su7s=T)A&=Su7q=T)>"<[(UiH?sseI=HctJqJ`1L5(M@M2I7NNK0']Ocklk
+Pa.N"Qi<?QR@=,E!h>gPrgs+]s.JeRrh0:`rLX%[!1a%X#+CsJR$a5+rfoI-PEM)kOH5H_NJrgS
+MM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM
+?X@&Er`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]^9)_E]8GYjS7f5^J7/94C6MNha
+g"Y<<hr!AOj5oIflKdj*n+$#ApA"I[r;M9IJc?/XWd85[=]ng,<E)srr_iu#<)Zap<;oeq;%QW&
+;,C(b:f1"`:esh]:Jagc;#F)j:esmd:]X?emSX!Mr'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb
+;H$Op<``C+>$G6;?XI5N@qB7bBPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.EU84W`
+WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8B
+o`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2uJs`LBYHb@<Z*F83qlg"'s0)I*q5s\"ric4'
+s0;L-s0Ma4rO)X5s0r$<s1&ZO]Y2%o^qde&_SV=n_SX4\_Yh:S`5T^6`;[aM`q[OB`W4'UaSs9d
+b0/#Rc-F\`rmUnqo[Efh-.@-cH[L6jJ:N3'K7nu6LP^kFN/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%M
+rgs.^s.K:`rM'%]rM'4`s.KCargs.\!1a%X31?8&R$X/*Q'IStP*1rhO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-?eH$FOWG'.nKF)l8?E,Y_n%W-#tCMIQsBP1siAS#C^raGn:@/aL<?<piA>[(E9
+r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g6Gq*XgApd'K2JcFg2*Vf6o
+lKRNnjQ5I]inrYLhV?f;f@JEtdEp.`cHON3`tcS8bK7cA_nj+%]"#5WZEpsI[^W]SqR6()s$?QL
+rBpKNs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBnL^
+I=Hd!K8,/<MN!RVOckuqR$jG7StMgRV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9Fbg+P^daQ^sf@em4
+h;-uHiT&tZk2tmll0I^&mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2fC3Y8_reUW4qhb9/s,$`4s,$Z0qMG3/oS`a.
+s,Hr:q2GB7rK$o=s,m>!s-<YOop5QCqj?]9!1<>DoU,NB#+:pLS=H.@m[b_qH$XgbI=?]sJV/T.
+L5(J?M2I7NNK0']OcklkPa.N"Q^F/.Rf8cWS=TYNs.B=ar1X(`pS7\]r1X.`s.B:^s.'.[rgPm9
+R@'A.Q^3o%P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH?sj]GB\4QFEDSEEH,r9rb`3_
+Chmg$BkV0mB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDb
+r(?r[rCHcTrC6]RoL/LBog8F>JcC<$kl1qfe]GnAZEL=0ri.KJW2?JhV50i[TV%jJS=Q1>R[TY2
+R@';+Pa7T"P*1riO-#B\Mi!7HMMmAXM>om>6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat
+='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-
+Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4No()DErq-?d
+p\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2K7S-9J:[_0\;"mc`;"IK^;#!ic:]XEirDEMi
+s%WSU3V-AR=T)D%>5qa[=9)G!=Sl1r=T;M+>$4s0rE&brr)`o!,^F]_I!pHoJ:W?*KSG5:M2@+K
+N/`jYOHG]hPE_>tQC!u+R@=,E!M#_[T)YG_T_tM^UA(G]UAU_bT`:Y`T)Y>]SGo!;R[KP1Q^=#'
+Q'@JqP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!U*aG^"@TF`__HEcH)<DuOVaD/=!'C2%?p
+B4kgfARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8c;3V
+8,YpT7J'"D6hNe@5oAD5hV[8Mj5oFdl0I^'mdK`<o_8.Vqu$GEs+:7lgm)ee@Tcc7<`N*s;,^Im
+<E)mq<)cao;Gg7h;,L-g:`*&*:Jah_:/Fb_;,C(b:JOY\:Jah`:esmS;?&r[6N':L7/o^U7f>i+
+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7P
+O-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ug
+l07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2rJ<lq8Vm3J1YPk^*Y5ka'YPbR'Xo>F"XoGR'
+YPtd+Z2Cp-Zi@E1[K!]8\,Wu<\HodY]tV7s^qmkc_Z,Yq_Z%ID_Yh:O`;[^U`;[aL`qdUC`W4'U
+aSs9db0/#Rc-ObarmUkpp!`oi-@1&fIXcm!JqJ`1L51SAMMmFQNfT9aP*2#nQ'Rc(R$jD3S"#q=
+rgj1`TV27Ws.]Lfn>-&Ys.]Ics.B@argj=bS=H(<R[O/B5aRe%Q'@JqP*(ieO,f3YN/EIKLkg_>
+KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e+/
+>6%k+=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9D_?\8cD9V8,YpT7J0(D6hNe@6%T&es5s>:
+p\*t=l0%6ljl,7Xhqm2GgtCB3f$i!nd*Bn\bfe&H`l6'Cai207^q[Rq\@8iO['mLD[fEi4[e@-.
+62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJ
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkn_Sa@4aN;WLcHjnde'ut#
+g"P3:h;@/Lj5]4_k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2dCNY)[L&$T(MZ&D,M#3&/MY)i,N;nn9NqeV6
+NrG+<OSt=ADZ5t$Qi33MQi!*IQi!0/QiEHNQhm*CQN<MCrg`tYn=D"uH@1-iIt3*%K7nr5LPUeE
+Mi<XUO-#KeP*;,qQC!u+R@9S6S"-&KScYOWT`(SaUAgqWV#I.hUA^ecTE(V`Sd(aUS=?":RJrR=
+Q^3o%P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$
+BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZ
+r^ciTrC6]RogJRBog8F>JcC<$lMh+Tbeq-&['$J.W[4XBVl$;dUnXQTT:VXDS=H(;R@'>.R$O#$
+QBd\uPECuhNfK'VreUf:M2I.HMXQE$62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'
+=^#$7?!grI@Uit]B4u$qD/O<4EccGJH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:
+['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olKmm)mf2_ZnF?)?oCW%T!quB_
+rqQNhs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2J7S-3F:@V3];"d]`;"[W^;#!ic:]aKj;#X>j
+;#O/h48)hS=T)D%>5qa[=Su8"=Sl1r=9)M'>5q_'=85np=!i6@I=?ZrJV&N-KnbA=M2I4MNK0']
+OcklkPa.Q$R$a;1R[]e:Sc52^T:hkUU&UkdU[Y)YU]7(eU&UbcTDkDdSXc4>S!ocEQp@"(Q'ISt
+P*1rhO,o<\N/WXNM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1rV
+AH?=OraGn:@/aL6?=!P8s'#J,r`K;)=',B%s&K(ur_rhps&&_ks%iYirD!8bs%E5]r^m)[q+(BQ
+r'g9Hpd=^@pd#_PhVmJSjQ>[jlKdg(md]l>p@n@Yqu$GEs+C=n^P$9->$+m.<`E$r;H$Oq<E)jo
+<)Z[n;,L.f;,L+br_NVk:B"#u:/=\_;,C%`:JOY];G[9g!DcJY;>rlZ6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,Tj
+QC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2oH]k2/V6I3$YPbR'YPkX(Xo#3uXT5O%Y6(r5
+Z2M!.Zi@E1[JmTB\%&rY\[oDd^;%J!rk\NLs,HQcrk\TNr58QQqSi-IqSi3KrPefV"38L)ao'6Z
+aTou3bKS8Xd*_jArR1Gh-IU@iI=6TqJ:`E,KnbA=M2I4MNK0']OcklkQ'IZ%R$a;1S"#q=rgj1`
+TV2:X!huHbqkX.dqkj:fr1s@fs.]Lds.B@argl]PS=?":R@0G0Q^3o%P`q8nOcYWbNf8pTMM[1G
+LPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mB)Z?LA7K(X@:<PN?X@&E
+r`fM/>$Co.!a&N*r`9&!!*&nqs&&horD<Jhs%`Mer_3>bqb$iZr^ciTrC6]RogJRBog8F>JcC<$
+l2UeZ"7YU?l2KfsjPf%ThVR)Fg=b01e^`'pd*Kq\b0.lG`l-!Bai)*5^qRLp\@/`M[C3NO[^Z(@
+p9jlcr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8
+FEMePH@1-jJ:`E-LP^nINfT<cPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoRcdC.h
+eCN7)g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2cBQJTTK):E'MYr>,M#3&/MY)i,N;nn:Nq\P5
+NrG+<OSb1?DZ#guQiEBOQi*0KQhm*.Qi<BMQiEHDQN<MCrg`tYoUc&Q,^XrfIt3'$K7nr5LPUeE
+Mi<XUO-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSI^^r2':fr2'=es.fUgrh9@b!2'7^8Y)B@
+S!ob5R$a5+Q'IStP*1rhO,o<[N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3
+D/=!'C2%BqBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_o!)`\kr_NPhrD!8b
+s%E5]r^m)[q+(BQr'g9Hpd=^@pd'K2JcG*:38Ma)\$rTBXK&;"Wi2hnV59u_U7n3OSXl7>S=>t7
+R$X2+Q'IQ!Q'7ApP*(fcNJrdPLl.+JM2LeZreg\@r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINfT<cPa7])S"6.DU84W`
+WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoRcdC.heCN7)g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8B
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2H6Uj[?:@_9^;"mca;"d]^;#*o`;#X>j:]O;h
+:B*EM=oVV(=o;D$=oDM(=km-T=8l>"=8H#!=oMS*=]kW(pK7Dr,^XrfIt3'$K7nr5LPUeEMi<XU
+O-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSI^^r2':fr2'=es.fUgrh9@b!2'7^8Y)B@S!ob5
+R$a5+Q'IStP*1rhO,o<[N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'
+C2%BqBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_o!)`\kr_NPhrD!8bs%E5]
+r^m)[q+(BQr'g9Hpd=^@pd#YQioK7bkih@!m-X60nac>Gp\F[_r.4m$s#TqRG@P2f=BSX&<)QRm
+<)Zaq;c6Lm;c6Ok;,C.f;,C"`:Jah^:JO_]:JXea:ejb]:/4V^:Jak`:[M$Y62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/is]P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_Sa@4aN;WLcHjnce'ut#g"P3:h;@/LioB+^
+k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/nGE&K(UpBs&s/l@(poaUuqQ0[ur3$('#-bA;
+ZEggCrj2^6[/RK5[K<qJ\Gj#B]=bkm^qfobqSN6Lp;-gGrPJQMrkeTNs2=cQo>^^Ipr<3M!li:%
+rlP/\rlP2_#0Y67c-ObarmUnq!7CeorR:_n/UVtqIt3*&K7nu6Ll$tHN/`jYO-,TgPEhE!Q^F/.
+R[]e:SXuFFTV/!PU8"F]V#I4iVXp_bVZ*FjU]R<cUAghjTV%jJSt2DNRm3@0R$a5+Q'IStP*1rh
+O,f3YN/NRMM26qAL4k23Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]
+@U`bR?sd8I?=!P8!aAi3r`K;)=',B%!``3!rDNbq;,R9gs%iVhrD!8bs%E5]r^m)[q+(BQr'g9H
+pd=^@pd'K2JcG'91&(M2lfmWrk2tX_hr!;Ih:pW8f@SL#dEp7cbg";QaMu6<aNM]D_nj.%]t:b]
+ZEgn;[K3kFq6p")r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^V[n-
+`lQ9Fbg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/`Ao`<RJVsG`!/gc4!/g`3oSEO(s,-K-s,?r:
+!06`3s,R,?rK-f:r0RDKqj.;KrKmMLrg3JKiKsP2ns9?Dr0IJPR@=,FrgihUr1,EeI=?ZrJV/T.
+L5(M@M2R=PNfT6`P*2#oQ'Rc(R$jD4S"-%@StD[KTqS3TU]%"fV>d@`VuERmV>[1kUS=L^Ta%0^
+T:VXFSGo!BR[KP1Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+EH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mi
+r_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8F>JcC<$n,EXge&fV<[]Z_0WrK!qV$s,nTqJ!JS=?"<
+S!fZCQiE?NP7WtDPEM,lOcPN^N/EFIMMmA[M>iD362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_Sa@4aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/F77KmB9i1L[s%rDbrD<;cpeUue;#O2f;#aDm
+;#aDk:]O;e:&nJr=oMP#=TDS&=oMP&=oDM(=lNQ]<rc@u<s)Q-=BPQ(q,dW"r`]>)!*K5%p/ino
+I=?ZrJV/T.L5(M@M2R=PNfT6`P*2#oQ'Rc(R$jD4S"-%@StD[KTqS3TU]%"fV>d@`VuERmV>[1k
+US=L^Ta%0^T:VXFSGo!BR[KP1Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)ifp
+!`DlmrD<Mir_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8F>($"B<kiqC!m-X3.n+$#ApA"I[qu6SG
+s+^Omf90uY?s-Q4<E)mp;H6Xq<Dudo;Gg=i;c-=er_X)":/=Y^:/4S[:JO\\r_WVi!`)Qdr_NPj
+s%`VmmSWsLr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="
+DJsN8FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoR
+cdC.heCN7(g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@
+s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/lG)DrmX0o+5XfhT(ql]t$pT4=qs/lO/Yd(I=
+ZMq3/[/IB5[^Z7Gs1&6C]Y;/[_#2%2_Yq=M_Yh=O`;@OD`r3jV`r*gT`r!aT`W4*XaT0E]aoBN`
+b66&6cd:)=e,RkrdJ;5jI49YrJV&N-KnbA>M2R=ONfT6`P*2#oQ'Rc(R$sM6S=Q7CT:_dMTq\9V
+rhTRjs/,[kor._bs/,gmrhO"uU8"?TTV.pKSt2CAS"#k7R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+KnP)2Jq8H&IsufoI!^0bG^"@TF`__HEcH)<Df9N2D/=!'C2%?pB4kgfARo:\@U`bR?sd8I?![G7
+!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe@6%T&es6fpe
+r%Rg1l0@EnjQ5I]hr3GIg=k67f@A@!d*L%`bg";Qa2Z-;a32TC_SO%%]t1\\ZEgn;[K3kFq6p")
+r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAnPdlCMds-EH6/D
+GBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRh,`lQ9Fbg+P^dF6Ur
+f@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/^AT<*JKT#P\on`R'r/1?/rf$E-s,R,?r/gZ8
+q3V,IpQtiErg3JKiKjP3lB_R>R@=,FrgitYqORY7.=Zl!JqJ`1L51VBMi<UTO,oEdP*;/rQC!u+
+R[]e:SXuFFT:hmOU8"F^V#R:kVYd:aW;<FlVZ3LlUgg*nU7n9RTV%gISXc4>S!ob4R$X,(Q'@Jq
+P)t`cNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[9s^GB\4QFEDSEEH,r9Df0H0Chmg$BkV0mB4b^d
+A7K+Y@UWYP?XI,F?2e(0>?_#/s&]8&rDiu"<)iiqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]R
+ogJRBog8F>JcC<$nc&gWbKRQ,[''D.s/H!r&>c8"US=HTTUq^ES"#q8R@*u>(6k)IPEV8qP*1ri
+O,f3XMMR(GMMm@Ln;7.%r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D
+@:E_XAnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg
+^VRh,`lQ9Fbg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/I7R]sB:/LX]s%rGcrD<;cp/(`ar_NVm;#X>l
+;#aDj:]O;d:AJ&m=SGts=T2J%=o_^b=S#Sq=BSf+=9)Fu=9)M'>5qb*=T;It=T<duIt3*%K7nr5
+LP^kGN/WdXO-,TgPEhE!Q^F//S"#q=St;RHTV8'RU8.^`s/#amqks+cqPX@js/#^j@\]ZlTqS-P
+T:VXFS=H(<R[KP1Q^3o%P`q8nOH5H_NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;JB
+EH#i7DJj<-CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#Dr`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k
+:Adid9`@]^9)_E]8GPdS7f5^J7/0.B6MNh[jQ>XilKmp*mdK]:oCVePq>1$gJcCK)%(q4+AQi8=
+=B&6t;,dHos&1=D;c6Ij;c6Ff:esqa:JOY\;,0k_:/=V\:/=\_:/4S[:JX_]:f'q^m8<jKr'L?L
+r'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-j
+J:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_o9X:aihoRcdC.heCN7(g=tH>
+hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LF,-3a[(61<s/c(!!3Z='pT4=qs/uC*s02O.
+s0Dg7Za@+<[0j@O\%&rY\[oGe^\ttG_;iE2_>_=L_uI[P`UUt@`;mpT`W*pXa8!dVb5]Wfbg"J\
+dJhVpdf.YldOBTnIt3*&K8#&8Ll%"IN/`mZOHPcjQ'IZ%R$jD4S"-%@StD[LTq\9VrhKUlVPa<i
+s/>mqp8\(js/>mos/,gmrhKRiUAgi`TV%gISXl:?S!ob4R$X,(Q'@GpOcYWbNfB!VMi*@ILPCP;
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mAnGUcA7PUJ!F]C8?O'nC?!LW=
+>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbqb$iZr^clUr'pTQogJRBog8F>JcC<$nGb9>
+qsNb6l/q-iio/hShV?o@f[ng-eC)dmcd0n\bfS#J`l?!<aiVK;_SEn!]!o)QZF0\?!OoK4[eI3.
+62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJ
+G^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L@r6ICL5Ptes+pW1oSEI&pPT!/s,6u<N:`)0
+NrG+;OS+b%Qi36KQi!0&Qi<<EQiEERR@=,Frga%\pmij^IXcm!K7el4LPUeEMi<XVO-#NfPEhE!
+Q^F20S"#q=St;RITqS3TU].%jV5C-gVuN^oWV3@jWW/pqVuNXoV>d7kUS@a];4sPQSt2FBS"#k7
+R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&
+C2%?pB4baeARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\
+8cD9W8,PjS7J0(D6hNe@6%T&es7?71gs!sN\$)p7X/`.uVl-DgUna]ZTV.pKSXl7>SGnrVQNNM;
+Q'2*1!0[>D$'1++Mi*=HMMd>[M>rJ362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:
+['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_
+rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L77KjA:/Cjds%rYkr_W>brD<;cqG7;l:f'q`
+r)!>h!)WYlr)!DhpJ1$WrE0&%r`]>)i`PeR!*K5'p/h;tr`]>)r`B/%qH,1pIXcm!K7el4LPUeE
+Mi<XVO-#NfPEhE!Q^F20S"#q=St;RITqS3TU].%jV5C-gVuN^oWV3@jWW/pqVuNXoV>d7kUS@a]
+;4sPQSt2FBS"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__H
+EcH)<Df0H0Ci!m&C2%?pB4baeARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9W8,PjS7J0(D6hNe@5n`;Akj%L$mI'H5o(2SLq"agbrdk**ru(I)F_"o`
+=BAL%;c6Ik<)Q^p;H$Lk;,U:hrD3Pm:JUmb(Jmk%:esk^:ejb^:ejb]:/=VZ:Jak`:$tmW62X(J
+6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=ac
+It3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8
+h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LE.aOUZa?k3XSf3nXSo:$Y5b^*YlD!.ZN%91
+[/RK5[Ks@P\@K/^]Y2&W_#(t,_Yq=M_Yh=O`;[^W`l5pj`p(JB`WF3%aSO!baNDZKbg"J\dF8'B
+qp?d>It3*%K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S"-%@StD[LTq\=]U]I<hrMT[os/GjpqQ'Fl
+s/H$srML%#V59u`USFQWTqJ%WSk#?AS"#k7R$a5+Q'@JqP*(ieO,f3YN/EIKLkg_>KnP)2Jq/B$
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],
+=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J'"D6hNe?6%T&es761Jp\F7CmHE`p
+jl>:ViSN>Dg=b35e^;gmd*Bq]bfn2OaMl0<`lH3>_8=%&]t1\\ZEgmH[^Wa@[eI3.62X(J6i9@P
+7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'
+KnkMBN/`m\P*D9"R@Bb=TV80XVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/L
+ioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L@V^1;L5LibL]E;'M#W>+MZ8V5N:`,.O8P+1
+Om8;3QMd*IR,"&'QMQpOQC!u,R@=,Fqjd_YrLG<aIt3*%K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4
+S"-%@StD[LTq\=]U]I<hrMT[os/GjpqQ'Fls/H$srML%#V59u`USFQWTqJ%WSk#?AS"#k7R$a5+
+Q'@JqP*(ieO,f3YN/EIKLkg_>KnP)2Jq/B$IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE]8c;3V
+8,YpT7J'"D6hNe?6%T&es7ZI!ps@*u[^N??X/l6!s/-1"VPBr]U7e-MSc5,`R[]b6R$X0=PSKCH
+PEV5oOcbfeNfAsSLkpqHMM[1GnVR:'rB^?JrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"
+=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMdQV5L;mXKA_3
+Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L77Ba@9M\O_:]OAh;#F,c;#F,f;#O8j:]O;i
+;"mic;#a>`:?l!\=T2J&>5qab=S#So=T2Is=9)M'>5qb#==8NHJ:W<)KSG5;M2I4MNK0']Ockom
+Q'Rc(R@9V7S=Q7CT:hmOU8.^`!Mu[lVuN^qWVWXkX8/dqWW/pqV[KAuV50o^US=HUTV)4T8"H0>
+S!ob4R$X,(P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-
+CMR["BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDb
+r(?r[rCHcTrC6]RoL/LBog8C=&a&<AlKmp*n*ol>p@n@Yqu$GEs,$ade<"NT?!130<E)jn;cQds
+rDW_nr_`bn:]4,f:]F6,:Jjn_9i+S[:f0t`:JO\\9i"S^:JOaT;>ifY6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VI!pKpJqJc4M2I7OO-,Ti
+QC+)0SXuLJUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LD1IqJZD[T$rN5^nrN6+&s0)I,s0;U0s0Ma4
+rjDd7$+IFS\[oDc]tV8[_"tn7_Z.IE_Yh7M_Yh:O`;R[M`p1MC`r*gU`W4'YaSa0Yaooo3c-Oc6
+deqK<It3*&K8#&8M2@+KN/is\OckomQ'Rc(R@9V7S=Z=ETV8'RU].%iV5F6is/5psrMojtqlKau
+qlKdtrMomss/>pp!N)^mUemh\TqS-OT:VXFS=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t84
+Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3
+r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8br_*/]r^m)[q+(BQr'g9Hpd=^@p-F90JcGHD(&Iju
+lg=-*kN1aaiS`SMgtLE6g"=gRdKn4GccjVXb0%d(`W*siai2*5_7mUo\$iTJ[C3NQ\+mE+[J`Dh
+6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>Fa&(V
+H[UBoJqJc3M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`Q$!@bKS8Wd*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?Yae6KS8]Js,$K-s,6i7p5K'4r/^f<n<*I3
+s-E;Dr0I8Irg;W1rg!PNp6PN@".5LFRf8iSSc>;]SKr]8JV/T/L51VBMN!LSO-#KePE_>uQ^F20
+S"#q>StD[LTq\=]U]I<hrhodp!3,psri>ptrN5suri?!ts/H$srhfdoV>d8eUS=HUTV%jJSt2C@
+S!ob4R$O#&P`q8nOcYWbNf8pTMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-
+CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Mer_3;a
+r(?r[r^ciTrC6]RogJRBog8@<JcC<$q>VQ!cHj&1Z)t.2X/`+rW26;cUSFNUT:VUDSXZ+=R[KQB
+Qi<3NPE_=2PQ-aSP)bQ^Mi3CIMMm@KM2:\Ys,-b@r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<`W=*>$G6;?XI5N@qB4aBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_
+W2cr$YHbF@[^WfZ]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8B
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6q'[A8l+nP!)N2_!Du\l;>X2f;#jMl;>j>k
+:\%9T=oVUr=o;D%=oMV)=lNQT<rcA%=nYqt=oMV)=nu/FIt3*&K8#&8M2@+KN/is\OckomQ'Rc(
+R@9V7S=Z=ETV8'RU].%iV5F6is/5psrMojtqlKauqlKdtrMomss/>pp!N)^mUemh\TqS-OT:VXF
+S=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t84Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3
+D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8b
+r_*/]r^m)[q+(BQr'g9Hpd=^@p-B5RlKmp*n+#u@p@nCZqu$GEs,-gb\US@*>?Fp*<E)jo;uTc"
+;c6Ol:]4/g;#a<29hnJ\:eje_:JOV[:JO_`:/=Y\:JOV[:f'q_;"%9[62X(J6i9@P7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\
+P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!n
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LC4)2@Ybh9!rN5^nriQ4's0)I,s0;U0s0M^3
+rj<-B\$rlW\[oDd^;%G^_"bb3_Z%CM_>qFK_Yh7M_Yh:O`;R[Q`ob8>`r<sW`W4'YaSa0[ap,u1
+bKS8Xd/DDjd3jHqJqJ`2L5:\DMi<XVO-,ThPa.Q$R$jD4S"-(AT:hmOU8+N[V5F6i!iW)tri6"!
+s/bUiriH.#ri6!t!3#mp#,\5nUnjc[rh2fST:VXFS=?":R@'>,Q'IStP*1rhO,f3YN/NRMM26qA
+KnP)2Jq8H&IsufoI!U*aG^"@TF`__HEcH)<Df9N2D/=!'C2*Z\&8,TdARo:\@U`bR?sd8I?=!P8
+#[:J9=]nj/=',B%!``3!rDW_o!)`\ks%iVhrD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@p-F90JcGNF
+1\gk8lgaH.k2kU\hr*>HgXt03g""Ktda6=ccHXSVb/hT@`Pfd:aMu$4_8![p\$rZK[JmT7\+mE+
+[J`Dh6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>
+Fa&(VH[UBoJqJc3M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5]m?bKS8Wd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?"e8-KnAZI!/^K.s,6i7p5T*4rK$o=mZI1/
+rg*ML!1*JJqNh)Hs-Vo7q3M#Hpm1`B".5LFS,SrTSc>9/J:W<)KSG5;M2I4MNK9-_P*;,qQC!u,
+R[]e:St;RITqS3UUnjiarhfgrWN#lss/Z1$mB-Ahs/Z.!s/?!srhfstV59u`US@a]7\HBFSt2C@
+S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCM9K7ec,J:N,uI=6KhH?jaZGBS+NFE;JBEH#i7DJj<-
+CMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`f_5>$>'3=BJX+r`0)#<)ifps&&horD<Mir_EDdr_3>b
+qb$iZr^ciTrC6]RogJRBog8@<JcC<$qu7PebJq!"Y,ne/WiE"qVPL#^US=ERT:VRDSGo!!R@'D/
+Q^3o#PEM,nP*;)kOcbW`NJi^OLl.+KMM[/ZM>rJ362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.1aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6pjF98l+GCqbd5er)*JlrDEMis%i,Zoi_8r
+rE0,&qH<Ysr`]>)i`PeR!*K2&pK.Dur`]>)qcG4rJV&N-L5(M@MMmFQO,oEdPE_>uQ^F20S"#q>
+StD[LTq\<XUnssfVZNfrWW&ptX8f9gXo>F%X8].!W;rmrVZs#pV50o^UAgiUTV%gISXc1=R[KP0
+QBd`"PEM)kOH5E]N/W[PM2@%DL4t;5K7\Z)J:E#rI=-?eH$FOWG'.nKF)l8?E,TZ4DJa3*CMIS_
+BFnfgAS#C^@q&nU?sm>K?=$q:>R4P;>$5!1=BAT'<WZ9#<;fbq;?0Sm;#a>j:Amod9`Ic_9)_E]
+8GPdS7f5^J7/0.B6M<\SlKmp+n+$#ApA"I[qu20HMuO%NTlOXN=]ec)<=Dc);cH[n<)HUl:f1*e
+;#a>i:)$N":JXe_9heDZ9i+Y^:/=V[9hnL`:]X<fmns$Lr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjI8aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LCO(o:X/3#dXT,F&Y5b^*YlD!.ZN%92[/RK5
+[Kj:O\@K2_]Y4<Zs1n?El,*D8rke]Or5/?I!5eZOs2=3A!6"QLrPnlVrl,#[aN48#rlPDfbg+P]
+dJhSod5'(!JV/T/L51VBMi<XUO-#NfPa.N#R$a>3S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%XSo:"
+Y4f'tY5GF%X8o=#WrK$uW;`[uVPU)aUS@a]:S=>OSt2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[.E
+L5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>OaA,]p<@:9(A!a]/<
+r`fJ.>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>k:Adic9`Ic_9)_E]8GPdS7f5^J7/0.B6M<]rs+14I
+s!%F9q<d\An*&ooiSrePhV6c:g=t9.d*^4dcd'bYb/qcHa8NsfaN)98_83n"\[]/SZF.-Kp9sb(
+r'C6IrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q60EbK\>ZdF6Ur
+f@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?"e8-JUr[GM#E2-MZ8V5N;&>3Nr>%:OR/,%
+Qi36LQiEBLQhm$-Qh?[CQi*-NQ'Ra3QNNVCR[a2ErgbcoJV/T/L51VBMi<XUO-#NfPa.N#R$a>3
+S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%XSo:"Y4f'tY5GF%X8o=#WrK$uW;`[uVPU)aUS@a]:S=>O
+St2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i6
+DJa6,CMR[!BP;$kAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>k:Adic
+9`Ic_9)_E]8GPdS7f5^J7/0.B6M<]rs+14LruCXWd(?`oY-"k/WiDtpVPBo\U7n6PT:MLCS!ofE
+Ql26VPa.JrP*;&mP*:rgOcGH]N/EFIMMm@Lmth%%r'C6IrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\
+:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQ
+V5L8lXKA\2Za@0M\\#Mg^VRe*`Q60EbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Q
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6UO@88kVtF;#O8k;".<^;Z0Jj;#a>Z:@q]f
+=T2J'=Su=u=T;P(>5qaa=S#Vl=nl)!=oMV)=oDGWJ:W?*KnbA>M2R=PNfT9bP*D5sQ^F//S"#q>
+StD[LTq\<XUnsrdVl6SoWiE,#XK;B&rN>jtrN?(#s/Z4$ri6!t!3#mp"fA,lUna[`Thh>RSt;LC
+S!ob4R$X,(Q'@JqP)t`cNfB!VMi*@ILPCP;KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<.
+Chmg$BkV0mB4b^dA7PUJ!F]C8?NOP>?2e(0>?_#/s&]8&rDiu"<)ifp!`DlmrD<Mis%`Jdr_3>b
+qb$iZr^ciTrC6]RogJRBog8@<%.!<Kn+-)Bp\=R\r;M9IN;k$IN,3$.=]\X)<)cdq;,^In;c-Cg
+;Gp@g:Jakb:JOYZr_<Yo:/Fea:/1^`%Sfer:JO\]:/+GY:esn^mns!Kr'L?Lr'^QRs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93b
+Pa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LB6K-#UT_2pXT,F&Y5b^(YQV5:ZF%";[0a:N
+\%&u[]=bhkrkJKKp;-I>!5nfPotpUB!5e`Or5/EKs2+fR!Q;nT`9P>A`;IRS`;IUP`W4!W`rF'Z
+aSX*Zap-&5bg+P]dJhQId=?h$KSG5;M2I7NNfT9aP*;/rQC+&-S"#q>StD[LU8+N[V5C/gW2Zbr
+WiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\U7n9RT:VXES"#k7R$a5+Q'IStP*(ie
+O,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S!G#^>
+@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D
+6hNe>6%T&es8Ds/q>0RGo'l,2jl57Xhqd)Bg&B\2e^Dmnd*U%]bPoU$aN)<>_o9R6a2>X-_7mRm
+\@AfL[C3KN[^Gq>ppKubrBgHMr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M
+@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s
+_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L>%M\uIYNgMM#E2+MZ/P.NW5%:O8G%*OoC[>
+Qi!'KQi<<KQhm$FQN3EAQgg==Qi*-MQ'VE9!1*SM".5LFS,8^/SUc<EKSG5;M2I7NNfT9aP*;/r
+QC+&-S"#q>StD[LU8+N[V5C/gW2ZbrWiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\
+U7n9RT:VXES"#k7R$a5+Q'IStP*(ieO,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__H
+EcH)<Df0H0D#S2RC2%?pB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe>6%T&ert#.kcHWi-YcP%2Xf8:tVksBf.\`W/TUq[E
+S=?"8Q^F,+QBd\uP*2#mOckliNf]?_NfB!TLPUhGMMd7HnVI7'qa(0IrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q60Ebg"G[dF6Urf@\g3gtglGiSrnYk2tjkl0@X%
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6UjL9928:K:utRQ;#a>X:@_Qb=9)M'=Su>!
+=T2G(>$9`boN)#prE8nt!*T;)s&oA(/qAP+KSG5;M2I7NNfT9aP*;/rQC+&-S"#q>StD[LU8+N[
+V5C/gW2ZbrWiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\U7n9RT:VXES"#k7R$a5+
+Q'IStP*(ieO,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2RC2%?p
+B4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V
+8,YpT7J0(D6hNe>5n!&In+6/Ep\=R]r;M9INW0?nIqN:q=&i:$<)rlq#ZO`#;,L4h;,R6f!_uHa
+r_<r!:/4S]:/=SZ9hnGZ:eq!c#>Ruf:Jah_:%(sV62a.K6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!^lH@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRra@NTs_E!XT,F&Y5b^(YlD!.Z3%A>[/RK5
+[Ka4N\[oDc^AbnI_">J<_Z%IM_=kb>_>M1L_#V@O_Z@]prl"fTrP\6FrP\KMpr3BUaN48#s2m4B
+bg"GZcd:(eJV/T/L51VBMi<XVO-,ThPa.Q$R$jG5S=Q7DTV8*TUnjiaVl-JmWiE,#XT#@%XoP[&
+Yl(d(ZM_!*YlCp,Y5YR'X8o=#WWfB#Vl-DgrhN;aU7n9RT:VUDS"#k7R$a5+Q'IPrP*(ieO,f3Y
+Mi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$Bk_6oB4h-S#%V4Q@UW\Q
+ra,\4?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE\8cD9W8,PjS7J0(E6hNe=
+6%T&es8W*Zq>BaQoC;/0jPo+VgtUZ>g=k?8e'cXjcHXVXaiMWFaN)9<_o0L6a2,O,^V%4i\$iQI
+[C3KN[^Gq>ppL#cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7
+aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq-D[I><dMM#W>-MZ&J5N;8J5Nr>%8OR&&+
+QM-[=QMd*GQL:+*QM[$GQN!6NQN!3QR$jD4r1#<hK7el4LP^kGN/`mZOckomQ'Rc(R@B\9SXuIH
+Tq\<XUnsrdVl6SpWiN2%riQ4'!3c:(r3?1*r3?1(s0)I*riQ4%!3?+!"f\GuVl$<iUe[\ZTqS-O
+St2C@S!ob4R$X,(Q'7AoOcYWbNfB!UMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9
+DJj<-CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jd
+s%NDbr(?oZr^clUr'pTQogJUCog8=;JcC?%&(]"@[^`NEY-+k+W2QViU]."fT`:SuSXc4>R@0D/
+Q^*o%Q'@GoPEM)mP*,a)%$$=,Mi*:GMMm@LM2:\Y!/g\?r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmfe<924bLj\btQ!)MiSn6,Her)rr"r)qiX
+p/h5qs&o,!!*T;)s&gn(K7el4LP^kGN/`mZOckomQ'Rc(R@B\9SXuIHTq\<XUnsrdVl6SpWiN2%
+riQ4'!3c:(r3?1*r3?1(s0)I*riQ4%!3?+!"f\GuVl$<iUe[\ZTqS-OSt2C@S!ob4R$X,(Q'7Ao
+OcYWbNfB!UMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mB)Z?G
+A7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?oZr^clUr'pTQ
+ogJUCog8=;$L[BSo_/%SqYU3iJcCf2#jS%&@pE/<=B>E##uXVt<)can;,C0i;#jDk;#X2n9hnGZ
+:/:dar_=&$9MS>Y:ejb]:/4MX:Jah_:%(sW62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l
+<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80XVl6Vs
+Xfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRrF%GU9pifXT,F&Y5b^(YlD!.Z2q;=rjDd7
+$+IFT]">Vg^;%G^_">J<_Yh=H_>1t>_>V7N_$7co`5BO4`VIIA`W!dV_o2Mm!65#WpW!-PrlP2_
+1!@ebcHjh`JqJ`2L5:\DN/WdXOHPckQ'I]'R@9V8SXuIHTq\<XUnsrdVl6SpWiN6#XTGZ/YPtd*
+Z2V'$Zi790Z2Lm.YHG&-XT>N(ri/DdW2HPjV59u`US=HUT:VXFS=?":R@'A.QBd\uP*1rhO,o9Z
+N/NRMM26qAKnP)2Jq8H&IsufoI!^0bG^"@TF`__HErL%bE,TW3D/=!'C2*Z\&8,TdARo=]@U`bS
+?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g6Gq*XgA
+og+0/K)[_(qY'=Io^D&+jPf%Sgt^`AgY:H4dEg1dccs\VaMl6A`l5j6`59O6`4s(&^V.:i[C3?G
+[.Lg%[JW>g6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'
+DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5V
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq$;YI>!:CM#W>-MZ&J5N;AP6Nr>%7OQho&
+QMHm=QMm0HQLpO/Q2m9NQMHmGQN!6LQN*:*R$jG6S"#"^KSG5;M2I7NNfT9bP*D5sQ^F20S"-%@
+T:hmPUSO]^VPg>jWN)u!XT#='Y-5&.Yl:p,ZLkL&ZMq--YQD#2Y5YO(XK2?#7B*5`Vl$;eUnjc[
+TqS*MSt2C@S!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;L%
+E=$T&DJj<-CMR[!rb)jUAn>OaA7K(X@:<PN?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Jds%NDbr(?r[rCHcTrC6]RoL/LBog8=;JcCH($LuKh\[JiIYHP%-rhomoUS@a_#GIf^SXl7>
+RJrQ[Q^3l$Q'7DoP*5g,"-S_,O8b.BN/ELJM#E22M=?<$M>T[;6N':L7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/
+SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5Vd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@
+mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmfe<9MA1K;!(XR:]O;R:@MEX=T)D$=Su=Z
+=9;W-=S>hg=9)M'=t5,VKSG5;M2I7NNfT9bP*D5sQ^F20S"-%@T:hmPUSO]^VPg>jWN)u!XT#='
+Y-5&.Yl:p,ZLkL&ZMq--YQD#2Y5YO(XK2?#7B*5`Vl$;eUnjc[TqS*MSt2C@S!ob4R$X,(P`q8n
+OcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;L%E=$T&DJj<-CMR[!rb)jUAn>Oa
+A7K(X@:<PN?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbr(?r[rCHcTrC6]R
+oL/LBog8=;$1IEVp@nCZqu$GEs,d6ebDU.G>?P$/<E9#ss&'#";c6Li;Z9N%:esk`:JX\[:/=V\
+:&Icl9i"DW:/=V\r_<Pi:JOX`:B=9dmns!Kr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op
+<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$
+YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRr!S;V66\rX7E@lXoGU'YlD!.ZN%92[/IB:
+[^`lZ]=krX^]2+?_>1tJ_ZRcn_SZ;fpqcgDo"k4?!5nHIpVd-Nqo/HNrl+oWs2F`P"NSU(aN4A&
+0?VJ]bg"GZc\$q+LP^kGN/`mZOckomQ'Rf)R[]h<StD[LU8+N[V5L5iWN)u!XT#=&Y-7i/s0;U0
+qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HTT:VXFS=?":R@'A-Q'IStP*1rgO,f3Y
+N/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<DuOVlD/=!'C2%?pB4kgfARo:\@U`bR
+?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m&ZqFCKRr'g6Gq*XgA
+og+0/K`<e&qsO"Fna5N#jPf%PgYCW@gY:H3dF$:ebfn8PaN)BA`5KR1_8F=5_S3k$]tCqd[f3T:
+[CE]U\$u1Aq6g)cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7
+aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRpKfMI>*=CM#W>/MZ&J5N;8J5Nr>%7OQ_i"
+QMQs=QN!6IQMHm/QN*<OQM?gFQN*<MQN*9PR$mrC-\I,-LP^kGN/`mZOckomQ'Rf)R[]h<StD[L
+U8+N[V5L5iWN)u!XT#=&Y-7i/s0;U0qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HT
+T:VXFS=?":R@'A-Q'IStP*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<
+DuOVlD/=!'C2%?pB4kgfARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYi
+rD!8bs%E5]r^m&ZqFCKRr'g6Gq*XgAog+0/L]7M:c,d?%riZg7XK&7uVPBo\USFNUT:Z%Ps-`nS
+s-F1\Q'ISsP*(ohOctrjNrG(CNJrgSLku%f!f;ekn;-s-r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRm]\98kVqK:utRR:]O;R:B+,h=RfPb=T2J%
+=Su=Z=T;P'=S>hi==RHW>(_N`LP^kGN/`mZOckomQ'Rf)R[]h<StD[LU8+N[V5L5iWN)u!XT#=&
+Y-7i/s0;U0qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HTT:VXFS=?":R@'A-Q'ISt
+P*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<DuOVlD/=!'C2%?pB4kgf
+ARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m&ZqFCKR
+r'g6Gq*XgAog&iQoChtTqYU2As,d6nY^C%i>?=m,<)cdq;c-Ck;Gp?j;?B]l:]=/u:JFS[:Jae]
+9heDZrD!Sk:/+JZ:/=X`:BXEg:espV;>WZW6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat
+<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+
+Z*UgG\%0,`^;%M$`5Tg>bKJ/Ud*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq[,,U7\HjX/klo"0J`0YPk^*Z2_-0Zi@E3
+[0F(K\@T;b^&GeH_"#8;_Z.ON_Y_.F_>1t>_>;"K_t:n:`VIFP`Uh+La8O*ZaYq;bbKS5VKS>/:
+M2I7NNfT9bP*D5tQ^F21S"6.BTV8'SUnjibVl6SpWiN5'Xfek2YctC;ZMh-/[/IE.[f*W5[/I?2
+ZN%3/YQ:r1riH@*X/`2!W;`\qVPU)aU7n9RT:VXFS=?":R@'>,Q'IStP*(ieO,f3YN/NOLLkg_>
+KnP)2Jq/B$IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4baeARo<M@KBnFra,_5?![G7
+!F&b,=oVV(=8l5%<E)rr;u]_q;>j>j:]F2g:&[id9D_?\8c;3V8,YpT7J'"D6hNe=6%T&kruq@9
+r9a+HnEK,sjPf"OgYUcAgY16+d*U+ac-"/K`lH*<rPKAe`5fd1^q[Us]XYAXZEgjF[C<WQ\,!K.
+[JN8f6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>
+Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRpKcKI"$a+nqd7$rJLQ3s,?f6s,R&=pQ4U$
+s-<;Dq3U]=rKmPM!1!MKs-N_Ns-Mf4o9]KCrg3SLs-GO/R[\taL5:\DN/WdXOHPckQ'Rc(R@B\:
+St;UKTqeEZV5L5iWN)u!XKAV-YHP17Z*CV5Zi7?1[J@90[JmQ3Zi@?2Z2Us.YHIl,"g"c)Wi;rr
+VcK[kUnj`YTqJ$LSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#i6DJa3+CMR[!BP;$jAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<WZ9#<;fbq
+;?0Sm;#X8j:Amod9`Ic_9)_E\8GYjT7f5^I7/94C6M3Wqs,$b!e^D+;[B6X9Y,\M#W26;bU8+KX
+TV%dFS!ob5R$a5*Pa232#EY(0P*1rgOSt1EN/ELJLl%"Hre^-#qa(-HrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRm]S58OuVH;!(XT;#a>R:B+,i;#=Ac=n>bo
+=oDJ#=l3?[=oVUu=8,hs=YPM_L5:\DN/WdXOHPckQ'Rc(R@B\:St;UKTqeEZV5L5iWN)u!XKAV-
+YHP17Z*CV5Zi7?1[J@90[JmQ3Zi@?2Z2Us.YHIl,"g"c)Wi;rrVcK[kUnj`YTqJ$LSt2C@S!ob4
+Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3+CMR[!
+BP;$jAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<WZ9#<;fbq;?0Sm;#X8j:Amod9`Ic_9)_E\
+8GYjT7f5^I7/94C6M3VLo(;_QqYU9kJcCr6$KR[rAQr;=<`N.!r_a)#;c6Om;,U:h;,I3erD"2*
+:/4JX:Jae^9i"JY:/=V\:JOYZ:JO\\r_EPh;XdQ\62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRqHr$R%COnoW8(p!NrX'YlD!.ZN%62[/RH=
+[^`lZ]=kqm^])%<_>D(L_t_+D_#2%E_XkV?_Yh=H`:1bA_uRdJ`rF*Wa>:r\bKJ+_L51SAMi<XV
+O-,ThQ'I]'R@9V8St;RJTqeEZV5L5iWN)u!XKAV-YHY79Z*OA8s0Vg6ppU12ppU41s0Va2A?rJF
+Yct=7Y-"h-X/`2!WMl_mVPU)`U7n9RT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)1
+JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e+/>6%k+
+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe=6%T&mrsef#p@.YC
+m-!Nmj5A_JrnSsWgY(*'d*L"]bfRrG`Q6':_Sa:-_oBX1^VIUt]XbP\['R*H\@9!I\,!K.[JN8f
+6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRp0EBG^P7*r.tB.qhY3-q2531s,?i7s,R&=
+pQ4O"rK[,Cq3U]=rKmPMs-<AF!12u:!13VLm[*m<s-GC+KSG8<M2R=PO,oEdPEhE"R$jD4S=Z=E
+TqS6WUnsueW2ZesX/rG*Y-5(6Z*CV6Zi@E4[J730\+mE3[K!W4ZXgAHZ*:I9YHG"0XK/A$WMuho
+Vl$;dUS=HUTV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOW
+G'.nKF)l8?E,TW3D/=!'C2.HrBP1rVAH?=OraGn:@/aL6?=!P8s'#J,r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@og+0/N;j7Rd*B,0['-[9XJu2ts._!:US=KU
+T:VUDR[KS2R$X/)Pa.JsP*(lfOckffNfT3]NJrgSM27%HrJC!!qa(-HrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmTV48kD_J;#*uc;"IQa;#a>S:B+,f;#"/b
+=n>bo=oDJ%=TMW-hcTeZr`JttpK0&$L51SAMi<XVO-,ThQ'I]'R@9V8St;RJTqeEZV5L5iWN)u!
+XKAV-YHY79Z*OA8s0Vg6ppU12ppU41s0Va2A?rJFYct=7Y-"h-X/`2!WMl_mVPU)`U7n9RT:VXF
+S=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)1JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J0(D6hNe=5m6fRq>:)@s-!BbaGObD>5hS-<E)jo;c-Ek;ZK_p;'\t6:f'qa
+:/+JY:ese\9heAY:JOYZ9MSAY:JO\[:ejh_:/=^c:[_0X62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e>QOeB(jorJ7tY-+u*YlD!.ZN%62[/RH;
+\%&u\]Y;,Y_!f,:_>qLJ_Y(_C_>;%>_>;%H_t_1?`V@@O`Uh(Na2Z0ta=bWYKnbA>MMmFRO-#Nf
+Pa.Q%R$sM7SXuIITq\?YV5L5iWN*##Xf\b0YctC;ZMq03['d=?[f3c.\Giu8[f<`8[/RE3Z2h0/
+Y[4N9Xf\\*WiE%tW2HMhUnjc[TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,
+J:N,uI=6KiH?sg[GBS+NFE;MDEH,r9DJj<-CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.
+!a&N*r`9&!s&Atrs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCZ.,5;!&o();5
+k2taai8!)Bh;$c<f[8*nc-=JUaiMNB`l,d3rk\WQ'>_E!^:h.h\@/cMZEpsI\$rcS\+7!(62X(J
+6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^b
+It3-'KnbGAN/`m\P*D6!R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8
+h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!df)G'o%'rJ:?+s+pW1q2531s,?o9rf6r<
+p5nBuqj$oAqNpc=s-N_NrKZ?-s-N\MnWs<EQ^@Z:/XM0GLP^nHN/is\P*2&pQC+&.S"-%@T:qsQ
+UnjibVl6SpX/rG*Y-5(6Z*CV6ZN@MA[JdQ5\+I30\,<]7[/dT5Zi@<2Z2Ut6YHG"0XK/A$WMuho
+VPU)aUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o9ZN/NRMM26qAKnP)2Jq8H&IsufoI!^0cG^"@T
+F`__HF)l8?E,TW3D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3r`K;)=',B%s&K(ur_rhp
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@og+0/NrKC>e@r?#YHY45ri,pqs.fUg*MK4#
+SXl:?R[TV1R$X,&Pa%ApOcb`dOcb`cOH,A#N!>2sLPUeEMZ/J%M#'F86N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>Fa&(VH[UBoJqJc3M2I7OO-,Ti
+Q'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!c]78kMiRohbH]qbZo^s%r_kk"bqPqbZrf
+p0$rgrE9&#s&n/[qcWo#qH*Jp/;8h6M2I4MNfT9bP*D5tR$a>3S=Q7DTqS3VUnsueW2ZetXKAV-
+YHY79Z*OA8!joACrO2^7oXOn0r3lX5!4;a3s0;X0rif_4Y-"h-X/`2!WMl_lV50o^U7n9RT:VXF
+S"#k7R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_=KS+o/JUi9#IXQWlH[:!_GB\4QFEDSFEcH)<Df0H0
+Chmg$Bk_6oB4h-S#%V4Q@UW\Qra,\4?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J0(D6hNe=5m$cVqgnd2rtt@(G@t,_=BAO'<)QUn:f11i;Gg:h:f1*g:]F,o
+:/Fb^:/"AVr_EYl9h\;Vr_<hs:/4S[:JX_]:esmd;Y!]]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e/EP+f7[pT4Cs!NrX%YlCs;ZEppF[C*HP
+\[oDd^VB`_m_SD0o"b7@qSMd=pqm'Ks24oVqo&$Dq8E<Pn](ULrQ,"n.#<_;N/`mZOckonQ'[l+
+S"#t?T:hmPUSO``Vl6SpX/rG*Y-5(6Z*OA8!joACrjMj9rj_I.s1&*<rO2a6!4;a3<O/m7Yct=6
+Xf\\*WiE%sVl-DgUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcPQ`NJrgSMM[.EL5(D8K7ec,J:N)s
+I=-BfH?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*
+r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCc1rq\YDoC;,/k2bU^
+hV6iAh:pW7e'ZOgc-4ASaMu3<`5BI._SF(/^qIOt^:_(g\$`QKZF.0N\@/iT\+7!(62X(J6i9@P
+7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'
+KnbGAN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/L
+ioB+^k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dZ"FF/apLktq`s+pW1q2531s,?o9rJpo=
+o8r'rs-3DGs-<YOqNguEm?[[8s-E\Mk*H"5rg*)@s-NeQrg*S=.#<_;N/`mZOckonQ'[l+S"#t?
+T:hmPUSO``Vl6SpX/rG*Y-5(6Z*OA8!joACrjMj9rj_I.s1&*<rO2a6!4;a3<O/m7Yct=6Xf\\*
+WiE%sVl-DgUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcPQ`NJrgSMM[.EL5(D8K7ec,J:N)sI=-Bf
+H?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCl4+SO1+\@8oMYHFq)WMlbl
+UnXWYU7\$JSXc1<R@'A.Q^.Q7&<i9=OH5NeOH5K_NJrgUMi%Fh",_qlMXH;s62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGA
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cZ48P;`NpJCZ_q,$`]s%r_kk>)%Qq,$Wa
+pK@#gs&mlSq,m]"qH*Prs+VqXM2I7OO,oEdPEhE"R$jG5SXuIHTq\<XV5C/hWN*##Xf\b0YctC<
+rj)[5[C-"Bs0r!;n@AS/s0qs8s0Vj6rj,V1Z*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gHS=?":
+R@'A-Q'IStP*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'
+C2*Z\&8,TdARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\
+r^m)[q+(BQr'g9Hpd=^@og&TUJcCr6#gn]M@p<&:<`T,t$W0f";c?Rm:f:+f;>j;j:&dug:B4)f
+9asln9hnGW9heAW:/F\]r_<Ji:B"#l:ejkc;Y!]]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e)ANhN2GX8/jsXoGR'YPbU-Z*L[A[/RH;
+\%&u\]Y;/Z_!Su+_XP>@_>1tA_>hCN_>(kM_o0L4`Vd[E`VIIP`U_#/`Q#s=aN0-nM2R=PO-#Nf
+Pa.Q%R$sM7St;UKU8+N\VPgAlWiN5'Xfek3Yd(L?Za@-J[^NZS\@DIIr4;j=qmu^9s1&*<rjI$Y
+['[0GZEga>Yck43XfSS'Wi;qpVl$;dUnaZXTqJ!KSXc1=R[KP0QBd`"PEM&iO,o<\N/W[OM26qA
+L4t;5K7\W(IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^@q&nU?sm>K?=$q:
+>QS,5>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`@]_9)_E\8GYjS7f>dJ7/0.B6M3Wqs,d7@
+pA=COo'ko,k2kU\gt^Z>gtLE4da?Ffc-=AOa2Z*<`59@+_84(-^V%=r]Xt\^[C!9FZaI6N\$l:F
+o!\B\r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8
+FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstf
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dPrF*i@hqM5*,qMG--s,6o9rJgf:s,Z`4
+j,sA+qNV&Hrg3PKq3UK7pm($.r0RGLrg*VNop>ZFs->HrM2@.LNK90aP*D5tR$a>3S=Z=FTq\<X
+V5C/hWN*##Xf\b0YctC<Za7$H[C3NQ\%&sG\bs&;]DK2;\c92>\,Ng[[C!<IZa-mAYct=6Xf\\*
+WiE%sVl-DgUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcCr6%cu*S[^NBDYHFn(WMl\i
+rhBFd-(ga!S=?"9R$j;-Q'ISuPEM)kO,oBaO,o<]NJrdQMM[.FMM[8jM=68s62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIt3-'KnbGA
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WKc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!c]784Z?Ipe^c`pJCfcr)!Dhj\GhOp/(6\
+pf[;ms&o;&!*T/#!*@uYpf[Gpr)bb1M2@.LNK90aP*D5tR$a>3S=Z=FTq\<XV5C/hWN*##Xf\b0
+YctC<Za7$H[C3NQ\%&sG\bs&;]DK2;\c92>\,Ng[[C!<IZa-mAYct=6Xf\\*WiE%sVl-DgUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcCu7(Unj,?!1<2=&i3u;c-Ci;H$Ik:f1%d;>s>q
+:ea\[:ea^`9b:)p:/4JV:/=S[:/FY[:/Fac:'4<g:Jq*hnko6Lr'L?Lr'^QRs$lrWIRm%%8kM`L
+9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])
+S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,
+s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!du7MO^9>[JI!)XoGR&YPk[8Z*L^B['d<M
+\%'#]]tV8[_!Su*_Yq7>_"kk@_>_=M_>(kJ_o2Pnrl"QMs2=iSq8E<Pp;['Ms2P)Z0SbLBN/WdX
+OHPfmQ'[l+S"#t?T:qsQUnjlcW2ZesXKAV-YHY:;Za7$G[C3NQ\%)CIs183AoXt18rjr'=!k>_K
+rjDj8[/RC6ZE^X<YHG"0XK/A$WMl_mVPU)aUS=HTT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@J
+Lkg_>KnP)1JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2WC2%?pB4baeARo<M@KBnFra,_5
+?![G7!F&b,=oVV(=8l5%<E)rr;u]_q;>a8j:]F2g:&[ic9DhE]8c;3V8,PjT7J'"C6hNe=6%T'"
+s#0cMqXF+FlfdKojl,.RgtLQ=g""^%dEp1abK7iI`Pfd8_SO%(^r=+%^qRLo\@/iQZa-mE\GE]+
+[eW5e6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5Vd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dPoEdE.fN;SJ2M"uo+MZ8V7N;eh8NrP12
+OQ)E$PkgUCQi36HQgg=5Q0">-QiEBGQi3:*LP^nIN/is\P*;/rQ^F21S"6.CTqS3VUo(&gWN)u"
+Xf\b0Yd(L?Za@*I[^NZS\G`u<])K>6]`,PB])B/@\@8sH[K3eCrj,_4Z*:I9Y-"h-X/`2!W2HPj
+V50o^U7n6PSt;LCS"#h5R$X,(Q'@GpOcYWbNfB!UMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<-rbDjUBkV0mAnGUcA7PUJ!F]C8?NOP>?2e(0>?_#/s&f;&r`0)#<)ifps&&ho
+r)!Dhs%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcD#80@nR^[C*3AY,eS$WMlYhU8"?STq@mH
+S=?"8R@'>,Q'@JsPEM&jO-#KbNfK*ZN;e_@M2-nDMMd7HM=68r62X(J6i9@P7K5jU7t+!#8P2TJ
+92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"
+R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cZ47S-0H:\mo`;><ud;>X2i:ZY@O:\@QO
+=SZ+n=T2Is=T2CZ=SQ#!=Su8!=>5MeMN!LSO-#NgQ'I]'R@B\:StD^MU84T^Vl6SpWiW>)Y-5(7
+ZEpmE['d?N\$rmG\c98?]C`c8]DfD?\H9:M\,Nf:[C#q>=L,39Yck43XfSS'Wi;qpVl$;dUnaZX
+TV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?
+E,TW3D/B2e$>O9gBP1phAS#C^raGn:@/aL7?<pk9>QJ&4r`T8's&]2#!``3!rDW_o!)`Yjs%iYi
+rD!8br_*/]r^m&ZqFCHQrC-?Hpd=^@og+0/Qi@obS8r4G=]nj-<)Zan;Gg=i;c6Ih;G^4fr_Eu"
+:/4S\9h\;V9hnGW:Amlq9MJ8Y9hnJZ:JFS[;#X8h;Y*c]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dl4Lm4O:]_nl2XoGR&YPk^*Z2_*;Za@*I
+[C<ZW]=ktorkRm:m)&Y7n\G1@r5/0DrPJEIqn`BO`;IRS`:q7M`;R[N`;dgR`qRG%`e]J/N/`mZ
+OckroQC+&.S"-(ATV8*TUnsueWN)u"Xf\b0Yd(L?Za@.>[K3kIrji'?s1A0@pV$I:s1A<BrOH^R
+\$rfS[C!<IZa-j?Yck43XfSS'Wi;qpVl$;dUnaWWTV%gISXc1<R@'A.QBd\uP*1rhO,o9ZN/NRM
+M26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2%BqBP1rVAH?=OraGn:@/aL6
+?=!P8s'#J,r`T8'!*B,"!``3!r_rhps&&_ks%iVhrD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.
+Q2gm\2tch3m-*QnkiC^\h;$`>gXk!,d*^1bc-"/Lai;<=`59=+^VIe']t_7n]=GAYZa6pD\%&rW
+[f*],[eW5e6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(
+DfKf>Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5V
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dMmDg$J_NrFh6M"uo+MZ&J3N;nn;NrP11
+OQ)E%Q2[$DPlR-KQfsb/Q2d'KQ0FS7Q2HsEQi<<EQRR`IMN!OUO-,TiQ'Rf)R[]h=StMdOUSO`a
+Vl?\rXKAV-YHY:;Za7$HrjDj:\Gj&=])TD>]_B,:]`5VD])B0T\@8rU[^EKLZa6sBYct=6Xf\\*
+WiE%sVl-DgUnjcZTqJ$LSt2C@R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac+@A,]p<@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#
+<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6M*Qps-Wfun']+`[BQm;X/`2!WMcSg
+US@a\"eV?WS!ocEQl;<WQ'@JsOckffO-#KaNK/sWN/NRNLkphCM>iA4M=68r62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cW67S6<J:]+&b;>j>g:]!ug:]F5k:ZY@O
+:\@Nb:Jg:Xr)r_qrE8hrrE%oZpf[W!qc>5&M2I7OO,oEdPa.Q%R$sM7St;UKU8+N\Vl-MoWiW>)
+Y-5(7ZEpmE[JmT8\%)FJs186Bqn2[:qn2s@s180>CUgj_[^NTN['R*EZ*:I9Y-"h-X/`2!W2HPj
+V50o^TqS-OSt;LCS!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)s&]8&rDiu"<)iiqs&/ko
+rD<Mir_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8::JcD/<%)n$<?<^N2=B&3s<)NWms&0D*;,U:f
+:f1"c:Jae]:J^p`"&;Qb9`@`u:/"AV:/FYZ:JO\[:/=\_9i:jeo25<Lr'L?Lr'^QRs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINK93b
+Pa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXbLQJ4;Zi$m+Xfei*YPk^*Z2_*9Za@-J
+[^WfZ]Y4<Zs1ms:lb`P6n%et>rPIm:qSN9No#:RGr5JQOs2=uXo>N8:M2R=QO-#NgPa.T&R@B\:
+StD^MUSO``Vl6VqX0&M,YHY:;Za7$H[^NZTrji'?!5&3Brk86DrP/6Drk89Cs189Brji'=!4Vs9
+;mj!=Za-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rgO,f3YN/NRMM2-h?
+KnP)2Jq8H&IsufnH[:!`G^"@TF`__HErL%bE,TW3D/=!'C2*Z\!G?$DAHl[T@U`bS@/aL6?=!P8
+s'#J,r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.R/[Ei
+pA+@KlK[L1joXQ$i;VLSgXt*+e'ZOgc-4>PaN;H@`5KO._7me)^V%:o]=GAY[/R?4[C3O1\+r>f
+6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(V
+I!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsugWiW>+Z*UgG\@K5a^;%M$`5]m?bKS8Wd*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXRDKL;^MZ&>1M#3&-MZ&J3N;nk=NfT7j
+OPl9!PlR'EQ0jn6Q2R$GQ2?gGQ/\,,Qi36GQRmrLMi<[WOHPflQ'[l+S"#t?T:qsRUnsrdW2cku
+Xf\b0Yd(L?Za@-K[^WdG\c95@]D]DA^&5VC^\bbE^&>VD])]GA\c9/>\,Ng7[C!9HZE^X<YHG"0
+XK/A$WMl_mVPU)`U7n9RT:VXES"#k7R$a5*Q'@JqP*(fdNfB!VMi*@JLPCP;KS+o/JUi9#IXQTj
+H?sj]GB\4QFEDSErc&6`Df0H0Chmg$C&VcHB4h-S#%V4Q@UW\Qra,\4?2e+/>6%k+=oVS(=8l8#
+<W?%t;u]bq;>j>k:]F2f:&[id9D_?\8cD9V8,YpT7J0(D6hNe<6%T')rs7E.]=#&OXfJK#WW/e:
+UnaZWT:hgISXPt7Q^F/,QBd\uP`_,jOH5KbNfB$Wrepf5#D\+lM2I1HM=-2q62X(J6i9@P7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl?\tXfo"9['mKT]=bkm_8=.1aN;WLcHaeae'ut#f\5*8h;@/LioB+^
+k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX46qC!FqG@&drD<Aer)!>fjA,_NoM>N`
+r_Vc[rE8hrrE8hrr)_iZpf[W!rDtP+M2R=QO-#NgPa.T&R@B\:StD^MUSO``Vl6VqX0&M,YHY:;
+Za7$H[^NZTrji'?!5&3Brk86DrP/6Drk89Cs189Brji'=!4Vs9;mj!=Za-j?Yck43XfSS'Wi;qp
+Vl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rgO,f3YN/NRMM2-h?KnP)2Jq8H&IsufnH[:!`G^"@T
+F`__HErL%bE,TW3D/=!'C2*Z\!G?$DAHl[T@U`bS@/aL6?=!P8s'#J,r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYir([/as%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.SGs8sVg)fY=BJX(;c?Xo;,^:h;H$Km
+;$p&o:esna:JOY\:Amm':/+DV9MJ5W9MJ5W9i"P[9hnDX:eskar)<Dhqbd/Tr'L?Lr'^QRs$lrW
+IRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nI
+NK93bPa7])S"6.DTqnN_WN*&%YHbF@[^`l[]Y;.s_SjI8aihoRcHstfeCN7(g=tE=hr*JQj5f@b
+kNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX^J<$>+VZ!RtXfei*YPk^*Z2_*9Za@-K
+[^`o\]Y=B[s1ms:lGEA3m_Jk=rke0@rkSQMqSE<O`5MSm!6"]Pr5ANPr5AEM!6"cR0St[GN/is]
+P*;/sQ^F52S=Z=FTq\?YVPgAlWiN5'Y-5(7ZEpmE[C3NQ\@K/]]"@sSs1SHHm_Ab8s1SEEs189B
+rj`'>\,Ng;[C!9HZE^X<YHG"0XK/A$WMl_mVPL#_U7n9RT:VUDS"#k7R$X,(Q'@JqOcYWbNfB!V
+Mi!:HLPCP;KS+o/JUi6!I=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcWB4b^dA7K+Y@UWYP
+?XI,G?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_<
+6%T')s"sTIqXs.;ki:gdj5JqSgtUT:f[\Buda?@bbf\&KaMu6<`59=+^V[n']Y;(k\@/fPZa$k$
+\+r>f6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXOCNFlWK8>;<rJ:E/rJLQ3rf$l:s,R,?
+n;uOinWiX1p6GTBrg!8Cs-<DG!0ui8r0RDK!gT(;rKf3pMN!LSO-,ThQ'Rc(R[]h=StMdOUnjlc
+W2ZetXKAY/Yd(L?Za@-K[^WcW\[oAark/9Es1[p9rkAEGrk/9C!4r0?!P#W<[TBlDZa6sBYct=6
+Xf\\*WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP0QBd`"PEM&iO,o<\N/W[OM26qAL4t;5K7\Z)Isufo
+I!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_BFnfgAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'
+<rZ2"<;ohr;ZBVm;#a>k:Adid9`@]^9)_E]8GPdS7f5^I7/94B6M3Wqs.00=q9m-i[Bm-<Wi<"t
+Vkp5cUS=HTT:hdHS!ob4Q^=)+QBd`"P`_,jOH0=$rf%/AMMd7ILkgfaM=-2q62X(J6i9@P7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^
+k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX27Rp*F:&7]b;>j>g:]+&f:ZP:N:\@Qa
+:]4,N=T2Is=T)Cr=Sl1Z=SQ&!=T;GVM2I7NNfT<cPEhH#R$sM7St;UKU84T^Vl6SpX/rG+YHY:;
+Za7$H[^NZT\[f;_]DfJC^&Ph7^](tI^&G\E])]GA\H04LrjGn9['R*EZ*:I9Y-"h-X/`2!W2HPj
+Unjc[TqS-OSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS+N
+FE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/ko
+rD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr4:JcD>A(Y"Ub?s6Z4<`2go;H$Fh:f1.i;,C+c
+:&[rg:`)u':/=SY:/+GX9h\5T9hnGW9hnMZ:JO[a:&Rif;>aAg;Ys>e62X(J6i9@P7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMBN/`m\
+P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!n
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^]I#OYgX0A\,XfhW+rNQ=,s0D[2%(*FN
+\%'#]]tV7r^qf<QkJHr-qS3*IrkSQKqnVX9r4r?KqSN9Mrl"KKqS`<Nrl"]Q!li4!r5C(AN/`mZ
+OckroQC+)/S"6.CTqS6WV5L5jWiN5'Y-5(7ZEpmE[C3QSrj`'@]DfGE]tV5Y^\ttD_>V1I^]2%J
+^&GZn]=PSa\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl$;dUnaZXTq@pJSXc1=R@'A.QBd`"P*1rh
+O,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1siAS#C^
+@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdS7f5^J
+7/0.B6M*Qps.0/prq?0]mHE]nro=%;(Z4''g=t60eBu[ldETq[b/q`F`l5m6_>_4\_Sa.&]tM"e
+[^EHKZF.0Lm'laUr'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7b
+BPM="DK'T9FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9
+aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^MBQAEHKSo_arJCK1rJUW5s,I&=s,ZZ2
+hN@8lnWrm6rKdGJpltfDi0O>.qNh/J.#NtCO,oEdPa.Q%R@9V9StD^MUSO`aVl?\sXKAY/Yd(L?
+Za@-K\%)FJ!P5oB]E5d\^APbE_"khF_#1tI^AknG]RIK(]",A]\$rfS[C!9HZE^X<YHG"0XK/A$
+WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@GpOcYWbNfB!UMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(1>?Y50=TV],=8l8#<<-"s
+;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe<6%T'.rsRl:]sb;PXf88!WM]Zk"/M]d
+T`1PrSXc.;R@'>,Q^=#'Q'7DoOcPS%NrG%<MZeooLl$ufMZ8P$M"j:66N':L7/o^U7f>i+84cBF
+8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&(VI!pKpJqJc4M2I7OO-,Ti
+QC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^577^!A:/UsdrDEMiqbR)crD2NMs%i;a
+r_NGgmoTQmoN;,rp/q8rpK78nj&l%Ys&^^OMN!OUO-,TiQ'Rf*R[]k>T:qsRUnsueWN*##Xfek3
+Z*L^B['d?O\Gj#>]"@sS!kl=^r4i3Gq8*$Fr4i9Gs1SEEI_32&\[f5Z\$i`Q['R*EZ*:I9Y-"h-
+X/`2!W2HMhUnjc[TqS*MSt2C@S!fY2Q^3o%P`h2lOH5H_NJrdQM2@%DL5(D8K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa3+CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8::JcDDC#do+q?!162;cEZn$W0eu
+;Gg@j;,:%`9`@if:_Zc&:/=SY:/+GX9h\2T9hnDV9hnL`:'XKg:/=\^:Jq!fq,7,fpd+gErBpKN
+s$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBeF]I=Hd!
+K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglG
+iSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0"XoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^YH&7oZXLPC7Y5PR$YlCs7ZEpsH[^WfY
+]Y4<Zs1n$<jh_):^:s?VqnW0HrP/6Fq8)pCrPAHJ!5\WN!5nfQrkn`Rp;QjGr5JZRr5JTR1<#01
+NK90aPE_?!R$jG6St;UKU84T^Vl6VqX0&M-YctF>Za@-K\%&uZ]">Se]Y2%nrkJHJrk\6Drk\TL
+rkJKIs1SHFs1;dP\[f5[\$i`Q['R*EZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o$
+PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$j
+rac+@A,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GYjS
+7f5^J7/0.B6M*Qps.B<9qY0jYkN:jciSrkShV?o@f[na)e'cUjcd'bYbK7lH`l5p6rkT)[_8<t%
+]Y(hc\$`TLZF/u,pd+gEr^6QNs$crWrC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds.EH6/DGBnL^I=Hd!K8,/<MN!RVOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+
+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^LB5r0CK8okdrJC?-s,6o9s,I&=!0?Q0
+h3%/ks-EPIq3LZ<rKdJKqNM)IPa.NlQMm0HQ8+;VNK90aPE_?!R$jG6St;UKU84T^Vl6VqX0&M-
+YctF>Za@-K\%&uZ]">Se]Y2%nrkJHJrk\6Drk\TLrkJKIs1SHFs1;dP\[f5[\$i`Q['R*EZ*:I9
+Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$jrac+@A,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%
+<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GYjS7f5^J7/0.B6M*Qps.THOf#bG/['6I-W2QSh
+V5'f[U7n3NSt2CAR@0G1QBml(Q'ISsP*(lfOH,B^NfB!VMi3FLM27"Ere^]4mYLX(r'LBMqaCHQ
+s$lrWIRm%%8kM`M9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DK'T9FEMeQH@1-jJ:`E.
+LP^nINfT<cPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQ
+j5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^36q0[<9MbXarDEMiqbR)cr_MTMs%i;a
+s%iMgs&&5erE8>drE8ksqcDf[pK97RMi<XVOHPflQ'[l+S"-(ATV8*UUo(&gWiE,%Xfnt5ZEpmE
+[C3QS\[f;`]=bei^:sT]rkSNLoYUUDrkSNJs1\NHs1JBDA%K4]\@B#V[^EKKZa-j?Yck43XfSS'
+Wi2hnVPU)aUS=HTT:VXFS=>t8R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S!G#^>@KBnFra,_5?![G7!F&b,=oVV(=8l8#<<-"s
+;u]bq;>j>k:]F2f:&dod9DhE\8cD9W8,PjS7J0(D6hNe<6%T'2rs7_VEb&<U<`E&t;Z9Pn:_Zf+
+:f'qa:/+M[:/=\_:JFVY9hnF^:'+-`:Amle9`@`m:/Ob\9hnM]9i:ddq,7,fpd+gEr^6QNs$crW
+rC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBnL^I=Hd!K8,/<
+MN!RVOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnY
+k2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^VFbu<Q[(WWFrNH+&&@&OHZa@-K\%'#]
+]tV7r^qfBSrke]Olb`Y=!6"lNr4`6Gr4i9I!5\ZMrP8KLrP.^7r4rHM_86)es24lRrkn]Qq8EBP
+`Uh"K_SlAks2He6`f#e9O-,ThQ'Rf)R[]k>T:qsRUnsueWN*##Xfen4Z*UdD[C3QS\[f;`]Y(qk
+^AbnI_#M7K_Y1nE_Z.IP_#D+K^&YkG]E,XUrjc^P\$i`Q['R*EZ*:I9Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH?aXXG'.qLFE;JB
+EH#i6DJa3*CMITuBP;$jrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=9)G$<WZ9#<;fbq;?0Sm;#X8j
+:Amod9`@]_9)_E\8GYjS7f5^J7/0.B6M*Qps.TH1pA4OPjlPL\iT&nQgtg`<f@AI%da?Cfcd)O5
+s2k;]s2=uTrkT/]_83n$]Y(b`[^EKJZF@<Qm'laUr'LBMqaCHQs$luXs%!,]r^qZ59MA/T:/=\_
+;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^KAT)[<L5q(GrJCB.rJU]7s,I&=s,ZZ2
+i/n#&rfQ9,qNg`<r0I2DrKZr>!1!MK!13GG!L8uMQi!(%Mi<[WOckonQC+&.S"6.CTqS6WV5L5j
+WiN5'Y->.8Za7$H[^WcW\[oDc]Y2"mrkJKKs2"WMp;?dEs2"`NrkJKI!58BE!P>rB\S/L^[^NTN
+Za6sBYct=6Xf\\*Wi;qpVl$;dUnXQVTV%gIS=?":R@'A.Q'IStP*1rhO,f3YN/NRMM2-h?KnP)2
+Jq8H&IsufoI!^0cG^"@TF`heJF)l8?E,TW3D/=!'C2.HrBP1rVAH?=OraGn:@/aL<?<piA>[(E9
+r`T8'!*B,"!``3!rDW_o!)`\kr_NPhrD!8br_*/]r^m&ZqFCHQr'g9Hpd=^@oKe'.V#N@=f=nZ#
+Z)sq&W2HMhV5'cXU7e*LSXc4>R@0G0Q'R`&Pa.GqP*(lfOH,B^NK&mUMMm=KM2;.f!K)a$M"j:6
+6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkR
+H@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_o9X:aihoRcd:(geCN7(
+g=tE=hr*JQj5f@bkNV6rm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^37R]j>9i"S^rDEMiqG7&drD2NMs%i;a
+r_NGgrDDo`r`Snr!*Aepr)resr)_o\pfT8.N/is]P*;/sR$a>3SXuIITqeE[Vl-MoX/rG+YctC=
+Za@-K\%&uZ]">Vf]tM/Z^]2+L_>M1D_u%=N_>h=M^]2"J^&GYF]=S!PBXkO[[^EKKZa-j?Yck43
+XfSS'WMl_mVPU)aU7n9RT:VXES"#k7R$a5*Q'@JqP*(ieNfB!VMi*@JLPCP;KS+o/JUi9#IXQWl
+H[:!_GB\4QF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8c/$
+<E)rr;u]_q;>j>j:]F2g:&[ic9DhE]8c;3V8,PjS7J0(D6hNe<6%T'4rsQ_tCKt%E<Dldp;,dHl
+#Z+Aq;Gg4c:/1^_!)<Ggs%NVl9MJ;Wr_<Mh9MYO\$qsAh9hnP\9heDZ:f$pdq,7,fpd+gEr^6QN
+s$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKp
+JqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8Xd*^=lf%8R.gYCWB
+i8N\UjQ>Ufl07L"m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Ee]UJ[&a//qlp+*$aR+F['d?O\[oGe
+^AbnG_",>?_>qF<_Z%FQ`;[aS^AYhG^AYhH_#M7N_#;+L_#;%F^];.@_"tnG_Yq@R_Sa:h`;%=B
+_uR^Q`W*q0N/`jYOckroQC+)0S"6.DTq\?YVPgAmWiW>*YHY:;Za@-K\%&uZ]">Vf]tXK\!l2Xg
+rPJQOr5AQQr5ATPr5&NO^qfra#/7da]Y(kfrjcOK\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZX
+TqJ$LSXc1=R[KP0QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?
+E,]`5DJa3*CMIS_BE;aXrac+@A,]p<@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>j
+:Amod9`Ic_9)_E\8GYjS7f5^J7/0.B6M*Qps.oZ?r:]sXkN(X]hr<VNh:gT9f@AF$e'cRecHOPW
+bf\&K`lH':_Z%@\^qmh$^:_+g\$rcPZEsP>!4_I+pHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3
+:f(%g;cHat='/U/>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLK
+UnsugWiWA-Z*UgG\@K5a^;%P&`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1@Vg+6LPGbaq25-/s,?u;s,R,?n;uUk
+s-!;Bk*>t2s-<JIns03?s-<JGrfmVPQ'R`&nWs3ApQbfErg3SL/W>[LO-,TiQ'Rf*S"#t?TV8*U
+Uo(&gWiE/&Y-5(7ZEppG[^WcW\[oDc]Y2&Y^B23e_>V7M_u.IO`Vd[R_u.@Q_8*kc^BVEc]tD"i
+])K6M\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgS
+MM[.EL5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#l8DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8
+?NFJ=r`oJ-!*]A)s&]8&rDiu"<)ifp!`DlmrD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog8::
+JcDVI$/Eh;[C!0;Vl-EkV>m=jU&UblSt)=?S!]S0Q^7W9".,7;PQ$^VOcPTaO,]-XN/NONM2I.G
+MZ/G4MXH;p62X(K6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E@:E_XAnYjm
+CMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$jG7StMgRV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9F
+bg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFA
+T)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_16q'[=9hkR`rD<;crD<Ggj\GhOp/(]`
+rD<Gir_Vl^s&o"sr`Abpr)rkuqcDf[qH5D/NK0'^P*D5tR$jG5SXuLJU84T^Vl6VqXKAY/Yd(L?
+['d?O\@K/]]=bei^AbkK^qmkc_Z%IN`;R[Q`;[[P_?.Qh_#D(Q^:h4m]XtcS\RW.Y[^NTNZa6sB
+Yct=6XfSS'Wi;qpVl$8cUS=HUTV%gHS=?":R@'>,Q'IStP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&
+IXQWlH[:!`G^"@TF`__HEcH)<E,TW3D/=!'C2*Z\!G?$DAH?=OraGn:@/aL6?=!P8s'#J,r`T8'
+!*B,"!``3!rDNbq;,R9gs%iVhrD!8bs%E5]r^m&ZqFCHQr'g9Hpd=^@oKe'.W;e4;VKHKU=B8I$
+;c-Fi;c6Fi;,L.d:/+JX:ej_[:Jak]:/=PZ:JLg`$r'Dj9heAW9MJ2T:Jq*dr_EMjqG[2frDE;T
+r'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHjnce'ut#
+f\5*9h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1E.O"AV5sHrs02O.$F7"F['mEQ\\#Mf
+rP/<Ho>1CB!l;aim)&e?s2=lTr4`*DrP&6FqSE0HqnN*Fr4hs@r4rEN_>_=I_u%CL`UCbB`A!:4
+OHPckQ'[l,S"-(BTV8-VV5L5jWiN8(YHY:;Za@-K[^`lY]">Vf]tV7r^qdec_Z.OR`:(\E`;daR
+_J-j%^q[Xu^:h1l]=PSa\[],W[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9QSt;LCS"#h5R$X,(
+Q'@GpOcYWbNfB!UMM[1GLPCP;KS+o.J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcR
+B4b^dA7T1Z@UW\Qra,\4?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&[id9D_?\8cD9V
+8,YpT7J'"C6hNe<6%T'5s!7C8q=E\.iS`YRhqd&@f[eR$eC;pnccs_XbKS/OaN2BA`l#[m_%"2r
+^qRRs]XYG[[C!3FlF6LRr'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ
+@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=Tq\?ZVl?\tY->1;['mKT]=bkn
+_Sa@4aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1?u0n3J;!cUrJLQ3s,?u;s,I)?n;uRj
+s-!8A!1)i6qiq,GrKcu=rg*PKrKR5Frg*SNns99ApQkfFrg#6tO-#NfPa.T&R[]h=T:hmQUnsue
+WN*#$Xfnt6ZEppG[^N]V\[oDc]Y2%o^VIY$rke]Qs2=BFrl"iSrPE9b^qd_"^:q:n]Xtbd\[f5Z
+[^NTNZa6sBYct:4XfSS'Wi;qpVPU)aUS=HUT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>
+KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\$YO'_ARo=]@U`bS@/aL6?=!P8
+s'#J,r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g6Gpd=^@oKe'.WW*Y)
+ftb,)ZEL1(VPU)bUnaZWTq7hRS.(gQQ^*o'Q'[i'Pa.I3Oq<b:O,f9]NJrjUM2R4JM2-ueM=-2o
+62X(K6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E@:E_XAnYjmCMds.EH?5F
+GBnL^I=Hd!KSG8=MN!RVOckuqR$jG7StVmSV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9Fbg+P^dF6Ur
+f@\g3h;-uHiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_16UaL<925C_rD<;crD<Jhj\GhOohbT_
+rD<GirD;6Nr)`SoqcWl"!a/W-r)_o\qcPV4O-#NfPa.T&R[]h=T:hmQUnsueWN*#$Xfnt6ZEppG
+[^N]V\[oDc]Y2%o^VIY$rke]Qs2=BFrl"iSrPE9b^qd_"^:q:n]Xtbd\[f5Z[^NTNZa6sBYct:4
+XfSS'Wi;qpVPU)aUS=HUT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)2JUi9#IXQWl
+H[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\$YO'_ARo=]@U`bS@/aL6?=!P8s'#J,r`T8'!*B/#
+s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g6Gpd=^@oKe'.WrE@QO)J<,=B&:"r_`hq
+<)HQm;#sHerD!Pm:/"DY;,7*b!_uQfrD!Af9`@`k:/"AV9MJ;[r_EDfqG[2frDE;Tr'LBMqaCHQ
+s$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(
+L51VCN/is]P*M?#R@Bb=Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnce'ut#f\5*9h;@/L
+ioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Cj_23SZ]HuY7@eAZ*UgF[^WcX]=bhk
+^AYhH_"5D>_Z.I?_Z.OR`;@OM^AYhD^AbnA_"#27_#(tG_?%Qkr589I!5nZOqnrHP!5nfS!5ncS
+/rbpRP*;/sR$a>3SXuIIU84T^Vl6VqXKAY0Yd(O@[C3NR\[f;`]Y(ql^V@S#rke]Q!6"fSr5SWS
+rPncSs2=rTrke]O!5STKJ%iV/]Xtee\[f5Z[^NTNZa6sAYck43XfSS'Wi;noVPU)aUS=HTT:VXF
+S=>t8R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_>KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?3":1>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic
+9`Ic_9)_E]8GPdS7f5^J7/0.B6M!Kos/H#$rV-6^kPjH>h@A>pf[n[(eCE$qdEg+^bPo]nbK7oJ
+`Q#p:_SF"(rkJlT^V.:i\@8lPZ*W`)pHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3:f1+h;cHat
+='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,WkQC+,1SXuOLUnsugWiWA-
+Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1?>4D*I"[ISM>rJ5MuSb9NW5%=O7A=i
+OoCO?OmnY7Pkp[APl?sJQL^=>QMm*JPQ@&6rKRAKrKmDI!1!DHrg3PK!1!PL!1!PM0:%TYOHPfm
+QC+&.S"6.CTq\?YVPgAmWiW>*YctC=ZaI6M\@K/]]=bei^;%Fu_>_=O_Z7XQ`VdaQa8O$U`W*mV
+_u@OQ_#V:M^ONu2]Y(kg]",A]\$i`Q['R*EYct=6Xf\\*WiE%rVl$;dUnaZXTV%gISXc1<R@'A.
+QBd\uP*1rhO,o9ZN/NRMM26qAL4k23Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQs
+BP1siAS#C^@q&nU?sm>K?=!V;r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZ
+r^ciTrC6]RogJRBog879JcDeN.c]!i[C*<?V5C,dUSOWXTq7jHSXc4=R[BM/Q^3r&Q^=#&PEM&j
+P*(fdrf7#;#`Xe"MM[4HLPl%emYLU'r'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\`;H$Ln<E<1'
+=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;
+['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_16UXI88PDrXrD<Df!DlSj;#O2O:B+,`
+;#F,f;#X>j:]X?gj]DLap/q2npfR>pr`K2's&f8%i`Q.^/rbpRP*;/sR$a>3SXuIIU84T^Vl6Vq
+XKAY0Yd(O@[C3NR\[f;`]Y(ql^V@S#rke]Q!6"fSr5SWSrPncSs2=rTrke]O!5STKJ%iV/]Xtee
+\[f5Z[^NTNZa6sAYck43XfSS'Wi;noVPU)aUS=HTT:VXFS=>t8R$a5+Q'@JqP*(ieO,]*WMi*@J
+Lkg_>KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I
+?3":1>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]8GPdS7f5^J7/0.B6M!Ko
+s/c5-Z@$=k=]ea';c6Qn;ZBVo;#a>k:(U2r:Jah^:Jjq^9i"JY:ej^`:B+#k9MJ5W9`7Zg:Jjh]
+:Amub;u'>i;>3BS6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jand;c?Xq<``C+>$P<=?XR;OA7]@d
+BkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:
+aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_1BmGQ"S#sC%YQ(g9Z*L[A['mEQ]">Vg
+^:sT]s1n3Ark\]R_Z%C?_Z.LR`:q7I^APbB^AktD_"GJ?^AktC_#2"O_Sa:._YV.M_Xk_@_u@US
+`W*k5`PddtOckonQC+)0S"6.DTq\?ZVl-MoX0&M-Yd(L?['mEP\[f;`]Y(tn^VIY$_SX4.`;R[T
+`r=$OaSs6Z`r3jX`5BLl_?%KgrkE*[]tD"i]=PP`\@8oT[C!9GZ*:I9Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Jds%NDbqb$iZr^ciTrC6]RogJRBog879JcDeN+Ska,n`/Tei83;GgY191e^W*se'ZIbc-4>R
+bfe,MaN+;!'#MK"_8!b$^qRRr]=5;Y[C!6GlF6LRr'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\`
+;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;[C3TU]=bno_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_1>A%ntH@q7SM>`>3MuSb9NrP13OPc3!
+P514?P4t76Pl$a@PlI!KQLU7>QMd$JPkgUCQh-OCQi!*KQiE@.Q^3YmOckonQC+)0S"6.DTq\?Z
+Vl-MoX0&M-Yd(L?['mEP\[f;`]Y(tn^VIY$_SX4.`;R[T`r=$OaSs6Z`r3jX`5BLl_?%KgrkE*[
+]tD"i]=PP`\@8oT[C!9GZ*:I9Y-"h-X/`.tVl-DgUnj`YTqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]
+N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCC4fjBP;$jAn>OaA,]pB
+@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRB
+og879JcDkP#2$l'['['7rMBOh"ehQ[St2GORgkgRR?j/*Q'I]$QB[VtrfR;EOSt4?NrFtBMi!=J
+MM[.HrJBrupHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3:f1+h;cHat='/U/>[1TB?t!MTAS,Ui
+C27[(E,fr@G'A4XI!pKpK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@
+bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<o(2MQo`Fj]p\ssfq>^<iqu6NlrUg)?
+s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_16Ua@48P;hX;"7?D:B+,_;#O2g;#X>j
+;#F,M=T;Is=Sc+o=SZ,"=T2J'=T;Ib=T;P(=T;MZNfT<cPEhH$R@B\:StMdOUnsueWN*#$Xfnt6
+ZEppH[^WfX]">Vf^;%Fu^qmn)_o'Fk`W*sWa7[OQa8X*W`<*uq_u@LR_8-&bB>2'l]Xtee\[f5Z
+[^NTNZa-j?Yck43XfSS'WMl_mVPU)aU7n9RT:VXES"#k7R$a5*Q'@JqP*(ieNfB!VMi*@JLk^Y<
+KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8
+!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@o0Is-YQ#s.
+R;uY<=B&=";c6Ij;,:%e;,L.b9i"M[:/FY[:JX_[:/=V\:JLg`s%Nkr9MS;X9MA/S9hnOa:Amub
+;u'>i;>3BS6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#
+DK'T:FEVkRH@1-jJ:iN0LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoR
+cdC1ieCN7)g=tH>hr*JRj5f@bkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q$%kBTX:s%YQ(g9Z*L^B[C3QS\[oDd
+]tXK\s1n6Brk\`S_SZ;gn&#+Bs2=ZNs1A?FqnDsBqS)pCrP8<FrP&9Gr4`3GpV?dEs2+EGqo&KO
+r5AEKrl"fT/B!R0OckroQ^F21S=Z@GTqeE\Vl6VqXKAY0Yd1UB[C3QS\[oDc]Y2(p^qp#e!Q2kT
+`W*sXa83mRanj*Ya8a0X`FQp)_ns:,_8*h#^:h1l]=YYb\[],W[C!9HZE^X<YHG"0XK&;"W2HPj
+V50l\TqS-OSt2C@S!ob4Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6HgH?jaZGBS-.
+F:rY8EH,r9DJj<-CMR["BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<<-"s;u]bq
+;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_;6%T'<rs/;ro]P,ii84Ih%GB@be^W'tdF-Cd
+c-4?/b8JCDaMu9=`PTI+^qRV"^V7Iq\[T&V[C!6FlaQRRr'LBMqaCHQs$luXs%!,]r^qZ59MJ5V
+:/=\`;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k?
+Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6
+nac5OoCW%T!VZ9dq#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q"=iSH\R@RM>`>3MuSb9N<#"<O7n[l
+OoCO=OoLUCQ0X\5Q1gI1Q2d0AQ2d0KQgC%;QRnG_O-,TiQ'[l+S"-(BTV8-VVPgAmWiW>*YctF>
+['d?O\@K2_]Y(qm^VI\b_?%Qmrl+oWs2XuWqT8TTs2Y/ZrP`<c_o'@._83q%^V7Co]Xtee\[f5Z
+[^EKKZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP)t`cNfB!VMi*@ILPCP;
+KS+o/JUi9#IXQWkH?sj]GB\4QrcAcoEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,_5?![G7
+!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQr'g6Gq*Xd@oKe'.Yl?-9
+f=SGuZ)OUsV50l]U7e-MSt2@>S"#h6Q^3u(QB[Z#Q'@PtOckihrK$u=s,?u9"cA.nMM[/eM=68o
+62X(K6i0:O7K5jV8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5F
+GBnL^I=Hd"KSG8=Mi<[WOcu&rR$sM8T:r!TVPgDnXfen5ZaI6O\\#Mh^r"".`lQ9Fbg+P^daZdt
+f@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0"XoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Psn/68ki&W;"%3D:B+,`;#F,f;#X>j
+:]X?grD3Dok#hR`pfRAopK7&jj&l:`/6IpnOckroQ^F21S=Z@GTqeE\Vl6VqXKAY0Yd1UB[C3QS
+\[oDc]Y2(p^qp#e!Q2kT`W*sXa83mRanj*Ya8a0X`FQp)_ns:,_8*h#^:h1l]=YYb\[],W[C!9H
+ZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt2C@S!ob4Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,
+J:N,uI=6HgH?jaZGBS-.F:rY8EH,r9DJj<-CMR["BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50
+=TV],=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_;6%T'@rs->lC0XnD
+<)``n##S8q:f(%er_EJi##A&j:JX_]r([;i:/1^_%8BMk9MJ2V9h\8T:/4[c:Amub;u'>j;>*<R
+6N0@L7/o^U7fGpX8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkR
+H@1-jJ:iN0LP^qJNfT<dQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]YD8!_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q#MA8StiCdYQ(g;Z*L^B[C3NS]">Vg
+^:q@srkS3Cs2+`Ps2+`Nn\Y=Ds2=TLrjr6E]tOBYq7lg@rP/<Hs1eBDrP/<Fs1e9Cs2"`Pm)/\<
+qSW<Ns2G#!1QdibQ'[l,S"-(BTq\?YVPgDnX0&M-Yd(L?['mEQ\[f>b]Y2%o^qmn)_o'F3`Q#p<
+a8O*Yan<gUao'6[`rO-Y`W*jV_u@M^_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPi
+Unjc[TqS-NSt2C@S!o_3Q^3o%P`q8mOH5H_NJrgRM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS+N
+FE;L%E=Qr+DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/ko
+rD<Mis%`Jds%NDbr(?oZr^ciTrC6]RoL/LBoKr19JcDtS3;`IHnDW9^hVI#BgY(3.eC2pqdEp.]
+bfe2RbKJ&NaMu0:`PTI,^q[Ru^V7Ft]=GD[[^EKJZF9,/p-JXDrBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cHdu='/U/>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1
+SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X60
+n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q!nKLH@U\HM>`>2MuSe:Nr>%6OPZ,u
+P517=P5gdFQ0X\5Q1^BuQ2d0KQgL+=QiE+&OckroQ^F52S=Z@HU84T^Vl?\sXf\e2Z*L^C[^N]V
+\\#Me]tV7s_8=(,_o0O5`l?'>rQ+u[oud9Ur5eoY!65#Ws24oTrk`-\^q[Xu]tD"i]",A]\$i`Q
+['R*EZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!KSXc1=R[BJ/QBd`"PEM&iO,o<\N/WXNM26qAL4t;5
+K7\Z)IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$jrac+@A,]p<@:9(A#@:\A>[1K;
+>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GPdS7f5^I7/94B6M*Qps0DYYg<7(8
+[]cU)V5'i\U7e0NT:DC>S!ob4R$O#&QB[`$Q'@JrP`q8mOcGE]O,o<[N;e_7M#rQkM#<+uM"X.5
+6N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkR
+H@1-jJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Pse#28P;`RmSE(Bs%i>br(m8fs&&em
+!DcPf:]"5V=Sl1q=Sl1n=S,bk=9)Fj=T;P(O#)o]Pa.T&R[]h=T:r!TUo(&hWiN8(YHY:;Za@0L
+\@K/^]Y(ql^VI\&_Sa:0`Poj:a2e/"rlOiUrlP)Zs2P,Zrl+oU!5nfQ@_ojp^V7Co]Xtbc\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LCS"#k6R$X,(Q'@JqOcYWbNfB!VMM[1GLPCP;
+KS+o/JUi6!I=6KiH?sj]GB\4QFEDSErc&EeDf0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,n:?!U]?
+>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE\8cD9V8,YpT7J'"D6hE_;6%T'Cs!RB6
+G%+WX<E2sp;Gg=g:f1+f;,9q_;,9q^9hnGW:/+GX:/+M[:/(X^!DQ>g9aFEg9hS/R:/4[b:B"&c
+;YEu]62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmoCMds.
+EH?5FGBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^
+daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0UioCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q#1u.R[gRoYHY::ZEppG[^WcW]">Vg
+^VBc`oYLRErkncQr5%p?s24lTp;I*Q`Pqef!PH,D^A,J?^AktG_#D+F^APbF^AktA_#M7N_X,29
+`;@IO`%AriP*;/sQ^F52SXuLJU84W`W2ZeuXfen4ZEppG[^WfX]"G\h^;%J"_SX4/rl"oXa8O*Z
+ao9HRbPoZaao09^a2Z-u`<!oprk`9`^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;d
+UnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nK
+F)l8?E,Y_n"`8'kCMIS_BFAHbAS#C_@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;?0Sl
+;#a>k:Adid9`@]_9)_E\8GYjS7f5^J7/0.A6M*Qps0DYap\aRFi8<GJhV-]:f[eR&e'l^kccaPW
+bKJ,Qb/q`F`Pfa6_8*n&]Y2(o^VIRq\[],W['R$C[d:Ks62a.K6i9@O7K5jV8,l*[8cD>392&&S
+:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCMds.EH?5FGBnL^I=Qm$KSG8=Mi<[WP*;/sR$sM8
+T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3
+nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q!S6HH[CI+M2D1grJU]7s,I&=s,Zu;
+h3%Z!q2tZ>!gAe1rKR>Il]h=4op"9ts-EYN!LB#>Q7\GbP*;/sQ^F52SXuLJU84W`W2ZeuXfen4
+ZEppG[^WfX]"G\h^;%J"_SX4/rl"oXa8O*Zao9HRbPoZaao09^a2Z-u`<!oprk`9`^q[Xu]tD"i
+]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/NRM
+M26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_BFAHbAS#C_@q&nU@:9(A
+!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;?0Sl;#a>k:Adid9`@]_9)_E\8GYjS7f5^J7/0.A6M*Qp
+s0_kPo@Ugc[]ld.UnaZZU7e-MSXl7>R@9P2R?X#'Q'IZ#Pa.GrP5^RIOH,?\NfX1!$&je!MM[4I
+LkgfbM=68o62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmo
+CMds.EH?5FGBnL^I=Qm$KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9F
+bg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFA
+T)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1PsRl.7nHJD:[1^T:\@Q_:]+&h;?'Gn
+:Jgj_s%`AkkZI[_q,mPrp/plgqH3c!moV/EOHPfmQC!u-S"6.DTq\?ZVl6SpXKAY0Yd1UB[C3QT
+\[oGd]tV7s_8=(,`;[^V`lJ&!s2k8_o#q$Ts2k5\!lr=#rl"oV_u@Mb_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqJ$LSt2C@R[KP1Q^3o%PEM)kOH5H_NJrdQM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)[PAn>OaA7K(X@:<RC?NFJ=r`oJ-
+!*]A)s&]8&rDiu"<)ifps&&hor)!Dhs%`Jds%NDbr(?r[rCHcTr'pTQogJRBoKr19JcE1Y*m]a]
+?!(0-<)ZXl;,L.c:Jk"d:JO\^:/4MZ:eOJUr_<Pi:/=Xa9`Rld9`Ric9`Rrf9`[p^qbI,dqGR#a
+p-JXDrBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pNrK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoj%.\o()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,CO(c!R]X<.Z*CU@['d?O\@K2_]Y;/Z
+_">JC_Z%IQ_Yh7?_?.Wn`:_(L`r<sW]`,PB]E#YE^APb>^AktG_#;%I^')3b^V@S_^B2-a^\,DB
+_#V@D_Z7RM_u@US_u.IO_uIY/OHPfmQC+)0S=Q7ETqeE\Vl6VrXKA\1Z*L^D[^WcW]">Vg^;%G!
+_SX4/`Poj:a8X-]ai_d'bP'0WbQ#`bao9B]`rO-Y`<!oprka-#^q[Xu]tD"i]",A]\$i`Q['R*E
+Yct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2Jq8H&
+IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^@q&nU@:9+Bs'>\2r`oJ-!*]A)
+s&]8&r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog848JcE1Yrqlfair7dF
+gtgZ;g"4d)e'l^kccsVVrlYhob/hZE`Q#j5_SO"%]tM2[^(.oj]!]&V[(!BHZF73N[d^d!62a.K
+6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^
+IXm!%KSG8=Mi<[XP*;/sR$sM9T:r!TVPgDoXfen5ZaI6O\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4
+h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,?"S)!H%M*6rJLQ3s,?u;!fi>&q2jBo
+rK@#>rK7/ErfZ<+r0?u?gQhf)s-EeQQ'Lm*0T_H]Q'Rf*S"-%@TV8-VVPgAmX/rG,Yd(L?[C3QS
+\[oDc]tV7r_8=(,`5T^8`lJ)"!m/U-qoe]Wqof#^s2k8]s2P,Zrl"oV_u@N%_8*h#^:h1l]=PP`
+\@8oT[C!9HZEUR:Y-"h-X/`.tVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5E]N/W[PM2@%D
+L4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:<RD?iOF4
+?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]=,f:&[id9D_?\8c;3V8,PjS7J0(D6hNe:6%T'G
+s!ZaM]"#/KVPBr^U8"?RSt;LCS!f_5R$j8+Q'Rc$Q'@MsP*1ofOHGV$NWkB"Mi*@IreU]4LPPkc
+mtgX&rBgHMr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uD/O<4
+F*)SLH$XjeJ:W?+L51VDN/j!_PEhH$R[]n@Tq\?[Vl?`!Y->1;[C3TU]Y2(q_Sa@4aN;WLcHjnd
+eC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5OoCW%T!VZ9dq#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,6UXC78PMtX:]=,^:[LpW:\IW`:]!ri
+;,C*_:]=,g<rc:t=70/j=oDJ!=85ns=8c8$=8Q+k=nu2!=7KBHOHPfmQC+)0S=Q7ETqeE\Vl6Vr
+XKA\1Z*L^D[^WcW]">Vg^;%G!_SX4/`Poj:a8X-]ai_d'bP'0WbQ#`bao9B]`rO-Y`<!oprka-#
+^q[Xu]tD"i]",A]\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rh
+O,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^
+@q&nU@:9+Bs'>\2r`oJ-!*]A)s&]8&r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQ
+ogJRBog848JcE:\&$U:j>Zk*-;c$:f:f'qa;>sB$:/=\_9hnDX9M8&R:/1[^s%ESj:/">V:&[fd
+:]3rk9hnGZ:JO[a:B45f;YO&]62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^IXm!%KSG8=Mi<[XP*;/sR$sM9T:r!TVPgDoXfen5ZaI6O
+\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Eg
+s8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,PB;S=S[5T+ZEggD[C3QR\[oDd^;'W^
+otg[FrPSZPqn_m@s24iSpVm0Pr5J]Ls1JBDs1J<DoY(C?^:sT]qnW0Fs1\HHs1nNHotUXF_SZ,d
+r5&KP_YM+L`;[[Q`;RS+OHPfmQC+)0S=Z@HTqeE\Vl?\sXfek3Z*UgF[^WfX]=bej^V@S$_Sa=2
+`Q#staT'?^b5KN_bl#`acMYrdbl,`bb5]T_aF;1L`l5p8_o'@._8*h#^:h1l]=PP`\@8oT[C!9G
+Z*:I9Y-"h-WiE%sVl-DgUnaZXTqJ$LSXc1=R[KP1QBd`"PEM)kO,o<\N/W[PM2@"BL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3+CMR[!BP;$kB)cENA7K+Y@UW\Q?XI,G?2e(1>?Y50
+=oVS(=8l8#<W?%t;u]bq;>j>k:]=,f:&[id9D_?\8cD9V8,YpT7J'"C6hNe:6%T'Gruh+5n`/Qc
+hVR&Ag"=p,e^MpodEg+]bfn8Sb/qcGa2Z-u_\^/(^V.=q^:V.p^:Un`\$iZNZa$pJ\$b\6og/OC
+rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[m+E,fr@G'A4X
+I=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/
+gYL`Di8N_VjlYail07O#m-X60n+#r=ncA@Srq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,P@SWRH%h"OMYrD4N!#'"O,s.!gl_Mt
+qiUi?s-*ADrfmDGk`kt0pQXEtrg!SMQN!0AQ7e8^PEhH$R@B_<T:qsRUo(&hWiN8)YHY:<['d?O
+\[f>b]Y;.q^r!t+`5T^8a8X0[aT0K^bPo``c2Grcc2PrcbQ#`bao9A1a2Z-<`Pf[3_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)Q'@JqP*(fdNfB!V
+Mi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4kiVAIN*Z@q&nU
+@:3GL?=$q:>QS,5>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]8GPdS7f5^I7/0.B
+6LmEns1A::r8#2t[BZX,U]-u7TV%gJS=H(;R@0G/Q^*i&QBRPtPEV/lOcYZeOH>K_O,f3ZN/WYn
+M$SuqM26qEMM[,WM"O(46N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>P
+A7]@dBkqO&DK'T:FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC[^`l\]t_A"
+_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?tm-O--n*ff:o'uhQo`"Lap@nO\!r;]hr;6Kk
+rVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,P=.l28PDnX:\dc^:[LmW:\@Q`:]!ug
+;?'Jd:]*rh=BAT'<r#hd=T;P&=Sl1n=9)G$=T2D"=S#\l=Su7m=>#\uPEhH$R@B_<T:qsRUo(&h
+WiN8)YHY:<['d?O\[f>b]Y;.q^r!t+`5T^8a8X0[aT0K^bPo``c2Grcc2PrcbQ#`bao9A1a2Z-<
+`Pf[3_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)
+Q'@JqP*(fdNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?p
+B4kiVAIN*Z@q&nU@:3GL?=$q:>QS,5>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]
+8GPdS7f5^I7/0.B6LmEns1J@Khj/=j=]\R$;c$:f:f1%d;,C(b:/Fb_:&[lh92&%X9aOTj9MA5W
+92//Vr_*ku9MJ8V9MS>Z:/+JZ:ese_qGR&bog/OCrBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t*SUAS,UiCM[m+E,fr@G'A4XI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&h
+X0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60n+#r=ncA@S
+rq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoj7:^o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,PAc/5SY<6mZa7$I\$rlX]">Vg^;%Fu
+_"GPD_Yq@P_YV+?_Z.OQ`:q7N`r!aT]`,VE]`5V@^&>\F^%f>A^\P\D^Au"H^\ttH^\5JC_>hCP
+_tLt;_u@UR_^pt8Q'[l,S"-(BTq\?ZVl-MoXKAY0Z*L^C[^WcW]">Vg^V@S#_Sa=2`Q#sta8sE*
+rlb>crlsrXrltJerlb>a!6P5]s2S]j`Pod5_ns:,^q[Xu]tD"i]",A]\$i`PZa6sBYct=6XfSS'
+Wi;qpVkp2bUS=HUTUqaGS=?":R$a5+Q'IStP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&Isl`mH[:!`
+G^"@TFoHIhF)l8?E,TW3D/B2e$>O9gBP1phAS#C^raH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"
+<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]8GPdS7f5^I7/0.B6LmEns1A:;r;Z`^iSWPKgt_n^0@nY'
+d*^7eccaJSaihfKaiMQC`l,d3^qRRs]Y(tj^;.Lr\[8lTZaR3FZ*q-N[dU^!62X(J6i9@O7K5jV
+8,l*[8cD>092&&S:/=\_;,U=k<E<.%=]ns6>[CcF@U`kZB4u!pCi401EH?5FGBnO`IXm!%KSG;>
+Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[
+k3(sml0I^&mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,P@/6IH@CSHMZ&J5N;nn;NrG(>OP,cp
+P5:=>P5gaCP5LRCPP:=APP17:Q26^GQ'C$grg*DGpQd@nPa.T&R[]h=T:r!TV5L5jWiW>*Yd(L?
+['mHR\[oDc]t_=t_8=+.`Poj;rl>,^b5TTabl5lVcMl)gbl5fcaoKQ_aT':l`l5p8_o'@._8*h#
+^:h1l]=PP`\@8oT['R*EZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!KSXc1=R[BJ/QBd`"PEM&iO,o<\
+N/W[OM26qAL4t;5K7\Z)J:DuqI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB
+@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZr^ciTrC6]RoL/IA
+og848JcEF`([0>[]X4`;US4EVTqJ$LSt)=?R[KM0Qi<9mQ'@JqPE_5lOcYWcOH5E]NK0!YN/NUO
+Ll$qEM26qBre^'!p-JUCrBpKNr^HiVr^ZuZ!(m/^HqR.-9hnJ\:f1+h;cQk!='8[1>[1TB?t*SU
+AS5[jCM[m,E,fr@G'A4YI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60nF?MK!V>s_o`=d\rV-HiqYL-erqu`n
+p&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,P=%f084u\V:\[]b:]=/j:[V!X:\IWa
+:]!ug;?'Jc:]*rf:]+;m<r#hs=T;Ir=T)D$=Sl1j=T)>!=S,bm=Sc+n==fW"Q'[l,S"-(BTq\?Z
+Vl-MoXKAY0Z*L^C[^WcW]">Vg^V@S#_Sa=2`Q#sta8sE*rlb>crlsrXrltJerlb>a!6P5]s2S]j
+`Pod5_ns:,^q[Xu]tD"i]",A]\$i`PZa6sBYct=6XfSS'Wi;qpVkp2bUS=HUTUqaGS=?":R$a5+
+Q'IStP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e$>O9g
+BP1phAS#C^raH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]
+8GPdS7f5^I7/0.B6LmEns1\LA^4L-*=]eX%;,:%c;#O5o:esh_;#F&m92%uR9i"O`9`e!_:Amod
+9`Iid9F"3c:/=V\:/:a`mnrdEr'L?Lr'^NQs$luXs%!,]r^qQ29MJ5V:Jakb;H$Lo<`W:)=^,-9
+?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg*]o`"Lap@nO\!r;]h
+r;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,PAPf*Q^b1m['[6L\$roZ]=bhk^VBQZ
+qSE0JpqcU>s24cQq8N?Qq8NBGs1A?FrO`0C]_/u6^AktH^];.K_"b\B_#M1B_#D1A_?.Wn`:LnH
+`%f/mPa.T&R[]k>TV8*UV5L8lWiW>+Yd(O@[C3QT\\#Mf^;%J"_SX71`Q#s>aN;TIrlYAec-?13
+o?[?[s3:Sfrlb>a!6P5]C<+?5`Pf^4_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck12XK/A$WMl_l
+V50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!UMM[1GLPCP;KS+o/J:N,uI=6KiH?sj]GB\4Q
+FEDSErc&EeDf0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_o
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g6Gpd=^@nj.j,^&JfAs7YI0h;6uBg=Os-e^N!nda6=a
+rlb>as2cA(a2c3<_ns4)^V7@n^:V%m^V%1e\$i]O['R$E\@8m7\+N&b6N':L7/o^U7f>gY84cDP
+8pj9*9heAY:f("e;c?[s<``F,>?kH??XR>PA7]CeBkqO&DfKc<FEVkSH[U?nJV/W1Ll%%KO-#Ng
+Q'[l,S"?7GUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?t
+m-O--n*olHncA@Srq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,P?r!CG^>%(r/1N4"H8>"NfO+"q2jQt
+rK?u=rf[8Eq3(Z?qigi?rKHu?rKRAIrg!AFl'275ns00>qN^lB0TqZcQ^F52SXuLJU84W`W2cl!
+Xfnt6Za7'J\%0&]]Y2%o^qmn)`5T^8a2l?Db0'_,!mJp6r6Fo[r6G>es31Jcs2k>`rlAip`l5p8
+`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Xf\\*WiE%sVl$;dUnaZXTV%gISXc1<R@'A.QBd`!
+P*1rhO,o<\N/NRMM26qAL4t;5K7\W(IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$j
+rac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciT
+rC6]RoL/IAog848JcELb&EV$D\[&-0U8+HVT:VXES=BMH$CR6HQ^*l&Q'7Gqrf[AFOSt4KNfB$Y
+NK&mTMMm@KM#N58LkghEM2-rWM"O(36N':L7/o^U7f>gY84cDP8pj9*9heAY:f("e;c?[s<``F,
+>?kH??XR>PA7]CeBkqO&DfKc<FEVkSH[U?nJV/W1Ll%%KO-#NgQ'[l,S"?7GUSOcbWiN8)Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?tm-O--n*olHncA@Srq-<cp\jjg
+q>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh4rKo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,P<qW,7S<VSqb@)cs%iVjs%i)Ys%i>b
+s%iMgr_`\lp.tQ\r_NGnqc<Akr)ir"r`K/&rE/nt!E`Fs=T;J&<rZ8!=S5hn=Sc+p=>5o&Q'[l,
+S"6.DTq\?ZVl6VqXKA\1Z*UdE[^WfX]=bhk^VI\&_SjF4`lH0Aai_d*b6#o4c2>lYchu)gc2Z#e
+bQ#]bao9@ra2Z*;`5KR1_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YH=q.X/`2!W2HMhUnjc[TqJ$L
+St2C@R[KP1Q^3o%PEM)kOH5H_NJrdQM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;L%E=Qr+
+DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<<-"s;u]bq;>j>k:]F2f
+:&dod9D_?\8cD9V8,YpT7J'"C6hNe:6%T'Ps"!B/H=L,\<Dudk:f1%b:f("d:/=V]:JX\[9hS)O
+9MSAZ:/=SX9M\GY9MPL[&5,_k9MJ8V:JFY\9hnJ\:JL:Tog/LBrBpKNs$crWrC6o[8P/nRHqR.-
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,EH-&AG'A7ZI=?]tK7nu8M2R=ROHPfmQ^F52
+StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60
+nF?MK!V>s_o`=d\rV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PA>H"MjUT[['d?O\@K2_]Y2%npV?XA
+rkeHHoYUXGr5AEMrl4cQ!Q;SJ]D0&3^%oD?_#D(K_"k_H^;%G]^];.B_#;+B_Z.OP`:Ur"P*D5u
+R$sM8StMdPUo(&gWiN8)YHY==['mEQ\[oGd]t_=u_SX4/`Q#s>aN;U(b6#o4c2Grfci)5ddJ_Gk
+ci)/hblGuebQ#]bao9A*a2Z*;`5BL0_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1uVl-Dg
+UnjcZTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+N
+FE;JBEH#i7DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/ko
+rD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr+7JcEIa)?&mZhq[&CgXt-/eCE'pcd:"_bf\)O
+aiDI$a;r:>`5BI,^V7Cn]tD"l^V7=f[C<QM['R$B[C<WRn$hsUr'L?Lr'^QRs$lrW!_>mSr^qQ2
+9MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/s'`PEhK%
+R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*
+mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-P?_^=F*`J"rJCZ7N/[aqs,R,?q2jQt
+rf[&=rf[8Eq2tiBPa.O4PkpU?Pl-a@Pl-gGPQ7!GPj+J5Pk11=QMQmDQ7e>bQ'[l,S"6.DTqeE\
+Vl6VrXfek3ZEppH[^`lZ]Y(qm^VRe(_o0O6a2l?Db5TQcbg"E2cMu5hd.u)fd/MAicMu,hbl5fc
+aoKQ_aEP\E`Pod5_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYck43XfSS'Wi2hnVPU)aUS4BST:VXF
+S"#k7R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df9N2
+D/=!'C2*Z\!G?$DAH?=OraGn:@/aL<?<piA>[(E9r`T8's&]2#s&B%urDW_os&&_ks%iYir([2b
+r_*,\r^m)[q+(BQr'g6Gq*Xd@nj.j,_Z'o'f"AT&X/Megrh0@`T)P5fS!oe6Q^=#(Q'RVtrK@2C
+s,d2?!f`/!rf%#;Mi*>iM$/WkLkgcbM=-2m62X(J6i9@P7K5jU7fl4Q8cD>092&&S:/=\_;,U=k
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGp
+Xfen6ZaI6P]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_K
+p@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohP/No()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-P=%c-7nQEL:A[cb:B+,i;#a>[:B+,`
+:]O;g;#O5k;"[W]:B"#i:0.6nqH!8jrE0#"rE'2*=BJX,p/h#ks&]2#r`B&#pK@;oqH!]"=oDGT
+P*D5uR$sM8StMdPUo(&gWiN8)YHY==['mEQ\[oGd]t_=u_SX4/`Q#s>aN;U(b6#o4c2Grfci)5d
+dJ_Gkci)/hblGuebQ#]bao9A*a2Z*;`5BL0_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1u
+Vl-DgUnjcZTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#i7DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nq
+s&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr+7JcEXf(;PK;?<^H/;c-=f;,:%d:esq`
+9hnGZr_<bo8kViP9hnDX:B!p$:/+GZ9he;S:.n8T92/2W9hnJZ:AmuW;>!6Q6N':L7/o^U7f>gY
+84cDP8pj9*9heAY:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%K
+O-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^iu^]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFd
+kiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEL'EMk-sK[0j@O\[oDc]tV4q^\Yb6
+_=YVE_u%CK`W!mP`<*us]_]82]_fD=^&YqI_">DA^Akt;_#;+C_Z.OP`:h)#PEhH$R@B_<StMdP
+Uo(&hWiN8)Yd(L?[C3QT\\#Mf^;%J"_Sa=2`lH0AaiaV+!R/gfcMu5id-oB^d/VGjcMu,hbl5cd
+b/sY("inX%`Pf[n_I^R!^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50l\TqS-OSt2C@
+S!ob4R$O#&P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mV
+Chmg$C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J'"C6hNe:6%T'QrsAK#p#P)egYCQ;rmrdQeC2aid*U%[aihfI`lQ3?`Pod5
+_8!^u]t1nk]=kto]=#&U[C!<IZ*C[F\$bY5og/LBrBpKNs$crWrC;9,8P)NH91qrQ9hnJ\:f1+h
+<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&i
+X0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^X
+p%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;YTnYp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEKKqEI!1nrJLW6rf-l:rK$r>iK=,&
+pQ>K=rfd,?!KiQEPl?sHPkpUAPkpU>Pl?sAPj=V4Pk:7>QMQmFQ7\;cQC+)0S=Z=FTqeE\Vl?\s
+Xfen5ZEpsI\%0&]]Y2%o^qmn*`5Ta:aN2KGrlY>dc2Q#gci2;[dJqSnci)/hblGueb5oc-rl>8`
+`l5p8_u@Ma_8*h#^:h1k]",A]\$i`Q['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gHS=?":R@'A-
+Q'IStP*1rgO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_
+BE;aXrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]
+8GPdS7f5^I7/0.B6LmEns2=pLk/FjBZDj[oU7n6PSt;IAR[X5D$($sEQ'@PuP*;(.OTLW-NrG(G
+Nf/jUNJraRMMV7g"GhnjL55bb!JcO#M"O(36N':L7/o^U7f>i*84cBF8kVfN9heAY:f("e;cHat
+<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)
+Yd1UC[^iu^]t_A"_o9[;b0/&TcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-FlBmdKZ8rpg9bo_%nN
+p@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEJ:'8OlJN:&[ob:[_$Y:\ITb:]!ue
+;?'Jd:\mic:B=3dpK.2loiM/qqcEc!!EWCo=8>tu=8Z+r=SQ%o=Sl/S=BSd/PEhH$R@B_<StMdP
+Uo(&hWiN8)Yd(L?[C3QT\\#Mf^;%J"_Sa=2`lH0AaiaV+!R/gfcMu5id-oB^d/VGjcMu,hbl5cd
+b/sY("inX%`Pf[n_I^R!^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50l\TqS-OSt2C@
+S!ob4R$O#&P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mV
+Chmg$C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J'"C6hNe:6%T'UrseCjHX^2]<E)jn:Jah`rDEPhs%O#":ej_X8k_rS9hnGZ
+9h\4X:'aNg9MA)R9h\7Z:B+&g:B+)i:$tmO62X(J6i9@P7K5jU7t!p"8P2TJ92&&S:/=\_;,U=l
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$UVPgGp
+Xfen6ZaI6P]"G_k^r"".a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(smlKdg'"RYXGnF?MK#4qK[
+p%J+RrV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh?MF0ep%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`fs>MOC-B[^W`U]"5Md]tV7rqS;R9
+o>:LEqo&BNrl4`P#/nL!`P&psqRc=2qn;pArkJKKotUI>s1e'=rPA6Fs24`Pq84nOQC+)0S=Z@H
+U84W_Vl?\tXfnt6Za@-K\@K2_]Y2(p_8=(-`Poj<aN;TJbKS2TrltSkd*V^<o@!Qas3Uelrm(Pg
+!6kGc!QrO`aF;1L`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XK/A$WMl_mV50o^U7n9R
+St;LCS"#k7R$X,(Q'@JqOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<
+Df0H0Ci!m&C2%?pB4kgfAcH9E@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#X8j
+:Amod9`@]_9)_E\8GPdS7f5^I7/94B6LmEns24j=qs34rrnB6_f[n^*e^Vsld*L"]b/hcJ`l?*=
+a2Q!8_na%%]tD%j]"5Sh]=>5W[^EKKZa$dC[C3O4\+Dua6N':L7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;cHat<`iL->?kH??X[DRA7]CeC27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@H
+USOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&TcdC1je^rF+g>(N@hr*MSjQ5OekiqBum-O->mfDqJ
+rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`fEkEHuteMMd=MN/WaUrJpi;rfH*$
+s-!,=rf[8EplY`AP*(q*Pl?sHPl$[BPkgO=PlI$CPj=V2PkC==QMm'KQMm(%QC+)0S=Z@HU84W_
+Vl?\tXfnt6Za@-K\@K2_]Y2(p_8=(-`Poj<aN;TJbKS2TrltSkd*V^<o@!Qas3Uelrm(Pg!6kGc
+!QrO`aF;1L`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LC
+S"#k7R$X,(Q'@JqOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Ci!m&C2%?pB4kgfAcH9E@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#X8j:Amod
+9`@]_9)_E\8GPdS7f5^I7/94B6LmEns2Y-^o@gmi[]H@#Tq\3NSt2FAS!oe6R$a5*QBdc"P`h5m
+Oo:@IO,f9\NJrjUN;e_CM27%FLP^hCLPLbEm>1C#r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<`W=*=^,-:?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE\
+W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*s6g!Xnc&(`
+oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`e@&7n65M:&Ria:[h-Z:[_-Y;?'Jd
+:\mic:BO?f:/COaq,[2j!*K)!s&e_kqcNl"qc<_ur)io#!*K5'pK7Aqs&f;(0U7rkR@B_<T:r!T
+V5C/iWiW>+Yd(OA[C3TU]">Vg^V@V%_SjF4`lQ6Cb0.uPbg$.4!mf6?r6b,ar6bPks3L\is31Pf
+rlY>bao9A1a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!K
+SXc1=R[KP0QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6
+DJa3+CMR[!BP;$kAn>QRA-HIP@UW\Qra,\4?2e+/>6%k+=oVS(=8c/$<E)rr;Z]io;>j>j:]F2g
+:&[ic9DhE]8c;3U8,YpT7J'"D6hE_96%T'Wrs?i-E*c^L;c6IhrD3Gjs%j%t9i"JY9MJ8U92#7Z
+!)3Ae!DQ8e9`e!a:B!oc9F4Ed:JX\[9hnDXr_EMjmnr^Cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*=^,-:?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(B
+TqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*s6g!X
+nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh?2+'dp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`fj4L6.n,]skM^]">Vg]tV5[^]2+;
+_#V@O_=kbG_tq=K`W!mQ`;mjT`;mjT]_T2<]E#S;]_fD@^@8o8^Akt;_#;+E_>qLL`;IM0Q'Rf*
+S"-(BTq\?ZVl6VqXKA\1ZEppH[^`lZ]Y2%o^qmn*`5Ta:aN;TJbKS5UcHab_d/DAldf%YieG[kr
+deqJod*L&;c>UtObfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Xf\\*WiE%s
+Vl$;dUnaZXTV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/WXNM26qAL4t;5K7\Z)J:DuqI!^0cH$FOW
+G'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atr
+s&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBoKr+7JcEdj*Vf[.j5A_Ig=b03f@AF$e'QCc
+cd'bWaN2E@`Q,pr`=]r'^qRRr]=Y_f]YD.j[C3QPrj2X0"1>VJ[dLWs62X(K6i0:O7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[
+P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mJlV_nF?)?oCMVIp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=nhX`p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`f<dDKU8XNJi^RN/`hnNr>(.OoCI9
+OT:R=OoCOBPPL@AOo1C<PlI$HPl6gDPkUC/PjF\2PkUI?QMHe%QC+)0S=Z@HU84W`W2cl!Xfnt7
+Za@0L\@K2`]tV7s_8=+.`Q#s>ai_fMbg"DXcHjkarR(YnrR:PkrR:epr6YSmcd2U9Dp?MMbKJ&M
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=5XfSS'Wi;qpVPU)aUS=HTT:VXFS=?"9
+R$a5+Q'ISsP*(ieO,f3YN/EIKLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_
+9)_E\8GYjS7f5^J7/0.A6LmEns2k9[l,pKHZ`0dqTqS*LSt2FAS!oe6R$a5*QBd`!rf[;D&Wi-:
+O,f9_NJrdTNJrdPMi!>hM#W81M#iKimYUR%r'LBMqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op
+<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeE]W2co#
+YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*s6g?bnac8BoCV_K
+p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh<VQ4\p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`e@$7Rg!E:/+I]:ARcV:B+,g;#X8a
+;#X>l:]X?gpeU]\s%`Vir(llbq,Z3Nr)io!r)Wi!r)ir$s&f;(p/q;qs&_+CQC+)0S=Z@HU84W`
+W2cl!Xfnt7Za@0L\@K2`]tV7s_8=+.`Q#s>ai_fMbg"DXcHjkarR(YnrR:PkrR:epr6YSmcd2U9
+Dp?MMbKJ&MaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=5XfSS'Wi;qpVPU)aUS=HT
+T:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YN/EIKLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?
+E,TW3D/B2e'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j
+:Amod9`Ic_9)_E\8GYjS7f5^J7/0.A6LmEns3(EVql>9Z>Zk*+;Gg1a:eska:esn_:&[m(9MJ8U
+91r#T9h\5U9hS/S:/=S\9MA)PrCdSo:ea_[:JFS[:JagS;=m0P6N0@L7/o^U7f>i+84cBF8kViO
+9heAY:f("e;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.
+S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O->
+mgJXTo()DDo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=SMO_p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`fg+LPhM&^::_b]=e-VrP/<Hm(rG5
+rPSNNqSiKSq8E?PrPefT!Q2PI]_K,:]E#Y@]_]>?^@Au8^AktB^];+G_#2%I_?7Wk_o)5e1W,KD
+R$jG6StD^NUnsufWiN8)YctF>[C3QT\\#Mf^V@V%_o0O6a2l?Db0/#Rc-FV\d/DAldf7ebeGn"s
+df.YociDDkc3DP;bfe2Pao9A%a2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*EZ*:F7Xf\\*WiE"q
+Vl$;dUnaWWTV%gISXc1<R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7SQ'IsufoI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atr
+s&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog817JcEgk0`:4pgt^`>f\"d,e^W'pd*Bq_
+bKA#La2Z*;`l#a5`PTL,^:q7l]=PPd^:Uk]\$Z.@s02^6\$rcRn$hmSr'LBMqaCHQs$luXs%!,]
+r^qZ59MA/T:/=\_;,^Cm<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD@N/`m[
+P*D5uR@B_<TV8-VVl6VrXfnt7['mHS]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=SMO_p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`f9aDfU,WO,JsUNK*dprK$<,pQ>K=
+plYN<rKI&?!0R,@ns''9r06o=m?I()!gJt8q3:fB!0mJJ!1*>D0p\2pS"-(BTq\?ZVl6VrXfen4
+ZEpsI\%0&]]Y2(p_8=+.`Q#s>aN;TJbg"DXcHjl9dJqYpe*kfde,IepdJqPnci22oc-4DTbK@s+
+aE#>@`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?YHG"0XK/A$W2HPjV50o^TqS-OSt;LCS!ob4
+R$X,(P`q8nOcYWbNfB!UMM[1GLPCP;KS+o.J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<Df0H0D#S2W
+C2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`K;)=',B%s&K(ur_rhps&&_ks%iVhrD!8bs%E5]
+r^m&ZqFCHQr'g9Hpd=^@nNha+bl8(Bg:t8.X/D\cTq@qTSc>2YRfA`gQ^*l$P`q8nOcY]eP)t`a
+NfT0XrJ^c7!f;_ir.kN3M2I.FM!p2l62X(K6i0:O7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#
+=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=?]uK8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0
+ZF%'L\[oGe^VRe*`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%P
+p\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;YTnYp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`eI'77^$FqbHu`mnW^TpJCfcrD<8b
+q+grc!)EAdnlPQdg/n2Sr`Att!*B#!!*T;'!*T/#!*B)#1KTj-R$jG6StD^NUnsufWiN8)YctF>
+[C3QT\\#Mf^V@V%_o0O6a2l?Db0/#Rc-FV\d/DAldf7ebeGn"sdf.YociDDkc3DP;bfe2Pao9A%
+a2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*EZ*:F7Xf\\*WiE"qVl$;dUnaWWTV%gISXc1<R@'A.
+QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7SQ'IsufoI!^0cH$FOWG'.nKF)l;@EH#i6DJa4hCC4fj
+BP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZ
+rCHcTr'pTQogJRBog817JcF!p+OQ0g?WpQ1;GU+a:/=Y\:f'q`:/+JY9MA/U9M8&S:/(U\%SKJi
+:/4MZ9MJ/R9MJ/Qr_EGes%WYm:JFUQ;=d*O6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeE]W2co#
+YHY=>[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!+n*fc9o()hP"n_K\
+p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpj%Yn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h,MLkqUu\@B)\]=bhj^:q@srP7d9
+pVQmHqS`9Ms2OlR"N8:!`Pqhp!5n?=r4N$Bs1JBFrk/$>rP%p=q7cjCpqQmDrP/?IrPAEKs24TL
+0UA)pS"6.DTqeE\Vl6VrXfen5Za7'J\@K2`]Y;.r_8=+/`Q$!?ai_fMbg"GYcd;[=s3^nrqpb8g
+r7(_p!7Lhn$dd5GcHa\Zbfe2Pao9@qa2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q['R*EYct=6Xf\\*
+Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rhO,o9ZN/NRMM26qAL4t84Jq8H&IsufoI!^0c
+H$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!
+s&Atrs&/korD<Mis%`Jdr_3>bqb$iZr^ciTr'pTQogJRBoKr+7JcEso"8MojjSms;g=b*0rm_D+
+d*U+acd'\UbK7g'`W*db_o0F/^qRLo]=PPa]Y1lS[0<qDZE^[BrjM7(o0N:@r^6QNs$crWr^ZuZ
+!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..N
+O-,TiQ'du/S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-O0/n*ol<nd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_Pn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h,=DfL)SMN!MjNW5%;O6hu&OT:R=
+Oo:IAPPL@COckq+Oo^]/ns''9qNUZ:mZd1*!gJt8qNUE50UA)pS"6.DTqeE\Vl6VrXfen5Za7'J
+\@K2`]Y;.r_8=+/`Q$!?ai_fMbg"GYcd;[=s3^nrqpb8gr7(_p!7Lhn$dd5GcHa\Zbfe2Pao9@q
+a2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.
+Q'IStP*1rhO,o9ZN/NRMM26qAL4t84Jq8H&IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQt
+BP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZ
+r^ciTr'pTQogJRBoKr+7JcF$q%.)-F]!SE2U7n3NSY#hN%\&oVR@9J/QBmf#P`q8nrf@5COcPS%
+N>%5/Mi3INMM[1GM2@%ELPLbELktJUo0N:@r^6QNs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat
+='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..NO-,TiQ'du/S=ZCIUSXleWiW>+
+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*ol<nd"dYo_%nN
+p@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiYNn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h+p7n?0E:&Ri`:[_'T:\R]a;>sDe
+:\dcb:BF9e;#F)j:0(Ed=85hM=8H&!=8Z,!=8c5$=7]Po=8c5TQC+,1SXuLJUSOcbW2co#Y->1;
+ZaI6O\[oGd^;%J"_Sa@3`lQ6Cb0.uPc-FV\d/MGmdK%bneF_;heGdnsdf%Q$d*L%`cHXVXbKJ&M
+rlAfo`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sAYck43XfSS'WMl_mVPU)`U7n9RT:VXES"#k7
+R$a5*Q'@JqP*(ieO,]*WMi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HErL%gE,TW3D/=!'
+C2%BqBP1rVAH?=OraGn:@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_
+9)_E]8GPdR7f5^J7/0.A6LmEns3L]VYCU:i=]SHu:JOSZ:/=SY;#X6)9hnJW9MJ5T92&,V9MJ2S
+9h\5T:B!uf9`I`m9MJ/S:/+MX:JFU`:B45Z;=d*O6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb
+;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5:_GNK93bPa.W(S"-(CTqeH^
+W2cr$YHY=>[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o(!%W
+o^qhLp@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_PnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h,HKnktfY.hOH]`5\F^AbnE_!]&7
+_Z%IL`;@OR`qRFR`l5pq_u[iqpq-I8rk&*@q7Qd@pq?R=otU=:rP/BJoY:FAs2"TLs24ZN1maSu
+S"6.DTqeE\Vl?\tXfen5Za@0L\@K2`]tV7s_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSr
+rmgtss3gtrrmCbm!71Yi"jP97bK@s+aEttI`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0
+X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6Ki
+H?sj]GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%
+s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nj.j,cMnUWqWd%pgYCK6f@JI%
+eC2djcHje\rlPDd`l5p8`W!^Y_nj1)^:h/W\co^Y\$`WNrj2X0"1>YK[dCQq62X(K6i0:O7K5jV
+8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:
+MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?)?oCV\Jp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi\OnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h,9CiFTIL5u%grf6l:mZ?n"rf[2C
+pQ>N?r/q,DP*5g.o9B-9qNU`<m$-k%qipT81maSuS"6.DTqeE\Vl?\tXfen5Za@0L\@K2`]tV7s
+_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSrrmgtss3gtrrmCbm!71Yi"jP97bK@s+aEttI
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%
+P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6o
+B4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[
+q+(?Pr'g9Hpd=[?nj.j,dJjRHh8-V0X/DbdT:Z%Qs-s+ZRf8]WR[BG.rfmAE"d"e,O-#D"NW"e?
+MMm@KMM[,fL]E50M?&J"M=X%26N0@L7/o^U7fGpX8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;
+?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"-(CTqeH^W2cr$YHY@?[^WfY
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DEo_%nWp&Ojdq#C0i
+qY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_PnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h+p6UsU=:/=X\:[_'Q:\mod;>sDe
+:\dc`:B45h:BF9e:]+8b=8Gth=8uD!<rc@m=8>tu=8c2"=8c8$<s2W,=BAT#=T);Y=I5DDS"6.D
+TqeE\Vl?\tXfen5Za@0L\@K2`]tV7s_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSrrmgts
+s3gtrrmCbm!71Yi"jP97bK@s+aEttI`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0X/`2!
+W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%u
+rDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nj.j,df0^+NcJN2=B&-o:/4Ua:'F?f
+:Jak`r_<tt9hnGW9MJ8U9MJ5T9h\4Z:B+&g9`Icc9E7]a:B!rj:/=\_:@1pM62X(K6i0:O7K5jV
+8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:
+MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?)?oCV\Jp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h/EIY<]NXM+SEs1SHHrkJ0Bo>1=@
+"2Vjl_th7>`<+&u`Vm^V`Pf^n]Cri8]DT>0^&#J9^](qI^&>YG^V0Q[!5AHI!5A<E"Mhji_SQ2f
+s24iS2T!DNQ^F52SXuLJUSOcbWN*&%YHY:<['mHR\\#Mf^V@V%_o0O6aN2KGbKS5VcHjkbdF-Il
+rm^turmpSjs472"rm^tss3gqps3Lblrm$#<bfe2PaiMQD`l?!:`5BI/^q[Xu]tD"i]",A]\$i`P
+Za6sBYct=6XfSS'Wi;qpVPU)aUS=HUT:VXFS=?":R$a5+Q'IStP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIS_BEi*]AS#C_A,]p<@:9(A#@:\A>[1K;
+>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6LmEns3^ibq>^3M
+h:pc=f@\['daZ^md*L%`c-=GSbK.^&`#Zb3_8F1,_8*dt]=PPa]"P_c[C3HK['R$B[C<TQm^MaQ
+rBgHMqaCHQs$luXs%!,]r^m2a9`@b9:/=\`;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'KnkMBN/`m\P*D9"R@Bb=TV80XVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg(mdKW6nac8Bo^qhLs7QHerqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h/7Bl%p>L%pZ,NqSP*OSb.?OS=n9
+P5UU<OoU^DOopi0P*,X*!L/fBPkgOCPlI$JPk^I.PQ6pFPlR'HPlR'JPlR'HQ2[$CPlR'JPr=kl
+Q'[l,S"6.DTqeE\Vl?\tXfnt6Za@0M\@K5a]t_=u_Sa=2`lQ6Cb0/#RcHab_dF$Cje,Iksec+.h
+fDjG$ec+(ue,RkrdJqPnci24>c-4ASb/q`Ga2Z-<`Pf[2_SEq$^:h1l]=PP`\@8oT['R*EZ*:I9
+Y-"e+WiE%sVl$;dUnaZXTq@pJSXc1=R[BJ/QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!rb)LKAn>OaA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr+7JcF4!&+7TL]!SE1Tq@pI
+S=Q1>SGej)R[KP0Q^*f"P*1rjOH5KaOH,<[Nf8sVMi<UQMMm:HM27"ELPLbELktJUnj34@rBpHM
+s$crWr^ZuZ!(m/^!D?,c9n,o6:f1+h;cHat='/U/>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKp
+JqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@
+i8EVTjQ5OekiqBum-X60n*ol<o(2MGp%A@Y!;HKfs7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h.r6q9^;:A@WS:A.K[;#X>j;#!i^
+:Adlf;#F)k:/=Y\q,[)gqc<;ir`K&!s&eemq,mYur`9&#r`JqsqcNl"1ffs1R[]k>TV8-VVPgDn
+XKA\1Z*UgG\%&u\]Y2(p_8=+.`Q$!?ai_fNc-FV\d*^7hdaS3Fs4.,"nCR]krmh"ts3q"rs3^kn
+!71YiJ'H3\bK@rJaN)<?`Pod5_SX+'^V7Co]Xtbc\[],W[^<BIZE^X<YHG"/X/`2!W2HMhUnjc[
+TqS*MSt2C@S!o_3Q^3o%P`q8mOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+EH,r9DJj<.Chmg$C&VcMB4b^dA7T3L@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_96%T'crsH&`BO"\@;Gp=c:&[of9a+<e:f'q_rCn#&
+:/">U9h\5T:/"AU9282V:/+DU9DqNa:&[ll:JFS[:JO[Q;=[$O6N':K7/o^U7fGpX8,u6\8c_RY
+r_7l;:Jand;c?Xq<``C+>$G6;?XR;O@qB7cBPM="DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa7])
+S"6.DTqnN_W2cr$YHY@?[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,
+n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h/CH%_$CY.ahHs1A?FrP&9Gq7uC6
+s2+fRpr)^As2P)Xs2=oUs2=rVqmum?]D9&<]DT>0^%f>7^\PV:^Au"G^B23e_>M1M_u7M0_j?aZ
+S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oDc^;%J#_SjF4a2lBFbKJ/UcHjkbdF-IlrmV#"f%0`Mp=T8o
+rmq,"rmV"udaJ-B!RT0lc@=*_bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Ycb+1
+XK/A$WMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'@GpOcYWbNfB!VMi!:HLPCP;KS+o/JUi9#IXQWl
+H[:!`G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\$YO'_ARo=]@U`bS@/aL<?<piA>[(E9r`T8'!*B,"
+!``3!rDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQqaL0Gpd=^@nNha+e,LKep?LSig=t92e^N!s
+eC)aicd'bZbfn5Oa2Ps7`5DPi(Vml&^:_%g\[o>b]=5/T['R*EZ*UjJ[dCQp62a.K6i9@O7K5jV
+8,l*[8cD>392&&S:/=\_;,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=
+MN!RVOckuqR$jG7StMgRV5L;mXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$mI'H3nF?)?#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h/5AoDd;KoYnerf6f8m?%%(rK@/D
+p6,H>q2tfAP*5R'q3:W;rK[AHqNL--nWa*=rK[DIqj%/FrKT1'Q^F52SXuLJUSOcbWN*&%YHY==
+[C3QT]">Vh^VI_'`5T^9aN;TJbK\>Xcd:(edaHVDe,n1Of)+(mf_a;"f)O;"e,n+Idf.Vpd*M^:
+J'H3\bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<Y-"h-X/`2!Vl-DgUnjc[TqJ$L
+St2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9
+DJj<.Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;1=oVS(=8c/$<E)rr;u]bq;>j>k:]F2f
+:&dod9D_?\8cD9V8,YpS7J0(D6hNe96%T'ert#"a^pp_PVP9`TSt2@AS=BMG$(@9NQ^=#'P`q@2
+OUdP:O-#E_N/`dVN/`dSN;\Y8Lkkqb"G_ejMMUYVnj34@rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\
+:f1+h;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLK
+UnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X60n*ol<
+nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh:&"ATp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h1.7K5p[9htR]mnWRPqb[5grD<8b
+q+glas%rMe!_uNepK$lerDrhts&f,!r)io!rE/Skq,mYu!`iB(rE/bprE(jWQ^F52SXuLJUSOcb
+WN*&%YHY==[C3QT]">Vh^VI_'`5T^9aN;TJbK\>Xcd:(edaHVDe,n1Of)+(mf_a;"f)O;"e,n+I
+df.Vpd*M^:J'H3\bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<Y-"h-X/`2!Vl-Dg
+Unjc[TqJ$LSt2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;1=oVS(=8c/$<E)rr;u]bq
+;>j>k:]F2f:&dod9D_?\8cD9V8,YpS7J0(D6hNe96%T'frs[_KFC/0O<)?@c9i+Xb:&ds09i+Y]
+:/"AV:/4MW9MJ5T9MS>U9M8#S9hnJY9h\4Z9F=Kf:/=S[:/F__:@1pL62a.K6i9@O7K5jV8,l*[
+8cD>392&&S:/=\_;,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=MN!RV
+OckuqR$jG7StMgRV5L;mXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYai
+l0@U$mI'H3nF?)?#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh=nhX`p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/iEefF?Uq++L]Y2#W^@o>5_#(qJ
+_Z%IJ`::hH`rF$X`;[aU`;ddV`;[@K]_]8>\cfXV]">TO]_&l;^AP\>^@]25^@]/A^qmkb_Z.OP
+`&3pNS"6.DTqnN_W2co"Xfnt7ZaI6O\[oGd^;%J#_o0O6a2lBGbKS5Vcd:(edaQ[peCE+#rR_&$
+o@a,qrR_)#s4.+us3gtrrm>c5cd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*E
+Yct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)
+IsufoI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`oJ-!*]A)
+s&]8&rDiu"<)ifp!`DlmrD<Jhs%`Jds%NDbr(?oZr^ciTrC6]RogJRBog8.6JcF=$#5S;lj4rAB
+rm`aPda?Rnd*L"_bg+GTbK7lG`l#^4_SO%&_8*n&^:_%g\@T5`]=,)S['[-EZ*_$M[dCQp62a.K
+6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^
+I=Hd!KSG8=MN!RVOckuqR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3
+gtgiFiSrnYjlYajl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/i@W-:4JGtN(NW+t(O8G%4Oo:IB
+PP11>PPL@DOcklioTK9>rfd>GpQGTArK[>Gr0-<.mZm^7qiq/GrKT7-R[]k>TV80XVl6VrXKA\1
+ZEpsI\@K2`]Y;.r_Sa=2`lH0BbKJ,ScHjkbdF-LmeC<%!f)=5"f^meqf_sG%f)O;"eGmttdf.X7
+d*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZEUR:Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS-.F:!#/
+EH,r9DJj<-rbE6`BkV0mAnGUcA7K+Y@UWYP?XI,G?2e+/>6%k+=oVS(=8c/$<E)rr;Z]io;>j>j
+:]F2f:&dod9DhE\8cD9V8,YpT7J0(D6hNe86%T'grtFnF\@],HTV.mKSt)=?R[]b7R$mo?!LB#M
+PlHmGP5gU^O,f6ZNf8sVNJraRN/NUOLkgeBLPU_BMM[/VM=Nt26N':L7/fXT7fGpX8,u6\8q0K-
+9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*
+S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f=akNV6rlg4$,
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/i5t":78l#:[nkSdPqb[5gr_NVk
+;#3u_:Amug;#*le:B"&]<WH5#<q]Vp<rH+t=Su7u=Su8"=R]Df=T)>"=S>hp=>cJ7S"6.DTqnN_
+W2co"Xfnt7ZaI6O\[oGd^;%J#_o0O6a2lBGbKS5Vcd:(edaQ[peCE+#rR_&$o@a,qrR_)#s4.+u
+s3gtrrm>c5cd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EYct=6Xf\\*Wi;qp
+Vl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)IsufoI!^0cH$FOW
+G'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`oJ-!*]A)s&]8&rDiu"<)ifp
+!`DlmrD<Jhs%`Jds%NDbr(?oZr^ciTrC6]RogJRBog8.6JcFF'$ate'>Zb'*;bp.`:]=)n9i"M\
+:JFX`9dEM0:/+DW:J=DW9hJ&P9M\AW:JFMU92&#P:/"DY9heAY:esjR;=[$O6N':L7/fXT7fGpX
+8,u6\8q0K-9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nI
+NfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f=a
+kNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jDh`k,V6.T5]`#MD^A,J7_"tkK
+_Sa:c`:CnH`rF$X`;[^U`;[aU_uR^S]DfJ>])]GA]DoGB]DT>4]`>_D^%f>:^[]&1^B)-dqniBN
+s26a]R[]k?Tq\?ZVl6VrXfen5ZEpsI\@K2`]t_=u_Sa@3a2lBFbKS5VcHjkbdF-LneCE.$rn%2&
+rn6krrn7;'rn%2$s4.+u!RoKrd=9NhcHa\Zbfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTN
+Za-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)1
+JUi9#IXQWlH[:!`G^"@TF`__HEcQ/>E,TW3D/B2e$>O9gBP1phAS#C^raH+@?sm>K?=$q:>QS,5
+>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B6Ld?ms4I>Xr:T@6
+f\"d(da\9E(=U[XcHaYWbfn>UaN)<>_SX.*^q[Y#rkK5^]Xk\a\[f>a[^<KM['HsA[CEZRm^MaQ
+r'L?Lr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4F*)SL
+H$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkm_8F73aN;WLcHaeae'ut#
+f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8j?uBn,Ita!\NW+t)O8=t3OoCOC
+PP11=PP1.@OckjpP5pjAPQ$gFQ2[$GPNJ,'Q1gI:Pr+ksS"61FU84W`W2co#Y->1:ZaI6O\[oGe
+^V@V%_o9U8aN;TJbg"GYcd:(edaQ^qe^i=NfDjM&g%*krg&BY'fDjG%ec+&!e'e6CJ'cNecHXVX
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt2C@
+S!ob4R$X)'P`q8nOcYWbNJrgSMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<Df0H0
+D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(ur_rhps&&_ks%iVhrD!8b
+r_*/]rCQuZq+(BQr'g6Gpd=^@nNha+gA_H:_RQqRVP'NPrgagpS!oe5R@'D/Q^F)(Pa.JrOcb`e
+O,s:#!K<$:N"Lu*N/W[QMMR%DLkgeAMMd4GmYUL#r'L?Lr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb
+;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;['mKT]=bkm_8F73aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8j6UXI892/1\:\.?Q:\mod;>a8e
+:\[]a:]=2_:B4/X<q08h=Su8!=Sc,!=R]Dd=T;J$=S>hr=>ZD6S"61FU84W`W2co#Y->1:ZaI6O
+\[oGe^V@V%_o9U8aN;TJbg"GYcd:(edaQ^qe^i=NfDjM&g%*krg&BY'fDjG%ec+&!e'e6CJ'cNe
+cHXVXbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-O
+St2C@S!ob4R$X)'P`q8nOcYWbNJrgSMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<
+Df0H0D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(ur_rhps&&_ks%iVh
+rD!8br_*/]rCQuZq+(BQr'g6Gpd=^@nNha+h#@`BRWW%A<`Dpk9hbL\s%WMg!`2Zfr_<Af!)EMe
+s%WVf9MGFX#Yduf9hnJY9M>@Y$VO5h9i"JX:/F\\:[V*N62X(J6i9@O7K5jV8,l*[8cD>392&&S
+:/=\_;,U=k<*!%$=]np5>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Hd"KSG8=MN!RVOcu&rR$sM8
+StVmSV5L;mXKJe4Za@0N\\#Mg^VRh,`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3
+nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Oep%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8jCjq"nS?0K<]`#PC^@T,9_"tkK
+_Sa:b`:LtI`rF!]`5Ta8`Phbps24rU_Y^tE]_8r<]"@pRr4W-Cq7Zd?rOr'As1e*<rk89EotLUC
+^VI\__Z.M6R$sM9T:r!TV5L8lX0&P/Z*UgG[^`l[]Y2(q_8=.0`lH0Bb0/#RcHjkbdF-LneCE.$
+f@S[-g"H5Uq:kc"s4RG)rRV,%e^aZK!RoKrd07nCcHa\Yrl]0$aiMQD`l5p8_ns:,^q[Us]Y(kf
+\[f5Z[^NQLZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(fdNfB!VMi*@J
+Lkg_=KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErL%gE,TW3D/=!'C2.HrBP1rVAH?=OraH+@?sm>K
+?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LmEn
+s4dPZqu?3IgtC?0e,IcLdF6LicHaYWc-4DSaiDB>`50@-^qd_!^qRV!]t:ke\@K,\]!euR['[-D
+Z*h*M[dLWq62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmo
+Ci+'/EH?5FGBnL^I=Hg#KSG8=Mi<[WOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9F
+bg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?
+s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8j?"n.qH\.=UNW+t:O8Y+2O8=t4
+Oo:ICPP(+<PPpXEPP^LFOckihi04/)rKRAIqNL'+rfur:q3<t-R[]n@Tq\?ZVl6VrXfen5Za@0L
+\@K5a]t_A!_SjF5a2lBFbKS5Vcd:(edaQ^qe^i='f@\a/g%sFug\TY(g&K_'f)jORec+&!e'e6C
+"jkT@cHXT4bAGDDaN2EA`Pod5_SX.)^V7Co]Xtbc\[],W[^<BIZE^X<YHG"/X/`2!W2HPiUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+rc&EeDf0H0Chmg$C2%?pB4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%s&K(ur_rhps&&_k
+s%iVhrD!8br_*/]rCQuZq+(BQr'g6Gpd=[?nj.j,h>\)Yc+(<iW1fiSSt2@AS"#k8RJrQZQ^F)(
+Pa%>pP5^UCNrk?$NrG%<MuS_:M2_Fl",_niM>`23MMm:HmYUL#r'L?Lr'^QRs$lrWs%!,]r^qZ5
+9MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uD/O<4F*)SLH$XjdIt<6*L51VDN/is]PEhH$
+R[]k>Tq\?ZVl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Oep%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8j6UaL785)]Q:\miQ:\moe;>sAn
+;,C*c:\dca:]=2h:B45e:]F2U<qBDj=Sc+u=SZ"u=RfJ_=S5`UR$sM9T:r!TV5L8lX0&P/Z*UgG
+[^`l[]Y2(q_8=.0`lH0Bb0/#RcHjkbdF-LneCE.$f@S[-g"H5Uq:kc"s4RG)rRV,%e^aZK!RoKr
+d07nCcHa\Yrl]0$aiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NQLZa-j?Yck43XK/A$WMl_mV50o^
+U7n9RSt;LCS"#k7R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`G^"@TF`__H
+ErL%gE,TW3D/=!'C2.HrBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm
+;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LmEns5*br\qt'*=&r6s:JO\]:/4MX:/+P\9hnGX
+:JFV[9ht[])bipt:.e,P9hJ,S:/4MX92%uP92/,U:JFPY;#X5X;=[$N6N':L7/o^U7f>jW8,u6\
+8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO%DK'T:FEVkRH@1-jJV/W1LP^qJNfT<d
+Q'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;.t_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6r
+m-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kC3G8bR\dR,]Y2#W^AYhC^A>VD
+_"tkI_Y_7I`:LtI`r3jY`l5p8rP\lW_ns:c]DoP;])oRU]D]D@^&G\@^&>VB^$<?1^&5VD^Au"D
+^]2(L_>D)._j[*eT:r!TV5L8lX0&P/Z*UgG\%&u\]Y;.r_SX71`lQ6DbKJ/UcHjncdaQ^qe^i='
+f@\a/r7_/)pY>`%r7_2(s4I>&s4.2#rmUttdf.XDd*L"_c-4ASb/qcHaN)<>`PfX1_8*h#^:h1l
+]=PP`\@8oS['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZXTV%gISXc1=R[BJ/QBd`"PEM&iO,o<\N/W[P
+M2@"BL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-s(_gRBk_6oB4h-S!G#^>@KBnF
+ra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([/as%E5]r^m&ZqFCHQr'g6Gpd=^@
+nNha+h>[`WoB>/cf$r1JdP9.tdF$:cc-+;Ub0%fG`Pod4_SO('^V7Fs^;%Cp]"5M`\[]5^[^<HK
+['HsA[CEZRm^MaQr'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-:?=.)L@Us%_
+BPD6uDJsK6F*)SLH$XjeJ:W?+L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4
+aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFASc=3~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>k>\.blH@c'Ss,Hu;rK$]5qN(K7
+s,m5@rfR/B!0d&<rfd;D!0d5ArfQN1!0Zu<s-3GHq306kqNWt-S=Z@HU84W`W2co#Y->1;['mHR
+\\#Mg^VI_'`5Ta;aND]Lc-FV\dF$CkeC<%"f%8O+f\-2VrnI2&rS.8(s4RG)rn%2$!7h(u!RoKr
+d=9NhcHa\YbKJ&MaiMQD`l5p8_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^
+U7n6PSt;LCS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__H
+EcH)<Df9N2D/B5f#&7jdBP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!!*&nqs&/ko
+rD<Mis%`Jdr_3>bqb$iZrCHcTr'pTQoL/IAog817JcFX-#i`\1ZE'mrT:PqNrgO+\R$a;/Q^7W9
+s-*JGs,dYLNfT6]NfB'YN/R[o#`4LtMi3FJLPYqb"GVelLktJUnj31?rBpKNs$crWrC;?.8P)NH
+91qrQ9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,E,fr@G'A4XI"$TsK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>k6q0U97nNJNlqdISs&&YiqG6o^
+r(m;grD*Diq+publW+'e<`\ior)ibr!*JDcrE'&$p/q#i2O^/-T:r!TV5L8lX0&P/Z*UgG\%&u\
+]Y;.r_SX71`lQ6DbKJ/UcHjncdaQ^qe^i='f@\a/r7_/)pY>`%r7_2(s4I>&s4.2#rmUttdf.XD
+d*L"_c-4ASb/qcHaN)<>`PfX1_8*h#^:h1l]=PP`\@8oS['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZX
+TV%gISXc1=R[BJ/QBd`"PEM&iO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i7DJj<-s(_gRBk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_k
+s%iYir([/as%E5]r^m&ZqFCHQr'g6Gpd=^@nNha+iVsPSSp+RF<E)gk:JOY]:JOVZ9ht[`s%WVk
+:/1[^$;=2j9M8)S8k_lNr_*Di:/4O_9*%^Zr_3Mk9heAZr_DlYnj31?rBpKNs$crWrC;?.8P)NH
+91qrQ9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,E,fr@G'A4XI"$TsK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlNc^&/P,>Ct]Y+3VrkAEGpqH^A
+rkSQMr4i?L_YqCK_u[iqoYpgLrP\cVqS`WV_ns=0`Tt/8])TD@]`5\C]_oJ?]`#P.^AknD^AktJ
+^A5PD_>M/-R[ftATq\?ZVl6VrXfen5Za@0M\[oDc^;%J#_o0O7aN;TJbg"GZd*^7heC<%"f%8O+
+g"HAYrnIG-p"fW&rnID*s4ID)rn%2$!7h(u!RoKrd<a0ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr
+]Y(kf\[],W[^EKKZa-j?YHG"0XK/A$W2HPjV50o^TqS-OSt;LCS!ob4R$X,(Q'@GpOcYWbNfB!V
+Mi!:HLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraGn:
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6Ld?ms5<n_r;Z3GgXam'e,@Z)cd:"_c-4AUb/q`E`Poa3rk\WM!5JNIs1];]]t:kd\@K/]\[SrQ
+Za@$CZ*h*M[dU]q62X(K6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDoXfen5ZaI6O\\#Pi^r"".
+`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlNaZgEGCbO2N/[^po8`[.s,d/>
+qiLc=rfR8Fo90*:rK7/Eq3(`>s,u]3rfZo;r0@;Hq309lr09..S=Z@HU84W`W2co#Y->1;['mHS
+]">Vh^VI_(`5Td<ai_fNc-FY^dF$CleCE.$f@S[.g&B_)g]$"$h>Z4/g\ok+f`9\(fDjD%ec+&!
+e'e6CHI1!`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1uVl-Dg
+UnjcZTqJ$LSt2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhp
+s&&_ks%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=^@nNha+ir9S`d(6fmWM,rUS=Q.>S"#h7rKmbT
+R$Er$Pl?gIOckh*O8b.ANJrjUrehAFMMm@NMM[+DLk^_@L5LnFM!p2j62X(K6i0:O7K5jU7t4'$
+8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[X
+P*;/tR$sM9T:r!TVPgDoXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tml
+l0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0(ZoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlN^H</7ncYR:@(dI;#=&`:Adoe
+;#O/i;#*ob:A.`g<s2Q*=&rE$<rQ,!<q]Vm=PHpW=T;Is=Sc,!<]->9StD^NUnsufWiN8)Yd(OA
+[^WfY]=bkm^r""-`Q-'Ab0/#RcHjkbdF-Ooe^i='f@\d0rn@A+rnR2&rnRM-rS%;)!8.;&s4.2#
+rmUttdf.X?d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:F7Xf\\*WiE"q
+Vl$;dUnaWWTV%gISXc1<R@'A.QBd`"P*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#jqD?XlnCMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t
+;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe96%T'rrt3)+C0jtA;c$1`:/FY[9he;U
+rD"_9:/4JX:/+GV:/4JV9hnAT92%uP:/"DY9h\/P9M8)R9heGY9hnOa:@h?];"6jL6N0@L7/o^U
+7f>i,84cBF8kVfN9heAY:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1
+Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l[]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQ
+j5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0:`oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlNbsB"N1d5d]=bei^&Gb>^&PhE
+^\Y_H_8?/gqSWER`:_+K`r3mV`r*d_`5T[4_Sa=2`k&bU]DoP<]D]>@]Cro:^&GYE]D]D=^&>YF
+^#d!*^]2(L_>_;.R[ftATq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9U8aN;WKbg+M[dF$CkeC<%"
+f@S[.g&B_*g]-'sh>Z40g]#q,g&K_(f)aIQrmYi7da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]",A]\$i`Q['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\
+N/NRMM26qAL4t;5K7\Z)J:E#rI=(s>(3t.KGBS+NFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X
+@:<RC?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRB
+oKr(6JcFa0+oLopi7HK-eC)dmd*^4eccs\Wbf\&KaMu3;_SF%)^qRV_]beDt]t:ke\$roY\@AuT
+['R-GZ*C^H[^PY6nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_W
+AS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTl
+rVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0.\oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlNaHR<EIEM$N;\b+NW>.=Nr"h6
+OSt=@OoU^<P5^[DP5gaDOogc/P5^UDP3A,.P4k+>Pl?sIPk^I=PQ6p:PQI&5Pl6gAPlHsHPl?q)
+R[ftATq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9U8aN;WKbg+M[dF$CkeC<%"f@S[.g&B_*g]-'s
+h>Z40g]#q,g&K_(f)aIQrmYi7da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q
+['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5
+K7\Z)J:E#rI=(s>(3t.KGBS+NFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X@:<RC?O'nC?!LW=
+>?_#/s&f;&r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcFg2#NN\2
+ZE0mqT)>)oR[]_6R@'A.Q^*l$P`q;oOckffNfK2!N<kH$Mi<RQLl%&hM?&M4L^/ZkLPC\ELktMV
+nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/D
+GBeF\I=?]tK8#&9M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlN^?-'7S6EMr(cTSnkf3Zq+gi`
+r_WPhs%rMeqbHfbqc<i$=',B%rDikup/h5qr`9)#nlGflku[[_q,]DAS=Z@HU84W`W2co#Y->1;
+['mHS]"G_j^VRe)`Pom=aihlOcHab`dF-LneCE.%f@\d0rn@D,s4m%urnRP.rn@D*s4I>&!S5g#
+e8Ea`dF$=fcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6p@Yck43XfSS'WMl_m
+VPU)`U7n9RT:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoHiA=,H$FOW
+G'.nKF)l8?E,TW3D/=$(CMIS_BFAHbAS#C_@q&nU@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq
+;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6Ld?ms5s=in"Y2:>#nX#9hnG[;#X8j9a+9d
+9hnDYr_=\69MS8U:/">S9he8S8k_iN9hS5U9h\/N91qrP9heGY9hnOa:@h?];"6jL6N0@L7/o^U
+7f>i,84cBF8kViO9heAY:f("e;cHat<`iL.>?kH??X[DRA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2
+Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1jeCN7)g=tH>hr*JR
+j5oFckiq?tm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNb`ljLRP0PrOha8rkA?G!l2Rc
+rkSQM!5e]Ppr)jEs2OuUs2OoS"iS<q_o9Xp`rN[L](`i:]_K,:])TDA]E#YA]`5\F]`#JA]_oJ@
+^AknH^&Yk1^AP`)^q[_%_OR3iTq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9X9aN;WKc-FV]dF$Cl
+eCE.%f@\a/rn7G.gt_h`o\TK$s4mY/rRq>+f\$2T!S5g#e99<hdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xt]Y(kf\[f5Z[^NTMZa-j?Yck43XfJJ%WMl_mVPL#_U7n9RT:VUDS"#k7R$a5*Q'@Jq
+P*(ieO,]*WMi*@JLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e&8GomBP1si
+AS#C_@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adid9`@]^9)_E\8GYjS
+7f5^I7/0.B6Ld?ms5j7drVu3Egssp'df%SncnE_jbfn8RaiMQC`59C,_SEn"^V7Co]tM.m]XkYa
+\%9)\\%&iQZa-sEYd(UF[^PY6nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3
+>[:ZC@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&iX0&P/ZEpsI
+\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-<cp\jme
+q>^<iqu6NlrUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNa?:5EI*4prJg0(qiCT8rfQZ4
+s-*ADs-*8ArfI2DrfdAFl')%.pQPT@s-<VKp65B<s-*JI!0d>FpQGTAr0-uArKI8G1R4K%T:r!T
+V5L8lX0&P/Z*UgG\%0)_]tV7t_Sa@4a2lBGbK\>Xd*^7heC<%"f@S[-g&B\,gYCT^h=TS$h>c:1
+g\oh-g"=sVf)aIQrmZ,?da?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`QZa6sB
+Yct=6Xf\Y(Wi;qpVl$8cUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o9ZN/NRMM26qAL4t;5K7SQ'
+IsufoI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCCk5pBP;$kAn>OaA7K(X@:<RC?NFJ=r`oJ-!*]A)
+s&]8&rDiu"<)ifps&/korD<Mis%`Jds%NDbqb$iZrCHcTr'pTQoL/IAog817JcFp5$Mr,\]W\<.
+St):?rgWnUs-`nSrg*SK%?cp<OcYWbNK0*\NK0%uMu\b7MuSV8MMmAkM>rA:LP^b?MMd4GmtpR#
+r'LBMqaCHQs$lrWIn3.&8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?=.,M@qB4aBPM=!DJsN8FEMeP
+H@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\VlHf"Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeCE.%
+g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmN^Q9(84H9IrD)]Tnkf6[q+gf_
+s%rVhs%rMeqb@2g:0$perE&u#s&]5$r)Nbtp/h8rs&]/"oN2&nku[X^r)YYDStD^NUnsufWiN8)
+Yd(OA[^WfY]Y2%o_8=+/`lH0BbKJ/UcHstddaZdsf%8O+f\-8X!o)Mcr8%#%qq_;-s4dM+!nl5Y
+rmq2%ec+'Ae'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[Bm3FZ*:I9Y-"h,
+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H^N/W[PM2@%DL5(D8K7e`*J:E#rI=-Bf
+H?jaZGBS-.F:!#/EH,r9DJj<-rbE'[BkV0mB4b^dA7T1Z@UW\Qra,\4?2e+/>6%k+=oVS(=8c/$
+<E)rr;u]bq;>j>k:]F2f:&dod9D_?\8c;3V8,PjS7J'"C6hNe96%T("s"MEQCgC.B;c$:d:/FY[
+:JOVY9MJ;W:/4S[:/+JW9he;S8ki#R9M/#P92&#O:/"C[9)qZb9a"9e9i"Ub:@h?];"6jL6N0@L
+7/o^U7f>i,84cBF8kViO9heAY:f("e;cHat='/U/>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?n
+JV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH>
+hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf8(8K9N4:rk%m:rk80BrkJHJ
+!l;ajrknHJp;R'Os2>,Z`Poj:qS`ZW_o'F3`lJ)"qmc^<pq-O<pq-I8s189Drk8'=rO_p=!58?F
+rOq=,rP/BJ/]!sKT:r!TV5L8lXKA\1ZEpsI\%0)_]t_A!_SjF5aN2NIbg"GZd*^:jeC<%Jf*9m\
+g=k<9h#6(.hXfY'hYl:1h#H..g&fs[f`'J'f%'cLJ()indEp4bcHXVXbKJ&MaN2EA`Pod5_SX+'
+^V7Co]Xtbc\[],W[C!9HZE^X<YHG"/X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWa
+NJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<DuX\UD/B2e&8GomBP1phAS#C^
+@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J
+7/0.A6Ld?ms6'D*r:9(0f$i-sda?FgdEg.ac-4ASb/hTC`Pf[0_83n#]tXHY(r!Yr]=PP^\%&oX
+\@8iQZa-pCYd(UF\$ke8n3R">rBpHMs$crWr^ZuZ!(m/^!D?,c9mBE/:f("f;cHat='/U/>?kH@
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll%(MO-#NhQ'[l-S=Z@HUSOccWiN8*Yd1UC\%0)_
+]t_A"_o9[;b0/#ScdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0sc
+qu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf7LbDg6njrf-9)!frA%rf?o;
+rfQZ4s-*ADs-*8As,m>Er0.)Bl')"-plkT>rK@5GqigrBjcfS+r0&\%StD^NUnsufWiW>+Yd1UC
+[^WfY]Y2(q_8=.0`lQ6DbKS5Vcd:(fe'umtrmqA,g"P07gYDb`rnd8(rSIM/s4mY/rn7G,f\$2T
+!S5g#e:5rqdF$=ecHa\Zbfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XK/A$
+WMl_lV50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcQ/>E,Ybo!GuZPCCk5pBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&]8&rDiu"
+<)ifps&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcG!7#3E_3ZE'gorLEkVs-itU%
+@EKKQBd`"PEV/lO-#J&Nr=qGMi<UPMi*@IM2I1KMZ&>:LPUeAL5LhEM"$8j62a.K6i0:O7K5jV8
+,l*[8cD<_92,=ZGYV%2:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M
+2[FTOHPinQ^F84StD^OUo()jX0&S0ZEpsJ\[oGe^VI_(`Q-'BbKS8XdF-Opf@S^0gYL`Di8N_Vj
+lYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf6=p8k2QLr_DfU!`2ZgohbQ^
+q+gf_s%rVhs%rMeqbI,drDiGir`B&#r`8qss&S_mrDrSmrDr/apfRPt/=`<(Tq\?ZVl6VsXfnt7
+ZaI6N\[oGe^VI\&`5Ta;aND]Mc-FY^dF-LneCFQM#2%V_g=tB;rS@J0oABN'rS@M/s4dP,!nl5Y
+rmq2%ec+'Je'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SEq$^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+
+WiE%sVl$;dUnaZXTqJ!KSXc1=R[KP0QBd`"PEM)kOH5E]N/W[PM2@%DL5(A6K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JCEH,r9s)%jSD#S2]C2%?pB4baeARo:\@U`bS@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+li.LgWI/,X<E2mk:/=Y[
+:JO[a9a+3b9h\;Xr_4/%:/+GV9M8)S9MA)O91qrQ92&&S9M5:Ws%NGf#Ye)h9i+V]:/CIYr_W)M
+rBgHMqaCHQs$luXs%!,]r^m2a9`@b2:/=\_;,^Cm<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJ
+G^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"".a2lEHbg+P^daZh!
+f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN,O;uNM<Jg]CW]7^&>\E^])"L
+_8?,fpVcmH"2r0u`r<pX`5V_qrP])_`Pod5_o0O6a8X-\aiOFks1&*>!4r$=rk&9F]_K,<])K>A
+]`,V?]_oD<]`,VE^AGV7^&Yk?^Abl*^mq!gTq\?ZVl?\tXfnt7ZaI6O\[oGe^VI_'`5Ta;ai_fN
+cHab`dF-Ooe^i@(f\,!4gY:N^h>c@2ht,e*hu;L2h#cBdg]#q,f`9\(f72B%eC;srda?Ihcd'h\
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A\[^NTNZa6sBYck43XfSS'Wi;noVPU)aUS=HTT:VXF
+S=?"9R$a5+Q'IStP*(ieO,f3YN/NRMM26n@KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8"'6%l-
+DJa3*CMITuBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.s&]8&r`9&!s&Aqq!`DlmrD<Jhs%`Jd
+s%NDbqb$iZr^ciTrC6]RoL/IAog8.6JcG$8"TJGej5'[_%+*DLd*U+bcHOJTb/jS%"iS9o_8*ha
+^Abe_^:h4m]"5D\\[T,X\@&`OZF$pAYd1[G[dU]p62a.K6i0:O7K5jV8,l*[8cD<_92,=ZGYV%2
+:f:4j<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&9MN!OUOHPinQ^O>5StMdP
+Uo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0gtgiEi8N_VjlYail0@U$m-X91nF?MK
+#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN*p@:Edre(NU`&,NW+t;O8=t;
+On+Y;Ockolr0%&Cq3(c?s-!>Erfm;Cl')+0!gAe1plkZ@r0.)D!L&c+PP^UCP;Sl%T:r!TV5L;m
+XKA\1ZEpsI\@K2`]t_A"_SjF5aN;TJbg+M[dF$CleCE.%f@\d1g=tB;rS@M1rnm>*rnm_3rS7P1
+gY;_]s4ID)rmuYNe^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*E
+Z*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;L%E>*;0DJj<-CMR["BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50
+=oVS(=8l8#<W?%s;Z]io;>j>j:]F2f:&dod9D_?\8cD9V8,YpT7J'"C6hNe86%T(&rs8SO]=Y8G
+U7@bORgGOOR[KS2Q^*l$rfdAEs,[>DNfT5!N<Y<"Mi*CMMZ/J4MYr;:LPCV@L51YBM!p2i62a.K
+6i0:O7K5jV8,l*[8cD<_92,=ZGYV%2:f:4j<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\
+I=Hd!K8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0
+gtgiEi8N_VjlYail0@U$m-X91nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN'g!&84uZO:@V-X:B"&`;#3ua
+:Amrj:/=\_r(m;grD*Dir_NGeqbR)hoN(ols&f;&r`9"ur`8bp!a&N*r)WJlr)W&`rE'&$r`D%J
+StD^NUnsugWiW>+Yd1UC[^`lZ]Y2(q_SX71`lQ9EbKS8WcdC.geC<%"f@S[.g=k<9h#6(/hYuF(
+i;VX5hYl73gtUT_gAfh+f`'KPf%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc
+\[T#U[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqJ$LSt2C@S!fY2Q^3o%P`q8mOH5H_NJrgSMM[1G
+L5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc&TjDf0H0Chmg$C2%?pB4baeARo<M@L$=L?sd8I
+?=!P8!aAi3r`T8'!*B/#s&K(urDNbq;,R9gr_NPhr([2br_*,\r^m)[q+(BQr'g6Gpd=^@n3MX*
+mJe-LP&+E)<)ZUh:JO\X:/=PY9h\;W9MJ8V9MJ1Y9`n'^9hkU\$qa2d92%uN:/4JT91o1W$;F8i
+:JOVY:esk]nkoB_n3R">rBpHMs$crWr^ZuZ!(m/^!D?,c9mBE/:f(%g;cHat='/U/>?kH@?X[DR
+AS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1UC\%0)_]t_A"
+`5Td<b0/&TcdC1je^rF+g>(N@hr*JRj5oFdkiqBum-O-.n*olHncn^Xp%A%Pp\jjgq>0scqu6Nl
+rUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNGNrjKUJgMqRcU:qRlsE^VBc`
+s2"`PrknKKqS`QT`Pojr`<=,u`Q#pq`<jQ'`Pf[4`Q#s=rlG,]"Nn<e\[hXJs1/0@qmuj@rk8?E
+q7H[<s1@p9r4E!A!5&0AotBP&s1^5&StD^NUnsugWiW>+Yd1UC[^`l[]Y2(q_Sa=2a2lBGbK\>X
+d*^:jeC<%#f@\dUg&]s`rn[V2s53Y1rSdP0s53h4rn[V0!8IM,s4ID)rmuYNe^W*tdaHOjd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=GJ^\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gI
+SXc1<R@'A.QBd`"P*1rhO,o<\N/W[PM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E=[#,
+Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+m/I=go&el]e'lbEd/hS@rlteobfe/MaN)<=rk\WM
+!5JNI'>2#k^:h4m]=GD[\[],X\@/cNZi766Yd(UF[^P\7n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fo?Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/
+S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O-.
+n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNF$45E-[%mqMk<2qi1T8rf?o;
+rfR)@!0R,@"-Jb0PP^OCPPC:BOckn*PQ-jJQ'D*-k`c%0oTT<>q3(fCh37`#rf\t+T:r!TV5L;m
+XKA\1ZEpsI\@K5a]t_A"_o0O7aN;WKc-FV]dF-LneCE1&f\-8X!ScE/h>c@3htc4/iV;@2hu;L3
+h>c71g]#q,f`9\(f72B%eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i\[f5Z[^NTN
+Za6sAYck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)q;#%rcH*DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?iOF4?2e(1
+>?Y50=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_86%T((rs%]*
+\$E'2T)P8[S,SlVQi`\BQN!0LPQ?u1rK.#=&r_g0Mi<UQMi*IMLl$tGLl.(Hr.bK5L5(SBLktPW
+n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fo?
+Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:k
+e^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNC$,68,l<[:AI]_:B"&`;#=&b
+:Amrj:/=Y^qbR5gr(d;hr_NGer(m>hpf7#gpfIDps&K)"oN1rkr`9)%q,dAmlW=$es&UjUStD^N
+UnsugWiW>+Yd1UC[^`l[]Y2(q_Sa=2a2lBGbK\>Xd*^:jeC<%#f@\dUg&]s`rn[V2s53Y1rSdP0
+s53h4rn[V0!8IM,s4ID)rmuYNe^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=GJ^
+\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1<R@'A.QBd`"P*1rhO,o<\N/W[PM26qA
+L4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E=[#,Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra5\3
+!+#S/!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+
+nGa1!Xajkb<)lgm:JO\]:/4JW9MA+W9bpAr9M8&P9h\5Q:/+DU92/)Q9MA&Q9`@Zd84uVT9Ee0e
+:/+GZr_EMhnkoE`n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1QA?t!MS
+AS,UhC27[(E,fo?Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*ol<o)J:bo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJhn4K9`@?oXjt4$,+'e^V@S#
+_8=(f_tV+H`='W'`Q#m9`5KX6`l@qq$c^0)`5BO4`lH0BaSs<]aoT\rrjr-?r4)d;s18-?s1J?E
+!5/!:ot:+4qRlL7q7cmB!kuFaotE5sStD^NUnsugWiW>+Yd1UC[^`l[]Y;.r_Sa@3a2lBGbK\>Y
+d*^:jeCE.%f@\d1g=tE^h#cHjhu)F1iV_^4iV_X6huDR4h>c:1g]-"-fa6<_f@JO'eC;sqrm?&=
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9R
+T:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?
+E,Y_n"`8'kCMIS_BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Jh
+s%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcG-;!pnt&rR1_ns3M2#cHa\Xbf\)La2Q$7rkT&Z
+^V7Cq]Y1ti]tM%h\Giu;\GirF['m<GZEg^=Z*_$Ln$hdPr'L?Lr'^QRs$lrWs%!,]r^qZ59MJ5V
+:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'KnkMBN/`m\P*D6!R@B_<
+TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6
+nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJh7]Dg6kjlAbh(!0?u<rfI2D
+qiU`<"-Jb0PP^OCPPC:BOckn,P6dD:Pa%GtPa.C-P2h`+PjXb7PkgO=P4k+>Pl$[APV\MpT:r!T
+V5L;mXKA\1ZEpsI\@K5a^;%J#_o9U8aN;WKc-FY^dF-Lne^i@(f\,!4gYDea!oDhlr8@M3r8RV4
+r8@V4s5*b2s4mY/s4[M+$/!k]f%/C$eC2kFd<a0ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc
+\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNfB!UMM[1G
+LPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraGn:@/aL7
+?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#X8j:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6Ld?m
+s7$$nf"J_uWM5oOrL3hVS,ScWR?s5)rfmGH&s8?=O,o<]NK&mTN/NUOMMm=IreU]4MM_7e#DS(k
+L51YBM!p2i62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckroR$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'B
+bK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@
+s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJg+l8Ol?Gl;%@Tqb[/cpeLc`
+"&;Wf;#=&g;#F)h;#X8g:'"-er_NPjs%`VopJpofrDs&$=',/to2klks&]2%q,dAmp/h8rq,dMs
+1KU0?Tq\?ZVl?\tXfnt7ZaI6O\\#Mg^VI_(`Pom=aihlPcHjkbdaQ^rf%8O+g"P07h#?+2hV[5g
+i;DR3iqq^4i;_^7hYu@2h#H./gAfh4f[na+f%&:"e'e6CHI1!`cHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]=PP`\@8oT[C!9GZ*:I9Y-"h-WiE%sVl-DgUnaZXTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_
+NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>
+@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m)[q+(?Pr'g9H
+pd=[?nNha+o)B*GQuHD8<E)di9hnO`9`n-a925C\r_<Dd&5#Si92%uR9h\2Q9MA)Q9hG=X$;3u_
+8kMcN9hnDZr_<Af!DQD];?'J^62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4
+>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckroR$jG6StMdPV5L8lXKA\1ZF%'L
+\[oGf^VRe*`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssf
+q>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJqh/J;g;'_>:b@]DT>A^&PhH
+^BhWk_8=+-_SX4c`;@OR`;IUR_u[isqo/TT!6+rU"i\L%aN;O&aoBKabKBdorON!>r4)d;s18-?
+r4MR3pq6L9q7H^>otC@=!5/<Frk/?H^&G_G^&G_G]`,W"StD^NUnsugWiW>+Yd1UC[^`l[]Y;.r
+_Sa@4a2lEHbg"GZdF$CleCE.%f\,!4gYDea!oDhlrS[\6r8R\8qr7V6r8@V4!8d\1Ib`]4g=k65
+f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l]=PP`\@8oT['R*EZ*:I9Y-"e+
+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_N/W[PM2@%DL5(D8K7ec,J:N,uI=6Ki
+s*>H+G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aL7?<pk9>QS,5>5hY+=BAT'
+<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B6LR3ks761-rq,C5f$i$oda?Ff
+d*Bn]bfe2PaN)<=_8#ubs1\NHrk&BG^:h.hrjWTM\@8uW\$`TLZEggAYd(UF\$kb7n3Qt=rBpKN
+s$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@G'A4XI!pKp
+JqSl6M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@
+i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJq7[D/t)YOR.u,NW>.:OS=n7
+P5g[>OoU^?Oogc/P5^[FPQmD;Q'@MuQ2QjAP0]?kPl-a?P3\>2PVJc%Tq\?ZVl?\tXfnt7ZaI6O
+\\#Mg^VI_(`Q#s>b0/#RcHjncdaZdsf%8R-g=k<:rnRY4hr"Cjro*e7rT!e7ro*e5s5*h5rS;qX
+gY:H9g"G$0f@JO'eC;sqdF$=fcd'h\bfe2PaiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NQLZa-j?
+Yck43XK/A$WMl_mVPL#_U7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&
+IsufoI!bm>(3t.KGBS+NFE;JBEH#i6DJa6,CMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50
+=TV],=8l8#<W?%t;u]bq;>j>k:]=,f:&[ic9DhE\8cD9V8,YpT7J'"C6hNe76%T(.rs%`-\[/B7
+T)G,dR[]_6Q^F2,Q^*i#rf\OfOcYWaNK0$YN/W[RMi*FNM27"FLkpnELl$nCLPCVAL55bb!/U*#
+n3Qt=rBpKNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+e^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJp1m7S$-H:[CjV:]+&d:\[]`
+:]F2b:B45g:]F8k:]4&g:B45j:]F8j:]48e<VBJm=8#\p=8l=q=8u>$=8Z1r=8Q%b=8c5UStD^N
+UnsugWiW>+Yd1UC[^`l[]Y;.r_Sa@4a2lEHbg"GZdF$CleCE.%f\,!4gYDea!oDhlrS[\6r8R\8
+qr7V6r8@V4!8d\1Ib`]4g=k65f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP`\@8oT['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6Kis*>H+G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B
+6LR3ks7ZI-os0*Y>#n[%:/FY\:esh\9hS/S:/:d_s%EDcrCR/`92/.Z9*e6c9hS&M9he:Z8e+Nh
+9MJ8X:JFP[:JOY\;"@K`;"-dK6N':L7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=
+?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*S"6.DTqnN_W2cr$YHbF@[^WfZ
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpieRnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJq\$Itj;h]D/u9]DT>A]`Pp_
+_#D1J_>qLL`;@OR`;R[S`;ddV`r*gU`rF$X`"0i,`lH0BaN;THb0%oMbKTjorON!>r4)d;s18-?
+!5.d4p:U@8!5&!<ot:LB]tM(mqRupCs1SHH35)u=T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$_o9X9
+aND]McHaeadF6Upf%8O+g"P07gtgfChV\=jro*n:o&K].s5Eq7s53k5rnW(ZgY:H9g"G$0f@JL&
+eC;sqdF$=ecHa\Zbfe2PaiMQD`l5p7_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Yck12XK/A$WMl_l
+V50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2JUi9#IXQWlH[9uSH$FOW
+G'8"MFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X@:<RC?O'nC?!LW=>?_#/s&f;&r`9&!!*&nq
+s&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAog8+5JcG?A$L6[*e'cXldF$=erlu)"b0.uM
+aMu3:_8*k&^V7Cqrk'/]]">Vd\%&rW\[T)X\$`QLZa$gAYd(LA[^PY6mm6k<rBpKNs$crWrC;?.
+8P)NH91qrQ9hnJ\:f1+h;cQk!='8[1>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7P
+O-,TjQC+)0SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpibQnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJq1VCiOcRm#D%*!0?u<pQ>?9
+s,m)>!0d/?!KiQDPQ-mHQ2d*JPlR'GOnt6mPPp[CPQ-mFPPC=<P5pd;P;nejPb4YDUnsugWiW>+
+Yd1UC[^`l[]Y;.s_Sa@4a2lEHbg+M\dF$FmeCN7'f\,!4gYCW@hVR/hi;V^8ipu..irA!9i;_^7
+hYu>\gtUT;g=b03f@SU(e^W*tda?Ihcd'h\c-4ASb/q`Ga2Z*;_ns:,^q[Xu]tD"i]",A][^NTN
+Za6sBYct=5XfSS'Wi;qpVPU)aUS=HUTUqaGS=?":R@'>,Q'IStP*1rhO,f3YN/NRMM26qAL4t;5
+K7SQ'IsufoI!^0c(O:7LGBS.PFEDSEEH,r9DJj<-Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?
+>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe76%T(1rs8GJ
+]t(5AU7IhQRLtsTR$X2-Q^3o$Q'.;mOH>Narf.8DN/`aSMi*FNre^T0"H&"lLPYqb#)J"gLl."E
+mtpL!r'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-9?=.)L@Us%^BPD6uD/O<4
+F*)SLH$XjdIt30)L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS]=bkm_8=.0a2lEHc-F\`
+e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpiVMnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJp7pr^Z9Ls%iSis%i;_qbR5e
+peLldr(m>hr_NJfs%`\m:J^sdrD*Diqc*;ip/_/opf@AqrE/hrrDio"qcNYqs&T/$!*8Gfr`D%M
+Tq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe)`Q#s>b0/#ScHstde'umuf@S[.g=k<:h;-rEhu;R5iW%p.
+j8J!;iVh^7huDR4h1+57gY1B7g"=p.f%&=#eC2jndEp4bcHXVXbKJ&MaN2EA`Poa3_SO%&^V7Co
+]Xtbc\[])V[C!9HZE^X<YH=q.X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWaNJrgS
+MM[1GLPCP;KS+o.J:N,uI=6KiH?pBQG^"@TG'.nKF)l8?E,TW3D/=$(CMIS_BFAHbAS#C_@q&nU
+@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6LR3ks7lTuaH(.C=B/?":^Tup:/"AW92/)S:Amm&9MJ2Q8PDcL92/)P9M8)P9h\2O9he=\8cVN`
+9`Ifj:JOVY:J^sbs%r8`!)W,Mr'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-9
+?=.)L@Us%^BPD6uD/O<4F*)SLH$XjdIt30)L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS
+]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJqUrItX)a[CQ"Br4E!A!kl@a
+rk\NL!5nWNr5JZR"3&3t`W!dY`Q#m9`;[aU`W4!W`!"'!a2l@$aoBN]bPo`^\bs#=\c'&<\c98(
+]D9,=]DoGB]D0&%]`>eG]eR77T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$_o9X:aND]McHaeadaQ^r
+f%8O,g=k<:rnRV3hu;R6iW%p3irJ07j8S'<iVqd8huDR4h#Z<crn7S0f\"g-f%'cLJ()indEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqJ$L
+St2C@S!o_3Q^3o%P`q8nOH5H_NJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<
+DuX\UD/B2e&8GomBP1siAS#C^@q&nU@:9(A!FB(2>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k
+:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L[9ls7cO!rUAq-f?r!mdJ_B"cHOSWaNDZGa2Gm3_#D(Z
+^:M"i\\>Ye]">M^\%/uXrO30B['[0EZa-g?Z*Uq,[dQN[6N0@L7/o^U7f>i,84cBF8kVfN9heAY
+:f("e;c?[s<`iL->?kH??XR>PA7]CeBkqO&DK'T:FEVkRH@1-kJV/W1LP^qJNfT<dQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^`l[]Y;.s_SjI8aihlPcHstfeCN7(g=tE=hVdAPj5f=akNV6rlg4$,s6g?b
+nac8Bo^qhLp@n=\q#C0iqY^6ir;HTerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh=82F^p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJq+QC2\BKMX?B(NfX$upQ>B:
+rfI5EOo(:APOt%:P5pjGQ2d*JQ2[$EOnk0uPPgUAPQ$a=PPUI-P:rQ%U84W`W2cr$YHY==[C3TU
+]=bkm_8=+/`lQ6DbKS8Wd*^:jeCE.%f@em3gYDea!T)`5i;_d9iqMI5jS.^6irA!:i;_^7hYu=3
+gtVh^#2.Y]f@SU(rmZGHda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTNZa6sB
+Yck43XfSS'Wi;noVPU)aUS=HTT:VXFS=?":R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4k23Jq8H&
+IsufoI!^0cH$FOWG'.nKF)uAAEH#jrD?4TjrbE'[BkV0mB4b^dA7K+Y@UW\Qra,\4?2e+/>6%k+
+=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_76%T(3rse&/\Zr-1
+T:;==R@'D1rKmSNrfmVNPEM&irf@)>rJgi8(lXB0MMm=HLkpqDMMR+FLkgb?LPU_@M2CVUmm6k<
+r^6QNs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4X
+I!pNrK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiW>,Z*UgG\@K5a^;%M$`5]m?bKJ/Ud*^=lf%8R.
+gYCWAi8N\UjQ5Oel07L!m-X6@mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=82F^p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJp7m77Ka;9^PRT:]4,i:\@K\
+:]=)i:JUd_!)WPgs%r\jrD*Ags%i\krD<Jhr_WDip/Uohr)`_qrE&r"p/h8p!*AtuqH!c"='&Mj
+="maKTq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe)`Q$!?b0/#ScHstee'uq!f@S^0g=tE^h#ZBiro!h8
+s5Ne5!9En7ro3t:ro!h6s5*b2!SlH/g'66_f[na+ec+'Je'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP_\$i`Q['R*EZ*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R[BJ/QBd`"PEM)j
+O,o<\N/W[PM2@%DL5(A6K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s)%jSD#S2]C2%?pB4kgf
+ARo:\@U`bS@/aL6?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iYir([/as%E5]r^m&Zq+(BQ
+r'g6Gpd=[?n3MX*qu6onY'XV\<)lor:B=3br_EJd!DQ>g:&dm+9h\/P8PD`L9MJ,P9MJ8T91h`J
+9he8R8P;`Nr_<Df##.if:JX_\mna![mm6k<r^6QNs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!
+=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4XI!pNrK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiW>,
+Z*UgG\@K5a^;%M$`5]m?bKJ/Ud*^=lf%8R.gYCWAi8N\UjQ5Oel07L!m-X6@mgJXTo()DEo_%nN
+p\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8j8Jq&`UW585>r4E!A!kl@a
+rk\WOs1ncR_o)>hrl+fRrl+iS"NAC"`Phbp!li3urknoX`lH1!aoBKabKTt/rQP)JqRZ^;"Lu"Q
+]"7gOs18-?q7?C6qRlj?rjr-ArO`-Br4E0G^:h4mr4N*Crk/BG]tF-R28$VoTq\?ZVl6VsXfnt7
+ZaI6O\\#Mg^VRe)`Q$!?b0/#Scd:(fe'uq!f@\d1g=tE=h;7&gi;_d9ir%j6jT"?=jSS!;irA!9
+hu_fmhYu=3gtVh^IbEB+f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z
+[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*(ieO,f3YN/NRMM2-h?
+KnP)2Jq8H&IsufoI!^0cH$FOW"a5$1FE;L%E<U<"DJj<-rbE'[BkV0mAnGUcA7K+Y@UW\Qra,\4
+?2e+/>6%k+=oVS(=8c2"<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_76%T(2
+rrhQEgX+=Hd/_PlcMu)gb5TL,`lGs6_8*k$^:h+k\\#Md]"P_b\@B#W\@8rW[C!?JYd1S6YQ2'0
+\*pcn62X(K6i0:O7K5jU7t4'$8P2TJ9MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402
+EH?5FGBnL_IXm!%KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+M\
+dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8j(C2@s@KTPY^!KN6=OS+b8
+P5LI<OoU^<P5^[FPl6jIPl6mGPkgI9P4On3P4t1?P5LOAP5UREP5^[FP5gaDP5^XFP5^XFP5LLD
+Pl-_&P*;K2U84W`W2cr$YHY==[C3TU]=bkm_8=+/`lQ6DbKS8Xd*^:jeCE.%f\,!4gYCW@hV\=j
+s5F";r8[\8s5j.=qr@_9s5Eq7!oMkkrnRV1g]#oUg"=s/f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50o^TqS-OSt;LCS!ob4R$X,(
+Q'@JqOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"?8G'.nKF)q8""`SBtDJa4hCCk5p
+BP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&]8&rDrqu!*&nqs&/korD<Mis%`Jdr_3>bqb$iZ
+rCH`SrC6]RoL/IAoKr%5JcGZJ&c:(k\?)U$S=5q9R[BM1R$X0=Q3EP<PEV,krf@)>s,A%XMi<RQ
+M2I4KM27"EM2-tFM26tCL5(M>L5(SBM=-2f62X(K6i0:O7K5jU7t4'$8P2TJ9MA/T:/=\_;,U=l
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EH?5FGBnL_IXm!%KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDn
+XKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQ
+o`Fj]p\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8i_7n,s@9i1:R!)NPis%i;_
+r_NGeq+gueqbI2grD3Ae!)NSj!)NSjrD3Ags&Jhnp/Urir)`\prE&r"pfIGqs&]"upfIJts&]5&
+r`9)#p/a&ATq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe)`Q$!?b0/#Scd:(fe'uq!f@\d1g=tE=h;7&g
+i;_d9ir%j6jT"?=jSS!;irA!9hu_fmhYu=3gtVh^IbEB+f@SU(eC;srda?Ihcd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+
+Q'IStP*(ieO,f3YN/NRMM2-h?KnP)2Jq8H&IsufoI!^0cH$FOW"a5$1FE;L%E<U<"DJj<-rbE'[
+BkV0mAnGUcA7K+Y@UW\Qra,\4?2e+/>6%k+=oVS(=8c2"<<-"s;u]bq;>j>k:]F2f:&[id9D_?\
+8c;3U8,YpT7J'"C6hE_76%T(7s#%o[DI$@F<)?@c:JO_\:/+DU9i"M[9MA)R9M7uL9MA&O9MA&O
+9MA)R91VZL9M8&N91qrPr_3Afr_<Dgs%NJgmniF<r'LBMqaCHQs$lrWIn3.&8kM`M9MJ5V:Jakb
+;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN7F*)SLH$XmfJ:W?+L51VDN/is^PEhH$R[]k?Tq\?[
+Vl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8j4IX[*@VS)N3s18?G^;'Z_
+rP8ZS_o'F1_u7OQ`V[UR`W*jW_o2Pns2=oU!QN+W_umuua2n5$s2kAcbl5f_bkJ[E\cTFR\b<W6
+]D&o5]DK8@]DT8?]D9)?]tEsM!kc.Xpq8V[U84W`W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>Y
+d*^:keCE1&f\,!5gtgfChr!AMiSiepj8S-1jo4?=j8\-=iVqa:hqm5hh#Z<crn7D+f`'J+f%&:"
+e'e6CJ'cNecHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-Dg
+UnaZXTqJ$LSt2@?R[KP1Q^3o%PEM)kOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r:Df0H0D#\8TC2%BqBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq
+;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B6LR3ks8;mRrU8h*e^2[jdEp1`bfn>UbK@rL
+a2Z*9_SX+'^:q7k]stYc]=GM`\@/oW\$rfS\$WKJYl:s.YQM2?[^Y\5mm6k<rBpHMs$crWr^ZuZ
+!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%K
+O-#NgQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l[]YD8!_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@b
+kNV6rm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8j&Bkqa9Jrf\dq2>H9NfT6_
+o9'$8qiU?1!g/Y/rfdAHrKRAIrK[8EpQ=?rqNCoDqNLc=plbcBPEZ!/pQGZAPEZ!1r0'(5U84W`
+W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>Yd*^:keCE1&f\,!5gtgfChr!AMiSiepj8S-1jo4?=
+j8\-=iVqa:hqm5hh#Z<crn7D+f`'J+f%&:"e'e6CJ'cNecHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZXTqJ$LSt2@?R[KP1Q^3o%PEM)kOH5H_NJrgS
+MM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D#\8TC2%BqBP1rVAH?=OraH+@
+?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6LR3ks8N$&jMn[5WMH*aRN.fbR$jA0R$X/*Q'ISuPECrfO,f3[N/`gTN/NYnM?8WjM>i;@MMR(D
+Lk^\?M2$b@M27#VM!mY-6N':K7/o^U7fGpX8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?XI5N
+@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/s'`PEhK%R[]n@Tq\?[Vl?`!Y->1;[C3TU]=bno
+_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh<ql=]p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8i_77Tm>p.kEX!)EJgo1o9\
+qbH`Y!)WYjrD*Agr_NSjr_WPhqb[5kpJgrgpf@AqpK%5orE/ntqc3\uq,mYus&f8%rE'&$r`B/%
+r`8eq2kctAV5L8lXKA\1ZEpsI\@K5a^;%M$`5Ta;ai_fOcHjkbdaZdsf@S[.g=tE=h;7&Hi8ESQ
+ir.p:jRVF3jS\'<irA!:hu_fmhYu=3gtVh^!SQ-)f*0aUeC;sqrm?5Bcd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Us]Y(kf\[f5Z[^NTMZa-j?Yck43XfJJ%WMl_mVPU)`U7n9RT:VXFS"#k7R$a5+Q'IPr
+P*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,]`5DJa4iCBeNfBkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]F2f:&[id9D_?\8c;3U
+8,YpT7J'"C6hNe76%T%Cs7<F@@Tl`2;,:!d:+f799MA)R:JOVY9M8)R9M.oM8P2WK9hS,Q9M%iK
+84lTO91h`J9MJ2U9hnGX:&[rg:@:sI62X(J6i0:O7K5jV8,l*[8cD<_92,=ZI83R7:f1.i<)lt#
+=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu8M2R=ROHPfmQ^F52StD^NUo(&hX0&P/
+Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ>Ufl07L"m-X60n*ol<o(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8m3G^b@3VRH-.s18?G^;'Z_
+rPAKMrkn]Qrl+cQ!6+rU!Q2kT`;mjR`Vm^W`Q#s>rlP/^"3\p3bPBB^\G!K"\cBA7])92;]`,PA
+])TD;]^ic7]_fB#TVA6YVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q$!@b0/&TcdC.heC<($f@em3gYCW@
+hV[8LiSiepj8\3>jn%X6jo4?>j8\-=iVqd8hZ2O4h#Z<crn7D+f`'KPf%&:"e'cXkd*L%`cHXSV
+bK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSXc1=
+R[KP1Q^3o$PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEs)A'YDuOV]
+D/=!'C2%BqBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G%<rZ2"<;fbq;ZBVm;#a>k:Adid
+9`@]^9)_E\8GYjS7f5^I7/0.B6LR3ks8N$%pZLMgdF%s?(sgLOb0A,Qb0%iJa2Z'8_83q%^:q4j
+]=IpQs1&iT\@8uV\@/iT[C!9EYd1R=Yd1XFm'c@Kr'L?Lr'^NQs$luXs%!,]r^m2a9`@b7:/=\_
+;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$U
+VPgDoXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8m%ASH%.JVs8_q2>H9NfT6_
+o9'$8qiU?1!g/Y/rfdAHrKRAIrg!>E!1!2=hNIf#s-3MH!0mJHq3(H8s-!#<rKR>G2P?e?V5L8l
+XKA\1ZEpsI\@K5a^;%M$`5Ta;ai_fOcHjnce'umuf@S^0g=tE=h;7&Ii8NYSrT!q=roNb6roO.?
+rT!q;s5Et8s5*h5rnRV1g]#n-g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SO%&^V7Co
+]Xtbc\[],W[C!9HZE^X<YHG"/X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4R$X,(P`q8nOcYWbNfB!U
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErU+[E,Y_n$>jTpCMIQtBP;$jrac+@A,]pB
+@:3JM?X@&Er`fM/>$Co.s&]8&r`9&!s&Aqqs&/korD<Mis%`Jds%NDbqb$iZrCHcTr'pTQoL/IA
+og8+5Jc>uIe@`/iV4X7URf8`SR/`KZQBd`"P`h/jNfX1""cSG"N/NVnM?&S5M%5>rLl$qCLkUS=
+LPCP>MX-)e62X(J6i9@O7K5jV8,l*[8cD<_92,=ZI83R7:f:4j<)lt#=BSg3>[:]D@:E_XAS5[k
+CM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@
+bKS8XdF-Lnf%8U/gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8l`77Ka:9254Wq+UiarD3#[
+r_NDdmn`mWs%iJfr_NAe!`)itr)NJjqc3>j!*Aenr`B&#qH*Pps&]&!!*B/%s&\tt!*B/#qc>\K
+U84W`W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>YdF$FmeCN7'g"P07gtgfChr*GOiSsgrs5a1@
+oB-&6roF%<s5O(;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI.
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6XfSS'Wi;qpVl$8cUS=HUTV%gHS=?":R@'A.QBd\uP*1rh
+O,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E<1#srb`'[Chmg$Bk_6oB4h-S
+!G#^>@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(urDW_os&&_ks%iYir([2br_*,\r^m&ZqFCHQ
+r'g6Gpd=^@mm2R*#KVj@>uam&;>s>j:]F0E9h\5R9M\DW9MJ8V9MA#N91_`J92&#P9hS&M91hiO
+92%oK92&)V9i"MY9hnJ[:/1+Pmm6k<rBpKNr^HiVr^ZuZ!(m/^!D?,c9moc4:f(%g;cHat='/U/
+>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWN3/(Yd1UC
+[^`l\]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQF+Ah%VQ%?'\c]RW]tXK\
+s1nZNrk\`S_ScAkrl+WMs24lT!l`*rqo&fY_o0L5a2c:#aoBN]bP06\\c92.\b*H8\[oA_p:C78
+q7Q^=s183Apq643!PH&B]`,StTqnN_W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)
+g"P07h;-rFrnmh9ir.m;jSn9.k5XQBjSe*?io/kqi;_[7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=e
+cHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9R
+St;LCS"#k7R$a2)Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW$$LH5FE;JB
+EH#jqD?XlnCMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>j
+:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_66%T%=rpAb(eGdepci25iaq2e>bK7oJaMu09_ns7*
+^V.>[\cB8>]DoAC\[T)WrjVp9"gkVBYd(M5YQ;)>m'c=Jr'L?Lr'^NQs$luXs%!,]r^qW49MJ5V
+:/=\`;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;
+T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQ@VK_%JV0$\NVSP5N<5-$
+OS"\7P5:=<OoUX=P5gXEP5UREPl-dHPl?sEPlI!MP`h4-OT:R@OmS;6Ocklip6,E=rKI;GrfmDG
+q3(*.!0[8Ds-,4$TqnN_W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P07h;-rF
+rnmh9ir.m;jSn9.k5XQBjSe*?io/kqi;_[7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9RSt;LCS"#k7
+R$a2)Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW$$LH5FE;JBEH#jqD?Xln
+CMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod
+9D_?\8cD9V8,PjS7J0(D6hE_66%f1Ki5E1/VkT`NR[KS2R$j>/Qi33ZQ'@MsOcb`dO,f3YN/ddo
+s,%JHMi!7GM26qEMMR"BL4tD<L5(QNM!dS,6N':L7/fXT7fGpX8,u6\8q'E,9heAX:Jand;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#
+Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nc/.\oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQ6q0^:92/4Z:AIWa:B"&]
+:B"&c:A[fe:A7Q^:B+,d;#X8e;#a;o9ikCs<rH%l<;oni<Wc?&<`Sior`B&#qH*Sqr`AJhs&],!
+r`:bHUnsufWiN8*Yd1UC[^`l[]Y;.s_SjF5aN;WKc-FY_dF6Uqf%8R-g=k<;h;7&ghuVfrrSmn=
+roNP0s5j7@rSmt=iSjdos5*h5rnRV1g]#oUg"=p.f%/C$eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4R$O#&P`q8n
+OcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"?<G'.nKF)l8?E,Y_n"`8'kCMIS_BE;aX
+rac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZr^ciT
+r'pTQogJRBoKr"4L&VGHWHViU<E2mlr_=8'9hnGX9h\5T:/4JV9he;T91hiM84lMQ9*S*`8Ol?E
+:&[fs8kViO92/,U9hnJ[:ej_\mSN=;r'L?Lr'^NQs$luXs%!,]r^qW49MJ5V:/=\`;H$Ln<E<1'
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$UVPpMqXfen6
+ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQDgm7oRA%=l])9)H]">Se
+]tV4q^qde&r5&HOo#1RG!Q;nS`;[^_`5T[5_o0O6a2l@$aoBN]bP'0Y\c0,/\b*K1\b<W5]DB2;
+]D&u:]`>_?^%o;tTqeH^W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P39h;-rF
+i8ESRir7s>jQ5M#k4Rp6k5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe8j$ddF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?YHG"0XK/A$WMcYkV50o^U7n6PSt;LC
+S"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H%IXQWlH[:!`GlDn"G'.nKF)l8?E,TW3
+D/F*)CMIS_BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jd
+s%NDbqb$iZrCH`SrC6]RoL/IAoKr%5K`;2Qo]4u^rm:\ks3:Yhao0B]a9Tc)_o'@._8-&`*P/em
+\%92_\@B)Y[^<KN[C3KM['Hp@ZEUR<[^Wd6[dHHZ6N':L7/o^U7f>jW8,u6\8q'E,9heAY:f("e
+;c?Xr<``C+>$P<=?XR;O@qB7cBPM="DK'T9FEMePH@('iJ:`E-L5:_GNK90aPa.T'S"-(CTqeE\
+W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*mdKW6nc/.\
+oCW%T!quB_rqQNhs8)]krqu`no_sFASH"*~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQ?YO=rH[q1TNVSP5N<5-$
+OQqu+P5g[EOoUXDOoUXDP5gXEP5UREPk^O?PlI$KPlHmEP5gXEP4Oh.P5CC8P5UU@PQ6pAP5(4@
+P44YlTqeH^W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P39h;-rFi8ESRir7s>
+jQ5M#k4Rp6k5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe8j$ddF$=ecHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?YHG"0XK/A$WMcYkV50o^U7n6PSt;LCS"#k7R$X,(
+Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H%IXQWlH[:!`GlDn"G'.nKF)l8?E,TW3D/F*)CMIS_
+BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jds%NDbqb$iZ
+rCH`SrC6]RoL/IAoKr%5LAqVQd^l`bV4O0ER[X5Ds-NkUQ^7W9#*tL;P`_)irf8+[N/`dSMi*CM
+MM[7IM2-nCLPgnDL5(D;LP:J<Ll(JSmQpb;rBpKNs$crWrC?lY!(m/^IS3@/9hnJ\:f1+h;cHdu
+='/U/>[1TB?t!MSAS,UhC27[(E,fo?Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOccWiN8*
+Yd1UC\%0)_]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9s7-3^o`"Lb
+p@n=\q#C0iqYg<jr;HTdrdk*>s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQ6UjU<8ko1Xq+^lar_MfS
+r(m>fs%`ViqG7#as%iMgrD38d"&DZd:&@un<`N/l;ufqj<r5nj<rH,!=Sc+u<r?%e=T;J"<]$MF
+V5L8lX0&S0ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnce'uq!f@\d1gYCW@hV[8LiSrkrir\<'jnn35
+kPF?@jo=E?ir\6!iVqaHhqm5Gh;$f?g=k65f[na+ec+'=e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=GJ^\$i`Q['R*EZ*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R[KP0QBd`"PEM)k
+OH5E]N/W[PM2@%DL5(D8K7ec,J:E#rI=-BfH?jc7G7o(AFEDSEEH,r9DJj<.Chmg$C&VcHB4h-S
+!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDNbq;,R6fs%iYir([2br_*,\r^m&Zq+(BQ
+r'g6Gpd=[?n3Mj0+j#^[>ZFa":eje]:JO\\9heAV9heAW9MA/T9MA)P8PD\Q9,U>r8kDNF8PMlO
+8OlEH9MA/U:/+GY:/4MZm834:r'L?Lr'^QRs$lrWs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVPpMqXfnt7ZaI9Q
+]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?PL!V>s_o`Fj]p\ssf
+q>^<iqu6NlrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RCO:J`PbY\c])9)H]">Se
+]tV7r^qde&r5&HOr5AWQ!lW!or5AWQqo&EO#K4Nt`5Ta:aSj6\b5BHTbl>6E\GEc-])&u4])9/A
+]XtfS]`#J:]^`]5]JH7VUo1/kX0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@
+hV[8LiSsjs!p&J)r9""Ap?;J<r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BS
+T:VXFS=?"9R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/
+EH,r9DJj<-rbE'[BkV0mB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j
+:]F2f:&dod9D_?\8cD9V8,PjS7J'"D6hE_66&,CBr9`J!eGdbuc-FVYaiVa*ap#o-a2Z$7rkS`Q
+^V.:mrji0?\[qaM"1P_G\,NfB[C!6DYd1O<Yd<Z(m6UY:rBpKNs$crWrC6o[8P/nRI7m7.9hnJ\
+:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCI
+USOfdWiN8*Yd1UD\%0)_]t_A"`5Td<b0/&TcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O--n*olH
+ncA@Srq-<cp\jjgq>0scqu6NlrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!R?"RbgGCPPLNVSP5N<5-$
+OQqu+P5g[EOoUXAP5g[EP5^[FPk^O?Pl?sJPQ6p3On4b4Onb+;P6-u4PQ$dHPP11(P;Ao-Uo1/k
+X0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@hV[8LiSsjs!p&J)r9""Ap?;J<
+r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=?"9R$a5+Q'IStP*1of
+O,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/EH,r9DJj<-rbE'[BkV0mB4b^d
+A7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8cD9V8,PjS
+7J'"D6hE_66&>OHhS?Y'W1fcMRf8`TQiNKNQ4K=HP`q8nOcb`cNfT-XNK!jp#E"FtMMd4HLAlu.
+M$SomKnY;;L5(QNM![M+6N':L7/o^U7f>gY84cDP8ps?+9heAY:f("e;c?Xr<``F,>$P<=?XR;O
+A7]@dBkhF#DK'T:FEVkRH@1-jJ:`E-L5CeHNK93bPa.W(S"-(CTqeE]W2co#YHY==[^WfY]Y2(q
+_SjF6aND]NcHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6Kk
+rVcBfJcD8?J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!R6:OI98P;eV:AIWa:B"&X
+:B+&f:Adof:B+)i:A[ia:&n)d;#O2d:]aEf:B!rf=Sc)#<`N/m;ufqi<r,hk<r?#!=R]D]=T;J#
+<\pGEUo1/kX0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@hV[8LiSsjs!p&J)
+r9""Ap?;J<r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ihcd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=?"9R$a5+
+Q'IStP*1ofO,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/EH,r9DJj<-rbE'[
+BkV0mB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\
+8cD9V8,PjS7J'"D6hE_66&P[SlD8Z4>#nX#:ea\\:/=VZ9hbO\%8T_n9MA/S9MJ/Q8kV_S9+FNd
+8k_lM84lHK9M.oJ9E%Tb:&[lj9i"S\:$kdE62X(J6i9@P7K5jU7fl4Q8cD>192&&S:/=\_;,U=k
+<*!%$=]np5>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroR$jG6StMdPUo1/k
+X0&S0ZEq!K\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlYail0@U$m-X60nF?MK!V>s_
+o`=d\rV-HiqYL-erqu`no_sFASH"*~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq07_oCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLj"3!NME;cq7-jD]=Y_h
+^:q@s^qfob!5eHIr5AWP!5n`Qs2>>``Pf^4_o0O6a2n5$rlY2_qof&bqof)c\Gj&/\GEc-])&u6
+](`i8]`,P;]^WW6]J61WVPpMqXfen6ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:jeCE1&f\5'6gtgiE
+i8ESRro4(@jlQI'roa7Dq!%b@roa4As5j:Aro4(>iSjdo$fBgth;-l@gY1B7f`'KOf%&:"e'cXk
+d*U+acHXSVbK@rJaN)<>`Pf[2_SEq$^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZX
+TqJ$LSt2C@R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDU(
+ErU+_E,TW3D/B2e&8GomBP1siAS#C_@q&nU@:9(A#@:\A>[1K;>5_S*=BAT'<rZ2"<;ohr;ZBVm
+;#X8j:Adid9`@]^9)_E]8GPdR7f5^I7/0.B6LR3ss!@I1jP\V8cd'bYc-FMSb/_ZH`lQ3?`P]O-
+^q[\!]t1he]=PJ_rOEBI\$`TP[^NZPZEg^=ZMq'0[C3R3[d?BY6N0@L7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cPa7])
+S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5f=akNM0qlg3s@
+mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLgk"7FFSn(NK*ams,@)?
+O,s7$mZIO4rK7,Cs,m>E!0R8Ds,m>ErfdAHq3Cf@rK[DI!L&c1On4b4Ont78P5pjHPP11*P;/i.
+VPpMqXfen6ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:jeCE1&f\5'6gtgiEi8ESRro4(@jlQI'roa7D
+q!%b@roa4As5j:Aro4(>iSjdo$fBgth;-l@gY1B7f`'KOf%&:"e'cXkd*U+acHXSVbK@rJaN)<>
+`Pf[2_SEq$^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8mOH5H_NJrgSMM[1GL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDU(ErU+_E,TW3D/B2e&8Gom
+BP1siAS#C_@q&nU@:9(A#@:\A>[1K;>5_S*=BAT'<rZ2"<;ohr;ZBVm;#X8j:Adid9`@]^9)_E]
+8GPdR7f5^I7/0.B6LR3urs/)@[]la.T:5bIs-NeSrg+4^QB[Z!P`q5nP)t`bO,]-WMuJ\8MuSYL
+Mi*@ILkg_>LP^hBLP:D:LP:J?Ll(MTm6UY:r^6QNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!
+='8[1>[1TB?t*SUAS,UiCMRd)E,fr@G'A4XI!pKpJqJf5M2I7PO-,TiQC+)0SXuLJUnsufWiW>+
+Yd:^F\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSjQ5OekiqBum-FlBmdKZ8rpg9bo_%nN
+p@nO\!r;]hr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLdOR"7nZQQ:/:UZs%`Ph
+nkT*Wr_EJhrD*Ags%`Geqb@,er_NSjr_WSiq+q,g:/:d_!)EMqq,[Vu<E8fnrDiGiqGmAmpf@Gr
+nlP?`r`B)"0r(PAW2co#Y->4<[C3TU]=bkm_8=.0`lQ9FbK\>ZdF-Lne^rF*g=k<:h;7&Ii8N\p
+ir\<'jo+?@kPaW>l2BiFkPXKBjo=E@ir\6!iVqaChqm5Gh;$c>g=k64rmuVMe^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gI
+SXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE@J&s)A3]
+Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL<?<piA>[(E9rE02(=',B%s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m)[q+(?Pr'g6Gpd=^@mm2p4#K;R9>#\Ht;>s>j:&drm9h\8T9hnF\9`@["8kVfL
+84lNJ8P2TK91h`H8PVuP91]%Ts%NJgr_<Dg!DZAV;!gRH6N0@L7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cPa7])S"6.D
+TqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5f=akNM0qlg3s@mI'H4
+nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi1STo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^MDgd+lR%V.h\I,p[]=bhk
+^;%Fu_#2"R_Sa:._o'@.rkn`Rs24iQ!5ncRs2>&X`Phbn"N8:!a2n8%rQ>&]r6,8fbfn?2bl5ld
+\Gj&=\GNc2\GEc-])&u8](EW6]E#S<]^EHkUSOcbWiN8)Yd(OB[^`l[]Y;.s_SjF5aN;WLc-F\`
+daQ^rf@S^0g=tH>hV[8LiSrnXjQ,G$k5XWEkj[j9kl0cDk5XQCjSn3>iW.s:huV`lrnRe6gY:H9
+g"?;UJ(E0"eC2jndEp4bcHXVXbKJ&MaN2EA`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"/
+X/`2!W2HPjUnjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWl
+H[:!`G^"@TF`__HErL%^E,TW3D/B2e&8GomBP1phAS#C^@q&nU@:9(A!FB(2>lS".>5h\)=T;J%
+<rZ2"<;ohr;ZBVm;#a>j:Adid9`@]^9)_E]8GPdR7f5^I7/94B6LR4!s#C#Rkht4Fc-FPVbg+GS
+bK.iIa2c0=`l#[1_7mXu]tM(k\\#G^\[]2\]"#2VZaI6L[^<?GYctG4YQD8B\*^Wk62a.K6i0:O
+7K5jV8,l-[8cMD392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4XI!pKq
+K7nu7M2I7PO-,TjQC+)0SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI,g>(N@
+i8EVTjQ5OekiqBum-O-.n*olIo)J:bo_%nNp@nO\!r;]hr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^M?>+.oH@M!8q2G?5rf7#>
+s,d&=!0H`5s-!DEs,mGGP*5g,s-!AFs-3>EqNUrDs-*MIrfm;ApQ>?7qN:B4qN:]=o98g0mZTQ(
+Uo(&iX0&P/Z*UjH\@K5a^;%M$`5Ta;aihoQcHstee'uq"f@em3gYL]Bhr*GOioB([jQ6@&s6'FG
+nEKr9roa7Bs5j:Aro=%<!9*q8!T2c5h$2ZhgY1B7f`'KPf%&:"e'cXkd*L"_c-=JUbK@rJaN)<>
+`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSt):>R[KP1Q^3o$
+PEM)kOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc&*\Df0H0D#S2]C2%?p
+B4baeARo:\@U`bS@/aL6?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&_ks%iVhr([2br_*,\r^m)[
+q+(?Pr'g6Gq*Xd@mm2s5#i*,%XJV\^R@=,C%[NKJQ^3r%QB[VtPEM)krf7VNNK&mUMi<UPMM[1I
+Mi!7FrIt</reC`4KSP>:L5:]QM![M,6N':K7/o^U7fGpX8H29]8q'E,9MJ5V:Jakb;H$Op<`W=*
+=^,-:?=.)L@Us%_BPD6uDJjE5F*)SLH$XjdIt<6*L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfo"9
+['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7)JioB+]k3(smlKdg'mI0N5nc/1[o*+dZp%J+R
+rV-HiqYL-erqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^M6:4758PW&Vq+^lar_N2^
+q+^WZs%iYir(m2bs%iJfr_N>d!`)Qdr_3Gh:J^Ua!`i<$qGd>lo2b]fr)WSorDrMko2tol2P[(F
+VlHf"Y->1;[C3TU]=bkm_8=.0`lQ9Fbg"G[dF-Lne^rF+g=k<;h;7&Ii8N\Uj5f:_rT=.Cs6/t:
+roj@ErT=.As5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf72B%eC;sqdF$=ecHa\Zbfe2PaiMQD`l5m6
+_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XK/A$WMl_mVPL#_U7n9RT:VXES"#k7R$a5+Q'@Jq
+P*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCCk5pBP;$j
+An>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&f;&r`9&!s&Atrs&/korD<Mir_EAcs%NDbqb$iZr^ciT
+r'pTQoL/LBoKr"4O8fUKU39pI<Dl^k9i"O`9`n-b9hbO\#"hQ_9h\,PpIYT\8kVfN9`@Tq9h\/O
+7nZHI9heAW:/+JY9ht(Pm6U\;rBpHMs$crWr^ZuZs%35_IS3@.9heAY:f("e;cHat<`iL->?kH?
+?XR>PA7]CeBkqO&DK'T:FEVkRH@1-jJV/W1LP^nINfT<cQ'Rf*S"6.DU84W`W2cr$YHbF@[^WfZ
+]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9s763]"n_K\p@e7Zp]C9f
+qY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraND1$bcPGP\d\G`rD]">Se
+]tM.o^\beH_>;%J_u@US_u7IP_uIXT`VmaS_Z[os`lH1"ao0B[bP]TablQ&5rlkAd!RAsf\Gj&=
+\GE]4\G<]+\cfRT]",BK])9/?]_T2;]E#S@]_K/?]DfMA]JcO\VPgDoXfen5Za@0N\\#Mg^VRe*
+`Q$!@bKJ/Ud*^:jeCE1&g"P08h;-rFi8ESRj5]4^jo4EBkPsc@l2KuCl2KoHkPaQCjo=E@ir\6!
+iVqa9hqn@g!SlH/g4%`-f@SU(e^W*tda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[
+[^NTNZa6sBYct:4XfSS'Wi;qpVPU)aUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/NRMM26qA
+L4t;5K7\Z)J:E#rI=-BfH?jaZG9V3QFEDSEEH,r:Df0H0Chmg$C2%?pB4baeARo:\@U`bR@/aL6
+?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVhrD!8br_*/]rCQuZq+(BQr'g6Gpd=[?mm3!6
+#57NHi76,trlcP1bfRuJaiDE?`lH$8_SO((^V7Ip]Xthf\[o;\\%&rZ\,E]?[^EQMZa-g>ZMq'/
+[C>P3m6UY:rBpHMs$crWr^ZuZ!(m/^IS3@.9heAY:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&
+DfKc<FEVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]N
+cHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9s763]"n_K\p@e7[q#C0iqY^6ir;HTerdk*=
+s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraN?"IYeG(GSIN;nn:NrP.?
+OSt==OR8/5P*(liP5^UDP5^[FPkgU@PQmD=Q'ISuPQ$dIQ'D3.oTB*6q2t<4plYN<r0%,FplkZ>
+!0R/Aplb]@q3*_3Uo(&hX0&P/Z*UgG\@K5a^;%M$`5Ta;aihlPcHstee'uq"f@em3gtgfChr*GO
+ioB([jlQL(s6'FGq!%eCq!%eAs6'@Cs5j:Aro4(>iSjdo!T2c5h#Z<crn;hSf[na+e^`1!e'cXk
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZX
+TqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GBY6SF`__H
+EcH)<E,TW3D/=!'C2.HrBP1phAS#C^@q&nU?srt@!FB(2>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm
+;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LR4%rsJ;@[BHR*T:;7;RJrQZQC!o&Pa.MuPl6dF
+NrY4>NW4nAN/NUQMM[1Gre^Z1rIt</reC`4KSP;9KnkQQM![M+6N':K7/o^U7fGpX8,u6\8q'E,
+9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN7F*)SLH$XjeJ:W?+L51VDN/is]PEhH$
+R[]k>Tq\?ZVl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'
+mdKW6nc/1[o*+dZp%J+RrqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraN6q'R885)bP:B"&c:@q9Q
+:Adob:B+,i:]O;i;#X8d:]aEf:B!rl:/=Y^:fg`t<qo_r<rQ+t<;BPb<r>tp<r?##=BAT$<qTPl
+=9)Ft=T2A[USOcbWN3/(Yd(OA[^`l[]Y;.s_SjF5aN;WKc-F\`daQ^rf@S^0g>(N?hV[8LiSrnX
+jQ5M&k5XWEkkOEAlM0WCkl9iEk5XQCjSn0@io/kqhuV`lrnRV1g]#oUg"=p.f%&=#eC2jndEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqS-O
+St2C@S!ob4R$X)'P`q8nOcYWbNfB!UMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"?UG'.nKF)l8?
+E,]`5DJa3*CMITuBP;$jAn>Oa@q/tW@:3LB?NFJ=r`oJ-!*]A)s&f;&r`9&!!*&nqs&/korD<Mi
+r_EDdr_3;ar(?oZr^ciTrC6]RoL/IAoKr"4OoGd+MJ6<r<DZOe9MYL[rCd;f8ki"Y9E.Wa9E%Q`
+8cMBt84cEG92%rJ84lTN8kDNG8kViP:/:^]!)DrYm6UY:rBpHMs$crWr^ZuZ!(m/^IS3@.9heAY
+:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&DfKc<FEVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9
+s763]"n_K\p@e7[q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>PIjbp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL3@rpNM3#`\G`rD]">Se
+]tM.o^\bhF_>hCP_#V@M_u%=N_ZIcq`W!gU_Zmuq`5]g;aSs<\b50<[bl>oibg"AUrQPJjc-<f0
+qmcU8!4_m7rj_g8m(*2/r4;g<rk/'=p:U@;oXm#VVPgDnXfen5Za@0M\\#Mg^VRe)`Q$!@bKS5V
+d*^:keCN7(g"P39h;-uHi8N\Uj5f:_roO:Fkihp.oBQ5;rojCFrT41CjQ-=#!oi1trnmh7hYu=3
+gtVh^"khP[f@JLOe:5rqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?
+YHG"0XK/A$WMcYkV50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&
+IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n$>jTpCMIQtBP;$jrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)
+s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAoKr%5OoIH=pZLJhd`ft[
+bKJ/RaiDHC`l,j7_SjC0_8*au^:h.k]=PSa\[T&X\[]/X[^EQO[^ENM['Hm>ZMq'/[^YY4m6UY:
+rBpKNr^HiVr^ZuZ!(m/^!D?,c9n#i5:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNfT?eQ'Rf+S"61FU84ZaWN*&&Yd(OA[^`l[]Y;.s_SsO9aihlPcHstfeCN7(
+g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL1=k5F+/\%qi(Q7rJgo>
+OSt==ORA82P5gXEP5ULCP5UREPk^O?Pl6mEPQI,7PkgF5OoLO>On+\0OoLUBPQ$g@PPC=1P;K)4
+Vl?\uY->1;['mHS]=bkm_8=+/`lQ9Fbg"G[dF-Oof%8R-g=tE=h;@/KiSrnXjQ,G%joX`0kkjW9
+lMKiFkl9iEjoXZ*jSn0@io/kqhuV`lrnRV1g]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rJaN)<>
+`Pf[2_SO%&^V7Co]XkYa\@8oT[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqS*MSt2C@S!ob4R$O#&
+P`q8nOcYWbNf8pTMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOV]D/=!'C2%Bq
+BP1rVAH?=OraH+@?sm>K?=$q:>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]
+8GPdR7f5^I7/0.A6L[:(rs[Ym[B-6uS=5q8R@'B@QNEG:Q2[$JOo^].rJh2DNfAsSMi*CMMZ/G6
+Ll$ueL]<):M26nAKS5,8KnbD@m>1-qr'L?Lr'^NQs$luXs%!,]r^m2a9`@b8:/=\_;,^Cm<E<1'
+=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$sM8T:r!TVPgDnXKJe4
+Za@0N\\#Mg^VRe+`lQ9FbK\>ZdF6Urf@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?oCV\Tp&F^c
+p\ssfq>^<hqu6NlrUp/@s-s%=~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL-n@!7S6BNq+gobqG-ZW
+ohPE\qG.&ds%i\kr_WPhq+q>m:/4MX:/4S\r_WVt!E`G%<r5ts<rQ,!<;KV`<rQ+r<r?%u=T;J$
+<qKJk=T;J!=T2AYUo(&hWi`G.Z*UgG\%0,`^;%M$_o9X:aihoQcHsteeC<($f\,!5gtgfDi8ESR
+j5]4]jo4BDkNM.,l1=3;l2KoHkPaNEjlGM%ir\6!iVqa9hqn@g!SlH/g'-0^f@SU(rmZGHda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYck43XfSS'Wi;noVPU)aUS=HU
+T:VXFS=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#jqD@15sCMR[!BkV0mB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVS(=8c/$<E)rr;u]bq;>j>k
+:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hE_76'VB[i15!s=Ar*o9heAW9h\8UrCd;f8PDhW9E.T]
+9)hK_8esuh8P2TJ9M%cG8ki&Q8OlEG92/)T:AdiR:[LIG6N':L7/fXT7fGpX8,u6\8c_RYr_7i:
+:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/is^PEhH$R[]k?
+Tq\?[Vl?\tY->1;['mKT]=bkm_8=12aN;WKc-F\`e'ut#f\5'7h;7)JioB+]k3(smlKdg(mdKW6
+nac8Bo^r1Vs7QHerqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLN%WkLmF[ErOE6G]=Y_g
+]tV4q^\bhH_#V:L_>_:O_t_+K_u@R]_o0I1_Sa=3a2c:#ao9HZbPfZbblc27bfp%1!7(PfrOMg8
+rODp<qR6I7qRQ")rO`'?qRc^=qn)m@!kZ+Wo"4t7r4Fh]VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@
+bKJ/Ud*^:keCN7(g"P39h;7&Ii8N\Uj5f>$k5XWEkl'cElLsQBlMKiGkl9iFk5XQCjSn0Wio/kS
+i8<GKh;-lAgY1B7f\"g-f%&:"e'e6CHdL*acHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT
+[C!9HZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;
+KS+o/JUi6!I=6KiH?sj]G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:
+>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6LR4(s!RF+
+j5/>2bfn8Sbfe,KaiDE@`5KO2`59@,]t_7o\[oDb\%&rY\@;IIs0qp6#I_%I['Hm>ZMq'/[^Y\5
+lp:P9rBpKNs$crWrC?lY!(m/^IS3@/9hnJ[:f1+h;cHat='/U/>?kH@?X[DRAS,RgC27X'DfKf>
+Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(g
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLL4\1E-Zqmr/CZ8rJgr?
+OHBI(qiLW9s,d&=!0I/A!0[;C!0[;Es-3>Eqiq#Dqih)GrKR&<m?-n$pQ><9rKR2C"I,+5P*,[*
+pQGT?r0&q4VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:keCN7(g"P39h;7&Ii8N\Uj5f>$
+k5XWEkl'cElLsQBlMKiGkl9iFk5XQCjSn0Wio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'e6CHdL*a
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$L
+St2C@S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi6!I=6KiH?sj]G^"@TF`__HEcH)<
+DuOVXD/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k
+:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6LR4*rupgO[B?F&Ssl(8R$X/,Q^<u%PEh>rOcbfgNfT3\
+NK&mUregi8M2M:hs+h>FLkgb?KnbA>Lk^Y;K8528L5:`TM!RG*6N':L7/o^U7f>jW8,u6\8q'E,
+9heAY:Jand;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%
+R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkn_Sa@4aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mdKW6nc/.boCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLI4L!7nQQQqG.#cqG-ZW
+!_uHapeL`_qG.&d!`2Zgr_WPhq+q>m:/4MX:/4S\r)!>ps&]/"rE&qurD`hsqGlZYqH*Vt!`rE'
+r`9)%pfIAqrE&ku1fpKMVl?\tXg#(:['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8L
+iSrnXjQ6C's6'FGrTX:Gp?V\Bqs".Es6'CDs5j:Aro4mUiSi_Qhr!;Hh;$f?g=k64f[na+e^W*t
+df.X@d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE"qVl$;d
+UnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:E#rI=-BfH?ja[GB\4Q
+FEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`T8'!*B,"!``3!rDW_o
+s&&_ks%iYir([/ar_*/]rCQuZq+(BQr'g6Gpd=[?mm39>$GV@/>#nX#:eXPXr(RAh9hS2S92,=X
+!_H!Wr_!,\s%<;]'M1nh91qlL8P;`M8kDQH8kMfO9htU\mSE18r'L?Lr'^QRs$lrWs%!,]r^qW4
+9MJ5V:JXea;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/t
+R$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^r"".`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI'H3nF?PL#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLMM0]Jruk8rODp>rjr<G
+]tM.oqnN*Frk\<Fs1n]Pr5/iZ_ns:.`Q#s=aSs<\b5]Wbb5KN]bQQ27c-4E2c2Z)eblG9N\bio8
+\H'/<\,Wl;\%):FmCN8.!4qs;rOi*@kI`RHVl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oo
+f%8R-g=tE=hV[8LiSrnXjQ6C'!pAe2rTX@IrTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;H
+h;$f?g=k64rmuVMe^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'C
+Yct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)
+J:E#rI=-BfH?jaZGBS+OFEA"6EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5
+>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4+rrr8ikhk(A
+rlbYjbfn2MaN)??rkncQ,Jh12^:h1m\[f;_\@K,[[^W`S\@K)X['[0J[^ENM['Hm>ZMq'/[^Y\5
+lp:P9rBpKNs$crWrC6o[8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,RgC27[(DfKf>
+Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S=Z@HUSOcbWN3/(Yd1UC[^`l[]t_A"_o9X:aihoRcdC.h
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLL"J)D0CGdqi(N6s,R,?
+pQ5<8rK-r>r/go?!0[;C!0[;Es-3>Eqiq#Dr075Hr06i8m?-n$q2t]?qNLlBrKI5Fs-*ADnWP`)
+Vl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8LiSrnXjQ6C'!pAe2rTX@I
+rTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;Hh;$f?g=k64rmuVMe^W*tda?Ihd*L"_c-4AS
+b/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'CYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=
+R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+OFEA"6EcH)<Df0H0
+D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic
+9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4,rs@DhZ`BpqS=,h5r0IDLrKIGKP*1rhrf7bRNJrgSMi*FM
+M2@+HM26tFM2-h@re:i:M2-h>KS,&7KnbD@mYL3qr'L?Lr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb
+;H$Ln<E<1'=^#'8?!guJ@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?MiEdZP*;/tR$sP:T:r$U
+VPgDoXfen6ZaI6O\\#Pi^r"".`lQ9Fbg+P^dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3nF?PL
+!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLI4L"7n63HnPB0[o1esS
+rD38bs%`\m:J^sdrD35c"A_cf9hkU^qG72s>5_S*=BAT&<rH)"<rH%s<;KVW<r,nr=T)>#=Sc+s
+=Sl1u=>O$TVl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8LiSrnXjQ6C'
+!pAe2rTX@IrTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;Hh;$f?g=k64rmuVMe^W*tda?Ih
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'CYct=6Xf\\*Wi;qpVl$;dUnaWW
+TV%gISXc1=R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+OFEA"6
+EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm
+;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4.rs@SOFBqsI;,C%^r_3bo:/+GV9MJ2R92/(Y
+9)hQa8e"?_7nH<F8P)HD8kVfLr^dMj9hS,N85)ZK9h\8Vr(ZTTlp:P9rBpKNs$crWrC6o[8P/nR
+IS3@/9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,RgC27[(DfKf>Fa&(VH[U?nJqJc3Ll%%LO-#Ng
+Q'[l,S=Z@HUSOcbWN3/(Yd1UC[^`l[]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh?MF0ep%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPBu"J;Tef_n!=hrjr<G
+]tM.oqnN*Frk\TNrk\WOqn`<Ls2,2\_o'@._o9X9aN4>%s2tAb!6Y8`qoo)bs31Jes3CJc!k5\L
+qml^9qRHX:\,<Z9\%&sF\a@!"]D]DB]DT>=]CWZoV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&T
+d*^:keCN7(g"P39h;7&Ii8N_VjQ,Fbk3(slrTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>
+hqm5Gh;$cag(N)kf@SU)e^W*tda?Ihcd'h\bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]O
+Za6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7
+!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYir([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3?@$hEZD
+h:'WmbKA&Rao9<a`lH$9`PVVi%_o`j^:q.e\[f5[\[]/WrO3<I\$i`P['mBO[Bm6FYHY>3YQ;/@
+m^DIJr'LBMqaCHQs$lrW!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4
+EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR%'V;T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^
+daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>PIjbp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPB;PCiXoTOo:7<NW5%=
+O8"b8Oo(7>Ont1>OT:L@OT:RCPQ-mHPlR'IQ2?gDQ2d'OQ'@MuQ26aAOT1IBOQqttP5(.>P5:C@
+PlHsFPlHsGP4OkrV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&Td*^:keCN7(g"P39h;7&Ii8N_V
+jQ,Fbk3(slrTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>hqm5Gh;$cag(N)kf@SU)e^W*t
+da?Ihcd'h\bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;d
+US=HUTV%gISXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+N
+FE;MDEH,r9DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_o
+s&&_ks%iYir([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3EB'^<KAXeqe_R[BM1Q^F/+QBd\uQ'D92
+rf@;ENfB$VMuAM>Mi!=JLl$qCM2D4ere:i<LPLS:K7er6KnbD@mYL3qr'LBMqaCHQs$lrW!_>mS
+r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[
+P*D5uR%'V;T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPA5a7n$$Enk]9\o1esS
+s%iDbs%`\m:J^sdrD35c"A_cf9hkU^peUrpr`]8'"'AW+<r,ku<`Srpqc2cZqH*Vts&],#qcE\t
+q,]OXV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&Td*^:keCN7(g"P39h;7&Ii8N_VjQ,Fbk3(sl
+rTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>hqm5Gh;$cag(N)kf@SU)e^W*tda?Ihcd'h\
+bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gI
+SXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9
+DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYi
+r([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3HC#eY\"=BAHu:J:X\$r0Mj92&&T9MA)Q91o1V#YI`^
+84?'A8P/nPs%<;as%3Mf92/,R8kDYS9*7p`:/:^]mSE18r'LBMqaCHQs$lrW!_>mSr^qW49MJ5V
+:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR%'V;
+T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7]jnp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk]kqIYO,Z[^iu\]=\'T
+!PQ5E^\knI_#V@N_#V:H_#_EhqSE?P`Q#staSs<]ao]c/b5KKabfft/s3:SfrltJgps&iI!k5\L
+r4)g=pUL=7\,<]7[fEr8\a6ou])]G8]DfGC]D&rlVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9EbK\>Y
+dF-Oof%8R-g=tE=hV[8MioB([jo4BCkNMm/s6BXMm-O`;rp'IHs6'IGrT4@HjQ,@]io8qrhuV`l
+rnRV1g]#n1g"=p.f%'cLIac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9H
+ZE^X<YH=q.X/`2!W2HPjUnjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HEcQ/>"`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?NOP>?2e(1
+>?Y50=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_66(@m&q!mP(
+f@%mdbK@rNaN)??`l5m6_SO"$^:h4o]t(Ya\@B#Y\@/cQ[f!W7[0a4L['mEM['6d<rNH@.[C>V5
+lTtG8r^6QNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!='8[1>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC\%0)_]t_A"_o9X:aihoRcdC1j
+e^i@*g=tH>hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7][ip%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk]8JC2nNKMuJ\7NW"n7
+O8Y1>Oo(7>OnXt8OT:RBP5pjHPlR'IQ2?gDQ2d'OQ'@MuQ2$U>OT1FCP37tsP5:=?P5:CBPQ6pC
+PlHsIP5^XFP5CFCPl?k#Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9EbK\>YdF-Oof%8R-g=tE=hV[8M
+ioB([jo4BCkNMm/s6BXMm-O`;rp'IHs6'IGrT4@HjQ,@]io8qrhuV`lrnRV1g]#n1g"=p.f%'cL
+Iac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YH=q.X/`2!W2HPj
+Unjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@T
+F`__HEcQ/>"`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%s
+;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_66(Ir[e[VocV4X9Grg4(ZQ^=#&PEV5p
+PEM(-OT1@@N;nh6M?&M2L]W?gM>i8AL51M=MMHq@KnP,6KnbA<MXQAe62X(K6i0:O7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=k<E<.%=]ns6>[CcF@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OU
+OckroR$jG6StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF-Opf%8U/gYL]Ci8N_VjlY^h
+l07O#lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD5>J,~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7][ip%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk\8c6V'gC:@q?]:@q9I
+:Adoe;#X8c:]sQh:/+I^:A.N]>5_S(=SGkt<`Srpqc2cZqH*Dnr)`eupfB/IW2cr$YHY==[C<]X
+]Y2(q_Sa@4aN;TJc-FY_daZdtf@\d1gYCWAhr*JQj5]4^roO7Ekl'cGlMp2:m/H>MlM]uIkQ'fE
+jp1#/jQ#:[io0mp!T2c5h#Z<crn7P/f[na+ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DfUnaZXTqJ$LSt):>R[KP1Q^3o$PEM)kOH5H_
+NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEcH(&E,TW3D/B2e!GZ?JBEi*]AS#C_
+A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]R
+oL/IAoKr"4T)T)MQuH>4<_uXirCm>e9hkU\"\hZ`9M8(V8cq^W7nEVN#"M6S7nH9Fr^m,_&PYnk
+8OlEH8kVlP:/+GY:/+IO:?t4D6N0@L7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<``F,>?kE>
+?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa.W(S"-(CTqeE]W2co#YHY==[C<]X
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:h;@/Lj5]7`k32'olg3sEmI'H3nF?)?oCW%T!quB_rqQNh
+s8)Zjrqucoo_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0FdoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk]YfH%D!LWkQ$T]DfGD
+]tXBYr4r9IrP8<H!5STM!lDdirPAcW`Q#s>aiOJ's2kDdb0'\+!R/abbl>ofbl5lecM5WacMY*P
+\%&sI\c027\H04Lr3cX8\G`u&](3H5](`i7]E#S?]JZUcWiN8*Yd1UC[^`l\]t_A"_o9X9aND]N
+cHjnde'ut#f\,!5gtgiEi8N\Uj5f=ak3(pkrosIJs6KRKp$MVBs6K[LrTOCIkNDj,s5a7Aro=%<
+!9*q8!T2c5h1+57g=k65f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]",A]
+\$i`Q['R*EZ*:F7Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrdQM2@%D
+L5(D8K7ec,J:N,uI=6KiH?omCG^"@TF`__HErL%^E,TW3D/B2e&8GomBP1siAS#C^@q&nU@:9(A
+!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCHcTr'pTQoL/IAog8(4
+Sc:bAl/:@FbKS/Pb0.oIa2Q$8_Sa:-^V7Fs]Y;%g\[f5\\%/uV[(!KP\$rlV[C3HN[C*KPZEpg>
+Yd484!4D4&lp:P9rBpHMs$crWr^ZuZ!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]Ce
+BkqO%DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cPa7])S"6.DTqeH^W2cr$YHY=>[^WfY]Y2(r_SjF6
+aND]NcHjndeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)]krVZZn
+o_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0@boCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk]2FB5Mg?K9(ujNW"n7
+O8Y1>Oo(7>OnXt9OoLUDP6R88Pa%GuPl?sEPl$^LPa.JtQ'M-/!1!8>kE5.pr/puAqih&C"I#(7
+P*>a,qNCoBrKI5F25dCQX0&S0ZEpsI\@K8c^VI_(`Q#s>b0/&TcdC1ieCN7(g"P39h;7&IiSrnX
+jQ5OdkND(.l2U&Klhg&AmJ?2Lli-2JklU)3kPjWDjT+B@j8\*=iVqa9hqn@gJ)&f4g=b03f@SU(
+eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYck43XfSS'Wi;qp
+VPU)aUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH3nkA
+GB\4QFEDSErc&*\Df0H0D#S2]C2%?pB4kgfARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"
+<;ohr;ZBVl;#a>k:Adid9`@]^9)_E\8GYjS7f5^I7/0.B6LI.3rsIo'ZE:!sSsYq5R/WHPQMcpH
+P5UIIO,]*WMN!FLreg]2"c8%jLkpoeL]<).L'rfmL5(A6K8528Kno&Olp:P9rBpHMs$crWr^ZuZ
+!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]CeBkqO%DK'T:FEVkRH@1-jJ:`H/LP^nI
+NfT<cPa7])S"6.DTqeH^W2cr$YHY=>[^WfY]Y2(r_SjF6aND]NcHjndeCE1&g"P3:hV[8Mj5]7`
+k32'olg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)]krVZZno_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0:`oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk\5`7S$'C:%_<]:@q9I
+:'"-er_NMir_N;c!)NSh!)<Gfp.t`dpKIQ!!*Jts!EN4s<;fhj<rZ7l<qobr=T;J$=Sc+u=SZ#U
+Vl6VrXfnt7ZaI6O\\,Vj^r"".`lH0CbK\>YdF-Lnf%8R-g=tE=hV[8MioB([jlY^gkNMp0s6BXM
+qs="CqX"7Jrp'IH!pJh1roX7B!9F.>s5F%;rnmh7hYu>\gtUQ:g"G$0f@JL%eC2mpdF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?YHG"0XK/A$WMl_lV50o^U7n9RT:VUD
+S"#k7R$a5*Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c$$gc>GBS+NFE;L%E<U<"
+DJj<-rbE'[BkV0mB4b^dA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhps&&\js%iYi
+r([2br_*,\r^m&ZqFCHQr'g6Gpd=^@mQmQH$2h;`@THN0;,Bs`:&[fi9hS)P92,=W"%u3Y9DqC&
+8k;NF7Rp'A8kMZH91quO9M7uM91hiP9MJ8V9hnFM:@(:E6N':K7/o^U7fGpX8,u6\8q0K-9MJ5V
+:Jakb;H$Op<`W=*=^,-:?=.)L@Us%_BPD6uD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*D9"R@Bb=
+TV8-WVl6VsXfnt7['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<iqu-HlrUg)?s-s%=~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^V)H[gm<T>.tLrk&9F
+^AG\E_#M1F_#D1K_#(tH_?Ros`lH0BaSj3_b0.rMqTJf\r6>5dq9Aoa!4Vj6s0i!<rji$>rj`$?
+qmca;\,Ni9[fEr;\`^R#]DK24]CrloVPpMqXfen6ZaI6O\\#Mg^r""-`Q-'BbK\>YdF-Lnf%8R-
+g=tE=hV[8MioB([jlY^gkl0iHlMp2Jm/?>HmelJLm/QDOlM]uIkQ'fFk5XNCjSn0Wio/kSi8<GK
+h;-lAgY1B7f\"g-f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[C!9H
+Z*:I9Y-"h-X/`1uVl-DgUnjc[TqS*MSt2C@S!ob4Q^3o%P`q8nOcYWbNf8pTMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HEcH)<E,TW3!GuZPCCk5pBP;$kAn>Oa@q/tW@:<RC?NOP>?2e(1
+>?Y50=TV],=8l8#<W?%t;u]bq;>a8j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_66(n6)p?Uht
+f[.gaai_]Ia2c0;_ns=1_8*h#^:_(k\[T)[\$iiU\$WXC[KX1K[C3HMrj2j:['[*AYPk[,Z*h(0
+[d-6W6N':L7/fXT7fGpX8,u6\8c_RYr_7Z5:Jakb;H$Op<``C+>$G6;?=.)L@q9.`BPD6uDJsK6
+F*)SLH$XjdJ:W?+L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`
+daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^UnB5)F6J<BhjrJpc9
+oT9$6plPE9!0[>F#*b=9Pa.Jtrg!>Eq3CuErg!;DrfmJGooT'5!0Zi6l]V70rf[/BrK72FP5^[@
+PkUA!PbtCZX0&P/ZEpsI\@K5a^;.V'`5Td<b0/&TcdC1ieCN7(g"P39h;7&IiSrnXjQ5OdkNMp0
+s6BXMr9XCLq!S(Iqs=@Ks6BRIs6'IGroX7B!9F.>)<0W6i8EMMhVI#CgtUQ:g"=s/f@JL%eC2kF
+d=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$W2HPjV50o^
+U7n9QSt;LCS"#k7R$X,(Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nK
+F)l8?E,]`5D?4TjrbE'[BkV0mB4b^dA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhp
+s&&\js%iYir([2br_*,\r^m&Zq+(BQr'g6Gpd=[?mm3ZI&_4=mWMH,TR$a5-Q^F))P`q=1Op[;5
+OH5K_N/WXOMuAJ?LP^hDM2$hBM2-nBreCH.#)J"fL4b,3reCH.!/g6$lTtG8rBpKNr^HiVr^ZuZ
+!(m/^!D?,c9mKK0:f("e;cHat='/U/>?kH??XR>QA7]CeBkqO&DfB];FEVkRH@1-kJV/W1LP^nI
+NfT<cQ'Rf*S"6.DU84W`W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`
+kNM0qlg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD5>J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^UO6:4479MkIZr_E)[
+lqRRW;#X8i;#X8c:]O;f:A.N`;#jhs>5DA%=T2A%=Sl/#<`T&srDiMkr)`SmnlPinpfIJtqc>VO
+W2co#Y->4<[C3TU]=bkn_Sa=2a2lEHc-FY_daQ^sf@\d1gYCWAhr*JQj5]4^k2tjjrosIJs6KUL
+rU'CJr9aCJs6K^MrTX@G!9a@Ds5a7Aro4mUiSi_Qhr!;Hh;$f?g=k64f[na+e^W*tdf.XCd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE"qVl$;dUnaZXTq@pJ
+SXc1=R[KP0QBd`"PEM)kOH5H_N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:
+Df0FnD/B2e&8GomBP1siAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/kor)!Dh
+s%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKr"4U]1YPQZ$)-<)?Ce:&Ra*9hnAV9hS/Q92%uM8k_iL
+91h]E84c?D7n?3C8H)6]8I%m_9M.rM850"U!)3>c"A_ce9i(7RlTtG8rBpKNr^HiVr^ZuZ!(m/^
+!D?,c9mKK0:f("e;cHat='/U/>?kH??XR>QA7]CeBkqO&DfB];FEVkRH@1-kJV/W1LP^nINfT<c
+Q'Rf*S"6.DU84W`W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`kNM0q
+lg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD5>J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^V#H@L^5T!c/A]=bei
+qS)pCo"b7@s1eWNrPAZS`Q#staSj6Zb50<Zbl#`bcM>``cMb6L[f<f:\Gj&8])0#<\G`o:\,a)&
+\cB55\coXU]">Maq7H[>!5&6C!5&3B1T.4QXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R-
+g=tH>hVd>NioB([jlY^gkl0fJlKdd7m/HDBmeuPNm/QDOlM]rKki_..k5XNCjSn0Nio/kSi8<GK
+h;-l@gY1B7f`'KOf%&:"e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oT[Bm3F
+Z*:I9Y-"h-X/`.tVl-DgUnjcZTqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`_^HF)l8?E,TZ4DJa3*CMITuBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-
+!*]>(!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8+5U]3FToBG2d
+ccXAOb0%iHaMl*9_SX4,^qd^u]t:kd\$rlV[^`cS[(!KP\$icR[C!<K['[0K['[*AY-5/1YQ;,?
+m^DFIr'L?Lr'^NQs$luXs%!,]r^m2a9`@b8:/=\_;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402
+EccGJG^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>Z
+dF6Uqf@\d1gtgiFi8WeXjlYail0@U$m-X91nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^UjA86(-IuF;crf6i9
+ooT-7plPE9!0[8Ds-*SMPa)04qNUf@s-3MJq3:iCrK6c7rK7)Bo9&4!!g&S.qih#B!0R8D"-AY/
+PPLFCP5^XFP5^Y%Pc(L]Xfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R-g=tH>hVd>NioB([
+jlY^gkl0fJlKdd7m/HDBmeuPNm/QDOlM]rKki_..k5XNCjSn0Nio/kSi8<GKh;-l@gY1B7f`'KO
+f%&:"e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`.t
+Vl-DgUnjcZTqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`
+G^"@TF`_^HF)l8?E,TZ4DJa3*CMITuBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]>(!a&N*r`9&!
+s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8+5V#M.k^Tsr=T:M@9R$a5,QBd`!
+P`_,mrfI/@"-/A!MuAM<M26qBLl$qBreUQ/"bh\cLPL]bLAlf*L]2u.Ll(PUlTtG8rBpKNr^HiV
+r^ZuZ!(m/^!D?,c9n#i5:f(%g;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1
+LP^qJNfT?eQ'Rf+S"6.EU84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>O
+j5f=akNM0qlg4!*n*fc9o()DDo`+Uap&Ojcp]C9fqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^UM6psO992>@[r_WPh
+!)E5^lq[ISr_WSiq,%)eqG-`\rD<Pur`fA*p0%;qqc<f!<W#er<Us2h=9)Ft<o6t7Vl?`!Y->1;
+[C3TU]=bkm_8=.0a2lEHc-FY_daQ^sf@\d1gYL]Bi8ESRj5]4^k2tjjrojLLlg+N9rpB7DrU'OL
+s6K^MrTOCIkNDj,s5a7Aro4RLiSi_Qhr!;Hh;$c>g=k64rmuVMe^W*tda?Ihcd'h\c-4ASb/q`G
+a2Z*;`5BI.^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=R[BJ/
+QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEARFEcH)<Df9N2D/=!'
+C2.HrBP1phAS#C^@q&nU@:9(A!FB(2>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVl;#a>k:Adid9`@]^
+9)_E\8GPdS7f5^H7/0.B6LR4;rsJM/J7D\^<)?@`9DhHe9hS2T:.tR[r^m/ar_!2\#Y7NX84Q3B
+84ieQs%*Gg9M7uO8P)VT8cqa[9htU\!DZG[:?t4D6N':L7/fXT7fGpX8,u6\8c_RYr_7i::Jakc
+;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?Z
+Vl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7)JioB+]k3(smlKdg'mI0N5nac8B
+oCW(Us7QHerV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t8'H%:pFV8U!Y]Y40U
+rP.a8!5\WN"2i*ta8X-^aiMTGrQ=u[qoo#`rm(>ar6>;eqmZI2s0i!<rjhm:qmlX7s1.7&!4hg7
+rOW'@qn)X93P22gWi`G.Z*UgG\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g"P3:h;7)JiSrnYjlY^g
+kNM0plK[^6m/HDOme#uHmf)VOm/QDOlM]rKki_..k5XNCjSn0?io0mp#2e:oh;-l@rn;VMf[na+
+e^`1!e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"h,WiE%s
+Vl-DgUnj`YTqJ$LSt2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[1GLPCP;KS+o/J:N,uI=6Kird#$!
+G^"@TF`__HEcH)<DuOV]D/=!'C2%BqBP1rVAHuaU@q&nU?srt@!FB(2>lS".>5h\)=T;J%<rZ2"
+<;ohr;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6LR4:rt+hfjkn\8bK7iIaN;HB`Pf[n
+_Z.@^^:h7l]=GG\[^WZP\$i]P\,3T5ZiIN5[/[N7['K\8!3uO-!joDFn$_LIr'L?Lr'^QRs$lrW
+s%!,]r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qCi402EccGJG^=^bIXm!%KSG;>
+Mi<[XP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiUkXo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t7iAo2^?Jru&lNr"h/
+OT(C;OSk4@P5UUDPQI,7Pl?sEPkgUEPl?sDPl$aCOnFh7OoCO9OlV]'PP:4AOckq(Pl-_*P,G:Z
+Xfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R-g=tH>hVd>NioB+]k2tjikiq?slKeE8rpB^Q
+o^DbHrpBXMs6K^MrTOCIkNDj,s5a7Aro4%=iVqa>hqm5Gh;$cag3D<'f@SU(e^W*tda?Ihcd'h\
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;dUnXQVTV%gI
+SXc1<R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D8K7ec+J:E#rI=-D@H4>.EGB\4QFEDSEEH,r9
+rb`'[Chmg$Bk_6oB4h-S#@q=S@U`bR@/aL6?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?mm3lO$2`/ZXfA1gS!fZBQiE<PP`q7/P5gXCNt%&+N/EON
+Mhm4ELPL\AqhGK4Knb>;LPU\?LAlf0L4t>9M27&XM!@;(6N':L7/o^U7f>jW8,u6\8q'E,9heAY
+:f("e;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k?
+Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6
+nc/1[o*+dZp%J+RrV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiC_Vo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t7J7S$'D:&Ifd;#O/i
+:A[cK:Adoe;#X8d;#a>f:&n)a;#=,i=T_i3>$CN#r)iht!EN5"<<#th<WH5"=9)G!<o@%=Vl?\u
+Y->1;['mKT]=bkm_8=.0a2lEHbg+P^daQ^sf@\d1gYL]Bi8ESRj5f=ak3(pkl07Kuli$2LmJcPG
+n,;\RmJQ>Nli68KklU)3kPjWDjT+B@irS/urnn"<hVR)EgtVh^GhLa$f@JL&eC;sqdF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aU7n9RT:VXF
+S=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4t;5K7\W(IsufoI!bj=%=*2BGBS+NFE;JBEH#jq
+D@15sCMR[!BkV0mB)Z?HA7K+Y@UWYPra,\4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>j>j:]F2f
+:&dod9D_?\8c;3U8,YpT7J'"C6hE_66)aenc'*$K;c6Fg:JFMT92&%Y9a+3b9M8)Sr(72c84lBC
+8OuAM8H2<^8IS-^92%uN9M%cJ91__Q9a4?g:/4MZ:[q3F62X(J6i9@P7K5jU8,l*[8cD>292&&S
+:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQC+,1
+SY)UMUo(&hWiWA-Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/
+n*olIo)J:bo_%nNp@nO\!r;]hr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiC_Vo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:A$H@C^6TDlJ'^%K)>
+^\>PC^\kkI_>V4X_o0R7a2l?DaN;R&b50<Ybl#`ccM5Z_cMl)a\,3W6[fEr;\biu7\c92;\am?,
+\H9:O\b<W.]D&rsWN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]McHjnce'uq"f\,!5gtgiFi8N\UjQ5Od
+kNM-ol0@U#rp9XOrpK7DrpKdQrTsRMs6BRI!pJh1roO:DjQ-=#!TN);huV`lrnRV1g]#n1g"=p.
+f%'cLIac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"/X/`2!
+W2HPjV50l\TqS-OSt;LBS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`
+G^"@TG'.nKF)l8?$?0p$DJa6,CMR[!rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#
+<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8cD9V8,PjS7J'"C6hNe66)af1qsN\*f[%^_aiMWH`lH':
+`50=,^VIY!^:Ute\@B#W[C*HO[Bm@@[/mYBrNlg9['[6IZEUP1YQD):\*g]i62X(K6i0:O7K5jU
+7fl4Q8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnPdlCMds-EH6/DGBeF\I=?]tK8#&9
+M2R@SOHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5a^;%P&`Q$!@bKS5Vd*^=lf%8R.g>(N@i8EVT
+jQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiLeWo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:@hB52I4J<0\iqN(91
+rfQu;r/h,FPEM)mqiq)FqNUoC"-f(9Pl6mBPkp[@OnFh7OoLU9Om/#1Ockn*PQ$aFOnb+>P67&5
+PEbp-2lWgYXg#(:['mHS]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gYCWAi8ESRj5f=ak3(sll07L!
+li-8MmJcPBn,DbSmJZDOli68KklU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe:,lp
+dF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Yck43XK/A$WMl_mVPU)`
+U7n9RT:VXFS"#k7R$a5+Q'IStP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'8"M
+FE;JBE=-Z'DJj<.Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_o
+s&&_ks%iVhr([2br_*,\r^m)[q+(?Pr'g6Gpd=^@mQmiP#i3(qXJDMZR$di="-o+9Pl6aSOHGQ`
+OH#6YMi*CKLku"b!f2VfrJ(]6KnY8:LPU\@LAlf0KS>,7LPUiUM!@;(6N0@L7/o^U7f>gY84cDP
+8q'E,9heAY:f("e;c?Xr<``C+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90a
+PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkm_Sa@4aN;WLc-F\`e'ut#f\5'7h;7)JioB+]k3(sm
+lKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:@J5X\+6r(m;grD*Dg
+r(Z9JrD3Dhr_N>d!)NSh!)<Gfs%i>bqGI/nr`\nrrE/nts&T%tnl>`lrE0)$r)VcX2lWgYXg#(:
+['mHS]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gYCWAi8ESRj5f=ak3(sll07L!li-8MmJcPBn,DbS
+mJZDOli68KklU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe:,lpdF$=ecHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS"#k7
+R$a5+Q'IStP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'8"MFE;JBE=-Z'DJj<.
+Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVhr([2b
+r_*,\r^m)[q+(?Pr'g6Gpd=^@mQmoR$g=@0@96H*;GTqZ9DqO19hS2S:/";T9M8#Q91hcH7n?3A
+84Z<C84lKG8OuHH9M.oN8kK"T!)!,_"&DZe:&[rY:?k.C6N0@L7/o^U7f>gY84cDP8q'E,9heAY
+:f("e;c?Xr<``C+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[]n@
+Tq\?[Vl?\uY->1;[C3TU]=bkm_Sa@4aN;WLc-F\`e'ut#f\5'7h;7)JioB+]k3(smlKdg(mdKW6
+nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIuG^G((TXMMGrk8*@
+!5JEHqS2sD!5\WNs2+oW`lJ&!rlP/^qTJc[r6>8eps&c_rQP>PpUC.1r3l[9dCB:f\bE]0]D0#n
+W2cr$YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f@em4gtgiFi8N\UjQ5OdkNMp0!p]+;rp9[P
+s6f1@rpKgRrTsRMs6BRI!pJh1roOIIjQ,@]io8qrhuV`lrnW(ZgY1B7g"=p.f%&:"e'c[ldEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xt_b\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPiUnjc[TqS-O
+St2C@S!ob4R$X,(Q'7AoOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[9uSH$FOWG'.qLFE;JB
+EH#i6DJa6,CMR[!rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<<-"s;u]bq;>j>k
+:]=,e:&dod9D_?\8cD9V8,PjS7J0(D6hE_56)sqinEJueeBZ7ZrlG,[(rXD1_SO(']t_Cr]Xt_`
+[^W]P[C*HOZaTk?&@T!S['[-GZEpmEZa-g=Ycn#0!OT?([cp*V6N':K7/o^U7f>i(84cBF8kVfN
+9heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T:FEMePH@1-jJ:`E-L5:_GNK90aPa.T&
+S"-(BTqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!n''efL
+mI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIf@qT_(IYs/GqN'j%
+qiUl@s-*AFrg!>Er07AKQ'IU4Q2$U?PlR-DOoCIAOnt1>OT:L5Om%r/Oco^-rf[5Bq3(H80rV+R
+Xfnt8['mHS]"G_k^r"".`lQ9Fbg+P]dF6Uqf@S^0gYCWAi8ESRj5f=ak3(t-klU/9li-8NmJlV>
+n,DbTmJZDOli68KklU)3kPjTKjlGL_j5T(Wrnmh7hYu>\gtUQ:g"G$0f@JL%eC2jodF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?Ycb+1XK/A$WMl_mV50o^U7n9RT:VUD
+S"#k7R$a5+Q'IPrP*(ieO,f3YN/NRMM2-h?KnP)2Jq8H&IsufoI!^0c(O:7LGBS+OFEDSEEH,r9
+DJj<.Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVh
+r([2br_*,\r^m)[q+(?Pr'g9Hpd=[?mQmrS%I:s<Xf%k`S!TM0Q^3p9PQ6mFOW9ICO,T'XMi*@K
+M2@"DLPCS>L5(J>Lkgb>Knb?]LB<9cK`6T-L4t>9M2CYVks>87rBpHMs$crWrC;3*8P)NH91qrQ
+9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UiC27[(E,fr@Fa&(VI!pKpJqJc3Ll..NO-#NhQ'[l-
+S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV4DlKdg(
+mdKW6nac8Bo^qhLp@n=\q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIL6UaI79288Yr_WPh
+!)EGdn4s!ZpeLc`s%rYiq+q&er_<Gfr_EJhp/(Q^!EWCg=TDRt<rc;!<W#kt=85er=8l;%=8GtY
+=#$YRXKA\1Za@0M\[oGe^VI_(`Q$!@bKS8Xd*^=le^rF+g=tE=hVd>NioB+]k2tjjrojLLlg+Q:
+s6]jSlL4`?s6]dOs6K^MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@gJ)&f4g=b03f@SU(eC;sqda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct:4XfSS'Wi;qpVkp2bUS=HU
+TV%gHS=?":R@'A.QBd`!P*1rhO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH5CjOGB\4QF`__H
+EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm
+;#a>j:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6LI.Aru]%2Alr#2;G^(^91qrP92/)S9hnAT9MJ,Q
+8kVcJ7n3JK!(m,[s%*bo8P2NH9MA&Q8kM`L9M/&Rr_3Pi9hnGX:B"&[:?b(C6N':K7/o^U7f>i(
+84cBF8kVfN9heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T:FEMePH@1-jJ:`E-L5:_G
+NK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^
+k3)!n''efLmI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ7G'e_!Q_VP!^%]85
+^BMEf^VIY$rk\lU_Sa@3`lJ)"rlP/^qTJ`Zr655eps&c_qoo2Q\@D":s1$Fds1/3@rON'@]"7[K
+q7JSbX0&S0ZEq!K\[oGe^VI_(`Q$!@bKS8Wd*^=le^rF+g=tE=hVd>NioB+]k2tjjl07Kuli-8N
+mJlVNn+H2Hn,DbTmJZDOli68Ll2TuIkPjTEjlHF$s5FOIi8EMMhVI#CgtUQ:g"?;UIb*'!eC2jn
+dEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lq]Xtbc\[],W[^EKKZa-g>YHG"0XK/A$WMl_lV50o^
+U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nK
+s)SWiEH,r9DJj<-Chmg$C&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!rDW_o
+s&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@mQmuT&bt_UiRZ>ub/hWE`Q#m8_o'=h^C@oj
+]t1b_\$icR['R3Lrj2[5rNm'?Za-sDZa7$FZ*1@8YHe)2!jf>Em^DCHr'L?LqaCHQs$luXs%!,]
+r^qZ59MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OU
+OckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Uf
+l07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ7@V9J!H\.FWO6D])
+OoLLCOo:IBPQ$gGQ26aCPlm89Q'D64pltW?rg)r6plP*0jHBP,!KiQEOTLW,Ont4APEPa*26*^Z
+YHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f@em4gtgiFi8N\UjQ5OdkNM0plK[^7m/QJQmeZDF
+nG;VQmf2\Qm/QDOlMg&Jkl9iFjoOT)ro=%<%cQ@(hr!;Hh;$f?g=k64rmuVMe^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:_+j]",A]\$i`Q['R*EYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$L
+SXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEIP(%<?H.
+E,TW3D/=$(CMIS_BE;aXrac+@A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mi
+r_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8(4Y5]'d\#ua)Ssu+7Q^F,*Q'@MsrfR_PNf]6ZNf8pT
+M2I1IM#N/AL51M=Lk^\?L4t>9L51M=LkP_Z!/CK,!f;_jmYL-or'L?LqaCHQs$luXs%!,]r^qZ5
+9MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckro
+Q^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L"
+m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ76UXF891r"Y;#O/k
+:/+I^:Amu]:B"&`:B"&h;#O2c:]O;j:&n#f:B+,`;"mid<rc@g=TDRs<rc;#<W,ts<rlE)qc<Vr
+q,ZWZ26*^ZYHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f@em4gtgiFi8N\UjQ5OdkNM0plK[^7
+m/QJQmeZDFnG;VQmf2\Qm/QDOlMg&Jkl9iFjoOT)ro=%<%cQ@(hr!;Hh;$f?g=k64rmuVMe^W*t
+da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:_+j]",A]\$i`Q['R*EYct=6Xf\\*WiE%sVl$;d
+UnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEIP(%<?H.E,TW3D/=$(CMIS_BE;aXrac+@A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8(4Yl=mcT6+F?<;o]C9MS2R9M8)R92&)S
+8k_uS8kMcL7n6*?84Q3@84c?C8P2QG7nQHK8kf4V%80Ae9h\5T9h\8V9hnF]:\%9G62X(J6i0:O
+7K5jV8,l*[8cD>392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCMRd)E,fr@G'A4XI!pKp
+JqJc4M2I7OO-,TiQ'[o.S=ZCIUSOccWiN8*Yd1UC[^iu^]t_A"_o9X:aihoRcdC1jeCN7)g=tH>
+hr*JQj5f@bkNV6rm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?ha9fp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8E-ZheNM!_n]_]>@
+^AbnD^AG\F_#2"P_Sa=2`lJ)"rlP/^qTAo`bP]T^c2Z)bc2GrablH&e\F6op\Dt-r])B/>])'&8
+]JZ^iXfen6ZaI6O]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYCWAhr*JQj5f=ak3(sml0@U#rp0^R
+mdBu@r:'RQr:'ROs6fpSrTsRMs6BUJs6'IGroX7B!9F.>IcB>Fi8EMLhVI#CgY:H9g"=p.f%/C$
+eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$W2HPj
+V50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2*eJrnJ:E#rI=-BfH?jaZ
+GBS+NFE;JCEH,r9DJj<-rbDOLC&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?mm4/W)Y!"Lf[7mbb/jV_`Q#g6_ns:*
+^V7Is^:_"erjMj7#.1_F[^3?GrjDd5!4)U1$+.%HZa-g=Yck>2YQ;&=m'c1Fr'L?Lr'^NQs$luX
+s%!,]r^m2a9`@b8:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!KSG8=
+MN!RVOckrpR$jG6StMdPV5L8lX0&S0ZEq!K\[oGe^VI_(`Q-'AbKS8XdF-Opf%8U/gYL]Ci8N_V
+jQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-it<~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?2+'dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8?Y*qlG^tbJO62Q(
+OoCOCPQ$gGQ26aDQ2d'MQ'@O2Q2-[@Q2['MQ'U`uplP33j-'A)!g8\.rK%#AqN:iBqiWh:X0&P/
+ZEpsI\@T>d^VI_(`Q$!@bKS5Vd*^=le^rF+g=tE=hV[8MioB+]k2tjjl07L!li-5PmI'E>n,2\O
+nbhnQn,MhUmJZDOli68Ll2TrIkPjWDjT+B@j*p"HiS`YOhVR)EgtUT;g=b-1f@JO'eC;sqdF$=e
+cHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSS'Wi2hnVPU)aUS=HU
+T:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K-#VqJ:N,uI=6KiH?sj]GB\4QFEDSE
+EcH)<Df0H0D#S2NC2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm
+;#a>j:Amod9`@]^9)_E]8GPdR7f5^I7/0.A6LR4FruL==ZE0prSX>_1QiI)NQB[VrP*1rhO,o9\
+Nf8pTrJCQ1"G_\dL5,\_'o7TuKnb88L51M:K7nl0L4t>9Ll%#VM!@;(6N':L7/fXT7fGpX8,u6\
+8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt3-(L51VCN/is]
+P*D9"R@B_<TV8-WVl6VrXfnt7ZaR?R]"G_k^r"".a2lBGbg+P^daZguf@em4h;-uHiT&tZk2tml
+l0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?2+'dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S86UO118PMtW:]O;h
+:Amu]:B"&`:B"#h;#F,b;#X5i:&[lf:]=/j;>F&_;?'Jj<rc@g=TDRs=8Q%s=8l;%=8Q"u=8,bo
+<rc@h=#I"YXfen6ZaI6O]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYCWAhr*JQj5f=ak3(sml0@U#
+rp0^RmdBu@r:'RQr:'ROs6fpSrTsRMs6BUJs6'IGroX7B!9F.>IcB>Fi8EMLhVI#CgY:H9g"=p.
+f%/C$eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$
+W2HPjV50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2*eJrnJ:E#rI=-Bf
+H?jaZGBS+NFE;JCEH,r9DJj<-rbDOLC&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"
+!``3!rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?mm4;[-2bB,Alr#1;G^%^9M=fh
+92/,S9MJ2P9MJ5R91qlI7n?0@8P)GM8-MUW84cEIr_*8`%80Ae9h\5T9h\8W:/=U^:\%9G62X(J
+6i9@O7K5jV8,l*[8cD<_92,=ZISN[8:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4X
+I!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiN8*Yd1UD\%0)_]t_A"_o9[;aihoRcdC1je^i@*
+g=tH>hr*JRj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD2=J,~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S8Cj:8YN1[KQ^%B&9
+^C\2q^qde&^r""-`Q#s>aN)C$aoBN[b5oi1qonZVrQb8as3CGMoXFe-!4VL.ijnlrr4)g=qRca>
+4MAD.Xfen5ZaI6O\\#Mh^r"".`lQ6DbK\>ZdF-Opf%8U/gYCWAhr*JQj5f=ak3(sml0@U#m-O-,
+mdC&BrUBFKrUB^Qs6fpSrTsRMs6BUJs6'IGroX7B!9F.>!TN);i!/)qhVI#Cg]#oVg"=p.f%&=#
+eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EHJZE^X<YHG"0XK/A#W2HPj
+V50o^U7n6PSt;LCS"#k7R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+"a5$1FE;L%E<U<"DJj<-rbDOLC&VcMB4b^dA7T3L@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gq*Xd@m6S)Y$1mBAhpfuqaiDF"s!GS#_ns7*
+^V.Cr^:Ukb[^ENM[C!<L[^3?G[C*BJZEgaBZEppFZMgs,Z2Us/ZaR@1[cp*U6N':L7/o^T7fGpX
+8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+L51VD
+N/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[
+k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S8?"7MaFFT/CO8P+8
+O7SJ5OoCODP66u3Pa)04qNUrDs-*SMPa)-3pltW?rg!VNQBqN3l]Lt(q2s["r0./D!0R2@!0Qr;
+3ifBcYd(OB[^`l[]YD8!_o9X:aND]NcHsteeCE.%g"P39h;7&IiSrnYjlY^gkiq?slg*p(mHs?0
+rU9^SoC;eKqsXRQs6]dOs6K^MrosIH!9a@Ds5a7Aro4%=iVqa>hqm5Gh;$cag4.f.f@SU(e^W*t
+da?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;d
+UnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GBX46
+F`__HErL%^E,TW3D/B2e!GZ?JBEi*]AS#C_A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/LBoKqq2[/U?[[B6@#SsoVEs8NQ#eWc;\P*(if
+O,f6[NW+h[Ll$qELkgb?LPLS<LPL\?KS>/8LP:J;KnG&3L4t>9LkprUM!75'6N':L7/o^T7fGpX
+8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+L51VD
+N/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[
+k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S86UO:27S?JR;"m`c
+:Adi`:Amu`:A@W\;#X5i:&[lf:\@QY;?'Gm:]=Dm<rc@g=TDRu=8uA(=&rB#=8Q)"=8Q"u=8>nq
+=8c7i=$!CaY->1;[C3TU]=bno_Sa@4aN2NIc-F\`daZguf@em4gtgiEi8N\UjQ5OdkNM0plKdd&
+m-X3.meuVQnFQ2KnGD\Smf2\Qm/QDOlMg&JkQ'fFk5XNCjSn0?io0mp#2e:oh;-l@rn;kTf[na+
+e^`1!e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`.t
+Vl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`
+G^"?8G'.nKF)q8""`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?iOF4?2e(1>?Y50=oVS(=8c/$
+<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D6hE_46+6e"eX(5Y<)lal9ht[\$.uMH
+F%o>&:.\%V9`7W`8,l-[8c;0l8P2TH8P2TK92%rM91quN9hbL["&DZe:&@`X:?b(B6N':L7/o^T
+7fGpX8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+
+L51VDN/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&I
+iT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JTZ9gNKp3Rqn;sB
+rOr-Cr4i9G!5JHI"N&'p`Q%ks!6G/]s2t2]!mJj2r64cWrm(>as3CYjr3u[8pUBq+rjMs=\$u1C
+jgbB$rjhd7r42j=qR\SsWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&Td*^:ke^i@)g=tE=hV[8MioB+]
+k2tjjl07L!rp9[P!:KgSrp]jUq""@QrUBaRs6fpSrTsRMs6BUJs6'IGroO:DjQ-=#!TN);huV`l
+rnRV1g]#n1g"=p.f%'cLI+-NkdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9H
+ZE^X<YHG"0X/`2!W2HPjV50o]TqS-OSt;LCS"#h5R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8?NOP>?2e(1
+>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hNe56+6e"q<d;$
+f?_X_aN"/X!VkjW_?[fi^:h7o]=7dJ(U^TW['R3JZEpdB['R*EZE^gDZaI-DYPk[.YHY:>\*UQf
+62X(K6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuOLUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^:k
+e^rF+g>(N@hr*JRj5oFdkiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*<s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JRW2*FF&J"qiC`<
+pQ,66s,[#<s,m2A!gAk5rg!>ErK[DI!gT"7rK[/BqN_&G!1!MKs,[/@oT9-8q2tH6qN9s(!0Qu<
+s,m5@s,m,?1TIR[Yd(OA[^`l[]Y;.s_SjF6aND]NcHsteeCE.%f\5*8h;7&IiSrnYjlY^gkiq?s
+li-8Nm/ZSQn,DhSnbD\QnbqtTn,MhUmJZDOli68Ll2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^
+"khP[f@JLOe9o`ndF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43
+XfJJ%WMl_mVPU)aU7n9RT:VXFS=?"9R$a5+Q'IStP*1rhO,f3YN/NRMM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;L%E<U<"DJj<-rbDmVBkV0mB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`T8'
+!*B,"!``3!rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@m6S5]0&jOIWM6&UR@'>,
+s8VuXbdsd:P*(ieO,f6[NJ`XOM26tELkgb?LPLV>L51S=re(c8L51J9KS+o1L4k;9Ll(JSks>56
+r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&
+g"P6;hV[8Mj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JO2^o7nQBLr_W>b
+!)EGdqG.#cpeLT[q,%&cs%WJf!)N8apJLre"A_ij<E9$!r)`\sr`Jhrs&f/"r)io!pfIPu<rH)#
+<`f0!r`AqunlIWIXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8R.gYCWAhr*JQj5f=ak3(sm
+l0@U6m/QGQmeuVRnGMhOo)/%VnGMbTmf2\Qm/QDOlMg&JkQ'fFjoXZ*jSn0?io0mp!T2c5h#Z<c
+rn7P/f[na+ec+'Ge'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9
+Y-"h,WiE%sVl-DgUnj`YTqJ$LSt2C@S!fY2Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e$YjBhBP1siAS#C_A,]p<@:9(A!a]/<r`fM/>$Co.
+s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8%3\c3cBXaXb]<)?Ih
+9MS5RjLq"7D-Kk39M%fL9M7uN9M%bQ8,u6\8-2:P9)_Bh84lKI92%rM92%tU9a+3d9hnDXqbQfY
+ks>56r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>
+Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfZ]Y;.s_SjF6aND]NcHste
+eCE1&g"P6;hV[8Mj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JoGp\LQ.q9]tD"k
+^&>\F^&5SE^%oDA^])"P_8F41`Q%nt!6G,\!6Y2^s31Mdr64cWrm(>as3CShrO2^7rj_^3ppU(/
+qRGh$!4_m9q76R:rjr'=rjr$>1TIOYYd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeC<($f\5'7h;7&I
+iSrnYjlY^gkiq?sli-5PmI'E@n,MnUnac8Lnc&%Un,MhUmJZDOli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"=s/f@JL%eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+L4t;5K7\Z)J:E#rI=-DAH4kLJGB\4QFEDSEEH,r:Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6L@(K
+rsA5Xi7cZ*b/q`ErVmr;n_rQY_7m_!]Y1th\@&fR[Bd3IZaI*DZEU^CZa9Y:"LGJ@Za0S7!3c@*
+!OT?&[cp*U6N':K7/o^U7f>i,84cBF8kVfN9heAY:f("e;c?Xr<``F,>$P<=?XR;O@qB7cBPM="
+DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'"RY[HnF?MK#4qK[p%J+RrV-HiqYL-erqu`no_sFA
+Rf@m~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JmW&&EHZhhr/^f<
+qN(Z:qN(K7s,dAGOcfX+!gAk5rg!AFr0@;H!gT"7rK[/BqN_&G!1!GIrK$r>oT9-8q2tH6s,m>C
+rfQT2!0Qi8"-Jb/Oo:C;OYa#=Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZdtf@\g2gtgiEi8N\U
+jQ5OdkNM0plKeH9!q#FDrU9dUrUKILrUKmVr9s[Rs6]dOs6K^MrojLJkNDj,#Nb%-j5].YiVqa9
+hqn@gIb`]3g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTN
+Za6sBYct=6XfSS'Wi;qpVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D8
+K7ec,J:N,uI=6Kis*><'G^"@TF`__HEcH)<E,TW3D/B2e&8GomBP1siAS#C_@q&nU@:9(A!a]/<
+r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mis%`Jdr_3;ar(?oZr^ciTrC6]RoL/IAoKqq2])N$,
+b-e=KTUhSNQiI'tmEr_TVPK]DOHGTaNJrgRMi.IhreCo:KnkD<L51P<KSG/6re:`5K7no4KnY8<
+MX6/`62X(J6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=]np5>[CcF@:E_XAnYjmCMds-
+EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52SY)UMUo(&hWiWA-Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI-g>(N@i8EVTjQ5OekiqBum-FlBn*fc9rpg9bo_%nNp@nO\!r;]hr;6KkrVcBfJcD2=
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JjVjl7Rp*Ir)!5c
+!)EGdqG.#cqG-`[qbR;j;#X5i:&[lf:\@QY;?'Gm:]4,g<W6%t=8uD!=oMOr=oVV%=8Q)"=7oZ#
+='/R+='/R+rDro!rE'&&rE/_o1TIOYYd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeC<($f\5'7h;7&I
+iSrnYjlY^gkiq?sli-5PmI'E@n,MnUnac8Lnc&%Un,MhUmJZDOli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"=s/f@JL%eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+L4t;5K7\Z)J:E#rI=-DAH4kLJGB\4QFEDSEEH,r:Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6L@(N
+s"qfVCKjb::f0q^9hS1&V2B;%<DQ:[84cNL91hiM8k2EB84c?B7n?-?8P)HE7nQBH91hhU9+"9c
+9MJ5S9hnGX:ARcY:?b(B6N':K7/o^U7f>i,84cBF8kVfN9heAY:f("e;c?Xr<``F,>$P<=?XR;O
+@qB7cBPM="DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mKT]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'"RY[HnF?MK#4qK[p%J+RrV-HiqYL-e
+rqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoj%.\o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A4CNarRN0pBZ]Y2#X
+^A,D;^AYhH^^.co_o0O6`lH.!aT'?^b59?^bl,`_bk00ZcM>`acMl,id/(3M\,*T7\+7!*\,Wr<
+\,Ei'\H'5<\am<3\c',;]/$IiYHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnY
+jlY^gkiq?sli-5PmI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMM
+hVI#CgtUQ:g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKK
+Za-j?Ycb+1XK/A$WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2
+Jq8H&IsufoI!^0cH$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9
+>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(NrsAGa
+jk\M4bK@oJr;S,9iSE,2aN)'0]Y;"f\@/cQ['I-IZaI*CZE^aCZa6sBZ*UgEZa'M6!3cC+!3tgt
+ks>56rBpHMs$crWr^ZuZs%35_s%@i89heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T9
+FEMePH@('iJ:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?`!Y->1;[C3TU]=bkn_Sa@4aN;WLc-F\`
+e'ut#f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A4?"7M`G'eh(rf@&?
+!0?o8qN(K7!KiKCOoCODP5pjHQ2?gEQ2?gEQ2$U?Q2['LQ26gCO8b78Oo:C;OoLLCOnXt:Ol2E!
+OoLO=OYX#?YHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnYjlY^gkiq?sli-5P
+mI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMMhVI#CgtUQ:g"?;U
+J(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Ycb+1XK/A$
+WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0c
+H$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT'
+<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(Os"`<=XJhh`S!]S0QiI*[
+fYk4pTq.O8OcPQ`NJrgRMM[1FLkphAL5(D;L51M=LP:D8LAci+K`?Z.L4tA:Ll1PTks>56rBpHM
+s$crWr^ZuZs%35_s%@i89heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T9FEMePH@('i
+J:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?`!Y->1;[C3TU]=bkn_Sa@4aN;WLc-F\`e'ut#f\5'7
+h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A46U=.47nZHMr_WVj
+s%ibm:/:[\qG%#dqG-ZYqG75h:/:d_r_E)^pJLres%iSiqGmMqr)Wr%=]tQ&oi_;sr)`5e!*T8&
+!EW>#=8l>#=oMOs=#-kZYHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnYjlY^g
+kiq?sli-5PmI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMMhVI#C
+gtUQ:g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?
+Ycb+1XK/A$WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&
+IsufoI!^0cH$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9>QS,5
+>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(QrtORjF^S9M
+:f'n\9hS.1YEjEC=A_ck80^Pt8kDWJ91VQE84Q9C84Q3A7nH9C8k2KH9M.iK91hlO9hbO\"AVZd
+9i1[^oM4X:r'L?LqaCHQs$luXs%*/]s%<;aInWR2:/=\_;,U=k<E<.%=]np5>[CcF@:EbYAnYmn
+CMds.EH6/DGBeF\I=Hd!K8#&9M2[FTOHPinQ^F53StD^NUo(&hX0&P/Z*UjH\@K5a^;.V'`Q$!@
+bKS5Vd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nO\!r;]hr;6KkrVcBf
+JcD2=J,~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J9?$`M2e.;]=dgM
+pqH^As1elU_o'F3`l?'uaT'?^b4a$Vbk00ZcM5ZacMc)hciCQP[emQ2\,s.J[e7'.[f<i:[f3c7
+\F-p-])9,4\cB;<])0)uX0&S0ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF$Fme^rI,g>(N@hr*JQj5f=a
+k3(sml0@U$m-X3.rU9dUs7,gR!;#mSrpg!WrU9dSs6]dOs6B[MrosIH!9a@Ds5a7Aro4CGiSi_Q
+hqm5Gh;$cag4.f.f@SU)e^W*tda?Ihcd'h\bfn8Rb/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q
+['R*EYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[.EL5(D8
+K7ec,J:N,uI=6KiH?sj]GBa(1#^(62F)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?O'nC
+?!LW=>?^u.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2^&JB+
+j5J\<bfRuJr;RH*ii8.@bK%H3[(Eu]\@8oS['[.;ZjX4EZEU^BZa-mAZ*XG:!3uC)!4(q!kX#,5
+rBpKNr^HiVr^ZuZ!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEVkR
+H@1-jJ:`E-L5CeHNK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TU]=ktp_Sa@4aN;WLcHjkbe'ut#
+f\5*8h;7)KioB+]k3(smlKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRK%d~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J7<))F*N4orf6u=
+pl>33qiLi=!0I2Brf[;F!0mJJqNUuEqiq)FpQYN>rg*SLq3D#BqiCW9plYN:p5oB;Onk+,OoCO?
+Ont74OZ0>CYHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'uq"f\,!6h;7&IiSrnYjlY^gkiq?slg4!*
+mI'rAs7$'Yp@84Tp%&+Prp]mTs6fpSrTsRM!:'RJs6'IGroX7B!9F.>$f^.(i8EMLhVI#Cg]#oV
+g"=p.f%/C$eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SX.)^V7Co]Xtbc\[],W[^EKKZa-g>YHG"0
+XK/A$WMl_lV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&Isufo
+I!^0cH$FOWs)nZjFEDSEEH,r9rb`HfChmg$Bk_6oB4baeARo:\@U`bS@/aL<?<piA>[(E9rE02(
+=',B%s&K(urDNbq;,R6fs%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=[?m6SMe$L>L2WMH5YR[BJ.
+rr3\iah+I%FT7YjNf/[ON/EONM2I+FreD)AKnb;:L51J;L4t;7Knb;9K`6T,KS>,7M<fu]62X(J
+6i9@O7K5jV8,l*[8cD>392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCMRd)E,fr@G'A4X
+I!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[]t_A"_o9X:aihoRcd:(geCN7(
+g=tE=hVdAPj5f=akNM0qlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J3uXk7n??KqbR>i
+:/:[\oM4sQqG75h:/:d_r_E)^pJCoer_NDf!*8tsqc<Vrs&f2#r`Jhrs&]8&l<+'hqcNi!r`K,%
+!a&T.pK';SXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Uqf@\d1gtgiEi8N\UjQ5OdkNM0plKdg'
+mHs??n,MnWnb2MRoC_\Rnc&%Vn,MhUmJZDOlN$5Ll2TrIkPjWDjT+B@isXl*iS`YOhVR)EgtVh^
+J(`K+f@JO'eC;sqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NTNZa6sAYck43
+XfSS'Wi;qpVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhO,o<\N/W[PM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGQ2glF`__HEcH)<DuOVhD/=!'C2%BqBP1phAS#C^@q&nU@:9(A#@:\A>[1K;>5_S*
+=BAT'<rZ2"<;f_s;Gg<h;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(Srt`8%B38&2;,9n[
+92"6VSpkEZ;+O*a8cD*`5tFR=8k)?D7fGp]8Ol9B8,Z!c7nH?I8kMcM91o1Xs%W_l:JFSZ;#3u\
+:?Y"A6N':L7/fXT7fGpX8,u6\8q0K-9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@Us%^BPD6tD/O<4
+F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Pi^r"".`lQ9Fbg+P]
+dF6Urf@\g3gtgiFiSrnYjlYail0@U$mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu6NlrUp/@s-`n;~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj(Zn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J8TOUK8lP/^](nH
+^A#><^AGYN^qmn*`5K[8a8X0[aT0KVbPfZWc2Q#`c2Z)fci;AldJgWP[emQ2\,s.J[e7'([f<i9
+\GEc8\G3W6])T>/\cBAA]JmI)Y->4<[C3TU]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!5h;-uHiSrnX
+jlY^gkiq?slg4!*mI'uBs7$$XqXX@Oq==OTrp]mTs6fpSrTjUOlK\B5s6'IGroX7B!9F.>!TN);
+huV`lrnRV1g]#oVg"=p.f%&=#eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W
+[^EKKZE^X<YHG"0XK/A$W2HPjV50o^U7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NOLLkg_>
+KnP)2Jq8H&IsufoI!^0cH$FOWs)nZjFEDSEEH,r9rb`HfChmg$Bk_6oB4baeARo:\@U`bS@/aL=
+?<piA>[(E9>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(S
+rsA8Zj4i#,aiVQArVlutkGadGrtrDW['?jG\$rZNZEpgCZa-pEZ*CO?ZEpk9Ym%G@['R$@qlg(-
+laH"Cr'LBMqaCHQs$lrWs%!,]r^qZ59MJ5V:/=\_;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0
+EH?5FGBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8X
+dF-Lnf%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj+[n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J6l\uD01;_OH0=$
+pQ#-3rK-u=!0I2Brf[;F!0mJJqNUuEqiq)FpQYN>rg*SLq3M&IrfI#<qiLT8rK-Z6q2k$,rf[,?
+qNCf>rK-u?2Qa-dZEpsI\@K8c^VI_(`Q$!@bKS8Wd*^=le^rI,g=tH>hr*JQj5]7`k3(sml0@U$
+m-X3.rpTmVrpfjUp@J+Nrpg!WrU9dSs6]dO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/
+g4.f.f@SU(e^W*tda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6
+Xf\\*WiE"qVl$;dUnaZXTq@pJSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,u
+I=6KiH?sj]GBa(1#^(62F)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?O0tD?!LW=>?Y50
+=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_46,ER*e?uBTTq.\P
+QQDFls6%eDWe,H\s8W(WLkg\9MMm@JM26tBLPU_>L&Qf3LP:J;KnP/4re:<'#)%\aL5CbBm>0sl
+r'LBMqaCHQs$lrWs%!,]r^qZ59MJ5V:/=\_;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0EH?5F
+GBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Ln
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj(Zn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J3lUm77U$G:&Rog
+:B4/d:%_9P:\mlh:JO[a:&[o[;"mfe;#X8f;#aDl<r5no<qTPn=S5hp=T2Il=T2J#=9;Q+=Sc2#
+=SZ#VXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Uqf@\d1gYL]Ci8N\Uj5oFckNM0plKdg'mHs?@
+n,MnVnbVhMoD.tVnc&%Vn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnmh7hYu=3gtVh^J(`K+
+f@JL&eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSS'
+Wi2hnVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGQ2glF`__HEcH)<DuOVhD/=!'C2%BqBP1phAS#C^@q&nU@:9(A#[UeB>[1K;>$Co.!a&N*
+r`9&!s&Aqqs&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2_uCV.RrM_5;c$7a91qlL
+aeji4?W'E_RIK^A6iK@m5Y=R:84c6?7S$*@7nH3A8P)HD8P2WJ85)ZM92/+Y9a"6e9i"U^:\@KH
+62X(K6i0:O7K5jU8,l*[8cD>392&&S:/4S]:f:4j<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m+E,fr@
+G'A4XI!pKpJqSl6M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC[^iu^]t_A"_o9X:aihoRcdC1i
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh@e]Tip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUhofIu9Da_nEdu
+pV$I<!l)I`rkAuZ_8=(,`5KX7a2c9Bai_d"bPfZWc2Q#`c2Z)fci;AkdJLEM[emQ2\,a#:[f!Q*
+[f<i9\G`u8\G3W"\iIC8]WJ?@Z*UjH\@K5a^;%P&`Q$!@b0/&Td*^=le^rF+g=tH>hr*GPj5]7`
+k3(sml0@U$m-X6/rpTmVs7-$XqXa[XqXaRSs7-*XrU9dSs6]dO!pf.:rosIH!9a@D!p/M(ro4%=
+iVqa9hqn@g$JaCig=b03f@SU(rmZ2Ada?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrdQM2@%D
+L5(D8K7ec,J:N,uI=6KiH?sj]GB\4QrcAWkEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGq;?srt@
+!FB(2>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(V
+rsAPfjP\S6c-")Hr;QlegnFTDrt=kD\[/H?Wi!/0Za@$C['R'EZi730Zi76:Yd(I=['[0EYHRr0
+"0o);\*^We62X(K6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[k
+CM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE\%0)_]t_A"`5Td<
+b0/#ScdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh?ha9fp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUh9BCNFfPOn=\2
+NrY:<O8b7@OoCLFPE_=2Q2?gFQ2?gFQ1pO?Q2R$KQ2-aFQhumAO8G%6Oo1=?Oo:C>Onk+,OoLUC
+OoCFBOo(=>OoLOBOZ'>EYd(OB[^`l[]Y;.t_o9X:ai_fOcHstfeCE1&g"P3:h;@/KioB(\k2tjj
+l07L!m-O--mf)\TnGi%Vo(qtVo_S1Uo)J7ZnGVhUmf2\QliQM<lMg&JkQ'fFjoXZ*jSn0?io0mp
+!T2c5h$Vrlg=k65f[na+ec+'Ce'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[Bm3FZ*:I9Y-"h-X/`.tVl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!UMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`G^"@TFoHImF)l8?E,TW3D/F*)CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=
+r`oJ-!*]>(!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2`;^M0
+]WS-,Ssu18R$I^Op=I0aU4(/_rs-?'M1pS6Isq<Q$]'RmL51P<KS>/7L])r,KE-Z(K`H`(KE$Z*
+L&m*en;%"!k<]#4r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>FEVkRH@10lJV/W1LP^nINfT<cQ'Rf*S"6.DTqnN_W2cr$YHY=>[^WfY]Y2(q_SjF6
+aND]McHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`n
+p&9OBRK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh?ha9fp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUg'S7n60G:]=2j
+:B4/d:%_9O:]!ri:JO[a:&[o[;"mfe;#X8f;#X>h<r5no<qTPn=S5es=SZ+h=T;P"=Sl8"=Sl/X
+Xfen5ZaI6O\\#Mg^V[n-`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8EVTj5oFckNM0plKdg'mI'EAn,MnW
+nbhtSoDS=XoD8%Xnc&%Vn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnmh7hYu=<gtUQ:g"G$0
+f@JLOe9KHjdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'
+WMl_mVPU)aUS=HTT:VXFS=?":R@'>,Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(ur_rhps&&\js%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=[?m6Sbl,keNn@ou]/:eseY91m^=
+PBUP<:IfiiotP0.4[D=u5s@e07Rd;H"A)*R8OrbOs%!Vk8kVcI91qrO9hS2T9MPL]s%rPfp.jd:
+r'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccDH
+GBnL^IXm!%KSG8=MN!RVOckuqR$jG7StMdQV5L8lXKA\1ZF%'L\[oGe^VI_)`Q-'BbKS8XdF-Op
+f%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh@JBKhp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUh]aHA@HQ]"YoQ
+^%f>>^C@up_Sa=2`Q#s>aN;TIoum?YoZdB\ps&iarQkMjr6bPSqmZO4q7$72rjVp9!4D=)s0r!;
+!4i$;s0r$<ppp:5!4h^434lc6Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4gtgiFi8WeW
+jQ>Ufkiq?slg4!*mdC)C!q>aMqss^Wp%84SqXX[Vrp]mTs6fpSrp9[Ns6BUJ!pJh1roS[kjQ,@]
+io8qTi8<GKh;-lAgY1B7f\"g-f%&:"e'c[ldEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc
+\[],W[C!9HZE^X<YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieNfB!VMi*@J
+Lkl"b'nq<nK7\Z)J:E#rI=-BfH?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s'#J,rE02(=',B%s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=[?
+mQnhl$1[-8g!S'ea2Q*trr`#QW8%=O)Z@spY,%VRVk]oWZa@!D[Bd*EZ*CO;ZEpjBrilR2Za@(<
+YPta,Z*<Q&k<]&5rBpHMs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS,Rg
+C27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.DU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6
+aND]NcHjndeCE1&g"P3:hV[8Mj5]7`k32'olg3sEmI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFARK%d~>
+JcC<$RK)pYrr)ior;6Njs7uZh?ha9fp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUh-=BQ80EN:i5+
+NrY:=NrkE*OoCLFPE_=2Q2QsFQ2?gFQ1pO?Q2R$KQ2-aFQN<D=q2kQ9e<'*\qiLi?rf[#<26F*f
+Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYCWAi8EVTj5f@bkNM0plKdg'mI'EAmfN"Knb_nU
+oC_bSoD8%Xnc&%Vn,MhUmJcJPli68LklU)3kPjUmjlGL_j5T(Wi8EMMhVI#CgtUQ:g"=s/f@JL%
+eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfJJ%WMl_m
+VPU)aUS4BST:VXFS=?":R$a5+Q'IStP*1rhO,f3YN/NRMM26reL)#DqK7ec,J:N,uI=6KiH?sj]
+GB\4QrcAWkEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"
+<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6LI.[rtG.KZ`BprSXPk2QBhLMgr?e!
+J?StP$ceWlIs?'QI<p0_M#E,/LAur,L&Qf5Knb;6KS+r3KnB;Vs+UK-!JlU%L]3+m62a.K6i0:O
+7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\I=?]t
+K7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^rF+g=tH?
+hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhAbYolp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUg-V6UjO;:/Fb_
+:JO[^:&due:\mi_:]F2e:]!ri:JO[a:&[o[;"mfe;#X8f;#F/j<Vfbp<V]\g=6`rL=T2J%=Sl/W
+Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4gtgiFi8WeWjQ>Ufkiq?slg4!*mdC)C!q>aM
+qss^Wp%84SqXX[Vrp]mTs6fpSrp9[Ns6BUJ!pJh1roS[kjQ,@]io8qTi8<GKh;-lAgY1B7f\"g-
+f%&:"e'c[ldEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0X/`2!
+W2HPjV50o^TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieNfB!VMi*@JLkl"b'nq<nK7\Z)J:E#rI=-Bf
+H?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=[?mQnqo7Egg.>#eHq:/+AS9M)je
+I:l_Y7q]U*fPj;C4#f2X5!;"k77B^<7n?-@84Q3B8kDWK91qlJ8kMcM9hS2T9MJ5V9i+[_:\IQH
+62a.K6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D@:E_XAnPdlCM[m,EH6/D
+GBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1j
+e^rF+g=tH?hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq.WYG^kR9Ur:"B
+^%]8>^]2(W_8F1/`Q#s>aN;TIoum?YoZdB\pW```rQk;epUKn*ppg@5rjMd7p9t"1qmZX7rO2g;
+\+dH2])T>7])TB"Xfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?s
+lg4!*mdC)C!q>aMr:9jYnFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GK
+h;-l@gY1B7f`'KPf%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9H
+ZE^X<YHG"/X/`2!W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8
+s'#J,r`T8's&]2#s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Shn$23WD
+h:'Zmai;@!rr`,VW0I8\%bSh+Un3m8PG"M>SY33nriud8Z*LX=ZEgh9Z2_-0ZidY;Ycmu/!OfE(
+[c]sS6N':K7/o^U7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>Z
+dF-Opf@S^0gtgiEi8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq.-:B5D[:JWZ#g
+Nq&/9OHGWeP*2#nPl?sIPl-gGPQ6pHPl?sBPl$aEQN!0HQMm0MQN*;kORJ>.OT1FCP5(.sXfnt8
+['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?slg4!*mdC)C!q>aMr:9jY
+nFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GKh;-l@gY1B7f`'KPf%&:"
+e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+G'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(u
+r_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Sko-el25VP9WNQ^=#(s8V3)];L4'
+p](9LToXeMFDl#6G^"=RG_Us,L])o.L4t?\L'*-^K7s5X!.t3&rIt?/M=?<#M!%)%6N':K7/o^U
+7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%
+KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gtgiE
+i8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq-0T6q9^>8l&8Z
+q+gc^r_E8brD*5cqbR;h:Amod:@qBW;$9]k:/=[a;#4#h;uTbs<r5tk<q]Sp=RB8M=T2J'=Su5X
+Xfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?slg4!*mdC)C!q>aM
+r:9jYnFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GKh;-l@gY1B7f`'KP
+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"/X/`2!
+W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c
+H$FOWG'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#
+s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Sqq,3c%L?s$E*:JXYW8kI(#
+L2C3o7mrp?nqBb%4?#5X1c@HYr]U3M#tRWY84c?D84uSS9*Rs\8k_lP9DqTb:'+-d;#3u^:?Oq@
+6N':K7/o^U7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJ
+G^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Op
+f@S^0gtgiEi8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>mFa]+,Tt0s3
+pV-U@rkJuZ_o0L5a2c9Cb0%oNb4s0Zbl>ofbkKB]cMGcgbg"DXcMc)ad/^`M\Fm?+\GE]7\Gs&5
+[f<i7\GNc8\G*Q)])K<&YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7&IiT&tZjlYai
+l07L!m-O--mdKW6nF?&Io)A7Zo_%nTo`"IZo)J7ZnGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4RL
+iSi_Qhqm5Gh;$c>g=k64rmqJ-e^W*tda?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1k]",A]
+\$i`Q['R*EZ*:I8Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2@?R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1G
+LPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM
+?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKqq2
+b5Vb7jkeV9bK7iErVm$"j4U+)rr3V3nGfM[QBIJtPuO?JTVA9gZEaA4#I1S>Za$g?ZMq01ZMq'*
+YQ;2?m^D:Er'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmn
+CMds.EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<
+b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)Kg
+JcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>[A86+.J;j8`
+muI[7OcbfjPEc'3s-3GHrKI;GrfmGJp6>H>rKdGJqj.2Is-EYNoT8a,plP$,rfI#<rf@,BrfH`6
+qN(`?OSP#"YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7&IiT&tZjlYail07L!m-O--
+mdKW6nF?&Io)A7Zo_%nTo`"IZo)J7ZnGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4RLiSi_Qhqm5G
+h;$c>g=k64rmqJ-e^W*tda?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*E
+Z*:I8Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2@?R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKqq2bl9Kd^os`5
+T:D=9QBqRNo[ppYTmY&`s7qDce9c=VCi4017s0$"H$b:"KS+r3KnP/5L4t?ZKE-`)KDgN*Ll1\W
+s+oi(r'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0FdoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>=6UaI79(u*N
+:]!oa:]!rh:JUj_s%WPioMG9Z"Ahlh:J^pcqGI8k!*9"t!*8tuoiCcf!*J_npfRMsl<+$gs&f8%
+3j5cnZaI6P]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ5Oekiq?slg4!*mdBQ4nF5u<
+rUTsZrUfdUr:L![qssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<DJh;-l@gY1B7
+f`'J/f%&:"e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<Y-"h-
+X/`2!W2HPjUnjc[TqS-OSt;LBS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&Isufo
+I!^0cH$FOWG'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(
+=8l8#<W?%t;u]bq;>a8j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_46-]Em_2)`,;c-:b9M8&O
+d]ejW@8ooiIGOCe9m21I2`3HN3'&`V4[D:s84c?C7nH6B8P)TG9M.lJ91hiO9M>=Y"A_ce:f.!a
+pJ0m;r'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>fFE`CrRB"1$
+^%]8=^]2(T_8=+.`Q-$?ao'<VbPo`cblGu^c2Q#bbll88c-FW5ch>cb\b<Q+\+mK4\,*W6\,*Q5
+\,<`@\$icT[^N]UpUU:7!4i$=!4i$=3NfTlZaI6O\\#Pi^r"".`lQ9Fbg+M\dF6Uqf@\d1gtgiE
+i8N\UjQ5Oekiq?slg4!*mdBQ4nF5uHo)A7Zo^VVQo_nCZo)J7ZnGVhUmJuYQliQM<lMg&JkQ'fF
+k5XNCjSn0?io0mp!T2c5h#Z<crn8"<f[na+e^`1!e'cXkd*L"_c-611E6?;DaN)<>`Pf[2_SO%&
+^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@GpOcYWb
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?B
+A7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT
+7IrqB6hNe56-]E9o&o#ddEK_P`Q%lV"7G!AhZ!Nmo#C^7Oc"pXQ'P<MT:hpTU8"NhZ*:I9Z*O>5
+!jK#;rj)O,r3-41[I:Qd62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSd2>[:ZC
+?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[
+]YD8!_o9X:aihoRcHstfeCN7(g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DDo`+Uap&Ojcp]C9f
+qY^6ir;HTdrdk*;s*t~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>W@qKS"I"d^Z
+Nq8>3NrP.EOHGZgPEV7+Q2HjHPQ$gHQ1gI>Q2R$JQ2?mGQi<<LQN3*<OS+\0OR\D2OSb+7OS"\1
+OSk5$Y->4<[C3TU]=ktp_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiSrnYjlYail07L!m-O--mdKW6
+nF?JJrq$*\nb)kQrU]sXs7-*XrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/
+g(N)kf@SU(e^W*tda?Ihcd'h\bl5e)b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*EZ*:F7
+Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)
+s&f;&r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8%3cMn*u[B$0tS!s>B
+#aPGii5W!rJ?]%Q)o%g@JSSe,D/X>^96PQ*I!L$bJqSl4K7nu5L&Q`/K7no4K7s5VrIt?/MXZB$
+Luq#$6N':L7/o^T7fGpX8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+=^,-:?=.)L@q9.`BPD6uD/O<4
+F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg+M\
+dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-a?2nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUg)?s-`n;~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>;6:F@69M,%T
+nPB$WqbR)c!DcJh:&drg:\7KX;$9]k:/=[a;#4#l;H$Ll<W6%t<<-(s=7oVf<rc@l=TDS&<rcA!
+=6iuf=oVSaY->4<[C3TU]=ktp_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiSrnYjlYail07L!m-O--
+mdKW6nF?JJrq$*\nb)kQrU]sXs7-*XrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g
+!SlH/g(N)kf@SU(e^W*tda?Ihcd'h\bl5e)b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*E
+Z*:F7Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8%3d/Q#ZRr_k8
+;,9q]9hJ#K]UaOb=&)7s^[ApL:rP@H0/>CC3\`HS5sIV$6UOF:84c?D84lNH91f+T"A)6\92#4X
+s%WVi:f.!apeKs;r'L?Lr'^QRr^QlWs%!,]r^m2a9`@b9:/=\_;,^Cm<E<1'=]ns6?!^lG@Uiq[
+B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@K5a^VI_(
+`Q$!@bKS8Wd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2JFs7QEc!;HHe!r;]hr;6Kk
+rVcBfJcD/<J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:DugG(#.-UVcl@
+otLI@s1eiT_SX40a2e2#!6P2^q9/`\!mSs5ps&f`qTT/ec-=PZrQk,`rjr*>q7-")m^W;+"1YhK
+[emQ3\GWf:\[_LHq76R:rON!=rjk(nZ*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rF+g=tH>hr*JQ
+j5f=akNM0plKdg'mI'E2n*oi:rUU![rUfLMrUg*\r:9mXrp]mT!q,ICrTjUOlK\B5s6'IGroOII
+jQ,@]io8qrhuV`lrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co
+]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$WMcYkV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3Y
+N/NRMM26qAL4k23Jq8H&IsufoI!^3dH?jaZGBS+NFE;JBEW9t\Df0H0D#S2XC2%?pB4kgfARo=]
+raGn:@/aO5?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I
+7/0.A6L@(crsAPdj58D5b/hTCrVluqh4p86ru[U-\!2Z&=-\u0=I5\TUnXT\Uf:9rYHb=:ZEUU<
+Z*OA8!jJl2r3-1,mC).Cr'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI
+@Uit\B4u!pCi402EH?5FGBnL^I=Hd"KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d
+^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:DuUASQ71J<B\g
+plG<4s,[2A"d+t3PE_=,Q2d*JPPp^GQ1gI>Q2R$JQ2?mGQi36JQh-=9O8b1:O8+h,O8b7>O8+e;
+Oc]F%rK7/CplPK;33]Zo['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f@em4h;-uHiSrnYjlYail07L!
+m-O--mdKW6nF?JJs7?3]mIgGMrq$'Ys7-*XrU0gUmHsl=!pf.:rosIH!9a@D#Nb%-j5].YiVqa9
+hqn@g$JaCig=b03f@SU(rmZGHda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q
+['R'CYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP:
+K7ec,J:N,uI=6KiH[:!`G^"@TF`__HEcH+!E!1)sDJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8?iOF4
+?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.,]f
+j1VUmURn!BQC!p;s6@h>V1<aZs8USms+Y?#AOpZVCJ/\lG'eL\H[JIZKnG)6KSG3[KEHgYKS9;V
+!/1?+s+p-!!/Tc'r'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\
+B4u!pCi402EH?5FGBnL^I=Hd"KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:Du76UjU;9MkR\
+nk]6[s%NJgqG6ub!)EJes%`SiohbB["Ahlh:J^pcqG@Do;c?Rl;>XDm<<-)!=7TDc<rc@t=oVV$
+=TDRt=85nr=oDG&=8c5$=8l>^Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCE1&g"P3:h;@/LioB+]
+k3(sml0@U$m-X6/n*fc8nbr%YoDS=Kp&4O^oDJ1Znc&%VmfMqEmJZAQlg!d7l2TrIkPjTKjlGL_
+j5T(Wrnmh7hYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf
+\[f5Z[^NTNZa-j?Yck43XfSS'Wi;noVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhO,o<\N/W[P
+M2@%DL5(A6K7\Z)J:E#rI=-BgH?sj]GB\4QFEDSEEH2"t"E/0qD/B2e$YjBhBP1siAS#C_A,]p<
+@:9(As'>\2r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IA
+oKqq2e,L]h[XVgh<DcOe9hS,N`hnN.>Z!sYR-`[W6,l#@0/5%;3'/r_r]pKM&jo)I3(QY57nHBG
+91_]G91_`Kr_3Yn9heDX9hnM]qG6l]k!Ao3r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat
+='/U/>?kH@?X[DRAS#LfBkqO&DfKc<FEVkRH@1-jJ:iN0LP^nINK93bPa.W(S"-(CTqeE]W2co#
+YHY==[C3TV]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nc/.boCV\J
+p%J+RrqQNhs8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2gGC#"&TXt$6
+r4`-CrkAEIrkSQM#K+L"a2l<Bao0BWbPo]ec-4E,c2Q#bblGuec2Z)gch,TbdeLBJ\F[2q\Giu2
+\Giu;\GNi8])K5?\G3TiYHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+]k2tml
+l0@U$m-X6?mfN"Knbr%YoDeIHp&=U_oDJ1Znc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"G$0f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z
+[^NTMZa-j?Yck43XfSS'WMl_mVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%C
+L4t;5K7\Z)J:E#rI=-D@H4kLJGB\4QFEDSEEH,r:Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5
+?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L@(e
+rsA/Shq?B$aMu6<rr3-#i7O[srr4@=s4ElkLg#t,P#kSRUSOTWV5.$g=]qo3Yd(I=YctI>Za@!?
+YHY5/YQ;2?n$_@Er'L?LqaCHQs$lrWHq6h#8kM`L9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit]
+B4u$qCi402EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG7StMdQV5L8lXKA\1ZEq!K\[oGe^VI_(
+`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl0/iGlg4$,n*fc9o()DEo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2V@VB_%IZ+)`
+plG93rf75EOckomPk^LDPl-aEPQ7!BPkp[EQMm*HQMm0KQM[$;OSk18NW>.7OReJ&OSb1:P4t%n
+YHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+]k2tmll0@U$m-X6?mfN"Knbr%Y
+oDeIHp&=U_oDJ1Znc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu>[gtUQ:g"G$0
+f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'
+WMl_mVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-D@
+H4kLJGB\4QFEDSEEH,r:Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5?3":1>QS,5>5h\)=9)G$
+<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L@(gs#Ku!Z)XXoS=,_1QBV@A
+f"\/VI)Z-cl%&)uF'`EMD/O2a8U#E*H$Xgb91r,YKSG/6Knb86K7el4r.G$(",2JcMXQ>_62X(J
+6i0:O7K5jU7smj!8P2TJ92&&S:/=\_;,U=k<*!%$=BSg3>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\
+I=?]tK7nu7M2R=QO-,TjQC+)0SXuLJUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2:6pjI79MPCZ
+nP9-[r_<Dfs%`Vir_NDf!)NMer_N2`pJD)j:JOY\:]=2e;$Kos;c6Lj;>=2j<W?,!=7]Jd=8uD$
+=o2=u=TDRt=8Q+r=TDOu=>I(bZa@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Od
+kiq?slg4!*mf)YVnF?&Io)J=]o]YuIo`"I[o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[
+io0mp!T2c5h1"/6g=k65f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[Bm3FZ*:I9Y-"h-X/`.tVl-DgUnjc[TqS*MSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi*@J
+Lk^Y<KS+o/JUi9#IXQWlHiA=(H$FOWG'.nKF)l8?E,]`5DJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8
+?iOF4?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_4
+6.Putd$&6L<DlRc9h\/P8?n;#@T6&kGKfB;8!mI6.PED63]f,O5!M:u5sn("3'BGt7n?9E9M7uL
+8kDZK9_qHa:/1^aqG6o^k!Ao3rBpHMs$crWrC;6+8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>?kH@
+?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"6.DTqnN_W2cr$YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!n''efLmI'H3nF?)?oCV\Jp%J+RrqQNh
+s8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj.\nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2tF*E+iPc)Il
+^&>YF^])"T_8*q+`l?'>aN=D'priZ\!6tMeq9AoaqTT#arltJgrm(Skp!EojdF#J6qmc^:r42^7
+q7#e%rjhg6rjha4!OfN0\H'/:\M:=oZaR?R]"G_k^r"%/a2lEHbg+P^daZdtf@\g3gtgiFi8WeW
+jlY^gl07L!m-O--rpKpXnaZVLs7?6^q=XOVp\"OXrq$'Ys7--YrU9dSs6]gPs6K^MrojLJkNDj,
+!TiDAit15/iS`YOhqm2Fgt^Z<g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1QBd`"PEM)kOH5H_
+NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<Df>Yn!GuZPCC=lkBP;$kAn>Oa
+A7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS
+7J'"C6hNe46.PuApZUYld`oqS`Q%lV"6nO8hZ!O"m_Af%I>1X_Pa,EOStDgPTr"P`<*<;*Xfeh2
+Z*:I=ZF$pCrN?@/Yd(F>mC).Cr'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=k<E<.%=]np5
+>[CcF@:E_XAnYjmCMds-EH6/DGBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Yd:^F
+\%0)_]t_D#`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*^GLnac8Bo`"Lbp@n=\
+q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj.\nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2t@V'@sH\7IZ
+Nqe\3NrG(@OHG_*Pk^O@PQ$dHQ1gI=Q2[*JQ2HsGQi36HQiE-8OSk18NW>.7O8t@>OT(=?OT(=4
+O9(E(rfQu=!g/S*qiEP:ZEq!K\[oGe^VI_)`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTj5oFckNV6r
+lg4!*mf)YVnF?&Jo)J=\o_J1Tp@n7Zo`"I[o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..joOT)ro4RL
+iSi_Qhr!;Hh;$f?g=k64rmq>)e^W*tdf.XCd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oS['R*EZ*:I9Y-"h-X/`.tVl-DgUnjc[TqJ$LSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@I
+LPCP;KS+o/JUi9#IXQWlH[:!`G^+FVG'.nKF)l8?E,T[pD?4TjrbDmVBkV0mB4b^dA7T3L@KBnF
+ra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'g6Gpd=^@
+lp95&'&C.!VP0QLR$X/(s8V-"XeL?Irr3bCQMg,T@mk-NDbNcHGBnI[H[JIZ:eq"C!eH&Zre(E+
+KnP)3re(6*",2JdM!g&\62X(J6i9@O7K5jV8,l*[8cD>292&#R9hnJ\:f1+h;cQk!='8[0>[1TB
+?t!MSAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.DU84W`WN*&%YHY@?[^WfY
+]Y2(r_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKTJnF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj+[nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2t6UXF78ko:[
+o1o?]r_EMhr_<;cr_NDf!)EJe!)EMhohbB["].ui:/=[a;#=)m;H$Ll;Z0Jm<VTVn<W?,!=7]Jd
+<rcA#=o2=u=TDS!<rl?'r`Jnt!E`G#=>@%cZaR?R]"G_k^r"%/a2lEHbg+P^daZdtf@\g3gtgiF
+i8WeWjlY^gl07L!m-O--rpKpXnaZVLs7?6^q=XOVp\"OXrq$'Ys7--YrU9dSs6]gPs6K^MrojLJ
+kNDj,!TiDAit15/iS`YOhqm2Fgt^Z<g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1QBd`"PEM)k
+OH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<Df>Yn!GuZPCC=lkBP;$k
+An>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8c;3V
+8,PjS7J'"C6hNe46.l3$mAtVB=&Ddh9he8Q8\CLDBin,#?Dm+r?r<nu.5!).2`iiQ5!VA"5sn%!
+3'BDs8kDWH8PD`J91_ZG9h\7Z:&[od;#3u`:?Fk?6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^#'8?=.)K@Uit]BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$sM8StMgR
+V5L;mXKA\1Za@0M\[oGe^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60mfi4N
+o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@JBKhp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2tEcl_aNM=/\
+^&P_I]tV4qr4iTS_SjI6a2lBErlY#ZqTSc[rQb;b!mJp6rm(Mh!7:GermCkqd*Va$osst0q7#e%
+rjhs:qRH^<\%&sI\bWc*\MpauZaI6O]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Uf
+kiqBum-O--mdKW6naZVLs7?9_qXsFQq=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7A
+ro4%=iVqa>hqm5Gh;$cag()fgf@SU)e^W*tda?Ihci24+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l
+]=PP_\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!U
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmnG'.nKF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ
+!F]C8?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D
+6hE_36.c,CmGd!Sd*9YO`5MZT"8L[%QMph$Q2e1D<eld&Q;^bRT;/*RVPI-i>#qf.Y-.`-s0;g7
+ZEg[;Y5GL(Z0f!]62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@/'Bgp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2t?t<tkFFa=M
+q2b?3rJpuAPQ$gCQ2d*GPOat7Q2[*KQ2?mFQi*0FQgp11O8b1;O7A>2O8k:AOnt.@O-#J&Oo(4A
+OcY_&P5UO@O>jDLZaI6O]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ>UfkiqBum-O--
+mdKW6naZVLs7?9_qXsFQq=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4%=iVqa>
+hqm5Gh;$cag()fgf@SU)e^W*tda?Ihci24+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q
+['R*EZ*:I9Y-"e+WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!UMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`GlDmnG'.nKF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?NOP>
+?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D6hE_36.u8h
+mDQ6-US+-FQC!l#s6e1CV4Dkes8UMjs+t/SASZ4&7S.`FG^4U`HqI%.:]?"SJVAc0KS+l0KS+sW
+K*I!_L5(J>M!p,\62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@JBKhp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2t6pj@585)eP
+:]*ue:BaKf9h\5Tr_EGgrD<Mis%WPgr_EJhoMG9Z!`2Zfr_NJhqbdAk!`MuprDESkr_rktrDro!
+q,[Jro2bQd!*K/%qH3Yur`B)$qcEc!pK@Dr2mBTo[C3TV]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X6/n*fc9nc&+ZoDeIZp%%hPp&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+l2TrIkPjWDjT+B@irS/urnn"<hVR)EgtVh^%b]Ldf@JO'eC;sqdF$=erm#?)bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnaWWTV%gISXc1=R[KP0QBd`"
+PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]rc\ZlF`__HEcH)<DuOVcD/=!'C2.Hr
+BP1phAS#C_A,]p<@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZ
+r^ciTr'pTQoL/LBoKqn1gAa=UM.]sl;G^+_8kMZGWJYV";+a61f[Y73a$hI,0f:mM0/PdV5!hP%
+6T6tg5"\F=8kDTJ8k;TI84lTN9`.Wa:An#c:\miJ62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9
+:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61F
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]sqp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!D/jcNMO19\
+]`#P@]EQ!_^;%IurP/ZT`5]g;aN2L%b5'6VbkfT_cMPifbg"E3cMl,id.YlddKItEd*L&8\FmE0
+\G3Pd\,a#7\F[6hZ*UjH\@K5a^;%P&`Q$!@bKJ/Ud*^=le^rI,g>(N@hr*JRj5f@bkNM0plg4!*
+mI'H3nF?&Jo)J=]o_\=LpA4I]o`"I[o)J7[nGVhUmJuYQm/QAOlMg&JkQ'fFk5XNCjSn0?io0mp
+!T2c5h#Z<crn7k8f[na+f%&:"e'cXkd*M^:H-ORVbK@rJaN)<>`Pf[2_SO%&^V7Co]XkYa\@8oT
+[C!9HZE^X<YH=q.X/`2!W2HPjV50l\TqS-OSt;LCS"#h5R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>
+KnP)2Jq8H&IsufoI!^0cH$FOWG'8"MFE;JBEH#jqDA@#)CMR["BkV0mAnGUcA7K+Y@UW\Qra,_5
+?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6TJ+
+$2!B;g<n0d`Pfdqrri;[f:hX3s!=QBgRWbJ=H\kF=.GkVTq\?Y<)d%&Y-"h/Z*CO;ZEggCZELI7
+qlg+0[J[N*[cKgQ6N0@L7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;?=.)L@q9._
+BPD6uD/O<4F*)SLH$XjdIt3-'KnbD@N/`m[P*D5uR$sP:T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*
+`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8WeWjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]sqp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!?".G`EdWV(
+Nr"h0NWP9(P5^^CQ2[$FPOat7Q2[*KQ2?mFQi*0DQg^%(O7854O-#J&Onb%:OT:I=OT1IBP5CC@
+O>aAM[C3TU]=bkm_Sa@4aN;WKc-F\`e'uq"f\,!6h;7&IiT&tZk2tjjl07O#m-X3.n*fc9nc&+Z
+oDeI[p$VPMp&=U_oDJ1Znc/+Wn,MeUmJZDOlN$5Ll2TrIkPjWDjT+B@irS/urnmh7hYu=3gtVh^%
+b]Ldf@JO'eC;sqdF$=erm#f6bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYct=5X
+fSS'Wi;qpVl$;dUS=HUTV%gISXc1=R@'A.QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI
+=6KiH?sj]GB\4RF`__HEcH)<DuOVhD/=!'C2.HrBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s
+&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqq2g]'.[[]H="SXPn2Q
+B_FFf=n2UI_#LYl@[KcEF!'GCi2[8F`qtRH$jp192JB:K7ni1KnG&2K)LB$KE$Z.KnbD@mYBmir
+'LBMqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,^Cm<E<1'=^#$7?!^lG@Uiq[AnYmoCi+'/EH?5FG
+BnL^I=Hd!K8#&9MN!OUOHPinQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le
+^rI,g>(N@hr*MSj5oFdkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD,;J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]ppp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!6:+(08kVfS
+q+pl_r_EPi:&[fd:&[oe:]=2i:]!le:\.EW;$'Qi:B"&f;#=,i;?Bcp;Z0Jm:]X?er)<YrrDro!
+q,[JroN(Wd!*K/%qH3]!qH3VrrE/htr`D(`ZaI6O\\#Mg^V[n-`lQ9FbK\>ZdF6Uqf@\d1gtgiE
+i8N_VjQ>Ufkiq?tm-O-,mdKW6naZVLs7?9_qt9CNqXsj[rq$'Ys7--YrU9dS!:BaOs6B[MrosIH
+!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/g()fgf@SU)e^W*tda?Ihci248c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]",A]\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!fY2Q^3o%P`q8n
+OcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TG'.nKF)l8?E,Y_n'l@c&CMITuBP;$j
+An>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U
+8,YpT7J'"C6hE_46/DQ'nYgP9=&Dmi:.e)L8@4V)@T6&jBX$BZ8Ut&!.PND43A!'O5<hJ$6UWpo
+5!DS291qlM91h`I8kDWK9_qHa:/1X_qG6r_j[&f2r^6QNs$crWrC?lY!(m/^!D?,c9n,o6:f("f
+;cHat='/U/>?kH??XR>QA7]@dBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[ftATq\?[
+Vl?\uY->1;['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAR/_[~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HuaCXLl\@L
+pUpL=s1SKJrP/ZT_o9X9aN2L%b5'6VbkfT_cMPifbg"E3cMl/id.bredf7\td*L%`chY*D\H'.p
+\,Ef:\+R91[fNqHrj_^52nHQ+['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYai
+l07L!m-O--n*fc9nc&+ZoDeI\p&+OVp\X[\p&F[`oDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjTF
+jlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe-XUPdF$=ecHa\Yrl]-#aiMQD`l5p8_ns:,^q[Us
+]Y(kf\[f5Z[^NTNZa6sBYck43XfSS'Wi;qpVkp2bUS=HUTV%gISXc1<R@'A.QBd`"PEM)kO,o<\
+N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QrcA<bEcH)<DuOVhD/=!'C2%BqBP1phAS#C^
+@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQ
+oL/IAoKqq2h#@ZFinW#-ai;9<rVlubg7OW/s!RB;s8R@u;NR*,=]M&eUnOKY;cHXqY-"h/Yd(F:
+^Tb)OZ*1=4Ycn#0!OT<4\+I,j62X(J6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3
+>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQ'[o.S=Z@HUSOcbWiN8)Yd1UC
+[^`l[]YD8!_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\
+s7u]krVQQkrr)KgJcD,;J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HsgN#Ed3.t
+qN(<0!frJ,rfm;Frfm;Dns'!9rg*PKqj./Hqj-rBm?%"%mZ@=,s,d5B!0?o:rfR2A!0@)?s,m;D
+qiNduZa@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ5Oekiq?slg4!*mdKW6naZVL
+s7?9_r:U!]p%S@WqXsm\rq$'Ys7--YrU9dS!:BaO!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g
+!SlH/g'-0^f@SU(rmV8'da?Ihcd'h\bl5e%b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*E
+Z*:F7Xf\\*WiE%sVl-AeUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TFoHIdF)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1
+>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hE_46/MVppr'D4
+U7@^>QBd^7s5h5'U4%4Gs8T`cs6Np!6u-XW9Ls>LH$FX]8kV`OKS+r0rIb<7Jq\l2r.Fs&!JuX#
+LZLi"6N':K7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsK6
+F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg"G[
+dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAR/_[~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HpU1h84cPO
+:]!od:B=3br_*;dr_EGgr_WSiqbH]YpJCug:JUmbr)!;gs&&ns;H!Ei!DlSk:ARoi<W#ns=8Gts
+=8Q%d=8uD#=oDG'='5E(qH3VrrE/ht2H[;m[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:h;@/L
+ioB+]k3(sml0@U$m-X60n*ol;rpp*\s7H6^r:]gXqtBmZs7H<^r:9mXs7$!Us6]mSrTjUOlK\B5
+s6'IGroO:DjQ-=#!TN);huV`lrnRV1g]#n1g"=p.f%'cL$.I>MdEp4bcHXT4bA>>CaN2EA`Pod5
+_SX.)^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=>t8R$a5+Q'ISt
+P*1rgO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9rb`HfChmg$Bk_6o
+B4baeARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]
+8GPdR7f5^I7/0.A6L@(rs$Y>!Am&&/9h\5Q84UCdK5"F`7RWBf[:D\0U*hQC2E<`S1I")i6:=4%
+3&a#n8P;]K91hfW8kV`J91qrQ:/+JX:JO[^;#3ub:?=e>6N':K7/o^U7f>gY84cDP8q0K-9heAY
+:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<
+T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg"G[dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAR/_[~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HuF(MKT2J,
+^\kbD]DoMG]tV4qrP/]T_o0O6a2lBErlY&[q98][rQb;b!mJp6rm(Mhs3UMfrmLho"jkTAcHji9
+\a$]i[fEr3\+I01\,No:\,Wr=\%)@H!4`$=2S-3#[^WfY]Y2(q_SjF6aND]McHjndeC<($g"P39
+h;7)JioB+]k2tmll0@U$m-X60n*oi:rpp*\s7H6^rV#dUr:^$\rq-3]rUTsXs7$$Vs6fpSrp9[N
+s6BUJ!pJh1roS^ljQ,@]io8qTi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$WMl_lV50o^U7n9RT:VXES"#k7R$a5+
+Q'IStP*(ieO,f3YN/NRMM26reL)#DqK7ec,J:N,uI=6KiH?sj]GB\4QrcAfpEcH)<Df0H0D/=!'
+C2%BqBP1rVAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;a
+qb$iZr^ciTr'pTQoL/IAoKqq2hu<lUk2"_9bPfEZrri,Re=Q71s"0`?NeUSgNKfZ+<19GSTV83V
+<)Qc"Xf\b1Z*:J4s1Z7QYck14YHY79Yd:dHqmZ4+j[&f2rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\
+:f1+h;cHdu='/U/>[1QA?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(C
+TqeE]W2co#YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)KioB+]k3(smlKeK:%drfS
+nF?)?oCMVIp%J+RrV-HiqYL-erqu`no_sFAR/_[~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HsU5oDKU>a
+OSk14NWP9'P5UXFPlR'JQ2[$GPOat7Q2[*KQ2?mEQi!'LQ^7E5qiKm"o8is7rfHu;s,d8CpQ,B9
+q2bfAOH>TeP*5a*26sQs\%0)_]t_A"`5Td<b0/#ScdC1jeCN7)g=tE=hVd>Oj5f=ak32'olKdg'
+mI'H3nF5uIo)J=]o_eC\p@7nTpA=O^o`"I\o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..k'uLRjQ#:[
+io/hRhr!;Hh;$f?g=k64f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt;IAS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@J
+Lkl"b'nq<nK7\Z)J:E#rI=-BfH?jaZGBS-.F;&_9EH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.A
+6L@(ss#8rJWhc;WR?j/(Q2gC%\u)$H^&S,fHKT3V7Up1LDb*KCGBe@XH[ACX:5"7QJqSf0K`D(5
+O+dLb#D.S_KnY8<M!]uZ62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOfdWiN8*Yd1UC[^iu^
+]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVdAPj5f=akNM0qli6;]mdKW6nac8BoCV_Kp@e7Zp]C9f
+qY^6ir;HTdrdk*:s*t~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HpU1f7n63F
+qbR,a!)EMh!DZAg9E7fc:B"&g;#X8i:B+,\;"mfg:esjc:]+&d;>jAn;,I6h!DlSj:B"8i<;T\i
+<rQ1t<qBAm=T)>$=Su=u=T;P&=9)G%=Sl1u=T;M(=T)A[ZEq!K\[oGe^VI_)`Q-'BbKS8XdF-Oo
+f%8U/gYCWAi8EVTjQ5Odkiq?slg4!*mdKW6nF?MKs7?9_r:U$^nb;tTqt9s\rq$*Zrpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,J*#bPj5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSt):>
+R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GL]<)DKnP)2Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6
+DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYi
+r([/ar_*,\r^m)[q+(?Pr'g6Gpd=[?m6T_27(IbS=&Dgg9M.lI8?.Vf?W9]eD7@fA6Cg.e.5Eb=
+3AE?P5<hJ#6:<dl4\A:=91hiM9)nol<_6"Y9MJ8V:/+MY9i(X_qG6u`j[&f2rBpHMs$crWrC;<-
+8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nI
+NfT<cPa7])S"-(CTqeE]W2co#YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)KioB+]
+k3(smlKeK:%drfSnF?)?oCMVIp%J+RrV-HiqYL-erqu`no_sFAR/_[~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj.4]o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH?"+XLm"UV
+qRcd?&A>fk^;%Fu^qmn*`Q#s=aN=G(q9/TXqT\uaps&f`rQbJjpX/rf#gq#Fcd'h^cHZ9tlF?i&
+qmQ@1!OfK7\G!E.\-'4M\@MLHrjVR21paTu\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVT
+j5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmTs6]gPs6K^M
+rojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%
+P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6DJa6,CMR[!
+BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\
+r^m)[q+(?Pr'g6Gpd=[?m6T_2#k-a,eBQ+S`5V]T"6\@2Q2^e#m'ZliG_B7]P*/q9StVjPUn^pg
+=Kej0Xo5I*ZN't(^'_WWY-5(6Z*:OB[edK+[cBaP6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXT
+o()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj.4]o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH=:?#Ed<8#
+n;[R3P*>d-rK[DIqigW9qN_&Grg!>Gr0R5Fpm;#Hq2jZuplPB8rfHu;q2bT;n<![4rf[;D1paTu
+\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_
+qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmTs6]gPs6K^MrojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<
+g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6
+Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&
+IsufoI!^0cH$FOWG'3e+'6A26EH#i6DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3
+r`K;)=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?m6Tb3.F#/qU7Id?
+Q'IU6s5:esTRM.8s8B9^im1_98S`-Z96>?#G^4[a9M81\KEm']KnG&1s8W%Y$%mh_L4t>9M26uU
+LZCc!6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8X
+dF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):
+J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj7:^o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH:(%h84lQP
+:]=,e9`Rrf:B=3br_3>dr_EGgr_WSis%`Mgo2,0Y!`2Zfr_NGgqbd;i!Du\m;#sKhrD*Ags&T"s
+rD`YopK%8pqc<JnqcNbt!*K5'pfIMtpfRMsqH3Yu1paTu\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.
+g>(N@i8EVTj5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;sqda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=
+R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6
+DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iVh
+rD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?m6Th50BJmI>?"Hp9hS/N8Aq0MAQDPq7"r^[>t:$2-SI,1
+2``c[5!D4u6UWmn5"S=<9)_Hc8kB!^rDrql!)NSg"&DWd:ARf`:]*uK62X(J6i9@O7K5jV8,l*[
+8cD>292&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%K
+NfT?eQ'Rf*S"6.DU84W`W2cr$YHY=>[^WfY]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^
+k3)!nlKdg(mdKTPnF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBQiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHZ=1SKoVh;
+]_]8?]FMWh^;%J!_8=(,`Q#s>ao9HZbP9<Xc2Gr_c2Q#ecN)>ddJ_JqdEp4crQYMibK79h\a?p+
+\,Wo5\,<Z7\,3]/\,*W5\bN]0\MUY#[^`l[]Y;.s_o9X:aihlPcHstfeCE1'g"P6;hV[8Mj5]4_
+k3(smlKdg'mI'H3nF5uIo)J:]o_eC]pAF[Wq#'mbpA=O^o`"I\o)J7[nGVhUmf2\Rm/QAOlMg&J
+kQ'fFk5XNCjSn0Nio/kSi8<DJh;-l@gY1B7f`'J+f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'@Jq
+P*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s).jR"DhjhC2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\
+8GPdR7f5^I7/0.A6L@)!rs7lJg="9f`Pfaorr_62U"95C*3.lQQ[=HhOHEC>S=cOLTr+Pa;HBs&
+YH>(6Yd+0,r4`38"L52:[C5n?osWpIr'LBMqaCHQr^QlWs%!,]r^m2a9`@b9:/=\_;,U=l<E<.&
+=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQC+,1SXuOLUnsugWiW>+
+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rm-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHXC5qDfgGe
+O7J;4OHG_*PQ$gFQ2d*GPOk%8Q2[*KQ26gEQhcsBQiE?QP`q1'OQ_`*NrG+7OSb1>OSY%$OT1IC
+Ou0MQ[^`l[]Y;.s_o9X:aihlPcHstfeCE1'g"P6;hV[8Mj5]4_k3(smlKdg'mI'H3nF5uIo)J:]
+o_eC]pAF[Wq#'mbpA=O^o`"I\o)J7[nGVhUmf2\Rm/QAOlMg&JkQ'fFk5XNCjSn0Nio/kSi8<DJ
+h;-l@gY1B7f`'J+f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9H
+ZE^X<YHG"0XK/A#W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s).jR"DhjhC2*Z\!G?$DAH?=OraGq;?srt@!FB(2
+>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6L@)#s"EiU
+XJMY^R[08)PQ1[B_Pj&UV"4QNL9.Or>%1'=D+@3?G'8+VI!\LY:P=CRJVF)VrVunXrf78<KnY8<
+LktGRj?`]1r^6QNs$coVr^ZuZ!(m/^!D?,c9n,o6:f("e;cHat<`iL->?kH??XR>PA7]@dBkhF#
+DK'T9FEMePH@('hJ:W?,L5:\EN/s'`PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]"Gbl_8=.0a2lEH
+c-FY_daZguf@em4h;-uHiT&tZk2tjkl0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OB
+QiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgAbYolp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHU:(g7S$-F
+:JO[_:&duf:C']i9MA/S9hnI_:]=2i:B4/f:\.EW;$'Qi:B"&e;#=,g;?9Wkr_W\m:]4&g:]F/i
+<VTVn<;9Ji<rQ2"<qTPk=Su7^=T;P(=T2G[ZaI6O\\#Mg^VRh,`lQ9FbK\>ZdF6Uqf@\d1gtgiE
+i8N_VjQ>UfkiqBum-O--n*fc8nc&+Zo)SF\p&=[_p[n7Yp\jg_p&=U_oDS7[nc/+Wn,MhUmJcJP
+lN$5Ll2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTq@pJSXc1=R[KP1
+Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HF)l8?E,Ybos(qmT
+CMR[!rb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hE_460A2'b)9k6;G^+_8kV]Ga/"8s<),k`R`1C^?sPE60.f%@0/PgW
+5XIb'6od1i8kDZK8kVcLrVudr##.ie:/+GXq,$o`r(c<=r'LBMqaCHQr^QlWs%!,]r^m2a9`@b9
+:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQC+,1
+SXuOLUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rm-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj4^nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHZ!bGJ;KGf
+bP\sU]">Vg^:sT]#f+9n_o0R8aN=G(s3(Das3(2]qT\uaps&f`rQbJjpX/rf"4>KAci),lc-+5L
+a8NOD\a-d"[fEl9[/m_FqmcO4qRH=2pp^@8\GWli['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4
+h;-uHiSrnYjlYail07O#m-X6?mfDqJrpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mS
+rTsRM!:'RJs6'IGroX7B!9F.>!TN);i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":
+R@'A.Q'IStP*1rhO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3
+D/=$(CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jd
+r_3;aqb$iZr^ciTr'pTQoL/IAog8"2k5P_YjP8D5b0%cDr;QlXe=bk$rtq:+O+gVfNK]Q0<19GT
+TVA8]<*ED+Y-+u-YQ1s,s8'G3Yd1XEpp]t*j?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h
+;cHat='/U/>?kH??XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[
+Vl?\tY->1;['mKT]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Q
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj4^nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHX1)mCiaoT
+POa_:OHPfjPQ$gEPlR'HPOk%7Q2[*KQ26gEQhcsBQiE?OPl?mFO84n'O8Y+<O8+h6OoCI=O6r#1
+O-#G%OT1Fq['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYail07O#m-X6?mfDqJ
+rpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IGroX7B!9F.>!TN);
+i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%D
+L5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3D/=$(CMIS_BE;aXrac+@A,]p=@:3LB
+?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAog8"2
+kPkkB\#H0qS!]S.QN$n-iPMOaIBN>EeU#ba@7Fa@CMlj=FEVnRH@&7W:ecUrJqO&U!.t1LrJpo=
+"HJ4nLl(MSj?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h;cHat='/U/>?kH??XR>QA7]Ce
+BkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0
+a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nl
+rUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHU0td7n?9I
+:ejda:&duf:B4/f9`Ife:B"&g;#!iY;"dcd;#O2f;#4&g;?9Wkr_W\m:]4&g:]4&e<V]\f<<-(q
+=8c1m=8Q+t=5[15['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYail07O#m-X6?
+mfDqJrpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IGroX7B!9F.>
+!TN);i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf
+\[],W[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3D/=$(CMIS_BE;aXrac+@A,]p=
+@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IA
+og8"2l2NU6Xa=AU;c$.^91hkJc)-&'<)#bdTtbn?L,g_40JtaK2DdN]5XIe+3B02d8kM`K8kV`H
+rVuaq"BA2k9htI[qG7&bj?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h;cHat='/U/>?kH?
+?XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;['mKT
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssf
+q>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!TdRI"mWS
+^:X?T!P?#D^&PeR^VI\%_Sa@5aN;R#b5]Z[bk]N_cM5Z`cMc&hd.brcdK7eAci),nc-4>Na2YXe
+\H'/8\aI!-\c927\,Wo:[/m_FqmcO4rj_L/s1&$<!4r0?1UFO!\[oGe^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYCWBi8N\UjQ5Oekiq?slg4$,mdKW6nc&+Zo)SF\p&Faap[.bRp\sm`p&=U`oDJ1Znc/+W
+mfMqEmJZAQlg!d7l2TrIkPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^G1kO"f@JL&eC;sqdF$=ecHa\Y
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnXQVTV%gI
+SXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMM[1GLPCM9K7ec,J:N,urd>6'H[:!`G^"@TF`__HErL%c
+E,TW3D/=$(CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mi
+s%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog8"2kl1qUiS2i+b0%fEr;R_od[o\&s8.rY^j(BaNKfZ1
+<19GRTV82]<EXSGY5PU%s7sA/[J.0([cBaP6N':K7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?Xq
+<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<T:r$UVPgGp
+Xfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8WeWjlYail07O6lj<(In*fc9o()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh@e]Tip%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!T42BlA*B
+o8`j3"-A\/PPpaFPm!D<P`q=$PkgUCQN*6HQMd*EQMHmIQ2m3LP6$i-r/^o>q2jp'rJpl<plPB8
+rfI#<l];+/rfAqB[^WfY]Y2(q_Sa@4aN;WLcHjndeC<($g"P39h;@/LioB+]k3(sml0@U$mI'E2
+n*olHo)J:]o_eC^pAOaQq#'mcpA=O^o`+O\o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFjp1#/jQ#:[
+io0mp!T2c5h#Z<crn;PKf[na+e^`1!e'cXkd*L"_c-4DTbK@rJaN)<>`Pf[2_SO%&^V7Co]XkYa
+\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRM
+M26qAKnP)2Jq8H&It%BF%=EMKH?jaZGBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=^@
+lp9q:$N8&OVP9WMR$X,(rr4,(_P`oPZN'sCF7#2p?Y!keDG3TCGC"L[HV6t,@>0>cre(9(qu?JP
+!/^&tj?`]1rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfBkqO&
+DfB];FEVkRH@1-jJ:`E.LP^nINK93bPa.T'S"-(BTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEH
+c-F\`e'uq"f\,!6h;7&IioB(\k3(sml0JB9$170Ln*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!S+H7RfsB
+9htX]s%W\m:/4MXrCm5c!)EJgrD<>doMG3X!)WVir)!5e#uXVu;,C(d;,C'e:B"&g:&n)e<WH.q
+<qKAl<r#hq<qTPk=Su7j=T;Iu=T)AYZaR?R]"G_k^r"".`lQ9Fbg+P^daZdtf@em4gtglGiSrnY
+jlYail07L!m-X6/n*fc9rpp*\!;-3^s7ZEcmJ-VRrq?6^rq-6^r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroOIIjQ,@]io8qrhuV`lrnRV1g]#oMg"=p.f%&=#eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aU7n9RT:VXFS=?":R@'>,Q'ISt
+P*1rhO,o<\N/W[PM2@%DL4t;5K7\Z)J:E%II1:RNH?sj]GB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\
+8GPdR7f5^I7/0.B6L7#(s"E#jBj4P7:/+GT8k\s4YD-Od9133g[;7sq:+%SJ1c@?N1d+#f6:41#
+3'KZ#9M>@W!(m(fqGmVs:A7T]:]4&L62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<)lt#
+=BSg3>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQ'[o.S=Z@HUSOcbWiN8)
+Yd(OB[^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Nj5]7`kNM0pli6;XmI'H3nF?)?oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!T^MGCbU7
+Wm(IR!P?#D^&G_S^VI\%_o9X9aN;TIao0B^bP9<Wc2Q#`c2Q#ecN)>ddJVGmciDDjc3MV<b/hTB
+`Phbcn[\/!s1/0>pp^:3"1>SG\,3]6\,Wu(\c')q\[AlU\\,Vj^r"".`lQ9Fbg+P]dF6Urf@\g2
+gtgiFi8WeWjlY^hl07L!m-O--n*fc9rpp*\!;-6_rq??cl1k5OrV$0^rq-6^r:9mXs7$!U!q,IC
+rTjUOlK\B5!pJh1roOIIjQ,@]io8qrhuV`lrnRq:gY1B7g"=p.f%'cL$.I>MdEp4bcHXT4b@Jc;
+aN2EA`Pod5_SX.)^V@Ip]Xtbc\[],W[^EKKZa-j?Ycb+1XK/A$WMl_mVPU)`U7n9RT:VXFS=?":
+R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-D@H3nkAGB\4QFEDSErc&*\Df0H0
+D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic
+9`@]_9)V?\8GPdR7f5^I7/94B6L7#(rsAM`hqHH%b/q`Dr;RhrT:,*Hs6?BZds6XMNf]E,R%9nE
+Tq\>_<EQH-Xf_T,qZ$<(pp^"+j$ET0rBpKNr^HiVr^ZuZ!(m/^HV7%+9heAY:f("e;c?[s<``F,
+>$P<=?XR;O@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D9"R@B_<TV8-VVl6VrXfen6
+ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$lic_Dn*olHncA@Srq-<c
+p\jmeq>^<hqu6NmrUg)?s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!T..ASlI6
+KU)7ks,[2A!g/Y0rfmGJs-<_OP`tX%pQb`Ds-<GHr0R/DqNq5J!1!PIrf[8AnW<.!rJpc9qiL];
+rf@,@l&bk+1Q]#Q\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFckiq?slg4!*mdKW6
+nc&+Zo)SF]p&=[apZ_JOp\jg`p&=U`oDJ1Znc/+WmfMqEmJZAQlg!d7klU)3kPjTKjlGL_j5T(W
+rnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\Yrl\ipaiMQD`l5p8_ns:,^q[Xt]Y(kf\[f5Z
+[^NTNZa6sBYct:4XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[BJ/QBd`"PEM)kOH5H_NJrgSM2@%D
+L5(D8K7ec,J:N,uI=6Kird"lrG^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM
+?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;ar(?oZr^ciTr'pTQoL/LBoKqn1
+m/IFU\uV[$S!o_2QBhIL,OraOIX8L's0."!W**S%C2@f^F*2YNG^Oj28l(+oK7S]0K_k`CNp_\_
+62X(J6i9@O7K5jV8,l*[8cD>/92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MSAS,RgC27X'DfKf>
+Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]Y2(q_Sa@4aN;WLcHaea
+e'ut#f\5'7h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!S.J6q0[<
+:/Cg_rD*Aer(I/d:/:darD<;cp/(BY!)WVir)!5e#uXVu;,C(d;,C'e:B"&f:B+,X<q]Mn<r#hq
+<qTPk=T)=n=Sl1r=T2GY[C3TU]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@U$
+m-X60n*olHo)J:]o_nI^pAXgNq#0scpAFU_o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..jp1#/
+jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)e'cXkd*L"_c-611ABN$8aN)<>`Pf[2_SO%&^V.:m
+]=PP`\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPjV50l\TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3Y
+N/NOLLkg_>KnP)2Jq8H&IsufoI!bj=$$gc>GBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*/]rCQuZq+(?Pr'g6G
+q*Xd@lp:(>0B^-'@9?B)9MJ5R8k]-A[u=ru7RLdoW`q]=?mmT[2)dNP4?ktn6:++#3'Kr+9DqKZ
+s7fUp<VTDe:]=,L62X(J6i9@O7K5jV8,l*[8cD>/92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MS
+AS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]Y2(q
+_Sa@4aN;WLcHaeae'ut#f\5'7h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`=d\rV6Egs8)Zj
+rqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U'WFF8h'
+Tu=OR]=bfU^&G_N^VRb'`5]j=rQ4u[!6b/]qT\r`q9AoarQbJjpX/oes3LblrQY_obf\#Ha2Q!7
+_>Lh1\b3K2\H'/7\,Ni8\+dB6\%&sF\c02>\H9@Q])K8;\i7(-\\#Mg^VRe*`Q-'BbK\>ZdF6Uq
+f@\d1gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9nac8BoCW"Srq?Bdk4noLrq?6^rq-6^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn1gio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSV
+bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mVPL#_U7n9RT:VXF
+S=>t8R$a5+Q'IStP*1rhO,o<\N/NRMM26qAL4t<\K-,\rJ:N,uI=6KiH?sj]G^"@TF`__HEcH)<
+E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dh
+s%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog8"2mJdI]iS2l-bf\)Lqu7i!T:#TWs/F>>L0'(0Oci[E
+R@^+HU8=Vc<*6?,YH>(6YPJ4l^A>>5[c9[O6N0@L7/o^T7fGpX8,u6\8c_RYr_7l;:Jakb;H$Op
+<`W=*=^,-9?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WOcu&rR$jG7StMdQV5L8l
+XKA\1ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWAi8N\UjQ5OekiqBum-O0/n*ol<o(2GV
+o_%nNp@nO\!r;]hr;6KkrVcBfJcD):J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0UioCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U'F@VTk(
+J!'Gbs,R8DOckq-PlI$KQ2m3<Pk^OCQN*6HQMd*DQMQsJQ2m3KPQ$^FOo1:-OS+\7OT1C?Nr+n7
+OSb1=O8t@4O8t@?OSb/![^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'
+mI'H3nF?&>o(2JFrUp0`s7b[NrV-<bqt9s\s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDA
+j*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!U
+MM[1GLPCP;K`?ZHJq8H&IsufoI!^0cH$FRXGBS+NFE;JBEH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6G
+pd=^@lp:(>$.#rUUS"$EQ^=$:s!.9[WIB-3s6bT5IptoX8Si9796>?#H$Xgb91i!5KnFr0KS0+#
+p5\Wtj$ET0r^6QNs$coVr^ZuZ!(m/^!D?,c9n,o6:f("e;cHat<`iL->?kE>?XR;OA7]@dBPM="
+DJsN8FEMePH@('hJ:W?+L5:\EN/is]PEhH$R@Bb=TV80XVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9F
+bg+P^dF6Urf@\g3gtgiFiSrnYjlYail0@U$m-a?2nF?)?oCE.Xp%A%Pp\jjgq>0scqu6NlrUg)?
+s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U')6q0X9
+9)VK^:&n#d9E\'b:/=[_;#=&\;"[Zc;#O2f;#4#q;Gg=h:f("d:f%$br_NJfr_ESj='+ZfqGmGo
+r`B"uoiLli!*Ahqr`9)#r`Au!3*E]"\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8N_VjQ>Uf
+l07L!m-O--n*fc9nac8BoCW"Srq?Bdk4noLrq?6^rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1
+roO7CjSn1gio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mVPL#_U7n9RT:VXFS=>t8R$a5+Q'IStP*1rh
+O,o<\N/NRMM26qAL4t<\K-,\rJ:N,uI=6KiH?sj]G^"@TF`__HEcH)<E,TW3D/B2e!GZ?JBE;aX
+rac+@A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciT
+r'pTQoL/IAog8"2nc's0bcZ(n<)ZRe9MA)OpAaEmP&4/f6ZTo/8leD1.5*813&!3P5!]*6$:?d4
+5"\C>8kDZIq>^Ipq,RJqqG@#ar_DK>r'LBMqaCHQr^QlWs%!,]r^m2a9`@b9:/=\_;,U=l<E<.&
+=]ns6>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK7nu8M2R=QO-,WkQC+)0SXuLJUnsufWiW>+
+Yd1UC\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVdAPj5f=akNM0qlg4!+n*fc9o()DD"n_K\
+p@e7Zp]C9fqY^6ir;HTdrdk*9s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0amoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9ZEHZki
+QE/6@]=e-VrOrNO_84%.`lH1"ao'9]bP9<Xc2>l_c2Q#ecN)>ddJVDodEp5<c4%tAbK.]C`Pf[2
+^q[AU\F$j"\G`u<\G<W5[edK6\,<`;\%&sI\c')>\bs#>\\%jP3k;i5[^WfY]Y;.s_SjF6aND]N
+cHjndeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?&>o(2JFrUp3arqH-]qt]p[rV-<bqt:!]
+rq$*Zs7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmq>)e^W*t
+df.XDd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMh
+Unjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRX
+GBS+NFE;JBEH#l8s)%jSD#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"
+<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6L7#,rs7oJg<n0ibKA!)rugEqYl=\&
+QiFI9KN3toPZ_"TT:hmPV5%'i=Kej1XK\u)s7O)+^\kS9[c9[O6N':K7/o^U7f>jW8,u6\8c_RY
+r_7i::Jakb;c?Xq<`W=*=^,-:?=.)L@Us%^BPD6tD/O<4F*)PKG^=^bIXm$&KnbD?Mi<^YP*;/s
+R$sM8StVmSV5L;mXKA\1Za@0M\[oGe^VRe*`Q-'BbKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!
+m-X60n*ol<o(2nRs7QEc!;HKfs7u]kr;6KkrVcBfJcD):J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0XjoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9J@:a4q
+H\@[ZNrG(?OHKO+!gJt8rg!PLn!*U4rg*SLqNh&Gp6PTBs-<\NPl?mGP5^U?O6r&%O8b7?O8k7;
+O8b7;OTCQ+rK%#?plGK:r/^o>rK0.&Ocd)]\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9nac8BoCW"Ss7ZHdpA"O\p%\L[rq?6^s7H<^rUU!Ys7$!Us6fpSrp9[N
+!:'RJs6'IGroX7B!9F.>&E;[-i8EMLhVI#CgY:H9g"?;U"kM5ReC2kFd=9NhcHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6p@Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1<R@'A.
+QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<E,Ybo!GuZP
+CB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hNe461Fm\_6'T/SXQ"8Q^@[N,6#igIuD8Fi-=@@=CF[5Ci)j;F`qtR
+H@(!392C4oK7ei2q#BuHo7u?lr'L?LqaCHQs$lrWs%!,]r^m2a9`@b8:/=\_;,^Cm<E<.&=]ns6
+?!^lG@U`kZAnYmoCMds.EH?5EGBeF\I=?]uK8#&9M2R=ROHPfmQC+,1SXuOLUnsugWiW>+Yd:^F
+\%0)_]t_D#`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojd
+q#C0iqY^6ir;HTdrdk*9s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0[koCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9,6pjI8
+8ki)Ur([5dr(R,br_<Ghr)!;eo2,*W!)WVir)!5e#uXVu;,L.d;,C'e:B"&f:Amug:&n>o=6`i_
+<V0>e=8H#!=8Z/#=7o\p<rc;#=8c5[[^WfY]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+]
+k3(smlKdg'mI'H3nF?&>o(2JFrUp3arqH-]qt]p[rV-<bqt:!]rq$*Zs7--YrU9dSs6]gPs6B[M
+rosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmq>)e^W*tdf.XDd*L"_c-4ASb/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt;LCS!ob4R$X,(
+Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXGBS+NFE;JBEH#l8s)%jSD#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.B6L7#0rs.5gRV#]$;GI-a-r!A*s6mpoDcK:tEl3VsQU`DU.l0+F1c.?\
+5=%\)6T@%h8kDZI8PJpZrDiYo!*/qnqG7,dj$ET0rBpHMs$crWrC?lY!(m/^!D?,c9n#i5:f("f
+;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEMePH@('hJ:`E-L5:\EN/s'`PEhH$R[]k>Tq\?Z
+Vl?\tXfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?
+oDeI_p&F^cp\ssfq>^<hqu6NlrUg)?s-Nb9~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgB(u#mp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9pSF*rY%
+U;jgXrk89E#J\'j_SjI6a8O-Yb5]Z\bl>ofbl,facM>`acMc&hd.brcdK7hCd/M>jbmhn?aiMK@
+`5BI-^V7FjrjVg8n@8V3\[hCCqmlX7qmZ4-qmlR7r4Dp=/@W1$]Y2(q_Sa@4aN;WLcHjnde'ut#
+f\5*8h;7)JioB+]k3(sml0@X%mI'uB!V#XYncJFTo`"O`pAXg^q"+=Uq#:$epA=O_o`"I\o)J7[
+nGVhUmJuYQm/QAOlMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+f%&:"e'e6CER<%W
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EHJZE^X<YHG"0XK/A$WMcYkV50o^U7n9R
+T:VXES"#k7R$a5+Q'IStP*1rgO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc7G7Je=FEDSE
+EH,r9Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl
+;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6L-r/rsADZgt:!!c-+8Oqu7f&T<\@ps/l<`<J=J:
+P#PPNR\6CJTqt^h>?7o0YH>%6p]'p#s1e68j$ET0rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U/>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiT&tZk2tjkl0A<8&+/fRn*ol<
+o(2MGp%A%Qp\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgAG>fkp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9pD@;9_(
+Js,qirJq/EOctunQ'M?7s-<VK!1!;C!0dDHpm(iEs-<GHr0R)Br0RGL!L8oKPQ$aCOnb")OS+\6
+O91K)OSOt:OS=n+OSY(j\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plKmm)
+mf)YUnF?MK!qZ'Vrq6<brqH6`oD/.UrqHEcqt:!]rq$*Zs7--YrU9dS!:BaOs6B[MrosIH!9a@D
+s5a7Aro4%=iVqaChqm5Gh;$c>g=k64rmq>)e^W*tdf.X6d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`2!Vl-DgUnjc[TqS-OSt;IAS!ob4R$X,(Q'@JqP*(fd
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$K=4%X)u:FE;JBEH#i7DJj<-rbDmVBkV0mB4b^d
+A7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?P
+r'g6Gpd=^@lTt1C$M:m/US+*GR[KP0r;RqhY'u;Js4N"NBgcK'Ci2d:F*)VOGC"U.92\N<KS"l1
+L%kTIO7eM5NV/(e62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_W
+AS5[jCM[m+E,fr@G'A4XI!pKpJqJc3Ll..NO-#NhQ'[l,S"?7GU84ZaWN*&&Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k3)!nlMp2]mI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zj
+rqu`np&9OBQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9p'77K^;
+9D_Ka:&@Td9hnGZr)!>fp.t`br_W8b!)WVir)!5er_ibns%ibo:f%$br_NJfrD3Ae"]e]+<``Af
+<r,hf<r#hh=9)Fp=Sl2"==gql]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYail07L"
+m-X6?mfDqJrpg-^o^r.Us7ZHdq=sRWp\=a^rq?6^s7H<^rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IG
+roX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;U"kM5ReC2kFd;dOZcHa\YbKJ&MaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'Wi;noVPU)aUS=HUTV%gIS=?":R@'A.QBd`"PEM)k
+O,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]rc\iqF`__HEcH)<Df9N2D/B2e$YjBhBP1si
+AS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciT
+r'pTQoL/IAog7t1p]!)5_53&t<_uXe9he;U9C;cObFW]S7RhF;Im/K:-8@)03&*6N5!D1q6:<dm
+5!DS191hcLp](.kq,RJqr_N;aj$ET0rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cHat='/U/
+>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;
+['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiT&tZk2tjkl0A<8&+/fRn*ol<o(2MGp%A%Q
+p\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9pUEd*%k
+R&nR3^&PeU]tV4q^qmn+`Q#s>aiXM(s3()ZrltAdq9Aoar6P,br6bYod*Vd;s32%tbK7iF`l,d3
+^q[Ut]tF?Qq6p@6n[\Y1n%&>*r3uO4#Ih4Q\$ifW\b`l@]=PVd]"7mQ1:jp(\\#Mh^r"".`lQ9F
+bg"G[dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-O--n*fc9rpg-^o^r.Us7ZHdqY9RUp\=a^rq?6^
+s7H<^rUU!Ys7$!Us6]mSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);huV`lrnRV1g]#n:g"=p.f%/C$
+eC2jndEp5=c?daZbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'WMl_m
+VPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM&iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]
+GB\4RF`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqu
+!*&nqs&/korD<Jhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog7t1p&><`hqQW-c-=GSqYpW_TX+Rs
+'VO-+KNX@uP?LtRStMgPUSLpj>?Cg,!NiQus7O,*^\G7s62X(J6i9@O7K5jV8,l*[8cD>392&#R
+9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS#LfC27X'DfKf=FEVkRH@1-jJ:`H/LP^nINK93bPa.T'
+S"-(BTqeE\Vl?`!Y->1;[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&
+mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9pD@:j=s
+I"ms_NrP.EOHGZgPE_@3QMd$DPl6gFPkgUDQN*6GQMm0CQMd*LQ3!88rfd>Er/q#Bp5dsiq2bN:
+qN1oAOH>N`p5fE<OH>NarK/hC\@K5a^VI_(`Q$!@bKS5Vd*^=le^rI-g>(N@hr*JRj5oFckiq?s
+lg4!*mdKW6nc&(\oCV\Sp&Fabp\O[Sq=j[`p\sm`p&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrI
+kPjTFjlGM%irS/urnmh7hYu=3gtVh^%b]Ldf@JO'eC;sqdF$=erm#i7bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`q8m
+OH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TG'.nKF)l8?E,Y_n&8c6!CMITuBP;$k
+An>OaA7PUJ!F]C8?iOF4?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&[id9D_?[8cD9V
+8,PjS7J'"C6hNe3621Bdqs(D`U7@aBS!fZ@rufptIuDAId=/*"@S1BODbWiFG'A1WH@/@X:ecXs
+JqJaLs8S/QNW>(6LZ1Vt6N':L7/fXT7fGpX8,u6\8q0K-9MJ5V:Jakb;H$Ln<`W:(=^#'8?!grI
+@Uit\B4u$qCi402EcZ>GGBnL^I=Hd!KSG8=MN!OUOckroQ^O>5StD^OUo(&hX0&P/Z*UjH\@K5a
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?tm-O--n*^GLnac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*8s*t~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9p(6pjF8
+92/4]:B+&c9`Ifg:/=[a;#a>b;#O2h;"d`d;#O2f;#4&g;ZBVo:]aKj:]4&f:]*ue:]!od<r?&!
+<rZ1Q<r#hn=9_f-=&r@'=7oYr='#9$0t+U&]=bno_Sa@4aN;WLc-F\`e'uq"f\5'7h;7&IiT&t[
+k2tmll0@U$m-X60n*olHncJFTo`"O`pAXg_q!e+Rq#:$epA=O_o`"I\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFjoXZ*jSn0?io0mp!T2c5h#Z<crn7k8f[na+f%&:"e'cXkd*M^:HHj[WbK@rJaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9RT:VUDS"#k7R$a5+
+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSEEH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.B6L-r6s"sDnZ&sH=<`)Ud9MS8U\E<hfdA1qe7RhI@G<K+W/h](@3]/`V
+5<qP$6:Ejn5<VS291__Js8>sl<WQ2rq+fp8r'L?Lr'^NQs$luXs%!,]r^qZ59MA/T:/=\_;,U=k
+<*!%$=BSg4>[:]D@:E_XAS5[kCM[m,EH6,BG'A4XI!pKpJqSl6M2I7OO-,TiQ'[o.S=Z@HUSOcb
+WN3/(Yd(OB[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAbYolp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^DfU2X
+Nhjbn]b.un^VRb(`5Td<aiV]Iai_cLp!!E[!m]'8rm(Abs3CMfpX/oe!n#BArm(Pgs3(qpaMu6<
+_ns7)^V7Co]_f/5\+mJo\bio7\+dE4\H'/1\h^h-\%0,`^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JQj5f@bkNM0qlg4!*mdKW6nc&(\oCV\Sp&Fabp\O[Pq=saap\sm`p&F[aoDJ1Znc/+WmfMqE
+mJZAQlg!d7klU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^J(`K+f@JL&eC;sqdF$=ecHa\Zbfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6Xf\\)Wi;qpVl$;dUnaZXTq@pJSXc1=
+R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlMspG'.qLFE;JBEH#jq
+D@gZ$CMR["BkV0mB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTt:F#jC0udF$4ac-#n_*poW*s8Vu.M0Xi8PE]$IR%9nE
+TVA5]<`N7'Y-+n/o`+NsrkJ<<i^*K/r^6QNs$coVr^ZuZ!(m/^!D?,c9n#i5:f("e;cHat<``F,
+>$P<=?XR;OA7]@dBPM="DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D9"R@B_<TV8-VVl6VrXfen6
+ZaI6O\\#Pi^r"".`lQ9Fbg"G[dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X60n*ol<ncA@Srq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD&9J,~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAbYolp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^?t!_e
+G(GhQNrG(COHG]iPa204rg!MJ!1!MIr0.,E!gT"7r0@8Is-<DGrKm/BrKmPMs-3YMPEZ!/r/puA
+o8hXfplG$.!0?Z30p/rU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiSrnYk2tjjl0@U$m-X60
+n*olHncJFTo`"O`pAXg_q!InPq#:$epA=O_o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..jp1#/
+jQ#:[io0mp!T2c5h#Z<crn;kTf[na+e^`1!e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co
+]Xtbc\@8oT[C!9HZE^X<YHG"0XK&;"W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'ISsP*(ieO,f3Y
+N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc8G7&M9F`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_
+A,]p<@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAoKqk0q>Ufjh5[<FSXl4=R[F!P+54#MMou(>O)%m/C2Rr[8oo,uH$=R\8P;ZO9SJ.NK(T*C
+O7SA3NV\Fi62X(K6i0:O7K,dU8,l*[8cD<_92,=ZISN[8:f1+h<)lt"='8[0>[1TB?t!MTAS,Uh
+C27[(DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]=ktp_Sa@4
+aN;WLc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^6UO73
+8PB"W!)<>as%NPi:J^LWr(m;g!`;cjq,%,gr_NDfqGI5is&&em!`;cjrD*;erD*;eqbI#hqc<bu
+rDhTQqH!YtoiD/p=7fTN=&rD3\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL`Di8N\UjQ>UfkiqBu
+m-O--n*fc9rpg-^o^r.Us7ZHdqY9IRq"Xj_rq?6^s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5!pJh1
+roOIIjQ,@]io8qrhuV`lrnRV1g]#oVg"=p.f%&=#eC2jndEp4bcHXVXbKJ&MaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[],W[^EKKZa-j?Yck43XfSP&WMl_mVPU)aUS=HUT:VXFS=?":R@'A.QBd`"P*1rh
+O,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*"fnF`heJF)l8?E,Y_n&8c6!CMITuBP;$k
+An>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U
+8,YpT7J'"C6hE_262^a=ftEl.E`l=<:/4JX9hhbErVtTNH!*U+GKObp2^^:82EEQL4$Gkn5s[js
+3&j)a8P;ZIo`+kioi;&mqG-$9r'LBMqaCHQr^QlWs%!,]r^m2a9`@b8:/=\_;,U=l<E<.%=]np5
+>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOfdWiN8)Yd1UC
+[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*mdKW6nac5OoCW%T!quB_
+rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^'tp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^Df^/Q
+MOCTkrOr3E"i%mj_o9XpaSs<]aoKWXbkoZacMGfccMPr]dJ_JsdEp7dcHcF6$-^Q5a2Z*9_SO"d
+^&YkG]_8f0\+7'/\H'/,\c0,=[fEl9\,Nl;\,Nl>\%&rYost.6rjjbn]"G_k^r"%/a2lBGbg+P^
+daZdtf@em4gtglGiSrnYjlYail0@U$m-X60n*olHncJFTo`"O`pAXg`q#'s\qYL$`q#:$epAFU_
+o`+O]o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)
+e'cXkd*L"_c-611D9BuAaN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50o^U7n6PSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS-.F9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"
+<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdR7f5^I7/94B6L-r5rs7Q;e^Mpkc-=H.rt"RlZN'so
+hW&*EO-<UHR@=,K$_jGl<`N=)Y-"h-Y4MYn^%8u;^\tV#62X(J6i0:O7K5jU7fl4Q8cD<_92,=Z
+HVR@5:f1.i<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf*
+S"6.DTqnN_W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)JioB+]k3(smlKdg'
+mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^'tp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^?X[P_
+FFAt2qMtT:s,d>FPl?sIQMZsHPl$[APl$aFQ2m3GQMm0AQN!6NQN*3OP`q=1P5LI?P5^L-O8b79
+O6r&,NrY4<O9pu.O,oB`OH5Kcp5f98rfAeD]"G_k^r"%/a2lBGbg+P^daZdtf@em4gtglGiSrnY
+jlYail0@U$m-X60n*olHncJFTo`"O`pAXg`q#'s\qYL$`q#:$epAFU_o`+O]o)A1ZnG_nVmf2\R
+m/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)e'cXkd*L"_c-611D9BuA
+aN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o^U7n6PSt;LCS"#k7
+R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9rb`Hf
+Chmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid
+9`@]^9)_E\8GPdR7f5^I7/94B6L-r8rs/5We>T+6S=TYJ!L`WYru^%&J;h_P\#m)57;?[19656"
+H$O^`I7m10:54FSJqEUo"HSS'O,s0us,[,=!0-r4i^*K/rBpHMs$crWrC6o[8P/nR!D?,c9m]W2
+:f("f;cHat<`iL->?kH??XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:W?+L5:\EN/is^PEhH$R@Bb=
+TV80XVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^.!p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^6UF11
+84uWP:/1RY##.if:Jak`ohbN]qb[&b!`2Zgqb[,drDEer:f("c;#O/f:]*ue:\dcZ<rQ/#<rH%q
+<qTJc<rZ1j<rZ8$<rQ/%<``?$=7o\q="h+q]Y2(q_SjF6aN;WLcHjndeC<($g"P39h;@/LioB+]
+k3(smlKdg'mI'H3nF?MK!qZ'Vrq6<brqH<br;$$^qYBs^rqHEcr:U']s7?3[rpg$XrpTmTs6]gP
+s6K^MrojLJkNDj,#Nb%-j5].YiVqa9hqn@g$JaCig=b03f@SU(rmV8'da?Ihcd'h\bl5e&b/q`G
+a2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4
+R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'3e+"`n^(EH#jqDA@#)
+CMR["BkV0mAnGUcA7T1Z@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2b
+r_*,\r^m&Zq+(?Pr'g6Gq*Xd@lTtRN2!DlTMg'#>;G^+_9MS;UV:PJBi2h907RqaI?t+"#.lK@A
+2*3rb5XIe)6T@%h5"\C=91ngUr`/Pj!*/tmi^*K/rBpHMs$crWrC6o[8P/nR!D?,c9m]W2:f("f
+;cHat<`iL->?kH??XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:W?+L5:\EN/is^PEhH$R@Bb=TV80X
+Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-X91nF?MK
+!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG&VMM
+KTDqM]tD&X^'MKh_8=.0a2c:"aT9Q-p!!H\!6kGerm(Pg!7(Sgrm(Gf!7:GerR1_n!RT0lcMu,q
+bfe)J`l5j4_8-&a!58BEs1S?=!4D[3mC2Jmqml:-s1&-=rjhg8rjanr\\,Vj^r"".`lQ9Fbg+P]
+dF6Urf@\g2gtgiFi8WeWjlYail07L"m-X60n*oi:o()DDo`"O`pAXgaq#'sXqYU*aq#:$epAFU_
+o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro8LfiSi_Qhr!;Hh;$f?g=k64f[na+e^W*t
+e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50o^U7n6PSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t<\K+W]dJ:N,uI=6KiH?sj]
+GB\4QrcA<bEcH)<DuOVhD/=!'C2.HrBP1phAS#C_@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu
+!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6ZQogJRBoKqk0qu6oWg!nKud*0c1ru(="ZN's1
+s0%#XP*K!HR\-=JU8=Vc<a8a.riQ7&o)J^&o=k4=s0goQr'L?LqaCHQs$lrWIn3.&8kM`L9MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52
+SXuOLUnsugWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qli6;]
+mdKW6nac8BoCV_Kp@e7Zq#C0iqYg<ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0[koCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG$ncn
+DKg\qqi:];#*=t1P*D2rqNh,Grfm>Es-*MIrfm>GoToHBo9T?A"dYF=P`q=1P5LI=P4ak'O8k7:
+O7&,,O8b7<O8k:ANq/8h\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFdkiq?sm-O--
+n*fc8nac8BoCW%Ts7ZHdr:p3cnbW.Yq=ss`rq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI#O(@6
+k2tdejSn1hio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd\uP*1rh
+O,o<\N/W[PM2@%DL5(D8s+:o8JUi9#IXQWlH[:!`G^"@TFoHIdF)l8?E,Y_n'l@c&CMITuBP;$j
+An>OaA7K(X@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U
+8,YpS7J0(D6hE_263$rorp&.VVP0ZRSXZ%9cLh&7*oXJVN6_H_g4Nd*CiDm:FEVqRH@:378l8AX
+KnP&0o)JZKrf@#<rK$l:s+fT"r'L?LqaCHQs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lH@Uiq[B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52SXuOLUnsugWiW>+Yd:^F
+\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qli6;]mdKW6nac8BoCV_Kp@e7Z
+q#C0iqYg<ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0[koCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG!e\e
+7S-3Jr_<;a!)<Gfr_N/_r(m>h!)NSjpe_)h:J^jaqGI2h"]8)m;,C*e:B"&e:B"&b:B+,f<WH.r
+<rQ/#<rH%q<rQ+u<;KVl<r,hb<r?#!<r?%n=>dV!]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)J
+ioB(\k3(sml0@X%mI'H3nF5u=o(2JFrq6<brqH?cr;#mZqt^'_rqHEcr:U']s7?3[s7--YrU9dS
+s6]gPs6B[MrTORNkND!ijlPS&j+$(IiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@
+S!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTJY&V>RaJ:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9
+rb`HfChmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j
+:Adid9`@]^9)_E\8GPdS7f,XI7/0.A6L-ondBf$cDIZRA:JOVY92Bc%ch@D%Z[c:M7siHWO?>*J
+2)m<I4[)(r6:4+"3'KMg8P;]Jo)JYgnQ,Zbi^*K/rBpHMs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U/>?kH??X[DRA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:\ENK90aPEhK%R[]k>Tq\?Z
+Vl?\tXfnt8['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U7ljiIPn*ol<
+o(2JFp%A%Pp\jmeq>^<iqu-HlrUg)?s-E\8~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0amoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGAhPI
+IuB`"be<th%DT`q_SjF5a2l?Dai_g!bQQ27bg"E3c32D;cHXW4cMYugd.YlbdK7hCd/M>jbmhn?
+aiDB>`59@+^V7Fqrk/3C!4MU/pU9M!k-tE#pUL14!P5i@])9)k]=bkm_8=.0a2lEHc-F\`daZh!
+f@em4h;7&IiT&tZk2tjkl0@U$m-X60n*olHncA@SrUp3as7cHdrV>jWr;$0`rqHEcr:U']s7?3[
+s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuYNe^W*tdaHOj
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPjV50o]
+TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-/
+FT6D&EcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0rVm/Yg""X#dEKl1qYqE(TsF^uVZ27'
+<g-HbR[p+FU8;I'<a8a0riQ:'Y4;Pk^%/o:^Z%QW6N':L7/fXT7fGpX8,u6\9)hP69MJ5V:Jakb
+;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F53StD^N
+Uo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9
+s7-Edo^qhLp@e7[q#C0iqY^6ir;HTdrdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0^loCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bG@+ci
+D01/_Q2H[ANs(T.PE_=1Q2[*LPlm>;Pa)'/"I,+6Pa)*2oToHBns99A"dYF=P`q=1P5LI;OoUR7
+Nqnb5OSt7<NpVo,OSb(?OH5M#O8G"?O-#G!O>"/V]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8M
+j5]4_k3)!nlKdg'mI'H3nF?MK!V>s^p&Facp\agbq<e%Vq>'gbp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPlN$5Ll2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf72B%eC;sqda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnj`YTqJ$LSt2C@
+S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'3h,s)T3$EH,r9
+DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j
+:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-o?n(l=)U]-khSXc+:_XIF&)s"GXN8+Aas'TA/D+@9B
+Fa&(VHW3[2;GU&AK`6Sns8J&VO8b1;O8P$t62X(J6i9@O7K5jV8,l*[8cD?^97KW09hnJ\:f1+h
+;cHdu='/U/>?kH@?X[DRAS#LfBkqO&DfB];FEVkRH@1-jJ:`E-L5CeHNK90aPa.T&R[ftATq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?PL
+#P7T[p%A%Pp\ssfq>^<hqu6NlrUg)?s-E\8~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bG="Va
+7n?6G:JFR^9E\'`9hnI_:\dfe;>sDh:BXKi:Jam_;?'Gm:]!ub;>jDm;$9]m;,C'e:B"&e:B"&b
+:B"#i:fmNpr)N_sr`9)#rDi_qr`/hprDi_qqGlubpf@Mt=',B'rDtY_]=bkm_8=.0a2lEHc-F\`
+daZh!f@em4h;7&IiT&tZk2tjkl0@U$m-X60n*olHncA@SrUp3as7cHdrV>jWr;$0`rqHEcr:U']
+s7?3[s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuYNe^W*t
+daHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPj
+V50o]TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS-/FT6D&EcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0/VS7Y?VsZs:eaYW:2Z?4nc.sb
+JmCi9KuZch.5!230Jl!X5sdn,3B/u^5!;L:9)qQRs8H$e<oQFC6N':L7/fXT7fGpX8,u6\9)hP6
+9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&:MN!OUOHPin
+Q^F53StD^NUo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6r
+lg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTdrdk*8s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eolKcso()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F`2AM
+KTE%Q]tV1n^;%M$_o0O6a2lBEb00>!rlt2_qp,8hp<ifd!n#BArm(Pg$I$]9a2Z*:_SO('rkABE
+qn;s:qmHC0rjDO0r3uX5pp^+0p:'Y'!4Vp:rji'?!4i*?s1'bn]Y2(r_SjF6aND]McHjndeC<($
+g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?MK!qZ'Vrq6<bs7cHdrV?<dqYU*br;$0`rqHEcr:U*^
+rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqaChqm5Gh;$c>g=k64rmq>)e^W*t
+df.X*d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HPj
+Unjc[TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAKnP)2Jq<oO07SG!I=-BfH?jaZ
+GBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#
+<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-oEs8C^)f%/3rbg#SPrtk@%ZN'ro
+s*0B\P?1eQT;/3YUK:H!=BGL)!N`Ems8K\5^:h5O^AkqJ^?%ZY6N':K7/o^U7f>jW8,u6\8c_RY
+r_7i::Jakb;H$Op<`W:)=^#'8?=.)K@Uit]B4u$qCi402EccGJG^4U`IXm!%KSG8=MN!RVOckro
+R$jG6StD^OUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?s
+m-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eojRLao()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F^S`p
+E-R"tr/Uf<"d"k0PE_=2Q2?mIPlR'DPQ$gFQ1UC@Qh$IAQN`\?Q'@Msrf[2ArfR8DqNCf<r/U`8
+rJpZ6r/go=qi:')!06W2!07#=s,d&;0=e[,]t_D#`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f=a
+kNM0qlg4!*mdKW6nc&(\oCV\Sp&Facp\agbq>0saqt^*dq>'gbp\smap&F[`oDS7[nc/+Wn,MeU
+mJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn1AhVR)EgtUT;g=b-Xf*0aUeC;sqrm><(cd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2C@
+S!o_3Q^3o%P`q8nOcYWbNfB!VMi*@JLkg_=KS+o/Jc:0QIsufoI!^0cH$FOWG'.nKF)l;@EH#i6
+DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTkop];)'lSt)==S%@SVru1.3J;iOgHI5i+CMua:F*DqT
+I!n[\;,9l>K`6Sms8S,[Nr"e:Nr"h7No`S)6N':K7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Op
+<`W:)=^#'8?=.)K@Uit]B4u$qCi402EccGJG^4U`IXm!%KSG8=MN!RVOckroR$jG6StD^OUo(&i
+X0&P/Z*UjH\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;HTerdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eoj[Rbo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F[AJb
+7nH<K:&@Tc9hnI_:]+&f;>sDe:]=2d;><ua;?'N";c6Ii:f1(d:]4&f:]!oe:\dcb:]=2h=8Z+p
+<W?)#='#6!r)Wesqc*MorDrntqc*Gmoi;)p<r5qu<rQ2"=>3ge]"G_k_8=.0a2lEHbg+P^daZdt
+f@em4h;-uHiSrnYjlYail0@U$m-X60n*olHncJFTo`"O`pAambq#1$bqYL*bqY^0bq#:$epAFU`
+o`"I\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+f%&:"
+e'e6CA^JcKcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$WMl_m
+VPL#_U7n9RT:VXFS=?":R$a5+Q'IStP*1rhO,o<\N/W[PM2@%DL4t;5K7\[RJ1lD$I=6KiH?sj]
+GB\4QFEDSEEcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0/n&!`;,U4b9hS8rN4J3Qn@aTa
+7RrER7"cpB1c[9I4?btr6UNgm4[(u"91qlKnGiGemT/F8r'L?LqaCHQs$lrWs%!,]r^m2a9`@b8
+:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/DGBeCZI=?]tK7nu7M2I7PO-,TiQ'du/
+S=Z@HUSOcbWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G&MDJ
+IuKi&bl59a^;.S%_o0O7aN2KGbOs'ZbP]Qac1oT\cN)>cdJVDodEp8>cMu,rbfe/L`l5m6_SO%e
+^AbeB^&PbB[f!Q5[/RB5['d=@[e@3*[f*]3\Fd9+\GWi9\,j(Krjhp;1VCE9^r"".`lQ9Fbg+P^
+dF6Urf@\g2gtgiFi8WeXjlYail07L"m-X60n*ol;o()DEo`"O`pAambq#:*dqXj[]qYg6cq#:$e
+pAFU`o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..joXZ*jSn0?io0mp!T2c5h#Z<crn;hSf[na+
+f%&:"e'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$
+WMl_mV50o^U7n9RT:VXFS=?":R$a5+Q'IStP*1rhO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#sI=6Ki
+H?pBQG^"@TF`__HEcQ/>E,TW3D/F*)CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=TV],
+=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_25mZ9!f@JBsc->5DrtbC'
+ZN's%Tmp++Q;pqSTq\<Z<``:'If?JOXfS\os80M#^Abn162X(J6i0:O7K5jU7fl4Q8cD<_92,=Z
+ISN[8:f1.i<)lt"=BSd2>[:ZC?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*
+S"6.DTqeE]W2co#YHY==[C3TU]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7)JioB(\k3(sml0I^&
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G$\Tg
+Cib#_Pl?^CNs1W-P*;)org!AHs-3SKp6,K@rK[#@rKm;F!1!GIs-NbO"-o+8PPp[COo:FCOnk1;
+O8P%9NW+t;O7n\5O84gcO#4G\]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=akNM0plKmm)
+mdKW6naZ2@oCV\Sp&Facp\agcq>:$\qtg0fq>'gbp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7
+klU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-AeUnaZXTqJ$LSt2C@S!o_3Q^3o%
+P`q8nOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXZ]nI!^0c(O:7LGBS+NFE;JCEH,r9DJj<.Chmg$
+C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^
+9)_E\8GPdS7f5^I7/0.A6L-oDUS4<PS=?":Z.JpR*U^IhN:-^tIpGN\Db!BAGBnO^9h\/TAVGeh
+JV&OCs8S,[OR\D3NrG+&62X(J6i0:O7K5jU7fl4Q8cD<_92,=ZISN[8:f1.i<)lt"=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"6.DTqeE]W2co#YHY==[C3TU
+]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7)JioB(\k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUp/@s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhB_V5op%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G!SJ`
+7n?6F:JLd]s%NJgr_NMiqbd>hp.kZbpegi`qGI8j#ZFVu;,C+e:f%$br_NDds%iGcr_NJh!)NJn
+r)WVno2b`gr`&hrrDrntqc*Dlp/_/o!EN5!<rQ2#=>[V%]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5f=akNM0plKmm)mdKW6naZ2@oCV\Sp&Facp\agcq>:$\qtg0fq>'gbp\smap&F[aoDJ1Z
+nc/+WmfMqEmJZAQlg!d7klU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=e
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-AeUnaZX
+TqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXZ]nI!^0c(O:7LGBS+N
+FE;JCEH,r9DJj<.Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-r:;(5=:9hS5kK!"&4oYHDl7Ri]Q5=d:U
+2EEQL5!MA"6o[1d5!_b591h`In,N;cmT/L:r'L?LqaCHQs$lrW!_>mSr^m2a9`@b8:/=\_;,^Cm
+<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2R=QO-,TjQC+)0SXuLJUSOfd
+WiN8*Yd1UC[^`l\]t_A"_o9X:aihoQcHstfeCE1'g"P6;hVd>Oj5]7`kNM0plg4!*mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhGPCh)p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'%YF
+I"dZ[ah>C%^VI\&`5K[:aN;TIbP]Tac2Z#dbPfWbc2#Z\ci;AcdJ_JpdEp8>cMu,rbfe/N`l5p7
+_SO%e^AY_A]`PjY]D8o5[K!W4ZN7G@rjMF-qmQL5q7-@3!4Md6s0r'<qmZX8ppg@7rjjnt]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCMVRp&Facp\agcq>:$Z
+qtp6fq>0mcp\smap&=U`oDJ1Znc/+Xn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3
+gtVh^%b]Ldf@JL&eC;sqdF$=erm$#<bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sB
+Yct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/
+JUi9#IXQWlI!^0cH$FOWG'.nKF)l;@EH#i6DJa4nChmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9
+>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-oAf@8?t
+dD4$&rtM6Crr8@jIoM\t=e)%WU8+Md='Si+Y5bU(Y3l8e^$rc8^Ze&^6N':L7/fXT7fGpX8H29]
+9)hP69MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCMds.EH?5FGBeF\I=?]uK8#&9M2R=Q
+OHPfmQC+,1SXuLKUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=a
+kNM0qlg4!*mdKZ8rpg*]o`"Lbp@n=\q#C0iqY^6ir;QZerdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhC%q>pp%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'%)$
+CN+NOOcGJ$NsCc/P*;,qPa2*2!gT"7pQGTAr0?o?rg3DG!1!GIs-NbO"-o+8PPp[COo:FCOnY%7
+O8P%8NW5%<O7SJ4O8Ft2O8+b"O#+D\^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6r
+lg4!*mdKW6nac8BoCW%Ts7ZKer:p9eqtfm\qtg6dqY:'arq?9_rq-6^r:9mXs7$$Vs6fpSrp9[N
+s6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jndEp5=c@=*_bKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1<R@'A.
+QBd`"PEM)kOH5H_NJrgRM2@%DL5(D8K7ec,J:N,uI=6KjH[:!`G^"@TF`__HEcQ/>E,TW3D/BDl
+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2b
+r_*,\r^m&Zq+(BQr'g6Gpd=[?lTkfKTUhUBR\\'rrVml:`.X5ns*9W17Vm!;F`hqRI!n[];GMq!
+Jq8Q,mJd0IrK-H.!0HG2r'L?Lr'^NQs$luXs%*/]s%<;aInWR2:/=\_;,U=k<)lt#=BSg3>[:ZC
+?t*VVAS5[jCMRd)E,fr@G'A1WH[U?nJqJc3Ll%%KNf]EfQ'Rf+S"6.DU84W`W2cr$YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7)JioB+]k3(smlKdg'mI'H4nc&([oCW%T!quB_rqQNh
+s8)Zjrqucoo_sFAQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'$)>
+6q0a?:]3ue9`Rrf:]=2e;>sDd:B45d;><ub;?'N";c6Lj:f1(d;#O/g:]!oe:\dcb:]4,h:\7]]
+<V'8j<W5ts<W#ns<Vobm<W?)"<Voeu<E<0"=8l5%<E<0"=#7J$^;%M$`5Td<b0/&Td*^:ke^rF+
+g=tH?hr*JRj5f@bkNV6rlg4!*mdKW6nac8BoCW%Ts7ZKer:p9eqtfm\qtg6dqY:'arq?9_rq-6^
+r:9mXs7$$Vs6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jn
+dEp5=c@=*_bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVPU)a
+US=HUTV%gISXc1<R@'A.QBd`"PEM)kOH5H_NJrgRM2@%DL5(D8K7ec,J:N,uI=6KjH[:!`G^"@T
+F`__HEcQ/>E,TW3D/BDlCMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTtPI-VmE2;Hn41e,'*kR:])^GKW9Q
+/1WV>2*X8i5XIju3BfW!91qiJ9'uZU<W6#!<Us2T62X(J6i9@O7K5jV8,l-[8cME_97KW09hnJ\
+:f1+h;cHat='/U/>?kH??XR>QA7]CeBkqL$DK'T:FEVkQH@('hJ:`E-L5:\EN/j!_PEhH$R[]k>
+TVA6YVl6VsXfnt7ZaR?R]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-<V7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^[0p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBIkF
+H[q'E[EZD!^;.V&_o9X9aN;TJbPfZbc25]_bl>racM>fdd.YlcdK@nDd*M^:s31kob/q]C`PfX0
+_#D%J^&G\A]`c![]=PTP[J731[/dT3ZN7G@rjM+$rj_I,n$rA-0"S^0^VRe*`Q-'BbK\>YdF-Op
+f%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9rpg*]o_nFap@n=Zq#:*eqX47XqYg6dq#0sepA=O_
+o`+O]o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..joOT)ro=%<"l\Cthr!;ih$Vrlg=k65f[na+ec+&)
+e'cXkd*L"_c-611EluMFaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"0XK/A$W2HPj
+V50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BgH?sj]
+GB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.!a&N*rDiu"
+<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAoKqk0"kM&IOc')5ru%`Fli3aSIoM\t
+=IPkXV5@6p<a&S-Xf\Y+m/R!srOr9HqRusEqnE'ElTtG8r^6QNr^HiVr^ZuZ!(m/^InNI/9heAY
+:f("e;c?Xr<``C+>$G6;?XI5N@qB4aBPD6uDJjE5F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8
+T:r!TV5L;mXKA\2Za@0M\[oGe^VRe*`Q-'AbKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-O0/
+mgJXTo()DDo_%nNp@nO\s7u]krVQQkrr)KgJcD#8J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^R-p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBI8$
+Ao)R;NKfE_O-#HcOckomQ'M64!gT"7pQPWArK[#@rg3DG!1!DHs-EnTQ'IStPQ$aCOoCODOnOt:
+Nqe\8Nr+h9NrG+/OT1CANrP1>OSOt4NpMfZ]"Gbl_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnY
+jlYail0@U$m-X60n*olHncA@SrUg6cp\4U\rqZKgmecnXrV?<brV-?cqt:!]s7?3[rpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,!TiDAj8\*BiS`YOhqn@g$JaCig=b03f@SU(rmV8'da?Ihcd'h\bl5e+
+b/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:I9Y-"h-X/`1uVl-DgUnjc[TqS-OSt;LB
+S!ob4R$X,(Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^3dH?jaZGBS+NFE;L%E=-Z'
+DJj<-Chmg$C&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j
+:Amod9`@]^9)_E]8GPdR7f5^I7/0.A6L-oASt)9lE5L`7ru07=Nj\n<a'M5PDbY=uH?jm19hS>X
+KnFr.K'`L;O8G%=NrY:<NrY:=O8b7,62X(K6i0:N7K5jV8,l*[8cD>392&#R9hnJ\:f1+h;cHdu
+='/U/>?kH@?X[DRAS#LfBkqO&DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPEhK%R[]k?Tq\?ZVl?\t
+Xfo"9['mHS]"G_k_8=.0a2lBGbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U$m-a?2$h3]Wo(2JF
+p%A%Pp\jmeq>^<iqu-HlrUg)?s-<V7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^.!p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBH5>
+6Us[?9Mk^^!)<Gfs%iVjqbd>hpJ:fcq,-o`qbdAk#ZFW!;,C+e:f.'br_NDd!)NDcr_NGgs%iYi
+nlGHan5fKfqH!Sqqc*GmlrGaM]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?MK!V>s^o`Fj]p\agcq>C*Wqtp6gq>0mbp]'sap&F[aoDS7Znc/+Xn,MhUmJcJPli68L
+klU)3kPjTEjlHF$s5F4@i8EMMhYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\Yrl]?)aiMQD`l5p8
+_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSt2@?R[KP1Q^3o%
+P`q8nOcYWbNfB!UMM[1GLPCP;KS+o/JUi9#IXQWlH[C'bH$FOWG'.nKF)q8"$?0p$DJa3+CMR[!
+rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhrD!8br_*,\
+r^m)[q+(?Pr'g6Gpd=[?lTlLe9h[rCDN;I#s5Ktr9grUB89l^92```V5X.V'r]'p@"A)6Y84i1J
+q,IDqr`/MilTtG8r^6QNr^HiVr^ZuZ!(m/^InNI/9heAY:f("e;c?Xr<``C+>$G6;?XI5N@qB4a
+BPD6uDJjE5F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8T:r!TV5L;mXKA\2Za@0M\[oGe^VRe*
+`Q-'AbKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-O0/mgJXTo()DDo_%nNp@nO\s7u]krVQQk
+rr)KgJcD#8J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBI_?
+G(,13W62ig^VI_'`5Ta:aN;TJrlbGgbfot-rQP;dqp,#`rm:Adr6kVl!71Yis32,!bK7fE`PfX0
+^q[Ut]tCtiqn3'D]=\'RqR-+,s0_m6r3HC1qmPn$rj_U0!4Mm9osb"2r4"Ai]Y2(q_Sa@4aN;WL
+cHjkbe'ut#f\5'7h;7)JioB+]k3(sml0@X%mI'H3nF?MK!qZ'Vrq-?dp\4U\rqZNhlhgSUrV?<b
+rqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj!NdEiS`YOhqm2Fgt^Z<g=b-2
+f@SU(eC;srda?Ihcd'h\bfe2Pao9A!a2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*EZ*:I9Y-"h-
+X/`.tVl-DgUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H&Isufo
+I!^0cH$OXYGBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)
+=',B%s&K(urDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTk^&P)G'EIf03`YI)j[
+YQ'#MQ;h"VTr"N^<`iC+=0AX-XKUsirOr-Cs1eKGrkJBFrP.bdr'L?LqaCHQs$lrWs%!,]r^m2a
+9`@b8:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/DG'A4XI!pKpK7nu7M2I7OO-,Ti
+Q'[l-S=Z@HUSOcbWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!n
+lKdg(mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFAQ2c@~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq0gooCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBI.u
+ASZ:3KT_@Vrf@;GP*;,pQ2?mIPlR'CPQ-mGQ1UC@Qgg:FQ^3o%P`q=1P5LI@P5g[<P5:46O8P%;
+NW5%9O7SJ1O8b79O84h(O"J#X^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oekiq?sm-O--
+n*fc9rpg-^o^r.U!quB_r:p9erVGjWqtg9eqY:'arq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI
+!pJh1roO7CjSn0dio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@s+aDT&<`Pod5
+_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd`"
+PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%^E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDbqb$iZ
+rCH`SrC6]RoL/IAoKqk0"e0URDJEqbrsd\@NMQT4m9N2!85=8Ord+rF9hSAYKnFu0K^8[6O91K)
+OSk1=OSk1<OR>F46N':K7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Op<`W:)=^#'8?=.)K@Uit]
+B4u$qCi402EccGIGBnL^I=Hd"KSG8=MN!OUOckroQ^F84StD^OUo(&hWi`G.Z*UgG\@K5a^;%M$
+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()hP"n_K\p@e7Zp]C9fqY^6i
+r;HTdrdk*7s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq0gooCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBH2=
+6q'U:92J;Ur_3Gh:J^sdqbd>hpJ:fcpegi`qbdAk!`Mupr)!Jk:]4&f:]!le:\dca:]4,i:]=,V
+<qTJa<rH%o<rQ+s<;T\g<WH.s<\:tt^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oekiq?s
+m-O--n*fc9rpg-^o^r.U!quB_r:p9erVGjWqtg9eqY:'arq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N
+!:'OI!pJh1roO7CjSn0dio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@s+aDT&<
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUS=HUTV%gHS=?":R@'A.
+QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%^E,TW3D/B2e
+!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDb
+qb$iZrCH`SrC6]RoL/IAoKqk0!)<G\+@/?Us6R+<:dnL7:n0$d2_R$M5X7Y(3B/u^4\87;8PJIM
+oMtH_mQpb;rBpHMs$crWrC?lY!(m/^!D?,c9n#i5:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!
+DJsN8FEMbNH$XjdIt30)L51VCN/`m\P*D5uR%'V;T:r$UVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'B
+bK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o)J:bo_%nNp@nO\!r;]hr;6KkrVcBf
+JcD#8J,~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq14%oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ"H
+EdNFuS[?VT^VRe)`5Ta:ai_g(bkoT]bQ,occM5`ad.brcdf7Yoci23'c-4DTaiDE?`59@+^V7Fq
+]Xthhr4W-C!5&0?rO)X3rjDR1s0_m6r3HF2[J[Jd\+$mU]Y;.s_SjF6aND]NcHstfeCE1'g"P6;
+hV[8Mj5]4_k3)!nlKdg'mf)YZnF?)?oCV\Sp&Facp\jmdq>L0Rqu$<hq>0mcp\smap&F[`oDS7[
+nc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf7)<$eC;sqda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-DgUnjc[
+TqS-NSt2C@S!ob4R$X,(Q'@JqP)t`cNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXG6N/4
+FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-o@Mhck4I>n1*(pplbs0r#W<0pQfR\?OQ
+Vc[)&>$%l/Y,ppgrOr-CrP/<FrP/?GqnMVdr'L?LqaCHQs$lrW!_>mSr^qZ59MJ5V:/=\_;,^Cm
+<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOcc
+WiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKTJnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAQ2c@~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq1+"oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ"6
+@q]b$IZ'JPOH>TfPEV5rqj.8I!0m2@!0mDHoToKCn<O9FQBd`"PEZ!/r/pr@rfQl:pQ#'1p5]'3
+o8rj1rfH]3s,QT0.(m:/_8=.0a2lEHc-F\`e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-alA#4V0R
+o(2MGrq6<bs7cKerqZNhkkk;SrV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@D
+s5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuVMe^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0X/`2!W2HPjV50o^U7n9RSt;LCS"#k7R$a5+Q'IStP*1of
+O,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?ja[GBX46F`__HErL%^E,TW3D/B2e!GZ?JBE;aX
+rac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDbqb$iZrCH`S
+rC6]RoL/IAoKqk0+`VC8C2.G^s5B$"P5g^F?:Jg'9m(]-I!eX_92\K<JqAR=s8S/ROSt7=OT(=<
+ORPR66N':K7/o^U7f>gY84cDP8q0K-9heAX:Jakb;c?Xq<`W=*=^,-:?=.)L@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&T
+d*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*^GLnac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*7
+s*t~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq0dnoCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ!n
+779U89MA7]:&drg:]=2f;>sDc:B45d;><ub;?'Mp;c<Nj!DlSj:B"&d:B+,c:B"&e:]O;h:?tsR
+<V'8h<Vfbq<Vobn<Ua$;]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mf)YZ
+nF?)?oCV\Sp&Facp\jmdq>L0Rqu$<hq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrI
+kPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf7)<$eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-DgUnjc[TqS-NSt2C@S!ob4R$X,(Q'@Jq
+P)t`cNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXG6N/4FEDSErc&*\Df0H0D#S2NC2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\
+8GPdS7f5^I7/0.A6L-r;6m"`]67q]=J5\s4buV&!.lT1?4?l,!76*=f5!;J08kA7Is&AVjnlG6G
+r'L?LqaCHQs$lrW!_>mSr^qZ59MJ5V:/=\_;,^Cm<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/D
+GBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHste
+eCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAQ2c@~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjjpnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'%P>
+G'\n+V9?Wh_8=+.`l?*Ab0%p*bkoT^bl>recM5``d.brcdf7Yoci23!c-4DTb/_N@`59@+^V9]\
+s189Dr4W-Cs1A6@!kZ+Pr3ZR4Zi.62[J702[C#k<!OT94[cFps\G3Q*\2(_2^VRe*`Q-'BbK\>Y
+dF-Oof%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"O`pAamcq#:*fqW@\QqYg6dq#:$e
+pAFU`o`"I\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+
+f%&:"e'e6CEmW.XcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$
+WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd`"PEM&iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6Ki
+H?sj]rc\iqF`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*
+r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'pTQoL/IAog7n/*e/TaUmqCl]sn$Ls&<6f
+<a(udUnjqk=]\g/Y-"k.l2Uarr4`$B!5A?F!5A<EnNm(>rBpKNr^HiVr^ZuZs%35_s%@f79heAY
+:f("e;c?Xq<``C+>$G6;?=.)L@q9.`BPD6tD/O<4F*)PKG^=^bIXm!%KnbD?Mi<[WP*;/sR$jG7
+StMdQV5L8lX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS5Vd*^=le^rI,g>(N@i8EVTj5oFdkiq?tm-O--
+n*^GLnac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjFdnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'%%u
+A86+0K9MAqO9^o2PE_>uQBhH8!gT"7pQPWArg!)@rg3DG!1!;E"-o+8PQ$aCOo1CBOnt4@PPgRE
+PE#9rpQ,<6rf@&=r/]TonW,H<^;%M$`5Td<b0/&TcdC1jeCN7)g=tH>hr*JQj5f=akNM0qlg4!*
+mdKW6nac8BoCW%Ts7ZKerV6BfrVG[Rr;-BfqY:'arq?9_s7H<^rUU!Ys7$!Us6]mSrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;U"kM5ReC2kFd;mU[cHa\YbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1Q^3o%
+P`q8mOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmsG'.nKF)l8?E,]`5DJa4hCB80a
+rb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\
+8c;3V8,PjS7J'"C6hNe162t[%=a>)Jrf@lpORPY2Db*QEG^=ac:/+D[9ne1NJa*46O7eS7O8G"=
+O8=t.62X(J6i9@O7K5jV8,l-[8cME_97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>QA7]CeBkqL$
+DK'T:FEMePH@('hJ:W?,L5:\EN/is^PEhH$R@Bb=TV80XVl6VrXfnt7ZaI6O]"G_k^r"".`lQ9F
+bg"G[dF6Uqf@\d1gtgiFi8WeWjlYail07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcEg
+JcCu7J,~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjCcnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'$);
+6:FF992PU^!_uNer_WJhr_W>bs%rMgpe^ibs&',$;Gg:f;,L.crD*>fqbI/eq+gobr)!Dhr([8g
+<U*WX<TdEX<UNmC]Y;.s_SjF6aND]NcHjndeC<($g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?
+oCMVRp&Facp\jmdq>L0Pqu$<hq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrIkPjWD
+jT+B@irS/urnn1AhVR)EgtUT;g=b-Xf*0aUeC;sqrm>c5cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(Q'@JqOcYWb
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$K=4%X)u:FE;JBEH#l8DJj<-rbDOLC&VcHB4h-S
+!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m&ZqFCHQ
+r'g6Gpd=^@kWp4U,r@B.;b'O*<M1Wj3&!3P5=._+3B0#_4\87;8Ep0R<:X&^<q/KR6N':L7/fXT
+7fGpX8H29]9)hP59MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCMds.EH?5EGBeF\I=?]t
+K8#&9M2R=QO-5]lQC+)0SXuLJUnsufWiN8*Yd1UC[^`o]]t_A"_o9X:aihoQcHstfeCE1'g"P6;
+hVd>Oj5]7`kNM0plg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%eD
+EdN:pS$:,P_8F1/`lQ6Cb0/!,bkoT]bQ,oecM5``d.Ylcdf7Yoci23!c-4DTb/hTA`59@+^V9]\
+s1A<DrOr6Ds1A6@"hVF\]sP0D[K!W4Zi.<.[K*`7[/[H5['fV9n$`;*rO;d9pp]t,/A8g6_Sa@4
+aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@X%mI'H3nF?MK!V>s_p&Facp\jmdq>L0Nqu$<h
+q>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^
+IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8
+Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(Q'7AoOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&
+IsufoI!^0c!I8qhG7Je=FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".
+>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6KpcTF.o"<D3L1`
+UoK)LPuLnVUSO]`>$4p2<j&O+kl:Rork@X3o0N:@r^6QNs$coVr^ZuZ!(m/^HqR.,9heAY:f("e
+;c?Xr<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8T:r!T
+V5L;mXKA\1Za@0M\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBum-G&GmdKZ8
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%e3
+@VBS!I#=2NOHG]iPl6mIQN!-LPkL:@Pl?s>QN!6GQ2m3EQ33D:P`u*0r/po?rfR)@!0d>Drfd>@
+p5\d+s,[5Arf6]5muRO1oT8[*/A8g6_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@X%
+mI'H3nF?MK!V>s_p&Facp\jmdq>L0Nqu$<hq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7
+l2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(
+Q'7AoOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c!I8qhG7Je=FEDSEEH,r:Df0H0D#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^
+9)_E]8GPdR7f5^I7/0.B6KpcT>^1<k;K[$[K8<r-Db*WHH$Xjd:/+DZ:5+:Nkl:RAk)f1#r'LBM
+qaCHQr^QlWs%!,]r^qQ29MA/T:/=\_;,U=k<*!%$=BSg3>[:]D@:E_XAS5[jCM[m,E,fr@G'A4X
+I!pKpJqJc3Ll%(MO-#NgQ'[l,S"61FU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjnce'ut#
+f\5'7h;7)JioB+]k3(smlKdg'$170LnF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%dl
+6UF758k`#T:/4Ua;#=,h;"dZe:f1(drDE;cqbdAk#ZFW!;,C+e:f%$br_NDds%iGcr_NGgs%iPf
+r_NPokuR7QmoBHh<qo\a<\1r!^r"".`lQ9Fbg+P]dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60
+n*olHncA@Srq6<bs7cKerqZNhjSSlOrV?<brqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH
+!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g4%`-f@SU)e^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPjV50o^U7n6PSt;LCS"#k7R$a5+Q'IPr
+P*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH3&;9rc\iqF`__HEcH)<E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZ
+r^ciTr'pTQoL/IAog7n/)_a''0-WVCdn*@f/NGRC5!MA$76*=f5!DP18a-3P<:Eo^<qAWT6N0@L
+7/o^T7fGpX8,u6\8pj9*9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^
+I=Hd!K8#&9M2[FTOHPfmQ^F52SY)UMUnsugWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcdC.heCN7(
+g=k?<hVd>Oj5f=akNM0qlg3sEmI'H4naZ2@oCW%T!quB_rqQNhs8)Zjrqu`np&9OBPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^R-p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ"C
+E-?S^OJU%6_8F40`lH0Bb00b-qoeo]!6tMgps8iapX/rf"4>KBci22uc-4DSaN)9=`59@+^](nK
+]XthhrOr3Cs1A9A!P?#C^&>>8[K!W4Zi7?0[JmT7[J[E3[I^in\,Wu5\,Wu;\,Efk^;%M$`5Td<
+b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6rlg4!*mdKW6nac8Bo^r.U!quB_r:p<frVGONr;-Bf
+qY:'as7Z?_s7H?_r:9mXs7$$Vs6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:
+g"=p.f%&=#eC2jndEp5=c>LnNbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYck43
+XfSS'Wi;qpVl$;dUnXQVTV%gISXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`GlDmsG'.nKF)l8?E,TZ4DJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*
+=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[ic9D_?\8cD9V8,PjS7J'"C6hNe15o>r(Jq.crJcCOh
+QrI.YUSOfa>$+g1<j&Ods80J0^?<9)62X(J6i0:O7K5jU8,l*[8cD<_92,=ZHqmI6:f1+h<)lt"
+='8[0>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-jJ:`H/LP^nINK93bPa.T&S"-(BTq\?[Vl?\t
+Y->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4h;-uHiSrnYjlYail0@U$m-a?2nF?MK#4qK[
+p%J+RrV6Egs8)Zjrqucoo_sFAPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^I*p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ"5
+?t<tkG(Ys>OckolPa.L1PlR'BP5pjHQ1C7?QhcpIQ1pUEPld26PQ$aDOo1C@Oo(:APPp[BP5pR?
+NV8D)O8b71O6r#/O84n6NrY4=O"nA`_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tjkl0@U$
+m-X60n*ol<o(2MGrq-?dp\4U\s7uWiiqrZMrV?<brqHHdqt:!]s7?0Zs7--YrpTmTs6]gPs6K^M
+rojLJkNDj,#Nb%-j5].YiVqa9hqn@g!SlH/g()fgf@SU(e^W*tda?Ihci24-c-4ASb/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc7G7Je=FEDSEEH,r9Df0H0D#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^
+9)_E]8GPdR7f5^I7/0.B6KpcQEE?RU?>Es+Ao)EW9Qk],IXOsc92SH<KBE42O62Pt62X(J6i0:O
+7K5jU8,l*[8cD<_92,=ZHqmI6:f1+h<)lt"='8[0>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-j
+J:`H/LP^nINK93bPa.T&S"-(BTq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4
+h;-uHiSrnYjlYail0@U$m-a?2nF?MK#4qK[p%J+RrV6Egs8)Zjrqucoo_sFAPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ!q
+5sn%27nZWQ:/=\^;#=,h;"dZe:f1(dr_`>br)*Jl"B/2r;,I6h!DlSj:B"&d:&n)c:B"&d;#a>i
+:Amrg:?>OC<Ua&a<VKMo<W,rQ^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6rlg4!*
+mdKW6nac8Bo^r.U!quB_r:p<frVGONr;-BfqY:'as7Z?_s7H?_r:9mXs7$$Vs6fpSrp9[Ns6BUJ
+!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jndEp5=c>LnNbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYck43XfSS'Wi;qpVl$;dUnXQVTV%gISXc1=R[KP1Q^3o$
+PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmsG'.nKF)l8?E,TZ4DJa4hCB80a
+rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe15o;=0.4RPC-Bp5C3\`HV5X@b+3B/u^5"SB/s8,d_<<6-#r)WMWr'L?L
+qaCHQs$lrWs%!,]r^m2a9`@b6:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/CG'A4X
+I!pKpJqSl6M2I7OO-,TiQ'[l-S=Z@HU84ZaWN*&&Yd(OA[^WfZ]Y;.s_SjF6aND]McHjndeC<($
+g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&(`oCV_Kp@e7Zq#C0iqY^6ir;QZerdk*6s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+DfL&OMjpoo_Sa:0`lH0Bb00b-qoer^s3:Pgq9Sucp<iie"4>KBci22uc-4DTaN)<=`59@+^](nK
+]Xtegr4W-Cs1A6@!5&-Aqm6I5['d=?[/73.[/@?.ZiIN*[e$s.[f!T7[f*Z8[f*Z8[f!W7\1t_4
+_8=.0a2lEHbg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2JFrq6<b!;HEds7uWi
+i;<HKrV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g
+$JaCig=b03f@SU(rmZDGda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9H
+Z*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+OFE@k2EcH)<Df9N2D/B2e#&7jcBP1sirac+@A,]pB@:3JM?X@&E
+r`oJ-!*]A)s&f;&r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAoKqh/(4q!R
+D/3luA6W9.U8Fcd=B\j.>ZS#0jo>7ls1[X1pd+gErBpKNr^HiVrC;<-8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U.>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D6!R@B_<TV8-V
+VPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ>Ufl0/iGlg4$,n*fc9
+o()DDo_%nNp@nO\!r;]hr;6KkrVcBfJcCu7J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+?=IP_F*rh0OHG]hPQ$gFQ2d'MPE_=.PQ-mHQ1L=@QgU1>Pld26PQ$aDOo1C?Oo1@BPPgU@PPgC=
+NW5%=NVSV-O8k=2O7SG5O8P(>O8Y.?O8b4AO,j't0ttE=_SjF6aND]McHjndeC<($g"P39h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCMVRp&F^cp\agdq>L0Jqu$<hq>9sdp\smap&=U`oDS7[nc/+W
+n,MhUmJcJPlN$5KklU)3kPjTEjlHF$s5F%;rnmh7hYu=<gtUQ:g"G$0f@JLOe:,lpdF$=ecHa\Z
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$L
+St2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.qLF:*)0
+EH,r9Df0H0D#S2SC2%?pB4kiUAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;fbq;ZBVm
+;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.A6L$iP?X@)H?<gK.9hohVI!g?::/+AY:5+>^s8%f=
+OSD->6N':L7/fXT7f>i+84cBF8kVfN9heAY:f("e;c?Xq<``C+=^,-:?=.)L@Us%^BPD3sD/O93
+EccGJG^=^bIXm!%KSG8=MN!RVOckroR$jG6StMdPUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<b0/&T
+d*^:ke^i@*g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8BoCV_Kp@e7Zp]C9fqY^6ir;HTdrdk*6
+s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+5smt.84ZEM:/4S];#=,h:]aEh;#3uc:]OAc;#4&g;ZK_n;#sKhrD*>fqb@,eq+gobqb[;gr(d5e
+r_E8i"'&B%<UWuT<V'5m<E</t<W?)"<W,qu<Vf`N^;%M$`5Td<b0/#ScdC1jeCN7)g=tE=hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%Ts7QHer:p<frVGILr;-BfqtU0brq?9_rq-6^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRq:gY1B7g"=p.f%'cLIac`mdEp4bcHXVX
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6p@Yck43XfSS'Wi;qpVl$;dUS=HUTV%gI
+SXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`heJ$?L6-
+EH#i7DJj<-rbD^QBkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDW_os&&_k
+s%iYir([/ar_*,\r^m)[q+(?Pr'g6Gpd=[?l9Q18.6g'_4uG,O1cmrf6:Epq3&j)c8PA1FqGcc\
+!EN5"<qnuY6N':L7/fXT7f>i+84cBF8kVfN9heAY:f("e;c?Xq<``C+=^,-:?=.)L@Us%^BPD3s
+D/O93EccGJG^=^bIXm!%KSG8=MN!RVOckroR$jG6StMdPUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<
+b0/&Td*^:ke^i@*g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8BoCV_Kp@e7Zp]C9fqY^6ir;HTd
+rdk*6s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+CN"?AKTW(G_SX40`Q-'Ab5TWbbQ#`abP]Qac2Q#`ci)5adJ_JqdEp7drlu5&bfn8Pa2Z'9_SO%&
+^:h4m]=Y_grOr3C!5&3@!5&'?!4DX0!jf8@oX"J&!4D[1!4DF,q6p@4o!\V-p9uQe^r"".`lQ9F
+bg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^
+rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<
+g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9
+Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)
+J:E%JS:#[0H?jaZGBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".
+>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6L$i:D>n;]BP(gX
+Sti*ZVH[5+?<UF5jT#4ms1J<Ek.gaYr'LBMqaCEPs$luXs%!,]r_!2`IS<I1:/=\_;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJV/Z2Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#
+YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"f\,!6h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQ
+o`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+>[V)VE-?kpOHG_)PQ-mHQ2[$CP5pjHQ1L=@QgL(@Q'@Jrrf[2ArK@)@r/q&Dr0$l>!0-c4qi1B2
+plGH:n;mC,!0?]4!0@)?qN!/A^r"".`lQ9Fbg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60
+n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[M
+rTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E%DG^OjaH?jaZGBS-.F9Q`+EH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.A6L$iM?X6oA>$>'&GBnLaInrg6;c6>DjT#"9k)fF*r'LBMqaCEPs$luX
+s%!,]r_!2`IS<I1:/=\_;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJV/Z2
+Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"f\,!6h;7&I
+iT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq0ssoCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+6pa7/7n?9K:/4S]qbd8fpJ:<Uqb[>kr_iepr)!Jk:]4&f:]!oe:\mic:\mlf:]*ue:]*ue<Vohn
+<Uj,V<V]Yq<V]\m<<6-#p/W]Y^r"".`lQ9Fbg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60
+n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[M
+rTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E$36[X6,H?jaZGBS-.F9Q`+EH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.A6L$i<5X.F24q0Y35!VA#6od=g5<_8&jT#!SoMtliq,IJs<EAr^r'LBM
+qaCEPs$luXs%!,]r_!2`IS<I1:/=\_;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(V
+H[U?nJV/Z2Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"
+f\,!6h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eol'Koo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+DK0lLMOCTj_Sa=2a2uKHbKKk,rlb;brltGfps8ocp!Nce"4>KBci23!c-4DTb/hT@`59@+^V9]\
+"2)7Y]`#PC]`5VC\cKFUpq?^7s0_^1rNcO1Zi%-+Zh:[*[Ht=&[C5n?!k,MFpU;uf\$rf\_8=.0
+a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X60n*ol<o(2MGrq-?dp\4X]rqZQip\XR[
+o_\U`rV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro8IeiSi_Qhqm5G
+h;$c>g=k64f[na+e^W*te'cXkd*L"_c-4ASb/qcHaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9H
+ZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PM2@%DL5#nd
+KS+o/JUmb"rgXRIH?sj]GB\4QF`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2
+r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAoKqh/&Sbuj
+AnYmmAu2G0>?P'5=g"mes8Te4]`,VD^?<62^AU@q6N':K7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb
+;H$Lo<`W:)=^#'8?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&9M2[FTOHPfmQ^F52SXuOL
+UnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>Oj5f=akNM0plg4!*mdKW6
+nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eok3pgo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+?=@D]Ed`_.Oco^-qipl>rfmDIns99AmZms?Pa%C2P5LI?P5LI?OoU^EP4t1<NVJJ.NVeb3O8k=+
+Nrb9%q2kT:plGN;NrG(n^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>UfkiqBum-O--n*fc9
+o()DEo`"Lbp@n=[q#:*gqY0mYr:KmbqYg6dq#:$epAFU`o`"I\o)J7[nGVhUmJuYQliQM<lMg&J
+kQ'fFk5XNCjSn1gio/kSi8<DJh;-l@gY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1=R@'A.QBd`"
+PEM)kOH5H_NJrgSMM[1GLPCNiKnP)2Jq8IHp\Ff5&UShMH$FOWG'.qLFE;JBEH#jqD@gZ$CMR["
+BkV0mB4b^dA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]
+rCQuZq+(?Pr'g6Gpd=[?l9YGSs&fM,=]e[PJ,W1G9iFlAK]E+,O6;T)O8VBB6N':K7/o^U7f>jW
+8,u6\8c_RYr_7l;:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&9
+M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>O
+j5f=akNM0plg4!*mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eok3pgo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+5smt.8OuKM:Jgpcr_W8`nkf0[!)ieps&/em!DlSj:B"&d:B+,c:B"&d;#a>i:Amuc:AIoh<qB>d
+<om<^<)r`pr`&ksqGoFQ<`W58_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X60
+n*ol<o(2MGrq-?dp\4X]rqZQip\XR[o_\U`rV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:
+rosIH!9a@Ds5a7Aro8IeiSi_Qhqm5Gh;$c>g=k64f[na+e^W*te'cXkd*L"_c-4ASb/qcHaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VXFS=?"9R$a5+
+Q'IStP*1rhO,o<\N/W[PM2@%DL5$"gKS+o/JUiiEPQ!o]H[:!`G^"@TF`heJF)l8?E,Y_n&8c6!
+CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hE_15m'>85!Am-$9LUE3B9&Y5<_\2j8T*Zpf-odrD`JjrB^?JrBpHM
+s$crWrC?lY!(m/^!D?,c9n,o6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPD6uDJsK6F*)SLH$Xjd
+It3-'KnbD?N/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-
+g>(N@i8EVTjQ5Oekiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpj[knF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EGflDK9;tAb/D6<a2n8&rQ,&^rlb;brltGfq9T#do[3]e"4>KBci),tc-4DSaN)9<_ns7*^](nL
+]Xteg]`,VC]E#SB\cBA;^&PbEZh^s2Za@*GZh^p(Zh:[*[Hb3p[fEl1[k#50_SjF6aN;WLcHjnd
+e'ut#f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmdq>U6cqsXIUqu$<iq>0mc
+p\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn1AhVR)EgtUT;g=b-X
+f59*heC;sqda?Ihcd'h\bfe2PaiMQDa2Z*;`5BI/_8*h#^:h1l]=GJ^\$i`Q['R*EZ*:I9Y-"h-
+X/`2!Vl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5qu?Vb#^^lD
+H$FOWG'3e+"`n^(EH#jqD@gZ$CMR["BkV0mAnGUcA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#
+s&K(ur_rhps&&\js%iYir([/ar_*,\r^m)[q+(?Pr'g6Gpd=^@kX#5_$YX*]@:!2B=Bo!1Y2TB]
+]tF6UrkA-As1\-?s1\M!r'L?Lr'^NQs$lrW!_>mSr^qQ29MJ5V:/=\_;,^Cm<E<.&=]ns6>[CcF
+@:EbYAnPdlCM[m,EH6/DG'A4XI!pKpJqSl6M2I7OO-#NhQ'[l,S=Z@HU84ZaWN*&%Yd(OA[^WfY
+]Y2(r_SjF6aN;WLcHjnde'ut#f\5*8h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUp/@s-*J5~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpj[knF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EF33hDfp\mQB@>oP*>m0plkW?r0@>Lp6P]Em[!m<!gJn4rf[5Br0$r>rfR8Fqi^`<s-!A?r/LN2
+q2P93q2bQ;kE#A!!0?i8/&/p;`5Td<aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6
+nc&([oCW%Ts7QHerV6BfrqcEen,2kUr;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;UF4SmkeC2jodF$=ecHa\YbKJ&MaN2EB`l5p8
+_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkg_>KnP*No_%tRq>GODH[:!`G^"@TFoHIdF)l8?E,Y_n&8c6!CMITu
+BP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe05n-q!=&`*r;,9q\;c-8CiW&q=s,d)<k`Gh*s$?QLrBpKNr^HiVrC6o[
+8P/nRHqR.-9hnGZ:f("f;cHat<`iL->?kE>?XR;OA7]@cBPM=!DJsN8FEMbNH$XjdIt3-(L51VC
+N/`m[P*D5uR$sP:T:r!TVPgDnXKA_3Za@0M\[oGe^VRe*`Q-'AbKS8XdF-Lnf%8R.gYCWAi8EVT
+jQ5OekiqBum-FlBmdKZ8rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EC3,`7Rp-I;,C+e;#X;l;"IKT;#*ug;Z9Sp;Z0Gn:f%!ar_NGes%iGcr_NAe!)NMfr_N>b!`N&t
+q,RDpnQ#Hej&PhS!*/_n/&/p;`5Td<aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6
+nc&([oCW%Ts7QHerV6BfrqcEen,2kUr;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;UF4SmkeC2jodF$=ecHa\YbKJ&MaN2EB`l5p8
+_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkg_>KnP)=O,oBbPPmiSH[:!`G^"@TFoHIdF)l8?E,Y_n&8c6!CMITu
+BP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe05mBG53&s#]3W:u?5!;&#iW&pXpf-ufqc*>j"&r8d62X(J6i9@O7K5jU
+7fl4Q8cD>092&&S:/4S]:f1.i<)lt"=BSd2>[1TB?t!MTAS,RgC27X'DfKf>F`qtSH@1-jJ:`H/
+LP^nINK90aPa.T&R[ftATq\?[Vl?\tXg#(:['mHS]"G_k_8=.0a2lBGbg+P^daQ^sf@\g3gtgiF
+i8WeXjlYail0@U$lic_Dn*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EGTW=I#FAnc,7K>aN2NGao9?]b5TT`bl5ldcM5`bd.>Wgda?Ihcd2U9'[=kGbK.`C`5BI.^q[Us
+]tCth]Y+6Wrk/6Brji6E]Y2"kr4W*B!5837r3ZI0pTj\&os=_,p9jt1rjMj7!OfE7[f<f:[f3`>
+[^W]R\$l1C34?<3_Sa@4aN;WKc-F\`e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MG
+p%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D
+!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.X&d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rh
+O,o<\N/W[OM26qAL5#I'qjd\4"aP?:GBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4baeARo=]raGn:
+@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A
+6Kg`8@gHFH>@1cB=]_carrKgGq7ZgBpqQdAp:pU@qa19LqaCEPs$luXs%*/]s%<;aIS<I1:/=\_
+;,U=k<)lt#=BSg3>[:ZC?t*SUAS,UiC27[(DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa.W(S"-(B
+TqeE\Vl?`!Y->1;['mKT]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnYk2tjkl0@U$mI'H3
+$h3]Wo(2JFp%A%Pp\jmeq>^<hqu6NmrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhDYNkup%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EF!!aCNFlYQB@;mr0.,Crfd5D!1!MKs-NGFrg3&=s-3YMPEZ!/r/pr@qN:Q9rf[>Fr0.)B!0-r9
+qi1H2q2P93q2bN:oT'!6rf@)>!KW9>O8k:AO8b4EO-#E`OH9:#3000:_Sa@4aN;WKc-F\`e'uq"
+f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEc
+r:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)
+e^W*tdf.X.d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#
+W2HPjV50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL5#3io^qhNq"af3s*=io
+G^"@TFoHIdF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#
+<W?%t;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_/62sjh;G^+f<)QOdL#E"2O8Y1;
+O8+h:O7\P5O8D9C6i0:N7K5jV8,l-[8cME_97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@d
+BkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D6!R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg^VRe*
+`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXTo()DDo_%nNp@nO\s7u]kr;6Kk
+rr)KgJcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhCA7Gqp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EBurZ7S$$DrD<Jjs%r\ipJ:EXpe_#hr_iepr)!Jk:]4&f:]*ue:\mic:\mof:]4&f:\RTb<E/rr
+q,RDpnQ#KfmSs6fr`/tt!EE+t<W?)"<W6#&<E<+"<`T#t3)s"p_Sa@4aN;WKc-F\`e'uq"f\,!6
+h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEcr:U*^
+s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*t
+df.X.d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#W2HPj
+V50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL4tSGNfT6_Od#Z0s*=ioG^"@T
+FoHIdF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t
+;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_/5m9;23B0#^r]U?G8`9XK<VKJf<W,ns
+;u]hn<W5tp6N0@L7/fXT7fGpX8H29]9)hP59MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmn
+CMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQ'du/S=Z@HUSOcbWN3/(Yd(OA[^`l[]Y;.s_SjF6
+aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!nlKdg(mdKTPnF?)?oCMVIp%J+RrV6Egs8)Zjrquco
+o_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f;H%M0P\BMq4aN;QFa2c9Crlb;brltGfps8rdnBh<acd2U9'[=kGbK7fD`5BI.^q[Us]tCth
+]Y+6WrOi0Brji6E]Y2"kqn<$Brk837pTsOuqm5t&!4DF,!4DR0rjMs;\$l%?0>YND`Q-'BbK\>Y
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=[q#:*hqY9sQr:^$dqYg6d
+q#:$fpA=O_o`+O\o)J7[nG_nVmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h#Z<crn;2A
+f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43
+XfSP&WMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM)kOH5H_NJrdQM2@%Dp](&Z%siMGGB\4Q
+FEDSFEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atr
+s&/kor)!Dhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog7k.#\%+J>?P"/Y--[^p:^79qnDg>rkA=t
+rBpHMs$crWrC?lY!(m/^IS3@.9heAY:f("e;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SL
+G^=^bIXm!%KnbD?Mi<[WOcu&rR$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:k
+e^rF+g=tH?hr*JRj5f@bkiq?sm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*5s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#8oBPhpCNKjF*rfd>Es-*AFrg!JKrg3;Drg3&="-o+7PQ$aCOo:I=Onk1>P5pdCPQ$aFOoC@=
+N;AP2N;8J4NrP.?Nqnb8OR\A3Nq\V6O91K)O8"_h_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2JFrq-?dp\4X]rqZTjq"s@SpA=gbrV?<brqHHdqt:!]s7?0Zs7--Y
+rpTmTs6]gPs6K^MrojLJkNDj,#Nb%-j5].YiVqa9hqn@g!SlH/g320%f@SU)e^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK&;"W2HPjV50o^U7n9R
+T:VUDS"#k7R$a5+Q'IStP*1rhO,o<\N/NRMM26rVo()DEo_%tSq>#7GH?jaZGBS+NFE;MDEH,r9
+rb`9aChmg$C2%?pB4baeARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k
+:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg`7<!?/s:5":PhuEP7rK$`8rK$W5rf@"ErBpHMs$crW
+rC?lY!(m/^IS3@.9heAY:f("e;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm!%
+KnbD?Mi<[WOcu&rR$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JRj5f@bkiq?sm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*5s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH"636pjO<:/Fdd;#sKhr_E2`ohbB[!)iepqb[Aj:]4&f:]*ue:\mic:\mof:]4&f:\@K_<W?%t
+;u]ho<W6%d<<-(c<<-"m<W6##<E<,o<\M;+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8BoCW%T!quB_rV6Bfs8)NflMUAQrVHKgqY:'as7Z?_s7H?_r:9mXs7$$Vs6fpS
+rp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#oMg"=p.f%/C$eC2jndEp7dcHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\)Wi;qpVl$;dUnaZXTqJ$LSXc1=
+R[KP1Q^3o%P`q8nOcYWbNfB!UMM[1GLPq+MNK0'\OHPh'6P"KgG^"@TF`__HF)l8?E,Y_n&8c6!
+CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hNe05mT_>5!;%m8kD\5s8H$o<;9Jl<;fbq<;T\p<;f/^6i0:O7K5jU
+8,l*[8cD>292&#R9hnJ\:f1+h;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:W?,
+L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL`D
+i8N_VjQ>Ugl07L"m-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH#c6G'f(5W6E9$a2l?B`lH0Crlb;brlt2`rQt&]s3Lblrltttbfn8Pa2Q!8_ns7*^AbhG]DoPB
+^&G\E]D];D]Y2"k]_oJC]_oGCZMh'.Z2q;;q6T_!rj)[5Za9>3!4D:(!joDDr3lF10"&0s\$s5l
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9rpg*]o`"O`pAamcq#C0hqYC$P
+r:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5
+h#Z<crn7k8f[na+e^`1!e'cXkd*M^:=3\t4bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?Yck43XK/A$WMl_mVPU)aUS=HUTUqaGS=?":R@'A.QBd`"PEM)kOH5E]N/W[PM>$uDS1&]/
+G^"@TF`__HF)l8?E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"
+<W?%t;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe/62t$hXfeh-h>d5_s1\?Eq7c[>
+rkA=trBpHMs$crWrC6o[8P/nR!D?,c9n,o6:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!DJsN7
+F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8W
+d*^=le^rI,g>(N@hr*JRj5oFdkiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*5
+s*t~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH#5lAS?+1L6[maPEM+.OTCW/qiq)Fqj7#Brg3&="-o+7PPp[COo1C=Onk1>PQ-gDPQ$aEOT:L=
+N<"q6NVe\1NW5">O-'*sr/gf:s,cu9!f`8$r/^Z8/rl$SOH@>s`Q$!@bKS8XdF$Fmf%8R.g>(N@
+i8EVTj5oFckiq?sm-O--n*fc9rpg*]o`"O`pAamcq#C0hqYC$Pr:^$dqYg6eq#:$epAFU_o`+O]
+o)J7[nGVhUmf2\Rm/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5h#Z<crn7k8f[na+e^`1!e'cXk
+d*M^:@a3-?bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)a
+US=HUTUqaGS=?":R@'A.QBd`"PEM)kOH5E]N/W[PM=9s'o()DEp%J.UpNS*4H$FOWG'.nKF)uAA
+EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&K(ur_rhps&&\j
+s%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=^@k<T8I9S8"MJ_gA%O8t@9OSb+5OT(=>6N':K7/o^U
+7f>gY84cDP8c_RYr_7l;:Jakb;H$Op<`W:)=^#'8?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!
+K8#&9M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P6;
+hV[8Mj5]7`kNM0plg4!*mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`no_sFAPQ-.~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH"336UXF89MeRb;$Bck9heAXpeUT[pJLrg!`Mupr)!Jk:]4&f:]!oe:\dcb:\mlf:]4&f:\7B^
+:]",i;u]hp<W6%I<<?-"<:j0C<)lmt<PlYm`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlY^hl07L"
+m-X60n*olHncA@Srq6<bs7cKes7uZjq>9CRpA=gbrV??crqHEcr:U']s7?3[s7--YrU9dSs6]gP
+s6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g()fgf@SU(e^W*tda?Ihci24!c-4ASb/q`G
+a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o^U7n9RSt;LCS"#k7
+R$a5+Q'IStP*1rhO,f3YN/NRMMMmCON/`jYO-#P!6R[8+G^"@TF`__HF)l8?E,TW3D/F*)CMIQt
+BP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<W?%t;u]bq;>a8j:]F2f:&[id9D_?\
+8c;3U8,YpT7J'"C6hNe/5m9G88P;]Ih>[IUr`/bnqGmJnqc!MorDihrrBgHMqaCHQs$lrW!_>mS
+r^m2a9`@b9:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%(M
+O-#NgQ'[l,S"6.EU84W`W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiT&t[
+k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s-*J5~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eok=!ho()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGo]9H%D!L\';qla8a-[aN=G)rlkDe!7(AcrQsu[!mo9>rltqsbfn2M`l5m6_SO%%rk8?Ds1J<D
+rk/6Brjr-Bs1JEFr4W'A%DBEf]tUk\Za-mAZ*L\1Zh:U)Za0S:o<eG'n?r>)qmQ:/0>bWG`lQ6D
+bK\>ZdF-Opf@S^0gYL`Di8N\UjQ>Ufl07L!m-O--n*fc9o()DEo`"Lbp@n=[q#C0hqYC$`r;-Bc
+r:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4aQiSi_Qhr!;H
+h;$f?g=k65f[na+ec+'(e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?Yck43XK/A$WMl_mVPU)aUS=HUT:VXFS=?":R@'A.QBd`"PEM)kO,o<\N/[E/pRM8Q*-ldQ
+GBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"
+<;fbq;ZBVm;#X8j:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg]:X/r>Vs7O)*^A>V?^AG\D^A^Iu
+6i0:N7K5jU7s7Ep8P2TJ92&&S:/=\_;,U=k<)lt"=BSd2>[:ZC?t!MTAS,UhC27[(DfKf>Fa&%T
+H@1-jJ:iN0LP^nINK90aPa.T&R[ftATq\?[Vl?\tXfo"9['mHS]"G_k^r"".`lQ9Fbg+P^dF6Ur
+f@\g2gtgiFi"b83jQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eok=!ho()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGo/lB5D^@Ng5b+P5gXFP*>d-s-3SMqj7#Brg3>E!13PJs-<SIrf[5Br0$o=q3(]?!0[8Drf[8C
+rfHT.rJ^Q3"-/A$NqJJ1OSk1<O8t@>OSt4?Nr+n4O>"Jg`Q$!?b0/&Td*^:ke^rF+g=tH?hr*JQ
+j5f@bkNV6rlg4!*mdKW6nac8Bo^r.U!quB_rV6EgrqcHfq#(!epAFX]rVHKgqtU0brq?9_rq-6^
+rUU!Ys7$!Us6fpSrp9[N!:'OI#O(@6k2tdejSn0Sio/kSi8<GKh;-lAgY1B7g"=p.f%'cLC=CVY
+dEp4bcHXVXbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;d
+UnaZXTq@pJSXc1=R[KP1Q^3o%P`q8nOcPQ`NJrh`mdKZ8o()DEp%J.UpNZ^^*-ldQGBS+NFE;JC
+EH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm
+;#X8j:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg]:JU`7+s7hZUO7n\4O84n9O8_KF6i0:N7K5jU
+7s7Ep8P2TJ92&&S:/=\_;,U=k<)lt"=BSd2>[:ZC?t!MTAS,UhC27[(DfKf>Fa&%TH@1-jJ:iN0
+LP^nINK90aPa.T&R[ftATq\?[Vl?\tXfo"9['mHS]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiF
+i"b83jQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eokX3ko()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGn02779[?9MeS`:f%'b!)E;bohbB["&`&q;Ys;l:f%$br_NGes%iGcr_NAes%iVhrD3)]r_NPo
+qc*Jl!*&krr`7BG!*&kr!*&_n0>bWG`lQ6DbK\>ZdF-Opf@S^0gYL`Di8N\UjQ>Ufl07L!m-O--
+n*fc9o()DEo`"Lbp@n=[q#C0hqYC$`r;-Bcr:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\R
+m/QAOlM]rPki_-kk2k^cro4aQiSi_Qhr!;Hh;$f?g=k65f[na+ec+'5e'cXkd*L"_c-=JUbK@rJ
+aN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aUS=HUT:VXFS=?":
+R@'A.QBd`"PEM)kO,o<\N/WUMMMmCON/`jYO-#Ot6QCArGB\4QFEDSEEcH)<Df0H0D/=!'C2%Bq
+BP1rVAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jdr_3>bqb$fY
+r^ciTr'pTQoL/IAog7k.!_>sTh#I@Ss&JhnqGmJnqc!Mos&K"sr^-TOqaCEPs$lrWG">1r8kM`L
+9MJ5V:Jakb;H$Ln<E<.&=]ns6?!^lG@:EbYAnYjmCMds-EH6/DGB\=YI!pKpK7nu7M2I7OO-#Nh
+Q'[l,S=Z@HU84ZaWN*&%YHbF@[^WfY]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7)J(#n97jlYai
+l0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-*J5~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo]3G']"2Vp!-Z`W=-%rlb;bs31Phps8ocma;']!71Yi'[=kGb/hWB`5BI.^qROr]tCth]Y+6W
+rk&<E]Y"-R"2)=\]_oJ@]`,VE^&l!SZi.62Zi79)Zh:X$Zh1X"[JRB7[C3NOr3cU5pU2Q\_SjF6
+aND]McHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>U6dqtg6`
+rV-6aqu-Biq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@it^S4iS`YO
+hqm2Fgt^Z<g=b03f@SU(rmY*"da?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^X<YH=q.X/`2!W2HPjV50o^U7n6PSt;LCS"#k7R$a5+Q'IStP*1ofO7E8GSG\j(H$FOW
+G'.nKF)l;@EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%u
+rDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?kWo3Mg]-oZs1\<DqS)pCrP&:urBpHM
+s$coVr^ZuZ!(m/^s%@f79heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O<4EccGJG^=^b
+IXm!%KSG8=Mi<[WOckroR$jG6StD^OUo(&hX0&P/Z*UgG\@K5a^;%M$`5Td<b0/&TcdC1jeCN7)
+g=tE=hr*JQj5f=akNM0qlg4!*n*^;Hnc&([oCW%T!quB_rqQNhs8)Zjrqu`np&9OBP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD"mYsp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo/jAS6%0Kp;S"s,d>FPP^UDQM[$AQN!6GQN*<JQN*6LPQ$aCOo:I=OoLREPPgUCP5pdDPQ$aD
+Oo:CAN;\b8N:`,0N;8J3Nq8>.OT(=<O9CW+OH5M%NrY4>O8b4nO-#HaOM\rTa2lEHbg+P^daZdt
+f@\g3gtgiFi8WeXjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7uZjq>:$dp&4X_p\XpcrV?<b
+rqHEcr:U*^s7?0Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4aQiSi_Qhr!;Hh;$f?g=k65
+f[na+ec+'4e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck12
+XK/A$WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd`"PEM)jO,rYomHs?1nF?)@oCV_Kp\FW0r-'N6
+G^"@TF`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"
+<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_/5lcJjs8%iUO7eV4O8G%;O8hQF
+6i0:O7K,dU8,l*[8cD?^97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkhF#DK'T9FEMeP
+H@('hJ:W?+L51VDN/is]P*D6!R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Oo
+f%8U/gYCWBi8N\UjQ5OekiqBum-O-.mfDqJrpg*]o`"Lbp@n=\q#C0iqY^6ir;HTerdk*4s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGn-16UaL892JJ]:B!rf:A@WX;"mfh;Gg=iqb[Aj:]4&f:]*ue:\mic:\dfe:]4&f:\7E\:]FDm
+<W#hp;uTbp<W?+F<<-"q<A%6N<E)u8`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcHfqY^$bp\ad_rVHKgqY:'arq?9_s7H?_r:9mXs7$!Us6]mS
+rTjUOlK\B5s6'IGroX7B!9F.>(#n32i8EMMhVI#CgtUQ:g"G$0f@JLOe7mC[dF$=ecHa\Zbfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@
+S!ob4R$X,(Q'@JqP)t`cLPUbCM2I4LN/`gWO,oBcoKt!OG^"@TF`__HEcQ/>E,TW3D/F*)CMIQt
+BP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\
+8c;3U8,YpT7J'"C6hE_/5laI1s8?!u<VTPh<W5tq;u0Jn6N':K7/o^T7fGpX8,u6\9)hP59MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK7nu7M2R=QO-,TiQ'du/
+S=Z@HUSOcbWN3/(Yd(OA[^`l[]Y;.s_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]k3(smlKdg'
+mI0KEnF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD>3btp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f3F*W:rS@-Q>`WF3&b5KN`bQ?&7cM5`cd-T-\d*M^:%F*,@bK7fD`5KO/^q[V_^&P_E]`#PC
+]`,PB])TDE]tD#V^&#DA]`l-`^:gkYrj2R1rNlO2qQg1-riu7(os4Y*rj2L/rNuX4rjDa6"LY\G
+[^Q(@q6i,t`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc8nac8Bo^qhLp@e7T
+rV6EgrqcKgqu#s^q>C!ar;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5s6'IGroX7B
+!9F.>!TN);i#U_3hVI#CgY:H9g"=s/f@JL%eC2mpdF$=ecHa\Yrl[mUaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4R$X,(Q'@GpOmi>I
+SG8QZG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(
+=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_16/)A=]_9&;^&c!_qnN!A
+rkJEG!(-WOqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,U=k<E<.%=]np5>[:]D@:E_XAS5[jCM[m+
+E,fr@G'A4XH[U?nJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEH
+c-F\`daZh!f@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?s76Edp%A%Pp\jmeq>^<hqu6NmrUg)?
+s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhDYNkup%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f%@;'M"IZ'GRrfR5ErKR>Irg*GJp6P]Epm1oGqN_5KP`q=1P5LFCP*>m.qN:T:rfdAFrKI2C
+rfR/@!KiKAN;\b7N;nk;N:2c(NqSM8OH5J%OT(=@O8t@=O9CW+O-#J%NrY4>O8P(sO2JrVaN;WL
+cHaeae'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjqYU0fnGW1\
+p\XmbrqZEcrqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@Ds5a7Aro4%=iVqaUhqm5G
+h;$c>g=k64f[na+e^W*te'cXkd*L"_c-611>KY(/aN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?YHG"0XK/A$WMl_mVPU)aUS4BST:VXFS=?":R@'A.QBd`"P*1snlg4!*mdBQ5nac;Co_%nP
+q>5F3G6iG;GBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)
+=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L$kjs8S/XOSb+:O8t@=
+OSk1;OSt4?6N':K7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u!p
+Ci4-0EH?5FGBnL]I=?]uK8#&9M2R=QO-5]lQC+)0SXuLJUSXleWiN8)Yd1UC[^`l[]Y;.s_SjF6
+aND]NcHsteeCE1&g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8No*+dZp%J+RrV6Egs8)Zjrquco
+o_sFAP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#e^6UX=58PN#W:/+GX:A@WY;"[]c;Yj5j:]4&f:]*ue:\dcb:\mof:]=,g:\7EZ:]+2j<Vo_q
+;u0J:<<-"o<Adan`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc8nac8Bo^qhL
+p@e7TrV6EgrqcKgqu#s^q>C!ar;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5s6'IG
+roX7B!9F.>!TN);i#U_3hVI#CgY:H9g"=s/f@JL%eC2mpdF$=ecHa\Yrl\NgaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4R$X,(Q'@Gp
+ObSUGLkpnEMMmFPNK&sZOHG^s6O7p\GBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS
+@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A
+6L$kjs8Q*t<WH.o;uouuqc3Vpr_rVl!(-WOqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,U=k<E<.%
+=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#
+Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?s76Ed
+p%A%Pp\jmeq>^<hqu6NmrUg)?s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f4Cit)\Pc"H"!lrC)r6#2dc-=Q/ci2;kd/_Vad/q\@ci22uc-+;PaMu3;_ns7*^AbhG]DoPB
+^&G\D]DfDA]E5dZ]_oGD]Y"-TqRlsC[']\9rNuU2rNuI.rj)I,q6KOsqR$4/s0`'<[^NTPq6g10
+/]>WKaND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>U6e
+qtp<[rV6<bqu-Biq>0mcp]'sbp&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/u
+rnn1AhVR)EgtUT;g=b-Xf3$VSeC;sqda?Ihcd'h\bfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9GZ*:I9Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+Q'IU$s8AJ^RgQX5G^"@T
+F`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr
+;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.l5:]_9&9^AG\A^&YqH^AUFr7/fXT
+7f>gY84cDP8q'E,9heAY:Jakb;c?Xq<`W=*=^,-9?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!
+K8#&9M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC\%0)_]t_A"_o9X:aihoQcHstfeCE1'g"P6;
+hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`no_sFAP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f#?t<niH%c*Y!0d>F!1!PLrKm,As-NPIrKmAH!L8oKPQ$aDOo1C=Onk1>PQ-gDPQ$aEOnt.@
+O,].sN;JV7N;\b7N:`,-NqSP5OT1@AORnM7OH5M!O8Y.l`5Td<b0/&Td*^:ke^i@*g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rV6EgrqcKgqu#p]q#'m`rVHKgqY:'as7ZB`rq-6^
+r:9mXs7$$Vs6fpSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);i!\H!hVI#CgY:H9g"?;UCt@.deC2jo
+dF$=ecHa\YbKJ&MaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-Dg
+Unj`YTqJ$LSt2C@S!ob4R$X,(Q'CS!lg*p)mI'E2nF?)@oCV_Kq"al5pNQXs#^CQ;G'.nKF)q8"
+$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_k
+s%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6TD)rf@)@plGH:rK$i;r/^i=rK$nEqaCEPs$lrW
+!_>mSr^qW49MJ5V:JXe`;,^Cm<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3
+Ll%(MO-#NgQ'[l,S"6.EU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7&I
+iT&t[k2tmll0@X%mI(#C$h3]Wo(2MGp%A%Pp\ssfq>^<hqu6NlrUg)?s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#e^6UO:485)kX:A@WX;"dcd;Yj5k:f%$bs%iPfr_N>br_NAes%iVhr_N/]q+q#jqGdDnm8V8/
+/]>WKaND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>U6e
+qtp<[rV6<bqu-Biq>0mcp]'sbp&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/u
+rnn1AhVR)EgtUT;g=b-Xf50$geC;sqda?Ihcd'h\bfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9GZ*:I9Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+Q'ISfKnb>;LkpnEMMmFP
+NK&sZOHG^t6iU$iG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1
+>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.l5:<W?,"
+<V08f<W5qt;u'Dk6i0:N7K5jU7fl4Q8cD>292&&S:/=Y^:f1.i<)lt"=BSd2>[1TB?t!MSAS,Rg
+C27X'DfKc<FEVkRH@1-jJ:`E-L5:\FNK90aPEhK%R[]k>Tq\?ZVl6VsXfnt7ZaI9Q]"G_k^r"".
+`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjlY^hl07L"m-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6Kk
+rVcBfJcCo5J,~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8CN=ZMMjplna2lC#b6,u5c-H+1rm:\m!7LAas3Lblrlu2%bfn5N`l5m6_SO%%^:h4m]=bfT
+^&G\D]DfAA]DT>?]`GdXrOi-C!5AHGs1AKH]!JcNqm-@0Za9D5qm6:-qm$()rj2I,pTse)!OK3*
+[P,%s`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6naZ2@oCW%Ts7ZKerqQKg
+s8)ThqY]aZqY^'arVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]
+io8qrhuV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\YbKJ&Mrl@=E`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`QZa6sBYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!ob4R$X-)s8SV`Rf]%f\,Ni9
+G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKr"4fDki_otC7:qnMm>rBpHMs$coV
+r^ZuZ!(m/^s%@i89heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O93EccGJG^=^bIXm!%
+KSG8=MN!OUOckroQ^F84StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5f=akNM0plg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAP5g%~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8?XRJ`FFK%0P*2%,PQ7!JQN!6AQN!6IQMm0HQN*6LPQ$aCOo:I=Ont7?PQ$aDPQ$aEOnt1<
+O8b.:N:W&*N:i/1NqSP5OSb(=OR/#\OMo,YaN;WLcHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@U$
+mI'H3nF?&>o(2MQp&Facp\sseq>^<fqtg6XrVHHcqu-Biq>9sdp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;&!cd'h\bfe2P
+ao9@_a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LC
+S"#k7R$a5+kiqBtlg4!*mI'E2nF?)@oCV_Kq"]/ZpNHU\r/L`#"a5$1FE;L%E<U<"DJj<-rbDOL
+C&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^
+9)_E\8GPdS7f5^I7/0.A6LR4ls6PgDOSk.>OSt7=6i0:O7K,dU8,l*[8cD?^97KW09hnJ\:f1+h
+;cHat='/U/>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/`m\P*D5uR%'V;T:r!T
+VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5Oekiq?tm-O--n*^GL
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq0ssoCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#86UO7184Q?Mr_E5aohb$Q!DlSj:B"&f:B"&b:B"&c;#a>j:B"&\:ARcc:B"8g<;]bp;ufqh
+<7+\t`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6naZ2@oCW%Ts7ZKerqQKg
+s8)ThqY]aZqY^'arVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]
+io8qrhuV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\YbKJ&MrlA*[`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`QZa6sBYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!ob4R$X+lKS>,7LPL\AM2@+J
+N/WaVNfT9aP4_0B6Msa]G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<
+r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKr"4fDkYH
+oMk]fpJh)YqaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k<)lt#=BSg3>[:ZC?t*SUAS,UiC27[(
+DfKf>Fa&(VH[U?nJV/W1LP^nINK93bPa.T&S"-(BTq\?[Vl?\tXg#(:['mHS]"G_k^r"".`lQ9F
+bg+P^dF6Urf@\g2gtgiFi8WeXjlYail07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCo5J,~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokX3ko()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo`1D0:2\Pbkn1aiaS*s3(PhcHc42rm:YmnBh6_rQZ)$bfe/M`l5m6_SO%%^:h1l]=bfT^&G\D
+]DfAF]=bei]Y+3Vs1JBDrk/3C#J@a_]=YYc]Df/:[/704ZE^^AZhLj'ZN7A<pTjh*o<SA%qm6@2
+o<p6i`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo`"Lbp@n=[q#C0i
+qYL*dr9=1Vr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[
+io0mp!T2c5h#Z<crn7_4f[na+f%&:"e'e6C8C5].cHXSVbK@rJaN)<?`Pod5_SX.)^V@Lr]Y(kf
+\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[NC>!1`hRs-iqrrO2`M"a5$1
+FE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6LmFnrrB_(^%f;B^V9Z]pqH_pqaCHQs$lrW
+s%!,]r^m2a9`@b7:/=\_;,U=k<*!%$=BSg3>[:]D@:E_WAS5[jCMRd)E,fr@Fa&(VH[U?nJV/W1
+LP^qJNfT<cPa7])S"-(BTqeE\Vl?`!Y->1;['mKT]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtglG
+iSrnYjlYail0@U$m-X60nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,m>3~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokX3ko()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo`"?XmbhG_1s=PEYs0s-;u;rg3MJqj7/F!0mJHrf[2ArK?u=q3(`@s-!>Erf[5BqiL]9rf$l:
+qi(K5!0$Z3pPes.s,Qf6s,d,=q2k60/]G`Nai_fOcHstfeCE1&g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCV\So`Fj]p\jmeq>^<fqtp<UrVHHdqu-Biq>9sdp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^$JF(`f@JO'eC;sqrm>0$cd'h\bfe2P
+aiMQD`l?!:`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LC
+S"#k7k2tmkl0@R"m-O-,mdBQ5nac;Co_%nPq=f+5G5@3uG6N/4FEDSErc&9aDf0H0Ci!m&C2*Z\
+!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZ
+rCH`SrC6]RoL/IAoKr+7f)P#r!K`B@OSFn96i0:O7K5jU8,l*[8cD<_92,=ZI83R7:f1+h;cHdu
+='/U/>?kH@?X[DRA7]CeBkqL$DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<T:r$UVPgDo
+Xfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O--n*olHncA@S
+rq-?dp\4[^s7u]kr;6KkrVcEgJcCl4J,~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokF'io()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo_\6UaC484uZPp.t?Xm83j[rD*Agr(d2dqG.#cqG@2fr_EDfoM53XrD*>ks&Jnp!)rkrr)Nbr
+r`/Ykr)NVngf5rF`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo`"Lb
+p@n=[q#C0iqYL*dr9=1Vr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..
+jp1#/jQ#:[io0mp!T2c5h#Z<crn7_4f[na+f%&:"e'e6C@F3?GcHXSVbK@rJaN)<?`Pod5_SX.)
+^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[Jb[K7no3L5(J=
+LkpnEMMmFPNK0$[OHG_#6iTLL;ZCqEG'.nKF)q8"$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?
+nj1k,q,Qub!EE+t<VTPm6i0:O7K5jU8,l*[8cD<_92,=ZI83R7:f1+h;cHdu='/U/>?kH@?X[DR
+A7]CeBkqL$DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg
+^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O--n*olHncA@Srq-?dp\4[^s7u]k
+r;6KkrVcEgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f4CNF]NMj^Zkb5BEbbg"DXps8ue!7CeonBh9`ci)-%c-4>Pa2Q!8_ns7)^:h4m]=bfS^&G\D
+]DfDA]E#YE]`,VE]E#SA]_oGM]Xtee]">ScZa6t9ZN.B1ZNd_?Z*L[AZhCd(ZN@M?Zh^p,Zh(L%
+Zi@E4Zi@B5[C5n?rjF2na2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlY^hl07L"m-X60n*olHncA@S
+rq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dSs6]gPs6B[MrTOCI
+kNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t1rR;K
+_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=A^A!1`kSrgNhq
+rjMd7%sN2>FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8::eGo0SoY1:=qS)tsqaCEP
+s$lrW!_>mSr^qW49MJ5V:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKp
+JqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4
+h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f4?".A^G(#14PPgXIQ'R`$n!<s>r0I5HqNh/Gs-*DErK7&Aq2tK9rfd>Erfd;DrfR)>q2bQ7
+!/pf7!0-i6rf-r:p5T!/!f`.tqi1W9r/Ui>r/^l>qiC9/rf8GGa2lEHbg+P^daQ^sf@\g3gtgiF
+i8WeXjlY^hl07L"m-X60n*olHncA@Srq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*t
+da?Ihd*L"_c-4ASb/q`Ga2\+t:;k&e_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_m
+V50o^U7n9RT:VXFS=AU#k2tmkl0@R"m-O-,mdBQ5nac;Co_%qQpil^\pPf]-G'.nKF)l8?E,]`5
+DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVh
+rD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@oKh",kE#S'qN(YDqaCEPs$lrW!_>mSr^qW49MJ5V:/=\_
+;,U=l<E<.%=]np5>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.D
+TqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4h;-uHiSrnYk2tjjl0@U$m-aoB
+!V#XYncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f46:4.17n?;H:\@QO;#sKhrD!>gqbI,dq+gobqG@2fr_EGgo1o-XqbI/j!)rhq!*/nqs&8kq
+r)E_rr)NYo!``3!r)NAgn5]9br`(>ba2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlY^hl07L"m-X60
+n*olHncA@Srq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dSs6]gP
+s6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*tda?Ihd*L"_c-4ASb/q`G
+a2\+t:;k&e_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=>(]
+JqJ]/KnY89LPL\AM2@+JN/WaVNfT9apd>$IqbmAk%sN2>FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciT
+r'pTQoL/IAog8::eGoDGm8X$aqGdJ^qaCEPs$lrW!_>mSr^qW49MJ5V:/=\_;,U=l<E<.%=]np5
+>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeH^W2co#Y->4<
+[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-<c
+p\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f5Ci"6>L681<bl,`bbl5o`ci2;jdeD/hd/22jci)/hbRr"=a2Z*:_ns7)^:h4m]=Y_grOr3C
+rk&0@!5&0ArOi3Drk&-Ark8<Ds1A<B"1u.T])8l7ZM:a0ZE^X<Z*OA8rNlR2qm?@/rj2[3qQg+,
+oWnJ&qm6I5[^W^A[k,P?aihoRcHstfeCE1'g"P3:hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCV\S
+o`Fj]p\jmeq>^<fqu$BRrVHHdqu-Biq>9sdp\smap&F[`oDS7[nc/+Wn,MhUmJcJPlN$5Ll2TrI
+kPjWDjT+B@is4T&iS`YOhqn@g<SZ?_g=b03f@SU(e^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VY9rrASbS,SlU\,Wo6
+[h!\+F`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NOP>?2e(1>?Y50=TV],=8c/$
+<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS7J'"C6hE_>6.>i6]_B,0^AYhD^&UOt7/o^T
+7fGpX8,u6\9)hP69MJ5V:Jakb;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DG'A4XI!pKp
+JqJc4M2I7OO-#NgQ'[l,S"61FU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!6
+h;7&IiT&t[k2tmll0@U$mI'H3$h3]Wo(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f5>@(fQE-QnlQ2QsFQ11+=Qi!*GQi*0LPlR'JPQ$aDOo1C<Onk1?PQ$aDPQ$aEOo(79Nrb9%
+r/:W6oS`d0rJ^]7!0$f7rf$W3s,R#<r/^u@OHB@#n;o3@aN;WLcHaeae'uq"f\,!5h;7&IiSrnY
+k2tjjl0@U$m-X60n*ol<o(2MGrq-?dp\4X]s7u]kqYU3gjo,&Rp\XpcrV??crqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih,`=cg=k65f[na+e^`1!e'cXk
+d*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVPU)a
+US=HUTV%gIj8S->k5XWYl0@R"m-O-,mdBQ5nac;Co_%qQqKMj\p5KT,G'.nKF)l8?E,]`5DJa4h
+CB80arb)=FB)Z?BA7PUJ!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b
+r_*,\r^m&ZqFCHQr'g6Gpd=[?pHd:.k)]J&qi:_EqaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k
+<)lt#=BSd2>[:ZC?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-LP^nINK90aPEhK%R[]k?Tq\?Z
+Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60mgJXT
+o()DEo_%nNp@nO\!;ZWjrVQQkrr)KgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f55sdt-77U!G;#!i[;"RWb;#=)i:\RW_:\dcb:\mof:]=,g:\.?X:\dc`;ufkk<!-&s;H*Nn
+rD`hsqc3Vpq,Qf]pJpuh/B5cQbKS8Wd*^=le^rI,g=tH?hr*JQj5f@bkNM0qlg4!*mdKW6nac8B
+o^r.U!quB_rV6Egs8)Thr;>[TqY^*brVHKgqtU0brq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N!:'RJ
+s6'IGroX7B!9F.>#NF_$i8EMMhYu>NgtUQ:g"G$0f@JL&eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt:I`JV&K+K7nr4
+L5(J=LkpnEMMmFPNK0$[OHTH-r'L<Zqbn#LG'.nKF)l8?E,]`5DJa4hCB80arb)=FB)Z?BA7PUJ
+!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'g6G
+pd=[?pHd:.!*&qtl;[^^qc!P_qaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k<)lt#=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-LP^nINK90aPEhK%R[]k?Tq\?ZVl6VsXfnt7ZaI9Q
+]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60mgJXTo()DEo_%nNp@nO\
+!;ZWjrVQQkrr)KgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8Che!7I>XAi_u@g[bg$.4qTo,e!7CeopsK,gr6YPlci)-&c-4AQa2Z*:_ns7)^:q:n]Xthh
+rOr3Crk&-?s1AEH]Y+3V!5/9Brk/6D!PH,F]DoGB]DfDA\brc5Zi79,ZN7A:rNH:-rNlO2rNl:+
+!42O-rj27&rj2L/!O]B5[jSW)aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?MK
+!V>s_p&F^cp\jmeq>U6fqu$BdrV?HcrVHHdqu-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQ
+lg!d7l2TrIkPjWDjT+B@it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci23Nc-4ASb/q`G
+a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$W2HPjV50o^U7n:?rrAScS,SlT
+[fEl3[gmS(FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCHcTr'pTQoL/IAog8I?df9?[q7Z41s1eHF!(6WO
+s$crWrC?lY!(m/^!D?,c9n#i5:f("e;c?Xr<``C+>$G6;?XI2M@q9._BPD6tD/O<4EccGJG^=^b
+IXm!%KSG8=MN!OUOckroQ^F84StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcd:(geCN7(
+g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`no_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8Cg:C\C3+`TP5LRDQ1:1<Qi*0IQhm!KQ'D93rf[2ArK?u=plbZ@s-!>Erf[8CqN1K5s,Qr7
+repW3!/pf7!/pc6s,Hu9nr<[0r/^W7r/^E1-HF3MbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?s
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0hqYU0fr:g0crq66dr:g*eqYp<eq#:$epAFU`o`"I\o)J7[
+nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0Sio/kSi8<GKh;-lAgY1B7f\"g-f%'cL"k1oIdEp5=
+c9BLsbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZX
+U#4hfj8S*Uk3(sll0@R"lg4$+mdBQ5nac;Co_%qQr-/$]o8O6'F`__HEcH)<E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NOP>?2e(1>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\
+8c;3V8,PjS7J'"C6hNeA6.5eoO8k==NrVQE7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Ln<`W:(
+=^#$7?!grH@Uiq[AnYmoCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-,TiQ'[l-S=Z@HU84ZaWN*&%
+Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?PL!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8CdLHV77]pC:&.TX;"[]c;#F/k:f%$b!)NMfr(m/ar_NAes%iSgr_N,\qbQr]qGdGmqGdJn
+rDNPms&K"so2Y*Uq,R8l-HF3MbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?sm-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0hqYU0fr:g0crq66dr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFk5XNCjSn0Sio/kSi8<GKh;-lAgY1B7f\"g-f%'cL"k1oIdEp5=c<8E9bKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTmhH?J:W9'JqJ]/
+KnY89LPL\AM2@+JN/WaVO,oBcr'U?Jr)3;g%X)u:FE;JBEH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GYjS7f5^I
+7/0.B6MWpqs5[/Z<Vo_q6i0:O7K5jU8,l*[8cD<_92,=ZISN[8:f1+h;cHdu='/U/>?kH@?XR>Q
+A7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m\P*D5uR%'V;T:r!TVPgDnXKA_3Za@0M\[oGe
+^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFdkiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*3s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/3p/H@h-IY5ZTEbl5occhl&hdJhSidJ_Gjd/q\@ci23'c-4DRa2Z-;`5BF,^:q:o]Xthh
+r4W*Bs1A6@s1A?Frk/6Ds1J<Brk/9Erk&6Cqmlg=])K8?Zh:X%ZN7A:rNH=-ZM1^$ZiIH2Z3%A<
+ZMq3+Z2h0.ZMq30ZiIH3ZiRSCrjOGuaN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-X60
+n*ol<o(2MGrq-?dp\4[^rqZTjqtp<hq>KsbpAOmdp\XpcrV?<bs7cNdr:U']s7?0Zs7--YrpTmT
+s6]dO!pf.:rosIH!9a@Ds5a7Aro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&`e'cXkd*L"_c-=JU
+bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUYu.PSGJ`T
+Re!ou\9<":FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@qa&X0qRtq'r'^NQs$lrW!_>mS
+r^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%K
+NfT<dQ'Rf*S"-(CTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeX
+jlYail0@U$m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCl4J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/3HeBl/$CMNe%(rg!&?qj72GrKmAHs-<PHrf[5BrK?u=plbZ@rf[8Erf[8CqN1N6!KN6?
+NW>"5N;SV3N;eb8N;eb0N:`,/Nr"h8O91K)OSk1=O8t@?O8t@@O=\DmaihoRcd:(geCE1'g"P6;
+hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCV\So`Fj]p\sseq>^<gqu$BfrUg*_rVQNequ-Biq>0md
+p\smap&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn@FhVR)Egt^Z<g=b-2
+f@SU(rmXEdda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0
+XK/A#W2HPjV50o^h;@,KioC%!(ZsoEkiqBtlg*p)mI'E2nF?)@oCV_Lq#5L6G4LV'N-9>cFE;JB
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_k
+s%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@qa&X0!05lrr'^NQs$lrW!_>mSr^m2a9`@b8:/=\_
+;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%KNfT<dQ'Rf*S"-(C
+TqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X60
+n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCl4J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/2I)6pjL89i1^_ohb?ZrD<Gi!`2Zgr_<GhqbI)cq+gobqb[;grD*>fo1o-Xp.kB^r)<Mm
+s&8kos&8Yko2Y-Vq,RAo/B5cQbKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!*mdKW6nac8B
+o^r.U!quB_rqQKgs8)Wir;?Bho`"R_qu$3crVHKgqY:*brq?9_rq-6^r:9mXs7$$Vs6fpSrTjUO
+lK\B5s6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"=s/f@JLOe7$hSdF$=ecHa\Zbfe2PaiMQD
+`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`.tVl-DgUnjc5I=?WpJ:W9'JqJ]/
+KnY89LPL\AM2@+JN/WaVO,oBcr^6NKr)35e%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6G
+pd=^@qa&X0!*.iSr'^NQs$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[j
+CM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%KNfT<dQ'Rf*S"-(CTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0
+a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCl4J,~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjamnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CMId1I>O2c\'3(@rm(MhqU#8i!7LYirQtPkrm1_mcHcF6&^/>;a2Z*:_ns4(^:h4m]=bfS
+^&G\D]DfDA]E#YE]`,VE]_oD@]`5\F]E#SB\c]RU\[q^LrNl.%rNcO1Z2Lm,Z2V')Zh_!.Zi79+
+ZhC[+Za-q6ZmiDk\&cY5bK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"Lb
+p@n=[q#C0iqYL*fr;-B\rqQHgr:p0fqYg6dq#:$fpAFU_o`+O\o)J7[nG_nVmf2\QliQM<lMg&J
+kQ'fFjoXZ*jSn0?io0mp&Du@$h;-l@gY1B7f\"g-f%'cL4k%j,dEp4bcHXSWbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\Y(Wi;qpVl$<IrrAScRfJoK\,<`FF`__HEcH)<
+Df9N2D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mi
+s%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAog8XDci<sWiP,4Xs$coVr^ZuZ!(m/^s%@i89heAY:f("e
+;c?Xq<`W=*=^,-9?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQC+,1SXuLJ
+UnsufWiN8*Yd1UC[^`l[]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+^k3(smlKdg'mdKTF
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,d82~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CKk.VBlSEMN;f(@Q1C7=Qi!*JQhZjHPl6gFP5UOAP5(17OoU^FP5^[EP5UO?OSOq<NfX1"
+s,I#9q2G60r/CB.q2Fs*rf6o;!06u<rfI&=pQ5Er,g+<TcHsteeCE.%g"P3:h;@/LioB+]k3(sm
+l0I^&mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<fqu-HhrU9a\rVHHequ-Biq>0mcp]'sbp&=U`oDJ1Z
+nc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnn@FhVR)EgtUT;g=b-2f@SU(rmX*[da?Ih
+cd'h\bfn8Rb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0X/`2!W2HPjV>f<N
+hZDcrj8S*Vk3(sll0@R"lg4$+mdBQ5nac;Co_%qQGPQFQNW"eFF`__HEcH)<Df9N2D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZ
+r^ciTr'pTQoL/IAog8XDci=!)i/de(s$coVr^ZuZ!(m/^s%@i89heAY:f("e;c?Xq<`W=*=^,-9
+?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQC+,1SXuLJUnsufWiN8*Yd1UC
+[^`l[]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+^k3(smlKdg'mdKTFnF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUp/@s,d82~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CI(<W77Tj@:B"&[:^']m:f1%crDEMir_`Yk!`)Qdr_NGerD35ar_NDfr_NMgr_N,\qG6`Y
+qG[Gpr`&eor)EYor_iSkr)E5em8Wj\-W\=0b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0plg4!*
+mdKW6nc&([oCW%T!quB_rV6Egs8)ThrVZNjn,E+\qY^-crVHKgqY:'as7ZB`rq-6^r:9mXs7$$V
+s6fpSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);i"4f&hVI#CgY:H9g"=s/f@JLOe32:/dF$=ecHa\Y
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-Dgrd4ltIXZcs
+Jc:9$K,'&nKnb>;LkpnEMMd=NN/`jYO-#Mlq*P!Wo2?*@FEDSEEH,r9Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR
+7f5^I7/0.B6N09ss8Q*V<;]/a7K,dU8,l*[8cD?^97KW09hnJ\:f1+h;cHat<`iL->?kE>?XR;O
+@qB7bBPM=!DJsN7F*)SLH$XjdIt3-'KnbD?MiEdZP*;/sR$sM8StMdQV5L8lX0&S0ZEpsI\@K5a
+^;%M$`5Td<b0/&Td*^:ke^i@*g=tH>hr*JQj5f@bkNM0qlg4!+n*^;Hnc&([oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBOT0h~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chma(G^ta@XNf#hcMu5dd.Ylad/VMmd/VDlcMl&tbf\#I`l>s8_SEq#]tOBWr4W*Brk&-?
+s1AEH]Y+3V!5/3@rk&9F]`,P?])&u;])/i2ZMq-)ZMUj-Z*L\2Zh_!,ZN.<.Zi@<2Zh^p+Z2_-2
+['T\;1:>3GbKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo^qhLp@e7TrqQNh
+rqcNhrVZNjmJcnZqu$3crVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOII
+jQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2jodF$=ecHa\YrlZk8aiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sg].)=o=+P*s)\ThEcH)<Df9N2D/B2e!GZ?JBE;aX
+rac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciT
+r'pTQoL/IAog6q'h7ihUs$crWrC?lY!(m/^InNI/9heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^
+BPD3sD/O93EccGJG^=^bIXm!%KSG8=MN!OUOHPinQ^F52StD^NUnsugWiW>+Yd1UD\%0)_]t_A"
+_o9X:aihlPcHstfeCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mf2_`nF?)?oCMVIp%J+RrV6Egs8)Zj
+rqucoo_sFAOT0h~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chm<bASlO9LR",'Q1C7<Qi!*KQhZjIQ'D62s-!;Brf[&=pQ>TAP*5d-rf[8CqN1N6rJpf8
+!K2j7Mu&D1Mu8M7Mi.=gq2G$,!KN0=NrG+>Nq\V7NrP.@OH9@%s,SnUb0/#ScdC1ieCN7(g=k?<
+hV[8Mj5]7`k3)!nlKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6fqu-HhrU'UZrVQNequ-Biq>9sd
+p\smap&=U`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^!SQ-)
+f+-B^eC;sqda?Ihcd'h\bl5dEb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/
+X/`2!W8$(^gtgiEhr3STroF+B($OoHlK[^$m-X3.mdKZ8o(2JFp%J1VG4CRhN;mu,F)l8?E,TZ4
+DJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f
+:&[ic9D_?\8cD9V8,PjS7J'"C6hNdjs4rb77/o^U7f>jW8,u6\8q0K-9MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYmnCMds-EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%
+YHY==[^WfY]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$mI(#C$h3]Wo(2JF
+p%A%Pp\jmeq>^<hqu6NmrUg)?s,d82~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chl='6UjR99MeOO;#X>h;#aDl;#a;k:B"&d:B"&b:B"&c;#a>i:B"&]:Adlg:/CLWr_N>h
+"'&B%<;]\m<;]\p;YF&_<<-)!<UEc]<ADS;bKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+
+n*fc8nac8Bo^qhLp@e7TrqQNhrqcNhrVZNjmJcnZqu$3crVHKgqtU0brq?9_rq-6^rUU!Ys7$!U
+s6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2jodF$=ecHa\Y
+rl[:DaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sH?spcI!pElIXcm!
+rdt0&'SM0oL5(J>Ll$tGMMmFPNK0'\OHTE+r)3#_s)\ThEcH)<Df9N2D/B2e!GZ?JBE;aXrac+@
+A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQ
+oL/IAog6q's&IrUrC$ZSs$lrWs%!,]r^qZ59MA/T:/=\_;,U=k<)lt#=BSg3>[:ZC?t*SUAS,Ui
+C27[(DfKf>Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@Tq\?ZVl?\tXfnt7ZaR?R]"G_k^r"".
+`lQ9FbK\>ZdF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X6@mgJXTo()DDo_%nNp@nO\s7u]kr;6Kk
+rr)KgJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^*up%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8D#S2VFaJh*Ts`(hcHl73psJrb!7C_k(XLCPc-=JUaiDHA`Pf[1^q[Rr]Y(kh]_oJB]`5VB
+])TDC^&G\D]`YpZ]=S!Rqn)p@qRZO6rji0C[C#h;q6L")qm$:-YHRo/!O8s0ZN.B2Zh_!#ZN@G=
+Zhh!-Zh^sXaihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jme
+q>^<gqu-HhrTaCXrVQNequ-Biq>9sdp\smap&F[`oDS7[nc/+Wn,MhUmJcJPlN$5KklU)3kPjTE
+jlHF$s5F%;rnmh7hYu=3gtVh^!SQ-)f*0aUeC;sqrm<LJcd'h\bfe2Pb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<Y-"h-X/anRq4$ubpUL6F$?L6-EH#i7DJj<-rbD^QBkV0mB4h-S
+!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*,\r^m)[q+(?P
+r'g6GpI"^Bc2ZV6r^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[j
+CM[j*E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"G_k_8=+/
+`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^F)p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8Chm6^@q]h*J;aAko9T<@qN_,JpQbiFPl6gFP5UOAP5177OoU^FP5^[EP5^U?OSOt8Nr4k?
+Nf8pTMMhCkq2G<2r/:W6regT2repi:rJ^H0r/U]9!06l9p5gcGbKJ/Ud*^:ke^rF+g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)WirVZNjlMgVXqu$3crVHKgqtU0brq?9_
+s7H<^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd6H"(cHa\YbKJ&NaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WnH+\
+gYCT?hV[8MioC%!(?aoFl07Kulg*p)mI'E2nF?)@oCV_Lq0)^r!06`3qMbGr$?L6-EH#i7DJj<-
+rbD^QBkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/a
+r_*,\r^m)[q+(?Pr'g6GpI"^Bc2ZU\r^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5
+>[:]D@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;
+['mHS]"G_k_8=+/`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?d
+p\4[^s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^F)p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8Chl='6q0X:85AMJs&&Vh!)`Yj!DcJi:]!od:\[]a:]!ug:]4&f:\.?Y:\7E[:\Rfl<E<.#
+<)iiqr)ESmrDNDhs&Aeor`9&!mo9*_.`olWc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2JFrq-?dp\4X]s7u]kqtp?iqYf^Yq>L3gp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dS
+s6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.WZd*L"_c-4AS
+b0%iIaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Ycb+1XK/@HH$Xd`I!g?jIXcitJc:9$
+K+iolKnb>;LkpnEMMd=NN/`jYO-'0(rDN#]s)\ThEcH)<Df9N2D/B2e#&7jcBP1sirac+@A,]pB
+@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/F@
+pd37*rDhfUr^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[j*
+E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"G_k_8=+/`lQ9F
+bg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBf
+JcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3m&Ed)tjR&RdEchPl^dJ;,hdJVAkcP=aMbfn8QaN)<>`5BF,^:h4m]Xthhr4W*Bs1A6@
+s1A?Frk/6Ds1ABE])B8=]`5SI]",D`\[qUIs186B!4r0<!k#DBrNl:)s0;L-s0;U-rNQ=,!4)I-
+rj2[3rNuI.s0;[3ZMUs.ZMq01Z2V'/Zi%0Zb0/&TcdC1ieCN7(g=k?<hVd>Oj5]7`k32'olKdg(
+mdKW6naZ2@oCW%Ts7QHerV6EgrqcNhrVZQkl2LJVqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\Y
+bKJ&Mrl?;(`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf^7UqO@)cpUL45#'=p,EH,r9
+rb`9aChmg$C2%?pB4kgfARo=]raH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;f_s;Gg<h;#a>k
+:Adic9`Ic_9)V?\8GPdS7f5^I7/0.F6HfB/^#$L'7/o^U7f>jW8,u6\9)hP59MJ5V:Jakb;H$Ln
+<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeE]
+W2co#Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X6@mfi4N
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3lk@:a1qH\@NGQ1L=?QhcpIQhH^GQ'D93rf[2Arf[&=rfR8DplbW?rf[8Cq2kH6r/U]7
+rf6u;!K;s8MZ8V1N;nh6N;nh9MYi>2Mu\k9N;ee:N;AP5NrP(>O,j*u!07&>!07&>!K`B?O=A>q
+c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*ol;o()DErq6<b!;HHes7uZjqtp?iqu,dY
+q#1*fp\XpcrqZEcrqHEcr:U*^rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9
+hqn@g!SlH/g&]mZrmq>)e^W*tdf.W#d*L"_c-4ASb/sY(9?5&k`Pf[2_SO%&^V7Co]Xtbc\[],W
+[^EKKZa-j?YHG"0g"G*5gY:Q>h;7&IiSrnYjQ5Rgkiq?slKdd&mHs?0n*ol<oCMVJp\K(%NVe\6
+N<XKGEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq
+!`Dlmr)!Dhs%`Jdr_3>bqb$fYr^ciTrC6]RoL/IAq*N:)!05oss$ZlUs$lrWs%!,]r_!2`IS<I1
+:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS,RgC27X'DfKc<FEVkRH@1-jJ:`E-L5:\EN/is^PEhH$
+R@Bb=TV8-VVl6VrXfen5ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBu
+m-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3lQ6:=757nc\I:]O;c:]OAj;#=&d:B+,a:B"&d;#a>i:B"&\:Adli:/=VZp.kN]!)E/c
+#?=f*<E)pr;uBVl;uT\h;uTbn<W6&!<UWoa<@Q)6c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L!
+m-X60n*ol;o()DErq6<b!;HHes7uZjqtp?iqu,dYq#1*fp\XpcrqZEcrqHEcr:U*^rq$*Zs7--Y
+rU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.W#d*L"_
+c-4ASb/sY(.*'?H`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0G^+LZH@#R<s*Y$!It*!"
+rdt0&'82'nL5(J>Ll$tGMMmFPNK0'\OnqEC;XIE^<!IGcEcH)<DuOVcD/=!'C2.HrBP1siAS#C_
+A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3>bqb$fYr^ciTrC6]R
+oL/IAq*N:)r`.lUs$ZlUs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS,Rg
+C27X'DfKc<FEVkRH@1-jJ:`E-L5:\EN/is^PEhH$R@Bb=TV8-VVl6VrXfen5ZaI6O\\#Mg^VRe*
+`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*2s*t~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%CialVO.<Aschc#`dIGQqcd'e[bfn5Oa2c3=_ns7)^:jHWr4W*Bs1A3?"MDF]]Y+3V
+!5/0?rOi0B"hM7U\[oBJ\c0/?]DfD@[KX.K[^ENMrj)X2Zh(L&Z2_$*YlCs.ZLkI'[-k7(ZEpjD
+['Tb=.`olXc-F\`e'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]k
+qtp?iqu,[Vq>L3gp\XpcrqZEcrqHEcr:U*^s7?0Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7A
+ro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"e'e6C/'uVfcHXSVbK@rJaN)?@`Pod5_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa6p@YgrdNS,Ker\G3Q.\GNi:Es-N'EH#jqD@gZ$CMR["BkV0mB4b^dA7T3L
+@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6G
+q*Y'HaoD@RiP#:[r^HiVrC6o[8P/nR!D?,c9n#i5:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3s
+D/O93EccGJG^4U_I=Hd!K8#);MN!OUOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[]YD8!_o0O7
+aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAOT0h~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%?"7SeGCGC6Q26dHQi36KQgC"=Q'D62rf[5Brf[&=rf[;Dr/q,FP*5d-rf[8CqN1Q7
+r/UZ6rJpf7!KE$9MZ8V*N;nh9MYrA6N/NYoNW"h9NW"h7NVnh9O8b1;Nrk?&Nr+nfaihoQcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<gqu-HirT=+TrVQNe
+qu-Bjq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g
+!SlH/g'ZNcf@SU)e^W*tdf.Wqd*L"_c-4ASb/q`Ga2c3=`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za$a=f%8R-g"P07gt^`AhV[8MioB+\k3(sll07Kulg*p)mI'E2nF?)@oC_hOqf_CerJ^W5s)S<`
+EH,r9rb`9aChmg$C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl
+;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/94J6HT9,No?$!7/fXT7f>gY84cDP8c_RYr_7i::Jakb
+;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmnCMds-EH6/DGBeCZI!pKpJqJc4M2I7OO-#NgQ'[l,S"6.E
+U84W`W2cr$YHY==[C3TU]=bno_Sa=2a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-a?2
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,d82~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1+"oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%6:=4184H<Lo2,B]nkf6[!DZGh:&n)a:B"&d;#a>h:B"&]:Adli:/=VZp.kN]r_Dr^
+s&JhnqG[DlqbmJmqG[Dnr`/nt!*/Shs&B%ur`(GibKS5Vd*^=le^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)WirVZQkk5P2Tqu$3crVHNhqY:'arq?9_s7H?_r:9mX
+s7$!Us6]mSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=3gtVh^$JF(`f@JO'eC;sqrm<[O
+cd'h\bfe2PaiMQDa2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:HUGB\:VH$O^_H[L5?IK+ct
+J:[]Os+:u<KnY89LPUbCM2I1KN/WaVO,oG#6N'gM;u9PoEs-N'EH#jqD@gZ$CMR["BkV0mB4b^d
+A7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?P
+r'g6Gq*Y'HaoD<>i`#nGr^HiVrC6o[8P/nR!D?,c9n#i5:f("e;c?Xq<``C+>$G6;?=.)L@Us%^
+BPD3sD/O93EccGJG^4U_I=Hd!K8#);MN!OUOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[]YD8!
+_o0O7aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAOT0h~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEqf;$p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8Chmd$DfpJaQ)(h6r6Y5dnB_focHa\Ybfe,La2Z*:_nj.&]tOBWqn<!As1A6@s1AEH]Y+3V
+s1ABE])92>]`5VD])T;B]",EJ\c95@]DfAD\[o5Xr3uX5!k#AArj24%s0;I*s0;I,n$</&Za-pD
+rNuO0rj4Ddb0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssf
+q>U6gqu-HirT*tRrVQNequ-Bjq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWD
+jT+B@is4T&iS`YOhqn@g+Pb`*g=b03f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t(W=5._SO%&
+^V7Co]Xtbc\[],W[^EHJZIAjNS,Tns\G<W/\G3T<F)l8?E,Y_n&8c6!CMITuBP;$kAn>OaA7PUJ
+!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id9D_?[8cD9V8,YpT7J'"C
+6iTKorrB_1]`>eD^$3927K,dU8,l-[8cME_97BQ/9hnGZ:f("e;cHat<``F,>$P<<?XI5N@qB4a
+BPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"
+_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAO8j_~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEVK2#p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8Chmcj?Y!njG_(eMQN!6NQMm08Q3!88rfd>ErK7)BplYN<!0R)?rKI5DrfR#<r/Ul=O8P%9
+NW"k=NK0"oN;nh9MZ8V6Mu\e/N;ne9MZ&G9N/`dTNUr,/NVne?O,f9\NfNprrfAjqb0/&TcdC1j
+eCN7(g=k?<hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu-HirT*tRrVQNe
+qu-Bjq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g
++Pb`*g=b03f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t2T3MM_SO%&^V7Co]Xtbc\[],W[^EHJ
+ZIIIVf@\d0g=k<:gtgfChr*JQj5f:`kNM-olK[^$rp1$[mdBQ5nac;Dp%J1XG41FhN;/A9F)l8?
+E,Y_n&8c6!CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j
+:]F2f:&[id9D_?[8cD9V8,YpT7J'"C6iTKorrA&WNW>.;Np2W)7K,dU8,l-[8cME_97BQ/9hnGZ
+:f("e;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84
+StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)
+mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQirqucoo_sFAO8j_~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEVK2#p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8ChmcO5t4=77S-AK;#3uZ;#3ud:&n)`:B"&d;#a>i:B"&\:Amue:&n#_:Adoe:'=9d;GpH^
+;ufqn<;TVo;YsDl;Yj>l<<#tt<WH.r<;fhq<;ffNb0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'o
+lKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu-HirT*tRrVQNequ-Bjq>0mcp\smap&F[aoDJ1Z
+nc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g+Pb`*g=b03f@SU(e^W*tda?Ih
+d*L"_c-4ASb/q`Ga2\+t,K.L:_SO%&^V7Co]Xtbc\[],W[^EHJZ?185GB\:VH$O^_HiABrIXQ]q
+J:[]Os+:u<KnY89LPUbCM2I1KN/WaVO,oG#6N0mN;ts;qF)l8?E,Y_n&8c6!CMITuBP;$kAn>Oa
+A7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id9D_?[8cD9V8,YpT
+7J'"C6iTKos8,gn;s@9]7K,dU8,l-[8cME_97BQ/9hnGZ:f("e;cHat<``F,>$P<<?XI5N@qB4a
+BPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"
+_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAO8j_~>
+JcC<$O8nnPrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m"Bl\KLN1$]drQt>enBh3]&C/PFbfn5Na2Z*:_ns4(^:jKXqn<!As1A6@s1A?Frk/6D
+s1ABE])92=]Ec'[\[f;^\[qUIq76U;])B&C\%&rW\@B#W[f3]6ZiIH1ZN%9,Z3@M;Yd(F:riu4'
+o!8D'Za9Y<!42[3-aU1ebKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T
+!quB_rV6Egs8)WirVZTlir8cPqu$6drVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ
+s6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"G$0f@JLOe/$N]dF$=ecd'h\bfe2PaiMQD`l5p8
+_u@L`_8*h#^:h1l]=PP_\$i`Qd/X$5rjVp;qR?4/p:1?JEcH)<DuOVcD/=!'C2%BqBP1phAS#C_
+A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqus&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAa8c.Nrk/*@lb<Bfs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS#Lf
+BkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\\#Mg^VRe*
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m">[_2]FaAh-QBqH8!1*PLlBVI9Pl?mFP5^UDP4k%;P5g[?P5^[EP5UO>OSk.?NfX*u
+qi1N6!KE-=NVAA6Mi*FNrf$i7oo/m.!fW%rrJgf8s,6Z2s,Hr:rf7&=rJiFiNfT6_O-#IHbg+M\
+dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqYU0gr;?NQrqZNi
+r:p0fqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg&JkQ'fFk5XNCjSn0?io0mp&Du@$
+h;-lAgY1B7g"=p.f%'cL(=U^ZdEp4ccHa\YbKJ&MaN2EA`Pod5rk^q:^q[Xu]tD"i]",>[[^NTm
+e'umuf%8R-g"P07gt^`AhV[8MioB+\k3(sll0@R"lKmm)mI'E2nFH/Ao_%qQr-%Lfrf$Q1"`n^(
+EH#jqD@gZ$CMR[!BkV0mAnGUcA7T3L@KBnFra5\3!+#S/!aAi3r`T8'!*B,"s&K(ur_rhps&&_k
+r_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd<+%rf-Z4l];'7s$lrWs%!,]r_!2`IS<I1:/=\_;,U=k
+<)lt"=BSd2>[1TB?t!MSAS#LfBkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-V
+VPgDoXfen5Za@0M\\#Mg^VRe*`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?b
+nac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhEVK2#p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m"5sn".7n-2I;#*oY;#*oX:B"&d;#a>i:B"&\:Adoe:&n#^:Amud:'OEf<)Z[m;uTbq
+<V'2i<Vobm;u]bm;uKVi;u]f!<E<.#qGd;k-WF)GbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)WirVZTlir8cPqu$6drVHKgqtU0brq?9_rq-6^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJs6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"G$0f@JLOe/$N]dF$=e
+cd'h\bfe2PaiMQD`l5p8_u@Lo_8*h#^:h1l]=PP_\$i`QF)uGFG'8(RG^+LZH@(#<Hld`bIt*!"
+JqAW-KS5&5L5(J>Ll$tGMMmFPNK0'\Oo.QF;XRKX<!H9BEcH)<DuOVcD/=!'C2%BqBP1phAS#C_
+A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqus&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAa8c$:!*&holW!mQs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS#Lf
+BkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\\#Mg^VRe*
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$C2@s;Kp&1:bg=`3dI5Eocd'h\bfn8PaN)<=_ns7*^:jHWr4W*Bs1A6@"hVF\]tD#V
+]`>_A]D]AC]=RsO!4qp8qmlsA]"5G^\brl9\,<`>\[],X[^Q1C!4;[0rj2C*s0;R-s0;.#rj)^4
+Za6t7Zhq*aZa@p#cHjndeC<($f\5*8h;7)JiT&t[k2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\4[^
+s7uZjqtp?ir;GURq>L3gq"t$drV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrosIH!9a@D
+!p/M(ro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&%e'cXkd*M^:*R2gObK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],os8AGd\,No7\+dE(\HHqmEH#jqD@gZ$CMR[!BkV0mAnGUcA7T3L@KBnFra,_5
+?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([/as%E5]rCQuZq+(?Pr'g6Gr'SI'rO`'A
+q7Z10!_#RJrC6o[8P/nR!D?,c9n,o6:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccGI
+GBnL^I=Hd!K8#&9M2[FTOHPfmQC+,1SXuLJUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnd
+eC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$>[LuRE-?_gQM-[0Q33D:PEYs.s,m;Dp5oE>Oco^+qNCf@rf[8Cq2kN8qi:N4rf-u<
+r/U`8qMYE6repi8r/CT4oS`d.rf$f8rf$f6qMbH6$BC++NfB'[O,f6[rf6r<0TaK&cHjndeC<($
+f\5*8h;7)JiT&t[k2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7uZjqtp?ir;GURq>L3gq"t$d
+rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrosIH!9a@D!p/M(ro4%=iVqaHhqm5Gh;$f?
+g=k64f[na+ec+&%e'cXkd*M^:*R2gObK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[]-Idk9/#f%/L+
+g"G*6gYCT?h;7&IiSrqZjlYaikiqBtlg!j'mHs?0n*oo=oCV_Lq#,C'NW4t/N<F9AEH#jqD@gZ$
+CMR[!BkV0mAnGUcA7T3L@KBnFra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([/a
+s%E5]rCQuZq+(?Pr'g6Gr'SI'rJgN2m>h<;7Rm>H!_>mSr^m2a9`@b9:/=\_;,U=k<)lt#=BSg3
+>[:ZC?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-L5:\FNK90aPEhH$R[]k>TV80XVl6VrXfen6
+ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9s7-3^o`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$5X@h,7nQ?J:]+&a:\%?Y:[q3Z:]+&h:]*ue:\.?[:]=,h:%qB`:Jh$dr_<Vk:/4MX
+:B"5l;uTbo<V9>j<W#es;c<9erDNAgr`/eo!EE1s<A2P?cHjndeC<($f\5*8h;7)JiT&t[k2tjk
+l0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7uZjqtp?ir;GURq>L3gq"t$drV??crqHEcr:U']s7?3[
+s7--YrU9dSs6]gPs6K^MrosIH!9a@D!p/M(ro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&%e'cXk
+d*M^:0$VV`bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[]+hF)uGFF`qqPGBeCYH?spbrd=`os*t'"
+s+:9's+LE+s+V#=LkpnEMMmCON/`jYO-0B-r_i/_p/M#i"EJL%E,Y_n&8c6!CMIQtBP;$jAn>Oa
+A7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&[id9D_?[8cD9V8,PjS
+7J'"G6cK*%<<-"p;sdNc77KcF7fl4Q8cD<_92,=ZInid9:f1+h;cHat='/U/>?kH??XR>PA7]@d
+BPM="DJsN8FEMbNH$XjdIt3-'KnbD?N/`m[P*;/sR$sM8StMdQV5L8lX0&P/ZEpsI\@K5a^;%M$
+`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAO8j_~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BPD@/IuBYl\+\5=d/VE'cHXVXbf\#I`l5m6_SEq#^&>V@^&PbF]DT5C]Y2"k]`#PD
+]E,XUqn)m@!kZ%Tr4)g=q76C6$G!aY]",>\\$WQNrO)^8r4)d;s1&*<!4Mm7!OT34ZMLp)ZMh&t
+Z2q;;rj)[3Za0J7r3R]mcHjkbe'uq"f\,!5h;7&IiSrnYjlYail0@U$m-X60n*olHncA@Srq-?d
+p\4X]s7u]kqtp?ir;GOPqYg9gq"t$drV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrojLJ
+kNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:)U6LLbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbcbl@[3rjVj9r3uF1n[TZ\EH,r9DJj<.Chmg$Bk_6oB4baeARo=]@U`bS@/aL7
+?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f,XH7/oWls89M,
+]_fAD^:h5N^A^V$8,l-[8cD>392&&S:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]CeBkqL$DK'T9
+FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\[oGe^VI_(`Q$!?b0/&T
+d*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!+s6g!Xnc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+O8j_~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BO,"XCNFfSN:rV'Q33D:PEYp-!0R8Dp5oE>Oco^+qNCf@rf[8Cq2kN8qi:N4rf.&>
+NfEssqi1H2s,Hf4rJU-'rf-r:qhtB2s,@DHNK0!YNK9-\NfB%sN[0\0cHjkbe'uq"f\,!5h;7&I
+iSrnYjlYail0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kqtp?ir;GOPqYg9gq"t$drV??crqHEc
+r:U']s7?3[s7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+
+ec+&%e'cXkd*M^:)pQUMbK@rJaN)<>`Pf[2_SO%&^V7Co]XtbcdJVH4eCE.$f\"m1g=tB;gtgfC
+hr*MRjQ,FbkNM-orTaFLs6]jS#k.<So(2MHpA"W1m#;"(nVnQ0EH,r9DJj<.Chmg$Bk_6oB4bae
+ARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS
+7f,XH7/oWls87lMNWP9%Nq/817fGpX8H29\8q0K-9heAX:Jakb;H$Op<`W:)=^#$7?!grI@Uiq[
+B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`W2cr$YHY==[C3WW]Y2(q
+_Sa@4aN2NIc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcCf2J,~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BL5!P7Rp!A9i+[Z:\.EY:\%9[:]+&h:]*ue:\%9Z:]=)h:%qE\:]=)p9hnDX9heAX
+;u9Mo;uK\o<V9>h<W5qt;uBPg;uT\h;tj5k<W6%u<?o`5cd:(geCE1'g"P3:hV[8MioB+]k3(sm
+lKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<gqu-HjrSRVNrVHHequ-Biq>9sdp\smap&=U`oDS7[
+nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%irS/urnn@FhVR)EgtUT;g=b-2f@SU(rmV,#da?Ih
+ci23/c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=POlrc0$#FEDYKG'A.TH$O^^H[L3fI!pEmIt<0&
+JqJ]/K`6Z9L51S@M2@+JMi<XTNfT6`r^-T^mSigYr)4VVEH,r9DJj<.Chmg$Bk_6oB4baeARo=]
+@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f,XH
+7/oWls7oXp<;KMp<)Z`d<;oAd8,l-[8cD>392&&S:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]Ce
+BkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\[oGe^VI_(
+`Q$!?b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!+s6g!Xnc&([oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAO8j_~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B5DX7JrlP*bkTTSck4ULcHXSWbK7lH`l,d3_8*dur4Ms@rk/9CrOW$A!kl7Zr4N*C
+qRc^=!P>r6\c95@\c02?\Hf^V\@B#W[^H+A!4Dd6!4Vp:!P,f@\c0)>\$l:D!jo;>r3QF1!42O-
+s0;4%s0Ma2rj)X2Zhgs-Zi.6Pc-F\`daZdtf@\g3gtgiFi8WeWjlY^hl07L!m-O-=mgS^Uo()DE
+o_%nNp@n=\q#C0hqY^6hr;?NLrqcTjr:g*eqYg6eq#:$epAFU`o`"I\o)J7[nGVhUmf2\Rm/QAO
+lM]rKki_..jp1#/jQ#:[io0mp!T2c5h$2ZhgY1B7f`'JJf%&:"e'lamdEp4bcHXVXbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]ZU9RS,]tp\G`o2\F6sK\8cM-Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A
+!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL&[H_uKSF
+r4Mg<o=b2orC?lY!(m/^HV7%+9heAY:f("e;c?Xq<`W=*=^,-9?=.)K@Uit\B4u!pCi4-0EH?5F
+GBnL]I=?]tK7nu8M2R=QO-,TiQ'du/S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHaea
+e'uq"f\,!6h;7&IiT&tZk2tmlkn<:Im-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUp/@s,R,0~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B3\n[Dg-\dQ2$^1Q33D:P`u'/!0R8Doo]6:rfR)@r0.,CrfR#<rK$f8qMkK7s,Hl8
+rf$o:rJgZ4rJgW3rep0&!f`.tqMYB5s,?r:!0$l:rf7&=r/MiCcHsteeC<($f\5*8h;7)JioB(\
+k2tmll0@U$m-Xf@%.NfXo(2MGp%A%Pp\4[^s7uZjr;6Hjr;GINqYg<hp\XpcrV??crqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@g#2Itfg=k64rmrRLe^W*t
+e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Cod*U1fr6lV7e^i=(f\+s3gY:N=h;7#Gi8WbW
+jQ5Oekih:1l43.Hm-X3.mdK]:o(2MHp\o?gNW3u:E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC
+?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J&tJ6c8s#
+NUr2%NrVZJ8,l*[8cD>/92&#R9hnJ\:f1+h;cHat<`iL->?kE>?XR;O@qB4aBPD6uDJjE5F*)SL
+H$XgcIXm!%KSG;>Mi<[WOckroR$jG6StD^OUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcHstf
+eCE1'g"P6;hV[8Mj5]4_k32'o''efLmI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`np&9OBNrOV~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjamnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B0epR7S-'CoM>$SqG.,e:\.?]:]!ug:]4&f:\%9Z:]=,h:&%K`:BF?g:]4&g9a=Ef
+9hnDX:K7<lp/Luj!`W0"q,I2j!E<"m;XIEY;ufqt<Zb>dcHsteeC<($f\5*8h;7)JioB(\k2tml
+l0@U$m-Xf@%.NfXo(2MGp%A%Pp\4[^s7uZjr;6Hjr;GINqYg<hp\XpcrV??crqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@g#2Itfg=k64rmrRLe^W*te'cXk
+d*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7CoE,T]7rc/HhFEDYKG'A.TH$O^^Hi8?lIK+fsJcC?%
+K+iolKnb;9LPUbCM2I4LN/`gWO-'?-s&/5_oi1cds)ArrDf0H0D/=!'C2%BqBP1phAS#C^@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL&[H
+_uKI2!*&\ko2G]ZrC?lY!(m/^HV7%+9heAY:f("e;c?Xq<`W=*=^,-9?=.)K@Uit\B4u!pCi4-0
+EH?5FGBnL]I=?]tK7nu8M2R=QO-,TiQ'du/S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WL
+cHaeae'uq"f\,!6h;7&IiT&tZk2tmlkn<:Im-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUp/@
+s,R,0~>
+JcC<$O8nkOrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BPVF-I#4)`[.r&<d/VE&cHXVXbf\&K`l,d3_SEq#r4Mp?s1JBDrON0E]Y2"k]`#PD
+]_f;J]Xthh]=PS`\[f6E\c')C\[o>_\[h^L!4Vp8s0_d3rjMj9rj`!=!4r0?rO<$?[^NTO[/RB4
+['Tb=n$;u"!4)R0!4)L.qm%NS['\-)d*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nc&([
+oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N
+!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2mpdF$=ecHa\YrlYeoaiMQD
+`l5p8_ns:,^q[qis-s%tqRHO6ppfb&rj_uJ$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5
+?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g<I_>j>Cqn2a<
+otCDqr^ZuZs%32^!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccDHGBnL^
+I=Hd!K8#&9M2R=ROHPfmQC+)0SXuLJUSOfdWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]McHjnde'ut#
+f\5'7h;7)JioB+]k3(sml0I^&mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu-HlrUg)?s,R,0~>
+JcC<$O8nkOrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BO"qUBQABMMO+()lBVO;Pa%C-P4aq=P*(q+Oo(=?PQ$aEOnk+;O8=n5NW+q>NK0"n
+Nr=t:N;nn5N;\b6N;nn;Mu\e)N!,&tN/NYlMZA_8N<"q6N<#"<O8k7?N?ZZod*^=le^rI,g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'a
+rq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%
+bB1[eC2mpdF$=ecHa\YrlZ&!aiMQD`l5p8_ns:,^q\.=cd:%ddf%Ype/Hlgf\"m1g=k<9gt^`Bh
+Vd>OioK1^k3(sll2KrMlg4!*rpC*]nac8Bo_%s%G1MZQE=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@
+U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^K7
+)Ap#NW5%<O7nV,NrVZK8,l-[8cD<_92,=ZInid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM="D
+JsN8FED\MH$XjdIt3-'KnbD?Mi<^YP*;/sR$jG7StMdPUo1/kX0&P/Z*UjH\@K5a^;%M$`5Td<b
+0/#ScdC1ieCN7(g=k?<hVd>Oj5f=akNM0plg4!*mdKW6nc/.boCV\Jp%J+RrqQNhs8)ZjrVZZno
+_sFANrOV~>
+JcC<$O8nkOrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BL5'S77Tg<9i:U[o2,3Xo1o9\r)!Dhr(d5enkT0[r_EJfpJ(`b;#X8i:'"'arD!;e
+rD3Gmr)<Gk!`N&tqGmPps&K%tq,IDno2>$Ur)=tB<`[Mld*^=le^rI,g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[N!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2mpdF$=e
+cHa\YrlZ&!aiMQD`l5p8_ns:,^qXf+E,]`7EW0u7F*)MHG'A.TG^4R\H@($dI!g?jIt*$#JqAW-
+KS>,7KnbA=Ll$tGMi3ORNfK0^6:+RJmSi^Vq,@<5$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g<I_>j4/
+!*&\koi(o\r^ZuZs%32^!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccDH
+GBnL^I=Hd!K8#&9M2R=ROHPfmQC+)0SXuLJUSOfdWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]McHjnd
+e'ut#f\5'7h;7)JioB+]k3(sml0I^&mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu-HlrUg)?s,R,0~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP2+%H%CsDWkJ8Vn'DZmcHa\Ybfe/Ma2Ps6_SO%%^&>V@^&PbF]D];E]=bhj]Y+3V
+s1ABE])9/J]Xthh]=PP`\@K/[pppF9!P,f?\HTRT\@B#Wr3cU4rO)U2!4Dg7!4Vm9s180>$b3aX
+\@8oT[C*BK[JdH4Zgb:"ZN.B+Zi%*WZd-qFdaZguf@\g3gtgiFi8WeWjlY^hl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#:*hqYU0hr;?NIrqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmf2\R
+m/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5h#Z<crn7D+f`'J4f%&:"e'c[ldEp4bcHXT4b6uJ7
+aN2EA`Pod5_SX:l!h6[.qRHO6ppf_%r4!,SE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>
+?2e(1>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS7JT?ds7j5']_T87
+^A^Y&8,u6\9)hP69MJ5V:/=\_;,U=l<E<.%=]np4>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH[U?n
+JV/W1LP^nINK90aPa.T&R[]k>Tq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/
+gYCWBi8N\UjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP1RZASu[<Kol.tl';F:P`q=-P4Oe9P5UO?P5UUDP5UO>OSk1:Nqn\7NrG%3Nr=q<
+NfF!r!0-f5s,@#;rf$o:qi13+!/pf7p58p0rJgf8r/L`:.Z]UMcHsteeCE.%f\5*8h;7)JioB(\
+k2tmll0@U$m-X60n*ol<o(2MGrq-?dp\4[^rqZTjqtpBjr;G@KqYg<hp\XpcrqZEcrqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmqY2e^W*t
+daHOjd*L"_c-611,Ke-LaN)<>`Pf[2_TL*Ic-Ob`dF-Lle'lgrf%/L+g"G*5g]#t<h;7#Hi8WbW
+jQ5Oekih:1l4<4Im-X6/n*ff;o(2PIpNG#F$ZU-(DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GYjS7f5^N7)/cuNW5%<
+O7nV-O8_ZL8,u6\9)hP69MJ5V:/=\_;,U=l<E<.%=]np4>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(V
+H[U?nJV/W1LP^nINK90aPa.T&R[]k>Tq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Op
+f%8U/gYCWBi8N\UjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP0Os6UjU:8l#+Vnkf-Xq+^ocqbI/erD<Jhr(d5enP9'Zr_EJfpeLib!`2Zgr_EGe
+"\qcd:/+L]:]FAm<;]\l<;ohr<<-"d<<6&tmo&aUrDY1FcHsteeCE.%f\5*8h;7)JioB(\k2tml
+l0@U$m-X60n*ol<o(2MGrq-?dp\4[^rqZTjqtpBjr;G@KqYg<hp\XpcrqZEcrqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmqY2e^W*tdaHOj
+d*L"_c-611'["P=aN)<>`Pf[2_JF+.DfBW6E,kkt137PZG'8(RG^+LZH@(!dH[L3hI=HcuJV&K+
+K7nr4L4tD<LkpnEMMmCONK0$[O[;rDmSi[UpeqT#EH#i6DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'gEL^]3t,
+!*&\kp/M#]s%!,]r_!2`InWR2:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]CeBkqL$DK'T9FEMeP
+H@('hJ:W?+L51VCN/`m[P*D5uR$sM8StVmSV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1j
+e^i@*g=tE=hr*JQj5f=akNM0qlg4!*mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFANrOV~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP2$qFaJh*T!-E9dJ;,hchYrfcO\=Gc-4DTaiMK?_ns:+^V9ZZqRlsC]=\!P!5/<E
+!5/6C!5/0?"h_I[]XtcR\H'/6\c95A\[q[K!4`$;qR6@0rO)X3s0_j7r3ud<](rl:\Gir=[C!=?
+[K!W6Zh1O-Z*L[AZa-t3ZR)o`ZE_a'dF6Uqf@\d1gYL`Di8N\UjQ5Oekiq?tm-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5ReC2kFd1F[NcHa\YbKJ&NaiMQD
+`l5p6s8TS(\Gs&5\Epd'\-m:qDf0H0Ci!m&C2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.
+!a&N*r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'pTQr'\6upUg=8q7ZR;r^R#\8P/nR
+HV7%+9heAY:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2R=Q
+O-,TiQ'[l-S=Z@HU84ZaWN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WKc-F\`e'uq"f@em4h;-uHiSrnY
+k2tjkkm6S?m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCc1J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP1OVA8#q*Iu'BeQhcpIQ1L=APl[,5q3(0.qi^oArf[8Cq2kQ9qMtE3rf6u;ooAp/
+s,I)=oS`j2N/[Ljrepi:pl,31s,?l6!/g`5!/gc7s,Hr8rf-r<,)sprdF6Uqf@\d1gYL`Di8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_
+o`+O\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd65k&cHa\YbKJ&NaiMQD`l5p=ai_fNc-FY^d*^:jdaQ[peCN4'f\+s3g=tE<h;-rEi8EVS
+jQ,FbkNM-orot!Zm-O--mdKW7o()DFp%Qjn$ZU-(DJj<-Chmg$C&VcHB4h-S!G#^>@fKj:@/aL7
+?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7f5^Q7(rWrNW5%<
+O7nV/O8_WN84cDP8pa3)9MJ5V:Jakb;H$Ln<E<1'=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A1W
+H[U?nJV/W1LP^qJNfT<cPa.T&S"-(BTq\?[Vl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF6Uq
+f@S^0gYL]Ci8N\UjQ>Ufl0/K=lg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP0Rs77I2G!DQDg:B4/h:]+#h:\di`:B=9fqG.&dr(d5er_WSir(d2dnkT0[r_EJf
+peL`_rD*2`s%`GerDWYor)<Mmr_j##<E)pt<E/Nh!E<"c;Y3oe<$BT8dF6Uqf@\d1gYL`Di8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_
+o`+O\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd2^NZcHa\YbKJ&NaiMQD`l5o4CM[j*Df9T5E,]grE\VWWFEVhOGBe@XH$XgaI!^6gI=?Zr
+J:W<(K7ei2Knb;:LPUbCM2I4LN/`jXO-*@=mSiXTq,@8l$ZU-(DJj<-Chmg$C&VcHB4h-S!G#^>
+@fKj:@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7f5^Q
+7(rWm<<-"m;ts>k7fl4Q8cD>/92&#R9hnJ\:f1+h;cHat='/U.>?kE>?XR;O@qB4aBPD6uDJjE5
+F*)SLG^=^bIXm!%KSG8=Mi<[WOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"_o9X:aihlP
+cHstfeCE1&g"P3:h;@/LioB+^k3)!n#jUaBmI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?
+s,R,0~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^VrpjjpnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP)"!GCGF7UU&8FdJ;,hchPj!cd'h\bg"ASaN)6:_ns7*^:jNYqRupA!5&0?"hVF\
+]tD#V^&PbB]*>p[]=beg])9)=\G3W7])0&:\,a#4[f!N1[K!W4[/m_FrODd9rjr'=s0r'<rNu[5
+[JmQ5ZhUj+Zi790Zi7?3ZNIM>Za0P9-dL)ddaZguf@\g3gtgiFi8WeWjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#:*hqY^6hr;?NFrqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVeWmd9E?
+liQM<lMg&JkQ'fFk5XNCjSn0@io/kqhuV`lrnRV1g]#n6g"=p.f%/C$eC2kFd1+IKcHa\YbKJ&M
+aiMQD_#FDDm^VSnq7$TIDf0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQr^=I"ot1+6s1SEErk8-A"@l!R8P/nR
+!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=Q
+O-5]lQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfY]Y;.s_Sa@4aN;WLcHjkbe'uq"f\,!6h;7&IiT&t[
+k2tmll0@X%mI'H3nF?PLs76Edp%A%Pp\jmeq>^<hqu6NlrUp/@s,I&/~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^VrpjgonF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP(IWASZ@5JW'Gmq3D#Gns0BCP`q=-P3nD0P5UUDP5^U>OSk1:Nqn\7Nr=t.Nr"b8
+Npr#-N<#"8NW4t;NVSP'MZA_8N<P9!N/W[Rrf&;Nd*^:ke^i@)g=tE=hVd>Oj5]7`k3)!nlKdg'
+mI'H3nF?)?oCV\So`Fj]p\sseq>^<hqu-HjrR_&FrVQNfqu-Biq>0mcp]'sap&F[aoDJ1Znc/+W
+mfMqEmJZAQlg!d7l2TrIkPjWDjT+B@ir\6!iVqa9hqn@g!SlH/g'ZNcf@SU)e^W*tdf.W(d*L"_
+c-4ASb/qcHaN)C$aU626c-=P[d*^7idf.]8eCE.%f\"m1g=k<:gtgfChr*GPioK1^kNM-ol2KrX
+lg4!*mdBQ5nac8Bp%A(*N<O9>DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL7?<pk9>QS,5>5hY+
+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7f5^S7(rWpNW5%<O7nV0Ns%sD84cDP
+8c_RYr_7l;:Jakb;H$Ln<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%K
+NfT?eQ'Rf*S"-(CTqeE\Vl?`!Y->1;['mHS]"Gbl_8=+/`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_V
+jlY^hl07L"m-X60n*olIo)J:bo_%nNp@nO\s7u]kr;6KkrVcEgJcC`0J,~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^Vrpk!tnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP'Os6psI58PN&X:JO[a:]+#h:\[ca:]F5k:\mid:]!oe:]=2i:]!od:[q3Z:]=)h
+:%qE\:]=,d9`e'a:A@Tb<;fbn<;TVn<<#l%;H$Oo;cHarnl>]hmS`[U-dL)ddaZguf@\g3gtgiF
+i8WeWjlY^gl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#:*hqY^6hr;?NFrqcTjr:p0fqYg6dq#:$f
+pA=O_o`+O\o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn0@io/kqhuV`lrnRV1g]#n6g"=p.
+f%/C$eC2kFd14OLcHa\YbKJ&MaiMQDD#S2aCi+'.DfBW6E,or=EcZ>FG'8(RGlDsgHMr14I!pEl
+It3'#JqAW-KS>,7L51P?Ll$tGMi3ORNfT6`m8NOSq,@2j#$#V\DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7f5^S
+7(rWk<<-"m;u'Aq7n?0B8cD<_92,=ZInid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM=!DJsN8
+F*)SLH$XjdIt3-'KnbD?Mi<[WP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_^;%M$_o9X:aihoR
+cd:(geCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nc/1[o*+dZp%J+RrV6Egs8)Zjrqu`np&9OB
+NW4M~>
+JcC<$NrSbNrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1mmFF&OuR]3gqdJM;ichYrfcN)8ibmVb=aiDB=_ns:+^V9][q7QjB]=\$Q"hVF\
+]tD#U]`PjY]_oAF]Xteg]=RRDs1/6A])0#<\Giu2[edB([/m_Frj_m:qmug<s0r*=[f3Z8[^H+A
+s0MO,s0Dm7Za6sDZi7?0ZQuoaZHpqGe'uq"f\,!5h;-uHiSrnYjlYail07O#m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6Hjr;G4GqYg<hq"t$drV??crqHEcr:U']s7?3[rpg$XrpTmTs6]dO!pf.:
+rosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"e'e6C$..#DcHXSVbK@r?s6dD^
+\bET:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm
+;#a>j:Adid9`@]^9)_E\8GPdS7f5]errBY']Cro:^&,MG]gt[cr^mAf9MA/T:/CjcIo0-C<)lt"
+='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMgRV5L8l
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NrSbNrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1m]@q]_&H\@CWQi!*JQ1L=APl[,5qNCQ7!0I#=qi^oArf[8CqN1W9qi:K3s,R&;
+nW*X/rf6l8!KN00N;nn:NqSJ4Mu\e8N;&51MZ/M8N/NYoNVeYYMpKeue'uq"f\,!5h;-uHiSrnY
+jlYail07O#m-X60n*olHncA@Srq6<b!;HHes7uZjr;6Hjr;G4GqYg<hq"t$drV??crqHEcr:U']
+s7?3[rpg$XrpTmTs6]dO!pf.:rosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"
+e'e6C)plpVcHXSVbK@rGa2l?Dai_fMc-=S]d*^7idf.]JeCE.%f\"m1g=tB;gtgfChr*GPj5f=a
+kNM-ol0@Nulg4!*mdBQ5nac8Bp%J.)N<F0;DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/
+>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7D&R"N;&>3NrG+5Nr+k>
+N^u]4r^mAf9MA/T:/CjcIo0-C<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+
+L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=
+hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NrSbNrVc`nr;6Njs7uZhG5(_(p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1mC6psI67nHENr_EGgr_WSiq,$ubr_NSjqbI)crD*>fr_WSir(d5en4s!Zr_EJf
+peL`_r_E8`s%`;ar)E\pr)EMks&B"sr_ibp"&`&r<:a,i;ufkc;YF$4cdC.heCE1'g"P3:h;@/L
+ioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HjrRUuErVQNfqu-Biq>9sdp\sma
+p&=U`oDS7Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g!SlH/g'ZNcf@SU)
+e^W*tdf.W&d*L"_c-4ASb/nC6D#S2fCi+$,DfBW5E,]i;EcQ5CF`qqPGBeCYH@#O:#(1iIIXclu
+rdt0&!/1?*",;SdM#N5:MMmCONK0']OmZ0;<;KPk<;ff"Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;
+?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5]err?$h
+<<-"n;u0Gq;b0GNr^mAf9MA/T:/CjcIo0-C<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMeP
+H@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1miCNXuVP+Sl"dF%m=rQkDg!71Yk!mf0;rlknrb/hT@_o'@-^qRLp]_T8@]E#SB
+])TDA]`>_C^&PbB]*>p[]Y(kf])K5?\G!H5])&u;\,s.J\+R03[C!<IqR#t(!k,SIrj_j9r4;m<
+"LtqM[^H+CrNuU2!OB'2Z2h0-ZSJhnZa@'F['[0GZF&!+daZguf@em4gtgiFi8WeWjlY^gl07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?NCrqcTjr:p0fqYg6eq#:$epAFU_o`+O]o)J7[
+nGVhUmf2\Rm/QDOlMg#Lki_..joXZ*jSn0bio/kSi8<GKh;-lAgY1B7g"=p.f%&=#eC2jndEp7d
+cHa\YbIdfC\EUQt\--_fDJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#
+<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjV7CiHu](N]/]`,VC^&u&>8P/nR!D?,c9n#i5
+:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,
+S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q_Sa@4a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$
+m-X60nGi%YncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1m\?=[_gG(,42Q^@W9rKZr>"-o+7PP^O:OT:L<Oo1C@PQ$aEOnk+;O8=n4NW5%;
+NUVr.N;S\8Nr"b(Mu\k:NqJD3N;/;2MYrA:MN!LRN/WbqN$sUCd*^:ke^i@*g=tE=hVd>Oj5]7`
+k3)!nlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrRCiCrVQNfqu-Biq>9sdp\smap&=U`
+oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%j!<XCiS`YOhqm2Fgt^Z<g=b03f@SU(e^W*t
+da?Ihd*L"_c-4B1`BqVdaN;QHbKJ/Ucd:%ddF6Ome'umtf@S[-g"G*6gYCT?h;7&IiSrnYjlYai
+kiq?sl0@U$m-X6/n+#r=oCMYKpWSU"Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS".
+>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7fPofs8S&PNW5%<O7nV4NrtD5
+8P/nR!D?,c9n#i5:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7
+M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q_Sa@4a2lEHc-F\`daZguf@em4h;-uH
+iSrnYjlYail0@U$m-X60nGi%YncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1mC6UX=384QBN:/:das%rYipe^obr_NSjqbI)cr_EDfr_WSiqbI,dnP9*[r_EJf
+peL`_rD*/_!)E5`"&;co;uBSp;uBVk;uT_r;uKSo;uTYr;cH`q<W?%o<W?%u;t3c\;^Tl=daZgu
+f@em4gtgiFi8WeWjlY^gl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?NCrqcTjr:p0f
+qYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..joXZ*jSn0gio/kSi8<GKh;-lA
+gY1B7g"=p.f%&=#eC2jndEp7dcHa\Yb@t^+CM`uc$#FHqDf9T5DfB^pErU4qF`qqPGBeCYH?spc
+H[C-gI=H`sJGt0#K)gT(Kb/uoLPUeDMMd=MN/`jYOHEN3;t!]_;uBVl<<R5XDJa4hCB80arb)=F
+B)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V
+8,PjV7CiHu<:X&h<;TVn;ufqt<!-&i8P/nR!D?,c9n#i5:f("e;c?Xq<``C+=^,-9?=.)K@Uit\
+B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q
+_Sa@4a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60nGi%YncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcC`0J,~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hCN=WKLmFjBd*_j>qp58gs3L\ks3C\jrlkhpbK7fD`5BL0^q[V_]_T5B]XtfS
+\cBAA]`>_C^&PbB]DoPD])oXW])9)=\G*N6])0&;\Gs&2[f3Z<[^EKLZa9J7ppL+0!4Vm9r42d;
+rOE0C\$icS[^EOA[/I?1ZN%68ZEpjD['R+:[/\N'e'uq"f\,!5h;-uHiSrnYjlYail07L"m-X60
+n*ol;o()DEo_%nNp@n=\q#C0hqY^6hr;?NCrqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhU
+mf2\Rm/QDOlMg#Lki_..joXZ*jSn0?io0mp&Du@$h;-lAgY1B7f\"g-f%'cL#Lh,KdEp4ccFNuD
+\EUQq\GpFID/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/ko
+rD<Mir_EDdr_3;aqb$iZrCHcTr'n3rrjqd7p:U@;s1SQJ8P/nR!D?,c9n,o6:f("e;c?Xr<``C+
+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HUSOcbWN*&&
+Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s,I&/~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!h>[h8[F*`FqQC%T:qj$c=s-3VLPP^O:OoLO=Oo(=@PQ$aDOnt1;O8Ft5NW5%;
+NU`#/NW+t:N:`,!N;eh9NqJD3N:r/2MMmAjN;nn;N%Kt8dF6Uqf@\d1gYL]Ci8N\UjQ5Oekiq?s
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirVZTleGf=Cqu$3crVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgtUQ:g"=s/f@JLOe.'mTdF$=e
+cd'GH`5T^8rlG,]&^&;?c-FY^d*^7hdaQ[peCE1Mf`0VNg=tB;gtgiDhr*JQj5f=akNM-ol0@O!
+lg4!*mdBQ6nac;Cp%Rp7!05ios)%jSD#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*
+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7_&KtN;&>3NrG+4NrG+>8cD<_92,=Z
+Inid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$XjdIt3-'KnbD?Mi<[WOckuq
+R$jG6StD^OUo(&hWiWA-Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8Mj5]4_k3)!n
+lKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!h5sn%/7Rp$F;bm*`q,$ubr_NSjqbI)cs%`Jfr_WSir(d5en4s!Zr_<GfpJ1W^
+r_E5_!)E8ar_<Mj;H!Kmoi1ifr_rkrrDEVor_i_o"&r9"<W5tn<W,kf;Yj>ld43Vpe^rI,g=tH>
+hr*JQj5f=akNM0plKmm)mdKW6naZ2@oCV\Jp%J+Rp\ssfq>U6gqu-HjrRCiCrVQNequ-Bjq>0mc
+p\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%irS/urnn@FhVR)Egt^Z<g=b-2
+f@SU(rmV5&da?Ihcd0mMrb2ILCMRbcCBA<hD>eDQE;sqXEWgH*FEMd+G6E/9H$Xf9HiJKnIK+fs
+JGt0#K)gT(KarimLPUeDMMd=MN/`jYOSVrM;smW_;uK\i<W?q;D/B2e!GZ?JBE;aXrac+@A,]pB
+@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'n3rr`&Gg
+s&Akor`&nts&B"ir^m2a9`@b9:/=\_;,U=k<*!%$=BSg3>[:ZC?t*SUAS,UhC27X'DfKf=FEVkR
+H@1-jJ:`E-L5:\EN/is]P*M?#R@B_<T:r$UVPgDnXKJe4Za@0M\[oGe^VI_(`Q$!@bKS8Wd*^=l
+e^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1meD01)UNgluVrm:Pgs3U_jrm:\k!7(Sg%Euu9`l,d4_SO%%]tM)S^&P_F]D];A
+]=e-V!5/6C!kc.Xr4<$C]=e-T!4qa3!4r$;s0r->[^Yq<rjDd7"LkhI[C#n=qm?+*s0hm8"Lu"Q
+\@DLJrjr'=s1&*<s0hs8s0Vd3!4)O/#-tM>Za@'Frj3iTdF-Opf%8R.gYCWAi8ESSj5f@bkNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZWmdJj"@r;?<drVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgY:H9g"=s/f@JLOe-+7KdF$=M
+s7*V^\am91D?4TjrbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_o
+s&&_ks%iYir([/ar_*,\r^m)[q+(HS\,ZB;ot0q1r4N)%r^qZ59MA/T:/=\_;,U=k<)lt"='8[0
+>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@($fIt3-'KnbGAN/`m[P*;/sR$sM8StMdPV5L8lX0&P/
+Z*UjH\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKmjJmI'H3nF?)?oCV\J
+p%J+RrV6Egs8)Zjrqu`np&9OBN;nD~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1me?"7PbG'nq#rg*GHp6G]Frg!YOP`q=/P4t+<OSP%8P5^[EP5^U?OSk1:NqeS6
+Nr4n)NrG%6N;&>(N;nn:N;eh9NWG-"pPo33regc6rJLl=Mi!=LN/RXn+cFareCE.%f\5*8h;7)J
+iT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtp?irVb.CqYg?ip\XpcrqZEcrqHEc
+r:U*^rq$*Zs7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+
+ec+&&e'cXkd)*^"`;ddX`lQ7#aUu\=c-FV\d*U1fdaHUneC<%#rn%t=g=k<9gt^`BhV[8MioK1^
+kND'ml2KrJli-5XmI'E2naZ2AoC_kJNW5$mNW3ksD/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&E
+r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTs$jKtr/CB0s,R)>oo9'6
+8cD>392&#R9hnJ\:f1+h;cHat<``F,>$P<<?XI5N@q9.`BPD6tD/O<4EccGJG^=^aI=Hd!K8#&:
+MN!OUOHPfmQC+,1SXuLJUSXleWiN8)Yd(OB[^`l[]Y;.s_SjF6aN;WLcHjnce'ut#f\5'7h;7)J
+iT&t[k2tmll0@X%&+/fRn*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUp/@s,?u.~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1me6:=4184Z<HpeUod!)NJgrD3Dh!)NJerD3GgqbR5gr_NGerD2oX"]%lh:/+IX
+:A[ie:A@N`:A.K_:B+)i;uT\m;tj8g;u]es;u0Dl;>sMj<;KSp<;]\p;ZB\k;Z'H9dF-Opf%8R.
+gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZWmdJj"@r;?<drVHNh
+qY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgY:H9
+g"=s/f@JLOe-+7KdF$>?B`DfHCB&&LD#S2OCi+(gDuXeVEW:%^F*)MHG5c[gG^4R\HN&9kI/eWp
+J,b'!K)^K'K`6Z8L51P?M2@+IMi3ORNfT:p<;fb^<;oho<:s8kD?4TjrbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*,\r^m)[q+(HS\,ZA*
+nl>]hr)3Spr)E_gr^qZ59MA/T:/=\_;,U=k<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMeP
+H@($fIt3-'KnbGAN/`m[P*;/sR$sM8StMdPV5L8lX0&P/Z*UjH\@K5a^;%M$`5Td<aihoRcdC.h
+eCN7(g=k?<hVd>Nj5]7`k32'olKmjJmI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OBN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhH2%%+p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mfBPhm>Kp/.2`R*!*ci)2kcd)O7%F!#;a2Q!8_ns4(^V.;T]`PjY]D];@]`,SE
+]_oJC]_f>?]EGjZ]=PTP\H'//\c9/@\$id?[K3eErO)R3s0i'<[C,q=qm?+*s0hm8rji'=rOE$A
+\[f<M\c92>\,Wo:[JmQ/ZN7A<rj3]P[*d@Pe^rI,g=tH>hr*JQj5f=akNM0plKdg(mf)YZnF?)?
+oCV\So`Fj]p\jmeq>^<gqu6NkrR(W@rVQNequ-Bjq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZDO
+lN$5KklU)3kPjTKjlGL_j5T(Wrnn@FhVR)EgtUT;g=b-2f@SU(rmUqs[/]^,k.0uk!cDjkrbD^Q
+BkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDNbq;,R6fs%iYir([/ar_*/]
+rCQuZqF@snqmuI4!5/6Ar4N!Ar^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&
+DK'T:FEVkQH@('hJ:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<
+b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhH2%%+p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mf>[CrTE-QkgP*VF2Q1pREQi<9QQ'@Msr0$f:rK-l<qNCiArf[8Cq2kN8qi:H2
+!07#;nW![1NfO*us,R,=rJU`7r/CE1qMbH6rf$i9s,?o9qi:E1s,?l6s,?u9!K)g7N#dh8dF6Uq
+f@\d1gYL]Ci8N\UjQ5Oekiq?slg4$,rpL'\nac8Bo^r.U!quB_rV6Egs8)Wirqu]mdJj"@qu$3c
+rVHNhqY:'arq?9_s7H?_r:9mXs7$!Us6]mSrTsRM!:'OI!pJh1roOIIjQ,@]io8qri"4f&hVI#C
+gY:H9g"=s/f@JLOe-4=9^V[n+rkoGg`lH0AaiV]JbK\>Xcd:(edaJ-Ds3qt<f@\a/g"P07gt^`A
+hV[8LioB+]jlbgjkir*3%dWKJmHs?0nF?)?oC_eNnr<X/fSorMD/B2e#&7jcBP1sirac+@A,]pB
+@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3;ar(?oZr^clU[K$,_pPo35
+!0@&<rf?r:r^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&DK'T:FEVkQH@('h
+J:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7)
+g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhGPCh)p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mf6UF107nH<H:A7Q[;#X8j;#a>g:Amrg:A[id;#X8h:AmuX:B+,h:&n#`:A[id
+:A@N`:A7Q_:B+,i:'"<mr_iVlpJh#g!`W)srDNYm"]A2q;c6Qn;ufkq<;]bq<;f_q;Z0Po;?9]o
+r)4Q^e'uq"f\,!5h;-uHiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=[q#C0iqYU0hr;?N@
+rqcTjr:g*eqYp<eq#:$epAFU`o`+O\o)J7[nGVhUmJuYQm/QAOlM]rKki_..jp1#/jQ#:[io0mp
+&Du@$h;-l@gY1B7f\"g-f%'cL!7Up[rb2=G$>O?lCi!m&Ci!s+rGV^Ts)J'Z$ZgE4F`qtQG^+LZ
+HMr3jI/eU$It3'#JqAW-KS9>Y%YfaoLl$tGMMmFPNK0']h,OAPr)E5e!cDjkrbD^QBkV0mB4h-S
+!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDNbq;,R6fs%iYir([/ar_*/]rCQuZqF@sn
+qc*2fs&Ahn!*&nsr^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&DK'T:FEVkQ
+H@('hJ:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1j
+eCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA8?41Iu0GbZ-iKq"4#6=cMl/gciMJ<rlkhpb/hWB`5BI.^q[VX^&P_F]D];A
+]=dpP!kc.XrO`*Br4E!>!4qg5!4r'<s1&*<osXe+ppU12rjD^2q6^10s0V^3#.D"N\$rlWn@AS/
+s0r$:rj<'=['R'DZa-mCZMq3QdaZdtf@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`
+p&Ojcq#C0hqY^6hr;HT?rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlMg&J
+kl9iFjp1#/jQ#:[io0mp!T2c5h$2ZhgY1B7f`'J'f%%&*rODm<q7,Osn$isID/=!'C2.HrBP1si
+AS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3;ar(?oZr^cuX
+ZiBm5n%8M1s1SG)s%@f79heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4X
+I!pKpJqJc3Ll%%KNfT<cPa7])S"-(BTqeE\Vl?\tXfo"9['mHS]"G_k^r"".`lQ9EbK\>ZdF-Op
+f@S^0gYL]Ci8N\UjQ5OekiqBum-G&GmdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1:'oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA6`PRCialQMYi\4QN*<NQN*3LPPp[=Oo:C<Onk1>PQ$aEOnt1;O8Ft4N<#":
+NUi)0NW+t;NW+t:NVnb8Mu8P1NV\V6N<5-"N:r53NfF!tpPo33repc7s,-l7rehlHeC<($f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7uZjr;6HjrVb(AqYg<hq"t$drV?<b
+rqHHdqt:!]s7?0Zs7--YrU9dS!:BaOs6B[MrosIHs6'CD#Nb%-j5].YiVqa9hqn@g#2Itfg=k64
+rmqJ-e\&W1^VI_(_u@Re`Q#s>aN;QHbKJ/UcHjkbdF-JBe,Ro9f%8R+g"G*5gYCT?h;7&IiSrnY
+jlP[gkih:1l43.Hm-X3.mdTc;o(2PJp[aCCNn97&DJa3*CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4
+?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9DhE\8cD9Z8$i6lN;&>-NrG+<NrM`O
+97BQ/9hnGZ:f("e;c?[s<``C+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQC+)0S=Z@HUSOcbWN*&%YHbF@[^WfY]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$lj<(In*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC]/J,~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA3iOM77Ba=:Jgsb!)EMhqG@/es%r_kqbI)c!)EAds%r\jrD*8dn4j*^:/=VZ
+pJ1T]s%`>`s%`>brD*>fr_EJn!E<"s;Yj>e<;KMp<)Z`p;Z'Aq;Gg:h;cN`prD`_qqc*Dj,Z7Q?
+;cD,oeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HkrQkK>
+rVQNfqu-Biq>0mcp]'sap&F[aoDJ1Znc/+Wn,MeUmJZDOlN$5Ll2TuIkPjTKjlGL_j5T(Wrnmh7
+hYu=8gtUT;g=b-Xf*'[TAS,QRBE)ZEB`i*cCM`uc")MgkDZ+MRE;sqXEX-Z-F`hkOGBj+4!.+Tj
+s*P3&IXcluJV&K+K7npWKarimLPUeDMMd=NN/`jZOPNn9;uBVa<=s+cChmg$C2%?pB4kgfARo=]
+raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`@]_9)V?\8Gu&bs8#^f
+<W5to;g),?<D#kV92&&S:/4S]:f1+h;cQk!='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$Xjd
+It3-'KnbD?Mi<[WOckrpR$jG6StD^OUo(&hWiW>+Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE1&
+g"P3:h&,&-iSrnYjlYail0@U$m-X60nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s,?u.~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7BCsG_;!CVR?BKs3:YkcMl/gciMJ<rQP\maiMK?`5BI-^q]TV!kc.Wrji0C
+]Y+'Rrk&KJ]Xteg]XtiU]DoJ6\H'5?\H'/=\HKFO\$id?[emK0[f<`8\Gir9[fj.I[C!=?Zi.62
+Zi7?3[JdK3[/dZ6\,Wu-\c92>\,NfA['mBLZa6sDZMq0Ue'uq"f\,!5h;-uHiSrnYjlY^hl07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?N=rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[
+nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n0g"=p.r365#\Gj&8\E(3f
+\.ELnCMR["BkV0mB4b^dA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYi
+r([/as%E5]rCQuZs$sBpq7?%,r4IKl8kViO9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!p
+CMds.EH6/DGBeF[I!pKpJqJc3Ll..NO-#NgQ'Rf*S"6.DTqeE\W2co#Y->1;['mHS]=bkm_8=.0
+`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl0/iGlg4$,n*fc9o()DDo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC]/J,~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7AhQBPhm=K8]\np6P`Fs-<YMrfdDHr0$i;rK-l<q3(`@rf[8CqN1T8qi:6,
+nr<d2NfO'trf6i7r/CQ3repl;N;S\3N:2c*NqJD2MunorN;\Y[e'uq"f\,!5h;-uHiSrnYjlY^h
+l07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?N=rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\
+o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n6g"=p.]"G\i^;%M`
+_uI[T`<aK(aN2KFb0/!-cMu8kdJqYodk9/#f%8R+g"G*6gYCT?h;7&IiSrnYjlP[gkih9rl0I[%
+m-X3.mdTc;o(2PJp[jICNn'+#D/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&
+r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^d&ZZN'`ZpPo!/rf@&=I7d.+9MJ5V:Jakb;H$Ln
+<E<.&=]np5>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:_GNK90aPEhH$R@Bb=TV8-V
+VPpMqXfen5Za@0M\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5oFckiq=ElKdg(mdKW6
+nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7@kn6iKOU85B+Zs%`Siq,$o`qbHi\r_WSir_EAemS3j[:/4OY:A[ie:A7H_
+:A7Q_:B+,e:B+8p<E)oq;Yj>k;ufkp<;TSq<)Z`p;YX)q;H$Ll;H$On<)ifrrDWhu<)i`n-<+!o
+eCE1'g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kqtpBjr;Fq?qYg<h
+q"t$drV?<brqHHdqt:!]s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@Ds5a7Aro=%<!9*q8!T2c5
+h#Z<crn7_4f[n_aAS#IcB4q3Wrb2ILCMRbcCBA<hD>\>PE;sqXEY`_<F`hkOGBeCYH?spaH[C-f
+I=H`sJGt0#K)gT(K`Hl,LC8opM2I4LN/`gWOHB*6!*/>a!)repm8X^7Chmg$C2%?pB4kgfARo=]
+raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8H22cs7oXe
+<W,no;h%bH8kViO9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!pCMds.EH6/DGBeF[I!pKp
+JqJc3Ll..NO-#NgQ'Rf*S"6.DTqeE\W2co#Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1
+gtgiEi8N_VjlY^hl0/iGlg4$,n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC]/J,~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^Vrpk!tnF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@qfh(I>3oTXhN-YcMl/gciMJ<rlkkqbK7fD`5KO/^q[XupUpU?]DfDA])]M=
+]`PjY]`#JA]`,PC\cK@QoXOt5rj`3B\[f5[\+I-,[JI?2[JmZ9\,Ec8[g':K[C!<IZi.91Zi@E4
+[J[B5[C3OA[fEr/\c9/?\%)FHr3e;c['R*EZIICTf@\g2gtgiEi8N\UjQ5Oekiq?tm-O--n*fc9
+nac8Bo^qhLp@e7TrqQKgs8)Wirqu]mc2RS<qu$6drVHKgqtU0brq?9_rq-6^rUTsXs7$$Vs6fpS
+rTjUOlK\B5s6'IGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^s8)iprNQ>%\G`u8\E(3e\.NUqChmg$
+C2%?pB4baeARo=]raGn:@/aO5?3":1>QS,5>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?]8?r3g](!?1]E1\u9`@b8:/=\_;,U=k<)lt#=BSd2>[:ZC?t!MSAS,RgBkqO&DK'T:FEMeP
+H@('hJ:W?+L51VCN/`m[P*D5uR$sM8StVmSV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1i
+eCN7(g=k?<hVd>Oj5f=akNM0plg4!*mdKTPnF?)?oCV\Jp%J+RrV-BgrqcTjrVZZno_sFAMuS;~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^Vrpk$unF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@pEAPBlJ9ELQ[pfp6P]Es-<SJs-*DEplYK9qiUZ:rfd>ErfR&=r/^`8pl,96
+r/L9-s,I&=rJgf:pPo'/qhtB2rJgZ4mZ%7,"c\J#N/`enN<,'!rf$l8s3rIJf@\g2gtgiEi8N\U
+jQ5Oekiq?tm-O--n*fc9nac8Bo^qhLp@e7TrqQKgs8)Wirqu]mc2RS<qu$6drVHKgqtU0brq?9_
+rq-6^rUTsXs7$$Vs6fpSrTjUOlK\B5s6'IGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^s1/0@#J@aa
+^VI_(_u@RW`Q#p<aSs:Eb0.uRcHjkadF$Cje'lgrf%/L+f@ej2gY:N=h;-rFi8N\UjQ5OekNM-o
+lKRX#m-O-,mdBT7o()DFp@n6>qi93d&T2H%CMR["BkV0mAnGUcA7T3L@KBnFra5\3!+#S/!aAi3
+r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCR#[Z2aNVpl5*0rf7/A8kVkW9n#i5:f("e
+;c?Xq<``C+=^,-:?=.)K@Uit]B4u!pCi4-0EH?5EGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.E
+U84W`W2co#YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8WeXjlYail07O#m-X60
+mgJXTo()DEo_%nNp@nO\!;ZWjrVQQkrr)KgJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@mNCL7K,gZ92JF`:B"&c;#3ub:A%E_;#X8i:AdoV:&n)h:&n#_:Adoe:A@Q`
+:A@W`:B"&g:'scl:JY"k<)Zaq;uKSp;cNWms&AtrrD`\n!`W)sr_iGe"&_un;Z0Po<;fhs<;ont
+;u]hs;ub>qf%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6naZ2@oCV\Jp%J+Rp\sseq>^<gqu6Nk
+rQY?<rVQNfqu-Biq>9sdp\smap&=U`oDS7Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@j8\*=
+iVqa9hqn@g!SlH/gAYLb@qB4`AnPcUB`DcHCAquKD#S2UCi+$-DJsH4E;jkWErU7]FoHRfG^4R\
+HMr0pI!pEmIt3(KK)^H'K`6Z9L51P?Ll$tGMi3ORNK0*^oi1rkk#C\I&T2H%CMR["BkV0mAnGUc
+A7T3L@KBnFra5\3!+#S/!aAi3r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCR#[Z2aMs
+p/V&jqbmPg92,=ZISN[8:f1+h;cHat='/U.>?kH??XR;O@qB7bBPD6uDJjE5F*)PKG^=^bIXm!%
+KSG8=MN!OUOHPinQ^F52SXuOLUnsufWiN8*Yd1UC[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7
+h;7)JioB+]k3(sml0I^&mI'H3$h3]Wo(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s,6o-~>
+JcC<$N;rPLrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q'4oG_(a:Ts=L?rm1Pi!RK'ibm_e<aN)9<_ns7*^q[VY^&P_L]=PSc]=bfP
+^&GYL]=bbf]Y(khrjr0Arj`$?p:117rji'="M)%P\$u"<r3cF1qm?[=\[]/Y\$i^C[f3]7ZiIH1
+[/RE3ZiIN3[/[N6[emQ6\FmE1\Gs#B\@8rU[C3OCZl[`If@S^0gYL]Bi8EVTj5oFckNV6rlg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirVZWmbPqA:qu$6drVHKgqtU0brq?9_rq-6^rUTsXs7$$V
+s6fpSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=2h#@0MqZ6WoYl=^5rOMg8j14Nds)&Qg
+Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVl;#a>k:Adic
+9`Ic_9)_Dcs7Ntp]DfD@]73II9heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,B
+G'A4XI!pKpJqJc3Ll%%KNfT<cPa7])S"-(BTq\?[Vl?\tXfnt7['mHS]"G_k^r"".`lQ6DbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-
+s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q&\OAo2U7J;X#crg3VLrfdDHr0$l<r/gf<plbW?rf[8CqN1T8qi:K3!06r9
+o8`j1s,R#:s,QZ0qi(H2q2><5pPeHus,6u:N;\_]N/ipXN/Z9:f@S^0gYL]Bi8EVTj5oFckNV6r
+lg4!*mdKW6nc&([oCW%Ts7QHerV6EgrqcQirVZWmbPqA:qu$6drVHKgqtU0brq?9_rq-6^rUTsX
+s7$$Vs6fpSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=Agpjl)\[oAa]Y;+p^r"",rknrY
+`lH0ArlHP1bK\>Xcd:%ddF-Ile'umuf@\^-g"P07gYCT?hV[5LiT&t[jlbh+kQgA;l0I[%m-Xf?
+#Oq9So(2PJp\'UDNms'gDA@#)CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"
+s&B%urDW_os&&\js%iYir([/as%E5]r^j<noo/[*p5XVq9MJ5V:/=\_;,U=k<E<.%=BSg3>[:ZC
+?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D9"R@B_<T:r!TVPgDnXKA\1ZF%'L
+\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg3sEmI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAMuS;~>
+JcC<$N;rPLrVc`nr;6Njs7uZhH2%%+p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q%bk6UjI785;tZ:&n)c;#3ub:A.K`;#O2i:AdoT:'49e9hkCXqbR5epItW_
+peUf_s%iMerD3Go!EE+u;ZTirr_`er<)icor`&kqr`&eos&8tsr)3Gi!)WMhs&/eos&Aeo+]D?>
+eCE1&g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7uZjr;6HjrVaq=qYg<h
+q"t$drV??crqHEcr:U']s7?3[rpg$XrpTmTs6]dO!pf.:rosIH!9a@Ds5a7Aro47CiSi_Qhr!;i
+h#cA?@/aR;@Uit]B)ZHBB`DcLC27U%D#S2UCi+'.DJsH4E;jhdEcZ>EF`qtPGBeCYH@#R;s*Ouu
+IXcluJc:9$K)gT(Kb&onLPUbCM2I4LN/`gWOHB08r`//]l;dk%'l@c&CMIQtBP;$jAn>Oa@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>a8j:]F2f:&[id9D_?\8[&0e<;'>j;ufkq
+;L_>59heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%K
+NfT<cPa7])S"-(BTq\?[Vl?\tXfnt7['mHS]"G_k^r"".`lQ6DbK\>ZdF-Opf%8U/gYL]Ci8N\U
+jQ5OekiqBum-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"`F*N:sR&74hc2Z)gci)5jcMl&sbfe,L`l,g5_8*k$^A#;G]Xtbd]=Y_g
+r4N*Erk8?E"1u4X]D]DA]DoJ@\H'58\H'5?\HTLR\[],XoX=Y)r3lF/!4Vm9rjVp9!k5VHrO)L/
+rNlO2!4Dd4s0Vs;\$rgD[fEr6\H9:O\bEW6\,WlT[+*[Yf\5'7h;7&IiSrnYjlYail07L!m-X6?
+mfr:Oo()DDo`"Lbp@n=[q#C0iqYU0hr;?N[rql`WrqcTjr:p0fqYp<eq#:$epAFU`o`"I\o)J7[
+nGVhUmf2\Rm/QDOlMg#Lki_..k5XNCjSn0Hio/kSi8<GKq"X[aq?$QlrNQ;%\GWo9\Db!c\/B4&
+DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPh
+r([2br_*,\XoJ%)q7HF5s1<bS9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!pCMds.EH6/D
+GBeF[I!pKpJqJc3Ll%%LO-#NgQ'Rf*S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9Fbg+M\
+dF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X6@mfDqJrpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-
+s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"R@;'M"I"@7NQN*<OQN!0LPlHsGP5(1<OSb18P5UUEP5^U?OSb+9NqeS6
+Nr4n-NrP(=Nr+e9NpVi'N;\\%N:W#/N;ee<N/`hqN;\b9NZ*o,f%8R.g>(N@hr*JQj5f=akNM0p
+lKdg(mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrTsO\s5j7VrVQNfqu-Bjq>0mcp\smap&F[`
+oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjWDjT+B@isXl*iS`YOhqkiO\@DOKs186Cs1SNK_#D7N
+`;dgga2l?Dai_fMc-FV]d*^7hdf.]JeCE.%f[ng0g=k<9gt^`Bhr!DOj5]7_kND'ml07Ktlg*p(
+mI'E2nF?)?oC_hONVSUbN>ZYPDJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'
+!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\XoJ$Pp5Sm.InWR2:/=\_;,U=k<)lt"=BSd1>[1QA
+?X[DRA7]CeBkqL$DK'T9FEMePH?sseIt3-'KnbD?MiEdZP*;/sR$jG7StMdPUo(&iX0&P/Z*UgG
+\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mf2_VnF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUg)?s,6o-~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"76pjC47nQMT:B+,d;#O/k:esma:Adlf:A[fe;#O2i:AdoT:'49e:/1IX
+r(m;epItW_peUf_s%iPfqbR/k!EE+r;u]_q;uTbp;uTbp;uTbp;uTbr;uKVm;?'Ji;?'Pl;u]hn
+<>nidf%8R.g>(N@hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrTsO\
+s5j7VrVQNfqu-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjWDjT+B@isar+
+iS`YOhqhaK@:<RC@0C%MAS,QRBE)ZEC&VoIC`@/+D/F0/DJsH4E,fl<EcZ>EF`qtPG^+LZH@#R;
+s*OuuIXcluJc:9$K)gT(KarimLPUbCM2I4LN/`gWOS;`P<U!KJ<>f^mDJa6,CMR[!BkV0mAnGUc
+A7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\XoJ#mq,R8j
+!)rkpInWR2:/=\_;,U=k<)lt"=BSd1>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH?sseIt3-'KnbD?
+MiEdZP*;/sR$jG7StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8M
+j5]4_k3)!nlKdg(mf2_VnF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,6o-~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1`DKgM`Oe&Mac-=Q5ci)2kcd)L6%*Zo:a2Q$8_SO%'^V9KVs1J<Bs1J?E
+!ku@^rk89Crk&-Arjr6C\[qFD!4r0?s0r0A\@B$>[f!Q1[eI30\,<c7[g9FO\$i]P[^EO?[/@9-
+[/[N6[f3`9[f!T7\G<Z=\@K,Z\$u4Ds0j$!f@S^0gYCWAi8EVTj5f@bkNM0qlg4!*mdKW6nc&([
+oCW%Ts7ZKerqQNhrqcQirVZTlm/Hn^jo5,Tqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpS
+rp9[Ns6BUJs6'IGroX7B!9F.>$0'q&i8F>'q"aabq?$QlrNQ>!\c0+s\a?m6E,TW3D/=$(CMIS_
+BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>j:]F2f:&dod9DqJa
+s7<ht]D/u:9n#i5:f("e;c?Xq<``C+>$G6;?=.)K@Uit]B4u$qCi4-0EH?5EGBeF\I=?]tK7nu7
+M2I7OO-#NhQ'[l,S"6.DU84W`W2co#Y->4<[C3TU]=bkm_8=.0a2lBGbg+P^dF6Urf@\g2gtgiE
+i8N_VjlY^hl07L!m-X60mgJXTo()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1C*oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1R?=R_hGCG7-q3M&Is-EYLrfdDHr0$l<rK-r>p6,E=rf[8CqN1W9s,I)=
+rJp]5!06r9o8`g0!06r9!06f5s,Qc3repo<N/[^nm>UXr"cSG"NJrkpN;\_Ve^rF+g=tE=hVd>O
+j5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HjrTsO\s5j7VrVQNequ-Bjq>0mc
+p\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68Ll2TrIkPjWDjT+B@is4T&iS`Y%[C?.Frji'?"h_O_
+^;.Sa_uIXg`Q#p<aN2KFb0/#RcHae`dF$CjrmNLLe^i@)f@ej2g=tB;gtgiEhr3PSj5oCckNM-o
+l0@R"lg4!*mdBT6nac8Bp@e9@pl<ma$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7
+!aAi3r`T8'!*B,"!``3!rDW_os&&_kr_NPhr([2br_*2^XT.mNp5Ss0r_7i::Jakb;H$Ln<E<1'
+=^#$7?!^lG@:E_XAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]k>TVA6YVl6Vr
+Xfen6ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@hr*JRj5oFckiq?slg4$,n*^YRnac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf186:++484cBK:/4U];#X8j;#X8f:Amug:Adlf;"d]O:'+3d:%qE[:]F2a
+9`Rr`:]*uf:]!o_:B4Jp<WQ3"qGRPq;cHar<;fbq<;]\p<;fbn;ufkq;Z9Pl;#O8k;Z'Jn<;TZ9
+e^rF+g=tE=hVd>Oj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HjrTsO\s5j7V
+rVQNequ-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68Ll2TrIkPjWDjT+B@irnB#iS`Ym
+?jC+J?t!JQ@V,ONs(D=Erb;@I#]+9mCM[j*Df5Pms)A!Xs)JosFEM_LGBS4UH$O^_H@(!dI!pHn
+J:N4MK)^H;KS>,7L51P?Ll$tGMi3ORNfT9%<Vf\m<U!KI<=3\`DJj<-Chmg$C&VcHB4h-S#@q=S
+@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#X8j:Adid9`@]`9!&'a<;BPj;uooq
+r_7i::Jakb;H$Ln<E<1'=^#$7?!^lG@:E_XAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90a
+Pa.T&R[]k>TVA6YVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@hr*JRj5oFc
+kiq?slg4$,n*^YRnac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk+"nF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7At_EHctlP+f/'c-H=7rm1_mcHcC5$d?f8`l5m6_83q%^A#;@]`#JB]`,SH
+^:h7prk8?E#JId^]=beg]`,PC])T;B]",EI\c98?\c9/A\[],XoX=Y)r3l7*!k>_KqmcL3"h(hI
+[^EO@[/73,[/[Q5\,Ni8[fEr8\HB@P\@MUKrjMp:\,Nl]f%8R-g>(N@hr*JQj5f=akNM0plKdg'
+mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu-HkrU'UXs6'CXrVQNequ-Bjq>0mcp\smap&F[`oDS7[
+nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%is4T8o_%tRq"apc"8i#prilG"\c91s\a?m7EH#i6
+DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_kr_NPh
+r([2br_!5`WrE(2o=Fb0q76W%:/CjcISj!A<)lt"='/U/>?kH@?XR>PA7]@dBPM=!DJsN8F*)SL
+H$XjdIt3-'KnbD?Mi<[WOckroQ^O>5StD^NUo(&hWiW>+Yd1UC[^iu^]t_A"_o0O7aND]NcHjnd
+eC<($g"P39h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_p&F^cp\ssfq>^<hqu-HlrUg)?s,-i,~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk$unF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7AtP?Y+(qH%1^9qj.8Krg*PKrfdDHrK?r<rK-u?p6,B<rf[;DqN1T8qi:H2
+!06u:nrEa0!06N-s,R,=s,Qc3s,?u;s,?o7m#:[u!fW+tqi(Z9Mi@Xp,1bAug"P6;hV[8MioB+]
+k3(sml0@U$m-X60n*ol<o(2JFrq6<b!;HHes7u]kqtp?irVc-_pAa=TqYg<hp\XpcrqZEcrqHEc
+r:U*^rq$*Zs7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=Zi7?5[^Z7Grj`*A]=e-W!l2[j
+rP\]T&BDl5aiV`Lbg"GZd*U1fdaJ-D0%AG'f@\^.g"P07gYCW@hV[8MioB+]k3(pkkiq?slKdd&
+m-X6/nF5u=o(2SKq2P-/eVsrVE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50
+=oVS(=8c/$<E)rr;u]bq;>j>j:]F2f:&dod9)qSarrA&MN:r8/NWMpM:]=1>;,U=l<E<.%=BSg3
+>[:]D?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR@B_<T:r!TVPgDnXKA\1
+ZEpsI\[oGe^VI_(`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac5OoCW%T
+s7QHerqQNhs8)ZjrVZZno_sFAMZ82~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk+"nF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7At56UXC57nHHO:/Ca`r_NMir_NGer_NMgnPAIG"&DZe:%qE\:]=,`9`Rr`
+:]*uf:]!o_:]F5l<EK-"!``3!pf%2ms&Aqq!*&ho!*&kpr)<ku;,L4h;,R6frD<PmqGRAnr`(/n
+f@\d1gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8BoCW%Ts7QHerV6Egs8)WirVZWmmJchZkPk>V
+qu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#"6*Wn?i=@;
+@:3JO@:E_Xrau1Crb2=G!,DLK#]+9mCMdp+Df5Pms)A!X$$(*.FEMbMGB\<2GpI]_H@(!dI!pHn
+J:W9'JqJ]/KS>,7L51P?Ll$tGMi3ORNfT:n<U*QI<=<ecDf0H0Ci!m&C2*Z\!G?$DAHuaU@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Jhs%`Jds%NDb!(s9k!*/Viq,R8j"&hoh
+:]=1>;,U=l<E<.%=BSg3>[:]D?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5u
+R@B_<T:r!TVPgDnXKA\1ZEpsI\[oGe^VI_(`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0q
+lg4!*mdKW6nac5OoCW%Ts7QHerqQNhs8)ZjrVZZno_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhHh[7-p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"UCiXcQNL-KJcMl/hd/VDlcMbusbfe/M`l5j4_8*k$^:sEVs1J?Cs1J?E
+r4`3Es1AHI]Y(lT]`#GD]",EE\H'5?\brr;\+@'+[JRE([JRH6\bru6[fj.I[C3L?[/73-[/[N8
+[^WaF[f3`9\G!K3\Gs#`[^Wcug"P39h;7)JiT&tZk2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[
+q#C0iqYU0gr;HT]rq6<SrqcTjr:p0fqYg6eq#:$epA=O_o`+O\o)J7[nGVhUmf2\Rm/QAOlM]rK
+ki_..joa`+jRN6@"n_N_q"X[aq?-WmrVj&$r42j;hmr-arc&9aDf0H0Ci!m&C2*Z\!G?$DAH?=O
+raPn9!+>e5!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EAcs%EDcW;ln0o=Fb0qRV,N
+:Jakb;H$Ln<E<1'=]ns6>[CcF@:E_XAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:\EN/s'`PEhH$
+R@B_<TV8-VVPgDnXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdL2F"S)'RoCW%T!quB_rqQNhs8)Zjrqu`no_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhHM@.,p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"U?=@MbFF8Xur0IALs-EVKrfmGHrK?r<rfI)@p6,B<rf[8CqiL]9s,I)=
+rJp]5!06u:nrE'rrJpc7!07#;!06o8s,?u;!0$l7!K<$7Mu\e0N9lNLMi<YIg"P39h;7)JiT&tZ
+k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0gr;HT]rq6<SrqcTjr:p0fqYg6eq#:$e
+pA=O_o`+O\o)J7[nGVhUmf2\Rm/QAOlM]rKki_..jp'r.jKc+u[/RK5\,Wu;\c95H]=kqm^VI_(
+_u@UR`rF-ZaoBNcbg+N5d/VMndf7ere,\%uf)s[Yg"QG[,2D#1hr!DOj5]4^k3(pkkiqBslKdd&
+m-X6/nF5u=o(2SKqMk3/erBZK$?0p$DJa3+CMR[!rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7!aAi3
+r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b!)'9js,HW/p5T$2ISN[8:f1+h;cHat='/U.>?kE>
+?XR;O@qB4aBPD6tD/O<4EccGJG^=[`I=Hd!K8#&9M2R=ROHPfmQC+)0S=ZCIUSOcbWN*)'Yd(OA
+[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60s6p0]o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"Ur^6ZS!_H*^qb[;grD<Jhr(d5er_DuZl:qCV:/1IXr(m;epJ(Z_q+po`
+s%iMeq+prcrD`l!<W6##<E)rm;u]ht<;]Yp<;'8g<!H8u;,U:h;>a8h;#jMi;^57Af@em4gtgiF
+i8N_VjQ>UfkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWmmJceYkPk>Vqu$6drVHKg
+qtU0brq?6^s7H?_r:9mXs7$!Us6fpSrp9[N!:'OI!pJh1roO@FjQ'WQra#S3ra>b7"^kbI@U`mI
+B)ZHCB`;]KC27U%D#S5MD>nGQDuXeUE<L<'FED[)FrkjPH$O^^H[:$cI!gBlJ:N3%JqAW-KS5&4
+L5(J=M#N59MMmCONK0*^o2Y*UkZ.V%$?0p$DJa3+CMR[!rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7
+!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b!)'9js&JYiq,R8jISN[8:f1+h;cHat='/U.
+>?kE>?XR;O@qB4aBPD6tD/O<4EccGJG^=[`I=Hd!K8#&9M2R=ROHPfmQC+)0S=ZCIUSOcbWN*)'
+Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60s6p0]o()DE
+rq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1XBl8*BL6A")[f4VPciVP=cMburbfe,K`Poa2_8*h"^APYE^AbeG]`,PC
+]`,VB^AbeG]`,VA]`,PB\cK@Qp::47rji'="1bqN\+I-+[J[K&[/mnMqmZX:r4)U4!4Mj6qm?:-
+qQp71qmHR8\@D@F!4`$=rj`!;*4FMQg=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>U6fqu6NkrU9aUs60IYrVQNequ-Bjq>0mcp]'sap&F[aoDJ1Znc/+Wn,MeUmJZDOlN$5K
+kmck>kN:pqnF?&?oCV_LrqHKhrqZ]orVj##r4)g;hRW$`$$($*E,]`5DJa4hCB80arb)=FB)Z?B
+A7PUJ!b#JEra,\4?2e+/>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e9rJ$i]CWW1]DK0g:/=\_
+;,U=k<*!%$=BSg3>[:ZC?t!MTAS,RgC27X'DK'T:FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8
+StMdQV5L8lX0&P/Z*UjH\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k3)!nlKdg(
+mdKTKnF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X>@(fSEHce`MuK%AQN3?LQ2[!JPPp[>OoCI@OnFn9PQ$aEOo(7;Nrk?$
+NW+t6NW5%:NUr20N<#"-NW+t<NW5%9N<#":N<#"8N<"q:N<"q:MZSisNVn_9NK!jppl+p+!0$f7
+*fc5>f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqYU0hr;?N^rpg$P
+rqcTjr:g*eqYp<eq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rSki_-kk-2+rZEpn:[03qI
+\%&sI\I,p[]=kqm^qmq,_u@UR`rF-[aT]i1bfnAYrm:\ms3gqr"k;)Rf@\^SfbW;rgYCT?h;@,K
+iT&tZjlYahkih9rl2L#KljE.Jn*ol;o(2MIpA9jCNn'*qEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@
+A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcVuQ^To8NO*!0$o:s,MP'
+:Jakb;H$Ln<`W:(=^#$7?!^lG@:EbYAnPdlCM[m+E,fr@G'A1WH[U?nJV/W1LP^nINK90aPa.T&
+R[]k>TV80XVl6VrXfen5ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g>(N@hr*JRj5oFckNV6r
+lg4$,n*^JMnac8BoCW%T!VZ9dq#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X5sdn,7n?-D:&@`e:]+&g:]=,g:]4&c:B45d:[1[T:\7E[:]=,`9`Rra
+:]!le:\mi^:]=2j:B=9mqGmMq!``3!q,7Ap<E3#s;u]hp;ZKeo;uT_r;uTYo;Z9Pm;#O5k;Ya61
+f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqYU0hr;?N^rpg$PrqcTj
+r:g*eqYp<eq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rNki_-kk$@girF#Y6"^kbI@UisJ
+B)ZHCB`;`FCB\QkCMRa'rbh^Rs)@sW%<?N3FEMbNG'J7WH$Xf8HiJI+IXcltJUrE)K7ei1KnP28
+LPL]bM$JorMi<XUOHAp2n5SRN$$($*E,]`5DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/
+>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e9rJ$i<V'2d<VoaE:/=\_;,U=k<*!%$=BSg3>[:ZC
+?t!MTAS,RgC27X'DK'T:FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8StMdQV5L8lX0&P/Z*UjH
+\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k3)!nlKdg(mdKTKnF?)?oCMVRo`=d\
+rV6Egs8)Zjrqu`no_sFAMZ82~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?tjV)JVfS^Xh2pYd/VE'cHXYZc-4ARaMu3;_SO%'^](tI^&GbG^&PbF
+]DoPC^&PeH^](tE^&>SF]tD#W]*5dV]",A_pUL:8rjhs:!4VR.!4;[3rO2+$s1JQH\[]/[ppg10
+!4Mj6qm?=.qR$70rO)m=\@B)[\GNi:\Gs,>\/2U+g=k?<hV[8MioB+]k3(sml0@U$mI'uB#4V0R
+o(2JFrq6<b!;HHes7uZjr;6HjrVc0`nc.eOqYg?ip\XpcrV??crqHEcr:U']s7?0Zs7--YrU9dS
+!:BaOs6B[MrTOaSmI'H4nF?)@oCV_MrqH]nqYL*erVj##fX^CZ$?L6-EH#l8DJj<-rbDOLC&VcH
+B4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhr_99ir4D.'s%n2B
+;H$Ln<E<.%=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;
+T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nac5UoCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?sI&MD0'rOLQRo%QiEBMQ2[$IPQ$a?OoCIAOnFn8PQ-gFOo(7;O8k7?
+NW+t6N<#":NUi,-N<"q.NW"k;NW+q>NKB4uN<#"9N<#"7N<>-!NK!jp!fW+urJUc:N;SV0N;\_9
+N;JV7N;SYNf\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HT^
+rpg$OrqcTkr:g*eqYg6eq#:$epAFU_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rIkl.dfZ*L\7Zi7?8
+[^W`U\Gj#I]">Yh^;%J#_o0I2`;[dUaT'?ib0/#QcHjkadF$CjrmN%?e^rF*f@ej2g=tB;gtgiE
+hr3PSj5f=akND'ml0@R"li-5XmI'H4nac8Bo_/%WNV/=^N='`IEH,r:Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:B!tbs87lBN;efcN_iPL
+;H$Ln<E<.%=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;
+T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKTPnF?)?oCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?pd:L7R]j=928:X;#X8j:Amue:Adoe;#*oO:'+3d:%qE\:]=,`:&dua
+:]!le:]=)h:&[oa:]4)i:]=/j:]=Dk<W6##<E)rn;Zg!!<E/rrr`&hp!*&hor_s&";Gg:h;Z0Jm
+;#O5k;YsB.f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HT^
+rpg$OrqcTkr:g*eqYg6eq#:$epAFU_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rIkl"fe?3":0?N":3
+@0BtH@U`jGB)cNCB`;`GCBeTlCi!m'D>nDdE,TZ6E,fl<EcZ>EG'8(QG^+LZrd+Tks*OuuIXclt
+Jc:9$KE$W)L&Zo-LC8opM2I1KN/WaVOHAa-p/L0S$?L6-EH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhr_99ir)MoZs%n2B;H$Ln<E<.%
+=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;T:r!TV5L;m
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac5U
+oCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgI/!@.p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?Yab1JrGthY/UCe"4,9=cMl&rbfe,K`l5j4_8*h#rk8BGrkABF!PH&D
+]`,VE^&YqI^&bp]qn<$Bs1J]N]=bbf]"5G`p:117rOMm:s0qX/qmH@1o<eS*rj;a5rj;a1rk/HH
+\[f5\ppg10!4Mj6qm6F2['TS8rjDa6!k5\Lr4)p>\[f6K\KSH8g=tE=hVd>Oj5]4_k3(smlKdg'
+mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtp?irVc3amf2MMqYg?ip\XpcrV??crqHEcr:U']s7?3[
+s7-*XrpTmTs6]dO&aS`Il0Rd(mdKW6naZ5Bo_%qWp]1-hq?$Qmric@R\aI!-F:*)0EH,r9Df0H0
+D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:8Ipe
+]BQp,:k)>?;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#Ng
+Q'Rf*S"-(CTqeE\Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgI/!@.p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?X@2UD01&QLQ_Y'!1*PJrfmDGrf[)>rfI,Aoof6:rf[8CqiL]9!fi8"
+rf6f6s,R#:o8`a.!0$H-rf7#<s,R&;",`2%O8Fn:Nr+e9Nr"b8N;nkGN/NUQN/`gUNJrjVN;SV/
+N;SY;N/`gUrJ_tZg"P39h;7)JioB([k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0g
+r;HT_rpKgMrqcTkr:g*eqYg6eq#:$epAFU_o`+O]o)J7ZnG_nVmf2\QliZS=lKS;Oricg9ZEggC
+['d<M\$rlWrj`<G]=Ybj^;%M$r5ATSrlG,]$d6c<c-FY^d*^7hdf.]JeCE1&f[ng0g=k<9gt^`B
+hr*JQj5f:`k3(pkkiqBtlg*p(mHsB2nF?)?o_%qVNUr1]NW4)-F)l8?E,TZ4DJa4hCB80arb)=F
+B)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=+bs8.fAN;nn;:k)>?
+;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#NgQ'Rf*S"-(C
+TqeE\Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?U7!W70?(Q9i(O\r_EMhr(m8drD3Dhq+p9N!)N2]r(m;epItW_q+pl_
+s%iVh!_lEbrD*Dgr_NMis%iYkrD*DfrDr_os&K2$<)iZl"]SK%<)Z`o<!6-!;cH`n;u]f!;c6Ii
+r_iMg!)ibo+PGK'gtgiFi8WeWjQ>UfkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWm
+n,DbTkl1GWr;?<drVHKgqtU0brq?9_rq-6^rUU!Yrp]pUs6fpSrTj^RlK[V=>l@t-?3":1?3"@3
+@/j[8?ishH@q5LMrb)4Ds(MOLCMWocs(_aSDJjB1rbqgUs)AosF)uGGG'8(QG^+LZH@'sbH[L3i
+IXcluJc:9$K*$^[L&Qi,LC/ioM2I1KN/WaVOQ9F?<97-[F:*)0EH,r9Df0H0D#S2NC2*Z\!G?$D
+AH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:8Ipe<U!K_:k)>?;c?Xq
+<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#NgQ'Rf*S"-(CTqeE\
+Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhI/!@.p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?YXG$IY3ZIUp9pGs3L_js31npbK7iG`Pf[1_8-&b!PZ8G^AbhE]`,VE
+^AktF^AknH^'23_]tM(krjr?F\[oA_](``8])K8<\Gs&2[K3eCr3cL3p9an/qm?F2r3ZR2Z2D<8
+])T>?\,a#8\GEZ7[f3Z9['d==ZiIH1ZiRSArjDd7s0r!;!P,`:\K&,ig=k?<hV[8MioB+]k2tml
+l0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjr;H-ali65KqYg?ip\XpcrV??crqHEcr:U']
+s7?3[s7--YrU9dSs6]dOs6K^Os6U0]n*oi:o(2JFp%JC[!;ZWj!rW#rYQ*4bm^N^KFEDSEEH,r9
+Df0H0D#S2SC2%?pB4kiUAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a=c
+s8'@m\p[CP;H$Lo<`W:(=^#$7?!^lG@U`kZAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90a
+PEhK%R[]k>TV8-WVl6VrXfen5Za@0N\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5f@b
+kNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhJ+r[1p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?X-rKBPqs>J;TYZQN3?MQ2[$IPQ$a?OoLOBOn=h7PQ$aFOTCQ+rK-o;
+s,R,=rf6f6!06u:o8`^-!0$K.rJpo;!06r9s,-c:!0@#:!06r9!06r9rf$l:r/CT6!fW+ur/:6,
+qMcJRNS<+Ah;7&IiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamcq#C0iqYU0hr;?N_rp0UK
+rqcTkr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\QliaMrYck80YlCs.ZMq30[03qI\%&sI
+\HodY]Y2%o^VRhd`!+-"`lH0ArlG;dbfnAYrm:\ms3gnq!S#[!f+cljg"P07gYCT?hV[8MioB+]
+k3(q,kRm(ElKdd&m-X3/n*ol<o(;VKrf-K/er:,]FEDSEEH,r9Df0H0D#S2SC2%?pB4kiUAH?=O
+raH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a=cs8%`@N.-a_;,U=k<E<.%=BSg3
+>[:ZC?t*SUAS,RgC27X'DK'T:FEMePH@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMdPV5L8lX0&P/
+Z*UgG\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg(mdKW6nc&([oCW%T
+!quB_rqQNhs8)Zjrqu`no_sFAM>r)~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhI/!@.p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?U7%F6qBj=8P](XpeUi`rD3AgqG6<M!`)QcpJ1W^r_E2^s%`DdqG%#d
+r_<Pi:/+L_:B4/h:]4,i:B45g:BOEf<E9$!qGd`!<E<.#<)i]ms&B"upf%;n<)icos&8tsrDNYo
+!)iVi*E#g7g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjr;H-a
+li65KqYg?ip\XpcrV??crqHEcr:U']s7?3[s7--YrU9dSs6]dOrET8+s'>\2rEfG1s'Z(=@:E\U
+AH$3?BE)ZEBaAHhCi+!)CM[keDZ4SSE;jh[EcZ;DFoHOrGBe@XH$Xg`H[C-fIXZcsJ:[]Os+:H-
+KnY89reCi:M2@+JMi<XTNf_1Z%<Zc7F)l8?E,TZ4DJa4hCBeNfBP;$kB)Z?BA7PUJ#@V"J?XI,G
+?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:SRmc<U*P3:f1+h;cQk!='/U/>?kH??XR>PA7]@c
+BPM=!DJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQ^F52SXuLJUSXleWiN8)Yd(OA[^`l[]Y;.s
+_SjF5aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUg)?s,$c+~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1O.oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sdVdGC54/RAdI=rm(Sirlkqsb/q]D`PfX1_8*k$^;'W\!PQ5G]`>_E
+^&PhG^\khG^&PhE]a29_]Xtee]",EG\H'5>\c'&<\+I*2[C!?KrjD^5pU("0rj;a5rj;a5qm?O7
+Za-h6]a)3`]=YYb\@DOIrOD[4!4Mj6!OT9/[/792[KF"I\@;IIrOEcT\[gGKgtgiFi8N_VjQ5Oe
+kiq?sm-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcNhrqu]mnG__QlMgYYqu$3crVHNhqY:'arq?9_
+s7H<^rUU!Ys7$!Us6fpS''\]Hlg*p(mI'E2nF?&>oCV_LrqQNhrqc`priZ:R\a?m,FoHIdF)l8?
+E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%s;ZK_p;>sCb
+s7s:m\pdOU;cHat<`iL->$P<<?XI5N@q9._BPD3sD/O93EcZ>GGBnL^I=Hd!K8#&9M2R=QO-,Ti
+Q'[l,S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8N_VjlY^h
+l07L"m-X60n*ol<o)J:bo_%nNp@nO\s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd/GASZ:.I=mEDQBqK7rfmDGrf[)>!0I2Bo90$8rf[2ArK-o;!07&<
+s,Qo7s,R#:o8`g0",r4uN:W&-NrP+=NqnY9MM[2gOT1C;N<"q2NW+k:NVe\3N<"q8Mt;lFNJrjV
+g=tE=hVd>Nj5]4^k3(sml0@X%mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjqtpBjr;H-alMp/KqYg<h
+p\XpcrqZEcrqHEcr:U*^rq$*Zs7--YrU9dSs6]fg!O&a,YPta5Z*L[AZa@-J[^N[E\Gj&=]*5j\
+^;%J#r59&``l?'?aN;QHbKS2Uci2;kdJqYpdfS%Lf)F8:f\+s3g=tB;h;-rFi8N\UjQ5OekNM./
+klpA<lg4!*rpL-^nac8Cp%FB)nW)1[!-S9_"`n^(EH#jqD@gZ$CMR["BkV0mAnGUcA7T3L@KBnF
+ra5\3!+#S/s'#J,r`T8's&]2#s&K(urDN\or_`YkT`=hIl\p9j;c?Xq<`W=*=^#'8?!grI@Uiq[
+AnYmnCMds-EH6,BG'A4XI!pKpJqJc3Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VsXfnt7ZaI6O\\#Mg
+^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()hP"n_K\p@e7Zq#C0i
+qY^6ir;HTdrdk*+s*t~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sc8f6:4.18P;eS;#!ib:B+,f;#3uP:&n)]:Adoe:A7H_:AI]^:&n)h
+:B+#g:Amri:/=[a;#a>k;#*oe:]O8i<<?3$<r5ns<!63%<`E&o;Z]ou<V05p;cH[o<)cfp;Z9Vp
+;Ys<,;VKm\h;7)JiT&tZjlYail07L"m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqYU0hr;?N_rp'OK
+rqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmf2\R>Q%h)?2n42?2\+/@/aR<?t!MS@qGUN
+s(D@Frb;CJ#&J-mCMRa'rbh^Rs)@sW"EJR*FERS+!I&efGmo"GH@(!dI"$NoIt3+LK)^H9KS>)6
+L51P?Ll$tGMi3ORNK0+=<<.1@F9Q`+EH,r9rb`9aChmg$C2%?pB4baeARo=]raGn:@/aO5?3":1
+>lS".>5h\)=T;J%<rZ2"<;f_q;Z9Pm:n[ja<U3V5;H$Ln<E<.&=]np5>[:]D@:E_WAS,UiC27[(
+DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR$sP:T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<
+b0/#ScdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKmm)mdKW6nac8No*+dZp%J+RrV6Egs8)Zjrqu`n
+o_sFAM>r)~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk.#nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XIShG_(a9SufI$cOA+Dc-4AQaMu3<_ns7h_#M1H^&bp]qn<$DrkJKI
+rkAQL]tV8\^AbhG]`5VB\cK@QpppF9rjhs:s0q[0s0Vj6rO)U4p9an/rj;m9[C*BKqm?U9[C*KN
+Zi%N9]EPp[\[f5[rjVj9q6p@4rO)X3s0_a2s0_m8rNug<[^`iV\GNfYg=tH>hr*GPj5]7`k3(sm
+lKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtp?irVc6bkl9rIqYg<hp\XpcrqZEcrqHEcr:U*^
+rq$*Zs7--YrU0mPkiq?srp($[mHs?1nF5u=oCMVIpAXgfq>1*f!WE##s4FmM\,pktFoHIdF)l8?
+E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;#jFb
+s8T\+]C!1Y;H$Ln<E<1'=^#$7>[CcF@:E_XAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:\EN/is^
+PEhH$R@B_<T:r$UVPgDnXKA\1Za@0M\[oGe^VI_(`Q#s>b0/&Td*^:ke^i@*g=tE=hr*GPj5f=a
+kNM0qlg4!*mdKW6nac5OoCW%Ts7QHerV-BgrqcQirqucoo_sFAM#Vu~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk7&nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XI,KAScF4It`lJQ'VE7s-3MHrfZr:nrip7rf[;D"d5"0OcY\%O8k7>
+NW5%7N<#":NUr2.NW4t.NW"n;N<#"6NW4t;MZAY4OT1@ANqn\7N;/D+N;S\8N;JP)N$$d.h;-uH
+i8WeWjlY^gkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWmnG_YOlMgYYqu$3crVHNh
+qY:'arq?9_s7H<^rUU!Ys7$!U!N`F&Y5b[*Yl:j+YlCs.ZMq06['d<M\$u@Hrj`HL]Y(tm^VI_)
+`5BO4rl,,^aN2KFb5TTgcHjkadF%sAs3h;(e^rF*f@\d0gA]hOgtgfDhr3PSjQ,IckND'ml07Ku
+lg*p(mI0N5nF?)?o_%p;nW)1[!dAg1rcA<bEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(A
+s'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/ko!)T<fs,?c5m>QKl;c?Xq<``C+>$G6:?=.)K@Uit\
+B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt8['mHS]"G_k
+^r"".`lH0CbK\>ZdF-Opf%8U/gYCWBi8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"O`p&Ojcp]1-h
+qY^6ir;QZerdk**s*t~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk.#nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XH,e6UaI78P;hU;#*ob:&n)e;#=&Q:'+3d:\@K\:]=,`:&dub:\mid
+:]F/l9hnDXr_NPhs%iSis%`VkpeUobr_WJl!`W0"r_rktr_s##<`N*uqGRGp<E8Hds&8npr)3Sn
+rD=ZjgYL]Ci8EVTj5oFckNM0qlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu-HkrUBgMs6BU[
+rVQNequ-Bjq>0mcp\smap&F[`oDS7[nc/+Wmf6Pi>Pqb)?2n72?2e.1?iFI4@0L%J@Uiq[rFQ%B
+rb2:Fs(_dSD/=!'D#A2NDuXeUEW:+[FT6LfGBS1TH$T@7s*Ocns*juus+10$s+:r;KnY89LPL\A
+M2@+JMi<XUNf_4[!dAg1rcA<bEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(As'>\2r`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/ko!)T<fs&Aeom8SO4;c?Xq<``C+>$G6:?=.)K@Uit\B4u!pCMds.
+EH6/DGBeF[I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt8['mHS]"G_k^r"".`lH0C
+bK\>ZdF-Opf%8U/gYCWBi8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"O`p&Ojcp]1-hqY^6ir;QZe
+rdk**s*t~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgJ+r[1p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sdS`F*`ItQ(b=pci;;jbmM\;aN)<>`5BI._>_4M^\YYL]tV1n^:h7p
+rP&TO^VIV!^:qA]^'23a]tD%krk&-?pUL:8rOMm:s0qX/!4Dg5rjDa6p9jq/s0Vj6rjDd5r3cR5
+rNua9\@/dB^&5MG]=GJ^\G`o9\G3N5[f*W5[/[Q4[/[N_[^W]R[C*HP\@8rW\[]/[g>(N@hr*JQ
+j5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%Pp\4X]s7u]kqtp?irVc6bkl9oHqYg<hq"t$drV?<b
+rqHHdqt:!]s7?0Zs7--Ys5s@E!pJn6rp0UN&FJoRn*ol;o(2MHp@n@Wq>1*f!rW&sY5\L5ft$O\
+s*#]2F`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVV(=8l8#
+<W?%t;u]_q;4dgc])0,-\pmXX<E<.%=BSg3>[:ZC?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1&g"P3:
+h;@/LioB+^k3(smlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgJ+r[1p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd,F@:j=tH%:[5QN!0KPl?mGP4k%/P5CICP5gXEP5^RFOHGY%NrY4>
+NW5%7NW5%:NUr20N<>-!N/[@frJpl:!06i6rJUi9Mi3JjOT(=@Nr+h7N;AP2N;nh7N;\b8N;JP/
+N#[b7N8!(ChV[8MioB+]k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=[q#C0iqYU0gr;HT`rojCH
+rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGTEiXfei(YPtd+Ym@YAZa@-J[^N[E\Gj#E]">Vg
+^:q@u_YqCT`Q#p<rlG,]$-UQ:cHab_d*^8?df7c"eCE1&f\$2V-JI5/gt^`Bhr*JQj5f:`k3(pk
+kiq?slKdd&m-a?2nF5u=o(;VKn;c(Zs*#]2F`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVV(=8l8#<W?%t;u]_q;4dgcN;JV&N.4c*<E<.%=BSg3>[:ZC?t*SU
+AS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_
+]t_A"_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+^k3(smlKdg'mI0N5naZ2@oCW%T!quB_rqQNh
+s8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgIeWR0p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sc2d6UO:484cQPrD<>dqbI/er)!8dkt_7S!DZG`:Amue:A@Q`:AI]^
+:'+3d:B!uf:B"#j:/=[a;#X5j;#!ib:&n#f;#=8j;ufkp<<#tt<;TSq<)lrd<<#nr;Z'Jm;An3D
+h;7&IiSrnYjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)WirVZWmnG_YOl2LPXqu$6d
+rVHKgqY:'as7Z?_s7H?_r:9mXs7$%k!*];)rET8+s'>\2rEfJ2rF#h:@UinYrau.Brb2=G!GZEK
+C]\BgD>eAODuXeVE=?l/F*)MIG'A.TG^4T6HN&7*I!pHnJ:N3%JqAW-KS5&5L5(J=M#N59MMmCO
+NK0']`Duq^,Be3OFE;JCEH,r9DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)
+=T;J%<rZ2"<;ohr;?0Rcs85jn<UNh9;cHat<``C+>$G6;?=.)L@Us%^B4u$qCi401EH?5FGBeF\
+I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE]W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg+M\dF6Uq
+f@S^0gYL]Ci8N\UjQ>UfkiqBum-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5SD0C>]NL-HFbg+JX&Br>>aMu3<`59C-^qmh$^q]f]!l)I_r4`-E
+#/7jf^V@LsrP/BHrk8?E!kZ+WrOVd7s1/9B]".^J!4VU/!4Dg5s0_g6p9b%3[C*BKrjDd5r3ZO5
+r3cR5"LY_J\@2=Kqn*'D\[f5[rO;d9ppUC7[C*HOr3cL1s0X#Y\$i`Q\$rfT\@9#Y\D5osi8ESS
+j5f@bkNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmdq>^<gqu6NkrUBgKs6BU[rVQNfqu-Biq>0mc
+p]'sap&F[aoDJ1Zjo4BFkNM0plMg)^m-X3.mdT`9o()DEp%J.Tq"adcqZ6WoXoAC4ft$O\-?s`Y
+G'.nKF)l;@EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&K(u
+r_o?eq7?O:n%*dD<E<1'=]ns6>[CcE@:E_WAS,UiC27[(DfKf>FEVkRH@1-jJ:`E-L5:\EN/is]
+P*D5uR$sM9T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hV[8Mj5]7`
+k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1R/oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5E?t3nhFaJ[sPl?sIPlHsHP4at/P5CIBOogc/P5UOCOSk1>NrG"<
+Nqn\7Nr4n-NrG%;N:Mu-NrG"<NqeV3N;nkAM2I1KMiWquOSk.>Nr+h6N;JV4N;nh5N;nn:N;AJ/
+N;neLgtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Bfs8)Wirqu]mnG_SMlMgYY
+qu$6drVHKgqY:'as7Z?_s7H?_r:9lgr2fn#s/uF,ric@+s02R0rj)d8[C*HO\,No:\c98G]Y2%o
+^r""g`;dgV`Xg,2aN;QHbKS2Ucd0tbdF%sAs3q"urmr(@g"G*5gY:N=h;7&IiSrnYjQ>UfkNM-o
+lK\B7s6L*\n*fc9nac;Dp%Im8er;#$GB\4QFEDSEEcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqus&AtrSH&DDrJg9)GuRdE='/U.>?kE>?XI5N@q9._BPD3s
+D/O93EccDHGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCQ+J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5,6U=(084Q6I:Jgj_qbI/eqbR>i:f.-el;%:RohPE\r_E2^!)E;b
+qbI/es%`Pf!)EMhs%`Sir_WSi!)WGdr(d8f"AMQb:f.$h!*&enrDWbsrD`Ymr`/qs!*0"ts&Jem
+!)rhorDW_o'AVF#i8ESSj5f@bkNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmdq>^<gqu6NkrUBgK
+s6BU[rVQNfqu-Biq>0mcp]'sap&F[aoDJ1W=TDY'>Q%h)>ln><?2\+/?jL1M@:<VS@q0'JB)cND
+BFANfBkhF"D/=!'Ci0/hrbqdTs)A0^F)uGGrcSEgG^+LZrd+Qj++/KcIt3'#JV&K+K7no3Knb>;
+LPUeDMMd=MN/`jYOMt3HG^"@TF`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>
+?2e(1>?Y50=oVS(=8c2"<W?%t;k3m`<;fhb<-VDD='/U.>?kE>?XI5N@q9._BPD3sD/O93EccDH
+GBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#YHY==[C3TU]=bkm_8=.0a2lBGbg+P^
+dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+
+J,~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AIBQ&-ELle%$ZHg_>#g:B3a2Z*:_nuDhrkSNJ!5AHI#/7jd^;%Cr
+rkANM^VBc`rP/BJs1\QJrk/<Erk&3A!P>r;\H'5>\brr;\+I*/[JmQ4[JmW.[K!]8[K!W6[JmQ3
+[K!]5[K!]8[g'.G[^ETU]`#P?]EGjW\[]0J[fX(K\G3Q4[K*f8[K*`6[/RK4[K<kG[f3`X\@:;M
+hr*JQj5]7`k3)!nlKdg'mI'H3nF?&>o(2JFrq6<b!;HHes7uZjqtpBjr;H-ajo=WFqYg?ip\Xpc
+rV??crqHEcr:U']s766]ro=(@rT44FkiqC2lPJpTmdBQ5naZ2Ao_%qPq"X[]qu$?grVir!!4pmp
+m^W:B#^CQ;G'.nKF)q8"$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'
+!*B,"s&B)!;k!^d\bWi8]CEI]<E<.%=BSg3>[:ZC?t!MSAS#LfBkqO%DK'T9FEMePH@($fIt3-'
+KnbD?Mi<[WP*;/sR$jG6StD^OUo(&hWiW>+Yd1UD\%0)_]t_A"_o0O7aND]NcHjndeC<($f\5*8
+h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Tp&F^cp\jmeq>^<hqu6NlrUg)?s+p]*~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI?!h2[E-?V]MjBWmQ'D93rfZr:o90!7qi^o?!0I)=!07#;!06l7
+s,R#:o8`g0",r4uN:W&-NrG"<NqeV4N;eh:NWk8sMM[4Nrf@)@qi:`;qi1N4qi1Q5s,6`4s,I&;
+qMY3/s4nXOi8N\Uj5oFckNV6rlg4!*mdKW6naZ2@oCMVRp&F^cp\jmeq>U6fqu6NkrUBgJs6BU[
+rVZTfqu-Biq>9sdp\smap&=U`o)S@\WW9*tX9,N,Y55@%YlCs3ZEpmE['fnArODj;#J7X]]tV7s
+_YqFQ`W*pba2l?Dai_fNbg+Q6d/VMndf.\re^j`O.bNG-g=k<9gt^`Bhr*JQj5f:`k3(pkkiqBt
+lg*p(mI'H3nF?)?oCV_Ln;c+[s*4lpGB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\!G?$DAHuaU@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!E<!drr@uQN;\b+N.+c-<``C+>$G6;?=.)K@Uit\B4u!p
+Ci+'/EH6/DGBeF\I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt7ZaR?R]"G_k^r""-
+`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo`+Uap&Ojcq#C0iqY^6i
+r;HTdrdk**s*t~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1R/oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI6UF+-7S$*C;#3ue:&n#f:B"&b;#X8U:Ado\:Amue:A@Q`:AI]^
+:'+3d:Amlg:/=[b:&n)g;#X5j;#!ib:B"&h:^'Tg9h\;]qc*Vqpf%2l!*/qrqbmc"<E3!t<E3!t
+r`/_m!)rbms&8sR)rKT4ioB(\k2tjkl0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0hqYU0hr;?N_
+roO1FrqcTkr:g*eqYg6eq#:$epAFU_o`+LbnlJpqrE9/(rEK2)rE]G0s'>V1!af>CrF#k;@U`hX
+Ac63@BDuTDC&_rQCi+!(CM[kdDZ=YTE;jh[EcZ;DFoHOrGBe@XH$Xg`H[C-fIXZcsJ:[]Os+C?)
+s+UK-s+^u<M2@+IMi<USNfT7@<W@=MG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<6&tRf<@dq,I;mnPjs;<`W:(=^#$7?!^lG@:E_XAS5[j
+CM[j*E,fo?Fa&(VH[L6kJ:`E-L5:\EN/is^PEhH$R@B_<T:r$UVPgDnXKA\1ZEq!K\[oGe^VI_(
+`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^r1Vs7QHerV6Egs8)Zj
+rqu`no_sFAM#Vu~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^VrpkR/nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5FCN+NLMNXL0[*Hn=aiMNB`Pf[o_Z%CO_"k_S^;%Fs^;%Fu^q[Y"
+^qoua!5STKrkAEGrk&BG]"5MbpppF9!kGnQqmZX8oX4b-rj;[4rjMR/rjDm9[']h?rj;X3s0hm6
+rjMj9s0`3>ZEpsJ\%9/`rOr'?"1u+S\G`o:\Fd67[^W]S\$`XC[/[N7['fnA!O]B8[hmlWhr*JQ
+j5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc6bj8\EDqYg<hq"t$drV??c
+rqHEcr:U*^!9="<!9O4B"R#"5lK\B7!UT4QmLAXSnac8Bo_%qPq"X[]rqccprr0)#!4pjom^NXN
+H$FRXGBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9)G$
+<WH-es8TY*])923])PfW='8[0>?kH@?XR>PA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+,1SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WLc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^Vrpk@)nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5F?=IJ^Ed<.fMj9QlPl?mGOo^].plY02qih#B#a(:5OcbfhOc]I$
+!07&<!06l7s,R#:nrE^/",r4uN:`,.Nq88/N;eh:NrP(?MM[2hMZ8_8NrY:=NrY4;NVe\4NV&/0
+NW"h5MuASNh;7&IiSrnYjlYail07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmnG_JJ
+lMgYYqu$6drVHKgqtU0brq?9_s7H2g!3?%!!j/W.qlg%(riuI/!joACrjMg9rj`<G]=bej^;%M%
+rPT2b`l?'>aN2KFb08)ScHlL:s3^kps3h"uec+2#f`0Y)gAfq-g`YG0i8EVSj5f=ak3(pkkiqBt
+lg*p(mI'H3nF?)?oC_eFNn96uH?ja[GB\4QFEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9
+!+>e5!a]/<r`fM/>$Co.s&]8&rDinuR/d2Eq2G62o8N]MH<46P>$G6;?XI2M@Us%^BP;-rCi401
+EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9F
+bg"G[dF-Opf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCN*J,~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^Vrpk1$nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5F6:4(.77TpCqbR2d!)<Gfr_N;cr_MfSrD3)]r(m;epItW_peUc^
+s%iYir_<Dfs%iYi!)NPio2#<[r_NPjs%iYi"]%id9N5!h<<-"k;ZKhs<;BGm<;TYq<;fhm;ufko
+;A\0Ghr*JQj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc6bj8\EDqYg<h
+q"t$drV??crqHEcr:U*^!*K5%s&f5&!a8f5r`f>+r*9A1?![D8!af>Cr*]_;@q0%\rFQ%Brb2:F
+!,MRMs(hXNr,2OQs)@sWs)\3^rc\<c!-nKgrd+Tk#CLrKIt*!!Jc:9$K*$^[L&Qi,LC/ioM2I4L
+N/WaVO2Y*,H?ja[GB\4QFEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/
+>$Co.s&]8&rDinuR/d1bq,I8lo2P`jH<46P>$G6;?XI2M@Us%^BP;-rCi401EH?5FGBeF\I=?]t
+K7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF-Opf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*J,~>
+JcC<$M#[,HrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z(gp]W?!M/dH\@?CTW>`Kb/hWC`Poa3_nuDhrP/HK_"teI^;%G^^]V?e
+^qp#c!5JNKrP&]R]tD%k]=PSc]"7^Js180>r3ua9oX4b-rj;X3s0hX/s0hs8s0Vd5rj;[4s0hj5
+rjMj9rO*$:Z*L[C[C<`Y]D]G=]E>dV\[_XJs1%j5!k>_LqmQX8[C,q>rO)X5(Z!s+i8WeWjQ>Uf
+kiq?slg4$+mdKW6nc&([oCW%Ts7ZKerV6Egs8)WirVZTlnc%SKlMgVXr;?<drVHKgqtU0brq??a
+rT!h:rT44Fl07L3lN-A>rpC6bnaZ2@o_%qPp\=R\qu-EmriQ2#]%OX^\GpjUH$K=4%X)u:FE;JB
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)=',B%QiI&qq7?L9oX]3I
+=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\MH$XjdIt3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsuf
+WiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z%q&aN?!L`GB5Ma9JVK;PPl?mGOogc/P5(13P5:C>Op-u2P*(ifr/^l<
+rf$o<q2PE7rJgB.rf%#=NJrhqN<"q3NW"n0NW"h7NW5%;NVnY5MZ8_0O8k7<NV\V4N<>-!N/dIg
+rJLZ5reqZLhVd>Oj5]4_k3(sml0@U$mHs?1n*olHncA@Srq6<bs7cKes7u]kqtp?ir;H0bj8\ED
+q>L6hp\XpcrV??crqHEcrq-8jq5X@o!j/W.qQKq's02a5Za7$G[JmW5\Gj#E]">Vf^:qD"_u@US
+`W*pXa8X-fai_fNbg+P\d*U1frmLhq!S#[!fDjM'f`9b*gC;rohVR2Kio9%[k2tjiroasYlK[^$
+m-O-,n*fc9o()DFp$e!mNW4;*H$K=4%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s',M,r`K;)=',B%QiI&Cq2G62oSdrp=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\M
+H$XjdIt3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkb
+e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhIeWR0p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z?sd5G>XCkI7Rfp?s%`SirD*Aer_EGgpe^rcl;%:Rp.kN]rD*,^s%`Ac
+qG%)f:/:a^!_uNer_<GhrD<,^rD*;es%rYi!)<Gfs%NPg<)icq!*&Yj!E<"s<;9Dl<<-(p<VfYp
+;uKT1h;7)JioB([k2tjjl07L!m-X3.n*fc9rpg*]o`"O`pAamcq#C0iqYU0gr;?N`ro=%DrqZNj
+r:g*eqYg6eq#:$epAX^b=8l>$=8uD$=TM]2rEK5*r*9A1?![G9%:<LN@:<VR@:E\U@q90MB)cNB
+BEDm_C]8/MCB86grbh[Qs)A!X"EJR)FEIM*s*"NhH$T@7s*FuuI=?ZqJ:N4MK)^H9KS>,7L51P?
+Ll$tGMi3ORNK0(=<W@@GH$K=4%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6
+?=!P8s',M,r`K;)=',B%QiI%`q,I8loMg!8=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\MH$Xjd
+It3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"
+f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*@Z?!M#ZFFJt(PbG:uaiMNB`Pf^4_SX.*^qoub!PcGK^]2(L^\YbF
+_>V.M_8-&b!5AHGs1AQJ]">Sc\[qXJs1/9B]".^J!4VU/!4Dg5rjDa6pU1"/!4Dg5s0_g4rjDd7
+r3cR5rjVd5#I1M<ZEggE[/RW:]DfM>]`5VD\H04LrjW$=[^Q(BrODj9s0`$=[^EO?[/[NS[bfp"
+iSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)WirVZWmnG_JJl2LPXqu$6drVHKg
+qY:'a!VYOMj87p:jojl2l07L3lN$>OmLJ^Tnac8Bo_%qPp\=R\qu6KorVir!!4pjon$j0]H[:!`
+G^"@TG'.nKF)l8?E,TZ4DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>Q7n+=TV],=-`ga
+\bWi7]Ciab=BSg3>[:ZC?t!MSAS,RgBkqO%DK'T9FEMePH?sseIt3-'KnbD?Mi<[WOckuqR$jG6
+StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JioB(\k2tmll0@X%
+mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAL];l~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*AI>[1WHBQ&'?JVfPSrfd5Bq2tT<!0R)?qNLi?"d+t2Ocbb&Ns1Q'
+NfB'ZqMkN8r/L9-rf%#=NJrhqN<"q4NW"n;N<"q2NW+n:N<,'!rf6l8!/UK.rf6Z4s,R#:q2G00
+rf$l8repo<N/R[o!/pi8*8]T2iSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)Wi
+rVZWmnG_JJl2LPXqu$6drVHKgqY:'a!VWJjWVNRlX9,N,Y55=%Yl:m2ZEpmE['fnArODm<$+da\
+]Y2%o_8F1i`;dgV`Xg,2aN;QHbKS5Vcd0tbdF%sAs3h#!f)F8$f`'P(gA]hNgtgiDi8EVSjQ5Od
+kND'ml07Kulg*p(mI'H3nF?)?oC_eGNn97,I!^0cH$FOWG'8"MFE;JBEH#i7DJj<-rbDOLC&VcH
+B4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)='([erJUK1r/LB.IooiW>?kH??XR;O@qB7bBPD6u
+D/O<4EccGJG^=[`I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0
+a2lEHc-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*AI>XCbC6UjU98Pi/X:/:a^r_EJhpe^rcl;%7Qp.kN]r_E2^!)E;b
+qbI/es%`Me"\qih:/+L^;#a;k:A.K_:B+)j:f%'eqbI5f:&[lh:JFO^<;]bm;ZK_m;ZKek;Zg!!
+<`]3"s&AqsqG\M7;Vp<hiSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)WirVZWm
+nG_JJl2LPXqu$6drVHKgqY:'a!;?=ls&f8%r`K/&!a8f5r`f;*rETD0ra#M0#[^tI@:<VR@:K4G
+!+l+@s(D@Frb2dUCM[j(CMRa'DJa9/rbqgUs)A0^F)uGGrcSEgG^+LZrHeKj#CLrKIt*$"Jc:9$
+K+`ikKnb>;LPUbCM2I4LN/`gWO2b09I!^0cH$FOWG'8"MFE;JBEH#i7DJj<-rbDOLC&VcHB4h-S
+!G#^>@KKtG@/aL6?=!P8s',M,r`K;)='([erDWMkr)NDhIooiW>?kH??XR;O@qB7bBPD6uD/O<4
+EccGJG^=[`I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0a2lEH
+c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+gW)~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!M&^G_(^4RA@(.a2Z-<`5BL0s1n]Prk\QKrP/6Fs2"`NrPAKK
+!5\WL#/@mc]Y1tjrO`'?qmla<rOMj9!4VU/!4Dd4rjDd7p9jn.rj;[4rNuR3s0hg4!k,SIppLF7
+ZE^[=ZEgk9\cKFUrk80@rk&3@s0r-@\@;FFr3uX7s0qs8s0_m6!4Dg5s0Wg'i8N\UjQ5Oekiq?s
+lg4!*mdKW6naZ2@oCV\Sp&F^cp\jmeq>U6fqu6NkrUKmEs6BU[rVZTfqu-Bjq>0jgi8N\Tqr@V8
+!9O4B"6f"6lM^#Lm-Xf?%I`iWo()GGp@n=Vq>1!equH_trrBX`\aR$8I=-BfH?jaZGBS-.F9Q`+
+EH,r9rb_aRD#S2SC2%?pB4kiUAH?=OraGq;?srt@!FB(2>lS%.>5hY+=Jr'`s80A&])927])PoW
+>$P<<?XI5N@Us%^BP;-rCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\u
+Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DE
+rq6<b!;HHe!;ZWjr;6Kkrr)KgJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!LTAAo)F/H\74TPP^O<OoCODOnk1:PPC:BOcY\%O8b.?NK3go
+s,R&;nrEX-s,?r:s,?`4rf7#<!0$T1rf$f8s,Qr8s,I2<MMR/gM>`J-O8b1;NVJJ0NW4t:MuS_9
+NW+n:MuS_UMr3IOioB+]k3(sml0@U$m-X60n*ol;o()DEo`"O`p&Ojcq#C0hqYU0hr;?N`rnmb@
+rqcTkr:g*eqYp<eq#7/kW;`dlWW9*uX9,N,Y55@%Yl:p-Zi@B4[JmT9\%&sH\Jr,l]Y(ql^qmq,
+`5BO4`l?'>aN2KFb08)ScHlL:s3^hos3iXOf%8O+f\+s3g=tB;gtgiFi8WbVj5oFckND'ml07Ku
+lg*p(mI'H4nF?)?oC_eGNn96tI=-BfH?jaZGBS-.F9Q`+EH,r9rb_aRD#S2SC2%?pB4kiUAH?=O
+raGq;?srt@!FB(2>lS%.>5hY+=FP^cs8.`MN;S\0N;m%)>$P<<?XI5N@Us%^BP;-rCi401EH?5F
+GBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\uY->1;['mHS]"G_k^r"".`lQ9EbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6Kkrr)KgJcCK)
+J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\;tnaQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!R@q#=CmM8kVrT:Amod:B"&b;#a>T:Amu]:Amue:A@Q`:AI]^
+:B+)i:Amoe:&n)h:&n)h;#a;k:A%E^:Amug;#!fk9i"MZ9hnGZrD`\p!*&hos&/>b"]SK&<`N0!
+<;fhn<#a`QiSrnYjlYail07L!m-O--n*fc9nac8Bo^r.Us7QHerV6EgrqcNhrqu]mnc%GGlMgYY
+r;?<drVHNhqY1%kqcEc!r`B,%rE0;->[1K<>Q%h)>ln><?2e11?N=L5@0^7M@:E_VA7b^O!,):E
+rb2@JrbVUMs(qUNs)7pVrc.pY$$:<5G'A.TG^4T6HN&9kIK+fsJH(3#K)UB8KS>,7L51P?Ll$tG
+Mi3ORNfK1?<=4/%H[:!`G^"@TFoHIdF)l8?E,Y_n!GuZPCBeNfBP;$kB)Z?BA7PUJ!b#JEra,\4
+?2e+/>Q7n+=TV\s8XKJS;u'Dj<VKJm=a+%S>[:]D@:E\VAS,UhC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$jG7StMdPUo(&hWi`G.Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqucoo_sFALAuc~>
+JcC<$L]@#Grr)fnrVQTj!;ZTg+8>L&p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh/h?)g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^<BGYcb+/WMcVhUS4<OS=>q6Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMIQsAn>L_@UNPL?!LTMEd<7qOIN)Qa2Z-<`5BI/_8=(*_8=%(_8-#aqnW6J&&?#t
+_SO%(^qmk&^qmh$^AbeG]`#JA])0&;\cTFR\bil:\+I*/[JmQ3[K!]/[K!Z8[JmQ4[JdK3[K!]4
+[/m_FrO)^6qR-a<Za@$CYctF>]"@sQ!5/9DqRlg>s1&9B\[f5Zr3lR5rj`!;rO)a7[/IE4[/]%t
+iT&tZk2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mnc%DFlMg\Zqu$3crVHNh
+rqQKN!9*q:qr@Y9!9O4B"R#"5l0A65!:BdR!q5XKrpg?ep%J.Sq"ad`rqlfqriH,"]%X^_\Gps`
+I!^0cH$FOWG'3e+"`n^(EH#jqD@gZ$CMR["BkV0mB4b^dA7T3L@L$=L?sd8I?=!P8s'#J,rE05)
+VPg?hW1X+d\bWi7]D/s^>$G6;?=.)K@Uit\B4u!pCMds-EH6/CG'A4XI!pKpJV/W1LP^nINK93b
+Pa.T&R[]k>TV80XVl6VrXfen5Za@0N\\#Mg^VRe)`Q$!@bKS8Wd*^=le^rI,g=tH>hr*JQj5f@b
+kNM0qlg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$L]@#Grr)fnrVQTj!;ZTg+8>L&p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh.,3ng"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^<BGYcb+/WMcVhUS4<OS=>q6Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMIQsAn>L_@UNPL?!LT?@:j@tG^b:(PEYm,q2tZ>s,m,?q31T:s,m>CrK$r<!f`5#
+qMkN8r/L9-rf%#=NJrhqNW4t4NW+t<N<"q1NW4t8N<#"7NW"n:M#iKirJCH4ooK*4r/LH0rJgi9
+qhkH6reqYON8WXQj5]4_k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0hqYU0hr;?N`rnd\?
+rqlZkr:g*eqYp<iq#@5iVZ<[pWVWUpX8K%#Xfei'Y5kg+Ym%G>Za@*IrjMd8s1/0@#J7X]]t_A"
+_u@US`W*pXa8X-bai_cMbg"J[rm:\ms3gqr#Lq;Tf@S[-g&B_*g]-(/hZ)O6iX=f-jlY^gkNM-o
+lK\B7s6L*[n*fc9nac8Bp%@g7f8]fY$%.)GH?jaZGBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4kgf
+ARo=]raH+@?sm>K?=$q:>lS".>5_S(=T3dIIfP%ls8%ZLN;S\1N-JN1>[:ZC?t!MSAS#LfBkqL$
+DJsN8FED\MH$XjdIt3*&KSG8=MN!OUOckroQ^F52SXuLJUnsufWiN8)Yd(OA[^`l[]Y;.s_Sa@4
+aN;WLcHaeae'uq"f\,!5h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+^Q(~>
+JcC<$L]@#Grr)fnrVQTj!;ZTgIeWR0p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[['R$AY-"b(Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDE,KN.C2%?nARo:[?sd5G>['N]6UXC5!_H$]r([/cr_NAes%hfQrD3)]rD3DfpItW_peUc^
+s%iYirCmJk:JX_[:/Cjcs%`ViohYT_r(d;hrD*DgqbR5es%NYm:/+GX:Ae)j<W?%p;u]bb;Zp'"
+<`N/u<;]bq<<(kiiT&tZk2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mnc%DF
+lMg\Zqu$3crVHNhrqQInqH*]!r`B,%rE9/(s',V0>[./3q-Eu+#[^tI@:<VR@:K4G!G#d@B)cNC
+B`DcIC2<fb");UfD#A2NDuXeUEW:+[F9Qf1G'A.TrcnQkH$]I:s*aoss+(-#s+:9's+LE+s+^Q/
+!/UW2#E"FtN/`jXO2b3"I0k:JH?sj]GB\4QrcA<bEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]pB
+@:3JM?X@&Er`oJ-!*]>(!*K4lr(6r^TE"adq,I8lpf)KA>?kH??XR;O@qB4aBPD6tD/O93EccDH
+GBnL^I=HcuK7nu7M2I7OO-,TiQ'[l,S"6.DTqnN_W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\
+dF6Uqf@\d1gYL]Ci8N\UjQ>UfkiqBum-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)
+J,~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1d5oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1HLFFAk&Panb]`l5mr_Zmuo_SX.+_Z%CO_#D+H_"tkI_Yh7K
+^]_Ed]tV2Z]`,PB])0&;])K8<\,a#1[K*`6[/IB4[e@-.[f*T5[J[E2[/dZ4[0!eG\+I*1\$WOA
+Zi.-5ZF[WZ]"5NO^&,J@]DT2?\@;=Cs0r$<rjNcR[C3QP[C!<Li8N\UjQ5OdkNM0qlg4!*mf)YU
+nF?MK!V>s_p&Facp\jmeq>^<gqu-HjrUKmDs6BU[rVQNfqu-Bkq$Gm6hV[8LiSieUqr@V8!9O4B
+!9jFHrp0UN!:BdR#Oh3Qo()DFpAXdgq>1!crqlcpX8gk`n$jirI=6KiH[:!`G^"@TF`__HEcQ/>
+E,TW3D/F*)CMIQtBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k*=T_c-Vl0Ejs/,msWhf[b])929
+\pR^e?!^lG@U`kZAnPdkCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D6!R@B_<T:r!TV5L;m
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H<@qfh%H%(I,qi^f<rK@2CplbH:q3(c?rK.#>rf.&>NfNsq
+s,R&;nrEX-s,?r:s,?`4rf7#<s,?Z2rf$f8s,Qo7r/Lc<r.tQ4M2I1Iqi:T8!06u<rJpf8oo&m1
+req_QMMmFON/W[Ri8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&Facp\jmeq>^<gqu-HjrUKmD
+s6BU[rVQNfqu-Bkq#I8hVZ*InW;`dlWW9*uXT,C&Y5,7$Yl:m.ZEsP;rjDg9rODm<&\>Te]Y2%o
+_8F1/_o0O5`lH.!a:$,4bKS5Vcd0tbdF%sAs3i1Bf%8O)f\"m1g=k<9gt^cDi8N\Tj5f=ak3(pk
+kiqBtlg+Q:$LR<NnF?&>oCMYJnW)4\.XleoI!^3dH?jaZGBS+NFE;JCEH,r9DJj<.Chmg$Bk_6o
+B4baeARo=]raGn:@/aO5?3":1>lS".>5_S+=BBs#r-n]srILdEnVmC*q2B]*>[:ZC?t*SUAS,Rg
+BkqO%DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s
+_SjF6aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zj
+rqu`no_sFALAuc~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1Gu5t+117n69Lr_<Aer_NDfr_NGe!)MuWr(m#]r(m;epeCc`
+q+pi^s%`VirD!;e"A_cf9i(abs%iYip.tZ_rD3GipJ:]^!`2TcqbI#fr`/ttqc!Jlo2>`h;c?Zo
+<W5tp<=n*IioB+]k2tjjl0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0gr;?N`rnd\?rqcTj
+r:p0fqZ$?k=8Q%t<rcA%=8uD%=8uD$=UA8:>[(H;>[:T>r*9;/ra#P1s'Gb6ra?%@@:<VT@q90L
+B)cNDB`;]SC2@^%Chda%D/O3.DZ4SSE;jkWErgB*rc\<c!-nKgrd+Tks*Y'"It*!!Jc:9$KE$W)
+L&Zo-LC8opM2I1KMi<XUO,q=].XleoI!^3dH?jaZGBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4bae
+ARo=]raGn:@/aO5?3":1>lS".>5_S+=BA'cr(?o\!)03gnPoEdq,D`G>[:ZC?t*SUAS,RgBkqO%
+DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`n
+o_sFALAuc~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1d5oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LTID0CGaNg66=]#DVf_tq7L_$%Qg^VIYY_#V@L_>h:P_8*hb
+^&YkG]`,PB])9,<\cTFR\bil:\+I*/[JdK2[/dZ/[JmW6[/RK2[/RH5[emH5[^Z4D!4DX2rO;g8%
+^WOKZa-j@Yd(aM]">Pbr4Vs>rO`!<"1YhK\,<]2[fa(H[^Z7D)<'T8jQ5Oekiq?slg4!*mdKW6n
+aZ2@oCMVRp&Facp\jmeq>^<gqu-HjrUKmCs6BU[rVQNfqu?Nlg]H<ghu;O6iVqj6j8J'=jo=HLk
+NM0plKdd&lg4W=s6fsXrpg?dp%J.Sq"ad`rqufpXT&:3ft$R]"b1uLI=-D@H3nkAGB\4QFEDSEr
+c&iqDf0H0Ci!m&C2%BqBP1phAS#C^@q&nU@:9(As'>\2r`oJ-!*]A)s&]A)VPg?hVu`fprMfn!X
+K)<i](io;])Q#]?=.&J@Uiq[AnYjmCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK90aPEhH$R@B_<T
+V8-VVPgDnXKA\1Za@0M\[oGe^VI_(`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*m
+dKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LT=?t=%kFa8Lmqi^i=rf[8CplbH:s,mAGqNCl@rfI,?r/UW5
+s,R#:nrE^/",r4uN;eh:N;/D3NrP(=N:i21N;SY8Nr=q;N;\b6Nr>%9M$&QkM2;%hr/^l<r/^f:
+r/LW5!/pT1+H),8N/NXRiSrnYjlYail07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZTl
+nc%AElMgYYqu$6ds8)\jr20Ik!iW)tq5OFqr2]t%Y-.W)!3lI-!j]/=rj;[5(q7#b\[]2]]">Vf
+]tV;!_o0L2`5T^8a2e2#s2kYkbg"GZcd:%ddJhSodf\.Of@U#Ss4ID+rnAXPh;7&JiSrkXjQ5Od
+kND'ml0@R"lg4!*mdKW6nac8BoCVO4f8Tr`IXQWlHiA<tH$FOWG'.nKF)q8")K9V4DJa3+CMR[!
+BkV0mAnGUcA7K+Y@UW\Qra5\3!+#S/s'#J,r`T8'!*B/Kr."KmWrMRIpl5<4s'0kV?XI5N@q9._
+BP;-rCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\tXfnt8['mHS]"G_k
+^r""-`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcCK)J,~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LV563fkG84H3H:JLg`rD3;e!)NMfr_MoVrD3)]rD3DfpItW_
+peU`]!`)QdrCmJk:JX_[:/Cjcs%`ViohYT_r(d;hrD*DgqbR&`#u+/i9heDX:/4O\<;fes<;KPm
+;YX/j<;f_t;H$LnrDiksr)FWnioB+]k3(sml0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0g
+r;?N`rn[V>rqcTjr:p0hqYaLn<r,nt=T);$=T)D&>5qh0>?kB<r`o5(s'G_4!+>e7!b,SHraPt>
+Ac?<ABDuTEB`VsarbVUMs(hgTDJa9/rbqgUs)J$Z"*A[/G5c[eG^4T5HN/<sI=?WpIt3'#rdt0&
+!ec8]reCH.$AaOqMMd=NN/`jY``31lIXQWlHiA<tH$FOWG'.nKF)q8")K9V4DJa3+CMR[!BkV0m
+AnGUcA7K+Y@UW\Qra5\3!+#S/s'#J,r`T8'!*B.kr(?r]r_*Ad8kQ,`n5T0_s&B#'H<src@:E_W
+AS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd:^F\%0)_
+]t_A"_o0O7aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFALAuc~>
+JcC<$LB$oFrr)ior;6Njs7uWgGk^q*p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[.qGBQ/6KMNF0tY._ck_ns:._ns:i_>h:P^VIYY_>hCP_#V@O
+_#qKh_8-&b!5AHFrk&0@r42a:s1/';!4VR.r3ZI2s0hX/s0hm5rjD[2rj;a7qm?I5\,E`8[J@90
+\,NfK\%&iP['R-FZE_'T\[f>a]"G]T^%o>@])fRUr42d8qmQF3!O]B8[hI`\j5f=akNM0plKdg'
+mI'H3nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?ir;H0bh#H^>qYg<hqYU9HrnI_6hV[5Ki8O[pqr@V8
+"Qee.kNMp0rp0UN!:BdR#Oh0Po()DEpAXdgq"ad`rqlfqriH,"]%OX_\-db9IXQWlH[:!`GlDmj
+G'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]5uql'Om
+r2KduXT#?*s6mPo]6:bk?=.)K@Uit\B4u!pCMds-EH6/CG'A4XI!pHoJV/W1LP^nINK90aPa.T&
+R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrr)ior;6Njs7uWgGk^q*p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[.V>?!h/YEHZYYLlqY!r/puArfQu=plbcBPEYp-"d>+3OHGY(
+O8Ft7NW+t:NU`&,N<"q9NW4t4NW5%=NW4t1NW4t8N<#";N<"q9NVnh6Nrt8tM2M4f!fE&"qi:W9
+rJpi;s,I,@Nr4n7N!"usMi7Iks,6l8'B/!3jQ5Oekiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmd
+q>^<gqu-HjrUKmBs6K[\rVQNhqu3DiV>R4iVZ<[pWVNOoX8T."XT5O"Y5kg+YlV/:rj2[5rjMd8
+s1/0@#J7X^]t_A"_u@US`W*sXa8a3cai_cMbg"J[rm:\mrmLhq"kD2Uf@\aTfd>G-gYCT?hr!DO
+ioB+\k2tjikih9qlK[^$m-O--n*fc9o()DEo^ImmN=(2cIXQWlH[:!`GlDmjG'.nKF)q8""`SBt
+DJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]5Lr-n]soms=Hmu7%$G)T^5
+?XR;O@qB4aBPD6tD/O93EccDHGBnL^I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.DTqeE]W2co#Y->1;
+['mHS]"G_k^r"".`lQ9Fbg"G[dF-Opf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$LB$oFrr)ior;6Njs7uWgIJ<I/p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[1H"6:4*F6qKp@:/=V[r(m5e!)NPgrD2cTr_N/]rD3DfpeCc`
+peUc^s%iYir_<Df$VsMm9hnJ\:esk^:A%E_:Adlf;#O/i:A[i_:&n)h:&drg:&Rie<Vobo<<-"p
+;u]bl;Zfor<)iiqs&/kqs&B"ur`&nt'B/!3jQ5Oekiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmd
+q>^<gqu-HjrUKmBs6K[\rVQNhqu0Xp=8Q%t<rcA%=8uD%=8uD$=TDY&>QA(/>kq\*?N4C4@/FC3
+@g6IUAn>ReBDuTEB`VsarbM[OCM[hbDZ=YSE;sqWEsZr2G'8(RG^+LZrH\csI!pHmIt*!!Jc:9$
+K*6j]Knb?]LC/ioM2I4LN/WaVO2b0,J:E#rI=-BfH?jc7G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\
+!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&f;&s%3,\r_*2`s%<;_!D6"gs6iq^<H_>I?=.)K
+@Uit\B4u!pCMds-EH6/CG'A4XI!pHoJV/W1LP^nINK90aPa.T&R[]k>TV8-VVl6VrXfen5Za@0M
+\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.qH=`&2*K8YhXTWc8N_SX4._Sa7i_>_7M_>h@T_8=%*_Z%CN
+_@XQ#_8=%(_83q%^V7Fq]tD#W]DfD?\c')A]=PP`r3ua9oX4b-r3ZI2!4MU/rjMd4s0_a2ppL"-
+s0_[2rjVg6r3l[6rNlO/s1AEF\[qdPs1J?Eq7HgA]Y(iS\H'/<\,Wo:[JdQ5[hZ?ZioB(\k2tjj
+l07L!m-O--n*fc9rpg-^o^r.Us7QHerV6Bfs8)WirVZTlnc%;ClMgYYr;?Qk!8@D+rS.J1hV\=j
+!9*q:qr@Y9s5j:C#3Y47l0@U#rp9XPs6fsXrpg-^p%JCZ#Pn5nr;?HirN#qu]%OX`\/p3OJ:E#r
+I=-BfH?jaZGBS.PFEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.
+s&f;&s/5^l!N2pqWWB0%qlR4)mCN,*s'KVN@U`kZAnPdlCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\E
+N/is]P*D5uR$sP:T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8M
+j5]4_k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.V?=^>ELD0'oJJVjAhrK7#@rfR,A!gAe1plbiDPEV/nrfR>H
+P*5g,!g&J(qMtK5rJpi9nrE^/",r4uN;eh9N;8J4NrP+=N:r81N;/D4N;\b6NqeYFMMm@KM27"E
+Ll%1RNfK2"Nr4t:Nr>"@NfT6]rJg`6r/:H2'oRt/j5]7`k3(sml0@U$m-X60n*olHncJFTo`"O`
+p&Ojcq#:*hqYU0gr;?N`rnIJ<rqcTkr;QQnU]%"dV>R4iVZNfrWW&mtWVrjsX8T."XT5O"YPtg,
+Z2h61[/RKN\%&rY\@K/]]=bei^;.S&_o0I2`Poj;a8X-bai_cMc-=S\rm:\ms3gqr-IgVtf@JU,
+g"G*5gY:N>hV[;Nio9"ZjQ>UfkNM-ol0@R"lg4!+rpL'\nac8Bo^qX5fSpr'J:N,uI=6KiH?sj]
+GB\4RF`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVV(=9!aH
+J+J3kK!YLEN;8J5?Ys1[@Us%^B4u$qCi+'/EH6/DGBeCZI!pKpJqJc3Ll%%KNfT<cPa.T&R[ftA
+Tq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4$,
+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.Y@=[GMF6UjR:92A=\:B=9fr_NSjrD*8dm8!XVoM5<[r_E5_
+!)E;bqG%)f:/:a^!_uNer_<Ghr_WVjs%`8`s%`;as%`Geq+grcs%i\kr_3_p9heDY:/t:n<)ros
+r)E_rqGRAlqG[Dl"B/9!;cEZnr_jY5<E3!tioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.Us7QHe
+rV6Bfs8)WirVZTlnc%;ClMgYYr;?Qkr)W_sr)Wbt"B\`,=BPN'!*K2&s'#>*s'>Y0pg*o+s'Gb6
+ra?%@@:<VT@q9-KB)cNCB`DcRC2@^%CMIX$Ci4+hDZ=YTE;jkVF8pC_G5lddGlN'gHN/<tI"$No
+It3'#Jc:9$K+`ikKnb>;LPUbCM2I4LN/`gWO7ZEP<7OtiJUi9#IXQWlH[:!`G^"@TG'.nKF)l8?
+E,]`5DJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]4lqb$i\r_*Gf8kMZH
+r_!5`ZiBDlqc3Yqs'KVN@U`kZAnPdlCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D5uR$sP:
+T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg(
+mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=_r/-Ko;%\V6Tp8s2+cOs1nZN$Gs]t_SO++_8=%)qSN3I
+s1nZL"MVR_]Y+6Urjr*>rON*C]"5HM\,s.J\+R3-[/IB4[e@-/[f!N4[JR?+[/m_FrO)^6ppU12
+r3lU6!k>JErjMp7[/I?1]EPpY]"GYerk/9Eq7HgA]Y(iS\H'/<\,Wo8[/dZ6[hn)cjlY^hl07L!
+m-O--n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mnc%8BlMgYYrVZWJr7h5+!o;_jrnme8ro3h8
+r8dn>!p8\0rosFJ!po=ArpBgUnG_tgoCV_Lp\4IYqYU0fr;HSprrBXa\aR$?Jq8H&IsufoI!^0c
+H$FOWG'3e+$?L6-EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9M]+
+<i;kkW;WarWrT6sXge>s])0*b?XR;O@q9._BPD3sCi402EH?5FGBeF\I=?]tK7nr5Ll%%LO-#Ng
+Q'Rf*S"-(BTq\?[Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R.g>(N@i8EVTj5oFc
+kiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=^GTPDfU#LJrBYlrfR)@s,m;D"I#"4P*5F#rf[;F!0[>D
+s,[5Apl>?5rJpi9nW*O,!0$l9rf$Z4s,R,=rf$Q1s,?l8!07#;!0$i8r/UN4#EX[uMMm@KM#E20
+NrY4>O8k7<O8P%;NrtE'O,j0urJ^T2!K<$;N#1O8jlY^hl07L!m-O--n*fc8nac8BoCW%Ts7ZKe
+rV6EgrqcNhrqu]mnc%8BlMgYYrVZSgrM9@frMKRl!3#mrq5OFqrN-%$!3Z:(!3lI+"gG8:ZEgh8
+[/RK6\,EfM\[oAa]Y2"n^r"",`5BO4`Q#s=rlG,^#Kt?9cHjh`d/MGmdf7cMe^i='f@\a/g"P07
+gYL]Chr3PRj5]4]k2tjikih9qlK[^$m-O0/n*oi:o()DEo^ImnN=gbnJ:N,uI=6KiH?sj]GB\4Q
+rcAKgEcH)<Df9N2D/B2e!GZ?JBE;aXrac+@A,]s;@/s^7?NOP>?2e(1>?Y50=oVS-=&r@NIXh?G
+!IoXsJcC8uJc120s6P^ANHnl=@:E_WAS,UiC27X'DfKc<FEVkQH@('hJ:W?+KnbD?MiEdZP*;/s
+R$jG6StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JioB(\k2tml
+l0@X%mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=[GJE6UjO89DVEa;#O2h:B+)k:esmR:B"&^:Adoe:A@Q`
+:A@W^:B+,i:B!uf:B+)p:/+JZ:f'q`r_E/_s%`Jf!)WVi!)EDeq+grcr(m_k:JFPW9hnDW:/Cjh
+!*&qts&Anrq,78kqG[Dl"&i/t;uBN5;cH^r<9*'$k2tmll0@U$m-X60n*oi:o()DDo`"O`pAamc
+q#C0hqYU0hr;?N`rn@D;rqcTlr;Tar<W#nr=8Q%t=8uD&=8uD$<rcA$=TM]1r*98-s'5A*ra,V3
+!+>\4raPq=rFZ%As(MFHs(_RMrbMOM"Dr$nDJoGls)A!X%WZW3FEM_LG'A.TG^4R\rd,f9I=?Wp
+It3'#JV&K+K7no3Knb>;LPUbCM2I4LN/`gWO7ZHL<8(=aJq8H&IsufoI!^0cH$FOWG'3e+$?L6-
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9M]+<_5m]9)VE]9`I`b
+8H;B\9)qYps6N_`<W?$D?XR;O@q9._BPD3sCi402EH?5FGBeF\I=?]tK7nr5Ll%%LO-#NgQ'Rf*
+S"-(BTq\?[Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R.g>(N@i8EVTj5oFckiq?s
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkC*nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H8B5Da?KoD.`VR-3<!5eTK!5e`Qr5/KMqSE9L_Yq=N^^%Wg
+]tD"i]Y"0SrOMm<"hV@W\[]3L\,s.J\+[61[J[E&[JmW5Zi[YD[JR?+[J[K5[J@91\,3W5\,EfE
+Z*:aI\$`TMZa6sNrk/9B"1u4X]DfJC^&#AA]DfGC])B/>\G`o:[f*W6[hn)cjlYail07L!m-O--
+n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrVZWmnG_/AlMg\Zs4R>(qqM,*#2S.ni8ESQro3h8rT+"?
+s5jOKkiq?slg+Q:rpBjVnF6GJ!qZ'Xrq?NiqYL*gquQcqX8gk`n$iOQJUi9#If=a.I!^0cH$FOW
+G'.nKF)uAAEH#jqD@:;tCMR["BkV0mB4h-S#@q=R@fM^$@/aL7?<pk9>QS,5>5h\)=9M]+<i2ej
+VuWgrWrK+"XS8j.s7!Vo]6I^l@Uit\B4u!pCMds-EH6/CG'A4XH[U?nJV/W1LP^nINK90aPEhH$
+R[]k>TV8-VVPgDnXfen5Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTdrdk*'s*t~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkL-nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H8>[M#TD0'rMKT)(VOo(=AOoCOBPQ-g=P67&5P*5g.!0[>D
+!g&J(qMkT9NrG%:NWP3#NU`&,NW4t:NW+n4NW+t<NW4q<NK3dnrf$W3s,?l8r/UN4#`t+/OG/CH
+MMqFis+pW7!07&>s,R#<r/Uf<!07&>!07#;rf$Z2s,@iTjQ5Oekiq?slg4!*mdKW6nF?)?oCMVR
+p&Facp\jmeq>U6fqu-HkrUBg?s6BU\r;`SfU]%"eV>[:iVZNfrWVNRoX8T."Xn]+!Z2_*0Zi7<6
+[C3NQrODm<s186Cs1JWP_8=+._o)Jm!li:$rlG,^$-UQ;cHjh`d*^8?df7bue^i@(rn.8(s4[M-
+'A_O&i8NYSj5]4^k2tjikih9rlMg)Xm-X60n*oi:o()DEp$n'oN<OobJ:N,urd>E,H[:!`G^"@T
+F`__HF)l8?E,Y_n$Z0]qCMITuBP;$kB)Z?HA7K(Xs)VRUra,_5?![G7!aAi3r`T8'$<L8/IXZcr
+IXZcsqgnctqgn]t!/%l_n;R+$G[Orh@qB4aBPD6tD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#Ng
+Q'Rf+S"6.DTqeE\Vl?\uY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6KkrVcBfJcCH(J,~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkC*nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H86U3t(6:OI892PCZs%`Ph!)WYjm8!XVoM5<[r_<Jg:ARZb
+:A@W]:'+3d:Amlg:/=[b:&n)h;#a>k:'"-epJ1capJ:faqbR#_s%iPh"]8)m8P2eX9a"3c9hnI^
+<<-"t<W?%r<VfVo;Ya8k;Z9Vm;ArJ5<9*'$k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0h
+qYU0gr;HT`rn@D;rqlZm;Z]ou<Vohr=8Gtt=8uD%=8uD%<rcA$=oV\&>QA(/>kq\*?N4@4@/==3
+A,g*>AclUVB4q3Ws(MpWCM[d&C27X%D/O3.DZ4SSE;sqWF8pC_G5c[cGlDskH@(!dI/\TpJ,b$!
+Jc:9$KE$W)L&Zo-LB*/0M$JorMi<XUNfWg4oi0jL"bM;UJ:E%II1gpSH?sj]GB\4QFEDSFEcH)<
+DuOV^D/=!'C2.HrBP1sirac=F@q&p25[\"!?NOP>?2e(1>?Y50=oVS,=&r?n8c;9Z9E%Wa9)hK[
+9E.\ss6s"a<W5sB?t!MSAS#LfBkqL$DJsN8FED\MH$XgcIXm!%KSG8=MN!OUOHPfmQC+,1SXuLJ
+USOcbWN*)'Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NlrUg)?s+UK'~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@O5Dh?<pf?>$5QVGCYI.QCXq]`5KR2_SO(*_84"*_o0I0_ns:.p;-pJ
+_SO(f^]M9b^&>SD]DfD@\c',>])]GA\HTLR\@B#WosXb)o!SJ*rNuU4qR$%*r3lX5q6p:3r3lO4
+rj`!=!jf/9rO3!=['I!D]tOEXs1/9D]Y![Gr4*u\\%&oV[^NTO[c?H2k3(sml0@U$m-X60n*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?N_rn.8:rW2uMr7V#%r7h5+!o;_jrnme8rSm_7rT+"?!p8\0
+rojUOlg*p)m/HDSn*olHncJFUpAXdkq>1!cr;?NlWrLb_n@8LN$%d_YJ:E#rI=-D@H6[][GB\4Q
+FEDSEEcH)<Df0H0D/=!'C2.HrBP1siAS#C_s8W%_"^k\E?=$q:>lS%.>5h\)=9)G%<r])nW;`gr
+WrT6tXTP`.XKB29n%/;+EFNEgAS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroQ^F52
+SXuOLUnsufWiN8)Yd(OA[^`l[]Y;.r_Sa@4aN;WLcHaeae'uq"f@em4h;-uHiSrnYk2tjjl0@U$
+m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@M*!T?<pf?>$5*<@qot)H@CR.q2toDP*2#mPl?jHP4b"@P`q;orfd>E
+s,dAEO,s*srf-f8!0-K.r/C]8rJgf8q2PB6s,I&;pPo-1pl5<4r/LW7ooK'5re:E2reg`4reU?1
+!06u<qMtK7!07#;rf$`4(l[M9k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrqu]m
+nG_)?li$q`U&C_^U]%"dV>[:iVuNakWrK.!XT#?sYPtg,Z2h61[/RK6\,EfK\[oAa]Y(qm^r"",
+`5BO4`Q%nts2YGeb0%rQc-O`8d/VMmdf7erf)OA%f`'PJg=tB;h;7)JiSihWjQ,Fbk3(pkkiqBt
+lg*p(mI'H2n+#oHncACUnW)7]s+:W0JUi9#IXQWlHiA=9H$FOWG'.nKF)l;@EH#i6DJa6,CMR["
+BkV0mB4b^dA7Y`?rGr-M?XI,G?2e+/>Q7n+=oVS(=8l5%IsunHIK=qKr.4itr.4`s!/%ubmu7%$
+EFNEgAS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroQ^F52SXuOLUnsufWiN8)Yd(OA
+[^`l[]Y;.r_Sa@4aN;WLcHaeae'uq"f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]
+p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgIeWR0p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@UNPL?!LT;=[PMB#!bOH84Q<Lq+h&e:J^sdr_MoVr_N2^qbR/c!DQ>e
+:&du`:]!oe:]F2g9`e'c:]=)h:]=2j:]F2`:]F2a:]F2e:\mid:]+&h;>sAl:]<lj:JFPW9hnDW
+:\[oi<;]_r<:Noe;ZBYr;GmEk(fTJUk2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6EgrqcNh
+rqu]mnG_)?li$n_r`&hps&B"ur)Wi!!EN;!<rQ2#=T;J%=T2A%=T)A'>$Lo0s'>Y0pg*o+s'Gb6
+qdBV:@q0%[rau.Brb)^SC2.R$CMR[#Ci"!+rbh^Rs)A!XrcA*^s*"Eds*4Qhs*F]l!IT=pIfFot
+J,k0"K)^H'K`6]*LB!#:Ll$tGMMmCONK0$[oMtB[k#MG6$%d_YJ:E#rI=-D@H6[][GB\4QFEDSE
+EcH)<Df0H0D/=!'C2.HrBP1siAS#C_kNDe/"^k\E?=$q:>lS%.>5h\)=9)G%<WPfarC[)_s%<8a
+!)*5^r(I#_!):0,mo90ar`!lH@q9._BP;-rCi4-0EH6/DGBeCZI!pKpJqJc3Ll%%KNfT<cPa.T&
+R[]k>Tq\?ZVl6VrXfen5Za@0N\\#Mg^VI_(`Q$!@bKS8Wd*^=le^rF+g=tH>hr*JQj5f@bkNM0q
+lg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*&s*t~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l5LDg?nhNL$39\&?2$_SQ/e!Q2kT_Z[io_ns=g_Z.OQ
+_Z%@T^qmh$^:jNYs1A9As1/*>s1A<B!kGhOrjW$=[^Yt=!4D^2rj;a7pU1"/rNuR3qR$(+!OfE8
+[f3]1[f<i6[f3`:\@;IIr42j6!O0!1\,EZ5^AY_E\cTOV]C<K2\c0)R[^W]Q[H6Q5kNM0qlg4!*
+mdBQ4nF?MK!qZ'Vrq6<b!;HEds7u]kqtp?ir;H0bf)P4<s4@;'qq:r%qqM,*#2S.ni8ESQro3h8
+rT+"?s5j=ErojgUlg*p(mHs?0n*fcFncJFTp&=[kq"ad`qu$BjrMonN\a[*HKS+o/JUi9#IXQWl
+H[:!`H$FOWG'.nKF)q8"&TDZ+DJa6,CMR[!BkV0mAnGWRrrSCKPl6mI?iOF4?2e+/>Q7n+=oVS(
+=8l5$VPj?j"0&5tWW&ptWrT7!Xo>L'XTGT+Xhk&)](rsW@qB4aBPD3sCi402EH?5FGBeF\I=?]s
+JqJc3Ll%%KNfT<cPa7])S"-(BTq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fmf%8R.
+g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*&s*t~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l&:?tO4oFF&LlO8+n<P5pjHP5pd>PQ$dJPEM+.PQ$^I
+OcYZcpl>B6r/Li<NfERhr/L`8rJgf8qMkK7s,I&;p5T$0rJ^f9rf-o9r/LW7pl>K<O,s.!s+^Z1
+MMqIk"GqqkM3.Oos,R&=pl><6!07#;rf$c5&EW':kNM0qlg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HEd
+s7u]kqtp?ir;H0bf)P4<rhBFdrhB4`rM9CgrMKOk!iW)tq5XIqriH+$!3Z:(!3lI+"gG8:ZEgh9
+ZiIN5[K*f8\-]^W]">Vg]t_A"rPSWR!li:$rlG,^$HpZ<c-O__dEp:grmDe8eCN4&f@\a/g"Y68
+gYL`Ci8NYSj5]4^k2tjirob!ZlK[^$m-X6/n*]Z7nFH2Ao_%a7fSpc%K7ec,J:N,uI=6KiH?sj^
+G^"@TF`__HErL%jE,TW3D/F*)CMIQtBP;$jAnCuAs)A$ZrH&!Gs'>\2r`oJ-s'#D)s&]8&r`9#J
+rdFltJGXotJGXorJcgXWK7h#?m>Uk#E+<HjB4u!oCM[m,EH-&AG'A1WH[U?nJ:`E-L5:\EN/is]
+P*D9"R@B_<T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC.heCN7(g=k?<hV[8Mj5]7`
+k32'olKdg(mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAK`?Q~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1X1oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]n$X6:40?8H2EZ:]=2i:[CjU:\IQ\:]=)i9htR[s%`>b
+qG%#dr_EGes%WPir_<Ghr_WVjs%`5_!)EDe!)EMhr_E>dqG.&drD<Jjr_WPh#>.NX:/=SY9`7]\
+<W?%s<W?%g;u]bq;\W,,;GuW=k3(smlKdg'mI'E2n*olHncJFTo`"O`p&Ojbq#C0iqYU0gr;?N`
+rmq,<rW#mo<;fbq;ufqq<rZ7s<rZ8#=T;J&=T)>"=TVc2>Pqb+?2n1*?2n71?N=L2@K0j;AGp->
+BE)ZFC&_rJD#\8SC2@^'DJfAj!,qjUs)A]mF)uGGF`qqPGBe@YH$Xd`H[L8@IfFotJ,k0"K)^H)
+KS>-ZLB!#:Ll$tGMMmCONK0'\oMt3VlW"gUK7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%mE,TW3
+D/F*)CMIQtBP;$jAnC)ck5IUD5lY3k?3":1>lS%.>5h\)=9)G%<WG_h9)_Ha8k].Wr(?r]r(I/d
+9MNA'm8X$arD[`GAS#LfBkhF"DJsN7F*)SLG^=^bIXls#K8#&9M2R=QO-,TiQC+)0S=Z@HU84W`
+W2cr$YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*ol<
+o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcCE'J,~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkL-nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]fN\H%Cg5Pb>(h_u@LU_ns:._u7OO_tq7M_Z[io_SO+g
+_#hEe^&>SI]=PVc\[h[Mrk&3ArOMs<rjVU0qm>q%rjMd4rjDX1ppL%.s0_X1s0qm6r3u[8r42j;
+"M(_AZEO59#.CqFZbO5grk&BG]">Ven@Sb5r42g:%C`e-k2tmll0@U$m-X6?mfDqJrpg-^o^r.U
+!quB_rV6Bfs8)WirVZTlnG_&>oD\d>!nPuTrn.,$rS%/'s4d\3hV\=js5Et:qr@\:roF4DkNMp0
+"mYF>m-X0=mK2kHnG_t[oC_hVpB^Qjqtp<gr;HVqrrBX`\a[*@KnP)2Jq8H&IsufoI!^0cH$K=4
+"a5$1FE;L%E=-Z'DJj<-Chmg$C&VcGBDhf/PQ-mHQ2b4k?3":1>lS".>5_S*=BAT&<WK&pVuirs
+WW&ptX8f:"Xo5C'XfVK'`;f28qn$u]AS#LfBkqL$DJsN8FED\MH$XgcIXm!%KSG8=MN!OUOHPfm
+QC+)0S=ZCIUSOcbWN*&%YHY==[^WfY]Y2(q_SX71a2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYai
+l07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+LE&~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkI,nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]es<B5;L0H%:X3q2tfCPa(d'rKI>HP5UUEP5gXGOH5It
+NW>(&Nr4k:N;\b7N;AP5NrP+=N;&>1N;/D4N;JV4Nr>"=Nr"h2O9^DmL4tMCMMh@h!0R&;!06u<
+pl><6!07#;req;EMWO!_kiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]rqZTjqtp?ir;H-afDkIA
+s.T@b!29Cdq4mk`rMBIirMT[pq5XFpriH+$poak*Z*CU?Zi7<6[C3NQrODm<s186Cs1JWP_Sa:0
+_o)Jm!li:$rlG,^"j>08cHji9d/VMndf7cBe^i='f@\a/g"P07gtgiFi8NYSj5]7_k2tjikih9q
+lK[^$m-Xc>!q5XKrpg']n;c.\&VYmjK7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc&9aDf0H0Ci!m&
+C2*Z\!,)60rc.sYs)S?a?XI,G?2e+/>6%k*=TV],=8c2!J,autIfP#sJcC8tJbt&tK>dfVN;JTW
+A7]=bBPD6tD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\tXfnt7ZaR?R
+]"G_k^r!t,`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcCE'J,~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkF+nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]e!X6pa=57n?DN:]4,h:[LpV:\IQ[:]!ob:&du`:]!oe
+:]F2g9`e'c:]=)h:]=2j:]F2T:]F2e:\mic:]4,h;>sDg:Ba*V7n?EOqb7&ipf.;nr)NbrnPfHc%
+T?8&jlY^hl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmdq>^<gqu-HjrUBg<s7?6g;u9Pm;u]hs<
+Voes=8>nr=8uD&=8l>$<sMi1=^"s3>?h#1!+#S/q-F#,s'Gb6qI0D6s().A"(c(WBDuTEC&_oUC
+hmg$CM[g(DJa9/rbqgUs)A*\F*%>'s*"Eds*4Qhs*F]ls*aors*t'!s+10$s+:H-KnY89reCi:M
+2@+JMi<USNfWg4j](_L&VYmjK7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc&9aDf0H0Ci!m&C2*Z\"
+_ZiTjlP\'5Q3qJ?iOF4?2e+/>6%k*=TV],=8c1t9)_Ha8P8tU!)*8_r_*,^"&2H`9uR(u<<#ts<
+-;__AS5[jCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UD\%
+0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV
+6Egs8)Zjrqu`no_sFAK`?Q~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@M3'U?<pf?>$4s/D0(&WMNF*rXo?38_uIXa`Pf[4_o'F1_Sa7._SZ8h
+rkeWM!l2O`rOi-A!P5i>])K;C]",EO\c0)=\+R3,[.:X)[K*`7[/RK0[.h!-[f3]1[f<i5[f!W6
+\G`u<\Gj&=\-/t>ZE^k;[g0@K['IK^^:jNYs1A$<!5&'>#.qIW\@K,[rjW[)kNM0plKdg'mI'H3
+nF5u=o(2JFrUg6cp\4X]rqZTjqtp?ir;H0bf)PLD!7Lkq!S#[!fDjM#g&9Y$g]-%3h;7&Ii;V^7
+ir%j8jSn6Ak32g/s6:-\m-O-,mdBQ4nF?)?oCV_SpBUNjqtp<hrV`br!4pmpn@/[WKnP)2Jq<oO%
+=`hTI=-BfH?jaZGBS-.F:*)0EH,r9Df0H0D#S2PC2%?pr;Ze]rKI8GrfmRm?=$q:>lS".>5_S*=
+BAT&<WK#rVuEUrWMlcpWrK.!XSo:#Y5bU(XSf3@s6mPo]5D1lBP;-rCi4-0EH6/DGBeCZI!pKpJ
+qJc3LP^nINK90aPa.T&R[]k>TV8-VVPpMqXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g
+=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*%s*t~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@M3'U?<pf?>$4s/?"%D`EHZ_[M><>6PlHpIPkUC?Pl$[DP5gXGOH5Iu
+NW>(%Nr4k:N;\b7N;AP5NWP3!N:r80N;\_9N;eh9N;JV4Nr>"=Nr+n1OT1@DK8#&6r/1K1s,ll5
+pQ#66"HJJ$N/dgq'^"TBl07L!m-O--n*fc8nac8BoCW"S!quB_rV6Bfs8)WirVZTlnc%,>p\t,a
+s.TCcs.TFdq4mk`rh]RjrMK^qWN#]nri?(#riH1'q6'k(Z*F;6rj2[5rjDg9rO<?J]"5Md]tM1r
+_Sa:0_o2Pnrl>#Zs2kDdc-?76s3UenrmCnteCE.LfDjM'g&KbEgYCWAi8ESRioB(\jlY^gkNM-o
+l0@R"lg=*<mKW.LnaZ2Ao^ImoN<Y,kKS+o/Jc:0/IsufoI!^0cH$FOWG'3e+$?L6-EH#i7DJj<-
+rbDUNBkV2Xs86m:EWC1[EW]ZT?=!P8s'#J,rE02(=',?$s*sur!IoXsJc1,tJc10$K7a#Ra8bUe
+pl00&AnYjmCM[m+E,fo?Fa&(UH@1-jJ:`E-L51VCN/`m[P*D5uR$sM8StMdPUo()jX0&P/Z*UgG
+\%0)_]t_A"_o9X:aihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAKE$H~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgIeWR0p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=]e`ks$R)Z77Kg?9i"O`:]!uf:[LpV:\d`d:JU^]s%WPi
+r_EJf"&;Qc:A7Q]:&n)h:B!uf:B+)l:/+JZr_NYl:/:4Q!)EMhr_E>drD!Dg:/:darD<Mks%i_n
+;#*oe:'a9[84ZNP:/+F]:&e2`<W?%g;uTZ/k3(sml0@U$m-X60n*oi:o()DDo_nFap@n=[q#:*h
+qYU0gr;?N`rmq,DrqTLi<;fbq;ufqp<WH4s<rZ8#=T;J%=T2D$=oV\*>Pqb+?2e+.>l\..>l\41
+?N=L2@0C%LA7T9NB)ZHBBF8HgC2@^%CMIX$D#S;ODZ4SSE!C<&EcZ>FFoHRaG5umeGlW0iHN8Kn
+IfFotJH(3#K)UB+KS>,7L55bas+pu<Mi3OQNK0(l<TR3M<<e23KS+o/Jc:0/IsufoI!^0cH$FOW
+G'3e+$?L6-EH#i7DJj<-rbDjUBkV2>j5]7a5X>32r]gQm?=$q:>lS".>5_S*=BAT&<WG_j8c_RW
+r_!5_rCm/^rCd&^"\hZb9h\7$s6iqb<W,m7AS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbA>MN!OU
+OHPinQ^F52SXuLJUSOccWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]l)6Ao)O:KStt[Ts=O5rknfUrl"iS#K4Nu_ns=/_Yh=M
+_@FE!_8!^t]tD%k]Xtee\bs&<]DfD@\c0)=\+[9-[.:X([f*T4[JI9)[JmW6[J[H9[C3NQ\,*Q2
+\,No9\c92>\bilJWNNP4[C3QR[^NQM_8!^u^&GYE]D9,>]D0#Y]=PP`\@B)Zk3(sml0@U$m-X60
+n*oi:o()DDo_nFap@n=[q#:*hqYU0gr;?N_rmh&Irr:CFdf7c!eCE+$fDaG"g&9Y%g]-(/h#cKl
+i;V^7iqqd8jSn6Bk3(t-kmQeBlg4$*mI'E2nF6GJ!qZ'Wrq?]nqYU-dqu$ElWrLb_n@8LQ$&+%b
+K7\Z)J:E%II0k:JH?sj]GB\4QrcAKgEcH)<Df9N2D/B2e!,DE2!0dDHr0./Fs-3[n?=$q:>lS".
+>5_S*=BAT&<Wc@!Vl0Klri,pts/Z.#rN6%$!NiI#Xi^V2])'$Q\n>\jC27X'DfB];FEMePH@('g
+It3-'KnbD?Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"
+f\,!5h;7&IiSrnYk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]l)6>@1lTD/siJJW'Gh!0dDHs-!GIq3(iDPPg[BPQ$aF
+OoLLCO84e9NTcE%N<5-"N;\b7N;AP5NrP+=N:r80N;\_9N;eh9N;JV4NrG(>Nr>"?NfT7pOSb(C
+ItNK1MM[8jMZ8J6OHGXrO7eM7O,f8"N>7E7kNM0plKdg'mI'H3nF5u=o(2JFrUg6cp\4X]rqZTj
+qtp?ir;H-aec5UI!2'.]rh9=cs.TFdq4mk`rMBLjrMT[o!3,mr!ir?$ri?%"riPt!"gG8:ZEgh9
+ZimeF[^WaE\-]^W]">Vg]t_A"rPJWRrl+oXrlG,^"j>-7c-O`8d/VMmdNI#ge^i@(f\"m1g=k<:
+gtglGi8N\Tj5f=`k2tjikih:1l3$A=mHso@s6g-\nac8BoC7jnNW4_>KnP)2Jq8H&It%BF$%.)G
+H?jaZGBS-.F:*)0EH,r9Df0H0D#S2MCA\#2E;OYPEW]ZT?=!P8s'#J,rE02(=',?$!EFXJIfFlt
+JGausJGk&rK):2Bs6bjANG)s<BkhF"DJsK6F*)PKG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"61F
+U84W`W2co#Y->1;[C3TU]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>Ufl07L!m-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1X1oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]nil6:4*G6q0[;8l&2X:]!uf:[LpU:\mid:B4/c:BF9e
+:]=)h:&Ri]:]!oe:]F2g9`e'c:]=)h:]=2j:]F2X:B4/h:]=,e:]*rj9hnGZ:]+&h;>j>f:]!lr
+5XS.7:JO\[9h\8U<)iEgr`&Vj!)i_n'^"TBl07L!m-O--n*fc8nac8BoCW"S!quB_rV6Bfs8)Wi
+rVZTlnG^u<rVlgpqbmPo;cEQmrDW_q!*/kr!*Atss&]2%s&]/$s&T8(=]t`-s',D+!+#S/q-F#,
+ra5M1s'u(>s(2:CB)ZHBBEMs`C2Elb"_qjiD/O4iDZ4SSE"m;4F)uGGF`qqPGBe@XH$Xd`H[U>A
+IfFotJ,k0"K)^K'K`?c+LAcr.M$JorMi<XTNfWg4k#ChMs+Ui6KS+o/JUi9#If=a%I!^0cH$FOW
+G'3e+$?L6-EH#i7DJj<-rbDaRiSieVj5iN)5l*_F5QbA"?=!P8s'#J,rE02(=',?$!*/tirC[/_
+9E%Tb9E%Q^9DM9]9`[p\aoD6;r)NPlr`/kqBP2!mC27X'DfB];FEMePH@('gIt3-'KnbD?Mi<[W
+OckroQ^F52SY)UMUnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiSrnY
+k2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\;pnaQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U^*\?X@#C>?Y03=(cAmItirFR\m@-`5DSms2FiQotpgI_u@LT^q[Ut
+rk/HI]=YYbr4;m>rjr*>rj`!;p9sk*o!SJ*rNuU4qR#t(s0hj5rO)g9[^N[A[emQ5\Gj&<\Gs,7
+\-8M)Z*CUBr3ljF_83n#^AY\E]D9,=]DB2?])K5E\@Ledl07O5ljN4Kn*fc9nac8BoCW%Ts7ZKe
+rV6EgrqcNhrVZTlnc%)=s3U\ks3gnq"4YlPfDaG!g&B_%g]-%3h;7&Ii;V^7iqqd8jSn6Ak32g/
+s6:0]m-O-,mdBQ4nF?)?oCV_Lrq?]oqYU0fr;HTnWrLb_n@0$bL5(D8K7ec,J:N,uI=6Kird#'"
+G^"@TF`__HF)l8?E,Y_n!c;ahq>^AWr0.,Es-<Uj!+#S/s'#J,rE02(=',?$"BD=rVl0Nmri,pt
+ri?%"riQ.%!j/Q*r2p"%bl@(Aqn$m[BPD6uD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*
+S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8ESSj5oFckiq?s
+m-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\</naQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U`_P?<pf?>$4s/>$tlSDf^/OKSobls-*GH!gAk5qNLc?qNLl@s,d>D
+O5GuqN<"q9NW"h4NW+t<NW4t3NVnb7NW4t;NVnb5NVnh9NrY4=Nrk?&O7n\3O8k:HG(57#L5LkH
+reg`="H\b-O,imoo8`j1"cVX.l07O5ljN4Kn*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrVZTlnc%)=
+s.01]s.B1]rh9=cs.TIepnRb_rh]RjrMK^qWN#]nri?(#riH1'q6'k(Z*F;6rNuR4s0r!;!4i*?
+$G='c^;.V'_o0I1rl"rYa2e2#s2kMgbg"DYci2;kdJhSoeGn,"fDjJ7g"P37gYCW@hr*GPioB(\
+jo4EBkPs`Kl0@R"li$5Nmf2_ZnF?)?oCVR5fSpGtL5(D8K7ec,J:N,uI=6Kird#'"G^"@TF`__H
+F)l8?E,Y_n!c;ahq>^81qJuUB!+#S/s'#J,rE02(=',?$!`a`"rI+csJGaurJGt,rK)1,Ds6YdA
+NH&WGCM[j*DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsugWiW>+Yd1UC[^`l[
+]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@X%mI'H3nF?)?oCMVIp%J+RrV6Eg
+s8)Zjrqu`no_sFAKE$H~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U`_P?<pf?>$4s/5!VG%77Tj>9MSAZqb[8fmS<[Us%WPirD!Ah:AI]c
+:&n)h:B+#i:/+LW:]!le:]=,g:&dug:]=)h:]=2j:]F2Y:]F2i:]*ud:]4#g:&[of:]+&h;$'Qk
+;#*o^:'<F=8kDPP:]=&n;,U@m<E)stp/V,lpJ_)ir_is_kiq?trp1$[mdKW6naZ2@oCMVRp&Fac
+p\jmeq>U6fqu-HjrUKm;s8#Xl;ZK_o;uBVm;Z]ou<V9Am=8l8#=8l>%=8l>$<rcA$>5qh(>QA(/
+>lJ"/>l@t.?N4@4@/F@>@UinYAS,OcAnPcUBE2cGC'e]lCMIU#Ci+',rbhaSs)8]mEcQ5CFEM_L
+G'A.TH$Xa^H@(!eIK"]qJ,b$!Jc:9$K)gT(L&Zo,M#N59MMmCONK&sZr)NYor`/,\mo9pSL5(D8
+K7ec,J:N,uI=6Kird#'"G^"@TF`__HF)l8?E,Y_n$>jTpi8ESRioB.^r':'Bs$6Tj!+#S/s'#J,
+rE02(=',?$!*/tirCd/_r_*;brC[&^qb.5h9MJ5T9M8%&s8#^m<V]So<Voa8BPD6uD/O93EccDH
+GBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8X
+dF-Lnf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCB&
+J,~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l,6<bZDoJ;9)HR\mIj`;dd_`l5m8`5KX5_o28d#/\9p
+_8*h"rk8?Es1A-=rk&0@rji$<s0qa2qm>q%rjDg7rj;[4qR$")rjMg6!OfE8[K*`7[K*f5[emQ5
+\Gj&<\Gs,4\.N&DXg57@[^W]R\%oeq_8!^uot::9!4r$>s186@%I!'@lKdg'mI'E2n*olHncJFT
+o`"O`pAamcq#C0hqYU0gr;?N`rn7>Oci2;hdJqYodfe1Nf%8OQf_aA#gA9P-gtgiEhr+Ils5Nq9
+roF%>!U&\GkmQeBlg4$*mI'E2nF6GJ!qZ'Wrq?Khq>1*f!rW#qWW1Y^n[KZtLkg_>KnP)2Jq8H&
+IsufoI!^0cH$FRXGBS+NFE;L%E<1#srbhN2!0d8DrKI2E"-m1u?2e+/>6%k*=TV],=8c/&<MlXk
+VuEXnWW0!uX8]4!XoGR'XT5I"XoGQLs6R>q]5kJrC27X'DK'T9FEMeOH$XjdIt3*&KSG8=MN!OU
+OHPfmQC+)0SXuLJUSOcbWN*&%YHY@?[^WfY]Y2(q_Sa=2a2lEHc-FY_daZdtf@\g3gtgiFi8WeX
+jlYail07O#m-X60n*ol<o(2MGp%A%Pp\ssfq>^<hqu-HlrUg)?s+:9$~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l/7<aB*DC2nBBIY3WCrfd5DqNLf@qND/IPEM)kOcYX]
+NrG">NfB"qNW"h5NW"k=NJrhiNW"h7N<"q:NW+k;NK!aorJpo=s,R)>"-/G&O7n\3Nrb?'rf@7^
+H\.!,qhkE:rfR5A!fi>%plG!+%I!'@lKdg'mI'E2n*olHncJFTo`"O`pAamcq#C0hqYU0gr;?N`
+rn7>LSc55\TDYA]U&LedU&Le^U\gkdV>d@jVuN[qWVNRmX8f:#XT5O"Y6(r5Z2V'.ZimeF[^WaE
+\-]^W]">Vg]tV;!r58NQrl>#Z"Nnp2c-?76!7:\ls3gqs)qENjf@S[-g"P37gt^`Bi8ESRioB+]
+jlY^gkPjZJl0@R"m/?>OmK`4MnF?)?oCVR5fo7)1Lkg_>KnP)2Jq8H&IsufoI!^0cH$FRXGBS+N
+FE;L%E<1#srbhN2!-%gT!HN2UEWTQQ?2e+/>6%k*=TV],=8c/$<I]MsIK=qKqgn]rrIOp!!J?""
+K?jM`N;SZTBPM=!DJjE5EccGJGBnL^I=HcuK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tXfnt8
+['mHS]"G_k^r""-`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nN
+p@nR]s7u]kr;6Hjrr)KgJcC?%J,~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgJ+r[1p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]ng,5Q=%T6q0a;84u`Sqb[8fs%WPinP9$Ys%WPirD*&^
+!_uNer_<GfrD*)_qbI/er_EGe!)EMhs%WPirD3Pk:/:4Q!)EMhr_<Ji:B"&e:&n#f:B+,g;#X;n
+:f1'b:\RWa9a!aD77p,M:BsWh9i4bc<)riqr`&qtr)N_qpJ_)i%I!'@lKdg'mI'E2n*olHncJFT
+o`"O`pAamcq#C0hqYU0gr;?N`rn7>G;YsAo;H$Nk<;fbq;ufqf<WH5#=T2D$=T;G'=BYT+s',D+
+!+#S/pg!l+ra5M1"CbkOA7baPrb)4D$#+-hCi!m&C27YaD?"MRDuO\YEH6)AFT-F_G5laqG^4U\
+H?spbI=6QnIt.HJ!.k-$s+:K.KnY89L]3,/M$JorMi<XUNfX-=hc0&E+,Pf/L5(D8K7ec,J:N,u
+I=6KiH?sj]G^"@TF`__HErL%ZE,Y_n$/XRti8N\TjQ/W&5l!VH5[I`%r`oJ-!*]>(!a&N*rDir!
+8c;9[9*%UWr_38_rCd&^!DQ8e9`Rld9@!S5<;]bg<,lSdCM[m+E,fo?Fa&%TH@1-jJ:W?+L51VC
+N/`m[P*;/sR$jG7StMdPUo(&hWiW>+Yd:^F\%0)_]t_A"_o0O7aND]NcHjndeC<($f\5*8h;7)J
+ioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrqQNhs8)ZjrVZZno_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]l29=&s*SG_([2PFSS\`;[^U`r<sW_uRdU`;d^V`5BOg
+_Zdon^V@Lsrk8?E!5&*=rk&0@rOMs<!4V[1qm>q%rjMd4rjDU0q6^=3[C3OA[JdN6[J%'+\,No;
+\c'#<\b!?1\Ik=1Z*LmJ[^W]R\%oeq^q[Utot1F>]"5McrO`NL]=PQ;l0@U$m-X6?mfDqJrpg-^
+o^r.Us7ZKerV6EgrqcNhrVZTlnc%DFqp55frR(VmrmUnt!S5m$f_aA#gABV/gtgfChr*GliVqj6
+j8S-=jT4N-rosIJ&F8]LmHs?0n*fc9o()DDo_/:Y!VlNiqZ?]ori,qN\ad0PM26qAL4t;5K7\Z*
+J:N,uI=6KiH?sj]GB\4RF`__HErL%ZE,YLNs-*MIr07&ArKIAK?![G7!aAi3r`T8's&]2#s&B2$
+VP^8hri#gqs/Q+"rN-"#s/uC(!NrO$XoGO(YL*=8])TDB\nYtqD/O93EH?5EGBeF\I!pKpJqJc3
+Ll%%KNfT<cPa.T&R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*$s*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]l5:=&rR7Anu@.G^b@+PEYm.qNLf@plboFPEM&jOH8:Z
+r/C]8rJg`6qi1T8s,I&;p5T$0rf-r:s,Hr8qMkH6s,[2?rf7&>rf?f8q2YQ<O8=qBF+/gtMMd8h
+MZ8hBOHGZdO8b17O8+_8NW+t<klpA<m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu-HjrUKmD
+s7`)aT)YG[T`1YbUAgkdUA1M]V#@.hVZ!CnW2]Zo!ir?$ri?(#riH1'q60h&!3uO/!42[3"LY\H
+\$u=G$+[XY]=bhk^V[kd_Z7XS`W!pXa9B].bKS5Urm1Vks3^hos3q)"f)F;$f`0\*g]-%Sh;7)J
+iSrkXjQ5Lck3(pkkiq?slKdg(mI'B0mdKZ7nac8Bo^RspN?F(6LPCP;KS+o/JUr?%IsufoI!^0c
+H$FOWG'8"MFE;L%E<1#sp](85!-%aRpi?C?r`fM/>$Co.s&f;&r`9&!!`XZ!rI+csJGaurJGk&u
+JcULUq1A[#d/WEjrJbQ,CMds-EH-&AFa&(VH[L6kJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo1/k
+X0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]nj.<^/r<63fnK7Rp*G:f%'er_NPh!)NMf!)N>ar(dAh
+:J^sbnk]0Y!DcJa:]!oe:]F2h:&dug:]=)h:]=2j:]F2Y:]F2i:]*ud:]4&g:&duf:]4,f;#jGh
+:\IQ\9a<F<8kMlT:/Cj`$rKo$<)lms;c?Xq<E/iqs&Ahn$W9o%;X*H2lg4!*mf)YUnF?MK!qZ'V
+rq6<bs7cKes7uZjqtp?ir;H0bhZ*OQpJUofs&/hpr)ESm!E<(k<WH5#<rZ8$=T2D#=T;G&=T)G&
+>Pq_+?2e+.>l\..?2n71?i"42A,g*>AcZITrb)4D$#+-hChmd$C27YaD?"MQDuXeVEWgH*FEMa*
+G5lddGli;;HN&6kIK"]qJ,b'!Jc:9$K*6j]Knb?]M#N82MZ8S;N/`jXO8`/;<:*[.M26qAL4t;5
+K7\Z*J:N,uI=6KiH?sj]GB\4RF`__HErL%dE,XRhhV[8MiSrqZr]g<Gq`k'Ds$$QM?![G7!aAi3
+r`T8's&]2#s&B%urC[#]s%<8a!)*8_r_*,^!DQ8e9`n'^92*_4pf./koi,[@CMds-EH-&AFa&(V
+H[L6kJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHste
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`X'WH%Lj4PFehcs2G#Xrl"rW`Pq\lrPK#]_o'F1
+_SX+(^V7G\]`GdXqRZ[<rjr-?"1l%Q\G!?2[JR?&[JmT7[JmQ4[JI62[C#_:s0hj5rjMj7s0_p:
+q6p41rODm<rO;j<o=4_/s1/f9XKf(>[C<TR]"l(r_8!b!^@f/<])TDA]Eu3]l07L!m-O--rpKmW
+nc&(\oCV\Sp&Facp\jmeq>U6fqu-HjrUBgIs8U@CcMZ#ed/;;kdf.\teCE.$rRh##rS%/'s4db5
+hV[5KrSdb8r8[e;rT+(Ckl0iHl4<4ImHj6.mdKZ7nac8Bo_&1W#Pn5nqu$BjrMfhM\a[-/M%,8r
+L5(D8K7ec,J:N,urd>?*H[:!`G^"@TF`heJF)l8?pAalOq31cAs'>V/s'#J,r`T8's&]/"!EE+u
+V?!OnW;`dqWrK.!XSo:$Xokf/XfVE%s/lC+Yg`XO\a?t@]=PRiD/O93EccDHGBnL]I=?]tK7el4
+Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)`Q$!@bKS8Wd*^=le^rI,g>(N@
+hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*$s*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`TQ6?tO4oG'\UmOH]R+qigoAq3(fCrf[MKOcb`d
+O5Q&uN<>3#NK!gqr/CQ5rJpo;!0$W2rJ^]7s,?u;r/CK3rJgl=rf7#>rf-u>p5o-3!g&J(p5fE%
+JVAi8rJCT7rf[8C"-AS(Nq\V7NW>.;NX1X/l0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNh
+rVZTlnG_MKo:>oQrh'(\rh9@ds.TIepnRb_rMBLjrMT[o!3,dorN#t"riH1'q6'k(Z*F;6rj2[5
+rjMj9rjW9F]"5Md]tM.q_Yh=N`<+'"a8X0[b5]]cc2Z*Nd*^4fdF-IleC<%"f@S[-g"P07gYCT@
+hVdAOio9%[jlPXekND'mlKRU!m-O-,md9H1n*oi:o()DANnKElM%,8rL5(D8K7ec,J:N,urd>?*
+H[:!`G^"@TF`heJF)l8?pAY,5ol9bIs'>V/s'#J,r`T8's&]/""'&<MJ,OfsIt7EIrIFp!s*t*#
+rdk0'K)($"KS@nT!fW%qm>V%(A8H+#DfKf>FEVkRH@('hJ:W?*KnbD?Mi<[WOckroQ^F53StD^N
+UnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+:9$~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`VKb6O#qJ7n?BL:]=2i:BF9e:]=,g:\[]^:BXEg
+:JO[T:]F/j:JULWqb@,er_<Pi:/+L_:]F/i:]4,i:B4/X:]F2i:]*ue:]*uf:&duf:]4,i;$0Wl
+;,I*bp.k?V"?8hB8P]7\!)<Gi$W9r'<E)pr;cQgs;u9Si;[?:cl0@U$m-X6?mfDqJrpg-^o^r.U
+s7ZKerV6EgrqcNhrVZTlnG_MKs&/\lpJUrgr_ibpr)ESms&98(<`W4$<`N1#qGmZ!<`f9&r`B)$
+s&T8(=]t`-s',D+!+#P.r`oM/rETD0ra,Y5qdBb>@q9+]AnGUdrb)7E!,;FI$#FBmC2.R$D/O4i
+D?+VSDut$"ErL1\FoQXbG63#7H2`-iHNAMBrdOlss+(-#s+:9'!/1?*",;SeM#E/8MMmCON/`jY
+r`.ZOnl>^H%>]doL4t;5K7\Z)J:E%II2dQ\H?sj]GB\4QF`__HEcH*Sh;$iChV[;Nj5g,&r':-D
+rBC6Gs'>V/s'#J,r`T8's&]/"!``2krC[#]!(m,_qFU`\r(I8g9MA/T9`@Zc9M<k7!`W)sl;V;1
+D/O93EccDHGBnL]I=?]tK7el4Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)
+`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*$s*t~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]l29=&r=<EI3FrOHuK=]`#kK`<XE%`5T[5`PhYk$,ja!
+_SO((^V@M^]`GdXqRZ[<rjr'=s0r'<pU1(0qm>q%rjMd4rjDU0!O]<1[K!]4[JmW7[J.*1\$l7E
+rO;j<rO;j<o!nV.qmlm.Z*Ln<[L0+O^q[\$^V7Fq]D&r=]=IpPrjrTOl0@U$m-X60n*oi:rpg-^
+o^r.Us7ZKerV6EgrqcNhrVZTlnG_\P!R&^dblc89cHc=5rm:Sjs3gkp"4buRfDXA!g&9Y%gBHBg
+hVR/Jr8I\8qr@\:roF1Ckl0iHl2p;<m/HATmdKW6nG_t[oCV_TpB^Qiqtp6er;HVos4OsQ\.spZ
+M2@%DL5(D8K7ec,J:N,uI=6Kird"`nG^"@TFoHI_F7fM+Pk^I@PQ5"g>QS,5>5h\)=T;J$<X)Q'
+<2QOjVuEUpWVrjsX8]4!XoGR(XT>T+qlTn$s/uF,ec5ETn@JX;CN+96FEMeOH$XjdIXm!%KSG8=
+MN!OUOHPfmQC+)0S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiF
+i8N_VjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]l29=&r=,@VBOsG'SUnOo(CCPQ-jIPP^U?P5pjHPQ-gG
+OTCQ)i/[_p!0$l9r/CN4rf7#<s,?Z2rJ^]7!fW+uqi(B2rJh#ANfK0]rJgl=pQ533!K`B4O9g8g
+L5UnGMM[,eP5gXFOH9C$pQ,?7!0@&<$gHsBm-O--n*fc8nc&(\oCV\Sp&Facp\jmeq>U6fqu-Hj
+rUBgNrrAPfSF`<NT)YG[T`1YbUAgkdUA1M]V#@.iVZ!FmVuWgoWWK6$WrB(!XT#=%Y5,:$YlD!.
+Z2h61ZimeF[^WaE\-]^W]">Vg]tV;!r58NQrl>#Zs2kDec-?76s3UtrdF$CjrmV2'f%8O+f\,!X
+gD\l(hV[8Mio9"ZjQ5Lck3(pkkiqBtlg4!*mJZGWn*oi:o()DBNnKC,Mi*@JLkg_>KnP)2Jq8H&
+IsufoI!bj="aP?:GBS-.F9$CSs8I'4EVFJR?2e(1>?Y50=oVV(=8c/%<E)qIrI4cr!.auurIFp!
+s*t*#rdk0'K)('!KE-bWs8S&SMt2i,NW3m3E,fo?Fa&%TH@1-iJ:W?+L51VCN/`m[P*;/sR$jG6
+StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@X%
+mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAK)^?~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]kl0=&r<er^-iW7n6-G:B")e:]F2g:\[]\:]F2[:]*rg
+:JUUZqbI/es%`Me!_uNer_<Ghr_WVjs%`5_!)EDe!_uNeqbI,drD*>ds%`Sir)!;g!)WPgohP-R
+"&;*Q9)VNh:/+V`;,[?lr_io!<)Z`n<<-"o;[_jTlg4!*mdKW6nF?MK!qZ'Vrq6<bs7cKes7uZj
+qtp?ir;H-al2Uc\r)3DjpJUofs&/kqqc*Jl!E<(u<WuK(<E<.#rDj&&<`W:'r`K/$rE0)$!*K2'
+r`f;*!+#S/q-F#,ra5Y5!+>e7"CbkOA7baPrb)4D&8>loCMR[#C27X%D/O3.DK#Mns)J'ZrcJ0_
+s*"Eds*4iqH$Xd`H[U>AIfFotJ,k0"K)^K'K`?c+L]<2/M$SusMi<USNfR2j<;'<,Mi*@JLkg_>
+KnP)2Jq8H&IsufoI!bj="aP?:GBS-.F96O<g]#t5h;7#HiSrnYqEOpDq`k!Bs$$Khr`fM/>$Co.
+s&f;&rDiu"<)i]d#tml`9M8#N8kDVQ9)D9b9h\8U9`@]b9E7`9s8Q'p;t*cdDJO32EccGJGBnL^
+I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fm
+f%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC?%J,~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`TQ-D5DW6MNF-qX1nSQs2G#Xrl+oU!l`*rrkf/_
+_o0L2_ns:,^qd_!rk/?F]DB,<]DfDA\HBFR\@D7@!4D^2o!SJ*rNuU4qR$:1!4;X2"15JE[emK4
+[f<c/[emQ4\,a)<\,a)1\GWo5])TATX08h=[^NZ<^qd_"^qd_!^:_)P]Fh`c\[oAa]B\_Km-X60
+n*oi:rpg-^o^r.Us7ZKerV6EgrqcNhrVZTlnG_nVrlY5`!6kDdrm(DerQtMjrmLep!7_#!rRh##
+rS%/'s4db5hVR/Jr8I\8qr@_;rT+(Bkl0iHl4E:JmHj6.mdKW6nac8Bo_%qWpAt'crqcfqrVc_p
+s4OsQ\0-`gMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`H$FOWG'.ous8S;UPkgOAPQ5"g>lS".>5_S*
+=BAT&<rZ/&<2QOjVuEUpWVidrX8]4"XoGR(XTGZ-XSf4#Y5b[+YccUXpUTh*Ci=<5F*)PKG^=[`
+I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tXfnt7ZaI9Q]"G_k^qmn+`Q-'BbK\>YdF-Oo
+f%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6KkrVcBfJcC?%J,~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`TQ-?[Z[+EcubZLQ_V#!0dAG!0d;EqNLrDrfd>E
+!g/S*i/[hs"-/A#N;\b6N;JV6NrP+=N:r80N;eh:N;nn7N;AP1NrP1=NW>.7OS=h)OT1FEJVAjW
+M?&,(P5^REOH9C$pQ#?8O8Y(GlKdg'mI'H3nF5uIncJFTo`"O`pAamcq#C0hqYU0gr;?N_rpTjm
+R$jA2R[]e:SFW6NT)PAZT`1VbUAgkdUA1M]V#@.hVZ!FmVuWgmWr9!uXT#=%Y5,:$YQ1s-ZMq62
+[K!]8\,Ei:])TDB]`Pp__Yh:O`;[aTa8X-_b0/#RcMl/gdJqW7e'umte^i@(f\"m2gY:N=hVR/K
+iSrkWjQ5Lck5OQDkQ:#6lMg/LmJlVRmf`.No(2JCNnKC7N/NRMM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jd\GB\4QFS#P4EW'qPEVjbVF8g1[?2e+/>6%k*=TV],=8c2"<<?-LJ,OfsIt7EIrIFp!s+(*#
+s+:<'q1Aa%L4e+Xrf$]3nr.FFDfKc<FEMePH?sseIt3-'KSG8=MN!OUOHPfmQC+)0SXuLJUSOcb
+WN*&%YHY==[C<]X]Y2(q_8=.0a2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<
+o(2MGp%A%Pp\jjeq>U6gqu6NlrUg)?s+:9$~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`W3e63okD7R]m?:/4X_:]F2g:\[][:B4/Z:]F/j
+:JULWqb@,er_EGes%`Sir_<Ghr_WVjs%`5_!)EGfs%`SiqbI/er(d8dr_EJhrD<Dh!)WMfp.k6S
+s%`Mg"%5^Q:B"$#8l8J`;GpIo<)cdp<)lmr<;]bm;[VgUm-O--n*fc8nc&(\oCV\Sp&Facp\jme
+q>U6fqu-HjrUBgTs8Gjq;Z9Pk;Yj>e;Z'Jm;ZB\n<;]\p<!ZK)<`N.#<E<,u<rZ5'<``='r`K/$
+r`K2%!a&T.r`]>+s',P0qHX#*!*oJ.!+,Y3!+>\4#\%:SA7]@bAS1pSrb2:G!GlQNC'\TkD/F0-
+DJjClE!:6%EcZ>ErcS6as*+Kg#C:ZAH@(!eIK"]qJ,b$!Jc:9$K)gT(L&Zr.L^T&qM2@+JMi<XT
+NfV^ioi3])Mi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$OXYGBS+Ng"P39gYCW@hV[8Nj5W<eq*4jD
+q`jsA!C'lh>lS".>5_S*=BAT&<rZ/"<;K5e9*%XYr_*8`s%32^!)*5`!DQ8e9`Rld9*.d[9@s4C
+<;KPi<;ohn<,?JmEH?5EGBeF[I!pKpJqJ`2LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKA\1ZEpsJ
+\[oGe^VI\&`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Z
+p]1-hqY^6ir;HTdrdk*$s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`TZ0BVVGPL5M(YSu]`Ja8O$W`<O9"`Pf^4_u%CP
+_ZI]k_>_1P^:h4m]DB,<]DfAF\[oA_\[V=As0_d3o!SJ*!4Dg5rjDU0!k#DBq6g72r3cO4s0_O.
+r3tn"r42X7s1A3?!jT>ErjMjBs1eTLs1\WL]t=$O!4r->!:0XN$gmBNn*ol;o()DDo_nI_p&Ojb
+q#C0hqYU0gr;?N_rq6<kaT'B\b5TTabl5igcHjf4ci2;hdJqYodfe1Nf%/IOf_jG#gABV/gtgiD
+hr*GkiW%p7j8S-=jT4N,rosIJ!pf4>rpBaR'^tP\nac8Bo_%qPp\=R\qYU0frV`\pft$[`&%RXW
+MM[1GLPCP;KS+o/Jc:0+IsufoI!^0cH$K=4!-[u6r0-f<qNLiAr`fM/>$Co.s&f;&rDrqus&B#q
+s/5mqs/Gsss/Z.#rN6+&s/c=)XSf4#Y5b[,Yck4_s7X"p\n5l#EcZ>GGBeF\I=?ZrJqJc3Ll%%K
+NfT<cPa.T&R[]k>TV8-VVPgGpXfen5Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`T]1>C:m6DKC#JJ;9;PPEY[(qih#Drfd>E!g/S*
+i/RkuNfNsqr/CQ5rJpo;!0$W2rJ^]7s,?u;r/CH2qMkQ:r/Lc<plP31mu[R3r/_/;Mi!=JM3F)$
+P5^RHOH5B]NqJG6NpH]2$gmBNn*ol;o()DDo_nI_p&Ojbq#C0hqYU0gr;?N_rq69kRJ`HPRK&`U
+S,SrLSc>;\TDG5[T`ChdT`Ch]U\pqdV>mFkVuEXiWrB(!XT#@%Y5,7&Yd(J4ZMq34[C3OC\,NlD
+\[oAa]Y2"m^r$#e"iSC!`lH.!aT'BebKS5Vcd0u:d3$fce'umte^i@)f\,!4gY:N>hVR2LiSrkW
+jQ5Lck3)^,$L-j@m-O-,m-X3.rpL!Zo()DEnW):^%ZH='M2@%DL5(D8K7ec,rdY<)IXQWlH[:!`
+GlDmeG4Yb3EW'qQEW0t]EH6)@F8g4Z>QS,5>5h\)=T;J$<rZ2";uhFHIKG"LJGautJGt*$J:E.L
+JcULUq1Ad&KnY35s8@oQMt;m>DfKf=FEVkQH@('hIt3-'KnbD?Mi<[WOckroQ^F52SXuLJUSOcb
+WiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+13#~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`W3c5smq+77Kj=s%`Ge!)EGfpeKsI!)EJg!)W>a
+r(d8fr_EGe!)EMhs%WPirD<Mi!)DrXs%`Sir(d5erD*>ds%`PhrD<Dh!)WPgohP-R!)E8a#"_Qa
+:JX_^r_Wer;cHarr_rhrs&/nsrDiep!E/7_ljN4Kn*fc9nac8BoCW"Ss7QHer:p<frqcNhrVZTl
+nG`+\s&/_ks&/hnrDNJjpJUrgr_i_orD`Ym$<1#+<`N.#<E3("rDrhtr`K,#r`K2%!E`M(>5hb(
+>QA(.>lJ"/>l@q.?N+:6?t!JOra?(A@q9+]AnGUdrb)4Drb;FKrG)@K!,_XOs)@sW!HN8\FT6L`
+G5ladGl;mfHN&9kIK+crJ,b'!JcC?$K*?p^KnbA<reLo<Ll%"IMi<XTNfVdko2Q9ZMi*@JLkg_>
+KnP)2Jq<oO$%IDPI=-BfH?jc7G6<$Ag=lP\#Me.khr*JQj8;+:5Q="G5PdPD5Q4mh>?Y50=oVV(
+=8c2"<W?%q9)hNg8kViN91hhS8H;B]9`Iie9`Iie9`Icc9E@d[g&M"MqG[5iqGV!EEH6,BG'A1W
+H[U?mJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHste
+eCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcC6~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KS.MQa"0L5M+ZT<$#Pa8O$T`<!opqo&NP$GsWq
+^qd_!^:h1kqRZ[<rji*?rji0A\@;7ArjD^3n[8A)rNuR3qQp=3[']\;rjMa4s0hp7osXe-l+$W$
+q7?U<qmld<rO<<E[^Nf`^q[Y"^q[Xu^%f8?]DfA@ljW:LmdKW6naZ2@oCMVQo`Fj]p\agdq>U6f
+qu-HjrUBg`s8U.:a8j?\b5KK`bl5ihcHje]qp58gr6bPmrmLntec+.uf_aA#gABY)g]ZHihV[8h
+iW%p7j8\3=jT4N-rosIJ&F8]Mm-X3.n*fc9o()DEp%A=Y!VlKiqu?QprVibqft$^a'tK<_N/NRM
+M26qAL4t;5K7\Z)J:E%II0P(GH?sj]GOb_0POt+<PP^UD>QS,5>5h\)=T;J$<X2W(<)]ZkVl0Nm
+!3,psri?%"riQ4's/c@*XfVH&#-P/5Yct:#g]-rWoX\FMEccGIGBnL]I=?]tK7nu6Ll%%KNfT<c
+Pa.T&R[]k?Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^=le^rF+g=tH>hr*JQj5f@b
+kNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KJ+Ck.(PDf^,KJVjAirfdDJq3:c?s-3MHrfR>F
+OH8:Z!f`5#qi1K3r/L]9s,I&;p5T$0rJ^f9rf-i7s,@#;r/LQ5!0@)=s,Zr:ooJU(s,m/>rf78A
+M2I1PPEGj-rfI8DO,a.!r/^l<rf@*G%.3KNn*fc9nac8BoCW"S!quB_r:p<frqcNhrVZTlnG`=b
+s-W_Pr0[MPs-itWs.&\Orgs+]qk3q^!2BIds.]:`r1s:frhfXls/5psq5XCos/c4%!3Z:(!3Z=)
+s0)L.riuO1rj2g9[^NZSrO<0E]"5Md]tV7s_Yh=N`W!pXa9fu2bKS2UcHjkarR!%Ae'lgre^`:'
+f\+s3g=tB;h;7#HiSieUj5f=`k2tjikih9qlK[a&r9XLPrpL!Znac;DnW):^s,7PJMM[1GLPCP;
+KS+o/JUi9#If=a"I!^0cH$FQ'rr@$8EW'qREW:(YEW'tYErK;F>?Y50=oVV(=8c/'<E)prIt.EG
+!IoXtJc:2uJHLCQJqEuS!.t$!",)D]FkcorNW"h4MtDs9EH6/DG'A4XH[U?nJV/W1L5:\EN/is]
+P*D5uR$sM8T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:h;@/LioB+^
+k3)!nlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcC6~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KJ+4[MP&6UaI98P\qSpeL!J##7ri:esnaohYN]
+s%iVhr_<Dfs%iVh!)NSjs%iYiohPQ_qbI2er_NGes%iPfr_<Dfr_NMiqb[>ir_ESl:J^[Zo1]3[
+p.tW^%8T\n:Jakc;,U:k<)loo;uK\r<;ohrljW:LmdKW6naZ2@oCMVQo`Fj]p\agdq>U6fqu-Hj
+rUBg`s8>gn;Z'Dl;Z9Pl;Yj>d;Z'Jm;ZB\n<;]\p<!$'#<r,hq<rZ5$<rQ2"=T2D$=T;G(=BSf+
+>5hb$>lJ"/>l@t.?N+=2@/s^7@1$IRA7]=aAS,OeBDuQEC&ViIC]8&NCM[j)rGD[TE,ber!HN8\
+FT6L`Focf3rH\Ehs*FcoIK"]qJ,b'!Jc:9$K*?p^KnbA<reLo<Ll.(JMi<XUNfVglo2QKaN/W[P
+M2@%DL5(D8K7ec,J:N,urd>*#H[:!`G^%fmg&B_*gBZNihV[;OiSs\tq*+jEq`jm?r`fM/>$Co.
+s&f;&rDj##<)cfm9)_Ha9M>@Wr(-l\rCm2bs%NGe!)3Ab"&)?\7bdqC;uK\l;u0Jj;daTcFEMbN
+H$XgcIXm!%KSG5;M2R=QO-,TiQ'[l,S"61FU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[
+dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`T]1<0"2.J;/rDQD1J$`lJ(ur5J]S!5nZO$cBiu
+_83q%^V7Co]DB,<]DfAF\[oA_\[V=ArjD^3o!SJ*!4Dg5rjDU0s0Vj6qm?O5[C3O@[K!]7[Iq!,
+\+mH5\+7'+\b`o:]DK/>\bru:\HTLOYeRuhrkA]R^V@Lr]XtfS]Ec']]",B<mI'uB!V#XYo)J:]
+o_nFap@n=Zq#C0hqYU0gr;?N`rW:*[aSa*Ua8j?[b5TQabl,cfcHjf4ci;AidJhSndf@nsec=>#
+f_jG#gAK_)h#H44hr*GkiW%p7j8S-=jT4N,rosFIs6LWjm-X3.n*oi:o()DEp%J.Sq"X^^qtg6h
+rMT\L\b!?2\K$WhN/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH[:#-s7_`LPl?mDPQd=W>[(B8r`T8'
+s&]/"s&K(u#?.LsVl-JlWVidrX8]4"XTku3Y-"h/XSf4#Y5Y[*Y2''L\b3OEF*)PKG^4U_I=Hcu
+K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,
+g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`TW/<,[:uCiFE>H\.*<rfdDJq3:c?rfmDGrfR>F
+OH81Wqi1K3r/L]9s,@#;oo8p/rf-r:s,Ho7s,@#;r/LT6!0@&<!0?o:oT/O(rfR&=rf?r<&;l:-
+PED#kOckigOH5B\NfO+"#EFk)NK<Gnmf)YUnF?MKs766_rUg6cp\4U\s7uZjqtp?ir;H0bqj7>M
+r0dJMs-`nUs-s%Yo:>iOs.B1]q4Re_pS7\_r2'FjrMTXnpo=:n!3H1%s/u1$!jJr7rj)O1s0Vj8
+rjVj9s186Bs1J]P^V[n+_Sa:0rl+lWs2YJfbKJ,ScHjh`r6bPnrm^tus47A*g"G*Yg]-(1hV\=k
+s5G'ZjQ5Lck3(pkkiq?slKmm)m-X0,mdBQ4nF?)Ao^RsqN?!t<N/W[PM2@%DL5(D8K7ec,J:N,u
+I=6KiH[:#-s8R'6EW'qNE<(%XEs?Z+>[1K:>5h\)=T;J$<rZ2";uopIrI+csJGXotJGk$(It3*%
+JqJ]-qLeg$!el8\h#ID6rJ^T2oo*F&FEMePH$XjdIt3*&KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`
+W2co#YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<
+o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+13#~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`TT.<'*E65sn.38P2bP:\[]\:B4/Y:B4/g:B45`
+:]4&g:]=)k9hnDXr_NPh!)NPis%`VioM5H^r(m>fs%iMes%iSgrD!;es%iSiqb[>ir(lu\o1]3[
+p.tT]!`)WhrD3GirDNYp!EE+q;uTc#<)QZ]mI'uB!V#XYo)J:]o_nFap@n=Zq#C0hqYU0gr;?N`
+rr5dl;#O8j;Ys>k;ZBVl;Yj>e;Z'Jm;Z9Vn<;TSr<)lt"qGmJpr)`l"rE&u#s&T5'=oMV(>Pq_+
+?2\%->l\..>l\41?OpOQ@:3MO@:E_WA7]=aAS1pSrb2:G"`%jeC2.P`D$+ZmDJoGm%<?H.F)uGG
+FEM_LG'A30H2i3jHiJNnIfFotJ,k0"K)UB-KS>,7LPUbAreUT3s,.#=NK0$[hc'SSr)E5e/WPgL
+N/NRMM26qAL4t;5K7\Z)J:E#rI=-BgH@"/of\"m2g"P38gtgiEi8NYh54h)74p=/U>[(B8r`T8'
+s&]/"s&K(u!)rberC[,ar_!&Z!)*8as%WMes%N_l91qrP91qt6s8Q$r<;KPi<;][*F*)PKG^4U_
+I=HcuK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=l
+e^rI,g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r?0<)\sbH@gp1OI2iHrl>#X"NAC#`Pq\l%E69'
+_SO+*^qd_!]tCuR])K>=\cTFP\+mE2[JdK&[JmT7[JmQ4[JI63[C!=:[K!]5[JmW7[Igp+\+mH5
+\+7'+\b`o;]DB)=\bru;\bio9\c9JE^BD?e^:h2Y]D]AF]=dLtmf)YUnF?MKs766_rUg6cp\4U\
+s7uZjqtp?iqu-Bj!6+fS!lrC'r5\`V!6P/]s3(GdrQP>fps8rdrR(VmrmM&#e^i='fDaG#g&0S$
+g]-(.h>uNlr8I\8qr@_;rT+(Bkl0iHl2^/Lm/QG[mdKW6naZ2Ao^qhUpB^Qiqtp6er;HVms4Y$U
+\Gj#WNfB!VMi*@JLkg_>KnP)2Jq8K'J:E#rI=-D1s7DNIPlHsEPQd=W>[(B8r`T8's&]/"s&K(u
+"B21pVl0Nm!3,pss/Z1$rN-7+YHG"0Y5>@$Y5PU)Y293M\c98>]DT6RFEVkQH@('gIt3-'KnbA>
+MN!OUOHPfmQC+)0S=Z@HUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiF
+i8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13#~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r?2<)[dfASc=,G^P+#Pa)04s-*MKrKR2CrfmDG
+rfR>FOH84XqMkB2r/L]9!f`.tp5T$0rJgi9s,Hr8rf$o:r/LT6!0@&<!0?o:oT/L'!0R)=rf?c7
+rK.JNOcbfgOH5E]NK0%uNs(K(m-X6?mfDqJrpp*\!;-6_!quB_r:p<frqcNhrVZQkqYgJ]qj@8I
+rg<YPqj@DOs-`qWrg`SNrLX%]qk3eZs.]:`r1s:fs/,^ls/5psq5XCos/c4%!3Z:(!3Z=)s0)L.
+riuO1rj2a7[^Q1ErjW9F]"5Md]tV4r_Yh:``5T^8a2c9Bai_fMbg+M[d*Va=$.@;OeC<%!f%8OQ
+f`9b*gBl]mhV[;Nio9"YroO1Bs6'FG!9sLJ!pf4?rp0sYmdKW6nF?)Ap%"-rN>dh:N/W[PM2@%D
+L5(D8K7ec,JUi9#IXQWlHgh"5E;4GOEqXMQEr:"Y>QS,5>5h\)=T;J$<rZ2";uopIrI4cr!.auu
+s*t*#rdk9(It<3'pOiHu!euA^hZ*S7rJ^T2s,?f6s,:W5G'A1WH[U<lJ:`E-L51VCN/`m[P*;/s
+R$jG6StD^OUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JioB(\k2tml
+l0@X%mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcC6~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<-naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r@$;`mE7#!kUH84cHKpeUZ[qG7,dm8!g\:Jam\
+:]4&f:]=,h:&duf:]F/i:]4)k:JO[Q:]F2i:]*ue:]4&f:&[of:]=2e;$Bcl:Jah_ohP*Q!)E5`
+r([;h:f-p_!)`\mr`&\ls&B/#m-X6?mfDqJrpp*\!;-6_!quB_r:p<frqcNhrVZQkqYgRn;,C*d
+:]4,g;?'Pj;>sGn;>a>g;ts8g;uKVn;uTbm;Z]ou<r#bp<rZ5)<``='=BPK&s&f;&!a&T.r`];*
+pg!f(s'5M.!+,Y3"(5PG@/aR;@UiqZAc66?BE)WFC&McNBkhBuCi+%fD?=`qE;jhZEcZ>ErcS3`
+s*+iqG^4R\H@(!eIK"]qJ,b$!Jc:9$KE$W)L&Zo,L^SuoM2I4LN/WaVO-&'pnPpZkNJrgSMM[1G
+LPCP;KS+o/JUr?%IsufoI!aDpf@S[Rfa-<dgt^`Chr*Jc54q/84p=/U>[(B8r`T8's&]/"s&K(u
+!)r_dr_!>e91hhR8H;B]9`@cd9ES!_9M>@Ys%<>chZ*RRrD`VlqGdDlBQSEAG^=^bI=Hd!K8#&8
+M2I7OO-#NgQ'Rf*S"-(BTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@
+i8EVTj5oFckiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*PI,UfLPq:`V6Kp=r5J`Url"iU"N89u
+`5DSk#f4<l^V7Co]=[sOrk&'=!kGhMppU10rj;1&s0_p8rNuU4q6U42[']\;rjMa4rjMj7osXe-
+q7$F6n[SJ,qRZ^=qRQ[;r4)d;qmcX9!P5i=\coXZ^V7Cork&-A!U]=SmfDqJrpp*\!;-6_!quB_
+r:p<frqcNhr;?Qms2=oSrl"iUqo/cZaN2EArl=oWr6#&_rlkAd!7(Acrm:Sjs3gkp!7h)"s4@8&
+r7V#%r7h5+s5!h7i8FRms5Nn8s5a1@"Qnn2l0834&F8]Mm-X3.n*oi:o()DEp%JCZ#l+8mqtg6h
+rVibqft$dcrji&i(QOK6N/NRMM26qAL4t;5K7\Z)J:E&tII7(*POt(>PP^UEPlk8q>$Cl-!a&N*
+rDrqus&B"s!N)dnW;igsWr8suXS]+(YHG%1Y-+l)XT>T.rNQ=)!1r-KrOVd7rOW!?r46<[GBnL]
+I=?]sJqJc3Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1Za@0M\[oGe^VI_'`5Td<b0/&TcdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0iqY^6hr;QZerdk*#rrE(L~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*F+In>E-$8PJr9Gjqiq&CrKR;FrfRPL
+OH5E^O,f6]j,Wtqr/CN4s,R,=s,?Z2rJ^]7!0$o:r/CW7!0$i8oo9$5q2k3/n;mX4qiCoBOH5Iq
+OT(C>O9gu3OcYZcNfB%tNrP.@mI'uB!V#XYo)J:]o_nFap@n=Zq#C0hqYU0fr;QZoPlR-IQi*6I
+QiEHORJWBORK&`US,]#WSH,2TSc,/[TDP;WT`Ch]U]%"dV>mFkVuEUpWVNRmWrT7#XoGR"YQ(g,
+Z2V$7Za@*I[C3NQ\,Ei:])TDB]`l-b_8=+,rkncT!65#Ys2YDdb0.uQcHcF9rQuV5e'lgre^i='
+f\+s3g=tB<h;7&IiSieUj5f=`roX7Ds6'IIrosLLrTsRO#O_'LnF5u>o^RsqNW5%UNfB!VMi*@J
+Lkg_>KnP)2Jq8H&It)oqmJm*'pMp.PpMp1Qr,VsF>?Y5/=TV],=8c2"<W?%u;u;(EJGOiqJcgLQ
+JV*lR!.t*#re(B-K8"O-s8@uVN;SV4N;8HAG'A4XH[U?nJ:`E-L5:\EN/is]P*D5uR$sM8StMdP
+Uo(&hWiW>+Yd:^F\%0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3
+nF?)?oCW%Ts7QHerqQNhs8)ZjrVZZno_sFAJc>`MJ,~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*4@;G%6q9^;8l#1XpeL]^r_DlWr)!&^
+r_EGgr([8e:B"&h:B+,h;#a>k:A%B_:A[fe:B"&e:B"&f:B!ue:B"&h;#=,i;#a;l:f$^Yo1]3[
+p.tT]!`)WhoM>H]"A_in<E/fn"&r:fmf)YUnF?MKs766_rUg6cp\4U\s7uZjqtp<hrr)Rf!Du\j
+:]+&g;?'Pj;>jAm;>jDh;tj2f;uT\n;uTbn;[-3$<`W4#<;fhr<r?#!<rQ5"=8uD%<rlE+r`];*
+pK[]'!*oJ.!+,V2s'bn7$t3USA7T7_An>RdB4q3W!,;CH")2LbC]82MDZ=YTE;jkWEr^=\FoQUd
+GBeB2Gm/M@H[L6irdOlss*t*#rdt0&s+LE+s+Uu=LPU_AM2I4LN/WaVO4mS'<WA*rNfB!VMi*@J
+Lkg_>KnP)2Jq8H&It)oqrm_,%f@S[Sg&Kb2gYCT@hr*GOrB:3EpHJ:8pce^B"'f&6>5_S*=BAT&
+<rZ2"<<#no9)hQ`9`@Z]8H;E_9`@cd9`Iff9M>@Ys%<Ad7,\+@<;KPi<;og)G'A4XH[U?nJ:`E-
+L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd:^F\%0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8
+h;7)JioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhs8)ZjrVZZno_sFAJc>`MJ,~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq$^@uDJ;9&GR\m@1a8EpY`Pf^l`=9c'
+_Sa7,_8*k$^:_(iqmud=qmug<s0qd3rjDa4n[8A)!4Dg5rjDU0s0_m6qR-@3qmHI4rjDF-r3uL3
+!4VL.r42=.!4i$;!4hs9r42^9!4i*=qRQU:!PIk"mfDqJrpg-^o^r.Us7ZKer:p<fs8)Q-rPAQP
+rl"cQrknfUqo/WVrlG&YqT/WXrlb>crlkGgpWrldr6bPmrR1brrmq,$rn./%qqCu&s4mV1!T2i6
+iVqj6j8\3=jT4N-rosIJ!:0XNs6U?bn*fc9nac8Bo_%qPp\=R_q?$TnrMT\K\b<Q4\Hod-O,f3Y
+N/NSmM%#2qL5(D8K7ec,J:N.9s8S8PPO=\8Plk8q>$Cl-!a&N*rDrqus&Anps&/hn!DofqWrT6u
+XoGR-Y-"h/XSf4#YPta.YHG$uirA_`rji!=!5&0?@C^W.H@1-iJ:W?+L51SAMi<[WOckroQ^F52
+SXuLJUSOfdWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$
+m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq$$:c1CN+?@I=dCTQ2?gFPPpaFPQ$^K
+OcYWaNfWak!0-H-qi1K3r/L]9s,@#;oo8p/rJ^l;NK*gos,I&;rJgH0!0?r;o8iC&!0R/?"-J\+
+O7eV7Oo(7?OoLREOoCI<OTCL1rpKmWnc&(\oCV\Sp&Facp\agdq>^9kP5:C@Pl-dHQM[$HR/30L
+R/NHLR/`TSRK/iVSGeuYSGA`RT)YG\T_Y;]U&_"aU]%"eV>mFkVuEUpWVNRmX8f:#XoGR'Y5ka)
+YQ(g,Z2M!-[/[N6[f3c7\Gs/?]+)Hf^;.V'_SX4.`5T^8rl>&[!6Y;as3:\ld*Va=!n,QHrmV&#
+f%8OQg&Kb;gYCW@hV[8LiSrkWjQ5Lck5OQDkQ:#6lMg,Km/HDPmf`.MnauJDNnTKmNs1Q'N/W[P
+reV&>LPCP;KS+o/JUi9#m/R*(r,D@Lrc7aQrGqjX"'f&6>5_S*=BAT&<rZ2"<;]\p;Z9Mn;#>hB
+Jd6jWJV&K+K7`rPs+CN/KS>,(irAq:s,Hu9rep`6qMem-H$XjdIXm!%KSG8<M2R=QO-,TiQ'[l,
+S"6.DTqeE]W2co#Y->1;['mHS]"G_k^r"".`lQ6DbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq#sCRA6:4748kMkU:\[]^:]=,W:]!u]
+:]=,g:]=)h:&[oe:]F/i:]4,i:B4/^:B4/e:BF9e:]!oe:]*ue:&due:B45f;$Bcl:Jak`oM5!P
+!)E5`r([8g;"IK^:&n)f;#O2i;#X;m;ssYR!V#XYncJFTo`"O`pAambq#C0iqXmYb;>*fe;,I-c
+qb[8h!)iYjrDEVmrDNGipeq#grDNVnr`&_m!`W0#r`&qtrDihts&TA)=&rC)=Su8#=T;G(=BSf+
+>5hb#>lS+0>l@q.?N+:6?t!JOra>t>@q9+]Ac?<@BDuTCCB&#JC&i)LD>nDSDfB[pE<:0%FSp:]
+G5ldsH$FU[H?spbI!pElIXckHJ,k0"K)^H'K`6]*LAlu.M#W>3MZeuuNK0+T<:EofNs1Q'N/W[P
+reV&>LPCP;KS+o/JUi9#rm^tu&(]@af\+p1g=k<:hVR/Ji;>e=4n_)65PRGB56G.p>$Cl-!a&N*
+rDrqus&Anps&/hn!`2Qar_!&Z!)*8a#Ydue9MA/S9M>@Y"%u<]6fS.><;]\k<<#m)G^4U_I=?]t
+K7nu7Ll%%KNfT<cPa.T&R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*
+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#rrE(L~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nojQmn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<YJJ4;c8mfH@gp2P+&8Pa2c3?a2\+ts2G2\
+`l5p8rke`QrkScR^:h1l]DK2=]DK/@\[]-C[f3]7[.(L&[K*`7[/RK0ZiIN5[/.31[emK4[f3]-
+[f!W2\Gs&:\,a)5\GWo,\cB;5\GWo7\cB;?\GEc8\cTFR])92=]E#YD^&YqD_"PVC_Z.OR`;IOQ
+_uRdR`rF*Za90K&a2e%t!6P5_rlb>crQP>fps8rdrR(VmrmLu!e^i=NfDaG$g&'M$g]$".h>uNl
+r8IY7qr7\;rT+1EkNM0prot'\m-X0,mI'H4nF?)?oCV_Lrq?]nq>:'cr;HTnVuPG\ppg:5s1/c'
+O,o<\N/W[PM2@%DL5(D8rdt6'Ja<@6P4=b*Pl6mI>6%k*=oVS(=8c2"<W5tr;uT\o;>X/i:]7C#
+Y-5"1Xfeh.rN6+'rNQ=)!1r6No"+h4qmp!VH@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`
+W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nojQmn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Xi&.;c7aiAnu@-H$t:%rK[AH"I549PEYp/
+!gAk4rfRPLOH5E_O,f6]if<nqqi(H4rf.&>N/[IirJ^]7s,?u;qi(Q7s,?o9oSrp4qN1<0rf@,@
+plGK:rK%#Ar/gr@!K`B7OT1I@OT(CBOoUXDOR8/1P5UUBP5gaCP5:C?Pl6jIQM[$HR/30LR/EBL
+R/`TSRK/iVSGeuYSG8ZRT)YG[T_Y8_U8+O[U]%"dV>mFkVuEUpWVWXmWrT7#XoGR&Y5ka)YQ(g,
+Z2V$5Za@*I[C3OC\,NlF\[oDb]Y2%o^r""+rkeoX`Q#p<a8X-cb0.uPcHab_d/D>udaQ[peCE.$
+f@^)U*890%gtgfDhr*GOio9%[jlPXekND'ml07Kulg+N9$17*Hn*fc9o(2MDNnTI(OH5H_NJrgS
+MM[1GLPCP;K`6T)Jq<7fr,;OQol0tPp2U"Nrc80^>?b;0=oVS(=8c2"<W5tr;uT\o;>X/i:]5nF
+JH(6#K)gN#KDpN+KnP/(j8]":s,Hl6rf$o:r/Fp*H@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@H
+U84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<`N*t;F!Q8#"(dL7nQBJrD32`qbR/cmSEaW
+oM>K^rD3;crD3Gg!)NPi!`)QdmSEjXs%iMes%iSgrD!;er_NPjqG@Dm:JXe`:]*rf:]!oX9`Rr^
+:]*uX:]=)h:]+&f:]=2j;>*ia:]F8k;>sDk:\%<^;>*fe;,I*br)!Ais&/_kpJUidpeq#grDNSm
+s&Ahn##nT'<`N.!rDihts&T;'='&H%=T)>$=T;J&=9)M'>5_\#>lJ"/>l7n+?iFL6?j:%K@Uiq[
+Ac66?BDuTCC&huICAr)LDZ=VnE,fl<EH?5DG'.tNF`qtRG^4OZH$Xd`I!pGBIfFotJH(3"K)^H)
+KS>-ZLAlu.M#W>3MZeuuNK0+V<:3`tOH5H_NJrgSMM[1GLPCP;K`6T+Jq;A!rm^tu!nPuTrn%S2
+g=tB<hV[5K5!Am/rB9g;pcnR<rBL<d!*]>(s&]8&rDrqur`&hpr_i_mqbR8grCI#^9E%Wb:&[ic
+9`Ric9`I`d9LRq@ku:l3H@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS
+]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olHncA@Srq-?dp\4[^
+s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=V4b;<`N*t;c8sjH\.'4Od`2QrQ"`Rs2FuU!Q2eR
+_$.Tf]tCthqmud=r43!@\@B$C[f*T6[-tF&[K*`7[/RK0[/[Q5[/791[f!Q4[f<c-[f!W7\,a#:
+\Gs&;\,a)4\GWo,\cB;4\G`u8\cB;?\GE`9])K8?])92=]E#YE^&u'_^VBZ]p;-^Es24lTr58QQ
+!6+fS"NSU)a2\,!qoJfZrlY8as31Gd!7(>bs3U\ks3gkp!7_#!rn%2&r7Uu$rS.>,rn[\5i;MX6
+iqqd9jSe0@k3)a.rp'LLrpBaS%.NfWo()DEp%J.Sq"amb"8r,srhoeM\bN]6\c0/SP*(ieO,f3Y
+N/NRMM26qAL4t;5KB`F5P5gaFP4k+1PQ?u4r07:e>5_V(=T;J$<rZ2"<;]\p;Z9Ph;#X5kXfqZ*
+!3H.$"g5&4Yck;1XoP!Rs8KY&])TD>\n$,6I=?ZrJqJc3LP^nINK90aPEhH$R@B_<T:r!TV5L8l
+X0&S0ZEpsI\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k32'olKdg(mdKW6nac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#rrE(L~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=VFn=<`N*t;c7ajBPh^1G^Y4%Q'M<4#*kF:PE_;s
+rKR>GrfR;EOSt4ANfT7pNW>(,Nr+h5N;S\8NrP(=N:i2/N;\_9N;eh7N;eh:N;\b/NrP1:OSk.>
+OSOt:O8t@:O8t@?O8tF@OT1FDOH9$qs,m5@rfR5D!0R8Bm?%O7PEV5orfR5Ds-*>CqNLiAr078J
+r0R;Jqj7>Mr0dDKs-WnVS,SrVSc>5USc#)ZTDYAXU&UkeV"pebV#-tgVZ!FlVuWgmWr9!uXT#@%
+Y5YU)Y5YX(Yl1j2Za@*I[C6(DrODm=#.qO]]t_A!rkeZP!l`1!rl>&[s2kJfbg"GYrm:\mrmLhq
+s3r7Cf%/I*g"G*5gYCW@hV[5Ki8WbVjQ,Fak2tjikih9qlK\?6s6TaPs6g*[nac;DnrDF`'U"T?
+O,o<\N/W[PM2@%DL5(D8K7iFgqJZ=Ol>c`BrcA*[!F&b+=oVV(=8c2"<W?%r;u]bp;>F&f:BuH$
+JV&K+K7`rPs+CN/KS>,)jo>1;qi1T6rJgc9A9rTNIXcm"K8#&8M2I7OO-#NgQ'Rf*S"-(BTq\?Z
+Vl6VrXfnt7ZaI6O\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5oFckiq?slg4$,n*fc9
+o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=VFn=<`N*t;c5kI6UO727nZKM:J^a\qbR,bmn`gW
+oM5H^rD38br_NPhs%iVjs%`VioM5H^qbI2er_NGer_NJfr_<Aer_NPjqG@8i:]=/j:]4#g:\miW
+9`Rr^:]*uX:]=)h:]+&f:]=2j;>*ib:BF?g;#X>Z:]OAd:]XEiqG7#crD<PmqGI#cqG[,dr)3\q
+;,U<k;uTbm;Z]ou<r#bp<rZ5)<``='=BPK&s&f;&!a&T.r`];*pK[`(s'5M.!+,Y3$".1M?smDO
+@U`mIAc?<@BDuQEC&VlIC&_oJD#S;NDZ=VZE,fl<EcZ@%FTcl1G'8*.GlN'hHN/BmIK"ZuJ:E*"
+Jc:9#K*$^[L&Hc+L]<21M>rJ:N/`jXOPWt)<?@<cOH5H_NJrgSMM[1GLPCP;KS+p)dF-Lne'upu
+f)F8.f\+s3gYCT@hr!Dk55IG9557A<55d\I5[.Fj=oVV(=8c2"<W?%r;u]bp;>F&f:B=$[rCdJk
+9MJ2S9he;Sr_*De9M@k9s63KnH@('hIt3-'KnbA>MN!OUOHPfmQC+)0S=Z@HU84W`W2co#YHY==
+[C3TU]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%P
+p\jmeq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Y/81;c6J[\U&j`NKK^/ZcC,b`WX?%a2c3u
+`='W%_SX.*^V7Co]=[sOrk&-?s1&0?\+d?1[K!W'[JmT7[JmQ4[JI91[JmQ1[JmW4[JmW7[Iq!+
+\,Nl;\,No:\,Nl;\b3K0\ad62\b!?0\bir<\c0,4\c98=]DfJ?]`Pp_^\bh?_>V7N_u@UQ_u@UN
+`WX?'aN)="a8<sXao9H_bPo`bblH&`ci;AidJqYndf\+Mf%0iPrn.2&qqCu&s4db5hVR/Jr8IY7
+qr7\;rT+1EkNM0protKhm-X0,mI'H4nF?&>oCV_Lp@n=Vq>1!bqY^<kVZ5A\q7-F7rONK%OcYWb
+NfB!VMi*@JLkkta!/9Y:qN:iBqi^];nrs0=Pl?pN_S]S]>5h\)=T;J$<rZ2"<;]\o;Z0Jf;#O2h
+Y5GC.Y-5%5YHY76Y+FeUq7HF5!5&->@si]RJ:W<)KnbD?Mi<[WOHPfmQC+)0S=Z@HUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Urf@\g2gtgiFi8N_VjlY^hl07L"m-X60n*ol<o(2MG
+p%A%Pp\jjeq>U6gqu6NmrUg)?s+14Ms*t~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Y&20;c6J9KP,.?Fa/=fN0XC,%@*0BPE_;s
+Q'@MuPa%C2Oo^],rJq#?O,s$qs,HK-qMkE3qi1W9s,@#;oo8p/rJ^f9rf-i7rf-r:rJgK1!0?u<
+nrNg4s,Zu;s,[,?!0R5ArfQc5s,m5@rfR5D!0R5AmudU4s-!GGrfR5Ds-*;BqigoArKRAKr0R;J
+qj7;LrL*MLs-WqWS"'DIrLNtYqORPUs.B1]q4RkaUSR^\rM9@fs/,amrhogrr2KdsWr/mtXT#@%
+Y5PO(Y5YX)YQ1s-Z3%A>[/RH5[f3c7\Gs/?]E>j]^VTodrkeiV`Q#ps`sBc.b0.uPcHac8d/VMn
+df._qe-"7Pf%BuTs4RY2gtgfChu;R6irA*=jo=KCk6U;7l07Kulg*j7m/QJQmf`.No(2MENnTI&
+P*(ieO,f3YN/NRMM26rdL&cqks8-^7DZ4SQE9hNAErL.[OTJ`j>5h\)=T;J$<rZ2"<;]\o;Z0Jf
+;#O/iK(josK`6Z*Gio&%NqA>1NamHbIXm!$K8#&9M2R=QO-#NgQ'Rf*S"-(BTqeE\Vl?\tXfnt7
+ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DEo_%nN
+p@nO\!;ZWjr;6Kkrr)KgJcC<$s8RT~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Xr,/;c6IY6pj=17Rp*G:&%K\:]!oU:]+&]
+:]F2h:\mib:BF9e:]4,i:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:B45e;$Bcl:f'q`rD!>gqG-TU
+!)E5`qbH]Xs%`Sir)!>fr_WVloMGK^!)WYlm8*d[p.tce;#3ub;#X;l;Yj8c;Yj>d;Z'Gq;Gg:h
+r_reqqGRGp<EB*!!*&nsr`9&#"'/K(<rQ5"=8uD&=8l>$>5_\#>lJ%/>l@t,?O1%J@:3JO@:EaG
+Ac66?BDuTEC'JBeBk_<tD#S;ODZ=VTE;jkWErU7ZFTlr4G^+FWrcnZnH[L3hIK"ZuJ:E*"Jc:9#
+K*$^[L&Qf/KnkG>re^Z5"H8>#Nf`-tm8XXZOcYWbNfB!VMi*@JLkkta!JSo"d/_Vodf\+Me^j`O
+$eX.cg=tE=hV[9T4oRY?4nh/85P[MB56Oqc>?Y50=oVV(=8c2"<W?%r;uT\n;><ud:]F)g:&I]b
+9`Ri`9E7NDs63KmI!pHoJV&N.L5:\EN/is\P*;/sR$jG6StD^OUo(&hWiW>+Yd1UC[^`l[]Y;.s
+_SjF6aN;WLcHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@X%mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np9iqn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;[cQVQaV6nLlIReVmOP@`rO-X`<sQ$
+_SX.)^V7@n]DK2=]D]>?\H',4[f3Z7[-tF&[K*`6[/RK0Zid_C[C#e<s0hg4s0hp7osXe-s1&*<
+rj_s:s1&*>p:0t0o"+k3o=4b0qmld<rj_[4s18-?rOi'A!kuFaqnVpArPJQOs2=lRrknfUqo/f[
+aN2EA`r=$UaT'B^b5TTabl5lecM,Wbd/;;jdf._qeGe%ufDjM%g%sG$g]$"-h>uNlrSd_7r8[h<
+rT+1EkNM0prosRNm-O`=s6p!W$h<fYoCV_Lp\4IXq>U3mqu$ElVZ5A\qRHO8rjr-As,mkSOH5H_
+NJrgSMM[1GLPG!lnWNX1nWa'h!PuYP_uEp>=oVV(=8c2!<W?%r;uKVn;=RH_XSo:!Y5kg+XoP!U
+s73es\m0Z5J:W?+L5(M@Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEH
+c-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MQp&F^cp\ssfq>^<hqu6NlrUg)?
+s+14Ms*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np9iqn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;\)c?G(aOGE-6GTKT).[Q'M<4s-3bP
+Q'ISuPQ$^GOc]O&!fi>&pQ#64muI7(r/CN4"HJJ$N/[IirJ^]7s,?u;qi(Q7rf$f8oo9$5qN19/
+s,[5AplPN:rK%#ArK.&AnW<d5r/go?s,mAErK-H0s-!DG!0[>Ds-!DGqNC`>qiq&E!1*MKr0[>I
+s-WbQqO%8M!LfMWSGf#YSGJfST)YG[T_Y;]UAq%bU].(dV#[CkVuEXpWVWXmWrT7#XoGR'Y5ka)
+YPta+Z2V$4Za@*I[C6%CrjW6E]">Vf]t_=urkeZP&]D]/a2l<BaN;TJbfnAYcd:&<dJqYpe,Iks
+ecFCTrn7>*s4d_4hV[5ii!89%jQ,Fak2u[+($OiFlKRQulg!j'lg4$,n*oi;o(2MENnTKmOq*V9
+O,o<\N/W[PM2@%DL?JU6DuOYQDuO_GE<(%WEW'qWOSt=A>5h\)=T;J$<rQ,!<;]\n;Z9P`:]Q+E
+KDpQ&K`HA]s723HNW5#DI=HcuK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a
+^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"O`p&Ojdq#C0i
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;c5_Dr^-fV7S$-Eq+gf_qbHQTrD<)]
+!)EJgrD!Ah:Adlh:/=[b;#a>k:@:pX:B+,e:B+,f:B!uf:Amrj:f1(frDEJh!)NPgs%iJdo1f6[
+pJ:W\nkT6\r_NGgrD3Dhs&&DbrD*Dir_`&Z!)`>aqG7#cp/1Q^qG[/er)3_r;,L4hr_rhrq,7>o
+<EAoqr`8u!"'/K*=Su8#=T;G(=BSf+>5hb#>lJ"/>l7n,?NOVD@K'[7@0'hJral%?rb)4DrFuFK
+C2.P_D?"MRD[p`+EH6)@FEMbLFEM_LGPuddH2i0pH[L3hI=?YCJ,k0"K)UB9KS>)5Knb;:LPUeD
+MMmFPNK0$\i)K,Es&T/_&Wr09O,f3YN/NRMM26qAcHjl:dJqYpdh1*[e^i='f@\d1g"Y?>hV^R]
+o0)h3q`b-I5<o!.rD`brs'#D)s&f;&rDrnts&AnprDNVlnPBE`9h\5T9hY=V!(?&Nku:o9It3*&
+KSG5;M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8R.
+gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DErq6<b!;HKfs7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Ynb8;c6JGRBh0lLlR^iVmXUdaN)?BaN+;!%
+*$9)_ns:,^qRLp]Y"'Ps1A3?s1/0=p9st.!4;4&s0_p8rj;[4qR$:1rj;R1rjMa4rjMj7oX=\,s
+1&*<rj`!;rj`!=p:0t0o""h3o!nY/qmld<rj_[4s18*>rk/0B!kuFaqnVpAr5/KOs2=lRrPS]Tr
+5J`Wrl>,\`r=$UaSs9]b5TTabl,cdcM,Zbd/;;kdf%VqeCFQLrmq/&r7Uu$r7h8,rn[\5i;MX5i
+r.m=jQ#>"jTO`/kiq@2l5]-VmHj6-mdKW6naZ2Ao_%nNp\4IYq>0p`r;HSks4Os^\G`r=]".gOs
+18f*P*1rhO,o<\N/W[PMM[2Os6u3GPP::CPE_=0_#M7M_uEp>=oVV(=8Z,!<W5tq;uKVl;=[Q_X
+T5O&Y6;)5Y-+;Zs7!Ys\m'Z7JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]
+t_A"_o9U8aND]NcHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs
+8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Y&20;c6J-G(OFFE-?MUKT,nqs-3>E!L/fI
+Oo^],qN(B2s,HH,qi1N4qi1W9s,@#;oo8p/rJ^f9rf-i7rf-r:r/LB0!0?u<nrEj6O,s'ts,[,?
+!0R8BrfQc5rfR,?rfI8FOcfU(mZIO4s-!GGrfR5Ds-*;Bs-*JGs-*;Drg!MLqj78KqNq5Lr0dGL
+rg<eUS,JlVSc5/USc#)ZTDP;XU&UhfUSR^\rM9@fs/,amrhogrr2KdsWr/mtXT#@$Y5YU)Y5YX)
+YQ1s-Z2h61[/[N6[f3c7\Gs/?]E>j]^VKfbrkf5b`l?'?a2lBEb08)ScHlL:rmCbos3q"t"P))S
+f@^)U)qs'%gtpoFhr*GOj5]4]jlPXekND'lkNM3ql2KuHlj)qGmdT`:o(2C3gPl`-P*1rhO,o<\
+N/W[PMM[2Os8-a5DZ4SQE:S#JErL(YEWD0tOT1FEOBPie=oVV(=8Z,!<W5tq;uKVl;=[Q]KDgK&
+K`HA^s6bpFNE^m_JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9U8
+aND]NcHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Xr,/;c6IU5smt+77]s@9`%T]:]!oU:]+&\
+:B4/h:\mi^:]=2j:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:]F8f;$Bcl:f("brD*AgqG-WV!)E5`
+qG-TW!)EJgrD<GgrD3JkoMGK^!)WYllqd[ZoMGB[r)!)apJUidpJUof"&_un;Z9Vo<;KMp<)luu
+<<-"s<W6&!<s)K)<`]3%rE'#$s&]2%r`]8)pK[`(s'5M.!+,Y3!FT@7?ijbG@f9m;B)ZHBBF&<e
+BkhBsC27VaD>nGQDuObVEW^B*Fa!b,s)o-$G^"CWH$O^_H[L6iIXZcsJ:W6%Jc:69K7\`/KnP,5
+KnbA<Ll$tHMi<USNf`0upJq,lrDiku/!H-ZOcYWbNfB!VMi*CKM9O5icd:%ddF-Ile'uq!e^i='
+f@\d2gtgiEi;Pq34nh/<5Q3qG55nLZ<;ont>5h\)=T;J#<rZ2!<;]\n;Z'D_;#X/g:&7N`7-Xa>
+<;ohr<*Oj&JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9U8aND]N
+cHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+JcGcMJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[cQ$Kpf5oK8GVRS>N^ma:cV9a2Z-<
+`l5p7_SO('^:h1k]DK/>]DT5C\[]2Z\+[9-[/dZ+[0!eE[JmQ4[JI91[JmQ1[JmW4[JmW7[Igp*
+\,Wu<\,Wu;\,Wu;\b<Q0\am<3\am9/\bir<\c0,4\c98;]DoPA]`Pp_^\Yb?_>M1M_uI[R_u7OQ
+`W!jWa8X-_a2Z->a8<sVaTTc0bKS3/blH&_ci;AjdJqYndfe1Ne^i=NfDjM%g%sG$g]$"-h>uNl
+rSd_7qr7\;rT+1EkNM0prosRNm-O`=(%1P[nF?&>oCV_Lp@n=Vq"jj_qY^;gs4Op_\GWo8])K;N
+P`q8nOcYWbNfB!VMi-Tqn<*g9P5CFCP5UU?PQ6pF^]VEg_86,f!aAi3rE9/&s&],!s&K%tqc!Dj
+nPT9`s/c:(ric@+s/lC+J*[.)]DT8>\QXN8K8#&8M2I7OO-#NgQ'Rc(R[]k>Tq\?ZVl6VrXfen5
+Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKZ7nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[cQ$CNkAED/j]EItN^VPm3P>Q'R]"
+PQ$^GOc]F#pl>?5m>h+(r/CN4s,R,=!0$T1rf$c7!0$o:r/CW7s,?l8p5]06qiL?/!g&J(plPN:
+q2kT<o8rp5r/gf<rK-]7s-!;Bs-!DG!0[>Ds-!DGqNClBrfR8FqNUrD!1*GIs-WYLrg<YPqO%;N
+!LfMVSGo)XSGJfTT)YGZT_bA^U&_"aU].(dV#[CkVuEXpWVWXmWrT7#XoGR'YQ(d*YPta+Z2V$1
+Za@+=[/dZ7\,NlC\[oDc]Y2%p_>_=N_Z7XS`rF*da2uHGbKS5Vcd2U;s3^kprmUns"4buRfDaJ'
+g(E)ph;7#Ghr*GOj5]4]jlPXerTF4ErTX@I$gd3Gm-X6/nF?&>o'qapN=D,9P*1rhO,o<\N/W[P
+jT#*qqelCOs)8!YE:S#IEWC+WO8Y.DOcYZ/>$Cl-s&f;&r)Whtr`&bnr)3&^r_i]Ire16(!+G3n
+m>h.)>(D3WKnbA>MN!OUOHPfmQC!u-S"6.EU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ6DbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*oi:o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[ZK#4@)>$5se(58PK+YpeUc^mn`mY
+mSEdV!DcJc:]=2j:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:]F8f;#sKhr_NSjr_EGgqG-WV!)E5`
+qG.&d!)E2_!)EJgrD<Jhr(mAjoMGK^!)WYllqd[ZoM>N_qbR)cp/1T_qG[,dr)3Snr_W_p;cEZp
+qG[Dn"BAK&<E/lrr`08*<``@'='/T&=8uD&<ruK,=oMV'>PVP&?2n1.?2\.0?j0nF@:<VTral%?
+rb)4D"_qacC2.J^C]82NDZ4SRE?K:CFEM_LFEM_LG'J4TG^+LZH@($eI=6QnIt3'#J:W:LJeNci
+KS>)5KnbA=Ll%"IMi<XTNf2jqpf6re'pOoFP*(ieO,f3YN/NS8bKS5Vcd:&<d0%hGe("BIs475%
+#2%YbgtgiErBBj:!Br[?55d_F5QO)5q,@5k!aAi3rE9/&s&],!s&K%tqc!DjnPT9`!_c<_rCd>g
+9MA/>li6?OrDQmMJqJc3LP^nINK90aPEhH#R$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:
+aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[u]&:ktLEI>!K>Q(4_ZaSs9_aN)@"
+`X9Z%_SO('^:h1l]DK/>]D];D\[]2[\+[8q[03qG[C!=?[J@30[JmQ1[K!]4[JmW7[Iq!+\,No;
+\,Wu;\,Wu;\b<Q0\am<3\ad3/\bir<\c0,4\c98;]DoPA]`Pp_^\Yb?_>M1M_uI[Q_u@UQ`W!j\
+a2l?B`lA"ur5eiY!m8^0rlkAd!7(;as3U_lrmLeps3q&!rmq,$s4I8&qqCu&s4mV1!T2i6iVhd5
+irJ0=jTO`/kiq@1l2p>>m/HDPmg/FQnac;Co_%qWpAk!fq#gKjr;EMm!;Y?Z!4_s;r4;j=$^?j<
+P*(ieO,f3ZN8ss+P51=AP5UUCPl8Dt_>h=K_$.\\>[(E9rE9/&r`B&!r`/qsq,?c\qbmKtrN?@.
+YHG$um/QUfr4;m<<.]aVL5:\DN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;WKc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[lW%:i(B.C2S*8H[g^-r0@;J"dPC>
+Q'@L3Oo^],qN(H4rJg6*qi1N4qi1W9nr<X-rJgi9s,Ho7rf-r:r/LE1!0?u<mZ7.)s,[#<rK6]5
+rK7#>s,d;ErfR,?pQ>H<r/q#Bs-!GGrfR5Drfd5Bs-*GFrfd8ErK[DKq3M)KqNq2KrL*MLs-WqW
+S"'AHrgj"Xqjm\Wrh'(\qP!q`!McIdU]%"dV#[CjVuEUpWViasWN,ls!3H1%riZ7(!3Z=)rilC-
+s0Ma4s0_m8s0qs:#e@OY]Y(tn^qp#erkf/``l?'?a2lBFb08)Srm1VkrmCbos3pts"4buSfDaG*
+g=tE<rn[Y4ro!h9roF(?!9X7C!U/_Gl2BlSlg4!*mdBT7mG#;ENnTI#P`q8nOcYWbNfB$Wj8\so
+qel@Ns)@II!HO:uO8G%=>lS".>5_V(=T2D#<rQ+u<;BJ^;YsDmKDpQ&K`HAas6PdFNDtL^KnbD?
+MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9FbK\>ZdF-Opf@S^0gYL]C
+i8N\UjQ>UfkiqBum-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[u]&:ch!36UF:584cKM:A7Q_:@:pW
+;#a;k:@V-Y:B+)i:A@Wa;"@B^:A[ie:B+,e:B"&f:B!uf:Amug;#4#i:f%'e!)NShr_NAc!DQ8\
+9`Rr^:\mid:B4/_:B4/g:]4,i:]!rg;=m]`:B45j;=RK_;>sAl;=m]b:A[ib;"dc];Yj>d;Z'Gn
+;Z9Mn;Z9Vp<;BGo<)lup<W6&!<s)K)<`]3%r)Wr%=',B'!a8`1rEK#$s'>Y0rETD0rEfh=?sd;L
+@:<VUral%?rb)7E$#+-gC2.HtCMRbcD?"MRD\@#/EH6)@F`hkMFEM_LG'J4TGlE!gHiJKnI0Y4N
+It3'#J:[]O!J?"'KDpQ(L&Zo-L^8ipMi3ORLjEjr<;9Jb<[j8sP*1rhO,o<\NJts#b0/#RcHjka
+dEp:he'lgre^i:%f@\d2gtgfCq`aX8o03.<!'p-Ss'5S.!*]>(s&f8%rDrntr`&\ln5B-^!)<Dc
+!)<Gd!(?2Rlr<s_<.]aVL5:\DN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;WKc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+f;Nt=G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:ktO?It`cAQ(+SUrlP2]r5K&]
+_SX.)^V7@n]Cri9\c0)=\+[9-[/dZ'[K!W5[JI91[JdK1[JmW4[JmW7[Igp*\,Wu;\,Wu;\,Wu<
+\b3K/\am<3\b3H4\,No:\bir<\c0,4\c98;]DoPA]`Pp_^\YbG_#V:H_>V7N_uI[Q_u@UP`W*p[
+a2l?Brl4uYqoJ`Xrlb>crltJgp<WccrmC_nrR1esec+/!fDjM%g%sG$g]-%4h;7#Ghr+IlrSm_7
+!9F+?"Qnn2l0834!pf4>rp:6an*oi:nac;Dp%A%Qp\=O_q#gKkr;NYp!qkF!e[bUhrO`)p#aCO9
+P*(ieO,i3!mZR@/rf[8E!0mArpqZr9r`oJ-s'#A(s&f;&r)WesrD_rYs&Attric@+s/l@+mJlgj
+ppsJ9K7nr5Ll%%KNfT9bPEhH$R@B_<T:r!TV5L8lX0&P/Z*UjH\@K5a^;%J#_o9X:aihoRcHstf
+eCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGcM
+J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+S:l03G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:i1H.Bl.p6H%(F*rg!ML!1!PL
+!L8oKOo^],qN(H4r/L-)qi1Q5qi1T8o8W^-rJ^f9rf-i7rf-r:qi1<0!0?u<mZ7.)rf?u=r/pW5
+r/po=!g/Y/rfR,?plYK;rK7,Cs-!GGrfR5Drfd5Bs-*GFrKI/DrK[DKq3M)Kqj78KrgEVMrg<eU
+S,JlVSc,)TSc55[TDP;WT`Us`V"g_aV#-tgVZ!FlW;ijqWWK0"Wr/mtXT#@%Y5YX)Y5YX)YQ1s-
+Z2h61[/[N6[f3c7\-KRV]Y(ql^qfocs2,Ac`Q#p<aN)BDb0/#Rc-O`8d/MGmdf7ereGn&#f%8OQ
+g&Kh,h#H72huDU;iSrkXjSe0Hk3(mikNM*ml0803$L@'GmI'E+e%)NRnrDIas-3kSPEM)kOH5H_
+iW&dnrGDURrbh[Q!-%IJ!0R8BqN(T:!+#S/s',M,rE9/&s&],!r`/nrk>VC[r`'#PKS98WmJlg=
+r/LZ8<K2WaKnbD?Mi<[WOHPfmQC+)0S=Z@HU84W`W2co#Y->1;[C3TU]=bkm^r"".`lQ9Fbg+M\
+dF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+:el:[G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:cq'26UO:47S6?LpJ:c`m8*^X
+!`)QdnPB*YohYQ`nkT6\qbI2er_NGer_NGer_<DfrD*DiqGI8h"A_ij:J^sbs%iJds%NJeoh>E]
+p.tN[!`)QdohPQ_rD3Ag!)NGf"Aqul;,R*brD*Dir_`/]r_W\m;=mZd:JO[_:]!u_;>3ub;ts8g
+;u]bq;#jMn;uTbm;u]hq<<-"r<W?,"<sD],<`W:(=Su5#=T2A'=BSc*>5_\(>QA"+>lS+0>l@q.
+?N+=2?j0nF?t!JRrFPt?rb)4Drb;CI!,;FJrb_XPs)/0^EH-#?FEM_LrH8-`s*+Kfs*4lrH[C-f
+I=6TprdY'$J:[WMre(3's+UK-s+p]4s,.#7F_+fXjAbkRo2bmV'9n]DP*(ieO,h9%aNDZKbg"GY
+ci2;kdJqVqe("BI#hIV\g=tE=h;8&no0)Y.!C'QV;u]_q?2e+/>Q7n*=oVV(=8Z+u<W,n[;u]hr
+<W5\l:&dle:@8)R<;]\n<)lkLKS>/:M2R=QO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5ZaI6O\\#Mg
+^VI_(`Q$!@bKS8Wd*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+f\$/$0Q_AUE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7eLn'laKo1qVS#*F5b/jP%$c^0'
+_SX.)^:q:n]D&o:\HKFQ\@8s@[e7$.[e-s-[/RK/[/[Q4[/RH6[^H+Cr3cO4s0_L-r3u^9rjVp;
+rjVp;s1.g4qRQ1.!4hg5s0r!;rjhp;!4i*=p::47qRcd?r4N0G^VBW\s1n]Nq8*!G!5nfSrPSWQ
+r5J]U"38L(a8X*Xa8<sWaTTc0bKS3/blH&_ci;AjdJqYndfe1Ne^i=NfDjM%g%sG$g]$"-h>uNl
+rSd_7qr7\;rT+1EkNM0prTXIMmHji>s6g6_naZ2@oCV_Lrq?EfrV6Nlr;N\q"Rb'jaiDuCr4;g<
+s-3eQPEM)kOH8?"rK@2Cnrig4r0%&or4r6Hs2+fPs'>V/s',M,rE9,%s&](ur`/kqn5K9br`/nt
+s&TE.Yct=6Y+4t\o=On2rjc<fL51VBMi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm
+_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+S=KP2/p)/SE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7eD0^D@DKBrGIY<WEqN_>NPEM,m
+Oc]F#q2YE5mZ..'rJ^W5rf6T0rf$c7!0$o:r/CW7s,?l8oo9$5qN1-+plPK9r/gi=ooT'5r/go@
+rfR,?plYK;rK7,Cs-!GGrfR2Cs-*>Cs-*DErfd8ErK[DKnX'3As-`_Nrg<eUS,JlVSc##SSc55[
+TDP;XU&Uk]U].(dV#[CjVuN^qWViasWN,ls!3H1%riZ7(!3Z=)ril@,!jf8@rj;a7rjVm:#e@RZ
+]Y(tn^qp#erkeiV`Q#sta9B].b08,Trm1Sjs3^hos3q"t"P))Sf@^)Us4[t;h;7#Ghr*JPio9%[
+rT4%@roa=Fs69LI$L@'GmGlL"W1]WKnrDIas-3eQPEM)kOH8?"rGVLLs)7pTrbqgUoPskl!g/S+
+qN(T:s'>V/s',M,rE9,%s&](ur`/kqn5K9br`/nts&]5RrIk5rn,N!>pl/R4L51VBMi<[WOckro
+Q^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^h
+l07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+;,R9e/p)/SE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7e4$uA'6q'R88k_uVq+q#cm8*^X
+s%iYink]3Zs%`VkpJ:cbnkT6\qbI2er_NGer_NJfr_<Aes%iVjqG@8i:]=/j:]4&g:\mff9h\7R
+9`Rr^:\RWW:B4/g:\7K^;><ud:B45i;=RK\;=mZb:]=,f:\mo_;>3ub;ZTcnq,7,h!)ien!)iep
+s&Aem!*&\mr`9&#"]e]*<``E#<ruK*=8l>%=TDY(>PDD&?2n1-?2\.1@/jR=?t!JR@qB1^rFZ%A
+rb2:FrbDFJrb_XPs)7mVs)S0^qfVp^rceBes*=Tj#CLrJIXcitJGk'!Jd6jYJqJZ-KS9>Ys+Ul:
+M2I1@Ear3M;,-.OpJpcbs-47^PEM)kOH7B#a2l?EbKJ,ScHac7ck"OPdaQ^qf%/I*g"G*7h;8)o
+n3-D-r_ierohtoi?![G7s',M,rE9,%s&](ur`/kqn5K9br`/nts&]4os%WMe!(?;Uo2PK`?%drf
+M2@.LNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;
+hV[8Mj5]7`k32'olKdg(mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0gqp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/@'
+f_DBrDJa0(BkV*iA7K(W?XI)D>Zt95=B8I&<)Z^n;,C)GSTfX<M2mdhVQn7aaSs3f`l5j5_SO"$
+^:h1kr42m?rjr*>"Lu"P\$u(>r3ZO5qm?F4oX+\+rjDU0rjD^3rj;d8[JmW6[/m_DrjMj7oX=\,
+s1&*<rj`!;rj`!=osjn0n[\_2p:1.3rj_s<rji3B]"5HO\G!K5])'&=]_oGC^AbnE_#M4N_"khD
+_?.Wn`;RUQ`;IUS`W4'Ya8j9[`r=$VaSj3_b0/#QrQP>fp!3WbrR(VmrmUns!7h)"s4@8&rRq&$
+rS.A-"l8%lhr!AkiV_^4irJ0=jTO`/kiq@2l2p;<m/HA_mdKZ7naZ2Ao^qhMp\4IXrV6NlrVikt
+#3jjdaiMECf=CjkqRZrtQ'IStP*4]%r0%&Ao9'-<Pl$[EP52ll_#2%K_?4.O?![D6s',M,rE9,%
+s&](ur)N2br`/hrs&T2&r`KE.Yct:4Yjh\`]DT8>\QjlEM2I7NNfT<cPa.T&R[]k>TV8-VVPgDn
+XKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hV[8Mj5]7`k32'olKmm)mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0gqp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/?@
+SG7^cDJa0(BkV*iA7K(W?XI)D>Zt95=B8I&<)Z^n;,C)+H"C`-EccSUKT#\m#F(F9P*1rhOSb+=
+NW>.<Nr=t*Nr"b7N;AP5NrP(=NqSJ3N;SY8N;eh9Mueosrf-r:r/LE1s,[#<mZ7.)rf@#>qiUQ5
+qiUf<!g/Y/rfR,?plYK;rK7,Cs-!GGrK7,Cs-*>Crfd>Erfd8ErK[DKpm1uHqj75Js-`_Ns-WnV
+S,AfVSbnrSSc55[TDP;WT`Us`V"peaV#-tgVZ!FlW;ijqWWK0"Wr/mtXT#@$Y5b^*Y5YX)YQ1s-
+Z2h61[/[N6[f3c7\-T[X]=bhl^VRbc_Z.LV`5T^9a8X0[aofi2c-H=7s3Ubm!RfBpe,Ro%e^i='
+f\+sWgAp(/hZ)I6i8O[ps5X@FjQ5Lck5FKCkl9oGlMp2Vh8lq#TUM73POaagN<Y]6Q'@JqP2?6:
+Du";IDuXeNEW;0tOSY%<O98ir?![D6s',M,rE9,%s&](ur)N2br`/hrs&T2&r`K5Sre1B+L%,-5
+NqnZ>L51VCN/WdXOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Ur
+f@\g2gtgiEi8N_VjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0jrp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/>J
+;,-j].;j!<C2%?nARo:[@:*AI>[1H8=]e^*<E)mq;Gg7e4@2A&779U88k`"V:]F2V:]F8k:]F2[
+:]4&g:B45d:]4,i:B45b:]F2e:B4/h:]=)i:JUmbrD*>dr_EJhr_WGg!DlSk:]O;i:B+,d:'+-`
+9_M3\:A.KX:A%B_:Amu\;#O8d;#O/i;#O8];#F2_:]O;i:Amub;#!o_;Yj;m;Gm6fr)3Snr_WYn
+r_reqqG[DnpJq5os&TD*=&r@'=BPK&!*K5%!a&T-r`]8)rEK>,r*98-s'5M.!+,V2$Xd=K?smDP
+@q9.]Ac66@BDuTDC&VlHCB/2MD?"MRDZFbUEW:+[FTur1FEM_LG5c^cGRSkDH[C-fI=6QoIt3(J
+JcC<%Jc:9$KE$W)L&Qf6Ll$Is@TlZ,9h7\7<;0D_<[j?"Q'@JqP/G5W`lH0Bb0.uPc-=P[d*U+c
+dF-IleCE.$f@\d0gYCWAr''U5!BraD56"UP;ZgB5?![D6s',M,rE9,%s&](ur)N2br`/hrs&T2&
+r`KCu9he;S:@S;S<;BHtL51VCN/WdXOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+fDqiCW&JF(B4YXa@UWYO?<pf?>$4s/<`W0u;c6Ih:euq?GCY7%Nfom0Z,t).a2c3<`5BI.^V7Fq
+]Y"-Rs1A9ArOMs<s0q^1rO)[6qm?F4n[82"s0_d3rO)X5r3cO4rjDF-r3u[8s0r$<rjVp;rjh^3
+qml7.!4hj6rjVm:rOE0E\[f;_\[]0B\c98;]DoPD^&GYE^&GeD_#M7N_"tnD_?%QmrPSTPrPefV
+!6>)[!6>)YrQ"iWrlG2`bPo`bblH&^ci;AkdJhSmdfItKrmq)#s4I;'qV(o&rnRM0!oMqoro*h8
+qr7\;rT+1EkNM-orTXIMmHji>s6p!W$h<fYoCV_Kp@n=Vq#:'jqY^;nrs7f?bK%ZC`k8Y2\bs&8
+]*4OeQ'ISth>dA8r/pZ8s-*JIrKHujs1nNJ!5e_Bs'>\2rETA,s'#>'r`K2%q,Zraqc<\ts&f8'
+s&oV2>[4M9Y-7Bq!5.s9r4;j;>DJ&mN/`m[OckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm
+_8=.0a2lEHbg+P^dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+SFqL]BkV-jARf1X?sd5G>[(B7=BAO(<)Z^n;,C(bD0fc.D/s`EIYE^XQ3`b?P`q8nOcY\%Nrk?&
+O8Y+:NUDi'NW+n6NW"n;N<#"5NW"h7N<"q:NVnb7NW+n7NV8A4O8=t*O8+h9O8Y1;OnOn6Oo(4A
+Ockn,Oo(79Oo1C@Oo:I@OoLUEPP^OBPPp[EPP^UDQ2d0FQiEBLQi!-MRJN<NR0&hHS,JlVSc##S
+Sc>;[TDYAXU&Uk]U].(dV>mFlVuEXpWViasWN,irriQ1&ric@)s0)F+!3uO/!42[3s0Vj8rjVm:
+#e@OY]=bhl_86)e#/eBt`Q#s=rl>>ebKJ/TcHji9d/MDpda?Omrm^u!#hR_^g"P38gthtd#2e@t
+iSrkWrT*t>!9X7Cs60LI%dN<Dm+TFaVOs6BPEC`VnrDLb"dbO?Q'@Kgs8-a1DZ+JRE;jbUE;=MP
+Onb%9NrY:@?iOF4?2\%.>Q7n)=oMP'=8>nc<Vohr=8uD%=oVY,>?kG3L%50CO7J>-NE_0pMN!OU
+OHG]jQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fmf%8R.g>(N@i8EVT
+j5oFckiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+;#j;`:*s[gB4YXa@UWYO?<pf?>$4s/<`W0u;c6Ih:es5?6:=./7Rp'D:A[fe:?t[W:esmd:@V-Z
+:B+,i;#!ib;#a;k;"dZb:A[fe:B"&e:B"&e:B!uf:Amug;#4#i:f%'e!)NShr_NAc!_l?^p.bQ^
+p.tEXn5&[QrDE>d!)NSh!)NPjnPK-\oM>N`r(d5eq,$lapepod!E)ek;YsAs;Gg:h;H$Nn<;BGm
+<;fes<;]bq<X2],<``='='5?$!a&N*r`K2'!*]A+p0@T&!*oG-rEfP4ra5\5"^tkMA7T9MB)ZEE
+BPD/ZC&VlICB/2MD>nGQDZXltEW1%YFoQR`FoQXaG8,:IH$XgaI!g?kIXcitJ:W6%JqARPK)UB6
+KS>,7L51+l?W^0$9M%W@6g%GC<Uj*3Q^3o%P`ru$_o0O6a2uHGbKJ,Rc-FY^d*L(ddaHUormh;*
+f\,!5gthllmlg\7s$-HGs&8qsnl,Nps'>\2rETA,s'#>'r`K2%q,Zraqc<\ts&f8's&oV2>[0us
+9MP'WnPo?`>DJ&mN/`m[OckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^
+dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14M
+s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRO
+f_;?BWAA*r@q&kR?X6oA>$5!1<`W4";c?Rk:f'rFSXP(\M2mdgVQ\(^a2Z-<_ns7*^V@Iq]Y"0S
+s1A6@rji$<s0q^1rO)[6r3ZO5n?r)!s0_g4r3cO4r3cO4s0_L-r3u[8s0r$<rjVp;rjha4qRQ.-
+!4hm7rO;a8qmla<!P,`4\c98;]DoPD^&GYH]tV7rqnW6Js1nKIqSN-IrP\ZRrl,&\aN2F#`r3sU
+aT'?_b00e.rltJgp!3WbrR(YnrR1o!e^`7%rn%/%rRq&$rS.A-rnd\4!9!k8r8RV6!9F+?"Qnn2
+l0834!pf4>rU'XR%.NfWo()DEp%J.Sq"Xg`!rMrqYQ"t+j4)8n`l5p.Yc-6cr4;^9"IPOAQ'L2*
+q3(W;rK@2CqiUrCrfm&i#f+9m_SX.*?srt@s'G_2rETA,s'#>'r`K/$k>qR`s&f5&s&oD,r`fY5
+?='h<Y-ITur4Mg:r4;j;>)A,qNK90aPEhH#R$sM8StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]McHjnde'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRO
+SFV:WARo:[@:*AI>[1H8=]e^*<E)mq;Gg7e:MtH'C2J!5H[^X+rK[\RP`q;oOcbb"O8k4@O,j0u
+m>h('rJ^W5rJgr=NfNjnrf$c7!0$o:r/CW7s,?l8oo9$5qN1-+plPH8r/gi=pQ566qiClAP*5g,
+qiLW9r0%#@rK@)@s-!DGqNClBrK@2EqNUuEs-EJIrg*MLo9]NGrgEhVr1*eXqjdPSrgs+]qk3bY
+!2B4_rM9=e!2f^mri#jrrMoms!35st!3H1%riZ:)s/u@)ril@,"gbSC[C*IB\,EfB\\#Jd]YD4t
+_>_=O_uIXV`Q-$uaT'BebKS5VcHji9d/D?9daQ[peCE.$f@\d0g=tB<h;7#Ghr*JPio9"ZjlGOb
+jQ5P&kPs`Vl0@Nsf"A,\Sskt.OG\^AnrDIa"IPOAQ'L2*qJZ.HrGV^T!,qjUrG_k#P5LI9OT1CA
+@/aO5?N4=0>lS%.>5VP&=T2Cb<rQ2#=T)D&=o_e+>QS2;?N#TLs87rNNr+f>M2I7OO-#NgQ'Rc(
+R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Oj5]7`kNM0p
+lg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRP
+;#jG`:)[\S@q&kR?X6oA>$5!1<`W4";c?Rk:f'qM6N0=U6q0[=8l"DBrD)lYs%`Ph!)WDcrD3Pk
+:f-j]!)EDe!)EMhr(d5er(d8dr_EDf!)WJg"].uk:esmd:B"&c:'+-`9_M3\:A.Ha:/CX[nPAdR
+rDE>d!)NSh!DcPk;=RK[;?'Gm:\R]_:B+,b;#4&`;Yj;m;Gm6fr)3Snr_WYnr_rhrq,78mp/V,n
+s&TD*=&r@'=BPK&!*K5%!a&T-r`]8)rEK>,r*98-s'5M.!+,V2!aoABra5b9A,^!=Ac66?B*)a\
+B`;`FCB&&OCi4*,rbhaS!cW."rc80aFEM^)FoQXbGQ2mgH$]I:s*Xiqs*t#u"bD2TJq8LOJeE]h
+K7nr4K6Cs7<_uUc8OZ$753Go?<UWs!R$X,(Q,1>T_o0O6aN;QHrlYDfc-=Q5cOS=LdaQ^re^i='
+f\5*8h>9D'4TI\F56+UU;ZK_k;u^8)?iOI4?2\%.>Q7n)=oMP&=6EW`=8uD$=oVY*>Q.k3?!^i3
+9MA:Ss6s"b;d,$8N/`m[P*;/sQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^
+daQ^sf@\g2gtgiFi8WeWjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14M
+s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3dO
+po*qd/RVpl?!LT;=]ea+<`E!r;Gg7e:JZk=R=KjDNKTa-Y/nZ'`l,d3_8*h"]tCuV])K>?])K8>
+\,a#3[f*W5[f!N5[d^^$[/RK3[/@?2[f3Z8[^H+Cs0_L-r3u^9rjVp;rjVp;s1.g4s1&->rOMI0
+!4hm7r3u[8qmla<o""e3qRcd?s1SEE"22F`^\bhH_>h=I_>;%F_u7OQ`W!mW`rX9%rPnfVqoAr_
+b0%oObl,cdcLoK`d/DAkdf%VqeCFQLs4@8&rRq&$rS.A-!8[Y2!oMqoro*h8qW%P9"Qnn2kir'2
+!pf4>rp:-^n*oi:nac;Do_%qPrqQKg!rDinYl>1)gsaEe`5BR)YGe@pUYrZ_])B2;](il=R$X,n
+s7_]TOo:ICOnk12^]2(L_>_:R@UW\QrEoS2s'>S.s',M,qcWo#r)`DhrE&u#rE9/(s',J-$!gkD
+?XI2LY-"r#s7j8)]DT8=\QOiLNfT9bPEhH$R@B_<T:r!SUo(&hX0&P/Z*UgG\%0)_]Y;.s_SjF6
+aND]NcHjnde'ut#f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQirqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3ch
+mXlTh?X@#C>?Y03=&r@$;c?Rk:f'q`DL-VDD/s`EIY3RXQ3W\>PEV/lOc]<u"-/G'Nr=t)Nr+h8
+N;AP5NrP+=Nq\P4N;SY8N;eh9Mueosrf-r:r/LB0!0?u<mZ7C0!0@#=rK$l<r/p`8qN:Z:!g/Y/
+rfR)>q2tT<rK7&Ar/q#Bs-*;Bs-*DEs-*8Cs-<VMpm;#HrKmAJ!1E_Os-`nU!1WnVs.0%Wqjm_X
+rLa"\q4Re_p7qV_qka=irhoaos/Gpr!NE*rWrfB)Xo5C&YPt^(YQ(g,Z2V$/Zi7?3[JdT6\-]^W
+]=Y_h^VI\%rk]2``5KX7a2c9Bai_fMbg+N5ci;Aid2LH^e'umtf%/L+g"P07gtgfChV[5KiSieU
+j8S-<jo=KCk7d(Bkiq'J\#Q0lR?WhpM1gD/H[>:DgPl9%Q^6D+pM]qHrGVLNplY62"(G\I@/XI4
+?N4=0>lS%.>5MJ%=Su7j<rH,!=T)D&>5qh+>R=\B?=.&I@>0Aho`+ZHpl><4=c86!O-#NgQ'Rf*
+S"-(BTq\<XVPgDoXfen5Za@0M\[oGd^;%M$`5Td<b0/&TcdC1ieCN7(g=tE=hVd>Oj5f=akNM0p
+lg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3ht
+s%rSfr_<,^*ai>]?!LT;=]ea+<`E!r;Gg7e:JX)?6pa:07RfsAj%oVKnPB0[s%iYkpJ:cbs%iYk
+pJ:faqbI2er_NMg!DcJi:]4&f:&[of:]=2e;?'Gq:Jak`:]=,h:\d`e9h\7T:&[o]:B=3dpeL?T
+o2,B_q+q&er_<Ji;#X>^;#=,i;#a>e;#a>h:B"&b;#4&`;Yj;m;Gm6fr)<Vns&&eos&8nrq,78m
+rD`hsr)N_s#?Or-=&rC(=Sl/$=BAT'=T;M(>5h_0>[(H;>[.,2ra#P/rE]A/!+>e5s'Yk9!+Z"=
+!+l.Arau4Er+Z.Fs(hXNrb_[Qs)/!YEH-$uF8^4\FoHRaGQ2pfHN&7$I!pHmIt*!!JUi9%Jq8LO
+K)UB6KmduQ>Z4Kr91VK=6U![r3pBW=<UNm9R$X,R^qmn*_o0O6aN;NFb0%oObg"GYcd0tcdaQ^q
+e^i='g"P39h>BJ%4oS=X;Ya8j;Z0Mr@UW\QrEoS2s'>S.s',M,qcWo#r)`DhrE&u#rE9/(s',J-
+$!gkD?XI2L9M81Rs8Gse<;f`uMi<[WOHPfmQC+)0S=Z@HU8+N]Vl?`!Y->1;['mHS]"G\i^VRe*
+`Q-'BbK\>YdF-Lnf%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6Kk
+rVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7WpQ
+s/>jnr2B@hs'.!V=]nj-<`N*t;c6Ih:esiCS<n_VL5h@aVQRtZ`Pf[2_8*h"]tCtg])K>?])K8=
+\,a#3[f3]5[f*W6[d^^$[/RK3[/IE3[f!Q3[f<c-[f!W7\Giu;\Gs&;\Gs,4\GEc+](if5\,Ei6
+\c983\c98;]DoPD^&GYH]tV7rqnW3Is1nNJqSN*HrP\ZRs2P)Z!Q`=[`r*mTaT'?ab0/#QrQP>f
+oZmNarmC_nrR1esec+/!fDaG%g%jA$g]$"-hZ)I5i;V^5iqqa9jSe0Ck3(sml2KuJli6>NmJlYT
+n-ALSo(2MHp%SI\rV6Nlr;O#%&F.rma2c*=_mHPDW2-/^Tq12Rs183?r4;[8s-VO?!0Qu<rK7)B
+rfR,An%T4F_84"*@U`bS?srt@s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@UlRE
+p&Fj#qRcR7;N-WsOckonQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r!t,`Q-'BbK\>YdF-Oo
+f%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7Woi
+s+Kcls'-gQ=]nj-<`N*t;c6Ih:esi'H$O.AEHQPTJr5k[Q'@JqP*(ifpl>Q<O,o<]rf-9)qi1T6
+qMkK7!0-u<pPo02rJ^f9rf-i7rJgi9r/C`;NVJP6O8=t+O84n8O8P+;Onb%6Oo(4AOckn,Oo(79
+Oo1C@Oo1C@OoLUEPPUIBPPp[DPPUOCPlR-FQiEBLQhm'LRJW?RR@9V7r1*bWr1*YTrgs(\r1NkZ
+s.]7_rhTCe!2f^mri#jrrMoms!35st!3H1%riQ7)riZ7(ricC-riuO1rj2^6[f*]8\Gs)E]">Vf
+^;.P#rPJQP%`QH.a2l?DbKJ,ScHab^rm:Sj!RfHre-aaWf@\a/g=tB;h>Z73hr+Lms5O(=s5X@F
+jQ5Ldk5FHUgVgCpT:)%0P)Y6LIXcZhG'A3'NnfWoR+hT:DZt#sDfBW5r,2FNrG_dupQ>02s'l":
+s'Yh5s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@Uk(Gp&FZFqi:W7;N-WsOckon
+QC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r!t,`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oe
+kiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7Wns
+ohG<YrD!;s)Hp9H=B8I&<)Z^n;,C(b:-:j26:=427S$*Gk"knMnP90\:]4,b:]4)i:]=2b:]F2f
+:B4/h:]*ud:]4&f:&[of:]=2e;#sKhr_NSjrD*AgqG%#br_3&\r_E)]peL?To2,B_q+q&er_<Ji
+;#X>^;#=,i;#a>e:]O;g:B"&a;#4&a;Yj>l;?0Sj;YsAs;Gg:h;H$Nn<;BGm<;'>l<rZ5*<``=&
+='/T&<rcA%=8l>$>5_\)>lS%+>lJ"/>l@q.?MRq2?t!MRA,^$;B)ZECB`)TDC'&0eD#S;NDZ=VV
+E,fptF8p=dF`__JF`qs-G7]"EH?spbI!g?kIXcitJ:W7KJc:69K7\`%CLC:D:J4;N7mo[,5!(ec
+4$2e.pJpW^s-O_<^;%J#_Sa=2`Q-'AaN2KFb0/#RcHab^d*_jA#h7DUf@ej2gYDZirB1-EqE4gB
+q*"ROs&/\lr)3Pns'l":s'Yh5s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@Ui)+
+p&Fqgmo32DNfT<cPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]NcHjndeC<($
+f\5*8h;7)JioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcGcMJ,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`sQ
+po"%gp8KBA=BAO(<)Z^n;,C(b:JQb9Q@4==NKTa+XiA>u_ns7)^V7Co]=S!Rr4;m<rj`!;p9st.
+rjMa4s0hF)qm?@1r3ZF1rjMa4rjMj7oX=\,rj_s:s1&*<rj`!=osjk/q76R:qRZL4qmZO6qmla<
+o""b2qn)m@s1SEE"22F`^\YbG_>h=I_>D+G_u7OP`W*sW`rX9%rPnfVqoAi\b00e.rlkGgoZmNa
+rR(YnrR:errmq)#rn.2&qV(o&s4dh7hVR/Ii8FUnr8RV6rT+4FkNM-ol2KuJlN$;Nm0rFOn*ol;
+o()DEp%J.Zq#1!ir;Q]'rtYIne]c%Qa3;N-Wi;qkTVA%*b.tTrjgkB%s1/'=pq$O;g&M&6p6,E;
+"d5"1P*1t,P5N,d^]2(N_89^\@KKtG@/XI4?N4=0>lIt,>5;=l=Sc2">5qh+>lS(0?N+:=?t!JQ
+@Uiq[AS/(<rrBb+]_K,=\l"KKOckroQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`Q-'B
+bK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`ri
+k^t'^=BAO(<)Z^n;,C(b:JPbOH"h/9Fa/=dM3aEkPEV/lOHB-rs,R,=m#Lq%rf$f8!fW+urf-u<
+rf6c5rf$c7!0$o:r/CW7s,?i7p5T-6q2k$*q2kK7rK-r>plP<6qiClAP*5g,qiLT8rK@,Ar0%#@
+s-!DGqNClBr0%)Ds-*MIrKR;Hs-EJIs-ESLqO%;Nr0RMQRf8fSSH#/XSGJfUT)G;[T_P2\U@tA]
+V#$nfVZ*LmW;`dqWrK$uWr&gsXT#@$XoP[)Y5YX)YQ1s,ZMq62[JdT6\-]^W]"G\h^VI\%rk\ZQ
+rknlXa2e2#"3Sg2bl5ofci2;idJqVue'umte^j`P"khVagtgfchZ)O6iW%p:j8J'=jo=KCk8)U]
+XeVJSQBIGkLOsu(H?j[YR[&tpN:r:eNS4@.DuOVSDuO_UDuFSNDu>^lOnXq;A,Tj<@:3LA?iOI4
+?2\%->Q.h%=n5\k=oMV)>Q.n->l\41?OC1L@:E\UA7]=aK_GH=O8+b8NDY^sOckroQC+)0S=Z@H
+U84W`W2co#Y->1;['mHS]"G_k^r"".`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--
+n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`qs
+rClQP)-L'C<`W0u;c6Ih:esk^4@)A%6UaI784ZM>:]!oX:BF9e:]4,b:]4)i:]=2c:]=,e:B4/h
+:]*ue:]*ue:&due:]F8f;#sKhr_NSjrD*AgqG%#br_3&\s%`/]peL?To2,B_q+q&er_<Ji;#X>]
+;#F2j;#X8e;#a>g:B"&b;#4&a;Ya5l;Gm6fr)3Yp;,R<js&8qsq,78mp/V,ns&TD*=&r@'='56!
+r`K2'!*];)"C,/9>?h#1s'>Y0ra#P1qHs81!b#PIraZ"?rFZ(B"))C_B`;`FC'ABhD/O3-rbhaS
+!c`7$rcA*]!HiM`FoQXbGQ2mlH$Xd`H[L8@IfForJGk$<Jq8N*K6M$9=&Dad8OZ*85Wq:m3]fDp
+84Z0;mo9$]mT(?.]Y2"m^VRe(_o0O6a2l?BaN;QHbKS5VcHjh`df.]#eCE.&g"P38q`ap@r]^3B
+s$$BEs&/\jr_iSkr)*N)rF,h:?srq?s'G_2rET>+r`],#nlY`kr`]>+r`oJ/!+,Y3$=I:N@U`hX
+AS#IHpAb"gn5N8FO-,TiQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Pom=b0/&TcdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q:YD<
+r2BCi-Fp_!<E)mq;Gg7e:JOW@S%O-!LPq7_U9;JQ_ns4(^V7Co]=PVdqmud;rj`!;p9t"/rO2^5
+"1GVG[dgd%[/RK2[/IE3[f3Z8[^H+Cs0_L-r3u[8rjMm;rjVm:s1.g4qRQF5!4i!<!4hp8qmZO6
+qmla<o""b2qn)m@s1SEE"22F`^\YbG_>h=I_>D+G_u.IP`W*sUa8O$Va8<pZai_g+bl5lecLfH]
+dJhSmdf\+Mf%0iPrRh,&q:bi&s4dV1rn[_6i8FUnr8RV6!9F+?"Qnn2l0803!pf4>rpBaSs6p9`
+o()DEo_%tWq#:'jqY^?$rsAMYd`TVI`5B0jrhp7!TV7q$a1f'kZE^Tpkdg](s1/*>pUf&Wr/p]9
+rK7&AqnW-E!5A0A"i.rbA7K-K@fKm:@/XI4?N4=/>lIt,>3]8i>5hb)>lS(0?N+=3?jgCP@Uiq[
+AS,RgBPI5@rk89Crk80@qn#[cOckroQ^F21S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`lH0C
+bK\>YdF-Opf%8U/gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q4-W#
++bGc:OB#7Y;c6Ih:esh\DKpqND/aT@I"I3>PEV/lOcY[tO8k4BNK0$[mZ.:+!07&<s,?l8!fW+u
+qi:E1rf$c7!0$o:repl;N;eh:N;S\.NW>.:OR8,)OSb+;OSt=9OSP%9O91Q-P5^U@OSFt:P5UO@
+P5UOCP5gaBP5gaDP5gaGPQ6pGPl?sJQM[!NQC!o'r0R8Is-`eP"IY^JR[a5Fs.0%Wqjm_XrLa"\
+q4Re_p7qV_qP=1hrMTXns/Gsss/?!ur2Th!riQ1&!3cC)ric=*!3uO/!42[3!O]B7\,Wu<\Hf^Y
+]Y2"o^qoudrko/_`lH-@aN;WLbg$.4s3L\k+OSQ`dF-IleC<%!f@\a/g"P6:h;-rEhr*GOiSrkW
+ioC!us5agSiQ\p6U7@X8OcP<PJpr)lrc\X8P)kQZLk^P)q2X9jfDk_dqel@Os)7pTrGVOoqN1i@
+OcfI$s().>raPn9s'Ye4s'G_2r*95*r`\Sir`];*rETA.!+,Y3s'Q4C@U`hXAS#IdBP;,Ss7MHH
+N_ke!P*D5uR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daZguf@em4gtgiF
+i8WeXjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q,%,d
+qFp<OrDa>,;c?Rk:f'q_9fta36:1Z?s%*2cl;.:PrD*Dip.kcc:Japf;#*o_;"mcb:Adlf:B"&g
+:'"-cr_NGes%WJfr_NMiqG@8i:]=/j:]4&g:\mfd:&[i\:&du[:B=3dqG-QVnkf<_q+q&er_<Ji
+;#X>];#F2j;#X8d:]O;g:B"&b;#4&`;Yj;n;Gg<f;Z'Jn;ZBVo;ZB\p<;BGm<;fes<;T\q<X;c-
+<``=&='/T"=8l;'=^##->6%q,>Pqb*>l\./?2n70?N=L5?NabF@U`jHA,p3?B)ZECB`)TDC("fn
+D/F0-D/O60DfG\rrcA*]"*J^.FoHRaG6<)8H$]I:$@I8NIXcitJ:E*"qgf]8Eb8QV:JXSQ6pj7(
+5!:nd4$#u*7R]^25sRd-<;0D\<[kSj]=bhk^qmn)_o0R7a2c3?aN;QHbKS5Vcd:%ddaQXneCE.&
+g"P38q`am?rBC0CrBC6[r_iSir_iVlrDNZ+s'u%;s'bq8rEoS2s'>P-r`fA*l<4*ir`f>+s'5V2
+ra5\5$XmLR@q9.^AnPdjC%qZ,<;fbc<)AX<P*D5uR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q
+_Sa@4a2lEHc-FY_daZguf@em4gtgiFi8WeXjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6g
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?g"HAY
+rRpb>r2BIkrOMs>*)]X1:esk^9u*14I"7$2OdMlG`5BF,^V@Ip]=S!Rqmug<rODm:p9jt/r3lR3
+rjM@)qR$:1r3ZF1rO2^5!OfE8[f<c-[f!W6\Gir;\Giu;\Gj&3\GEc3\cB;<\cB;;\GE]4\GWo;
+](3E2])0,>]`,VE]E>j]^VBW\s2"]Mqn`0Hq8<0Lrl+oWr5\`Trl=lVs2kDdc-6.2!7(5_!7:_m
+rmLbo!S#[!f)F;#f_sM"gATe+g^)`mhV[5Ki8NYliqqa9jSn6Ek3(sll0803&F8]LmHs?1n*oi:
+o()DEp%A:YrqQZmqu-N(ruLXbd*'JIahY<dW2ZSdU7e'LSt*3p[BcQf_91$Llacf%pq,,Wq2tE7
+rK.)CqS;R7!5SSF!b>eNrF,h:?srq?ra,V1qcs,)qc`\rr*')(r*98-s'G\3&7ApT@U`hXA7]=a
+B4tsmCMW_Fr4N6G]tM.orOr!=:Q^g)Q'[l,S"6.CTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?
+b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTd
+rdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nknrHn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?pmgQ#
+s+:31s,\'q;,C(b:JOWMG_p-OE-->QJr#YTP*(lgqi:`=qi:o@NK0$[O7&&)NW4t9NW4t;NVeb2
+NW"h2NW+k;NK!jrs,?l8oo9$5qN1**q2kK7rK-u?pQ535qiClAP*5g,qN1N8rK@,Ar0%#@s-!AF
+qi^uCr0%)Ds-*MIrKR8Gs-ESLr0I;JqO%8MrL!VQ!h,UJqj[YWqjdPSrgs%[rLiqZ!2B1^rhTCe
+!2fanri#gqri6!t!35ps!3H1%qQBh$s02O.rj)L0!4Mj8s1&'=#J.R]]t_@u_>_:U_o0L4`l?'u
+a90T.bg$.4rm1Vk(X^UWd*^:ie'umtf%8R,g"P39gtgfChYuI5iVqj:j8S->jWWBu[]#jgR$3\l
+L4k)+HZs^YF`hkLMMR%AIWLO5Q'RGjgPseaqJZ7Ks)7mUrbhgTDu,RiOnb%;AHHCPA,Tj<@:3LA
+?iFC3?2In+>PhUt=o;J&>Pqb+?2n71?P$UR@:E\UA7T7_AnPdjBkqMZs7MHHN_be#Pa.T&R[]k>
+T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHsteeCE.%g"P39h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcGcMJ,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nknrHn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?pe_#c
+pe:EV!)EDcqc+8,;,C(b:JOVV6:O:/77B[;8knYJqG.#cs%rAaqb[)aq,$i^rD*,`r_<Ji:B"&f
+:B!ue:B+,h;#4&h:]sQj:esmd:B"&c:&n#f9_V9]:@h6^:/C[\nk\gQr_`Jfs%iYi!DcPk;=IE[
+;>sDl:\dfe:\mid:\di`;>sGn;u9Jh;u]_q;>O2f;Zouq;,U<k;u]hm;ZKen<<-)!<W?,"<sD],
+<`W:'=SPts=T;M(>5h_+>5MP%>lJ"/>lJ%/?M\"3?t!JQ@f9j9B)cKGBPD0orb;@H"`%pkD/O4i
+D?OlsE,p!uF8U.[FoHRaG7JkCH?spbI!pElIXcitJ,OosJJNNJ@p;i.9M%ZA6pX"$4ZPP`4$5Sb
+7/fIU7RBI077-ZHpJpZ_%CisZ]">Yh^;.S%_Sa=j`<jQ)aN;TJbg"GZrm1YmrmD&#eCE.%g"P3X
+55[PE5!Ad,r]L6Fr)<Plr)*Air)<Vnrac.A@q5IH!b#JErEoP1s'>M,r`f8'p0%;sr`f;*s'>Y2
+ra-4E@:<VS@q9+]AS,RgBPD6tq#C1i!)rGf:Q^g)Q'[l,S"6.CTq\?ZVl6VrXfen5Za@0M\[oGe
+^VI_(`Q$!?b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-h
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb=S24Vo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+Cg"HAY
+r7M(KpS[ebr2K^p!4i'>rj`iV:esh\:!/m?H\%!2OdMiF_SO%&^:h2X]DK2=\c'#<\+[91[J[K5
+[/m_DrjMC*q6^10r3ZF1rO2[4rO)^6o="S+s1&$:!4`$;s1&*>osjk/pppI9qmuU5qR?C4r42j=
+o""b2qn)m@rk8<D!kuFaqS<-IrkSEIqSN'Grl"fTrl4oWr5S`VqT&f]b0/#QrQP>foZmNarR(Yn
+rR:errmq)#rn.2&q:bi&s4dV1rn[_6i8FUnr8RS5rT+1EkNM-orTaFK!:9^P"RbaJnF?MK"7u0X
+p\jmeq>^9lr;O8,'^OGqa2Ps<_m?A@VkK`WTU_XDS!j8B$(-X]_90m!ZDb(s\bNc3]@?lTOnk1>
+Onc`k^Au(@^].pFAcH<@A,]s;@K0a5?iOI3?2@h'>PVJ">Ph\*?2n70?P?gU@:E\UA7T7_AnPdj
+BkhF!D/T1Lr4`3Es1SKJrP&3Crk)$iPE_?!R$sM8StMdPUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb<qQ"To()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+CpRD;;
+KS8`FrIP$1qN)GS:esh\9r`DpBPh^0G^Y4#PEM&jOS+\4NrP1.NrP(=Nr=q;N;\b8N;nn8Nq\P4
+N;&>1N;\_9N;JS8NfEgos,[#<mZ7.)r/^c;rK6l:plYH8!g/Y/rfR&=q2tW=rK7#@rK7,Crfd5B
+s-*ADs-*JI!0d>Frg!MLr0R>IrKmAJrgE\O".>UIS,8`USc##TSc,/YTDbGXT`Ch\U].(cV#[Ck
+VuEXpWVrjsW;rsqX8]7#XoP[)Y5PR(YQ1s,ZMq62[f*Z8\Gj#V]">Vg^;%J"_8=(,_o0L4`l?'?
+aN;TKbg$.4s3L\k!7CemrmLeqs472%s4[J-!8[Y2s5<n8ro3t<ro><U^p9f.R?s)"NJN18I<p-_
+GBJ%LF`VVGEHuP^Mj'6OM0smKN<"q$NR\"*Dtn5MDZFbUDtoFnOT:RAOnk+=B)ZBAAH-0=@fKm:
+@/OC3?N+7,>l.b$>5MP$>lS+0?N"4E?t!JQ@UiqZAS#IdBP;*pCMRd)q>^ASqiCH2:Qgp+Q'[l,
+S"6.DTqeE[Vl6VrXfen5Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb<qQ"To()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+CpJCob
+pIt?Vr_EDdq,Iu,:esh\9is_M6:=727S-3Hn4s'[:\dcb:]F8a:B=9hrD<>dq,$f]r_E2`rD*;e
+rD*>ds%`Phr_WGg"].uj:f'sd:B+,c:&n#f9_V9]:@h6^:/C[\nk\gQr_`Ge!)NSh!)WYln50!Z
+s%r_kq+q&eqG.#cqG?ubpepod!E)en;?0Yp;Z'Gp;Gg<j;ZB\p<;BJc<W?)*=&r@'<`W:(=SPts
+=9Vi2>$G37qciu'r`oM/ra#P1rEfP4ra5Y5s'kq;rFQ4GBP;*oB`;`GC'JHiD/F0-D>nGQE;jnW
+F8U.[FoQXaGQ2sgHN/<tI!pElIXcitJ,Om-JTba7=A_jf84?$:5Wq=13r_8Q4?GP_2`Wrg6:3n&
+5s%Cn2u$AH<Ua$"\%&uZ]"5Pf]t_A!_SX4/rP])_a2uKIbKS5Vci2;kdJqW"e'uq!f\,!5r''s?
+!Br[C56"OY;u9Jk;>jDj;Z]j/B)ZBAAH-0=@fKm:@/OC3?N+7,>l.b$>5MP$>lS+0?N"4E?t!JQ
+@UiqZAS#IdBP;*pCMRd)q>]tar_req:Qgp+Q'[l,S"6.DTqeE[Vl6VrXfen5Za@0M\[oGe^VI_(
+`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6i
+r;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY=7l+To'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26o>g&B_&
+g&.fKVtd4eWW&jp])T><])T;Q:!/m?H\$p0OdMiC]"l(p]tF<Ur4;j;rO;j:p9jt/qmHL4r3l.'
+q6U.0qm?@1rO2^5!OfE8[f<c-[f!W6\G`l<\@8sH\Gs,4\GEc3])T><](rl7\,Wl:\,<c6\c982
+\c98<]DoMD^&5ME]tV5Z^\P\B_>;%D_uI[R`W*sUa8O$Va8<pZai_g+bl5lecLfE_d/MGldf%Vs
+eCE.$rn%,$rn7,$rS.A-rnd\4s5<q9qr7M5!9F+?"Qnn2l0803!pf4>rpBaSs6p9`o()DDo_%tX
+q#:'jqYU6'rtkOle]PnN_ofZtWMuegStV^DSXc1;Q^@];$^I%&\tkUoR$h2tFn3*;])'%frrA/R
+Oo1CBOnZZi^\ttA^].pHB)Q<@A,p-<@fKm:@/OC2?N+7(>l7h#>lJ%/?N"72?iXX7@M30]A7]=a
+B4tsmC27U$D/O92EVoe3^AG\F^AGTCPEhE"R$sM8StMdPUo(&hWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY<V5nRo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26o[SEtn+
+K):Z,OoLLR9riJqBPh^0G^Y-uNffEbr/Ui>r/^c9rf?K-!f`5#rf-r:rJgf8!0-l9pl562r/C]:
+rf-o9!KE';NW4t8NW5"=NVJM6O84n*O8+h7O8P+<Ont.?Oc]C$qN(c@P*5g,qN1N8rK@,Ar0%#@
+rf[;Fqi^rBrK@2ErfdDHrKR8G!1*PLr0I8IqO%;Nr0RMQRf8fSSH#/XSGJfUT)>5ZT_Y;]U@tA]
+V#$nfVZ*LmW;`dqWrK$uWr&gsXT#@$XoP[)Y5YX)YlD!-Z2h61[/[T5[fEr;\HfaZ]tM.q^qp#e%
+`?6'`Poj;a2l?DbKS5Urm(PiqU#5is3q,#f%0iQ#hn%ggtgfChV\=j!9*n9)ror<d(69PSX5Y(P
+Dk3IIXQKdGB\1PEccACF8g.eE,h+tHua[TDF@H*qMk?1mu>frqJZ(Fs)7Rls,m8CrK6r<s(;=Dr
+FQ">!+Yt:s'bq8r*TG0ra#5&r*/o#ra#P1rEoS4!+Gk9&n>H_AS#IdBP;*pCMRa'DJsK6qu?SUq
+iCH2<0NT4Q^F52SXuLJUSOcbWN*#$Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWBi
+8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY=7l+To'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26m_;#!oa
+9__?V:A\&e<WYus6N0=U6q0X;8PSbO!_uNeq+grcr_W;a!`2`kr_WDdq,$i^rD*8d!)WYjr_<Ji
+:B"&e:B+&f:B"&g;#4#m:esk`:f%$bs%iGc!)<GdpJ(Z_o1oB^:\dcV:\%?];>O)j;,C'f:&n)W
+;#=,i;#a>h:]jKi:f$p_r_N>dqGHubqGRGn;,R0fr)<Vns&&eor_rhrq,78mqGdMrr`/u!s&TD*
+=&r@'='56!rE'5+>$>-7>5MP%>lJ"1>[:Y7?MRt-@0'hIrabt>s(D@F!GQ6HC&ViIC]8/UDJa6.
+DJsK6rc8!Z"*A[-FT-F_G5ldcH2i3jHiJKqIXQ\DIk#tuIrf7-<`)[c8Ol375<_7l3BK8a4?>J^
+3BB2]3''/f4Zb\a0eOFq.f33?<Ua$%\$icU\[f;a]tM1q^qmn)_o0Lm`<40%b00e.!mT$:rQkku
+daHUoe^rI-g\X224o[\G5Q*eE;Z'Jg;?0Sl;Z'JnB)lQBAcH9@A,Tm:@K0a5?iFC2?1qP$>PDD%
+?2n70?iOL6@K'^K@q9+]AS,RgBPD3sCM[j*DfB^ns6s"c;cJsGQ'[l,S"6.DTqeE\Vl?\sXfen5
+Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhL
+p@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl##In*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[,Ag&B_%
+g%D<=WVi^p\b3NF\]pPZH[pm1OI2Z<\\Gkl]`#JB\cK@QrOMj9!4VF*!4Da5o!S8"!4Da3rO)U4
+rj;d8[JmW7[Igp*\,No9[fX(K\,No;\b3K/\bWi:\biu6\G`o:[K*f7\GWo;](*?2])0)@]XtfR
+]E5d\^AYhA_#2%F_Y:qJ`;R[T`r*mT`r=$Ua9B].bKJ,RrQP>foZmNarmC_nrR1esec+/!fDXA$
+g%jA$g]-%/h>Z74hr*GliV_^3j8J'Ck3(sll0834s6K^Os6U3^n*fc9nac8Bo_%qVq#C0iq>pNn
+^&JW;gsO?f_oBI$X/DnlT:__RRhhH\Q^=)*Q^*l#PE_5mR<i+MI8>-AMY4OS])0+fs8J,POoCO:
+_#1tF_"kbEBEDgYB)ZBAAH-0<@fKm9@/OC2?N"0u>lJ%.?Mn.3?t!LC@Kp=QA7]=aBDuQPBkhF"
+D/O60E,fo>r;ZT-!kuFarkSQKs1\HF;jEZ8R$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nkelGn*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[,]SF2%+
+K)^o)OUdJVGD^'LE--;NJVB&EOSk.>OSt7<Nr>%,NWP3#NrG%<N;eh8Mu\k8Nq\P3N;SY8NrG%;
+Mueosrf-r:r/L`:!0-c6!0?r;mZ7.)r/^c;rK6r<!KiK>Ont.@Ockn,Ont18Oo:I@Oo:IAOoCOD
+PP^OBPPp[EPQ$dHPPpaEQ2d0JQi36JQhm*LRJ`EPRJrWTS,8]USbnrSSc55YTDbGXT`Ch\U].(c
+V#[ClVuEXoWW&psW;rsqX8T1#XoP[(Y5YX)YQ1s,ZMq33[C6%C!4`$=)7mGn]tV7s_84"*_o'F3
+`Q#p<aN2KFbK\<2cMl/gciVP?d/MJne.'sZf%AX/g=tE<h;-rFr8@P5/D\:TW1]ZJPECl]KR\H!
+G^+FUG&q\FF)l>ADfK`9DfBW5DKK)N9jC%i@qbe"qMas(df9/^oksejooT08r0%)BqiLej!bZ+W
+ral+?s'u":s'bn7r*TG0rE\ksra#M0r*KM5@:B.E#%M1SAS#Idrb)[RC27X&DJjB3EH6-us87uU
+O8+`8O,fKkQ^F52SXuLJUSOcbWN*&%YHY:<['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWB
+i8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl##In*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[*b;#!lf
+;"[QS:@_Em>XCeF6:+127n?AH:]F/i:\[Zb:]=2a:]F8k;>sDg:\di]:]4&d:B45j:]=)i:JUmb
+r(d8dr_EGgr_WGg!DlSk:]O;i:B+,d:B+&f9__?]:@h6^:/C[\nk\dPs&&Pf!)NSh!)MuYqbdAi
+s%iPhs%`Yl:\dcc:\di`;>3ub;u]_q;>O2f;Z]io;>sJn;u]hm;ZKei<W?)"=8c2"<rc@s=8l>%
+=Tho4>?Y5.>Pqb*?2n.0?2e1+?NabF@:E^EAGp*DB4tsmBP@BZs(_RLr,)FN!cN$trc8$[r,hs]
+rc\<cs*=Wjs*FosI=6QmIf4a5Hu<M"<)64\7n#g25!(ng3BB5b3''&Z3W;&N3B&uY4$#A^2CKRk
+0.ee43;unP<Uj,i[K!Zb\%&uZ]=bhk^VIY$_SX4.`5KX7aN;TJbKS5UcHjkacd:(fdaQatf@\gS
+55.2A5!M:.;Z'Jb;Z0PnBEDgYB)ZBAAH-0<@fKm9@/OC2?N"0u>lJ%.?Mn.3?t!LC@Kp=QA7]=a
+BDuQPBkhF"D/O60E,fo>r;ZRkpJh)i;jEZ8R$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2;/as4[;%
+pSdhcrM]aqr42X7&@oBeR)+0%Ll@F^SZ&s1]tF?Vs186@!4r->rODm:l*g/jo!JD(r3lU4r3lX5
+oX=\,rj_p9!k>_Krj`!=osjk/q7?U:qmuX6r3u^7!4Vm9r42j=n[\\2pq-I:!kl=^rP/-Cr5&6H
+pVR!LrPefVr5\`Trl=oW"j+p0bKS3/blH&\cN)>kdJqYne,Rqsf)F;"f`'S"gA]k,g]610hZ)L5
+i;_d5iqqa9jSe0Ck3(sll2BlKlg4!;m0)kGnF5uIncSLUp@nR]s7u]k!W2f/rtt1Xbf@]@ahG']
+W2HD_T:VOBS=5n6QC+$<Q4fIIPEV,jPED&mP]D,-N)<Q,LA8=Q])K=fs8J,OOoN2i_#(nE_"thG
+C&VfGB)lQBAcH<@A,Tm:@K'[3?i47$?2\+-?iFF5@JsXP@q9+]AS,RfBP;*pCMRa'DJsK6EH6/C
+FoD@5^\kkJ^V9]\;O3]<R[]k>TV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9X:ai_fOcHsteeCE.%
+g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2:eomt:Lh
+s+C62q2l/KOcXdEB5DL-G^4dlNKF+"s,d2?rJpi;lAkk'!0$l9rf$l:r/UQ3r/CT6s,R)<rf$c7
+s,?l8s,I)=pl5?8q2k0.!0I2@plPE7r/gl>plP<6qN(iBP*1riq2kE7rK@)@rK@,Arf[;FqNClB
+rK@/Ds-*MIr072Gs-ESLrKdAJqO%;Nr0[MPs-`qWqjd\Wr1*YTrLWt[rLiqZ!huHapS7baq5"(g
+rhoaori,ptri#mtql9^uriQ1&!3cC)rNH7*!3uO/"gbSC[C3OB\,EiD]"G_j^;.P#_8?2h%)g-(
+`lH-@aiV]Lc-?75s3LYj#g^lEdF-IleCFQL"5);\g]$".h#ZBir89?hin)&QVOs9AP`h#]Jpi#n
+G'A.RFE;MDEcH,>E,]f:E,]]4D/X<2DJrT]ASOb,A7bb"qi(9/!0$o:ci<i[pMKtkr/^Q5s,m5B
+s,m5@s(VIGs(;=DrFQ">s'u":s'bn7qd98-nm23#r*TG2!+Gh8(h7)eAS#IdB4tsmC27U$D/O92
+EH-#@FERQ^r/gf:pPr15QC+)/S"6.DTqeE\Vl?\tXfnt7ZaI6O\[oGe^VI_(`Q$!@b0/&Td*^:k
+e^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2;.-pe_#f
+q+^<Qnl>fZ5stW<"[tpM8P)\N:\@H_:]=2b:]F8j;>sDh:\[c]:]*ud:]F8j:]=,e:]4&f:&[of
+:]4,e;?'Gq:Jak`:]4&g:\mid:&[i]:&[o[:]F/i:\dcV:[q9];><rf:]=)h:[M!U;?'Jm:]+&h
+:BF?g:\mid:\di`;>3ua;Z]io;>O2g;Z]io;>sJn;uTbl;ZKeq<<-(s<W?)*=&r@'<`W:'=SPtr
+=9D]0>$Lu0r*0)(r`oP0?2\++?N=L5@0'hIrFGk=rb)@IBP@BZ");UeD#A/LD?4Zqrc8!Zs)\co
+FEDYJG'8+SG^4R\H@(#;IK"[5Is,O6>#A-j8ju075<_4m3BT>a4#]2\3]R+!'K7p/3BK5\3B&rY
+4?=uI2*!QO1cP20pJq8or`0Z:ZF%$I[^NZT\[f>b^:q@t_86,fs2,Ge`lQ9Db0%oOc-=P[d*L%b
+dJhPseCE1(gAX;95Q<qA4o8+Y;,U<i;t<id;u^S2B`D]FB)Q<@AH-0<@fKm9@/F=/?LhD#?Mn10
+?iXX6@MiTcA7]=aB4kmkBkhF!Ci+'.E,fl<FED[(s7K=g;uoosr_l^\R$jD4SXuLJUSOcbWN*&%
+YHY==[C3TU]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DE
+o_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY;tT\Po'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MY#L$W;ELh
+W;NXpW;ERj\b`lM\[n*AI"@$1Od2H8Ye@]]]=PTL\c'&<\*:?m[ILX'[J[K5[JRB4[I^j)\,No6
+\,No;\b3K/\bWi:\biu7\GWi9[K*f6\G`u<](*?2](io8]E#YE^AbnB_#2%F_Y:tJ`;[aU`r*mT
+`r=$Ta99W-bKS3/blH&\cN)>kdJhSmdf\+Mf%0iPr7M&&ptG`%s4dV1rn[e8i8ESQqr7J4rT+4F
+kNM-ol2BlYlg4!*mI'H3nF5u=o(2JGpAOadq>U3kqu+A2)#NOJb/VH=`P/UVVP^)[St)7ra2,BT
+Q^@];%@<<DPEV,jPED#mQ'7@0Op7,2LQ.OeSboti]$C?SOS+b7^\knI^\ttE^\ttF^B87dC2*W[
+s(;=DrFQ">s'tt9s'bn7pg<]#q-X/0raGe8s'l%>racjWB4kmkBkhF!Ci+'-DfB]:F*)MIGBa&d
+pV?dCr4r?Is1V?tR@B_;StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4
+gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY;tT\Po'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MY!A-KDgE!
+KDL]+OUR>/GDKjHDKBuJItN^ZO8b7?O8Y+:O6Vc)N<"q:NW"h9NW"n3NVnb6NW5%<NW4t7N<"q7
+NW5"=NVSV7O8=t*O8+h7O8P+<Onb%6Ont.BOckliOnk+7Oo:I@Oo:I@OoLUEPPUIBPPp[DPQ-jI
+PPg[EQ2[*JQi*0JQhm*KRJ`ESR@9V7qO@PVr1*VSrgs%[rLit[s.]1]s.oLf!2fanrM]aqs/Q$s
+!35psrN5q!ric@+s0;R/s0Vg6!4Mj8!4`$=$+da]^:q@t_84"f_Z7XS`W!pXaT9Q-rQYAfs3L\k
+s3L_l%+3MOeC<%"f%AX.gY;__(>[j)hr*DMi8N"oYGIhWQ]dGhKn4Z"rH8EgS!B.sF)u@#DuaqX
+E;segD/O60Ci=3.Ci"!.D.[U'F*3K?N;&>2N6_J"Dtn5MO8Y+:O84n:Oo:IBOoCFECMITurFl4D
+!+u1@s().>r*o\7ra>M.oj7H$s'Yh7raPn;!+c(?(1q2lBP;*pCMRa'DJjB3EH6,BFEVkPrr;qY
+qiCK3s,U$ER@B_;StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4gtgiF
+i8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY=7l+To'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MGI#E;#!lf
+;#O/e:%_9\:]=,[<XVD`6UF()6UjL89MP:XohPN_r_W>b!)WVkr_WJfq,$f]r(d2ds%r\js%`Ge
+rD*>ds%`Phr_WGg##J)k:f'q`rD*AgqG%#brClu\r_E)]s%WPiq+gKVnPK6_peUrdr_<Ghm83[W
+s%r\jrD<Mis%i\kqG.#cqG?ubpepod!`DlmqGR5is&/kor_ibps&Aem!*&ep!*9%us&KD,<``=&
+='&L+pfIGss&fA+>Q.h(>Pqb)>le29rEfA.s'Yh7!FfR<A,p3?B)QBDBk[K[!,DLK$>aQqD/=',
+DJsK6rc8!ZrH/$]!I&_dGlN'hH3&A?rI#Z7Ir]++=&D^d8Oc*55s7@m3BB/]:.n,I3]]8^r\t$@
+4#o;^r]('?3]f>#2[;<'3B9/_5XG9IpK%8n'="jJZEppF[C3QS\[oDd^:q@t_>M.Y_o9[<ai_`J
+bKS5UcMc&td*^:hdaZk#ff_J^55d_G55RM=;Z9Mn;Z'Jb;?Tp6C2.J]B`D]FB)Q<@AH-0;@fKm9
+@/++%?MRt.@/aU6@fKp<AH$-UAnPaiBPD3sCM[j*DJsK6EcZ>EG'A00s7'%f<;f`mR$jG6SXuLJ
+USOcbWN*&%YHY==[C3TU]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWAi8EVTjQ5Oekiq?tm-O--
+n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MXoF#VYR.d
+W:m4b\c02?\I5*r]R,*\MNF$kV69g0s18$:rODm:l*g2ko!JD(qmQO4qmHL4oX=\,rj_d5s1&*>
+oXOb.q7?U:qmuX6r3u^7!4Vj8rOMs>n[\\2pq-I:!58BGrkJ6Dqn`0HpV[$Lrl+lVrQ"fTrl=oW
+!m/U.rlkAds3C8_s3UenrmLbo!S#[!f)OA"f`'S"gA]k,g]610h>lI4huMa4iqqa9jSe0Ck3(pk
+l2BoIlN$;Nm0)kGn*olHncSLUp%J@ZrqZZmr5/IWp#"3?b/D02\?;d/UnF<MSDME+^:1JTZ&=m4
+Pa%AqOc]O("-f+8P5^XJP)t]aO8b+?Nf]D&\bs#=]DK1`s8A&WOT:RBOo2ul_">D>_#1tHCBA6b
+C&VfGBE)TBAcH<@A,Kg8@JsU$?i=C4@JjR9@q9-LAJf#lB4tsmC27U$D/O60E,fl<F*)PJGBeE3
+s6mc'^J)A0S"-(ATV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9X:ai_fOcHsteeCE.%g"P39h;7)J
+ioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrU^#>s+11Ms*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MXm;.KE$Pt
+KD1K,OoLLPH?P'VBlA!7G^Y."O,s:%s,[,=qiC$&rf$o:rf-l8s,Hu;pPo*0rf-o;rf-r:qi(T7
+r/L`:s,Hi7s,[#<m>q%(r/^`:rfQu;q2tN8"Hek1OcfF#qN:`>r/pr@r/q#Bs-*;Bs-*ADs-*JI
+s-*DGrg!JKrKmGJr0R8Is-`eP"IY^JR[a2E!1j%XqORVWr1Eq\pn7b`US@LXs.oLfs/,dnri#gq
+!36!ss/Q!t!3H1%riQ7)riZ4's0)L.riu^6['[6K[f3c9\Gs,>\cf[Z^;%J__#V@O_u@U[`lH-@
+ai_cLrQP>frm*mWcd:"ad*U1gdaZgtf%8R-g=tB;gtgfChr!AMgrHn(Tq%O8OH#'LJ:;ijGBS/)
+R$<\kM26n,DfBZ6E,TW3D>nGcD/X</D/=*.Ci4*+Ci+$,Df5Q5pl593bl@NXq/61mqMtK7r/go?
+rK@/BrfI+p!buF`rb2=Es(;4@s().>r*oY6rF##"rF#Y6r*f_;A7Y[N(hRDnBP;*pCMRa'DJjB3
+EH-#?FEMbNG^98frfHl8qMn71R@B_<StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`
+daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MZ-BO;#!lg
+:f$dZqbHo^!)E)c$U-mE6U4"+7n-'A:ARcY:B+,h;#!id;#O8j;#F,a;"mc`:B"&g;#X8j:A[ic
+:B+&f:B"&g;#4#m:esk`:f%$bs%iGc!)<DcpeCc`o1oE_:J^d]nk\dPs&&Pf!)NSh!)MrXr)*Gi
+s%iSis%iYk!)NDcs%iGeqGHubqGRAlr_`PjqbmPo;,R<js&8qspf$ics&K,$r)Wi!!*K2$!*9#!
+r`B/'qc`o%r*95,!F/q/?N+:7?=.&I@/aU7@f9j9B)ZKDB`MiGB`MoICBSHjD/=%fD?=csEW1"Y
+F8U.[FoHUbGlDsjH@($erd?&;DIcsP:ejYT7RTO-3^#Pc4#p,08k29:69mmt2E*ZW2``rYr]1!?%
+llU.3''#[3B9,\3]]>c55nRW<rQ,!Yl:m=ZEppF[C3QS]"5Pf^:q@t_>V4Q_o0R9rlP2_"j>-7c
+-FW6cNqnFd*^=lf%8XS4o[_E5Q<qH4o&"R;?'Pn;t<icCBA6bC&VfGBE)TBAcH<@A,Kg8@JsU$?
+i=C4@JjR9@q9-LAJf#lB4tsmC27U$D/O60E,fl<F*)PJGBeE3s6NZWR@B_<StMdPUo(&hWiW>+Y
+d1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFr
+q-?dp\4[^s7u]kr;6KkrVc?eJcC<$!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY;Y9SOo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9Xr7^ktor%ef
+!3,srq5O%t&\>NaUm/N<IY<Q>PFA;N]=YZL\c'&<\*:?n[ILX'[JRB4[JI<6[C3NQpU:"/rj_g6
+rj`!=osjh.q7?U:qmuX6r3u^7!4Vj8rOMs>s1&-@oXY"5pq-I:!58BGrkJ3Cr5&6Hpr!-Mrl+lV
+r5\`Trl=oW"j+p1bKS3/blH&\cN)>kdJqYne,Rqsf)F;!f`0Y"gA]k,h#?11huDX7iVVX2j8J'C
+k3(pkl0803$L@'FmHs?0n*oi:rpg0_o_/%Yp]1-hq>pNn`;_4Qg<[j\_o99qX/W"kT:MLAeAoA:
+[Bd'$Lr-mVd^5*sOHP`fP`q@2Oq<h?OHGTaO,]6[NfK6bPEqO5])K>?]$(-OOSb1?OoUX>^\tt@
+^\knG^]/-LC]A/LC&VfGBE)TBAcH<?A,Ba6@JXC1?i"1/@JjU7A,g*=AK,5oB4tsmC2.O"Ci+'-
+DfB]:F*)MHGB\:XH@,Ykm_Jk;8t2?BT:hmQUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4aN2NIc-F\`
+daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY<:oeQo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9XSXoABo7Qsm
+q1J@%%Zuj8HZb'SC2S$7H%(C%rfI/@r/UZ8lAkb$r/CZ8rf6]3r/CW7rf6u;!0$c6$&jk'NfB$Y
+NfB%oNrP1:ORA2)OSb+9OT(C;OSP%8O91Q-P5^U>OSY+<P5LI@P5LIBP5gaBP5gaDP5gaGPlHsF
+PlI$JQMm0JQMd*GR/`TPQiNQRRK/iLSGSlUT)>5[T_P2^U8+IVU]7.dV#[ClVu<RoW;rsrW;rsq
+WrT7#Xo>I'YPt^'Y6(r5Z2V$3Za@*I[f!W7\c98@]`5\K^VI\%_Z%FQ`;[^[`lH-@ai_g)bm2P?
+cd:"bd*M^<s3_/$e^`7%f@\dUg]-(/h>c@Xi7GiQVk0<CPE1ZXJpr,pG'/"OS<f=uN/3:4DN9aJ
+R=oHoD>e>VD/O0+D/=(gD?OfmCi4(gDZalsE,bT3s,>/$qJZ4JrfI/@pl>95rK.&ArK@,A!g%57
+rbMOKs(VIGs(D@DrFQ">raYh7rF,P1rEoD/rF,V5s'u(>rad$\B4kmkBkhBuCM[j*DJsK6EcZ>E
+Fa&%SH?sr;s8J,OO8Y)2S"-(BTV8-VVPgDnXKA\1ZEpsI\%0)_]t_A"_o9X:aND]NcHsteeC<($
+f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrU^#>s+11Ms*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY;Y9SOo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9Xr_EMjpe_)h
+:J^RVr(d&`s&\hns$6rY5sn%/7Rp$C:&IfY:B+,h;#*oe;#F2i;#F,b;"d]_:B"&g;#X5j:ARcb
+:B+&f:B+,g;#4#m:esk`:f%$bs%iGc!)<GdpJ(Z_o1oB^:\RWU:B=9hnk]<`peUrdr_<GhlqmUW
+r_WVjr(mJk:f's`:B+,c;#4&`;Yj>l;ZBVj;Z'Gp;Gg<i;ZB\q<;BGm<;KSp<rH#!<`f3"s&]5&
+r`9)#r)`l"s&o8'qciu'r`oM/r*KD1!+,Y3s'Yh7!FfR;AH$3>BE;g\rFu7H"`/$lD/=%fD?4]r
+rc8!Zr,hs]rc]*&G^4R\H@($eI<KC6>#S-h8OZ'95lNn\3BB2\9hIlE6pj:/5t".47mAsn3;kiC
+4$#D]2`WlX3rV,G3'0/`4[)"l4?rUAs&Bl=Yck:8Z*CU@['[9N\@K2_]Y2%n^VI\b_?Ror`Q-'A
+aSs9bb0/#Qc-H=7rm1eqe(*%&r&k-G4[)(.56*nA;Z'Dj;?0Ye;ZCS4C]A/LC&VfGBE)TBAcH<?
+A,Ba6@JXC1?i"1/@JjU7A,g*=AK,5oB4tsmC2.O"Ci+'-DfB]:F*)MHGB\:XH@,Yklr-NGS=Z@G
+TqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_(`Q$!?b0/&Td*^:keCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`noDX=@Jc>`MJ,~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nkJZDn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\p"KH!rn7FM
+VPa'bqPa=ko!o4>Um&?8J:WN:P*_oE](`c6\,a#%[e-uu[/RK0[K*`0[K*f2[f!W6\GE]6\Gs,4
+\GEc2])T><])&r7\,Wl:\,3]6\c982\c989]DT>A^&PhF^\GVB_>;%D_uI[R`W*sUa8EsVa8<p]
+ai_cLbfp%1!7(2^s3UenrmLbo"4YlPf)F;!f`'S"gA]k,g]610h>lI4huMa4iqqa9jSn9@k5XTG
+kiq@2lMp2Mm/QGUmdKW6nG_t\oCV_LrV6Bg!W2f7s$?DBf#l%Q_o00jXJ_tkT:;=?dDil/['Hoq
+K#>p\af1&kXH6qSPE_/lP*(ojOcYWaO,]0ZNfK6cPEhDrWg/j\rk&0@b5_@#qiLlAo=k:@oY:=>
+s1eSO!c;airbMOK!,;CFs(D@Dr+5n=raYb5nmVB(raYt=ral+As(D@Fs(N?cCMRa'DJjB3EH-#?
+FEMbNGBnL\I!pJDs6RNhS=Z@GTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_(`Q$!?b0/&TcdC1jeCN7(
+g=tE=hVd>Oj5]7`k32'olKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJc>`MJ,~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nk\fFn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\SXoAB!1ie8
+pk&ErnrOEDHuk$TBl%^2G^Y1!Nf]<_rJp`8r/Lc<nW*L+qi(Q7rf6]3rJ^`8rf6r:!0$Z3#*+\&
+NfK*Yq2YK9qN1-+plPB6qiLf>plP<6qN(c@P*5g,q2kH8rK@)@rK@)@s-!DGqNClBr0%)Ds-3PI
+r072Grg*MLrKdAJqO%;Nr0[MPs-`qWqO@PVr1*YTrLWqZrLiqZ!huHapS7baqPF4hrhoaori#mt
+rMfgsr2Th!rN6+&!3cC)rNH7*s0;R/s0Vg6!4Mj8$+ROV]"5Pf^;%G^_&^D1_o0L4`Q#s=aN;TI
+bK\;Uc-=P[cd:"bd*L(crmD,%e^`7&f\,!5g]#tch;7#1\uqj!R[0/!N.le1I<TgUG'04;OGo$P
+KlV$mQ^EnaC3b/A8T&B^Ci!s)D/=',DJf>f$>sd"DK'Q8E.DqJqi(T7b5VHZqJZ:Ls,m;Brf?f6
+r/^l>rfR5Dr/q"s!c;airbMOK!,;CFs(D@Dr+5n=raYb5nmVB(raYt=ral+As(D@Fs(N?cCMRa'
+DJjB3EH-#?FEMbNGBnL\I!pJDs8J,KO$oM0T:hmQUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4aN2NI
+c-FY_daZdtf@\g3gtgiFi8WeWjlY^hl07L"m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$!<7Q~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nkJZDn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\r_EMjpe_#f
+r_N&Yr(d/cr)`Sms$-lW5sn".7Rp!A:&[rZ:B+,i;#!fd;#F2h;#O2b;"d]_:B+,h;#O/i:ARcb
+:B+&f:B+,g;#=,i:]O;j:]O;i:B+,d:B+&f9_V9]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#YqbdAi
+s%iPh"&D`i:\dcb:\moa;>3ua;ZK_p;>X8h;u]bq;>sJn;u]hm;ZKen<<-(u<V]\q<rcA$<rc;!
+=8l>%=o;J$>Pqb(?2\+0?iOI4?iFI5@K0g8A-6CTAnV!Srb2@IrbMFJ"`8-pDfB^qErL,CFE;PG
+F`hkOG^4RZH$O^^I!]gB>ut!"9h7`@69dRq4?>M`3D2q66ps@+6U*t.7RB3t3&WH43'0/^2`L[p
+rAb<G3BB8c4Zkkj5X7q-6Mje+<N`L.Yck77Z*L^C['mEP\[oDc]tM.o^VI\&_Sa=2a8O'baiMTH
+bKS2TcMc)hci_\De^jU\!'^BFs#pEIrDWGgrDE&^s)%mTCi')ds(VOJrFl4Ds(;1?s()+=q-ro'
+qI9G6s()+?s(;:Ds(MFH)/<r&Ci+'-DfB]9EcZ>FG'A.UH?sseIfKH7;ad.IT:hmQUo(&hWiW>+
+Yd1UC[^WfY]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g3gtgiFi8WeWjlY^hl07L"m-X60n*olHncA@S
+rq-?dp\4[^s7u]kr;6HjrVcBfJcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Igp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f1fgA[rJVY6qa
+W;iji\c92>[g]Z_Y^1_JLlRUaTW#<p\brr;\+[64\$i`QpU:"-!4;X2n[/;'qR-C3ppU43pU:"/
+rj_g6rj`!=osjk/pq$L9qmuX6r3u^7!4Vj8rOMs>n[\\2pq-I:s1SHHrP/-Cr5&6Hpr!-MrPefV
+r5\]Ss2Y#Xs2b;abPo`bblH&[cN;J@dJhSmdfItKrmq,$qq1r%ptGc&s4dV1rnd\4s53t;ioBsr
+qW%P9s5jFHkih:0l3ckDm-X3.mdKW6nc&(]oCV_MrqHKhrqZZmrlG*pnD;O6aMu!.\$2j0VP0WO
+R[_L9]<nlKXbjTpda,4jOfs+U>\\[\H%_';P)k]cNfK1uNXq89PGkI[X-Am:Q^ODV]=Q)`qN1W;
+pqQjCotLL@r4i0F!P`RPDZ=PRD#J,NC2%D\B`D`FB)H6>AGp$(@fBm:AGp*>AcQKCB`DcLC27U$
+D>nDdDfKc;F*)MHG'A1VH@($fIXltKm(bu[T:qsRUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4a2lEH
+c-FY_daZdtf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBf
+JcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Oip@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f0iSb&BOSbRj1
+K)C8mOT1@ONF@ENBkqX1G^P*sNKB5"Nr"h7NW>.;NW>.8Nr+h8N!>3!N/`gWNqJD1N;eh9Nr=q;
+N;/D4NW>(<NrP+8NrP19OReG4OT(=9OSk19OT(C;OSP%8O91Q-P5^U>OSY+<P5LI@P5LIBP5gaB
+P5gaDP5gaFPQ6pFPl?sIQMm0KQMd*GR/`TOQirhGR[]f>SGJfUT)5/ZT_P2^U8+IVUB%+cV#[Cl
+Vu<RoW;rsrW;rsqWrT7#Xno4!Y6(r5Z2V$4Za@*I[C6%C*OrYj]">Yi^V@S#_8=(,_o0O5`l?'?
+aNDZKbK\91c2Q#nd*L(ccd:&<dRr$>e^rF*g=k<9gt^`<_R6;6S!TG%NJW@?I=-6]G'.nmP)bKW
+L4XB&LRXZ`H#S7?=[c(k6<dr5D/3s*DJa9-Chmg'Df0H3If=j$EcZ>FG'EqFaSu6Xpi$1MrK7)@
+s,Zo7r/^i=s,m>ErK.(urbhaQ!,VUL!buF`rFl4Ds(;1?rabt;lXKj'rabt=s(27Drb2=G"DV^f
+Ci0/h'5ql1EcZ>EF`qtRH$XgbI=?]ss8J,KO$fM2TqS6WVPgDnXKA\1ZEpsI\%0)_]t_A"_o9X9
+aND]NcHjndeC<($f\5'7h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6Nl
+rUg)?s+11Ms*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Igp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f1u:]F8e;#jGk
+:[UsT:B+,c=8Z+u<=Dhj6pX+,6qBd<8P;eJ:&n)h;#F,h:]aEh;#F2h;#O2c;"[W]:&n)h;#O/i
+:ARcb:&n#f:B"&g;#4&h:]sQj:esmc:B+,d:B+&f9_V9]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#Y
+qbdAis%iPh"A_ij:J^g^r_NAeq,-obq,78kr_`PjqbmPo;,R<jr_rhrq,@2k!*8qrqH!Vt!*K2$
+!*9#!r`K2'r*&u%r*92+r*KD1s'G_4s'Yk8s'bt<rFGq?s(D4Bs(MIJr+l7I"`8-pDfKdrErU1]
+FE@G'"Eem2GBj%2)gZXB@Tuf/9hS&G6pX%"4Zb_c3&jN$7RKO.5Q4"g7moO#3&r]@*[WKk0/PUH
+3&`iY3BB,Z3]T;#4UFeR8P2986UO:2r`0-&Xfei+Y8jdOZ*L^C[C3NR]"5Md]tV4q^VI\&_Sa=3
+a2l="a9Kc/bKS2TcMl,od*^7he(*(C4o/+O;ZBVa;?1Y7DZ=PRD#J,NC2%D\B`D`FB)H6>AGp$(
+@fBm:AGp*>AcQKCB`DcLC27U$D>nDdDfKc;F*)MHG'A1VH@($fIXltKlr-9CT:qsRUo(&hWiW>+
+Yd1UC[^WfY]Y2(q_Sa@4a2lEHc-FY_daZdtf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@S
+rq-?dp\4[^s7uZjr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;=sJNo'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5Cig&TgqVtd4d
+\c'#L\%&rUZu;dfI"I06OdM`=Zhh61\,a#0[K*`0[f!N5[/@?$[/RK&[f<i3[f!W5\GE]6\Gs,4
+\GEc3])K8;])&r7\,Wl:\,3]6\c982\c989]DT>A^&PhF^\GVB_>;%D_u@UR`W*sUa8<mUa8<pZ
+ai_g+bl,cdcL]?^d/MGmdf%YpeGe%ufDO;$g%a;#gBQHhh;7#Ghu;R0iqqa9jSn9@k5XTGkiq@2
+l2p;<m/HAUmdKW6nF?MK!qZ'XrV6Bg!rMrqbPt--kLRhsa25[)Z)ah$UnF6IRa]9i\[AZFPD6s!
+bfHZ:S=uEXEck-%JVo7[:kaX^P*VZ0U7b=\;,h8.WiD2GPa@`)SXuUMa8c1#qiLf>s1nBDrkA-A
+s1\EGrP8GP!,qgR!c;airG)ILBkdNZrb)7Cqdo_:qd]G2qd]V9r+5n?s(D=E+DGS*CMRa&D/O60
+E,fl<F*)PJGB\:XH@('gIXls#K7rX-8"ZKKUSOcbWN*&%YHY==['mHS]"G_k^r"".`Q-'BbK\>Y
+dF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#
+s*t~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;tT\Po'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5BlSb&BOSH>=6
+KCXWhKCt<<O-#H_NF@9IBPVU0G^FspN0!ptqN(T8s,Z]1r/LZ6"cJ=uNK&tjNW"h8NW+t0NW5"=
+NW+t<NV\\8O84n.NrY:@O8+h7O8=t;Onb%6Ont.@Ockn,Onk+8Oo:I@Oo:I@OoLUEPPUIAPPp[E
+PQ$gHPPpaFQ2[*JQi*0JQhd!KRJW?SR@9V6S+W<JSc,/XTDkMYU&C_[U]7.dV>mFlVuEXjWW0!r
+WrT7"Xo#:"YQ(j,Z2V$3Za@*I[f*ZS\@K/]]"G_k^VI\%_SX4.`5KX6`lH-@ai_fMrlkAds3LPg
+"jtcHe'uqIf)aOXrnC'#bdssPS=,b,OGnpGJ:2fhFEM_pP`C`[L5'hhOHu/nI;3nIECEi.6s3r2
+Ak,@%Anu:(F`r"S7nH3E>(;'RE,fo?Fa&%TH@*^4s).aQ!,hdSs-!>Cr/^o>pQ#04r/gl>s)7sV
+rGD[RCi'&c!buF`rFl1Cs(;.>rFGe8q-s52rabq<s(;:Drb*KiC2.O"Ci!s+DJsK6EH6,BF`qtQ
+G^=[_I=6QpJ:`E,OHApl8"ZKKUSOcbWN*&%YHY==['mHS]"G_k^r"".`Q-'BbK\>YdF-Lnf%8R.
+g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#s*t~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;=sJNo'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5D":B45e;#jGj
+:[h*R:A7if<X;])5=%P#6UO?B7fc4VnkK6^:f.$brD<AgrD<Jhq,$ub!)WMfqb@,er_W;ar([5d
+r_EGgr_WGg"].uj:f'sc:B+,d:B+&f9__?]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#YqbdAis%iPh
+!)NSj!)NDcs%iGeqGHubqG[Dlr_`Pjr)3Yp;,R9is&8qsq,78mqGdMrrDiYoqcEeurE&r"s&o8'
+r*0)(r*B8-s'Pe4s'Pb5s'Yq;A,Tp?AS,Rfqe5tC%VfcpC2@[$Ci!s*DJjE5rc7pXrcJ0`s*"Hf
+rHUbKAR/>8:/+>N6:3t#4$>Vc3&jT&7mo[25XRk+77BI'3B/iL*[rTl/2B+D2DR-K3]fMi5X[t!
+2`Nob91hf?5sds<6jH.N7]WVlXfhW+'<naHZEpsH[^WfY]">Vg^:q@t_>_:Q_o9Xp`sTo.aN;QH
+bKS2TcMl,nd*^:ie(44Us&A_kku.P#!,qgR!c;airG)ILBkdNZrb)7Cqdo_:qd]G2qd]V9r+5n?
+s(D=E+DGS*CMRa&D/O60E,fl<F*)PJGB\:XH@('gIXls#K7rVj8"ZKKUSOcbWN*&%YHY==['mHS
+]"G_k^r"".`Q-'BbK\>YdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojc
+q#C0iqY^6ir;HTcrdk*#s*t~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;=sJOo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcS2agAfjmW;`^p
+W;a:,\bEW6[g]Z]T:1+WLPq7ZSYr^h\c'&<\+d<6\$i`Q[J73.[K!W3[ILX&[ICX)\+mE0\,No6
+\,Ef:\b*E.\bWi9\bs&7\GWi9[K*f6\G`u<](*?2](io8]`5\F^AYhA_#2%F_Y:tJ`;[aT`r3sT
+`r=$Ua9B].bKJ,RrQP>fo?[H`s3^horR1brrmq)#qq1r%ptGc&s4d\3hVS7hs53n9qVqD4!9F+?
+#3P+3kih9qrp'OMrTsaUn*fc8rpg0_o_%tWq#C0lqu$H;s%)\=dE9MK^r3[dX/;hjSsu4<cbd?%
+ZEgWmKWiVE[\&\cIs#%3Int?ENCm*#KSknWS=QCH:f:.j<L0VaWf`O2R$aA7Sti!us8J)WO8tF?
+_"YVB^AG\E^A5MI^i=@5Df>Vms)%dPrbMOKs(VCEs(D=CqITM6rF>Y6qdoe>s(D:D,ACn-CMRa&
+D/O60E,fl<F*)MHG'A1VH?sseI=HcuJqJ`2L@2kWTh;)UVPgDnXKA\1ZEppH\%0)_]t_A"_o0O7
+aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rU^#>s+13#~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcQ$'Sb&BOSc>5C
+KCb3)Nsq"UH?s4>E,g&IItN^YNr+n9NrG+;NW>.8Nr+h8N;nh9N;nk;NrG"<N;/D3N;\b9Nq/20
+NW>(<NW>(7NrP1:OR\A3OT(=9OSk19OT1I;OSP%8O91Q-P5^U>OSY+;P5UO@P5UOCP5^[BP5^[D
+P5^[FPlHsFPlI$IQN!6KQMd*GR/`TPQiNQRRK/iRS,f,XSGSlUT)>5[T_G,]U8+IVUB%+cV#[Ck
+VuEXpW;rsrW;rsqWrT7"Xo#:"YQ(j,Z2_*5Za@*I[C6%C&@f9]]"5Sh^VIY$_8=(,`5MYo"NJL'
+aNFM*rlkDe!m]-<rQkVld*_j@s3sorf@S[.g=t2q[]5shQ^3_oM2$V2I!KjWG''+7Nf/[JK5tg_
+QB[&JE.;=t7SdAW>@_G687Q7GDK0fCG^2eN7nl["J:N2iE,p&DGBe@YHc?$aDZ+JSDK#E8s,m2?
+s,Zu9r/^c;rK7,"!cW'rrbhaQs(q[Ms(_RJr+Q+Crau"<qIKP7q.0A6s(;:DrFdHjC2.O"Ci!s+
+DJsK6EH6,BFEMbNG^4U]I!pEmJ:W<)KSG5CmuRLB8u&2ZVl?\tXfnt7Za@0M\[oGe^VI_(`5Td<
+b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcC6~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;"XANo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcTE9!)WJg!)WPg
+k>)"WpK.>p$WTAV6UF"*7Rp!?9(GaV;#F,f;#=,g;#X8e:]X?gr(d;hqG6u`!`)WhohYK\!_lEb
+r_NJhqG@Dm:JXe`:]*rf:\dcc:&[i]:&[oZ:B=3dpJ1<Un5'*^peUrdr_EJhm83[Ws%r\jrD<Mi
+s%i\kq+gobqG@#cpJUfc!)ienqbm>js&&horDNVn!*&_lqGdSt<EB*!q,[Ao!*9&"rE0)&r*&u%
+r*9/*rE]J2ra,V3s'Yk8s'bt<rF?"AAnPcUBF&<cBPD0qC27S`C]8,RD/O61EH1tur,_jZs)q=b
+G^4RXBjt=J;bKbR7R]X.5!;%j3&`ch84Q!75sRe(6UX:*3&`fP-6OTg/hf.B0f1[D3BKAf5sdpu
+2`X&b7nZEF5=7b)77BU57Ra;VX/rH%Y5b[=Yd(I=['d<N\@K2^]=bhk^;%J"rk];d`Q#p<`lH-@
+aiV]Kbg+M[d*Vd>s3^qsebD<)<;0>`;Z9Vp;Z9Ms;K6\qDf>Vms)%dPrbMOKs(VCEs(D=CqITM6
+rF>Y6qdoe>s(D:D,ACn-CMRa&D/O60E,fl<F*)MHG'A1VH?sseI=HcuJqJ`2L@/"?Th;)UVPgDn
+XKA\1ZEppH\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrU^#>s+13#~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsOSd`'gAfh+f^Pj8
+VZ<[g\Gs#J[^W\]R^[WpLPq:ZSYWIf\bru;[fNqHpU:+0pU:"-s0Va4s0Md4o<eJ(n[AG+qR-F6
+[f!W6\GE]6\Gs,3\GEc3])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PB_>;%C_uI[S
+`W!mTa8<mVa8<p]ai_cLbfp%1!7(2^s3UenrmLbo!S#[!f)OA!f`0Y"gA]h/gtgfCrnmb6!9*b5
+r8[h<roF.BroX@Hl0834!UK+NmJlVSmfDqJrpg0_o_%tXp]^Kiqu$Bkci6T7lJ'S(a25[)Z`U7(
+V4X?LR[_I7\[8TFXbjj6aiCBOVQ,_aEck'!Jr32u:kFI`PFJ):T28E_<E,fpWi;t^Q'[f'S=cFK
+Tu@!0O8P(>^\GV@^\bbE^\tnB^Ar<REW:"XDuOYSD?"GOC]A/KC&M`EBDlH,Ac?<ABDlNDB`MoI
+C]A2mD/O60E,]f:EcZ>FG'A.TH$XgbI=?ZrJV&N-L5(M@n%_DeUSOcbWN*&%YHY==['mHS]"G_k
+^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6nac8Bo^r.U!quB_rqQNh
+s8)Wirqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsORSe?Sc5/BKCt?+
+Nt.22O'd*jB5;F)GBnXiM#NG3O8b1<O7SD.NW+n:MuSb7N<5&uN;/D3N;\b9Nq88,NW>(7NrP1:
+OR\A3OT(=9OSk19OT1I;OSP%8O91Q-P5^U>OSY+;P5UO@P5UOCP5^[BP5^[DP5^[FPlHsFPlI$I
+QN!6KQMd*GR/`TPR/`TSRK/iLSGSlUT)5/ZT_P2_U8+HWpS7baqPF4hrhoaori#mtrMfgsr2Th!
+rN5t"r3$1+Z*F;6"LGJB[C,qA#.V4S]">YirkJWP_SX4i`;dgV`r='XbQ#fcc2Q&fciVP@dJhSo
+e.pQdf@ej(]<S0'R[B5!N/*%8I=$-[rcC&aOH#*OKn=6&OctoUGC"OK79!>U=^l#184I0'D/aT?
+G^2eM7nl^,J:W9%E,]f<G'J:WH@*U1rGMUQs)%h!plbQ:s,Zu9r/^c;rfI2$rc.sWs)7mSs)%dP
+rbMOKrb;=Erb)1Al"0j+s(D:Ds(MIJrbMOM+)Pn5DfBZ8EH6,BF`qtQG^4U^I!pHnJ:W<)KSG5;
+M=6KpU8+N]Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(sm
+lKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<gqu6NlrU^#>s+:9$~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsOShlS;#X;l;#O8e
+:ZtOR:\.Ze<XV,X6pa1-77Tj=8PT+X!)<>crD<DfrD<Dhr)!AgqG@/e"AV`g:f.!arD!Ji:/=\_
+ohYBYr_NJhqG@Dm:JXe`:]4&g:\dcc:&[i]:&[oZ:B=3dpJ1<Uk"l%Rr_EJhm83[Ws%r\jrD<Mi
+s%i\kq+gobqG@#cpJUfc!)ibmr)3Dj!`DlmrDNYos&Aemr)Ebu<W6%u<V]\l<rc;#=8Z/#=o2D%
+>6.u5r*9/*q-O&-s'Yk8!b,YLrF?%BB4kmlr+H7JC2.O!CAr#JC^"ZnDK'T8rc7sYrcJ-_s*.mi
+AmSS;9h\/K6ps7)4?P\e3]K)i7n#d25WqG%6UX."4ZG;P*@WHj/M]4<2)@-M3]oVl6:3^k3'KN"
+91_]I5sn"+6q'L377O2RWiN5&Xfee.Y-5%5Z*CXC[C3RD])TAd]Y2%n^VI\&_Sa:0`Q#p<a2lBF
+bKJ,ScHjhad*^4fdaHV>4TSM^q,I)epJUofr_WZ9rc.sWs)7mSs)%dPrbMOKrb;=Erb)1Al"0j+
+s(D:Ds(MIJrbMOM+)Pn5DfBZ8EH6,BF`qtQG^4U^I!pHnJ:W<)KSG5;M=4A4U8+N]Vl?\tXfnt7
+Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCV\S
+o`Fj]p\ssfq>^<gqu6NlrU^#>s+:9$~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOo*i(gAfk+f_;?9
+VuN^f\Gs#I[C48F]R#-\M34$kUTa[-r4)d9pU113[^EO;[f*W5[/IE4ZiIH,Zi[YB[/@?%[f3c4
+[edK4\GE]6\Gs,4\G<]2])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PB_>;%C_uI[R
+`W*sUa8<mVa8<sXaT9Q-rlkAds3C5^s3Uens3gkps4%&!rn%&"s4R2$s4dS/!o;_irnde8iSjXm
+r8[h<rT4%As60LIrosLMr9XXTn*fc8rUL$]p%J@Z"T&#mr;G"B8b;#lb/hW=_Rd"QWMH;]SXZ(q
+a1esgZ`oUI^WOd5U5#k2HsC30:3hPQ:Jc[tMNsKuS=`PT;,pSmWMunrPEhH#Q^F;7TVJ7!s87rW
+OScfi_"kb9^AYeKFE;JCrc.sWs)7mSs)%dPrG2FJs(V@Drb)+?ok"&5rb)1Cs(VLJrbMOM!,_^Q
++)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:F\PUSOcbWN*&%YHY:<['mHS]"G_k^qmn+
+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhrqcQi
+rqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOmnn@Sc,)AKCt<=
+OcYZbO/R8XB527%Fa8@eLlRMmO8b1;O7\J/NW4t:MuSb7NW+n3NW4t8N<#"0NV\Y8NV\\7O8=t+
+O8"b6O8=t<OnXt4Oo(4AOckn,Onk+8Oo1C@Oo1C@OoLUDPPUIBPPp[DPQ-mIPPg[FQ2R$JQi*0I
+Qhm*LRJW?SR@9S6S+W<JSc,/XTDkMYU&C_ZUB%+cV#[CkVuEXpW;rssWW0!qWrT7"Xo#:"YQ(j,
+Z2_-0ZNISB[C6%Cs1&*>#.qO^^VIY$rkeWPs2=uXrl>)]rlb;brltJhqp>Ajs3^tteCFQM9#J';
+URRU8OH5<QJpr)oGBJ%MR?NYhLk^S)DiL!FLjNleC0a5$>shh-BgtU&A86"$F`r%%84QBKIXm!#
+IrKCIF*)SMH$Xd`_uKXPrbq[rqi^r@s,d5@q2Y<4rf@8FFE;JCrc.sWs)7mSs)%dPrG2FJs(V@D
+rb)+?ok"&5rb)1Cs(VLJrbMOM!,_^Q+)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:Drt
+USOcbWN*&%YHY:<['mHS]"G_k^qmn+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*
+mdKW6nac8BoCW%T!quB_rqQNhrqcQirqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOo.uT;#X>i;#!iN
+:B+,\=8l5-5X@_&6:41384cPS:&n#c:An#f:]4,e;>a8j:\mod:BXEg:Jama:]4#j9hnJ\ohY?X
+s%iMgr)*Jjs%`\m:J^pas%iGc!)<GdpJ(Z_nkT9]:\RWU:ZbIR:]=,h:[M!U;>sDl:]+#k:Jak`
+peLibqG?ubpJUids&/hnqbm>j!`DlmrDNVn!*&bmr)Ebu<W,tt<VTVm<rc;#=8uA)=]ed/qc`o%
+qcs&)q-O).ra>b7s'u"<"_D:YB4u#XBE2cGC'&0cCAr#KD#\APD?4]rrc7pXs)\6`rcT&l@9ci3
+9M7lE6UF"#4$>_g3&jN$7n*DC9g_356UEsu3B/`B*@39h0JtjK1Gh'Q3^#_o6T6q`5!DY58P2Q@
+6:4./7R]^577O2RVlHbtXK8P+XKAY/Yd(I>['d<N\%0)]]=biV^'_Wj_8=(,_o0O6a8X-aai_iP
+c-FZ4ci_\DdQ[Ljs&J\js&8nrr)<Sms&8npr)3_rFE;JCrc.sWs)7mSs)%dPrG2FJs(V@Drb)+?
+ok"&5rb)1Cs(VLJrbMOM!,_^Q+)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:Bh8USOcb
+WN*&%YHY:<['mHS]"G_k^qmn+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6
+nac8BoCW%T!quB_rqQNhrqcQirqu`noDX=@K)^?~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5Er)gAfk*f`.o8
+VuO7&\Gs&;\Gs#K[C3f7]R,0[M3!pjUTCo7r4)a8qR-F4[f*W.[f3]5[/RK5[/[K,Zi[YB[/@?%
+[f3c4[emQ4\GE]6\Gs,4\G<]2])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PA_>;%D
+_uI[R`W*sUa8<mVa8<sXaT9Q-rlk>c!7(2^s3UenrmLbo!7_#!rn%&"s4R2$s4dS/s4m\3rnmb6
+!9*b5rT!q=rT4"@s6'IIrosOMm/?>Omf2bUnG_t\oCV_MrqHWlqYU3hdJlf)hTj3``P9'nYH"Fq
+URdpDS^#$_['?p>OG'dZb-IOsX`\8iCg1t2M/?'cK8>YRS"64E;c-OoN2ikVW0<I3Q^F/2St;XL
+UV[!.O8k=;^\knF^Au(J^[f)=^]&?TF8p:[EW9tXDuFSRD?"GNC]8)KC&2N?BD?*:BDZBAC&_rI
+C]A2ND>nDsDfB]9EcZ>EF`qtQG^4U]I!pEmJ:N6(K8#&8Ll%"JNK0(j^d"WlVl?\tXfen5Za@0M
+\[oGe^V@V%`5Td<aihoRcd:(geCE1&g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu-HkrUg)?s+:9$~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5CaBSH#/XSEPV!
+OT(CBO:I;3NHBqgC27d1H@1=!Nr+n;Nr>">OH9'pq2GB5rJU]7rf-l8pl5<4r/C]:nr<L+!0-i8
+rf?o;mZ7+(r/^]9s,m&;plYK9s,m>ErfQu;qiUf>rK7#@rK7)Bs-*;Bs-*ADs-*JIrfd;Frg!GJ
+rg3SLr0R8Is-`bO!1EhT!1WYOqORSVqk*n]pS%P[pS._aq5"(grMTXnri#mtri,ptql9^urN5q!
+rN?4*riuL/"gbSC[C*IA[g'@Q\\#Jf^AbqH_Z%LR`W*sWa8jB^bPo`cblZ2:chu/idJhSoe.L6Z
+^9a`0R[B;#NJN7=I=6Barc:#cOcG9SLOsSaKp.[OGAqt8:/+SW=C>cB7n.$$DJsW?G]u_K9h]JU
+JUr;iEH-&AG'A4UH?t"Us86d7DuPjrOo1CAOoCI@O8Ft4NrY:@FT6F^ErL(YDuahTDZ=SRD#J/K
+CB&#EB_uH;B)H<=B`;`GCAr#KC]J>ODBWq;EH-#?FEDYKGB\:WH?sseI=HctJqJ]0L51SAMN!OT
+nW,o1VPgDnXKAY0Z*UgG\%0)_]t_=u_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07L"
+m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVcBfJcC?%J,~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5J)U;#X;l;"IKH
+:B+Ak=8u>!=8u;36U4"+5XRk+84Z<F:JOVYr([5frD<Ggr_WJhqbR8gq,%&ds%WVk:f-s`r_EJf
+!_uNfohYBYr_NDfr)!Yp:JXe`:J^pas%iJds%WJdpJ(Z_nkT9]:\RWU:ZbIR:]=,h:[CpU;>sDl
+:]+#k:Jak`peLibqG?ubpJUfc!)ienqbm>js&&hor)3Pn!*&bm!*&nsrDir#<rQ+o<r5r%<``@)
+=BYW*qHEl&!F/k,>l7n'?N+=3@/j[7A,Tp<B)ZHCB`r*`BP;,XCAr#KC^+ZlD/O92EW1"VF8p>%
+F`D&&>#S6m8Ol0:5X.Fs4?5G_3_;k37R9:(6iKCm5s.1d2D61!.4Zo(2Dm?J2E3i^4[2;&2`Eo`
+7SE_Ps$@;b6q0U66psI48>`8^W2ZesX8]1WXfek2Yd(L>Za@-K\%&u[]">Vg^:q@s^qmn)_o0L4
+`lQ9Db0%oOc-FV\cd:%bd*U1ge,DQ04o87K<;]Yp;Z0Mo;Z'JmFT6F^ErL(YDuahTDZ=SRD#J/K
+CB&#EB_uH;B)H<=B`;`GCAr#KC]J>ODBa"<EH-#?FEDYKGB\:WH?sseI=HctJqJ]0L51SAMN!OT
+O7H46Uo(&hWiW>*Yd(OA[^WfY]Y2(p_8=.0a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?s
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6hr;HTdrdk*$s*t~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*euqq:Vqs4RD(kGRm[
+&%8sSZ]htHIY!<7P*qo?Zi%?4\,*Q1[J.-/[JdK3[K!W6ZhUp-[/dT2[IUd)\,3W1\,Ei5\,No;
+\b3K/\bNc7\c',8\GWi9[K*f5\Gj&=](*?2](io7]E5d\^AYh@_#2%F_YD%K`;R[T`r*mR`rF*V
+a9B].bKJ,RrQP>fo?[E_s3^kprR1esec+/"fDF5#g%X2#g]#t0h;7#fhZD`piVMR4j8\3=jT+HB
+kPscGl2U&Klhp/Mmf2_VnF?MK"7u3Zp\spjq>:*grm^s5o]FcL`lPm3]s"H8UnaTQS=?(n`4E=]
+[',XI\&un$T7a5!G%#07F*rk#:elXuOcu9)TUf"Y<E#foW2Zb\Q2[*SSXuFHTqeF!s8.lW_"b\C
+_">D6^Ai?TFT6C^ErBtZE,T[nDZ=SRD#A)JCAqr1B`DfGCAhoLCi+%gD?4Zprc''$F*)MHG'A.T
+H?spcI=?ZrJV&N-KnbA>M2R=PNfT<co>!_jVl?\tXfen5Za@0M\[oGd^;%M$`5Td<aihoRcHste
+eCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<gqu6NlrU^#>s+C?%~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*euqj[;Ls.0(XkC`>e
+&!)g4NH9hbBkqX/H$t0rN;S_:Nr"h1NqeS6N;\\7N;eh8N;/A4N9lQ"NW>(:NWG3$rf?o;nrEd4
+rf?f8r/^]9s,m)<pQ>B8s,m>ErfQu;qiUf>rK7#@rK7)Bs-*;Bs-*ADs-*JIrfd;Frg!GJrg3PK
+rKm>I!1E_O!1EhT!1WVNqjm\Wqk*k\pn@Y\pS._apn[tfrho^ns/?!uri,ptqlBaur2on"r3$1+
+Z*F;6!OK04[JdT7\-TXV]=bkm^qdec_YqCZ`Q#p<aN2KGbKKn/rltGg!RT0ld/VMmdS/03\?2Qt
+R$NepNJ<%7I!^!YF*)GiOc>3QLP'\dMNj9WG\;G9<_-"m='oQO7RUd!DK']@G]u\K9hg+fJ:W/g
+EH?8FGBnFZH@:1Vs8-^6OT1C@OSt=?P5^UAOSk1=Nq\V7FoHL_Er^7ZE<:)tDuFSRD?"GMC]8)J
+C$010C&VlGCBA<hD>nDRDfG\q+EDOFFEMbNGBeF[H[L6jIt3*%K7nr5LP^kGN/`jYOco<s6`-c\
+WiW>*Yd(OA[^WfY]Y(tn_8=.0a2lBGbg+M\dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,n*fc9
+nac8Bo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*%s*t~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*eur(d;hr_WYlo2"OE
+o2ZB'<``=&5XRk(6U=(/8OuJQ:&I`d:]=2g:]=2g;>O)h:]+#i:Jh!cs%WVk:f-s`r_EJf!)EAd
+s%`MgpeLfar)!8f"].uj:f'sc:B+,d:B+&f9_V9]:@h9]:&n)a:@h9D;#a>j:&n)V;#=,i;#a>h
+:]sQj:esm_:B"&c;#4&`;Ya5k;Z0Jj;YsAo;Gg<i;ZB\q<;KMn<;]bq<WZ?'<rQ+o<r?#*<``@)
+=BSd/=BYN)r`f2'r*B,)ra5\5!F]I:A,^$=B)cKJBPD0oBk_8XCAquSChmj(D/O92EW1"VF%:=f
+@Tuo39M@rE6pj4%4Ztke3]T2l84H$65s@Y&6UO.%3B/rS,9\Eh/2B+E2D[6N4?Yel6q'$n5!;S3
+8P2QA6UF1/77@,D6:a\EV5C/hW2ZesX/rD)Xfek2Yd(L>Za@-K\@B)\]">Vg^:q@t^qmk(_Sa=3
+a2lBEb08)Sc-FSZcd:%bd*U1hq`b$\q,R,fs&Jtrr_rhrr_rhpr_ri>rcJ0]!-8$X!cW'rrGMXP
+s(qUKrbDFHk@jm0rbDCI!c2^jrb_aTE;ji"EcZ>EF`qtQG^=[_I!pHnJ:W<)KS>/9M2@.LNK0'^
+P4MU>VPgDnXKAY0Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeadaZguf@em4gtgiFi8WeWjlY^hl07L!
+m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBjrVc?eJcCB&J,~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb:A"/Lo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$o@a&qs4RA'ri#.\
+o!\Y-[f3ZBOKs.YJr#DJQ^jqWrODj9qmQ@/pU:+0r3ZL3s0Vd3ppC(/!4;X2o!\J*r3lI2rODa6
+rO;j<oXOb.pq$F7rOVg7r3u^7!4Vg7rODp>n[\\2pq-F9!kl=^rP/*Br5&6Hpr!*Lrl+lVrQ"cS
+s2Y#X"j+p0bKS3/blH&[ci;AldJqYne,Rqsf)O@uf`0Y"g&Tn,h#H11hYuF4huMa3ir.m;jSe3?
+k5OQDkl9lKlKdd6mJlVSn,MnUncSOWp\4[^"8_rorRLoYmGQ:3`PfO(\$)g0USFENrgGde_Rd+Z
+ZEKLJ^r+=+Tnfq6Ip-B0:O7hU:Jlh#NK]m&TV#+Z<E,NfW2Z#FQ'Rc(St;UMUSO^"s8A#W_#V:H
+^\kn>^\5AEGBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8C&VlGC]A5ND>nDRDfG\q,][sJ
+FEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M$X6`6o`X0&P/Z*UgG\%0&]]Y;.s_SjF5
+aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0hqY^6i
+r;HTcrdk*%s*t~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb:A"/Lo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$opbuOr13_Tre0Ti
+nrNm4O8b.IEIqe9C2e6;H[g^*ooJg,pl530s,?u;qi(?1!0$9(o8`a0qN19/!0I2@pQ5<6qN1`>
+plP64r/gr@s-!ADplPB8r0%#@r0%#@rf[;FqNClBr0%)DrfmGHr075HrKdGLr0I8IqNq8Nqj@DO
+s-`qWoUPcKrLWnYs.K+[rM'%]!2TFe!2fanrM]^p!36$t!35pss/c+"r3$"%!3lI-s0D[2rO)U5
+$+ROV]"G_k^VIYa_>qLP`;dg^a2l?Db0%oNrlkAds3Chpcd0tbrm<mWdD*#eTpqC4O,\sKJ:;lk
+G&q\FF-ViHM2?t=F`*5!ObS0sKPFd[9O0qgASO_)@qBIpFEVqR84H?KH2`=&EH#o<FEVnSH?ssd
+I_Pg^D>nGOOSt7>OT1I@P5g[@OSk1>Nqn_=GBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8
+C&VlGC]A5ND>nDRDfG\q,][sJFEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M$'6`6o`
+X0&P/Z*UgG\%0&]]Y;.s_SjF5aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*%s*t~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb;"XANo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$:J^g`mSE.DmoKHg
+!^8q:r^$fV7Rp$B9hkR]s%iVjr(m>hqbcu^r(m;es%rJds%`Pf!)EAds%`MgpeLibqb[2fs%r\j
+!DlSi:&n)c:B+&f9_V9]:@h9]:&n)`:@q?E;#a>j:&n)V;#=,i;#a>h:]O;j:]O;d:B+,d;#4&`
+;Ya5k;Z0Ji;Z'Gp;Gg<i;Z9Sp<;KPn<;fhr<rZ5$<rQ+o<r5r(<``@)=]nj/=oMS)>Q.h+>PMJ%
+?2.b*?NjhG@:E_VrFGq?#\RgbBkV0oBPI?Yr+cRSD/F00E,fo=rc<O1EbA]_;c6:]7RKO/5Wq7m
+3]]5\2b-G/76s1'6UF.(5s@=h3AE!(,V:T%1c[HL1c[WZ5!VP(2`Eoa8kMZI5XRk+77B[76q'R;
+8Yr5ZVP^8iW2ZetXK8P,Xfek2Yd(L>ZaI3M\@B)\]">Vg^:h7q^qmk(_Sa@5aN4D'#Kt?8bKS5U
+cMYuid*gA@55\IW<VKJk<W#hr;uTbr;uTYtGBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8
+C&VlGC]A5ND>nDRDfG\q,][sJFEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M#@6`6o`
+X0&P/Z*UgG\%0&]]Y;.s_SjF5aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*%s*t~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY9_@rIo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^.-pr7_2(r7LnFm\fli
+qR-sC\$WQLDl@r/J;0#EQ(4\Rrj_s:r3lF/pU:+0r3ZL3!4;^2q6]q)o!\G)rO2R3qmcR5rO;j<
+oXOb.pq$F7rOVg7r3u^7!4Vg7rODp>n[\\2pq-F9!58BGrkJ0BrPA?Ipr!*Lrl+lVr5\]Ss2Y#X
+s2b;abPo`bc2Z)\ci;AldJhSmdf@nsf)O@uf`0Y!gATe.h;7#fhZD`piVMR3j8J*>k5OQDkl9lI
+lMg,ImJlVSmfDqJrpp*]!VZ9ep]UEir;HWIrtb@kfZ_CU^VmdgX/MhgTpqO>S'&[^\GicgXcnRW
+bJq2kLmO?k=\!d3G_:uJ;M'X\PF%i6T28E\<DoirWMl#FQC!r0StMgQUo(j*rK$ils1nKGrP8'?
+pV$WPrceBc!-S6^!crC&rG_mXDf>Pks)%aOqeQ+EoP+5<r+l=Ks)%^P/8oKHEH-#?F*)MHG'A.T
+H$XdaI=6QpJ:W<)KSG5:M2@.LNK9-_P*;/sQ^IK^6E-ucXfen5Za@0M\@K5a^;%M$_o9X:aihlP
+cHsteeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVcBf
+JcCB&J,~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY:%\&Jo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^+*6S,]#VSbelRK^OKg
+OSt7>O:[J7NK0!,IqED1D0'lII=d:KO8"\0N<"q8MuS_9NV\UpNUi,-O8=t/NrY:@O8"b7O84n;
+Onb%4Oo1=@OoLUDOnb%8Oo1C@Oo1C?OoLUEPPUIBPPgUDPQ$gGPPpaGQ2HsJQi*0IQhm*LRJW?S
+R@9S6S+W<JSc,/WTDtSYU&C_[UB%+cV>mFmVu<RnW;rssWV`aqXSf4#Xob`.Y5GI'Yl:p-Z2h60
+[J[N6\I6!\]Y;.q^qmn)_o)Jls2P)Zs2Y5_b5TTabl5iecMc)gd/VKeb.+RLSsYh*OH#!GIXHEa
+F`h_HQB@2cLk^V5F`3>*Ob\9uEc,VX4^16U@VJ,!@qB=kF*2_R84c9F97VPDIW9=IFEMhRH?sse
+J%bm\D>TFmO8k=AOo:IBOnk+3NrXG(GQ2gdFo?C`F)l="E<:)tDu=MQD>nAKC]%r>C&D`DC]A5N
+D>e?'DfBZ8EH6,AFEDYKGB\:WH?sseI=?]sJV&N-L5(J?M2R=PO,oEdPEhH#R.cS-WN*#$Y->1;
+['mHR\\#Mg^VRe)`Q$!@bKJ/Ud*^:keCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+C?%~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY9_@rIo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^.PGqG?HQmS<RYpf.f'
+<E).K6:4+*6q'U98PT.Ys%iVjrD3Giqbcu^r(m;e!`)WhpeUobr_3AfqG7,drD3/_s%iPhs%rkp
+;,L0e:]*rf:\dcc:&[i\:&du[:]F/i:\IQU:ZbLR:]=)h:[CpT;?'Jl:]4)i:]=/j:\[]b:\mo`
+;>3ub;u]bo;>a>i;u]_q;>a>l;u]hn;ZKeq<W6&!=8u>#<VTVm<rc;#=8l>0=BSd1>$G37>$G50
+>QA(.>l7n,?3":0?N"47?t!MR@q5LK$>!g]BP;*oBPM6qqeH"DrbV^TE,bess)UqO@pE,59hS&H
+6UF"#4[)%j3B/ui84Q'85=%J#6:4%)4?5>Y0e=:l/1iJ23%m*F2``ua5=7dr2`<lZ91_`I6UF+-
+6q0X66q0^=USRmcs/$%!W2ZesX/rE%XV%_>YHY:;ZF.*L\@B)\]">VfrOiWS^qmn)_o9X9aN;TI
+rQ>8dc-?75rm(VmdeuB*<r,hk<;T\i<!#urGlDpeFoZ[`F96N(ErBtZE,T[mDZ=SQD#8#GC@l6<
+CA_lID#\ANDCf^FE,fl<F)uGFF`qtQG^4U]I!pElJ:N3&K7nu6LP^kGN/`mZOckonQC"!4;aRI`
+X0&P/Z*UgG\%&u\]Y;.s_Sa@4aN;WKc-F\`daZdtf@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9
+o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*%s*t~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nji6>n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$R<rr7_2(qq1M=pS[nt
+rjMX1rj30ADk<ADItEQ>Q'e2C[(-+ErO2L/pU:+0r3QO5[']h=ppBh(o!\G)rO2R3qmcR5rO;j<
+oXOb.q7?L7rOVg7r3u^7q7-C6!4q^2s18!;qn)pBrkABHp;$XCqSN$Frl"cSs2OuWqSrQUr5eo[
+!QrUbbl,cdcL]B]d/VMndf%VueCE.$f@TiNs4R2$!8IM.s4m\3rnmb6!9*e6r8[_:s5s=Ds60LI
+rp0LLrpBjVnF6GJ$hO#_p@n@Wq>1$frn7<An)Da:a2Pg/\#u^.UnjZPR@'Ga^pgYTZ*0IPXKT[f
+\Y=hIQ'GHCG"m.3Le^raK8G_TS=?0J;c$LnWN)qsPE_E"Q^s_@rhI()s,ZulrP8?Gr4r$@p:^TR
+G^043!d8^/rcJ0]s)S'Xs)A!VrGMUOrbV=EphKS>s(q[OrbhaS!-%pWs)KQ0FEDYKGB\:WH?spc
+I=6TqJ:W?*KSG5;M2I4MNK9-_P*;/sQ^F52SG9l^WiN8)Yd(O@[C3TU]=bkm^r"".`lQ6DbK\>Y
+dF-Lnf%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@
+K`?Q~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njr<?n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$O98S,]#VSc##WS+D=-
+KDUc'O8k4LNF7$ZAnl1%FaAIeKoGhgpQ#!-!0$l7s,?u;r/:Z7N9#uiNr4t6OReG4OT(=9OSk18
+OT1I<OS=n8OT1ICP5^U=OSb1<P5UO@P5LIBP5gaBP5gaDP5gaFPl?mFPlI$HQN*<LQMd*GR/`TO
+QiNQRRK/iMSGJfTT)5/ZT_P5ZUA(G_V#$qfVZ3RmW;`drWrB!oX8f9uXT>T,riZ1&riuL/!OK03
+[JdQ<\@K2^]Y4<Zs2"`P!5ncR!li:$rl>2`b0/!-bl>ofcMZ#fcp5@RWM,iKPE1][K7JAuH?F:K
+Ec[J+NJWCDJp23fK9MIPH>.J<CI(*d6<I]/6V19gB5DO0G'QYM7nl^.JUr@NE<gQ-GBnL\I!rU+
+s)%atr/gf:!g&P,r0%#@qiLK3!dT$8rc\EeF`m\*s)\3\rGhjVs)7jRrb_XNpM9P=phTnGrb_XP
+s).mVrc.sY.<BTQF`qtQG^4U]H[L6iIt3'#K7ei3L5:\DMi<XVO-,ThQ'Rc(R[]iBO$'GCXfen5
+Za7'J\@K5a^;%J#_o9X:aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@S
+rq6<b!;HHes7u]kqtpBjrVc?eJcCE'J,~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nk&B@n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$LNDq,$$GpJ1Tdo2Q&q
+5X@e*5X@_(r^[2d9hnGZ:]=2i:]F8g;=dW^:]=)i:Jgd]!)EJe!)EDer_EGgp.kW`rD<Jj"&Mil
+;#=&d:&n)c:B+&f9__?]:@h9]:&n)`:@q?D:]O;j:&n)V;#=,i;#X8h:]O;j:]O;d:B"&c;#4&`
+;Ya5k;Z0Jj;YsAn;Gm?ir_ierqG[DnrDikur`9)#r`/_oqc<i"=',B(s&]8(r`T;+r`T;+pK[Z&
+rE]J0rEfJ1s'Yk9s'u%=%V96aB4tsmBkV6qBkhBsrbD@H!,VXO!cN$src24V?s-H.9h@iC69mdu
+5!:tf2`N`e84>s55s@_(69[\$4?>DY0eF@n/M8Y22_[-K3&s&`5<qUr2`Eo_91hcJ5XIh*6q'O4
+77KhBU8+K[V5C)dVPpGmWiE-!XT,C5Y-5(7ZEgjG[^WcV\[oAark/9E$GO9j_8=+/`l?'?rQ,,`
+bKKn/$-gc@cd:%dd69be<r,hn;uouur)NGi"&jJiGlDmgG'.s,FT6F^ErC"XE;skTDZ4MPD"h`?
+CA;TED#S;NDZ=VTE;jkWE[u3QFEMbNGBeCZH@($fI=HctJV/T.L5(M@MMmFQO,oEdPEhH#R$sM7
+;cENj4K>HaY->1;ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(sml0I^&
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+LE&~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV07ap@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8Qh&i-gA]e&f^Pj9Vtdb$
+[K*`4Zk9XOZYPu>H@:@#NKBHtVm3_?r3lC.pU:+0qR$4-q6]n(o!\G)rO2R3qmcR5rO;j<osjh.
+q7?L7rOVg7r3u^7ppg=6!4q^2s18!;qn)pBrkA?GpV?aDqSN$Frl"cSs2OuWqSrQUr5eo["Nnp2
+bfp%1!7(2^rm:\ms3gho!7h)"!8%&!s4R2$!8IJ-!o;_irnde8iSjXmr8[b;s5s=Droa@HrTjCK
+s6fpUs7$'Zs76Qhp%J.Tq"agcrnIH3qWHY[aMu!7]sF]:V4sWOR[KSd_S!=_Z*:0hL:4q<^oFSs
+X,;F/8U=*RJr!-!:kOUfPan;<r_a;-<)]fqWK`U4QC")4Sti!S\c;\kpqcgBrkJEIp:p@9s*F]j
+!-nHd!d8^/rcJ0]s)S'Xs)A!VqelCMrG:q<rG;LNr,2OQ!-%pWs)KZ3FEDYJG'A.TH$Xd`I!pHn
+J:N6(K8#&7Ll%"IN/`mZOckonQC!u-S"-(Bq7o:sXfen4ZEpsI\@K5a]t_A"_o9U8aND]McHjnc
+e'uq"f@em4h;-uHi8WeXjlY^hl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#:*hqY^6hr;HTcrdk*'
+s*t~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV0:bp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8Q^m`<s.'"Xrg`kTn:^Xj
+plP93%uu^2?[.WDC2@j1G'ngnMu&M/Nq\M5N;\Y9N/`hpN;ne9N9#uiNr4t6OReG6OH5IsOSk17
+O8tF<OS=n8O8tFBP5^U=OSb1<P5UO@P5LIBP5gaBP5^[DP5^[FPl?mFPlI$HQN!6LQMd*FQiNQO
+QirhGR@9W;SGSlTT)5/[T_G/YUA1M`V#$qeV?!OmW;W[qWr8poX8]3uXTYf/Xfei)Y5kg+Z2_-0
+[/RH5[f3`G\@K2^]=bkm^VRb'_Sa:j`;djWa8X0[b5]ZabQ?&7cMZ!^cFL*SSsbn*OH,'HIsZKc
+FE;JCQB7,bLPCD0F)HhmO,JFADgZ5*69SL==^ku17n$p"D/aQ>H:URs:/+B4JUh`ZE,p&EH$=R\
+Hb'1VD>fUpOSY">OHG\(P5CC?OS4b8HN/6jGl;gfG'.s,FT6F^ErC"XE;skRDZ4MOD!u0<D#\AM
+DZ=VTE;jkWE\)9RFEM_LGB\:WH?spcI=?ZrJ:`E+Knb><M2I4MNK9-_P*;/sQ^F52S=ZAKO$ThK
+Y->.9ZaI6O\\#Mf^VI_(`Pom=b0/#ScdC.heCE1&g"P3:h;@/KioB+]k2tmll0@U$m-X60n*ol<
+o(2MGrq-?dp\4[^rqZTjr;6HjrVc?eJcCH(J,~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV0=cp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8QVUEO;#X8g:]aEh;!LjQ
+:A@l_<=_8Z76j+*6psL78P;`P:J^sdr_NPjqbcu^r(m;e!DcPd:]F2g9`Rrc:]=,g:\IQ`:]4,h
+;>j>g:]*rf:\mic:&do]:&[oZ:\.?R:ZYCQ:]=)h:[CpT;?'Jl:\dfe:\[]a:\moa;>3ua;ZK_o
+;>X8h;u0Dk;ZKem;ZKeq<W?,!=8u>#<VTVm<rc;#=8lA&=9hu4>$G37>$Lo0!+#P.rETD.q-O&-
+s'Q7D@U`hWA7T7_AnG^irb2@Irb2CJC&VlECHlWPD/O92E,K/k=]/$i8Ol094$>Yf4?5D]3(ZS/
+6UF+'4[MG$5!_=m6oI"X.3'Zc/hSn</i>=A3BKDh5XbT1s#pcM8kDW?6UO7177R8F#"bM_U8+KZ
+rM:I1Vl6PnWiE,$XKAV-YHP18ZEpsI[^WcV\[oBO],J>q^;%J"_Sa=2`lH0AaiMTGb0.rNbfn>V
+cMl/ld69ba<r>to<;]bi<<%:EGlW*fG62r1FoHL_F8p:ZEW:"XDu4GOD>e;>C]/)LD>\;ODZFbU
+EW:&1F*)MHF`qtQG^4U]H[L6jIt3'$K7el4L5:\DMi<XVO-,ThQ'Rc(R[]h=TD;ANX0&P/Yd1UC
+[^`l[]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@S^0gYL]Ci8EVTjQ5Odkiq?slg4!*mdKW6nac8Bo^r.U
+!quB_rqQKgs8)ZjrVZWmoDX=@L&ZZ~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nji6>n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<R+V#`qqD)'qUkbEm\p/q
+p:((1'Xb<TZa@'Dba5neI"I*3Od;Q6Xge8;pU0b(s0_^1rj2C,pU0V$qR?I4qR?=2rO;7*q76=4
+r42d;q7-@3s0h^4rj`$?rj`$?ost+6pq-F9!58BGrP/*BrPA?Ipr!*LrPefVr5\ZRs2Y#X"j+p0
+bKS3/c2Z)\ci2;kdJqYndf@qtec==sfDsV"gAfq,h#H11hYuF4huMa4ir%j9jo+?@kPscGl2L#H
+mJcPRmgejWo()DDo_/%Rq"adarnRNHn)Dj>aN(s1]!/35UnOBLR[BM`^UCGQYc<nC]Z.t4Xdk$I
+PET3eBn&p'K8`H';1j[fPan;<P>b@Z<E#osWKNI/Q^=)2StMdO\,Z*:qS3*Gr4r*BpV-ZSrd"Wk
+G^043s*"EbrcJ0]s)S'Xrc%mUqel=KnSJ/@r,2OQs)@sWs)J*\rcBZ5G'A.TH$Xd`I!pElIt3*%
+K7nr5LPUeEMi<XVO-,ThQ'Rc(R[]h=T:hnS^d,$)YHY==[C3TU]"G_k^r""-`Q-'BbKS8Xd*^=l
+e^rF+g=tE=hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrU^#>s+UK'~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nj`0=n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<R.?aBSGJ`RKC4EbOSk.N
+NfT3ZW-*i+BPhU-G'e^lM#<>.NqSG4N;eb8N;nn8N;ne9N9-&iNr4t5ORnM7OH5IsOSk17O8tF<
+OSFt8O8tFBP5UO<OSk7=P5UO@P5LIBP5gaBP5^[DP5^[FPl6gFPl?sGQN*<LQMm0GQiNQOR/`TS
+RK/iLSGJfTT)5/[T`(PaUAU_`UA1M_V#."fV?!OmW;W^qWrB!sWrfB'X8]3rXo>L$YPk^.ZEppF
+rj<?H\$rlW]"5Mc]tV7s_84"*_u7LR`r=$XaT'E_bQ#fdc2Z'bcd'kQ[&TghQ]mGjMhH\1H?sdW
+F)u>bNf/aKKR\,_MiWs\J9GUUChc@7:L6@l@VJ/#7:]tHE--;MDb3Mp9hTtdJT5XJEHHAJG^=[_
+\,Z>fqN1W9s,[5Cr0$l<s,d#:s*O`k!dT$8rceBcs)n<_s)\3\rGhgUs)7dPr,(t?rGDIMs)7pV
+rc.sY!-A-].s6#ZGBeCZH@($fI=?ZrJV&N-KnbA=M2I4MNK9-_P*;/sQ^F52S=Z@GU&'g8Xfek3
+ZEpsI\@K2`]t_A"_o0O7aND]McHjkbe'uq"f@em4gtgiFi8WeWjlY^gl07L!m-O--n*fc9o()DD
+o`"Lbp@n=[q#C0iqY^6hr;HTcrdk*'s*t~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_njr<?n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<QqpNP;#X8d;#a>h;#O/W
+:]FMi<r#`+<*)=P5<hP'6q9a<8P2cSr_WVjs%rSioMGE\s%`Si!)WDc!)EGd!)EGfrD*AgohPN_
+rD<MkrD<;cohPK\s%N/]r_E&\o1npRs%i\mkYM7Tr_<GhlqmRVr_WVjq,%)eq+glaqb[,dp/:`c
+s&/emr)3DjqbmDls&Ahns&Aqs!*9&"!*9)!!EN:u<r5r"<``B$=Tqo1>$>-7r`T;+r`fG/qcs,+
+!F/q+?N4C4?iXX7@fKs<A-HOVAnPdjrb2ONBk_<rC&VlICB/,KCNaN2D/X?*?s-K+:/"/I6pEq!
+4$5P`3B/rg7mod35<VA#5sdq(4#],Y0eXLo-nm8-2*!?K1H%3S4[22!6T6qd4uu>.83fL.5t".2
+7RT[7TV/!QU8+KZV50rbVPgAkWMunuWiN5&Y-5%5Z*LaF[^WcV\c')L]=bhj^;%J#_o0L4`l?'s
+a9]o1b0.uPc-=T5d-Xm4<Vobm<VTPnHiA<mH$FT5GQ2jdFoHL_F8p:ZEW0qWDu4GMD=MH@D>\;O
+DuXeUEW:%ZF8g83F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMMmFQO,oEdPEhH#R$sM7StD[LqGKS\
+Y-5(8ZaI6O\[oGe^VI_(`5Td<b0/#Scd:(geCE1&g"P39h;7)JioB(\k2tjkl0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kr;6HjrVc?eJcCH(J,~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AqTo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>f\#iLqV(u&q:G\Eqkrt_
+r4)I0s0`NIZa-mAOgBC]J:i`APae>G[/RN/[J%'/[JdH8[C!<IZhUp%[IUd&\,Ni7[fX(K\,*W5
+\*pj'\bNc6\c0/?\bWc5[fNqHppg=6!4q^2s18'=!kc.Wr4E$CrkA?GpV?^CqSN'GrP\]Srl4oW
+q8WHTr5eo[!QrUbbl,cdcL]B]d/VMndf%VqeCFQLpt,T"ptGc&s4db3gtgiDrnde8iSjXmrSmn=
+roO.Aroa=Fs69LJr9aLO&+B#Wo()DDo_%qPq"X^_rSIQJp>juRa2c$8^9OZ9Unj]RS!]Vb_Rm4]
+YHOj^K!3/6[@rAHT8d;gBRNTsJr!&r;LsRYOd)B-ThnZc<E3"tWi;t^PEqN$SXl@IU:1*k_=tb?
+^\GMFI=-EhrH\NjG^043s*"EbrH/'\s)S'Xrc%jTq/5hAq/64Ns)@pVs)J*\rcA0`G5c\8G^4U]
+H[L6iIXls"JqJ`1L51SAMN!LRO-#KePEhH#R$sM7St;UKUSOa`^cAU&ZEpsI\%0)_]t_A!_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;?Nbrdk*(s*t~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AkRo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>n=09EqO7JRqLe<kooT$2
+&<;a0N,jP^B5;='Fa8CdLQ2:opQ"s,#)nIuN/WaUr/CW5!0$$!o8`^/plP-/s,d8ApQ5<6mZ@4+
+qiCf?rf[8CpQ5<8r0$u?rK@)@s-!DGqNCiAr0%)Ds-3JGrfmDIr0IALr0I8IqNq8NqNqDRR[T_8
+opklLrLWnYrh07a!2B@arM'+_rhKUlUnn!drMKLkrM]dsri#mtr2]dtr2g+)Xf\b/qlg"(s0D[3
+rO)X6%_0'\]=Y_h^VIY$_8=(,rP\]UrQ,#]!6bAc8'T?)ccEStV4O*@OH>KVJU`)oGBItJEg2ZE
+Mhd"<I;j%VOH5!=Bm+Q284cQ^6!.N,6UsXVA8#duFa&.&8P)ZO9RhVEJGsKlEclSOGC"VEs7qfP
+OT(:BOHG\(P4t+7NrsfXI!bg<!dT$8rceBcs)n9^s)\3\rGhgUrbqUMoPODAs)7pVrGhjX!-A-]
+!HiSbG:Ii_H?spcI=6QpJ:W<)KS>/9Ll%"JN/`m[OckonQC!u-S"-(ATV8-VV>H<6YHY==[C3QT
+]"G_k^qmn+`Q-'AbKS8Wd*^:ke^i@)g=tE=hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>U6gqu6NkrU^#>s+^Q(~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AkRo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>r_N8bs%i,\qG-QVr)`Sm
+qc+))5!hM#5X@b*7n6*D:B"&k:Jama;=m]_:]=)j:Jam_:]F2f9`Rrd:]4&g:\@K_:]4,i;>j>e
+:\@K^:&do]:&du]:BF9e:\.?R:ZYCQ:]=)h:[:jT;>sDl:\[`d:\[]a:\moa;>3ua;ZK_o;>a>h
+;u9Jk;ZKen;u]hq<<-(u=8Z(n<r?#$<``@)r`T8'!EiV*>Q7k,>PDD%?2n1*?N+:5?t!LC@K9p;
+A-HOVB4kmkrb2LMBk_<rrG)7Gs(i-]C1(7H;Gg1]7mfU,4oRPm4#o8[84Q*96:!dt6U<t(5<Ltc
+3&3-/,:+up/ho792DR'H3'9Ah5t(]2$9UL68kDTH5XIk*qaD'gTV/!PU8"EXUnji`VP^8iri,ms
+&$)e6Y-5(7ZEppG[^WcV\c0/I]=bhj^;%J#_Sa=k`=g22aN2EBaN;QHbKJ,RcHjh`d-=[2<Vobn
+<V]SrI=-EhrH\NjG^043s*"EbrH/'\s)S'Xrc%jTq/5hAq/64Ns)@pVs)J*\rcA0`G5c\8G^4U]
+H[L6iIXls"JqJ`1L51SAMN!LRO-#KePEhH#R$sM7St;UKUSOa`;)thaZEpsI\%0)_]t_A!_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;?Nbrdk*(s*t~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt);&f_*qngAfk*f`'S'f_q]E
+VtI"Z\G`l:[f3ZFZ#ZM*H@UU)NK]a%WO'%Aq6fn(s0_g4"LYVDZa9G6pU0V$q6pF6\$l7Es0r'<
+qRHL5n$r5)pq$C6rji*?q7-@3!OfK4\Gj#=](*?2])'#?]XtfR]`5\F^AYh?_#;+G_YM+J`;[aT
+`r*mR`rF*WaT'?_b00e.rQP>fo[!K_s3^kprR1esec+.pf`0Y#gAfq-g]ZBeh;-rehuDU7iVMR4
+irJ0>jo+?@k6'r4l0A96!:9[OrpKgT%IioYo(2JFp@e7Uq>:*Is%M_8d`KPL]>_@bWMcPeSXZ%8
+R)ZqMZE^X4ObLTr`keULNN72C=^lbPG(>B@:f2arLQ@UdSY2WQ;c-Oq<2ustWKWO3Q'[r2StMaa
+s6[Yt_"th?^A`Q\HiSNlH3/A:GlDpeG5l^`FT6F^Er9qVE;a_ADZ4SRE;aeVEWC1[FT6IdG'A.T
+H2`+<H[L6jIt3'#JqJ`1L51SAMN!LSO-#KePEhE"R$jG6St;UKUSO`aW;OFfYd1UB[^WfY]Y2%o
+_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCV\So`Fj]p\jme
+q>^<hqu-HkrU^#>s+^Q(~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):=RdusESGSfTReMI-K^t6#
+Nt71XH$a.<D/aQ@H[pd-O,s$qp5K67Mi3OQNVe\6MZA_/N<"q/NUi,,O8+h/O8k=AO8"b6O7&,)
+Oo(4?OoCOCOnXt8Oo1C?Oo:I@OoLUDPPUIBPPgUDPQ-mGPQ$gGQ2HsJQiE?QQ^3s8Qhm'LRJN9N
+RJrWTS+W<KSbo#UTDtS`T`ChaU&C_]U].%jV50pdV>[7kVu<RmWW0!uW;rstWr]<&rN,drs/u:'
+!3lI-"1#8?[/RHC[^W`U\[oDb]Y2%o^qdec_>qLQ_uRgVa8X0[b5]ZabYQO/^9FQ.S=#P$OGedB
+IsQHaF)l;@PE(QXL4aqrDN0sCMgTkhHX'N;93X_b?tM\o87H(@D/aQ<G'QYN85;oRIt<0$E,T]9
+FE_qPH$Zmus,d#<plGT=OH>V&P5(1=OSk1=IK+ZpHi86lH$FT5GQ2jdFo?F^F8p:YEW0qUDsVB@
+DuO_SEW:%ZF8g:]FTcl3GBeE4H74,fI=?ZrJ:W<)KS>/9Ll%"JN/is\OckonQ'[l+S"-(ATV8-V
+V5L9iO#4)HZa@0M\[oGe^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X6?
+mfr:Oo()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*(s*t~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt)9G:Z>4F:A%ER=8Gr2<E)1L
+6:!e#6:=:68P;`R:esnaqGHo^r(m;e!)NSjpeUobr(R/dr(m8ds%i>`r_NGg!)`\kq+pZYr_<Dd
+pJ(Z_ohPWa:J^RWoM=RF!)NShs%huXqbdAis%iDd!)NAbr_NAeqGHubq,78kr)*Air)<JjrDW_q
+qc!MorDikur`9)#rD`l!=8Gtp<ruE(=T2J'=92Q.rEK;*!*fD,!*fA+s'>Y0!+#D,s'Gh8@:B.E
+s'u%="D)1XBP@BZs(VXMC2.J^CAVcqCh6mS<)HC_7n#d04Ztnh4?5G^3(HG,6pX"$6U=(.5X%4l
+2`366*[L_;.l0(62DR*I3'05e5=7dt2`Ei`4%i.:8jG^06UjL47RT\:T:_dLTq\9VU].(hV#dHk
+r2:R6WiE/&Y-5%5Z*L^D[^NZT\@K/]]">Vg]tV;]_?[us`5T^8a2\,!$cpH3b0%oOc-FV\d-"I.
+<W5tn<W#hqIK+ZpHi86lH$FT5GQ2jdFo?F^F8p:YEW0qUDsVB@DuO_SEW:%ZF8g:]FTcl3GBeE4
+H74,fI=?ZrJ:W<)KS>/9Ll%"JN/is\OckonQ'[l+S"-(ATV8-VV5L9i;)GM_Za@0M\[oGe^;%M$
+`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=[q#C0i
+qY^6hr;HTcrdk*(s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2A'f_*qlgABS%f`.iBVtd4[
+\Gs#N[^WWMZu;<2H[pd*N00BsVQRB'[Ips.[JdK4[K!T6ZhUp$[I^j&[fEl6\+[?3\*gd&\bNc6
+\c0/?\bWc5[fNqHppf_%s18'=!kc.Wr4N'Cs1\HHp;$XCqSN'GrP\ZRs2OuWq8NETr5eo["Nnp2
+bfp%1!7(2^rQtSls3gkp"4YlPf([esg&B\*g&9Y(gBHBegYCWArSIY6iVDL4j8\3>jo+?@kPj]G
+lMg)Lm/?>Nmf2_bnF?)?oCV_Lp@nCZqu,OS:%R>rc,IZ9a1nm\W2HA`S=,e3R)?MBZEUF/LoS)(
+`iYb_VMg%,8Td^IIYs%Z;1O=TOHZ''SY/eW;H?gs<N<!sOHPfnQ'[o1StMa_s6[Yt_"th@^&ie5
+If=`sI!^5>HN/9jGlDpeG5l^`FT6F]Er0kUE;FMLDYnAOE;X_UErU4[FT6I`G5c\>G^4U]H[L6i
+IXcluJqJ]/L5(J?M2I7NNfT9aP*;/sQ^F21S=Z=FTqeE[Vl6SpXT$!pZ*UgG\%0)^]Y;.s_Sa@4
+aN;TJc-FY_daQ^rf@\d1gYL]Ci8EVTj5oFckNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wi
+rqu`no)=4?L];l~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2@>RdusESGSfSRe27-K^b*%
+Nt@;0NaR(GB5)4#Ed)k\K8GZ`NqSG9N/NXRNK*jprJLZ7oo/s1o8W=$r/^T6oT0$6s,Zo9r/^9-
+plYH8!0R8DrfQr:r/po?r/pr@r/q#Brfd2As-*ADs-*JIr0.,Es-<JI"dbO@Q^3s8Qhd!KRJW?S
+R@9P4S+W<JSc#)VTDtS`U&UkaU&Le^U\^edV>[7kVu<RlWW/t"WN)usX8K'oXT5O$YPk^-ZEpq:
+[K!`9\-fdY]=bej^VIY$_>_=N_uRdTa8a3]aiaV+s3)%n[]-!lR$<\pO+W"5I!KpYrc0<)Oc50Q
+Kn+SiK8beNIs5ONBO="g=@6+sAS=S)@Uj%eE,p&CH2^>H:JFPVJUi;iDfBZ9F*;bNH?uptr/g]9
+plPN<rK?o;rK.&?!e5ZJrd=iqH[Ga<s*=WhrceBcs)n9^s)\0[qf2USqJZ4JqeuIQr,MaWs)\0]
+s)e<brc^&@H$Xd`I!pElIt3'$K7ei3L51VBMN!LSO-#KePEhH#R$jG6St;UKUSO`aW2Zeurf9%D
+Za@0M\[oDc^;%M$_o9X:ai_fOcHjnde'uq"f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0hr;HTbrdk*)s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2?H:\%?Y;>3oZ:A@WS=8c2"
+<=Mtm5tF7)6:F:47nH9Hr_WDfp/(W^r_<Ghr_WDds%`Gc!)EJgr([5fohPK^pe^`]p.kQ\s%N/]
+s%`5_!_uNeo1npRj\PqQr_EJhlqmRVs%r_kpeUrdpeLc`qb[,dpJUfcs&/emr)3Djr)3Gk!*&ho
+s&Anr!*9)#!*9%upK%,ls&f;(r`B2(>5hb+>5qh%>lS+/>QA(*?3FVC?t!LC@K9p;A--=SB)ZKC
+Ba&6cBkhBsrbDCI%qf6Q<DZ@\8Oc*85!:tj4oRDC2`O8qr^&M,4@2>#5sIFi2`<?=*%*9h/29%C
+2DR*I3''2e5=.as2E*c_4?H/,83fC+6UO=277BU5St>qRs.BFeU8%X^s.gR0VP^8iVl-JmWiE/&
+Xfek2Yd1UC[^NZT\@MUM#.qO]]tV:urke]Q'Z@u/`Q#p<`lH0Aai_cMc-=P[cdCfSr`/ttpf7>n
+!e5ZJrd=iqH[Ga<s*=WhrceBcs)n9^s)\0[qf2USqJZ4JqeuIQr,MaWs)\0]s)e<brc^&@H$Xd`
+I!pElIt3'$K7ei3L51VBMN!LSO-#KePEhH#R$jG6St;UKUSO`aW2Zeur_YY[Za@0M\[oDc^;%M$
+_o9X:ai_fOcHjnde'uq"f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0i
+qYU0hr;HTbrdk*)s*t~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm$4+m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt,f4p=]2oqq:o"r20"^r3u4+
+s0iNI[EOf=I=$R$MNa?rTrYX![Igm-[JmQ4[K!T6Zh_!$[I^j&[fs4L\%&oVosk%2n$r2(qRQ^>
+])9,<\cB;:\GWf:[^Z%AmCE8.qRZgA]=\!Rs1SHHrP/'ArPA?Ipr!*LrPefVr5\WQs2Y)Zs2k;`
+!mAg3rQYAfo[!K_s3^kprR1o!e^i@(pt,T"rn7A*rS%8*"l.kegtgfbhuDU7iVMR5j8\3>jo+?@
+k6'r4l0A96!:9XNrpKgT%Is#[oCMVIp@n@Yqu$HTs%3.Ph9X-^_S*aqXJi(nU7RgAR?tq.[Bd$@
+WK)Y?_T03]LSCAn?#=CMDg7(r:JuXnLQ@UeS"H<L;GpIo<)orsWK<:,Q'I]'rgj+aZ2a1,pV?^A
+pqHcYs*k#trI"`pH[Ga<s*=WhrceBcs)n6]s)\0[qJl=MrbqXPqJlOUs)\0]s)e<brc\BfH2`,3
+H[L6iIXcm!JqJ]/L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl-MoXKAY@^pCDV\%&u\]Y;.r
+_Sa@4a2lEHbg+P]dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6naZ2@oCV\Jp%J+Rp\sse
+q>^<hqu-HkrU^#>s+gW)~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm$4+m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt,eKo:,THqj[PQ!1Wn<nUpb#
+n<![2%?@6*K4ek5DK0fFIY*CMNqSG6N/NYoNW"h6MZA_0NW4t/NV8A6O,f7tO8"b.O8k:AO7n\6
+O6r&(Oo(4?OoCOCOnXt8Oo1C?Oo:I@OoLUDPPUIBPPgUDPQ$gFPQ$gHQ2?jNQ^3r(QBqH8q3V/M
+qj@AN!LfMNSGJfSScGG\T)t[ZU&Le`U&C_^U\^edV>[:kVuEXmWW0!uW;rstX8B!nXoGR%Y5kg+
+Z2_-0[/RK5\,Wu<\HKOW]Y2&Y^];4M_>qLQ_uRgVa8a3]aiaV+4NY1<V4X3COc>BVK7JDuH$47L
+EcI;'MM[(?I;s+ZNK/^<Bm4T-6r6`E<*NmI7n@&uB5DL-FE`"%84`_S$VQ&$JT#LGDfTrCGQ)jh
+rVlf's7qcOOnt1>Oo(=;Oo1=@JH(*!If4ZrI!^5>HN/9jGlDpeG5l^_FT6F]Er'eOE;jePE;FSS
+ErU4[FT6I`G5c[dG^9:7FF/C`I=?ZrJV&N,KSG5:M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L5j
+WiW>*O,pWS[^WcW]=bkm^r"".`lH0CbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3
+nF?&>o(2MGp%A%Pp\4[^rqZTjr;6HjrVc?eJcCN*J,~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm-:,m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt&UH;#4&_;#F&X:Ae/]=8u;&
+;E[>F5Q=(T77Tj>8l&:Z;>*i`:]F/i:]4,c:B4/d9`Rre:]*rf:\@K_:\R]\:\IQ^9`Rl\:&dug
+:B45d:BF9e:\%9R:ZYCQ:]=,h:[CpT;?'Jl:]4)i:]=/j:\[]`:\mob;>*o`;ZK_o;>a>h;uKVk
+;u]hp;u]hp<<-)!=8u>#<W?)"=8Gtp<s2Q*=BSf+=92Q.rEK;*!*fD,!*fA+!+#S/!+#D,"CGPE
+@:B+D!+Z"=!G,mBB`;]GCAqrEC+j@;@9co4;+jPP6q'='4?GYf3BB,[7R][469[S#5sR_$4?>J]
+0e==m.4-Mu2)tRl(H+664[22!6T?t`4$Gbg8kDQ=5=.\(7/]Oh7%Bg=St;RHTV/!PU8"EWUnji`
+VPa?js/7$=WiN5'Xfnq4ZEgjF[^NZT\@K/]]">Vh^;%J!_8=(g_\0i(`5KX7`lH0Aai_fNc-=P[
+d,A%)<<-"n<W@ULIfOrrI0+eCHiA?kH2i-gGQ2jdFo6@]F8g4VEVXSQDu+GLEW:(ZF8g:]FT?Ua
+G6)r6rd&[5I!pElIt3*%K7ei3L51VBMN!LSO-#KePEhE"R$jG6SXuLJU84W`Vl?\tXfbMuZa@0M
+\@K5a^;%J#_o9X9aND]McHjkbe'uq"f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9nac8Bo^qhL
+p@e7TrqQKgs8)ZjrVZWmoDX=@L];l~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njDs:n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt5l5o@`rnr7V##!8%%DoV_Mo
+osk%2&@T!PZ]CfPI=d*/O->m$WO2W3o="V)rjDI,p9jM#osY"4\$u%?s0qI,q76:3r42g<!4hp8
+r3l^8\+mK#\c98;]DoMD]DT>A^&PhF^\5JA_>;%D_u@UQ`W*sUa8*aTa8F$YaT9Q-rlk>c!7(5_
+rQtSlrmLep"OtuQf@TiNrn7>*s4RD*qV)&+h>Q71i;)C4j8S-=jo+?@kPj]GlMg)Lm/?>Nmf2_b
+nF?)@oCV\Jp\=U^r;GdX8FYQgbK.Z:`kARSVP^&[S=,b2R)6JBYct.+LTA/,`Mo;aWJP_"@sUgm
+Jr<9$:P=F^P*qf4T28E_<E<%tWMleYOcu&pQ^IcD!MZ6js8Be6_XbP;_#1tC^Aic`JH(*!If=cq
+I/eQmHN/9jGlDpeG5cX_FT-@\Ep.NBErU4ZFT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kG
+N/WdXOHG]iQ'I]'R@B_;StMdOUnsrdWN*&%Y->1H['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07L!m-O--n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njDs:n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt5kLo:,QGr1!YRs-s"=r.=Qn
+q2b31rf7SMNK%n'I;*D5E-6DQJ;&pWNrP(=Nqn\6N;eh8N;SS6N:r82N:`,&NWP9%Nr+n3OS+\+
+OSk1,OSFt8O8tFBP5^U;OSt=>P5LI@P5LIBP5^[AP5gaDP5gaFPl6gFPlI$GQN*9PQC%T:r0R8I
+!1E\N"IY^IS"',AqORPUqOde\!29@cr1X(`qP3k^!2]Xks/5jpql0Uq"KAE$X/l)urN-($rN-(&
+qlft'!j]/>rj<*A\%&rY\\#Me]tOB["2Vjk_u@RT`Q%nts2Z>)b0.].WM,iKP`ClcK7JGuH$FFP
+F)l8^N/<:BIsl3erf&(LF`)P=<'s>a6!7W15tFCRA8H1)FE`%%8OlNM97VSEJGsKjDfKlBGQ)jh
+HN!gArj;_!OSFt:OT(C=P5:=?OT0n2JH(*!If=cqI/eQmHN/9jGlDpeG5cX_FT-@\Ep.NBErU4Z
+FT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kGN/WdXOHG]iQ'I]'R@B_;StMdOUnsrdWN*&%
+Y->0l['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%f\5'7h;7&IiSrnYjlYail07L!m-O--n*fc9
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njW*<n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt/YQnkf-Zp/(QZoM53_o2klk
+$p?pA5!VD%6q0[<9MG7Zs%i\mqG@#a!_uNerD<>ds%`Db!)EMhmnWjXpJCW\p.k-Ps%`5_!DZG\
+:A%EE:]O;j:B+,V;#=,i;#X8d:]O;d:Adob;#4&`;Ya5k;Z'Di;Z'Jl;YsDm<;]\p<;]br<rZ8$
+<WuK&<E<.%q,[>ns&]8(rE')'>5hb*>5_\+>Pq_+?2\".?27h,@/aU5@f9g<AnV*V!GQ<IC&_oJ
+C&ViRAR/D<;,0_T6:Cf<6TdLp3]K)Z3(?;&5X7Lq6:!k'5W^qa2_u^#,VCW#1H7'G0K(mO4[22!
+5r^e^5!M)$8P)N>5XIh*6q'L4779S7SGo)ZT)YG_TF.BeU8+HXUnji`VZ!FmW"5l.XKAV-YHY==
+Za@-K[^Z7G$G!aZ]=kqm^VI\%qn`r_`5KX7`lH0AaihiMbg"G[d,.mu<W@XLJH(*!If=cqI/eQm
+HN/9jGlDpeG5cX_FT-@\Ep.NBErU4ZFT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kGN/WdX
+OHG]iQ'I]'R@B_;StMdOUnsrdWN*&%Y->0.['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%f\5'7
+h;7&IiSrnYjlYail07L!m-O--n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0+]p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTgA]arg%jA"g&0M&fCl*:VuO7#
+[edH9[^W`RZi7<?ELUusJ:rc>P*MZ8Xo>a*[K*f5[f3Z4[J.'$[I^j"\,Wr<\+R62\*gd%\bWi5
+\c95@\bWc5[fNqHpUKY%s18'=s1A?Dr4N'Cs1\HHp;$XCqSN$Frl"cSrl4lVq8NETr5eo["Nnp2
+bfp%1!7(2^rQtSls3gkps4.,#qUkf#s4[M+rn@5'!o2Vgrnm_5!9*e6s5X+>roO+@roXRNl07Ku
+lg*p(rU'UPs6p!Xs7?9_#PIfcq>:*grosGHq;g>V`lGp1]X+Z:VP9]SR@0D/`4radYcascK"JtB
+\=nSDP_E.JFA$\)LeCQ@It`lFR%9kA:f:.j<)TaqW=5#TQ'IT"R\$+CU7e6`rr^*S_SQ/eo>17<
+qS2m@s+:9%rdY'"IX_9Es*Xinrd+Tis*4Kds*"Ebr,hmYrGqFJrGqpZr,hs]!-\?cs*+Nhrd&=+
+I!pElIt3'#JqJ`1L5(M@M2R=ONfT9aP*;/rQ^F21S"6.DTq\?YVPgDnX0&P/Z*L^D[^`lZ]Y2(q
+_8=.0a2lBGbg"G[dF-Oof%8R-g=tH>hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&Facp\ssf
+q>U6gqu-HkrU^#>s+p]*~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0(\p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTn!j-Cr1!YRrgWe9r.=]rooJs2
+"HSY+O,a.!$t+?dB52:%FE`(^KSfPcs,@#=qi(]<NJrhpNW+n6MZA_1NW+n/NV/>3NrY4;O8"b/
+O7SJ2O6r&(Oo(4?OoCOCOnOn7Oo:I@Oo1C@OoCODPPUIBPPgUCPQ-mFPQ-mHQ2?jIQi*0IQhm'L
+RJN9NRJrWTS+`BJSc55VTDtPaU&C__U&C__U\U_cV>d@kVuN^mWW0!uW;rstX8B!sXT5I#XT5O%
+Y5kg*YlV2<rj?gU\%&rY\[oDc]tM.q_8*n'_Sa:0`5T^8a2c9Bai1`kV4F$?OH,9RJU`,qG^"7N
+EH75&MM[%>I;s([NfSm=BQJ$"5YP3F<aTE(7RgitCMn07G'Z\M7SQTLIt3*#E,fi8EcZDKG^4R\
+I/Np@rVlf's7;?IOoLOBOnY%;OoCIBK)^E$J-(4LIf=cqI/eQmHN/9jGl;jdG5l^_FT$:ZEq+/J
+ErU4YFT6I`G5c^cGQ<$gH>7eSI=6QoJ:N3&K7nr5L5:\CMi<UTO-#KePEhE"R$jG5SXuLJU84T^
+Vl?\sXfen5ZEpsI\@K2`]t_A!_SjF6aN;WLc-F\`daZdtf@\d1gYL]Ci8N\UjQ5OdkNV6rlg4!*
+mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@M#Vu~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0(\p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTr_N)]q,-f]p.b<WoiCfgr)O4j
+68q1o5sn%17nH9HqGI8h!)`ShqG.,e:]+&c:B4/c9`Rrf:[_'X:]+#h:]4,b:\IQR:&du]:B=3d
+nP8aQj\PqQr_EJhlqmRVr_WVjq,%)eq+gi`qb[,dpJUfcs&/emr)3Djr_iSk!*&kps&Anrs&T/$
+s&K>(<)lq!<`f,uq,[T!=o;A%>5_\*>5__+>PMJ'?2n42?2\(1?XWh@raH(AA7]:_AnV*Vqe?(F
+s(Ou2>#nKs9hIrE6U!Xp4?Ybd3&rof770I/5!D:u5X@Xt3B/rP//ore/h8Y70/YRB3''/d5=7as
+2`<i`3(lh68jG[05sn'=70l:M8Xl3>S=Q5MT)YG_TEq6cTq\9VUnspdV@TT'W2ZhuXKAV-Yd(L?
+['fnAs0i0A\[oAa^&G_a^VI\%_SO+*_SX4/`5Ta:a2lBEb0.uQcd0tm<r,hrK)^E$J-(4LIf=cq
+I/eQmHN/9jGl;jdG5l^_FT$:ZEq+/JErU4YFT6I`G5c^cGQ<$gH>7eSI=6QoJ:N3&K7nr5L5:\C
+Mi<UTO-#KePEhE"R$jG5SXuLJU84T^Vl?\sXfen5ZEpsI\@K2`]t_A!_SjF6aN;WLc-F\`daZdt
+f@\d1gYL]Ci8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@M#Vu~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_njDs:n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVg=ZAWr7LDir7M&$!8-n?qksA$
+s0ha2!4Md6'"53T[BXS8OaDV3L5V4\S"QdgqR-C5qmHL4rj;X3pU'Y%o="G'!k>_Kn[JS.m^W,(
+pq$=4s1/3@q7-@3!OfK3\F-p-](rr=]Y"*Ss1SHHrP/$@rk\HJpr!'Krl+lVr5\WQs2Y)Zs2bDd
+bKJ,RrQYAfo[!K_s3^kprR1esec+1sf_sJ'gA]e)gA9P)gtr%frS[M2!9=%=roO+@roXCIl07L4
+lN$;MmJcPRmg\dVo(2JFo_%tSqY^<klMj$7i7-#l`P0@)YGe@rTq7aBR$j8X]XG&KX/UlNZbXMY
+RZ48$EEQn%9m;>M:JlRnLlmmlR\*AR;,pRnWrAptPEPp1#a_$PStD^MUSP!k!5\ZOs24cOotgI>
+qS2pAre(6&!.k*!!e5ZJrdFfos*O`ks*=WhrHJ9brcS*[r,_IMrH%jXs)n?brc`1'H$O^^H[L3h
+I=?ZrJ:W?*KS>/8Ll$tHN/WdXOHG]iQ'I]'R@B\:StD^NUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$
+`5Ta;ai_fOcHjnce'uq"f@em4gtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Eg
+s8)Wirqu]moDX=@M>r)~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_nj2g8n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVn!j-Cr1!YRrgNnXr.=lur.=fu
+nrNX/s,R_OO,RIhEG'$'DfKrII=[-2rJpo;s,Qu9"-/A"N;eh8N;JM5N;&>2N:i2*NWP9%Nq\V/
+OSOq>OH5Kao8rm2rf@,@nW<O.qiCf?rf[8Cp5o37rK@)@r0%#@rf[;FqNCiArK@/Ds-3GFs-3MJ
+qj%5Kr0I8IqNq8NqO%8M!LfMPSG8ZST(noZTV8(YU&gs^rLs1aqP4%c!2KLg!2][lrhodpqPa\!
+WMuntX/l)uriQ4%rN-(&ql^"(rilL0Zi.9J[^`iX\[oDc]Y2%o_8*n'_SX4.`5KX7rl77E^Tj`1
+SX,P$OGngBIX66`FE2GCE0?0;L4au(DLdG"NIH"fH=]uA9O0tgA8+M'@:NqdE-$/I84Z3E9hU!8
+J-Bk1DfKf?rc\KjH@(!drVZ]os8KD*n<!@+pQGH:!0I24s+16%rI=s!IX_9Es*Xinrd+Tis*4Kd
+s*"BaqfMaWo5aeNqfMj\s*"BcCj:5NH?spcI!pElIt3'#K7ei2L5(M@M2R=ONfT9aP*;/rQ^F21
+S"6.CTq\<XVPgAmX0&P.Yd1UC[^WfY]Y2%o_8=.0`lQ9EbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_
+k3(sml0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7u]kqtpBjr;H6dJcCT,J,~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_nj2g8n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVrD29Ho1f*WnlGQfrDj@k5WM(n
+5XIh-84Q9H:&Rrh;#aDh;#!ia;#=&g:AITc:/=[S:B"&d:]O;j;"mcZ:@V$Y:@q<_:/CCTohX[G
+!)NShs%huXqbd>hs%iDd!)NDcr(m/cqbd&bq,78krDEGir)3Yp;c<Nl"&r2u<;fbq<;T\q<XDi.
+<`N*u<E<.%qH!DnqH*c$>5_Y+>$Lu2s',5&s'5\4?![D8!+5\5raPn;#A%FWAS5XhB_uNDC.Dc?
+=&`$k8P)695X.Fn4?PY`3]8ia770F.5!2.t5<qCn2`<QL,9J6e/2/q@1c$sJ3BKAf5X[Oi2Ej;b
+91_ZH5sdq+6:CfAs$QoX8P8rMs-s%Ys.97_s.BUjU7n<UUSO^bV>mFmVuN\3WiN2%Xfen5ZEpmE
+[C3KO\$rlX]">VgrkABHs1nWMs2"lU`5KXo`sKi/ai_iOcHjkbgK+2Ore(6&!.k*!!e5ZJrdFfo
+s*O`ks*=WhrHJ9brcS*[r,_IMrH%jXs)n?brc`1'H$O^^H[L3hI=?ZrJ:W?*KS>/8Ll$tHN/WdX
+OHG]iQ'I]'R@B\:StD^NUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$`5Ta;ai_fOcHjnce'uq"f@em4
+gtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@M>r)~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb8+cEEo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZg\fb&f^7AffDsOmVZ3Ri\,Ni3
+[JmW6[1K[MZETI-H@:F#MN*daT;8Xf[f<i7[f<c8[/@?3ZiIN2[.Uj#[K<qH[eR?3\,a#.\,a#+
+\GNi2])&u;\cB;:\GWf:[^Z"@m^`A/q7?[?]DT>A^&PhF^\,DA_>1tD_u7OQ`W!mTa8!XSa8X0Z
+aoBK`bPo`ablH&]ci)5jdJhSndfItKrn%#!rRh2)rn7;)rn@G,rn@M0h;8.grnme8qVhM8r8dn>
+r9"%B#jCO;lK[^$m-O]<s6fpUs6pEeoCMVHp%J4Xqu$EZs%i=Hg!%IU^qm^iX/MniT:VF<R$j;Y
+^9t2LXK%,/Yee8[SUmDdF')q#:3VDM:JlRmLlmsnStAhV:K:;NWMleoP*D5rQ^XM;TV8$RV5C<n
+s2"]Or58QOotgL?pqQdA!el;\rdt9(JV!fNs*t&trdFfo!.4Zjs*=WhrHJ6arcS$Yo5jbMs)n?b
+rHA<fH$TC8CjUPXI=?ZrJ:W<)K7nr5LPUeDMi<UTO-#KePEhE"R$jD4SXuIITqeE\Vl6VrXKA\1
+ZEppH\%0&]]Y;.r_Sa@4a2lEHbg+P]dF-Opf%8R.g>(N@hr*JQj5f=ak32'olKdg'mI'H3nF?MK
+#kR]\p%A%Pp\4X]s7u]kqtpBjrVc<dJcCW-J,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb8G)NFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZS=K)<qOIJQrL*_UrgWtXn:L[m
+mZ7@/rf7VNNK&m;=_;DbD/sfEI"?s.rf-u<rf6l8!fi8!rJgc7qhkH5pl562pl,?8NK*^ns,R/?
+pQ,'1q2YQ<O7A>0O8k=AO7JD,Oo(4?OoCOCOnOn7Oo:I@Oo1C@OoCODPPUIAPPp[DPQ-mFPQ-mH
+Q2?jNQ^3r(QBqH8nsKEE!h,UJpmh,MrgrnWs.B@cr1a.`rM'.`rhKOhrM9Iis/,am!3#an!36$t
+s/Q+"qlKe!s/c.#!3Z7'!3lI-!j]/>rj<0C\%&uZ]"5Pe]tM.qrP8QP_o)Jl<Q2tu_R?J?SX5V&
+NJiOCJ9uTdG&q\EE,q,$M2$_7I;`nSNK/L3Ap%Wa6;(TM=^u/87q#nADK'Z?H:LIp9hfMUJUi5h
+DfKf>G'J4VH@(!gJ,9'Ar;QZprjDdpOS+b1P5ULEKnP-YK*$XUJc:3"J,ausIK+ZpHi89jH2i-f
+GQ)dbFnp.NF8C"YFoQX`G63#7H2`,+H[L6iIXcluJV&N,KS>/9Ll$tHN/WdXOHG]iQ'I]'R@9V9
+StD^MUSOcbW2co"Xfnt7Za@0M\[f>b^;%J#_o9X9aND]McHjkbdaZguf@\g2gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\jmeq>^<gqu6NlrUTr=s,-i,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb7eH<Do()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZr_NMir(lcX!)N>cn4ipXmT03d
+rDj=i2aBJk5t".37n?3Hr_WYlr_`Mgq+h#f;>j>g:B4/b9`e'c:]!le:\IQ^:]=/l:Jajd;"mcY
+:@_*Z:@q<_:/CCTohX[G!)NShs%huXqbd>hs%iDd!)NAbr(m2dqbd&bq,78kr)*AiqGRAlr)3bu
+;cH^p<;oer<;T\q<XMo/<`N*u<E3(#=8Gtn<rlE+r`B8(=B\o->6.o3r`oG,pKRf+?<pk8?3+D@
+rF,\7!+Yt=!G6!DB`DdHBPD0l?WpE+:eO;I770:'4?G\f3&irW2+Bu#6U<q!6U3k%5<Cha2D-<t
+,VL`'1cR<J1cRKV4[DG$3&`c[4@Vn58kD676:+(.77K[67S$3FR$mrBrgWqXs.(:(T:_dLTqS3T
+USO]^V5C)dVl-JnX/i>(Y->19ZEpmErj<<G\$rlX]">Vg^:q:p^VIV"rkScT_o'F3`r=!aaN;QI
+c-=P\d+MIu<<@l-K`6T*Jq8LPJH(-!If=cqHiSNlHN/9jGl;jcG5cX[FRsSMFT6L`G5ZUdG^4T6
+H>IqUI=6QoJ:N3&K7ei2L51SAM2R=ONfT9aP*;/rQ^F20S"6.CTqS6WVPgAmX/rG,Yd1UB[^WfX
+]=bkm^r"".`lH0CbKS8Xd*^:ke^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHnd+jZo_%nN
+p@n=[q#C0iqYU0hr;HTbrdk*,s*t~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX<r7V##mFhNlrRq5'!S>ojV?"(!
+\,Ni4[JmQ5Zi@9?Y@q`jIY!<3N00BqTrYR"[f<i7[f<`8[/792ZiIN2[.Uj#[K<qH[emN;\@8rW
+\@:>)qRQ@3qml^;!4hp8qR?4/m^`>.qRcU:s1SHHrP/$@rPA?Iq8<0LrPefVr5\WQs2Y,[rlP2_
+!6bAcrQP>fo?[B^s3^kprmLque^j`Oqq1i"!8@G*rn@5'!SlQ2hu2L/ir%m:jo+?@k6L58l0@R"
+lg4T;s6fpUs6pEdo(2JFo_/%Tqu$E[rt+GPe'#eN^rEg`W2QMaT:),HQmoqg\[J`GXK.20ZG+>^
+SUmPkG#i$t9Qu,I:JuXmLQIdkSY&_V:fUDarhp9iP*D5tR@TqATqS6XVPsOp_>_=J_tCkB_"b\C
+^''1EKnP-YK*$XUJc:3"IfOrrIK+ZpHi89jH2i-eGQ)dbFm=)JFoQX`GQ2mfH2`,2H[L3hI=?Zr
+J:W<)K7nr5LPUeDMi<UTO-#KePE_?!R$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG\%&u\]Y;.r_Sa=2
+a2lBGbg"G[dF-Oof%8R-g=tH>hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]k
+qtpBjr;H6dJcCW-J,~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX^SFW0GSG\iVRf&ZTSH#)HJcLhu
+O8P%<N"CnI=B]BQCi4<;H@CBuN/insNr4n:Nr4n7N;JM5N;/D1N;8G7NfB%nNrP.?Nqe\0OSY%;
+O8t@3OSk1>OT(=4OS=n7O8tFBP5^U;OSk7>P5LI?P5UOBP5gaBP5^[CP5gaGPl$[EPlI$DQ3*D=
+QMd*GQiNQMR/`TSRK/iPSG/TRT)##YTE(\_UAgkaUACYbU]@1fU]RBiVZ!CmW:m4jWrK-rXT,F%
+XSo:$Y5GI,Yd(I=ZEsP<s0`HI\[f;_]=bhj^;%M$_8=(g_u@Re`Oi=OTUM42Nf]*LIslZgGBIp)
+E]]DDMi*:BJ:2?PKoD%BG%Pr1=?oJ`6<Rf47n@&uB5MU/Fa?PJ7SQU'J:W5hEH#o=G'A1UH@(!f
+J,0*?!;lcns8Drr[K#]Woo]!3rK.5;KnY25rdt9(JV!fNs*k#trI+]n!.4Zjs*=Whr-/-`rcRLJ
+rcS6arHJ9d!."QiF*i:^I=6QoJ:N3&K7ei2L51SAM2R=ONfT9aP*;,qQ^F20S"6.CTqS6WV5L8l
+WiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKS5Vd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*,s*t~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX\:]=,`:\mod:\IWQ9`S2Y<r>r.
+2`<NV5X7\'7S$*C9hnP^r_`MgqG7,f!)`\kr(m>fpe:ca:\mfd:\d`e:JO[`:]=2h:]F8d:\@KQ
+9`Rr\:[_'O:ZYCQ:]=,h:[:jS;?'Jm:\[`d:\[]_:]!ub;>3ua;u]bo;>a>g;ZK_n;u]es;uTbq
+;ZKen<W,qu<W5r"<E<.%qH!Dn!E`M(=9DW,=^(],s'5S.!*],%r*B8-!+5\5raH(AA7]@aAnV*V
+rb4c6@9ci3:eaMO6:4%&4$>Yf2`EWQ2+Bu%6U<q#4@;D"5X.=i2`338*$['f/i5OF1c.-O3^,eq
+69$n_5!2G/84l-5r^-u[77BU57S$0EQN!3NR/WKSR[a;Hs.'LgT:_dMTq\9VUnmpb&#Q8'WN)u!
+Xfek3Z*CXA[/RHF[^W`U\[oDc]tM.n^:h7q^VKib&]2H'`5]g;a2l?DbKS8Xcd:(m<rH#$L4t>7
+K`6T*Jq8LPJH(*!If4]pHiSNlHN/9jGl2dbG5cXLFT-F_G5ZXbGQ<$gH?4F\I!pElIt3'#JqJ]/
+KnbA=M2@.LN/is\OckomQ'[l+R[]k>T:qsRUnsufWiE/&YHY:<['mHR\\#Mg^VI_(`5Td<aihoQ
+cHsteeC<($f\,!5h;-uHi8WeWjlY^gkiqBum-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]m
+oDX=@MZ82~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV52o#g"P05g&0Lcg&K\+f@JL@VZ+%#
+\,Ni9\,Ni5[1osSZ*CO:B52=3J:r`:Mj'HuV6.3*\,Ec7[/dT2[0!_C[J[E)[J[H=\$i`S[^NZS
+[emQ6\,a"l\GNi1])0&<])T>9\GNc0\F-p,])'&7]E#YE^Abn?_#;+G_YM+J`;R[T`r=!ZaN++r
+rl>#Zs2k;`s3(GdrQP>fps/rcrQkGhs3^kprmUns!7q/$qq1i"!8@G*rn@5'!o2Vgrnm_5!9*e6
+!9="<s5j1@s5s[Ol07Kulg*p(rU'XQ!:TpV!:p-\s7?Khq"jmdrp]q[p#4TL`l>a5]WnH5W1fcP
+R$jA/Qc$DCZ*:C1O+sL7^Vm:GJYIs<?:T?8FF]<B<.9CROHc9)T2AK`<)[P2W2PoCPa.Q'SXuJQ
+U&h-iVuQb4rkeNLrkeHHqnVp?s1SJgreCH,!/1?(s+16%rI=s!IX_6D!do?ArHeKhrcn?brc\3^
+oQ:%Src\3`s*+Nhrd+Tk!.=coBmtP^J:W<)K7nr5LPUeDMi<UTO-#KePE_>uR$jD4S=Z@GTqeE[
+Vl6SpXKAY0Z*UdE[^`lZ]Y2(q_8=.0`lQ9EbK\>YdF$Fme^rF+g=tE=hV[8MioB+]k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcCZ.J,~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb7.g*Bo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV54*\s.01[oUG]Ip7))PrgWA.r/U]9
+rf6]5s,R,<s,.=d<`s'MCN"99G^P$qM>`J4NW5%;NVe\4MuSb3NVeY@NK0!XNfB$YNfEgoqi:`;
+qiCK5qN('+r/^i=rf?W3plYH8!0R8DrfQo9r/pr@r/po?r/q#Bs-*;Brfd8Cs-*JIqih&Es-<GH
+!gf4>rg*JKqj7AOq3_/L!LfMQSG/TRT)##YT`:_`UAgkaUACYbV#R4gV#R7kVYm@bWW0!uX8B!t
+XoGL#XT5O%Y5kg+YnF@K['d<M[^WcW]"5Md]tM.p_#;.K_\9u&ZDjUiR$E_oN.cb2H[9jWEcD"t
+4ckVZKnY,,F)HM]NK&I3Ap7ib76Fd?=CGo087?"@D/aW?Gt:Iq9hec@JUhZXE,fo@GBe@YH[L<m
+q"X[aq>gElr;Z`qrjDdoOS+b0P5gXEL]3&.K`Hf*KE$N'Jc1*#IsukFI0+eCHi89jH2`'dGQ)d`
+FnBeSFoHR^GQ2mfH2`-iHN8HmI;+.[J:N3&K7ei2L51SAM2R=ONfT9aP*;,qQC+)/S"-(BTV8-V
+V5L8kWiW>*Yd(O@[C3TU]"G_k^qmn+`Q$!@b0/&TcdC.heCE1&g"P39h;7&IiSrnYjlYail07L!
+m-O--n*fc9rpg*]o`"O`pAamcq#C0iqYU0hr;HTbrdk*-s*t~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb7.g*Bo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV53r`r(d&`qG@,dohbQ\ohGK]r`/u!
+s&]2#r`/Ym!EE2!<=LlD1d4/i6UXC67n?3GrDEDfqbR5gs&&_k!DcPk:B4/a9`e'c:]*uf:\mid
+:B4/f:BF?g;#O/i;"mcY:@V$Y:A%EN:A%EE:]O;i:&n)U;#=,i;#X8d:]O;e:A[ia;#4&`;YX2g
+;>X8a;u]es;uK\p;u0Mm<WH/!<<#tu<WH4t<r#hs=oVV(<ruK,>5VV)>lS"/>$Lr1!*fA+rE]>-
+!+>b6s'l"<!+l+@rFcdW@pN5:;GKnT779C)5!:ti3rV#k2)[lk6UF(&4$u>!5<qFq3&``J,p+Hd
+/MAn>0/bXF3BB8e5X[Uj2Ej8f8OuH<62j7O7/o^T7gM[YQ'IZ$Q^=*=RK&`US,\ubSXuIHTV8'R
+U8.[_s.p1%Vl-JlWN*&&YHY::ZMq0=['d<M\$rlY]">Vg^AY_I^;%J!rkS`S_o0O6rl5;cair#S
+cHjh`f2hoO!/LQ.s+LH+re(6&!.k*!!e5ZJrI"`pH[G^;s*=Tgr-/-`r,qXRrH8*_r-/0c!."Qi
+s*F`nrdAL0It3'#JqJ]/KnbA=M2@.LN/is\OckomQ'Rf*R[]h=T:hmQUnsufWN*&%Y->1;ZaI6O
+\[oGe^VI\&`5Ta;ai_fOcHjnce'uq"f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nc&([oCW%T
+s7ZKerV6Egs8)Wirqu`no)=4?MuS;~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY7J-3Bo'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUtsf)gAfk'f`0Xuf_*qtfE9aVe^X;j
+qPO.us0qp7s0Vj8r3[BKZa-pBZ*:I9AnZ=6I"-m,N0KWuTWGN0rO2=*r3Z.)rO2a8s0`*?[^NZS
+[f3`>\@8rW\@;1A!4h7%qmlC2r42j=s1.m6r3uF1m^`>.qRcR9!58BGrP/$@rk\HJq8<0LrPefV
+rl5)]a2e(srQ"oYs2k;`s3(DcrltJgq9K&drQkGhs3^hormLquf%0iPr7Lbsrn@5'!SlQ2hu2L0
+iW/$:jSn9>k5OQCl2U&Kli6>NmJlVSn,MkWnc&.[oEFs`q>:*ho)DP`jkJ2)`PBC,Z`Bt#US"*E
+R@0G/_S*C_Z*1.0L4ZbI`4r4;MkY</?"&"PFF]9A;G_t"OHQ*'TMSNa<E2nrW2YoBPa.Q&SXuIJ
+US=ZcV>pG/qSW<LpqcjCqnE-FrP&KLLkphAre:K.KS9>Ws+16%rI=s!IX_9Es*XinrHeHgs*4Ba
+r-%aUrHA'^s*4Qhrd"cqI!g?jIXh?ICOq(iK7nu6LPUeEMi<UTO-#KePE_>uR$a>3S=Z=FTq\?Z
+Vl-MoX0&P/Z*L^D[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=le^i@)g=k?<hV[8MioB(\k2tjjl0@U$
+m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*-s*t~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY6hL!@o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnV#6e`SGSfFSGAZSSGerNK)^E"K'SHr
+NW4t:M[rce@V'7gD/aT?H@CL%N/mgqrf6r:qi(H2rf$]5qi(K5"ceS%NfK+oNr+k;Nr>">OH9-t
+qiC-+r/^i=rf?T2q2tQ9!0R8DrfQl8r/puAr/po?r/q#Bs-*8As-*ADs-*GHr0./Fs-<GHrg3VM
+r0R>Ks-`\Mrg<hVS"'2CpmqDUpn%V\TqV@Xs.T@bq4e"eUSIa_!Mu[kVZ<[gW<0*#X88ptXo>F"
+XT5O%Y84@IZ*L^B['d?N\$roZ]">Se]tV4r_>_=N_`GZEXJDGVQ][;fKn=f$G^4LSEcQ/<Oc>6S
+KnFi'D/4ocNer.)DK]5\77g]L=CGo07n$luD/XN>H2^A79c?WRJ:MNUDfKf?GBe@YH[C3lp\4IY
+q>0sbqu6NnrVul)s6c!AOo(:AOo:FGObegKL]3#0KnP-YKE$N'Jc1*#IsukGIK+]pHi89iH2i-c
+GPlXWFo?L\GQ2pfH2`*oH[L3hI=?\FJ89^fK7ei3L51SAMMmFPNfT9aP*;,qQC+&.S"-(ATV8*U
+V5L5jWiN8)Yd(L?[C3QT]"G_j^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;7&IiSrnXjlY^gkiqBu
+m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@MuS;~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY6hL!@o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnV#!ma:@D!N;"%0R=8u=n<W#f,2DmW^
+5=.S$6UsX;8PMuXq,$ra!)WYlrD3Yn:esk^:A7KY:&n)f:'FEg:/=Y\r(d;hr(m>hpJ:HWnkK-Z
+ohY!NohX[G!)NPg!)MoWqbdAir_N>ds%iJdqG6ubqbd&bq,@/fr)32dr_rtu<)los;u'Gm<WH.u
+<!--$<`f,uq,[i(=]ed-='/U/qca5/>?b97>Q.k->Pqb(?2\(1?XWh@"CbkNA7baP%qfQhB3nb@
+;G^(Z7RTR-5Q*]62E*NO2ag&$6U<mt4$c+t69dUm2`<NH,T\3a/MAn>0/YF>3BB;f5X[Oi2EX2_
+91_Z=5X[t,6psI37S--B99b[+Q'Ra8QiEF+R@9S6S"-">T:_dLTqS3TUSO]^UnsobVl-JmX/rJ,
+YHY::ZEpjC['d<M\$rr[rk&0Bs1SHH(;IZ#_84"*`5T^8a2c9DbKS5UcHje^gf=DTrDj&$LkphA
+re:K.KS9>Ws+16%rI=s!IX_9Es*XinrHeHgs*4Bar-%aUrHA'^s*4Qhrd"cqI!g?jIXh?ICOq(i
+K7nu6LPUeEMi<UTO-#KePE_>uR$a>3S=Z=FTq\?ZVl-MoX0&P/Z*L^D[^WfY]Y2%o_8=+/`lQ6D
+bKS8Xd*^=le^i@)g=k?<hV[8MioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6h
+r;HTcrdk*-s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb8G)NFo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rUtsh]gY2Y[r7M&&p"8rjs4IA&s4$P8
+osX\(rj;X1'!edHYH;K5G^Y-uLPh1XQ(FnVrO2=*rNu4)rO2a8!4MX2"h;%N\@B$A\,a)%\GNi0
+])9,=\cB;6\G`o2\F-p,])'&7]E#YE^AYh>_#;+H_YM+J`;R[S`W4'Ya8j9Y`r*mVaSs<]aoKWa
+bl,cgcHjh^r6PDgrQkGhs3^kprmUnt!7q/$r7Lo"!8@G*rn@5'!o2Vgrnm_5!9*h7s5X%<s5j1@
+s5sCGrosIJ!pf4>rTs[Sn*g8F!:p-\#5%T_q>:*goD_YPh:0]h`kTU&Y,J.mSt;I>Q^<uS^:1JR
+Yc=g[J[`b=^o*WPXH.I6?>+a]GCkcG<.0CSOHQ'&TMSQa<`N%rWMki@PE_?!S=cCHTVJB_V#U;-
+rkeZPrPJ<FrP89ErkABHs,$c3!/LQ.s+UK+rdt9(JV!fNs*t&trdFfos*OZis*=TgpilFTq02j`
+s*=Qh!df<BrdAR2It3'#JqJ]/Knb>;Ll%"IN/WdXO-,ThPa.Q%R$sM7St;UKU84T^Vl?\sXfek3
+ZEppH\%0&]]Y;.r_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tE=hVd>Nj5]4^k3(sml0@U$m-X60n*olH
+ncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*.s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rV#6e_SG\lGSGAZRSGerKK)U>jNVeb6
+N=h,-MMY>]AS5dpDK0fFI"I$/r/L]9rf-c5rJUW5qi1H2rf-H.qi:`;rJpu@O8+h5O6r&,O8b7?
+O788-Oo(4AOckn+OnFh6OoCOAOoLRGPEM+,OoLUEPPLCAPPgUDPQ$gEPQ-mHQ26gHQi<<KQi3<M
+RJN<MR0&hHS+rNJSc55VTDkP]UApqbUA:PaV#I.fV#R:gVtI%hWrK-sXT#@%XSf1#Y5>F%Z2_-9
+['d<M\$rlX])K<6]Y;+p^qmn)_o''fVkBNEP`Ci^Jq/8rG^":ME,fiYO,AaHKRSDfC57q3ML9PY
+Htc\U7Sd>W=^u/3875n=CiFE;Gt:Ls9h\7[J.?F8E,fo?GC"IZH[L<mpAXgdq#C-jqYU9is8Dus
+[K$5gn<!=*qi^r@s,mPJM2@%EL]3&.L&Zi*K*$XUJc:3"J,ausIK+]pHi/3iH2`'`GP64UGQ2pf
+H2W$jH[L5?I;=:]J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnjlcWN*#$Y-5(8
+Za@0M\[f>b^;%J#_o9U8aN;WLc-F\`daQ^sf@\d1gYCWAi8ESSj5f=akNM0plKdg'mI'H3nF?MK
+!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC]/J,~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rV"mga:@:pM;#X2\:A%]f<qKDj<"1]N
+5<_@s6:=:57n?6Iq,$ubs%r\lqb[;g!)E5^qG.&dr([Dk:/4S\:Adlf;#F,h;#!iY:@_-Z:A%EN
+:A%E^:]O;U;#a>j:&n)U;#=,i;#X8c:]O;g:AI]_;#=,f;?0Sl;Ya8g;>a>h;u]hq;uT_u;cHar
+r_rVmr`0#!rD`ess&K,$qH!Go$!:>5=BJX+=BSi*>6S89>?Y37r`oJ-r*92+rE]P4?srtB)e*;e
+A7T7`AnPaa>#eNu9hRrE6pNt"4?Ybc3;tco7RTR05X7In5s[_$5Wq(d2`EE=+Wr'a/1rb=0fCgE
+3BB;f5X[Li2a0Dd91_Z<5XRk)6psL4r^R#]8sB7=s-<VMs-NbQ(7CV[S"#q<StDXJTV8'RU8+NZ
+Unsobrhodp'rn@:Xfek3Z*L^AZa@-J[^W`U\[oBO])]MC^&PeI^qp#es2,/]`Poj;aN;WLbl5le
+cJ)D!<W6&!M>rA3L]3&.L&Zi*K*$XUJc:3"J,ausIK+]pHi/3iH2`'`GP64UGQ2pfH2W$jH[L5?
+I;=:]J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnjlcWN*#$Y-5(8Za@0M\[f>b
+^;%J#_o9U8aN;WLc-F\`daQ^sf@\d1gYCWAi8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?d
+p\4X]s7u]kqtpBjr;H6dJcC]/J,~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6hL!@o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmhYu=5gtLH7r7M#%p=T&ks4IA&rm^G7
+pU9n*!OT94[/[HIZ*:C5YAKW=I!p['MN*deS"Zmj[^Pe8rj;=*r3lX7!4M[3s0r'<o!e\1kICK$
+!kPqQpppL<])0&<\cB;6\Giu7\,a)<\F-p,])'&=]E#YC]E#YE^AYh>_#;+H_YM+I`;[aT`W4'Y
+a8j9Y`r!gVaSs<]b5]Zbbl,cgcHje]r6PDgrQkGhs3^hos3q"u!nPuTqq1f!!8@G*rS%,&!SuW3
+hu2L0iW/$9jT"?>joOZ/rosIJs6K^Orp9dTn*g8F!:g$Z#5.]bqY^<kpA[GIhpoum`P'7'Z)aau
+Tq.aBQC!o%^q$kWYGnUZJ\/k6_P`lUV3$aC@V'mZF+&g9:/QIlLldgiS=iYV;--aqSGoGuP`q8p
+Q^OG:U7n?WW3!,(Y,;6r_>D(L_u7II_>M+F^\khGMZ/G6LkgcbLAur-K`6W(K)^E$JH(-!If=cq
+I/eQkHN&3hGjBSQGlN'fHN/<lI/\QoIW0deJ:W<)K7nr5L51SAMMmFPNfT6`P*;,qQC+&.S"-%@
+TV8*TUo(&gWiN5'YHY:<['mEQ\\#Mf^VI_'`5Ta;aihlPcHjnce'uq"f@em3gtgiEi8N\UjQ5Od
+kNV6rlg4!*mdKW6nF?)?oCMVRp&F^cp\jmeq>U6gqu-HkrU^#>s,?u.~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6hL!@o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmT)>/ZSG\lGSGAZRSG\lGK'eQqNrP(R
+N/NRMMI:[aAS>mtEclSQItNN8NK*msrf-c5rep]5qi1K3rJgB.qiCc;rJpu@O8+h5O6r&,O8k=?
+O788-Oo(4AOckn+OnFh6OoCOAOo1C?OoLUDPPUIBPPgUDPQ$gDP5pjHQ26gGQN3?KQi3<MRJE6M
+RK&]US+rNJSc55VTDbJ]UApqbU@k;[V#R:gVZ<[gWW/suX88ptXo>F"XT5O%YAg_NZ*L^B['d<M
+\%&u[]">Se]tV7s_8=($Yc+:eR$E_oN.cb0H['[UF)Z,<DiTa3L4au*E,:DmMi<%+BR"9)6qL'W
+6!%E(6:OLS@qTXsFEMk"8OlKK9mM8?J8]CFEHH>JH$OaaI=Hg!JqEarp]L?gqYU9is8Dus[K$,d
+o8rO*rf[2As,-f4!f2VereCH,!/1?(s+:9%rdb#us*jrqs*Xinr-J?frcmaQrcnHgrHeKj!.=co
+s*ep:J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h<StMdOUSOcbW2co"Xfnt6Za@0L\@K5a
+]t_A"_SjF5aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JFrq6<b
+!;HHes7uZjr;6HjrVc?eJcC]/J,~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6M0m?o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmq+po`mSEFNqb?cZnlPfkpf75k"$f1?
+6N04V6UaL984cKO:f%$drD3GirDEPj##S2n:JX_\pJ(KZs%iSgs%`VinkT6^pJ:T[s%iYinP'!Y
+oM><Ys%iAaohYQ`s%hoVs%iVh!)MoWqbd>hs%iAcr(d#_qb[,drDEVmr)3>h!)i_lqbm>js&Atr
+rDX##<)lms;c?Zk<W6%t<<#tu<WH4t<r,nt=T;M.=BAR+=^##*>Q.e/>?kE;>Pqb(?2e11?N=L4
+@K0j;A4U9DAn"tF;c$:a8jbs35X%@o3BB)W2)[<[6pa.)5!2.s6:!k#3]8rT0J+=i,qU]"0fCU@
+1,LpM3]oYm6oI"`4[(u#8OuJP63fqI6q9X97nEVPs%EEWrg!MLs-NbQs-X=bS"#q=StDXJTV8'R
+UAgniUnsrcrhg($WN3,'Y-5(7Z2V$6Za@-J[^WcWrOW$@!5/<E"2DXe_>_=O_Z[os`l?."b5TWb
+blQ,9i)]kXr`8qss,-f4!f2VereCH,!/1?(s+:9%rdb#us*jrqs*Xinr-J?frcmaQrcnHgrHeKj
+!.=cos*ep:J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h<StMdOUSOcbW2co"Xfnt6Za@0L
+\@K5a]t_A"_SjF5aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JF
+rq6<b!;HHes7uZjr;6HjrVc?eJcC]/J,~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nj`0=n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W#ShVR)EgtUT;gAKV)g=c2PrRq5)s4RD*
+#hdk_f%/@$e^X,drO2=*q6U..rN[$=Xf[_fG^b7!Ll7C\R\6R_[e$p+[.Ld)[e.'/\,a#/\,a)&
+\G`r>]",BH\cKFSqmla<!4ha3s0qm8s1/-=m^`>.qRcd?rk8<D!58BHqS<-IqS<'Gqni0HrP\WQ
+s2G&Zrl>)[rPn]Ss2b2]s2tAbrlkAdrQbAfrm(Mhr6YJkrmLhq"OtuQf%9iPp"B>uqV)),h;8.g
+!oVtoqVqP8r8dn>r8n(Dkii$1s69UMrp9XO!UfFTn,W%Yo*4j\p\F^brV?Itrq5.#ccF/F`5AdZ
+VPU&ZS=>q3Q^,D#\$3'=X,MV3^pM"\SVEYuL0\1tH:r=.LPS`):4n7[OdMW0T28E_<`N%dW2HSW
+PED)qR@Kk@Tq\<ZX/rM.Xfnq5WW2_/rPJTNs2+QIrP8?Gs1SKJrOrAmMi3JkM#rKgL]3#0KnP-Y
+KE$N'Jc1*#IsukFIK+]pHi&-gH2W!ZGPudcH2W'hHiJKmI0"eHrd\[5JqJ]/Knb>;Ll%"IN/WdX
+O-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(
+g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Wirqu]moDX=@NW4M~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_niu[6n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W"hSt>eLr1!bXn!s<FrLEhU!1NM2s+1-/
+m>_.+r/D;HMMcG)AS>jrD/siGIY*61NW"n;NVSP4Mu8P3NV\V5NU`&+O8k7=O7n\3O6r&,O8k=?
+O8P(>O7eV3Oo(4AOckn+OnFh6OoCOAOo1C?OoLUDPPUIBPPgUCPQ-mEP5pjHQ26gGQN3?KQi<BM
+RJE6LR/rbGpRM&MrLWhW!20=bs.TLgpnIGVrM9Ii!2fXkor7tks/Z!ts/l=&qlTe"!3lI-rj)j:
+[C3NR\@T9N]2ZJX^;%Lq[&9XiR?`qrNeW+6I!^'\F`25<DNKg6L4k,,EGU>gKoCJ'Ble*#77^'U
+6!.K*B1>BY@qBFnEccMO84c<G9MKb]J:MKTDK']?G'SE5HNJ\JJGk-#LB%#Nq>0sbrqufp!<0D+
+qN:B2n<!^6rK.2@Mi3JkM#rKgL]3#0KnP-YKE$N'Jc1*#IsukFIK+]pHi&-gH2W!ZGPudcH2W'h
+HiJKmI0"eHrd\[5JqJ]/Knb>;Ll%"IN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE
+[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg-^
+o^r.U!quB_rV6Egs8)Wirqu]moDX=@NW4M~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W#r;#F,h;#F)h;"IKP:]O;d:&7WV<r?%u
+<qo\o<";,Z5sIY!6:=738P2WN:]4,g:]F8i;>sAr;,C(b:JO[Z:&7Tb:]*uf:B4/\:B45c:\dcc
+:]=,[9`Rr\:\mid:\RWW:]=2i:[:jW:]=)h:]4/Z;#=,h;#a>c:]O;i:A@W^;#4&f;?0Sk;YsDm
+;Z0Jh;Z'Jn<;ohm<!63#;c?Zj<W?+u<;oku<`f)tqcEf"s&oA(s&T8(=^(Z+r`]>+s'5S.r*92+
+ra,V3s'Yh7&n5?]A7]4T=]83o:.RlC69m^tr]C-=-8m_=6q0O25Wq4s5=%S#4ZYP^2)$U'+XJ`m
+/2B+E2)I!D3&j#br^$QD'K80=4A&198j>R,6:F:07RT^98P/nS*_f=$9hpt=QBml(R$a;1R[]h<
+StDXJTV8'RU8+N[rh]Uk$)a`$X/rG+Y-5)/Z2_*6['d<M\$rmG\I,p[]=bhj^;%J!_>_:W_o0L4
+a2lBEb5TQdbg"DXhcB\U!*9%u",r.rMZ&A5LkgcbL'!'^K`6W(JcLB#J-(4LIf4]pI/eQjHN&3g
+Gk6.XGlE!eHN/?lI/\NpIXh?IBRtbfK7nr5L51SAMMmFPNfT6`P*2&pQC!u,S"#t?T:qsRUnsuf
+WiE/&Y->1;ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'
+mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC`0J,~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/tYp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi4k5hYu@2g]H6agAT_)gAfh+f_sG"f`'S#
+gAfh-f[n^ReH+1Kr201ar3cR5pU0h(rj2X0&[8OCX`'YQH[pd)MMmXdS"m%U[K!W*[JdQ2[fEr9
+\*pj+\`gR%\H0:PpUUC;])0&<\cB;4\,a#8\Gj&=\F-p,])'&=]`,VD]E#YE^\YbF_>D%H_>;%F
+_u7OO`W*sXa8a3\a8O$Sa8a6[ao9H_bQ#fac2Q#fci)/hchl)hdJqYpdfe1Ne^i@Mf_*qsgA9P*
+gtgidhZMfoi8FIk!9<t;s5j1@s60FGs69[Om-O`=!UfFTn,W"Xo*=p]p\F[_rVl]o>P[42ccO/G
+_Sid_Vl-8\S=Gt3QBmcK\?iBBWNV&-Ydh][Sr/o'H!aicH>@SMLJ(B>IY*95Od2E*TMJH_;,gLm
+W2Z_VP*;&oQC456T:r!SV5gW!Y-"n2Yl1i-s7F,-_Y(bC_#;%D^Aa)kMZAY6M>rA3L]3&.L&Zi*
+K*$XUJc:3"J,aurIK+]oHi&-fH1H4ZH2N!gHiJKmIK+`rJ,Xt/JV&N,KS>/8LPUeEMi<UTO,oBc
+P*D5tQ^F21S"6.CTV8-VV5L5jWiW>*YctF>[C3QT]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4
+gtgiEi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&Facp\jmeq>^<gqu6NlrUTr=s,R,0~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/tYp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2P]T)"rUSH#/LSGerTSGerWRfA!2Jb>&o
+N>.D4NJrjSMI:[<A8,muEcu\TJ:i[VNW>(6N;nh5N;S\4N;\b,Nr+n:NrG+4OT1@AOT(=.OSb+=
+OSt7<O8t@6OSk7<O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5gaDP5^[FPl$[EPlI$FQM-[FR/EBJ
+R/WKTR[]fASGA`RT),&ZT`(PbU8.LXoV;D]s.o^mqkjFmor7tk!3>striQ4%r2ft%rNH7*s02p:
+Za7$G[^N]U\[qdP?bF(d]sju9Ssbq0O,f!KIXQNeG'.hEE,KTRMhct<I=?$JKSb\?GAD29?:RIX
+>>eO0AO/dU?X[P^DK9iBGt:Ir7SQQLJ:N2gDJsH5FEMeQH?spbI=Qj#JV/T.L&H`-q>1!fr;Z`q
+rjDe&On4\#OoC=>MZAY6M>rA3L]3&.L&Zi*K*$XUJc:3"J,aurIK+]oHi&-fH1H4ZH2N!gHiJKm
+IK+`rJ,Xt/JV&N,KS>/8LPUeEMi<UTO,oBcP*D5tQ^F21S"6.CTV8-VV5L5jWiW>*YctF>[C3QT
+]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_
+p&Facp\jmeq>^<gqu6NlrUTr=s,R,0~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi5nnohYTaohXsOnP/p]oiCulr`9"uqc!Y_
+5sRU45R'SE84c?E9`7fe:]F8h;?'Jm;?'Jm:B4/a:&.Na:]4&W:]=2c:\dcc:]=,[9`Rr\:\mic
+:\[]_:B4/e:]=2h:[CpX:]=)h:]4/Z;#=,h;#a>c:]O;j:A7Q_:]aKj;#=,h;Z9Pk;YsDm;Z0Jh
+;Z'Jm<<#nn<!?9$<)ZaqqGmPrs&K%tr`/\nqcEc!s&oA("BS].=^(c.!Er_+=p/&7>[(G1>l7n-
+?N+=3@/jXG@UiqX?<C-&:.n2M7RKL+r]L<D3&pmq-8e.X5sR[u4@)4s5X.:h3B&ZE+!2d]-nI,2
+0/YLA1cRKX5!D8#r\bcU4[(l!8Ou'35sdq,6UX@277g$@9M8#P9hS)R:B"&hQ5>mTR$jD3S=H.@
+StDXJTV8'RU8+N[V5=0gs/-U2WiN8(Y-5(7Z*L^AZa@-J[^NZS\Gj#G]">Vg]tV4q^qmkd_?Iiq
+`5]m>rlGAebKJ,Sbg#$Gpf7<Ps,-l7re^Z2!/LQ.s+UK+rdt9(JV!fNs*t&trI+]nrd4NgrH[sY
+rd"Efs*OcnrdFfq!.XuuA:]>bK7nr5L51SAMMmFPNfT6_P*2&pQC!u,S"#t?T:hmQUnsueWN*&%
+Y->.9ZaI6N\[oDc^;%J#_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3(smlKdg'mI'uB
+!V#XYncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcCc1J,~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi=qUhZ2O4h#cBdgAKY(g&]mZr7Cl!s4RD*
+s4dP,"5)5Wf)F2$eC2h9V>R^m[JmQ/ZN7A:riZp9CQc#OI=[-/Mj'NuTW,-&[e@*/[.Ld([emN6
+\GWi)\Gj&&\G`u3])K>=\c95@\a6j*\c92=\c922\c02:]DoPC^&GYH]tV7rqS<*HqS<*HqSN*H
+rP\WQrl,)]aN2EBrPn`T!6G)[s2t>a!6kAcrm(MhrQbGhqp>AjrmCu!eC<%"f)++mg&Ke&gB$*c
+rndV2!9!_5s5X%<s5j1@roj@Gs6BXMs6TaP!:KgT$h<fZoCV_Mq"jmdrr)juqW6JYb/D<6`4)kJ
+UnaZUS=5_/QBf:r['-[3Xb_P2_S`pXQ][q\A6<8TCNFoZ8kr32J;B8KR@9_>:Jt%e<)cbnW2HST
+PEV/nQ^O>7T:qsRV5^PuriZ:*qQ[1&lbNS:rPAHJr4i*B!fi8"repo:MMhCi!f2Vere:K.KS9>W
+s+:9%rdb#us*jops*XfmqKh[Wqg/6g!.=`nFaegiJ:N3%JqJ]/Knb>;Ll%"IN/WaWO-#NfPa.N#
+R$jD4S=Z@GTq\?ZVPgDnX0&P.Yd1UB[^WcW]=bhl^qmn+`Q$!@b0/&Tcd:(geCE.%f\5'6h;-uH
+i8N_VjQ5Oekiq?slg4!*mdKW6naZ2@oCV\Sp&F^cp\jmeq>U6gqu-HkrUTr=s,[21~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi;WiT),#USH#/ESG\lVRK/cHJc(N"NqSJ4
+N;e_JMI1FWA8,drDfU#IIY*92NfK+nMu\e5N;\b4N;\b,Nr+n:NrG+4OT1@AOT(=.OSk1=OSt7<
+OT1C6OT(C=O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5^[DP5^[FPl-aEPlI$EQM6aFR/EBJR/`TS
+RK/iPSGA`RT),)ZT`1YbU&^t`U@k;\V#R:kVYd:`W<0*#X88ptXoGL"Xo5I'YlD!.ZN%68['mEP
+\@K3L]1K]FX.u;VQB[DkLkC5+H[0jZFDu2;DN9X2KnOo)DejucNJ)OqC33TO6:t'O='oN)7Rpir
+Ao2F,FEVq#8Ol6E9MBtdJ:MNUrbr!]Fa&+Wrd+p!J:N9'JqJc2qM#%Iqu6NnrVul*s7_ZKOR/)2
+NfB%tMunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If4]pI/\KhHLZ:XHN&6kI/SJ9IXcitJ:W9'
+K7ei2L5(J>M2I4MN/`mZOHPckQ'I]'R@9V8StD[LU84W_Vl?\sXfek3ZEppH\%&u\]Y2(q_8=.0
+`lQ9EbK\>Yd*^=le^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9nac8Bo^r.Us7QHerV6Eg
+rqcQirVZWmo)=4?O8j_~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niQC2n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi>qnohYTaohY?Z!)`Mf!)N8^r_35hp/V#k
+r)`ku!*/qr!^T(=rBLZU779X:92&)W;#X5j;#4#o:f1(d:esk^pJ(?V!DQ>X:]=2d:\[]a:]F2\
+9`Rr\:]!oc:\[]_:B4/f:]4,f:[M!Y:]=)i:Jh$fmnijXs%i\kp.tfd:/:IXr_WVl!)WMhs&/hn
+r)3Djr_i_mq,7/ir`&nrq,@>orD`Vnr`0#!r`&hrpK%2nr`K2's&f;&!a&T/rEB;+>Q%b*>Q7t.
+>Pqb(?2n72?iOO5@1m$T>?=]t9M@uH6U<q"4Zkee3;tg*2+0f!5s[Xp6U3k&5<:b]0f(F*+!W-]
+/2K.:2)6sH3&s,d5sdpt3&W]Y4uu>.84l-46UO1.6UXF47S$$?9M.uO9MJ4[:AdofQP5aSR@9V8
+S=Q4BT:_dLTqS3TUSRmc%]6)"Vl6VrXf\b/YHY::riuU4[^H+C!k5\Lrj`'A]`,SJ^;%Fu_86,f
+"iJ9t`lQ7#aTBW.bPo`B<r#_sNfB%tMunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If4]pI/\Kh
+HLZ:XHN&6kI/SJ9IXcitJ:W9'K7ei2L5(J>M2I4MN/`mZOHPckQ'I]'R@9V8StD[LU84W_Vl?\s
+Xfek3ZEppH\%&u\]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--
+n*fc9nac8Bo^r.Us7QHerV6EgrqcQirVZWmo)=4?O8j_~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/b+9rnd_4rS7J.qUu#(f\$/Sr7M&&s4[J,
+rn7J-f@SUPeH=7Id*VN_rh]CsoX+\+qm6=.'="dFYHG!fT6bs9K85AEPF8#:WTU\g[edK5\-'4M
+\$u@H!4h[1rjha4"1bqO\bN]5\b3Q5]DK,?]",B<\G<]6\FmE3])'&=]`,VD]E>j]^VBW\rk\HH
+rPABJ!Q2kR_u7OP`VmdVa8X-[a8O$S`rO3ZaoBN_bQ#fac2Z)gci)/hchl)hdJhPte'umte^jWM
+p"BB!q:bo)rSIP2!T;r5iW/$9jT"??joX`0kl0iHlMp2Mm/HAQmdL,D!:p-\AbGclq"jpfs8Vr]
+gsjQf`P0:+XfJ:oU7[sEQBml%_7I(ZYHG$dJ@!)(]q^pYJTu0KB4u%"I>:Hk:k+%OO-6!%T:ShV
+;-$[q;5gImW0!4,Ocu-"S"?7FTVA9]XKA_0Xfel&Z2V&4s6IN#^];4K_#;%E^Aj8oNW>(<N;ne9
+MZ/J4L]E50LAuu-K`6T*Jq8LOJH(-!If4]oI/eQdHN/9aHN/?kI/\QoIK4lsJ,t4Qre"g9Knb>;
+Ll%"IN/WaWO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)`Q#s>b0/#R
+cHstee'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7u]kqtp?i
+rVc?eJcCf2J,~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/_eargrbQl(%X?!1EhRoRR"&q2P$,qMc;M
+NJrgSMi*C2H=U]&CMn39H$k-oL5_,]N;\b5N;S\+Nr+n;Nr>%3OT1@COH5IhOSk1=OSt7<OT(=5
+OT1I>O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5^[CP5gaGPl6gEPlI$EQM6aFR/EBJR/WKSR[a)B
+q47GTqOde\rh9@d!2K=`oV;D]!i;ckqkjFmor7tk!3>sts/l:%r2ft%rNH7*s0;U0#ICeF[^W`V
+\c033[]ZI"S=#S'O,J[CI=6EdF`_S@Df(PnMM?b7IrT7YN/<=:F)#)d<DQ7_:f^q65t4=O@qKOq
+F*)YO7n?0F9MA'/J:W5gDuO\XF*2\Ord"luI=Hj"JV&N,L%U3#qu6NnrjMk!Onk+*OoLLBNW>(<
+N;ne9MZ/J4L]E50LAuu-K`6T*Jq8LOJH(-!If4]oI/eQdHN/9aHN/?kI/\QoIK4lsJ,t4Qre"g9
+Knb>;Ll%"IN/WaWO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)`Q#s>
+b0/#RcHstee'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7u]k
+qtp?irVc?eJcCf2J,~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/]#or_WGeqbZr]rD<Agpe^rcoM#?d<;KPm
+<;BPl<rH,"<rZ1u<"_A\5sIY!5t+147nH9H:Jah`;#F2j;#X;l;#X8b:%_6]:$tgV;#*o_:Amug
+:@_*Z:A%EZ:Amu`:Adof:Amue;#F,U:]O;j:'"-er_`)[qbcr]!DcJ_:]F8j;#jGh;#jMm;>X8h
+;uT\o;>F,g;uKYq;u'Ao<E)ut<;TYu<`N1#<W5tr<VTVm=8c8$=oVS,='/U.>5_Y+>$Lr/!*fG-
+s',G,r*B;.s'Pe6&n,-N<Du^h9M.cD5sIRt4?P\ar\c2^6pj=-5Wq4s5XI_#4ZYJU/M&7r,pk#k
+1,U^B0f(dK3^#_m6:3Xi2Z>lQ2bQ_58jYd/6:+(,6q'L47n6/M9*@p_9M8(X:Adoe;#Zm_S,]#Y
+SHtgZT:hjNTq\=]V#I2(VPgAmWiW>)Y-+t4Z*L^B['[6KrjE'@\@B)[]=Y`T]`c'a^VI\b_Z.LU
+`Q#s>rlP2_rlb>chH'JQs,[2?!0-u:s,-l7re^Z2!/LQ.s+UK+rdt9(JV!cMs*t&trI+Zms*OEb
+s*=<as*O`mrdFfq!.Xuu!J,k%K4]djL5(J>M2I4MN/`mZOHPcjQ'I]'R@9V8St;UKU84T^Vl6Vr
+XKA\1Z*UgF[^`lZ]Y2%o_8=+/`lH0CbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^gkiqBum-O--
+mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s,[21~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rnmn;i8<Dih#Z<cq:Yl&f`'M#f`'P(gA]k+
+g'QHbf@JL&eC;porm:>6rj2@+osOh,r3HC.rics:X_j?2H@CL$M2[R_R@g@Yl*^N!qR?L7"1PeL
+\,No;\b*E1\b<N8\[]2\ppg:5pppO;]"7mQ!4r*=!kPqQqmZX:o=4V,rODO2rjqs<s1J?Erk&?H
+^;%GZ_#D1H_#;+I_>qLQ`;IOP`;dgR`W4'Ya8j9Z`r!gVaSj6\b5TTabl#`bc2c2fc2c2fd/MGm
+dK\1MeCE+#fDO:nf`9b%gB$*crn[e8hV[5KqVqP8qr@b=rT=.Cs60LIs6BUL!:9[O!:KgT!:p-\
+AG,Zkq"agcp[d7mbfRlA`kegWVPKuYS=Gt2Q'@NH\$E0?W31l*[B@EIS!8GMFDGH#95o968kr33
+JVT8KR[]t";Gp@l<)TWmVl5W=P*D/pR@9\:T:hmPV>lmKYHG"2YH[c+qm*O-s2"`Pp;$aEqn`'C
+r4i*BrJq#?NK*pr!fMqnreU]4LPPk`!el;\re(6&s+10"s*t&tr-eQlrd4'Zrd4WlrI"`rIt.HJ
+!J,k%K5?3pL5(J>M2I4MN/`mZOHG]iPa.Q%R$sM7SXuIIU8+N\Vl6SpXKAY0Z*L^D[^WfY]=bkm
+^r""-`Q-'Ab0/&TcdC.heCE.%f\5'6h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&Fac
+p\sseq>^<gqu6NlrUTr=s,d82~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rLa1`T'r6<SGerWRK/cSR.Z%.Nqn\&NYRM2
+N/WXO?Z^s3BPMC&F*;hXJq]#?nVmI,qMb?3o8`^/rf6u=nW3a3l]D%*rfI)>r/go=oT9*8qN1`>
+!0[;CooT*6rf[2Ar0$u?s-!AFqNCiAr0%)DrfdDHqiq,Gqj-oArg<VOq3_/L!h,UJpmh5PqO[_Z
+!hQ$Vrh07as.TLgpnIDUrhKOjrhfUk!3#Ohs/H("qQ'\!rN,t"!3Z:(rif8)ZEggC[C3QR\@K2Z
+Z)47eR$NkqNJ2q4I<p*\F`MG=D/G5iLP18-IVieSJW,#"D.?dM:J=ML<F03%7RpirASc:+Fa7If
+84H9H97VMAJGsF#E,ou@G'J:XH@($fj`GTqJqJ]/L%0otquZirrjVq-OoLU;Oo(7,Oo:=BNfB%t
+MunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If+WnI/\K\HN&9jI/SHpIXckHJ,t4Qre#$?Knb>;
+Ll%"IN/WaWO-#KePE_>uR$a>3S=Q7DTq\<XV5L8kWiW>*Yd(L?[C3QT]">Vh^VI_(`5Td<ai_fO
+cHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq6<bs7cNfrqZTjqtpBj
+rVc<dJcCi3J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rDESkqG6l_q+prcqGI#arD3)\rDikspf%,j
+pJq,lr`'P05!VFu5<qJ"77Kd;8kMfS;#=,i;#X>j:\RTW:B+&b:]F2b:]4,c:\dca:]=,\9`Rrd
+:B4/e:\mff:Jaj]:Adlf:Adod;#=&U:]O;j:'"-er_`)[qbco\o1o?_rD<PkqG@5jr)*AirDW\n
+rDE>fs&8hp!)r\m!``3"r`&bprDinur`&hrpf@;orE0&%#$=r.=BSg2qcj&'!*fG-s',D+r*B;.%
+UWUM>$+^":J48K6pa.&r]Ek93&`ZP2)[fh69me"4$c+r5!Ctb1G1+(+s\Kf/29%82)6sI2`a)c5
+X[gq2E*f`3D2q783oL+6UO1,6pj@17S$'AKKh[o9he8QqbI&bqbST-S"#q<SXl@ET:hjNU8"EYU
+SXc`VPg>kWiN5'Y-+t4Z*CU@Zi.<2[Kj:O\[f;`]=e-V"2;Rd_>V4S_o0R8a2n8%$-LB4bKJ.2<
+``A]<r,hpNrk?$NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc:3"J,auqIK"WnHgZ4ZHiAEkI0+kIJ
+,Xs!JV*lRCkRLsL51SAMMmFPNK9-^OckomQ'Rf)R[]h<StD^NUSO`aW2ZeuXfen5ZEpsI\%0)^]
+Y;.r_Sa=2a2lBFbK\>YdF$Fme^i@)g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc8nac8BoCW%Ts
+7ZKerqQKgs8)Wirqu`no)=4?OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7AGFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5qVVD3hYu=2h"]S(g"?;UrRh,&!nuD`rRqS2
+f[n^)eC;sqdJ_GkU\LY]Zi.9#[JmNKZ*Ua@Y-+n/O.^iKJ:r`9NKfg#TW#'\[JmW2\,Nl>\[]/Y
+rj`!=oXOk1p:1(3ppg:5pppU=]"5Mcrjr'=!P5i<\,a)7\,a)<\G<]6\FmE3])'&=]`,VD]E>j]
+^VBW\rk\HHrPAHLrkncSr58KOqSiNUrl>)[rPn]S!6G,\rlY8as31DcrltMiqp#2fqp>>is3gqr
+s3q,#f%9fOp"9?!ptGf)qq_D3i8OOl!9<t;s5j4A#3Y46l07Kurp'RNrTsXRn,Dfcnac;Do_/%S
+q>0gEfZhOW`ko[#X/D_fTU_O?QBmf"^ppbTYH"^^K!321[@_r6HZO%:B7"B:K8NE%I=I$5Od_c3
+BMhW'<)ZYlW2HSTPEV/nQC456StMaKUSOjgs-K,PQN3?EYkbQ1rrBn5_YCtG_#D1F_#1tE^Aj;q
+OT(=@NW>(<N;ne9MZ/J4L]E50LAur-K`-N)Jq8LOJH(-!If+WnI/J?bHMi-hI/SKnIfFotJH(19
+JqJ]/KS>/8LPUeEMi<USNfT9aP*;,qQC!u,S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M\@K5a]t_=u
+_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_
+rV6EgrqcQirVZWmoDX=@OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7AGFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5rLj.^s.8bOm[X<HrgNkTrL!8/if4,"NJrhp
+M@OTO@q]RlDK']BH@CI"MXl`*NVe\3NUr2-O8b1=O5uB&O8+h7O8k=>O8Y1=O7\P6Ont19OnFh5
+OoCOBOo1C?OoCODPPUIAPPgUDPP:=<QLgICR/EBJR/WKTR[]fASGSlRT)YD_T)PA]T`1YbU&^t`
+U@b5[V#I7gVt?tgWW9*rX8oC$XSo:$Y5PR(YlD!.Z;S$9[^NZT\[8?1SXPn0NfSpHIsZKdF`qhF
+EGfWRMhm(=Isl9OK92"CG@ki#=&DXc>Z"[6BgtU"@V9LqEclY.84Z3D91j\aJ:DHTDfBZ:FoHUk
+H$XgbIXgJ@F8U.QL&$K'rVul+rrA2ZP4Xn9OR&#/OT(=@NW>(<N;ne9MZ/J4L]E50LAur-K`-N)
+Jq8LOJH(-!If+WnI/J?bHMi-hI/SKnIfFotJH(19JqJ]/KS>/8LPUeEMi<USNfT9aP*;,qQC!u,
+S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M\@K5a]t_=u_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8M
+ioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmoDX=@OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5:f("dr)!;epe^f_rD<>fq,$rar_3)]qc3Vp
+pJ_)kpJh8o<E/rts&9Il5X.=q5!hS*84Q0C8l#@_!DlYm;#X>k:B4/b:%qBc9hnDW:A[ie:A@W`
+;#3u_:Amuf:@h0[:Amuf:Adob:B+)j:f$g\r(d;fr(m8fqbQTU!)NSh!DcPk;=79Z;#sKjoM>Qc
+;"RQ`;"[Zc;Z'Di;Z0Pn;Z0Jf;Z9Vn;ufkl<<#tt<;T\q<Wc?&<E9#ts&B%upK%5orE0&%s&]D*
+=BSg2rEB;+>Q%b(>QJ#4rET8+ra$XQ>Zk'(:JFJP77':)4?Yeg3&ifS2)Ici6UF(&4%'!5.R#pQ
+3&W99-6sll.5!G92)I-J3''2d5X[[m2E<ra2bQ_58jYd06UF.-r^6`Ur^R&]98%uq5Q=IP:AI]c
+SGeuuStDXJTqS3TUSFW]V5C,fWN*##Xf\b/YHY:;Zi.92[JmTC\%&u[]">Vf]tV7r_#D1L_@+<$
+`lH0AaiMQFaiaV,!*9#!j&Z%Ws,d;Crf@)>!0-u:s,-l7re^Z2!/LQ.s+LH+rIY0'JV!cMs*t&t
+r-eQlr-S-`r-SEjrI+]ps*t'!s++s;K7ei1Knb>;Ll%"IN/WaVO-#KePE_>uQ^F21S"6.CTqS6W
+V5L5jWiN8)YHY==['mHR\\#Mf^V@V%`5Ta;aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]7`k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTcrdk*2s*t~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2*i;_[;hVHuAg\KP*g"=s/qq1r%!8@G,s4Rh5
+f[na+e^W*tdF%m=r1j+apTsh*o!SM)(U^WUZa-d;Y&B\PH@LO$M2@:XR%C%O[-k@$[emQ4\,a);
+\Gj&2\GWo3\G`u5\G`u5\cfRT]">TR])B/?]".[Is1.s8s1/-=q76I6ost(5qRcd?qRlsE^VBT[
+s2"QIrPAHLrkncSr58NP!6+fSs2Y/\s2Y,YqSrTWr5nu]rlb>cr6>8e!71Pfs3LVirmCbos3q"t
+!nGlRqq1f!!8.2%rS%>-rS.A.r8.J2!9!_5s5X";!9O1As6'FG!pT"8rTjFLs6^lqnF5u=oCV\J
+p\=LBf[%^Z`P'4#X/DegTU_L@rg#'tOhS?4YHOt.Mh.qI_6]Y]S">=:B51smG_\md:k!tNNg#p%
+Skr<^<E)lqV\,kgPEM,nR$sV:T:_dMUSXrlrr;h]s-EGap9D(+s2"NJqn_j=qnN'CrfR>FOHBI&
+!fi8"repl9MZ/J4L]E50LAuu-K`6W(JcLB#JH(,uIf+WlI.VdaI/JEmIfFosJ8'RdJqJ]/KnY89
+LPUeEMi<USNfT9aP*;,qQC!u,S"#t?T:hmPUnsrdW2co"Xfnt6Za@-K\@K2`]Y;.s_Sa@3a2lBG
+bK\>YdF$Fme^i@)g=k<;h;7)JiT&tZjlY^hl07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)Wi
+rqu]moDX=@OoKq~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2-T`1S_T(8H?SH#)XReiEEJ`MjkN<,'!rf$i6%
+UaHiAS5^nDfKrGI=Hm)o8N^/qMb91ooAm0rf6u=jH'A&q2kK7s,d2?r/gl<oT9*8qN1]=!0[>Do
+T9!5rf[5Brf[;Fs-!ADrf[;FqNCiAr/q&DpQPZCqNg`>s-W\OqO%8Ms-`qWpmh5PqO[_Z!1s1^r
+h07as.TLgpnIDUrhTLir20OnoVqkj!3>doriQ1&rNH7*(9t0NZa7'J\$W03T:2+3NfT$KJ:2chr
+cL;ADf0B.NJiUHJpr,eCOqP(JTk^HEFV=0:JOelA3`US@:NteE--5J7n?0F9MBtdIt2ETDfKc=G
+'J92H3\eFIt3+2jQ?A]rH.ggp4iVH\GuSkq3'^!rfR>FOHBI&!fi8"repl9MZ/J4L]E50LAuu-K
+`6W(JcLB#JH(,uIf+WlI.VdaI/JEmIfFosJ8'RdJqJ]/KnY89LPUeEMi<USNfT9aP*;,qQC!u,S
+"#t?T:hmPUnsrdW2co"Xfnt6Za@-K\@K2`]Y;.s_Sa@3a2lBGbK\>YdF$Fme^i@)g=k<;h;7)Ji
+T&tZjlY^hl07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@OoKq~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2-;#F)h;#F,b;#3ud;#4&b;#3uc9_qKY<W5to
+;Zp&u;cH`k<Vo`.5=%=o4?Ynq6UaI88P2ZP;,C-h;#aAm;#X5j:A@QZ:'OEf9hnDX:Adoe:A@W_
+;#=&a:A[ie:@h0[:Amuf:Adob:B+,i;"m`_:]F2g:BOEj:f.$bm83^V!)WYlmSEm\rD3JkoM>Qc
+;"[Wa;#F/j;YErg:f7*fr_reor)*8fr_rDfr`/qsr)N\rs&K%ts&B)!<VTVm=8c8#=oDJ%>5MP'
+=o_e+>lIq0>[(H<r*;j">Zb$(:/+>O779F,4Ztkg3B/rU2`*B\6UF+)4Zc"r5XIUq2`N]N/fc5d
+/LiG20/YLA3&j#`5!qXs2`<i`3_N%88jYd0r^6WP#t@HV8P)QLK7emQ5PS"I:C<Y_SXl@ETV/!P
+UAgo#UnsrcVl6SpX/rG*Y-5(7Z*Ue9[/RK5[f<f:\c0/F]Y2"m^;%FurkSfU_o0O6`lJ"u#0G'3
+c-03hq,c]Zr)N`Z!g/S+rf7,@NK*pr!K2j7M>rA3L]3&.L&Zi*KE$N'Jc1-!J,XopIJeKbHi8?i
+IK+crJ,Xt4JV&K+K7nr4L5(J>M2I4MN/`jYOHG]iPa.Q$R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(OA
+[C3TU]"G\i^VRe)`Pom=aihlPcHjnce'uq!f@\g2gYL]Bi8ESSj5f=ak32'olKdg'mI'uB!V#XY
+ncA@Srq6<bs7cKes7u]kqtpBjr;H6dJcCl4J,~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/iVqa<hqm5Fg\BM&f`KgXfDO;$g&0S'fa$0]
+f%&="daJ$>!71>6rNl4)s0_d5qR$R8[C!?KZEg_6Xq$PdH[^KuL5CkRQ^OMDY4/jt[emQ4\,a);
+\Gj&3\GNi2\GWo5\Gs)?]".UIs1/-@rOW!=!P5i=\G`u7\Gj&=\G<]6\FmE3])'&=]_];C^;%GY
+_#M7I_#;+J_Z%IQ`;IOP_uRdP`W=-$rl=uWqoA`XrQ5)^rlb>cr6=u]!71PhrmCbo!7Uqs!nGlR
+qq1l#s4I5%rS%>-rS%A.h>?%1hr*JjirA'9jT"??k5XTHkiqBtrTjFLs6a4^nF5u=oCV_Kp>t&X
+bf7W9`4`4NV4sWRS"#_/P`q0B\@&WFYG\L[JZ?B!YaU$6S:t$[CIi5eLIt<=It<E9PF\89:Jt"h
+<)KQlVl,W=P*;3#SXlCFTV8-YX/u3upm;#Hqlo^t!3j!5s2"EGrk\0@qnN'C!0dDFs,d;Crf@)>
+!0-u:!fMqnreU]4LPPk`!el;\re(6&s+1-!s*t&tqL/6gr-S<gqgJKns*t#uFFf$qK7ei2Knb>;
+Ll$tGN/WaVO-#KeP*D5sQ^F20S"-(ATV8*TUo(&gWiE/&Y->1:ZaI6N\[f>b]t_A!_SjF5aN2NI
+bg+M\dF-Lne^rF+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6EgrqcNh
+rqu`no)=4?P5g%~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/T`1S_T(/B@SGnuZR[KT?R.Z%"Nr4t7NX(Q(
+NK0!WN/IUk%WQl+BPD7#Df^)IIY*<1oo/p1qMb91ooAp1rf6r<mZ7F0plPN:qN1W9rfI)>r/gl<
+oT9'7qiLf>s-!DEoT9!5rf[5Brf[;Fs-!ADrf[;Fq3(cArK7/Ep6>TBqj-i?rg<VOqO%5L!LfMP
+SG\rRScYOUT)PA]T`1VdU8+LYU@k;\U]@7jVYm=lW:QthWiPut!3Q4$riQ1&rNH7*;mEX6Za7$F
+X/)DWR$EbnN.Z\/I!KjVF)l5<Ci,2jLk^S7IXZ3NJVoA8F_5f9@mEge4]GZr5t4@QA8#h"F*;h!
+84Q?I8q2ABIr9.BE-$/GGlE!rH[UBpJE,\NjQ>V%F8g:]F8L[`L&eHfs8S5TP2q`*PQ$aFOT:LB
+O8k4?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,auoIJ\EiHi&3fIK+crJ,Xt?JV&K+K7nr4
+L5(J>M2@+KN/`jYOHG]hPa.N#R$jD4S=Z=FTq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf^VI\&`5Ta;
+aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0h
+qYU0hr;HTbrdk*4s*t~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/;"mc[;#=&f;#aDl;#X>h;#*le;"[QU<Us,c
+<Vo`*5!_4n5<_D"77Tg;8kMkV;#aAq:esk^:A@QZ:'"'ar_<Dfr(m;epeUfaqbR,b!)<Gfr(m;e
+oM,?\s%iPfrD3;c!)NSj!)NAbr(m;er(m>hqbQTUr(d;hr__oV!)`Ab!Du\d:]=2i;?'Pg;?'Gm
+;>X8k;uKVl;>=&g;tO&g<W5tq<W,tt<W5r!<E)rl<rH+u=T2J%=9)M'>5MP(=o_e+>Qe87>?kD3
+>l@q9=BAEt9h\,J6pX%$r]U9@!&sj71IXVt69dXs4$u;!69[Ii3&`QE*%!$].PN\32)@*L3BTGj
+6:*Uh2Ej;`91_ZH5<qS&6iBC]7S--A91qm/JqJ]0L%[b.:@q=%YaqAXT:hjNU8"EYUnsobVPpGn
+X/rG*Y-+t4Z2Cp.[/RK5[Kj:O\[oDb]Y4<Y$bsKl^qmk(`5KX7`r=$Xa9Ki3bKS12<q]VZ<r>qt
+PQ$aFOT:LBO8k4?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,auoIJ\EiHi&3fIK+crJ,Xt?
+JV&K+K7nr4L5(J>M2@+KN/`jYOHG]hPa.N#R$jD4S=Z=FTq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf
+^VI\&`5Ta;aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*ol;o()DDo`"O`
+p&Ojcq#C0hqYU0hr;HTbrdk*4s*t~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYl!DYi;_[:hVHuApt>`$pt5W"rS%8(!SH$'eHFCM
+dEp8;cN'a5V!bYa[K<kD[JmK3YRmspR<a(,JVAo<Ng,s&U8bEm[0!eE[f3]6[emQ3\,a)<\G`u2
+\GNi4\GEc7\,s4N\Gj&4])T>?]D]>?\H0:PqmcU8qmc7.rODO2rjqs<s1J3A!kuFaq8!$Hq7usF
+rkeZPs2=iQrknfUq8NHUaSs6Y`r!gVaSs<\b5TTabl#`[c2c2fd/MGmdf7ere,n1OfDF5!g&BY%
+f`9b*g]-(.gB-0dh>H.0hZ;Zor8R_9r8dn>rT=.Cs60LJrTaIMrpB^Q>jq1Po(2MEl.a_3ai;0:
+_69l9US+0JR?s8*PE3Ae['Hp<W3)&2V8B=PW0r1$O+UAKDb"VkLIt<dIt<H:Pan;9:Jt%i<)KQl
+Vi?k%Od)6%SXuLITq\E`XKD@!pQtfDs021$rNNm5r5&'Co>(7<r4`2q!0dAE!KiKCO8k4?NW+k<
+Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,XomIJ8-bIK+crJ,OluJV*lR!JH1+L1Q-rM2@+KN/`jY
+O-,TgPa.N#R$a>3S=Q7DTqS6WV5L5jWiN8)YHY==['mEQ\[oGe^;%M$_o9U8aN;WKc-FY_dF6Uq
+f%8R-g=tH>hVd>NioB+]k2tjjl0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmoDX=@
+P5g%~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYkt*mTD>)MSbnrSSc>5ZRfo1JR@'B>QN3EFJaSQl
+Nrk?$NrG";M@bV^G@Y2sBl%[,Fa8@aJqf0WMu\k6N;8J+Nr+n:Nr>%2OT1IAO8t@:OT1C<OSk1=
+OSt7<OSt7;O8t@>OSt==OT(CBP5g[:OSb1?P5UOBP5gaGP5^UCP5gaAP5gaGP5^[=PlI$GQLgIB
+R/EBLR/E?RR[]fASGf#OT)PA]T`1YbU&^t`UAL\cV#-qeU]@7jVYm@lW;EOoW;ERoWW9*mXT,F$
+Y5PR(YlD":Za-[.TU_C8OH5BTJpr&mGBJ"JDJj</Nf8dKKn=c%E,:&cJW+tuAT)9k4]53@;dEp#
+7U9G5BPha1G'QSK7ncQJIt)ucDJsK7F*;bPH?spcIt*!#iT&tZjlPWFEr'hWFSp4[L%U3!Ye'l4
+OnFn$OoLXGPPpXFOc]R's,I)=repo:MMhCi!f2Vere:K.KS9>Ws+:9%rIFotrdOZkpO)dbs*jut
+rI=p"K)UB'KSBD[AVZ(uM2I7NNK0'\OckllQ'I]'R$sM7SXuIITqeE[Vl-MoX0&P.Yd1UB[^N]V
+]"G_j^VRe)`Pom=aihlPcHjnce'uq!f@\d1gYL]Bi8ESRj5f=ak3(smlKdg'mI'E2n*olHncJFT
+o`"Lbp@n=[q#C0hqY^6hr;HTcrdk*4s*t~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYkq8j:\R]`:\did;>X2a:B4)]:$P^Y<;]br<WQ3$
+r)F;-4[;(l5!2%q6UjR88P)WOr_Ner:f'q`:/:UZq+gf]s%`Jfr_E5ar)!8dr([5dr_EAer_E)[
+s%`Sir(d2dqb@,er_NSjpeL`_r_E>d!)WPgm83^V!)WVkl;.IXoM>Td:f-m^r_WSkr_iJfs%r_m
+r)3Pnr_iVjpeq)io2P]hs&AnrrDrntr_ru"<)clm<r?%t=T2J&=9)M'>5MP(>5qh,>lS".>5hb+
+>S:=I=B8<s:.n/K6pa.(4?bkh3rCp-770F/5Wq:m6:!k'4?bba2`!0=)(6p^.kih52)7!J3BTGj
+6UE^j2Ej8_91VT>5<qM&6:4(-7n6*@8kMcKJ:`B*KS5%C55d\G5l!YE:A%E]YQLGfStQ%V&Yu1t
+V5:&fW2ckuXKAV-YHY;1Z37M@['d=@[L0OT\[oDc]Y2%o^Abk[^r!t+`5T^8a2Z0@aiV]KbKA!*
+<qTP]<r>ttPQ6pGOo^],rf@)>!0-u:!fMqnreU]4LPPk`!el;\re(6&s+1-!s*t#sq0i!bq0i9l
+s*sut!J,k%K)pXZre>!>Ll$tGN/WaVO,oEdP*D5sQ^F//S"-%@T:qsRUnsueWN*#$Y-5(8Za@0L
+\@K2`]tV7t_Sa@3a2lBGbK\>YdF$Fme^i@)g"P3:h;7)JiSrnYjlY^gkiqBum-O--mdKW6nc&(\
+oCV\So`Fj]p\jmeq>U6gqu-HkrU^#>s-!D4~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkm>XhuqrohVHr]gAT_$fDsV&gAfh2f[n^)eC2jm
+ps8c3rh]Xlj0fi4[C!<HYct:5YE>H&IXd!*M2[O]S"?CU[/.05[^EQO[JdQ2\,Ei:\c'&:\bW`:
+\[]0G\c9/>\bru6\c'&<\H'/=\bE]7\H9@S]DT8=\bio8\bio.\c'&2\c02:]DfJ?]`Pp_^\P\F
+_>1nF_>_=N_uI[Q_u@RS`VIOOa8O$S`rO3[ao0B]bQ#fbc1fN`chl)hdJqYpe,Ro!e^i@Lf_sM&
+f_sM'gA]k,h#H./h#H4-h?)TmiV_^7j8A!;jo+?Ak5sl3lM^#Km/?>Omf2bUnON*3gXF9d`l5p7
+ZDjasU7[pER?j&$O1`$1ZELF/X/DDba/QqVS!JhkLNHHbF@pJ!LIuc8ItEN=Q(4G;:Jt"h;c0Hk
+ViLb=%$[0MS=Z@GTq\KdXfhL"s-N\Mr0R8GpTa\$ri`s6qSDsDrk\<DqS2sBs-3YMPEZ!/!g/S+
+rf7)?NW+n:MZAY6M#rKgL]3&.K`Hf)K*$XUJc(&uJ,Xo`IK"]qJ,OotJH1<$K)pXZre>3DLl$tG
+Mi<XUO,oBcP*;,qQC+&-S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\%0)^]Y;.r_SX71`lQ6DbKS8W
+d*^:jeCE1&g"P08h;-uHi8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&Facp\jmeq>^<gqu6Nk
+rU^#>s-*J5~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkk$lTCnfMSc,)TSc5/ZRf]%HR/30LR/_^;JGFcr
+K&_n0NK0!XN/ELLM2H;"A7fLjDJsT?H@16rLPtte!0-i6q2P'-r/^f:r/^N4s,m8A!0?r;rf?o;
+qiC`<rf?u=rK$i;s,[,?rK6r<s,m>Es,lr8oTB0:s-*JGrfR2Cs-*8AqNLT:!1!GIo9]HDr0dGL
+r0dSR!1WbRrLNVQrh'1_rh9@d!2K:_s.][lUSO^_UB%+hV>mFjVuN^mW;rmnWW0!kXT,F$Y5GJ3
+Yd(I6UnF3FQB[GjL4Xl$G^+=QF)Pu6D2jI0L4k,,I<p$dP(/C<G&qG8B37>[=$]hmAO9U,@:X%g
+EH?;K7n?-D92'hcJ8K1AEH6,DGBeF[H[L<oJV2q@j5]4^jlZG\olKn_!3uL,ri`s6qN:H6lB2+3
+!gJn4rfR>FOHBI&!KN0=N;ne9MZ/G6LkgcbLAur-K`-N)Jq8LNJH(,uIdDL^IfForJH(0#K)UB'
+KSBD[CPR_&M2I4MNK0'\OHPcjPa.Q%R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3QT]">Vh^VI_'
+`5Ta;aND]McHaeadaQ^rf@S^0g>(N?hr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamc
+q#C0iqYU0hr;?Nbrdk*5s*t~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkh2i:]F5k;>O,e:\die;>O,`:]=&`:&duO<rH"u
+<;T\p<"qJ^3^,bk5s[q/7n-'B9MeP_:esmd:AIW[:A[cc:B"&h:B+&g:A@W`;#F,d:B+&g:A[ie
+:@h3U:B"&c:&n)h:]O;d:Adoe:A[fe;#=&U;#F)h;#O8V;#aDc;#aAm;#!ib;#X>k;Ys;m;Gg<i
+:]OAj;ZB\p;Yj8d;Z9Vd<;okt<;]bo<rH%r;ufqt<WH.s<rH+u=T)D&=T;P'>5MM/>$G39>[(E9
+r*'b8<`;gi91_WB6:!e!4Zkhe3W:p.2ap&$69[Op4#o5b6p3[p2a'&U2CBIl/1rJ-2D-[<1H7BW
+4[DG%2`N]Z4ZQ/,83oI*5t""+6UXC684Q<H91j_cJqAW.KSB:er]gEJqEOaN!3uL,riZBpT:u7Y
+&Yl.tV5:&eW2ZesXKAV-Y-5,/Z3%A>[/RK5[Ka4N\[oAa]_fDI^VI\&_o'Fl`W*p`a2uHGbK@uL
+b5,06=7]Jm<W#nq<WA<cP`q=1Oogc-OT(:ANfF$ss,-l7reU]4LPPk`s+LH+rIY0'JV!`Ls*t#s
+m!\k^s*suts+(0%rdt6)L&QgBLPUeDMMmFQNfT6_P*2#nQ'Rf)R@B\:StD[LU84W_Vl6VrXKA\1
+Z*UdE[^WfY]=bkm^r!t,`Q$!?b0/#ScHstee'uq"f@em3gtgfDi8EVTj5f=akNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H6dJcCr6J,~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGqVhG3s5*q8h;$c[gABS%fDsV&gAfh-f[n[Qe,n(G
+d/2/gc2c,eV#@.hVW5,b[0!_@Zi7-?Y,cK+WdK5DKntYHPa@l5VQKd(rO2a6rO2U4rODm<rODd9
+qR?U;\@D@F!P#]<\G<]7\Gs)>\Gj&5])K5A]">TP])B2:\G`u8\F[90\GEc9])K8>])0,<]_fAD
+^;%GY_#M7H_#;+K_Yq@P`;RUP_uRdO`r3sV`qm^WaN;R%b5TTabl#`[c2c2fd/MGmdf7c!eCE+$
+fDF5"g&BY&g&B_*g]#t0gYCT`h>H.0huD[5irA':jSn9>k5XWEkQ'oHli6>NmJcPRmmH6md`KVN
+`PTL%WMZDbSt)7=QBIDnO1DR%YH=b'VO3U0O,^$)MM[sVHr+TjHq\U3F`hkQIt`iCQ^XP<:f:(i
+;c3Ol%ul[5Od)3$S=Z@GTqeQdY4qtqQhm$HQhm$GYQ1s,YlCp+Y5bW<s7aA+_Yq=F_"thE^&XJu
+Q2d'KPQ$aFOT:LBNsC])NJrgSMi.Lj!f2Vere:K.KS9;V!ePuSr.+crrdO?brdOirrIFp!!.t3&
+!JH1+L1Z3sM2@+JN/WdXO-#KePE_>uQ^F20S"-(ATV8*TUo(&gWN*&%Y->.9Za@0M\@K5a]t_=u
+_Sa@3a2lBGbK\>YdF$Fme^i@)g"P39h;7&IiSrnYjlY^gkiq?slg4!*mdKW6nc&(\oCV\Sp&F^c
+p\jmeq>U6gqu-HkrUTr=s-3P6~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGqOmh[nt,]KrLE\S!1a"W!h,OErKmPMrKmG4rIOs"
+j,a5#!f`.trJ;)@@!.$2B5)7$E-->NI=d01nr3C(ooAs2rJpf:ooT39rfI,?qN1Z:qiL]9rK.&?
+r/gl<qiLi=r/go?q2b`AP*1rioT8^-s-!AF!0[>Drf[;Fq3(T<qiq,GrKI;Iqj-l@rL!JMrL!JM
+s-`qWpRM5RoUc&Ss.K=as.TLgpnI_^rhTFd"JhljVPa9hs/>gos/>gos/H("orJ.qr3#t$>,nBl
+S!]M*O,f$IIX?EdF`VVCDJX-)Mhm(?JUVrkFDu)5BmXu<CNEuj4&8RW6!.Pu=^56@@qfh#FEi%#
+8OlHI9RhSDD/O61EH?;IG^=[_I=Hg"hr*JQro4(@jlQ;YoQ0qb!3uL,s0)F)s/j$8pQ>*2mZ@L8
+rg!MJ!0dDFs,d;Crf7;ENK&mUMi3JlM#rKgL]3#0KnP-XK*$XUJc(&tJ,XodIK"]pJ,OotJH1<$
+K)pXZre>$?Ll$tGMi<UTO,oBbP*;,qQC!u,R[]h=StMdOUSOcbW2ZeuXfen4ZEppH\%&u\]Y2(p
+_8=+/`Q-'AbKJ/UcdC.heCE.%f\,!5gtgiEi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!qZ'Vrq6<b
+!;HHes7uZjr;6HjrVc<dJcCu7J,~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGrD<)]r_WVlr_NVk;#*oc;#O8g;#=&g:Amud9`7]b
+:?,CQ<W,l2;a3K45<M(o5sRq/77TpA:/Fb_:]=,b:&.Q]:&duf:]F2i:&du`:]+&f:]!od:&dud
+:]=,]:&7W`:\mfd:]=/j:\[]_:BO?d:/:^_!)WPgm83^V!)WVkl;7LXohbZc!)WGdr_WSkr)3Gi
+!`DlmrD3JkpJUibpeq)io2PNcr)Wbrqc!Yt<`W5t<r?%t=T2J'=T;P'>5MM(>5h`7>[(E9>?b?6
+<`2gj8P;TC6:*n!4Zkkf3B&lT2`3rj69[Rr3]T/V2)@$L3&riP1+4"e-SI&(1b1:61G^pK4?l+u
+69$t`5!;#$8Ou-35X@_'6pjC47n?0D9MBnbJ:[]O!eZ/ZrBL6Er]g?Hq`k!S!3uL,s0)F)s/d97
+U7n<VUnjiaVPgDnWiN5'Xfek3Z*:L=Za-pErj<$?\$roZ]">Vgrk8]P^:qD!_SX71`;[aU`WsT,
+aiMTFaiX9XqH*8hr)NbtrD`i`rg!MJ!0dDFs,d;Crf7;ENK&mUMi3JlM#rKgL]3#0KnP-XK*$XU
+Jc(&tJ,XodIK"]pJ,OotJH1<$K)pXZre>$?Ll$tGMi<UTO,oBbP*;,qQC!u,R[]h=StMdOUSOcb
+W2ZeuXfen4ZEppH\%&u\]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\,!5gtgiEi8N\UjQ5OdkNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjr;6HjrVc<dJcCu7J,~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EI"q;M>2"lJ1nh;$c\gA'>%f\-2Vs4IJ+f@BlM"k(fF
+d*L&9cMl&gU\gkbV=q@b[0F(HZa-j?Y5YO9Ngk9@ItEB2MN3piT;&<l[C3L;[f!W4\Gj&=\GNi5
+\Gs)>\G<Z9\@MOIq76L7s1&3@\[hFFrj`'@]DB,;\c9/@\[]0J\c9/>\c0,1\c'&7\bWi6]D]DB
+^&>YF^\>PD_>1nF_>V7M_uI[T_u.IQ`V@IOa8O$Ta8a3\ao'<\bQ#fac1fK`chl)gdJqYpdfe1N
+f%/IMf`'S&f`'S'gAfq,g]cHfgtgiCqq_D3i8ORms5X(=rT4(Aroa=F!9sIJs6T^O7df[*gsX<d
+`l5d2];hd'U7[pDR$NntP)d&ZZEC=/W2>oGO,f-TLP:A-H[9gXEcZ>CEclMKGC>!sO-#g"TNP,i
+:K:@krhg9cO-5ThQ'n/6TV/!QW2cuns8J;aQhQgGQhcsEYlCp,Y5>?9s7aA+_Yq=M_#M1I_#;%F
+^&sahQBqN8#F(F9P*1riOT(:GNfB$WN/NUOreU]4LPPk`!el;\rIb-%s+1-!rI=cpp3ljfs*srs
+!eGrTrdt6)L&Qg9LPUeDMMmFPNK0']OckomQ'Rc(R@9V8SXuIITqeE[Vl-MoX0&M-Yd(OA[C3QT
+]">Vh^VI_'`5Ta;aND]McHaeadaQ^rf@S[/g>(N?hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)WirVZWmoDX=@PlH7~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EH6q4R_ZnXfZLrLE\S!1a"W".GXFQi!*JQN3ELJGaua
+O8"Y<NJrgSMM_=g%rli(AS5^oE,]rFI"-d&MtDu(NV/>0O8b1:O7eV7OoCIAO8=t:O8G%9O8Y1?
+O8Y1=O8=t<O8G%=Onk(AOckliOn=b,OT:RCPP^OCPPLC;PPg[FQ2QpIQ26g>Qi*6KRJiNLR0&hH
+S+rNQSb/NQTDtS_U&UheU\CM_U]%"cUB%+hV>mFjVuN^nWW/poWW/suX7`OoXo,@%Y8".>UnO6D
+QB[GiM1^8(H['[REH#gpC_hqaKnY),H[0^PD/3ftARf1T>?b33<rH)1=BSg4?Xm\aDK9iE9h@oH
+r_*BCJ:[];s)8]nFa/.WH@($hJUu\7i8EVSj5f:_jo08qEqOJSEeaLrs0)I*qlRX5pQ>'1o8s6=
+Occ#tQBqN8#F(F9P*1riOT(:GNfB$WN/NUOreU]4LPPk`!el;\rIb-%s+1-!rI=cpp3ljfs*srs
+!eGrTrdt6)L&Qg9LPUeDMMmFPNK0']OckomQ'Rc(R@9V8SXuIITqeE[Vl-MoX0&M-Yd(OA[C3QT
+]">Vh^VI_'`5Ta;aND]McHaeadaQ^rf@S[/g>(N?hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)WirVZWmoDX=@PlH7~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_ni$%-n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EG=;>j>_:]F8k;>j>d:]4,g;>O)h:\mib:\mc_:%hWT
+<<-(t<<-"t;\;/W3B]Ph5=._,7n-*C92JD[rD*2`qG-l]!)EMhs%`Pfs%`>br)!>fr(d2bs%`Jf
+r_E)[qG-ubqG%#dr_NSjpeL`_"&;Qb:Amug;#=&V;#F,h;#X>k;#O2Y:]OAb:]XEiq+pudrDEJj
+r)!Mn;,R9gs&&Siq,-obr_rDfq,R>nrDi_o"BAK'<E8osrE&r"rE0,&r`T8)pKJeG>?b99=&r6s
+:eFAO7R9@*4Zbeh3B9&V2Dm<Z6pa+%4oRJA2$bul1GLR9/M/OQ/,h(@/MA\/0f([H3^#Yk6om7e
+2Ej;d91_Z?5sI\%6UX<@7hJ9^92&!,I=H`tJV&N,KS2NQrBL3Dr]g<Gr'(0Wr364)s/u7$s.L+#
+USO`_VPgDmWiE/&Xfeh1Z*:M4ZN%62[/RK5[g0FR]=Y_g]tOEZ"2DXf_Z%IP`;ddYa2uEErQ,#\
+pK%,lqH!Vrr)WPl".5F@QN!-SP`q;oP*(lgrf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc1,t
+J,OiiIJeQoJ,FfuJV&LQK)pXZre=m;Ll$tGMi<USNfT9aP*;,qQC!u,R[]h<StD^MUSO`aVl?\s
+Xf\e2Z*UgF[^WfY]=bkm^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'
+mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTcrdk*6s*t~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/VOp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^=ugiVqd8hZVflgtUTYg@a.ug'cTdf%&=#e'l^kd*MU7
+rQY>:rM9@fosOG!rj*WPZa7$FZa$d>Y-"b+XHK6'I=R$,M2RO`S=l^Z[/RK6\,*Q2\,Ei8\c92:
+\bio.\HB@P\[_FFrj_m:p:C76!P5o>])B2>\Gs)>\G`u<\Gs,>\FR30\GEc3])0,<]`5\D^&YqB
+_#D1H_#;+J_Z%IQ_uR^P`;dgO`r3sV`r!gVaSO'ZbPo`ac1fN`chl)gd0S1Le'upuf%8ONf`'S'
+f`'S'gAfq,h#H+0gthe_s53n9qr7Y9rT*q=roX7Ds6'LJlMg,Km/QH)m,ZpLb/hTA_SNd^WM?2Z
+R[KS0O-#H_\?W?BY,\LTJ#ABgMi!.?K6qohGBNn+s)KH.F\Y_[JVK/GQ^XM;:fC4n<)c\mW2GZ;
+OcblmR@Kh?T:hpVX/u!on!3s?q3D)IYHRr.r2ot"!3<s9p;-UBrk\QKrP/BJr4i-Cs-WhQ!1*VL
+#F(F9P*1riOT(:ANfF$ss,-l7reU]4LPPk`!el;\re(6&rdjutrdXHerI=crs+13%rdt6)L&QgD
+LPUeDMMmFPNK0']OckllQ'IZ&R$sM6SXuIHTq\?YVPgAmWiW>*Yd(L?['mHR\\#Mf^V@V%_o9U8
+aN;WKc-FY^dF-Oof%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Eg
+s8)Wirqu]moDX=@Q2c@~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/VOp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^;\&T_kART(&<JRff(GQ^@W9rg3YPrdacpqi:-+r/Uc9
+s,?u9!fDhjreCu)Ht-f'Ci403GBnXgKno>[q2P*.r/^f:r/^N4rfR2Arf?o;rK$f:qiC`<s,[,?
+rK$f:s,[#<!0R,>s,m>E!0Ql7o8s$9rKI,Arfd2Aq31`@s-<PIq3L`@qj@;Lrg<ML!h,UJpmh>S
+o:GuS!204_!huHbpnIb_rhTFds.o[ks/,^ls/>jpri#aos/Q+"r2]n!qlK[t/ZPV?R[9>)O,SpI
+J:)]gG&q_DD/=$*Mhd">JUVr_BRsu8BkCmb@U3/@=BAQ&=!1OH=[khf@V0CoEHHGN7nH6G9MA$,
+It2ESD/XB6Fa/01H4,+MJUlS5hr!ANioC%!!9O&sqf;COrGqqAriZ1$ri?+#_>j4ko9/^-rfI/I
+s-E_Orfm_QPEV/mOcbb)Nrb9#rf$l8!/gc4!f2Vere:K.KS9>Ws+:6$r.+crnUCFdrIFp!s+:6&
+!JH1+L2D^%M2@+JN/WaVO-#KeP*D5sQC+&.S"#t?T:hmPUnjlcW2cl!Xfen5ZEppH\%&u\]Y2(p
+_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5u=o(2JFrq6<b
+s7cKes7u]kqtpBjr;H6dJcD#8J,~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/YPp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^8n/rD<Mis%`8`s%r_mr_W>br_WPjqG7/fqG-rar_3)]
+oi:W`r_req!*/qrrDNkt5!h@m5Q3qQ6q0U991_kU:AR]]:A[cc:B"&h:B!uf:A@W_;#F,f:Amoe
+:Adoe:@h0\:/1[^rD3;cs%iYks%iDbr(dDi9heC]:]F8g:[V'W:]F8j;>sDj:[_*[;=mZc;,I*b
+r_WMir)3Gi!E)em;#aDk;?0Sn;YX,a;ZBYr<)rTjq,R>n"'&B%<VfYs<E<+"qc<VrrE0&%!*K5'
+s'#>)!aJr7r*02%'N.e)91h`D6:3t#4$5Sa3B/lS2DkD#s$%/[4$c.t2Dd-E0eb75/1W;&.P!(L
+/M/V51c%!J3]oYn6UEam2Ea5e2bQ_569mb$5sn%-7R]d;7nHBHI!pHmIt3*%rdt?,5<h=qq`k'D
+r]g6Er'14briZ1$ri?^4Tq\<XV5:&fWN)u!XKAY.YPtd)ZN%68['d?N\$rpI]*#^Z]Y4<Y!l)Rg
+qnif[`Pom=a2l?BaN2Ks<r,no<rH%t<qfVoR/`KQQN!-SP`q;oP*(lgrf7)?NW+n:MZAY6M#rKg
+L]3#0KnP-YKE$Q&Jc(&tJ+8!dJ,OotJcC?$K)pXZre>9FLl$tGMi<USNfT9aP*2&pQ'Rf)R[]e;
+StD[LU84T^Vl6VqXKAY0Z*L^C[^WcW]=bhl^VRe)`Pom=aihlPcHjkbdaZdtf@\d1gYCWAhr*JQ
+j5]4_k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nbrdk*7s*t~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^G&OqVhG3s5*q8h;-lag\]^ug&B\+g"?;Ss3q5$da?Fg
+ci)/dc2OO<U].(fV=q=r[.q!(Z5p3UZ*CO;Y-"h+X,<9hH[pa&M2I7TR@U(LX0oCFqR6=2rODg:
+!4_m9qmc.+!4_d6!4`$=!kPqQp:C:7s1/3Bq7?O8!4_m9s1&'=!4_R0s1%p9q7?I8rOi0DrOr9H
+pV?dEqS<'GrPJQOpV['Npr<9QrPn]S!6G#Zrlb>cr6=u]!71PhrmCbo#1M)Pe^i@(qq1o$rn.5'
+rS%;+rnIY2gtgiEqq_D3i8FIks5X+>r8mq?"R#"4l0835rp3eRjP/,)aMu39_7?PEUS=BNR[KS-
+OH,@5Z*LO7WiDkFUoLi?YD%U\I<g!ZF`;GCEefNJ:/HFmLlRUcR\66K;c$Rq<)JXQW2G]=Od))r
+R%0\=T:hpVWq68NQ2m3JXo>F#WrT0:s7X;*_Z%CM_"YV@^&XT#R/`KQQN!-SP`q;oP*(lgrf7)?
+NW+k<Mi*DkM#iEfrItB-KS9;Vs+:9%qgeWppO<$ir.+fus+:6&!JH1+L2Md&M2@+JN/WaVO,oBc
+P*;,qQC!u,S"#q>StMdOUSO`aW2ZetXfek3Z*UgF[^`lZ]=bkm^r!t,`Q$!?b0/#RcHstde'uq!
+f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*8
+s*t~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^Da"qOmYVoq(`F!1`qU".GXFQi*0JQiEHFJbb>uO8Y+:
+N>me7Mi3IMM26tBLMqBHA8#^oDfBfBI"6g'LlM.fqMk3/r/^f:r/^T6!KiKCOoCI@O8P+:O8G%9
+O8b7@O8Y.BO-#HaqN1`<qN(]>qN1`>s,mAEo8rR+!0[;Eqi^rBqNCc?q3:oEs-3PKq3LcAqO%2K
+rg<PMrgEhVpRM8So:GrRr1X+a!2K=`rhKFfr1j:fs/#^lr29Rnr2K^pr2K^rs/Z(!!3?!u0s.U]
+Xf8+hR[9>)O,SpIIscNcG'%eGD/=!)Mhd%?Jpr&kBn(VeN.,;G?sQu?<`W6"<Y8kU7R]gT@qTXs
+F*)\Q7nH3Gr_*`=J:W2fDJsN8EccPNrd"ZoIY$;Rh>c@7i8N\Uro=(@pMp%MpN-:Rr2ot"rMopu
+_Z0=lqNCl@r0$Z6s,[5Krg<_P!1*VL#F(F9P*1riOT(:ANfF$s!fMqnreUZ3L])r/KnP-XKE$Q'
+JbsurJ+nEiJ,FisJcC?$K)pXZre><GLl$tGMi<USNfT6_P*2#nQ'Rc(R@B\9St;UKU8+N\Vl6Sp
+X0&P.Yd(OA[C3TU]">Vh^VI_'`5Ta;aND]Mc-F\`dF6Uqf%8R.g=tH>hV[8MioB+]k2tjjl07L!
+m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wirqu`no)=4?QN)I~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nh]h*n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^H*3r_WVjrD*,`q,$i^rD<JjqG75h:f%!aqbQiYp/V)k
+pf%#erDW_qs&8np&jAQ@4$Ghm5s[q-7nH?F9MJ8Wq+^`]qb7&cr_NMgr_<Aer(d;fr_NJhrD3>d
+r([2dr(m>fo1]6\:&Ric:]!oe:]F8k:\[]_:BO?d9htX_s%rSgmSNgWs%r\lr_WPhmna!]r_NSl
+peV#h:f.$br_WMir)3Dh!E)em:]OAk;ZBVo;YX,a;Z9Vd<;KVm<rH%p;up!"r`/ksqcEc!q,m]$
+qHEr)r`^7B=&Vsl91hcE6:!h"4$#G`3B/rT2)IZe6iK;,4#oSl4?l"k0/,"1/1W8%.P!&#2*!NO
+1Gq*N4$>bm6UEam2EX)b4@Vn58O5U+6UF1.7/fXY84Q6FHiAEmIKP(MJV*lR!/0r.s$$EHq*=mC
+r2ot"rMpU3U8"H[VPpJnWiE/&Xfeh1YctD2Z2h61[03qI\%'$K]DoPD^&G_H^r$&f"2_sn`;[dS
+a8a3\anAd3=8Gtf<</HdR/`KQQN!-SP`q;oP*(lgrf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:9%
+qgeWppO<$ir.+fus+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u,S"#q>StMdOUSO`aW2Zet
+Xfek3Z*UgF[^`lZ]=bkm^r!t,`Q$!?b0/#RcHstde'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$
+m-X60n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*8s*t~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A;Bo()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$k5Qq;M>2"lJ1nh;$f_g\ok!g&Kb-g"=mTe-=CMdF$=f
+ci)/cc2=F8V#R:c[J[E1Zh:U/Z*Ud?YHFq-ri-NkSpPj9KntSEO-H*)USk6'qR6@3r4)^9!4_m9
+qmc=0!4qa3!4`$=!kPqQpU^=6!kQ"Uq7?R9!4_p:rj_=*!4_s;pU^76r4E$CrOr9HpV?dEqS<$F
+rke]Qp;?sMpr<9QrPn]S!6P)[rlb>cr6=u]!71PhrmCbo#1M)Pe^i='qUkf#rn%5(r7_2*rnRP.
+s5!_4r8%P5i8NYlirA'<jS\-=joFTDkY17+lg*p&jP/,(aMl*6_7?PEUS4<NR[KP-OH,E`ZEUL5
+X/i%HT<>K;Y*s[-T6O^E@!P@aI"m>M;1!kIN/s6nS"<DQ;,C=m<)KLkV[nfMOcu#oR[fn=StD^O
+W2fFgo9TEAn!<sSrN#gq`W,YJq830Js1e]N^qf]Zqn<-#R@4&A!LK,OPm<P;PEM)kOc]R'!KN0=
+Mueiore^Z2!/LQ.s+UK+re(6&rdjrsnULIerdb'$rIY-(L&Qg;LPUeDMMmFPNK0'\OHG]iPa.Q$
+R$jD4S=Q7DTqS6WV5C/hWiN5'Y->1:ZaI6N\@K5a]t_=u_Sa@3a2lBFbK\>Yd*^:keCE1&g"P08
+h;-uHi8N_VjQ5Odkiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7u]kqtp?irVc?eJcD&9J,~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A;Bo()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$hp$q4RSVoq(`Fs.'"Us-WqUQ^@Z:rKmMNoRZ+arf%/A
+NK&gPLk^]aL(A9M@qB@iDf9W;H$t0nL5Pbbqi19/r/^f:r/^T6rK7)@r/^c;qiCW9qiCc=rf@#>
+"-8P*O8G%<O8G%=Ont1>OoLREOn4\+OT:RCPP^OBPPUI?PPLI?Q2-a@Qhd$GR/iWMRJrWTS+iHQ
+Sb&HPTDYD^UAq"`U&^tdV#7"fV#R:jVYm@lW;NXoW;W^qWrB'sX8o=!XBVg.WMH2UQ^3eqN/<.;
+I!BmZF`VP>CM[d%Lk^V7J:)TVI=m33IWT(AEa;1&8QnAZ?Y!_;7:'J8C2S!3Fa6JJ84Q?J9M0__
+JU_QSDJsK7FEVqTH?spdIt@USs5!_4"5r.tj8J'<E;4GKEr:"YErU4YErN0=X8Ap9s7VTNP5LIB
+P5CC?OT(CAO91l=RJrQSQ^7W9#F(F9P*1riOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi*KE$Q&Jbsuf
+J,FirJH1<#K)pXZre=s=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIITqeE[VPgAmX/rG+Yd(L?
+[C3QS\\#Mf^V@V%_o9U8aN;TJc-FY^dF-Ooe^rF+g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s-E\8~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A5@o()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$l95rD3Jir(d#_qG?u`r)!>hr(m;gs%iSgr(m>hoM,'[
+r)EVnoMY]fqGIo&4[M7o5X.P#6q'O78P;WM:AIW]:Adid:B"&h:Adid:Adof:B+,f;#X8h:B!rj
+9MJ5V:Adof:@V'W:Adoc:B+,i:]O;b:Amrj:/+GXrD3GiqbQWVr(m>hr_`YkrD2lY!Du\m;><rh
+;,C*d:]F8g;>X8h;#sQlr(mAjr_i_m!)iPgpeq)io2PTeqH!SqqGdAmqc<VrrE/o!!*]8(s'-7A
+=BAEu:.n2N77':+5!(eg4?5D\r\Xs>6:!k"4ut_kr]Vhs3B/rV1+aRi,V:W!1H%6N2)@$G3BTGi
+6:<aj3&Wra5<2>-84c-65=%U76O-"L7Rfp>8kf52s*Xiq"+PiPK)L<'4[)'u5P@AB5Q7b_X8An'
+UnsufWN)u!XKDK)"0\r5Z2V$0ZaB_>&[o3[\@T;a]">Vg]tV7t_8=+g_?@cp`5T^p`r=$YaS&[1
+=8l8#<W?+i<<AVWRJrQSQ^7W9#F(F9P*1riOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi*KE$Q&Jbsuf
+J,FirJH1<#K)pXZre=s=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIITqeE[VPgAmX/rG+Yd(L?
+[C3QS\\#Mf^V@V%_o9U8aN;TJc-FY^dF-Ooe^rF+g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s-E\8~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_hr!AMpYl/1"5htkh"f_)g@a,%g=b02f)F/$e'c[lrm1Yk
+q9Akurf-lRr2'%nrNuO0pp(mEZEga>Ycb./X/W(TQ'loGK8#/?N0'?oStr9er3lO4s0r*?\F[65
+\@K,Zrji'?qRQX;o!nb1rjh[4rOMp>q7?I6s186@rj_+$s1/3BqRZR9r4E$CrOr9HpV?dEqS<$F
+rke]Qp;?sMpr<6PrPn`T!Q`C[b5TTabl#`[cMu5gd/MGmdf7c"eCE+#f@ToPrn7;'s4R>(s4dP.
+"P__fhV\7fs53k8qVqP8s5a(=roX1C?0^b@jP//)ai236_RZ\FUS=BOR[B>)OcYT_Z`p[9XK/4K
+I]KinXdFEtSUb'L@!G:aIYUQk:jRVGNK9KrT4Ukr:fgRp;KJb7ViHb"P*D2sQ_'_<StD^OW2Zlg
+s7qr\Q2HsFQ1C4CQ^4\Qq5XIo`rGbKqSN6Js1n<BqnE*"!h,OFrg3_QQN!-]P`q;oP*(ifO,o<]
+NJrgSMi.Lj!f2VereCH,!/1<'s+:6$q1/3hqLJTss+:3%!JH1+L&m'creYBIMi<UTO,oBbP*2&p
+Q'[l*R[]e;StD[LU84T^Vl6SpXKAY/Yd(OA[C3TU]">Vh^VI_'`5Ta:aND]Mc-FY_dF6Uqf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Egs8)Wirqu]moDX=@QiDR~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nh]h*n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_StGSHs.B"Vq47MV!1j+\!M#YVRKJtFR$[`:rg*VPrb_^S
+rbh[dr.4!jrf%nVNK&mTMi*CHL4t>!FE_5+CM[m-Ecl\UItNK6qMb<2p5]$2rf6o;p5o68rfI&=
+r/gc9r/gf:s,d5@rK%#?plPK9qiLi?qN1`>s,mAEplGK<rK-W5!0[;Eqi^rBqNCc?q3:`@qNh/J
+s-ESLpmCZ@rgNkVpmh>So:?#UTV27WrhBFfpn@b`qkX1crhKOjrMKLjs/>jps/>mqs/Q(!p8et-
+US+'BQBI8fM1^>+H$FLTEc5o6rb=0EL4k/.I!TRAK7o23FCT91@7N[W>!Q.rAO/dT?XdYbDK9iE
+<(KPL9MJ2R?\!]XDuOVaEH6&AGBeCZH@('iJUlMSg^)`mhV[8MioB(ujSa&uE;+AKErC(YErL.X
+ErW39WrK'<s7VTOP4Oh2OT1dOR[KTCQiWP>rfn([PEV/mOcYZcO,f6[N/W[QMZ/G6LkgcbLAur-
+K`-Q'K)U>sJG4QiJH(3#K)L<&KSBD[!JcL1M/%p+N/WdXO-#KeP*D5sQ^F//S"#t?T:hmPUnjlc
+W2ZeuXfek3Z*UgF[^`lZ]=bkm^r!t,`Q#s>b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_k3(sm
+l0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nbrdk*9s*t~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhK\(n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_r)*Gis%iVhpJ:N[rD3;er_WYlqbR2fqbR/er]pWQ5sR^6
+:AdiY<W,nq;t<id;#jGl;$9!G5<:q+5mTkG6q0X:8kMkT:&@]`9`Rre:]F2g:&[oc:]F2i:]+&g
+:]4&f:&doe9`Rrc:[h*W:Adoc:&n)h:]O;b:B"&h:B+#g:Amug;#=#h:f6^Yr(m>hr_`YkrD2lY
+r)*5cs%rbmqbI2gq,.&fr)!Jm;>a8j;?'Pn;#jMg;>3uf;Z]os;tj8g<Vfbp<Vf\m<W#np=8l=t
+=o)>:=BABr:eOGP7RBF,5!(eg3]K#W2Z>T567P2`3]fVn5X.Fn2`N]N0-;8^/M&D-2(g^C1Gq0R
+4[)+t3]B#W4[)(l5lO:X69mh%5skQ<#t.9Q7S$'B9M0X1HO,"II=?ZrJV&LQKDn%654:`.5QX0N
+X8/dqW?.q7WMunuXKAV-Y-5(6Z*CU?Za7$H[C3NR\[oAa])K;I]Y;+q_SO++_>_:O_u7LY`Q#p<
+a2lBDp/_#krDr>ds-j(YR@4&A!LK,OPnB7EPEM)kOH>NaNfK*XN/NUOreU]4LPPk`s+LH+rIb-%
+rdjlqpOE$is+13%rIY-(L&Qf-LPYqdC5Rq.N/is[OHG]hPa.N#R$a>3S"6.CTV8*UUo(&gWN*&%
+Y-5(7Za@-K\@K2_]Y;.r_SX71`lH0CbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'
+mI'H3nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H6dJcD):J,~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A;Bo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_ahr!AMp>H25hr!;Hh>,h*gA9M%gAT\/f[eU&eC)eDd/q\@
+cMYoeN;\b5NrP(?Ni&]QV=M%n[/RE*ZN%3/Y5k^(WtMA/N15*=J:rZ5Mi<gbR\-LVYPu!.\,Wr=
+\[_7A"1YnO\Gj&=])&u;](!9$])K5?])B8:])9,=])T>?\E:@%])K>>])0,;]E#YD^&YqB_#D1G
+_#;+K_Z.OI_uRdN`r=$V`r!dWaN=;$rlb>cr6>5d!6tGes3LVirQto!e'lgse^i@(qUkf#rn%5(
+r7_2*#i+1igYCWAhr"Chs53h7qr7V8!9F%=roX1C>O(;'f#l+Q`5'4"W2QJbT:MF=Q'IAkNJk0I
+Y-"k0X+Po)`Oi:EItjV2DcB/N8oT-38ki-.ItirFR[TjE;G^1h<)Q\oW2HPQOHPflQ'n)3S=cCF
+U84`fY4)DaQN!-LQM?a;QN!3NQN!o]W;rm<s7O5)_Z.IO_"GJ?^&X]&Rf]%HRJrQSQ^7W9!L/fI
+Oo^],rf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:6$l[\tcs+:3%FbGI&L5(J>Ll$tGMi<USNfT9a
+P*2#oQ'Rc(R@9V8St;UKTqeE[Vl-MoX/rG,Yd(L?[C3QS\\#Mf^;%M$_o0O7aN;TJbg+M\dF-Ln
+e^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^cp\jmdq>^<gqu6NlrUTr=
+s-Wh:~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A5@o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_aStGPGs.B"VqORJS"J)'PR[X5Drg3\Pr0IAL!,_^Q!,_LK
+s+:6$nW*.!s,?r7!/^]2&qu!XG[b5sBl%a.EcubVJ:iT7r/CN4p5]$2rf6o;pQ5<8rfI&=r/gc9
+r/gf:s,d5@o8rs4qiLi?q2kT=!0R&<rfR5Bo8s$9rKI,Arfd2AqigoAq3CfB!13\Nqj7,GoU5WG
+!1WbRrgiYP!hZ-YrLs1a!2K:_qkX4drM0FirMKLjs/>gos/>prs/Q(!qlE/cXK8CrTUM75P`Lc[
+K7J;oG^"7NE,]W/C1rKZKS+f)Hu*MLO,&1-AnlEg;*R-F5ZM-%5Xn4M@qKOpEccOq7n6&J9E7`b
+J-pdED/XB5EccMLGlE!nI"$QrK%o)ZgBcTkhV[8MiT&ttjR.$cEr:"XErL.WErN*9W;rm<s7MNN
+P4Oh3O8tgMRf]%HRJrQSQ^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:6$l[\tc
+s+:3%FbGI&L5(J>Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8St;UKTqeE[Vl-MoX/rG,Yd(L?[C3QS
+\\#Mf^;%M$_o0O7aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@
+oCMVRp&F^cp\jmdq>^<gqu6NlrUTr=s-Wh:~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A/>o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_ar)*Dh!)NShp.tN]!)`Dcs&&ems%iVhpeUod!'pNLrBUBK
+rBUBXr_;r`rD`\npJUibs%j7i5<D"k5!_G%6UX@48P;`Pr([&`rD!;er_NPhr([/crD3Dfr_NJh
+r_NJfr_<Dds%WMgr(lfVr_E;crD!>gr_NSjp.kT_s%`Sg!)EJgs%rSg!)WYlnkf6[s%r\lr_WPh
+m83dZpe^uf!)WPg!)WJgr)3Dh!)i\j!)`_nohkE\r_ikt;cEBhr)NPnr`/eor)NVpr)`i!qH3f%
+rEDuu<)ZUi9M7oF6UF%%4?>Pa3B&lT2)R3X6:!n%4?>_m6:!^p3&icO/gMGa/1rG.2(pgD1H.?U
+4[),"2`EWR4$>\g84c?E5sR_$62j4Y6q0^:8Ol<E9M0U.H3ekGI=?ZrJ:`CPK)e+54TI\65P%,?
+5Q7\[WW/n#WN)u!XKDK)&$N4AZ*CU?Za@*I[C3QT\bs#A]=bkm_#D.O^qmkd_Z%FV`5T^8`lJ)"
+oiCojrDrAe!1a%X!h,OFrg3_QQN!-MP`u*0!KiKCNrb9#repo:MMhCi!JlO0L'!'^K`-Q'K)U>e
+JGt-"K)L=EKS>,7L51S@M2@+JN/WaVO-#KeP*;/rQC!u,R[]h=StMdNUSO`aVl?\sXKA\1Z*L^D
+[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9
+nac8BoCW%Ts7QHerV6Bfs8)Wirqu`no)=4?R/_[~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY3qW%7o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkZ1hr!AMpYc>7hr!;Hh;%k]s4[;%r7VD/f[n['e'lbDd07nC
+cHXSWrepc7qi1N6s,@)?VPWdirj;[2pTjh()Qp3EY,nY'WMYcMH$t6sL5:_IPa7f2VQ-u2rO;g:
+s1&->n[SY0rji$>qRQU:rOMs>pUTk+rj`$?r4Dg:r42g<!4i*=k.1N'qn)m>qn)d=!58BGs1e<D
+rk\EGrPAKMs24QK!6+]Ps2Y#Vqo8`Yanj0ZbQ#fac2Pugc2>ldci)5hd07tIe'upurn%#!rn7;'
+!878'rnID,s5!b5rSIS3!oW%rqr7V8!9F"<:?La&kih'[e]GkM`5'4!WMcMaTUhO<QBdPmNK&jT
+N3BCdY,?l$VmF.<R!as^F^/0^HqJF0Mb-Z>IY*N=QC4@A;,C(g<)QVmVl,N7rfRDLR$jM8rgj=f
+USt/mY-.0ls-<>Ens/m6rg*VNri,dnaoD%MqSN9KrkS6Bqn<*%SGo#XRK/cTQiWP>rfmMKPQ$^G
+Oc]R'!KN0=Mueiore^Z2!/LQ.s+UK+rIb-%rdjHerdk*$rI]'BKnY89LPL\BM2I4MN/`jYO-#Ke
+PE_>uQ^F20S"-%@T:hmPUnjlcW2ZeuXfek3Z*UgF[^`lZ]=bkm^qmn*`Q#s>aihlPcHjkbdaZdt
+f@S^0gYCW@hr*GOj5]4^k2tmll0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmo)=4?
+RK%d~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY3:uh5o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkYFStGSHs.B"Vq47GT"J)'QS!s8Cs-WhQrKdJ"")D^hD>nGN
+D>S2OJq<EOnW!R-)2a9-MMR%CL4jVq@V'7hCiF?7GC"[eK8,<`N;JV/Nr"h9Nr4t4OSk7@OSb+;
+OSFn8OSk1<OT1C5OT(=<O8tF<OT1FDP*,O$m?.C2!0d;Crfd/@r0.)DpQbE;r0R5HoU5WG!1WbR
+rgiYP!hZ-Yrh97as.f@`qP=.dr1j=hrMKLjs/>jps/>prri5suqlDr[US"!BQ'75eM1^;*H$=IT
+E,fi5CMIQtB4upLIt)f^BRkbnHuih8Dd5\"9O0nb@;/"r7:9YADK'ZB7fGpW9ERq<JUdZ:&8uN.
+F*2\OH$Xd`I=HctJqEsU$/4.ggtpoFhr3Soj8S*?EH(>cqf;IQqJuS7ql%X:oo]*6o9&j1!M,b[
+S,\oWRJrQSQ^7W9!L/fIOo^],rf7)?NW+k;Mi.Ljs+gZ1reCH,s+L?'s+:6$m=>1es+:3%E.iq!
+L5(J=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*YHY:<['d?P\[oDc^;%J"
+_Sa@4a2lBGbK\>Yd*^:keCN7'g"P39h;-uHi8N_VjQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq-?d
+p\4X]s7uZjr;6HjrVc<dJcD/<J,~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY2>$M2o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkZN;>sAl:]=,^:]!ub;#jGk;#sKjr_NSjr(d&`r]gBIr^$QL
+r]g9F!DZAY<W#hg;u0Ak:_5cW4Zu%n5sIY&6UjR;8k`"Z:&@]a:&duf:]F2g:&Icc:]4&g:]+#h
+:]*uf:&R`e9hnI]:B4/\:&Ri`:]=,h:]=/j:\IQ_:]F2i9`Rre:B45f:B45j;=[Q]:\dfh:JOY\
+m83aYq,%)g!)WPg"&Mil;Z'Dj;Yj5k;Gm?g!)`_nohkE\r_ikt;cEBhr)NPnrDi\nr)NYqqcEc!
+q-!`%'Ne=4:ej\W84>m35<_1j3]T2Y2`CXm,Vq>55s7Fp3^>tr5<V%d3&NEB*[)g`/M8h>0JtXD
+2`a&b5XPH/"?&A*4?NO5!C9'O5lX4O6jH.N7R]j=8kf4Vs*=Wj$$giCH[U<kIXm"KK)UE!4o[_7
+5Oh#<WVWOpWN3-"XTbl2YHY79riu^6['d<M\GWo:\cBGA^])"K_>_:[_ns=/`5T^8a2l<Aan8^2
+=8l7g<<8Y\rgWqV!1EhR!LK,OPl[,5rfR;EOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi)KE$Q&JaJ!e
+JcC?#K5cKtKnb>;LPUeDMMmFPNK0'\OHG]iPa.Q$R$jD4S=Q7DTV8*UUo(&gWN*&%Y-5(7Za@-K
+\@K2_]Y;.r_8=+/`lH0BbKJ/Ucd:(feC<($f@em4gtgfDi8ESSj5f=ak32'olKdg'mI'E2n*olH
+ncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*;s*t~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb3qW%8o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y!%Whr!AMpYl/1"lJ1nh;$f_gAot,g&B_)g&9Y(f`]pXeC;tH
+dJhJocd'f7N;JP4N;JV0NpjCT[/RE2ZMUmFY-4t/X/i8"W/?k-H$t<uLPh"LOdMZ3VlR3([fEr&
+\c',;\c',<\H'57\am?2\H'5=]D9&:\c0/?\c0,9\H'5.\c984]DT;A^&GbG^\5JC_>1nF_>_=O
+_tM"K`V7CPa8<mQ`rO6Xb5TTabl#`ccMu/fcMc)fd/D>rdaQ[pe^`7MfDF5!g&K_)g&0S&g]$".
+hYuF4hZ)I7i8NYlir7s<jSJ!<k$@*,g!e'a`5KI-\Z2O#T:haER$O#!N/WdUNK&mQM2I1KM4hGY
+\"]48Ru3/#CMHCTG(b`J:j@SGNK0BpT2/?^:K(.gKr9ujNfoNgQ'n)3S=Z@EU8=fgY-5%2m/I'M
+qN^rDpQbcCrK[)Bs-N_Nri#amb5VIWpVH[Bs2"`NotUF=".l'SSGnumR[KS2R$X,)Q'IStPEM)k
+OH>NaNfF$s#E+IsM2@%EL])r/KnP-XKDpK%Jae3hJc:9"K5lQuKnb>;LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;2S"-(ATV8*TUnsueWN*##Xfnt6ZEppH\%&u[]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!
+f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*oi:rpg*]o`"O`pAamcq#C0iqYU0gr;HTcrdk*;
+s*t~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y"07!2&hTs.B(XrLNqZrgj"Zrga1^S!oe6rg<\Org*7o!,_^Q
+qec4JmuI1&qi(Q4!/^]2'o.NuDg$A8AnPmsE,foAH[^O!Ll@;iNVAJ/O8k7=O7n\6OoCI>O8Y18
+O8Y1<O8Y1?O8P(>Onk+<O8G"=Onb%:Onb%*OoCLDPP^OBPPLC>P5pj>Q1^I@Qhd$@RJ`NRS,/ZQ
+Sb/KRTDkM_U&C_cU\LP`U\gkeU\pnfV>d@hVuN^mWW/psWW&psX8T+6Vk]lQQ^*bqN/<1:I!BjZ
+FDl,:D#J)LBPIEY-Y@"&H]!9+H#dA8B4X/#:d%][@q\>$?"%>]D/jZB7S$$<9h\2oJ,X<jD/XB6
+F*DhRrd"fsIXZj#JqJ^TgCDrlg=tB;h;7&Hi8NYTj8S-8E:IrFEqj_PErN$8Voo&5Onk13Ont.A
+St2FBrgOXkR@0G0Q^3r&Q'@JrP*1rhOH5H_NW+kAMi*CKM26tCrItB-KS9;Vrdt-#n::Lhrdt*$
+EJ0%"L5(J=Ll$tGMi<USNfT6_OckllQ'IZ&R$jG5S=Z=FTq\<XV5L5jWiN5'YHY:;Za@0M\@K2`
+]tV7s_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5uIncA@S
+rq6<bs7cKes7u]kqtp?irVc?eJcD/<J,~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y"#;rD3Jir_E;c!)EJgr(ur]s%r_krD*5cs$?BEr^$QLrBL0E
+moB<crDN\qrDW_qs&8ko'i@e(4?l"k4[2(p5Xe%-77^!A9284Y:B!uf:B"&g:Amob:B"&f:B+,g
+;#a>i:B!ud9`Ife:Adlf:@_-X:AI]c:B+,h:]O;d:'"-cr_NPhs%NJgrD*DiqG.)fr_`5_r(m,b
+"A_cf:J^[\!)NGfrDEAes%rbmqbI;j;,L6h;>a>h;#sQlr)!Djs&/PfohtWbp/Lujq,[GoqGdAm
+qc<VrrE/r"*`uHC;,C(^91_Q@5sIOp4$>Sa2*!QQ2)R3K1,UjDr\Zep5=7Rs3ArfR0J+1j.46Mt
+1cR?M0f:pN4[),"2`WcS5!:tq83K7)5<qJ$6:4.27n-$>85)]L9MJ3*rcnZnH$Xd`I/\QtIt3'$
+K)UE#4oRSD4TI\65Oh#<W;NOqWiN8(riQ7)ricC-riua7['d?O\@MUK%Cs'^]Y;.q^;%Cs^qdea
+_Z.LV`5T^9a8X-[anAd2=8l7h<<Jh`SXf\K'q1PYR$a5+QBd`"PEV/mOcYZcO,f5!N!G8uMM[1G
+Lkkq`!el;\rIb*$rdjQhrdk'#rI]*CKnY89LPL\BM2I4MN/`jYO-#KeP*D5sQC+&-S"#q>StMdO
+USO`aVl?\sXKA\1Z*L^C[^WcW]"G_j^VI_(`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([
+k2tjjl07L!m-O--n*fc8nc&([oCW%Ts7ZKerV6Egs8)WirVZWmoDX=@RK%d~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY1\C;0o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]Dg[ehuDX/i<J5thqm2Fh##h+gA]e"g'?<`f[eU&e'e6Crm1_m
+c&DR[rJ^]5!fXY!qi1?1n[8D(rj2X1s03`OZ*:F9Y-+k-WiW2"VMpmdH@:C!LP^qKP*hi7W3*J:
+\EUR&])9,;])T>?](``9]"@UGrOE!@]=e*SqRZX9rji0A\@DCGs17X/s17s:!5/<Cr4E$CrkAEI
+p;$^Eq7upEs2+fRpVd*NpVm3RqSrEQs2Y2^qo\o]s31Dcs3CVgrm(Jgr6YGj#1CuLeCE+#rn%&"
+rRh2'rn75'rS.>,!SuW2hZhrphr*GOiV_^6j8.j_jP&,3a2l3:_nrsbVk]oXSXYt2Q&gudNJidS
+Mhm4HMM[1GLAlrcL6[UTF`C5JED(.qL.b9>H@^j2PF@u4:Jt%k<)QVQNK0![Od)#qR@Tn@St;[Q
+W2d#'Xf^mgr07&CrKd8Er072Gn<WpKbl@XWq8)pErk\WMp:pO>"eVBXSXl;MRfStGrg3_QQN!-M
+P`u*0#*G".O,f6[repl9MZ/G6LkgcbLAuu-K`-Q&K)U>lJGt-!K)L<'KS>-ZL&m'creYHKMi<US
+NfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*YHY:<['d?O\[oDc]t_=u_Sa@3a2lBFbK\>Y
+d*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b!;HHerqZTjqtpBj
+rVc<dJcD2=J,~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY1\C;0o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]DeE%TCSZTTD>)WSbJ]\SXc4>R[TY4rg<\Os-E\%r+u@Lr+uCm
+rbhUMqJPqcq2P?3*fGu8MMm@LLkphBL51G%G@=umC2@d+EH?DRIt<<0pl5-1q2YN9r/^Q5rK7)@
+qiCc=!KiK<O8k==O8P(>O8P(>Onk+=O8=t<Onk+;Onb%*OoCLDPPUIBPPLC?P5pj=Q1^I@Qhd$@
+RJ`NRS,/ZQSb/KRTDkM_U&:YbU\^_bU\^bdU\pqfV>mFhVZ<[mWW/psWVrjrWu%e2TV%X>Q'.;i
+M1^>+I!BdUEGoc3C23`^2eQf;B4baeAS,LaAn,@iCMR-S4?QY1<*a$#7S$ipB5DO,Fa-DI7nlZN
+95A?\DJa92EH?8HH2`+/I"$KpK7\`.g=b36gY1E9g=tE=hV[5KiSieUro<ZjnT"MJpiH7OqPVR;
+oo]*6nr`g2"eVBXSXl;MRfStGrg3_QQN!-MP`u*0#*G".O,f6[repl9MZ/G6LkgcbLAuu-K`-Q&
+K)U>lJGt-!K)L<'KS>-ZL&m'creYHKMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*
+YHY:<['d?O\[oDc]t_=u_Sa@3a2lBFbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'
+mI'H3nF?&>o(2JFrq6<b!;HHerqZTjqtpBjrVc<dJcD2=J,~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY2"^D1o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]2JK&r_NSjr_E8br_<Ghr(ur]!`2Zgr(d/c!'gHJr^$?Fs&K%a
+s$6NIqEXRNr)E;e##S8q;,BD@r]C9J4[D=36j6%N84lTPqbI/cs%`Phr_EDdr(d8fr(d8frD<Mi
+rD*>drCm5c##7rj:JX_\nkK$WqG7,ds%iVj!)NAbr(m>fs%WDe!)WMf!)WYlnkf6[q+q2i:/4S\
+pe^rcqG@,fq,%)gs%rVh"&Mim;Z'Di;Ys;l;Gm?gs&&bnpJLT]qG[)er`/\nrDi\nr)NYqqcEc!
+rE0h:<)c^k:/"8P77BI+5!D(k3B9&Zr\Xg71c-pDr\OO2q_K0L1c$d4)^d0h.kih62)I'H3&s,c
+6UWjn2Ea5&4T@PS5sR_%6UX:07n?*@7n?>Q9)hQbGQ)jeGm/M>H$XgbrdG!"J:N3%rdsu0r&k!C
+mm$;,qPOCrXf_T*!3cC+#dL\@Za@-K[^c=Gs0r0A]=koU^';Bf^qmk(_>_:U_o0L5`Q#staRrU1
+=8c1h<<]"dSt2FBrgNqWRJrQSQ^7W9!L/fIOp7&1O,o<]NW+k;Mi.Lj!f2VereCH,s+L?'rdt-#
+npp^jrdt*$!ec8]re:H/M#N6IMMmFPNK0'\OcklkPa.Q$R$jD4S=Q7DTV8*UUo(&gWN*&%Y-5(7
+Za@-K\%0)^]Y2(p_8=+/`Q-'Ab0/&Tcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak3(sml0@U$m-X60
+n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*<s*t~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]`-aihr*JOp>H56hqm2Fgt_e]!8@G*qV(r%s4@J*e^W'rrmCbm
+!71P$qi1N4s2OuHr/L]9!0?u:osO_)s0Ma2rimQLY-"h/X/rD&WMlbURs'+,KSYD?MN<siTVAEg
+[^j!?\c98>\bs&:\c',>\c',8\ad90\c9;A]`,P=])K8?])T>@\G`r@]",A_](NW6])B2=](`i3
+]E#YE^AbnA_#M7H_#2%J_Z.OL`;[aD`r3sXaT'BYb5TTabkTH^cMZ#ed/MGmdf7breGe&!fDF5!
+f`9\'g&9Y&gBQHhh;7#Gi;MR5i;_d6ir.m;jSe0cin2`'a2Z'9_nrp_VPBcTSXYt2Q&Uf`N4c]Y
+Mi!=HLkgeBLAlr2L4t87LAlu]LO;[6I>^`n:k!tPNg-!);,:%d<JHBgN/`jWO-,WiR@9\:T:VaO
+VlHo&Xf\eks8S;ZPkpXFQMHgBPl?s?QMef$Vp58?_"khC_Z%CO_"PP@^Aji*T)Y>]SGnuYR[O/B
+&!rTIQ'@MsP*1rhOH5H_NW+kAMi*CKM26tCrItB-KS98Urdt*"p43*mrdt*$s+CB+re>6ELkpnE
+MMmFPNK0'\OHG]iPa.N#R$a;2S"-(ATV8*TUnsueWN*##Xfen4ZEppH[^`lZ]Y(tn^r!t,`Q#s>
+aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tjkl0@U$m-X3.n*fc9rpg-^o^r.U!quB_rV6Eg
+rqcQirVZWmo)=4?S,\!~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb3:uh6o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]UkaeStGPG!2'%XrLNeVrgj(Z!h5XIrgEeRrg3P!rbVXOrbDLM
+rbV^QQBqH/s).^Nq/6(ip5Sp-!/pi5!/gc3!/LQ.&TW/*A8#[oD/XE9H$b$mL5M#gNVeb6O8k=A
+NrY4=O7n\4OoLO@O8P+6O8k==O8P(>O8P+>Ont1>O8Y.COcYZeOnk+9Ont1,OoCLDPPUIBPPLCA
+PQ$g<Q1^I@Qi*3NQi<BFRJWEQS,8`QSb/NRTDkM_U&C_cU\^_aU\gheU]%"fV>mFhVuN^mWW/ms
+WVrh4X/D_cSXGe.PECi]Jq/5qGBItHDf9IkC'foYB4tmgAnGUdrae`5ARo:]AS#IbAn>75='oZ-
+7RgcqBPh^1GXk:q7nm]2CM[m*Df'E3EH?>KH$Xd`I=?a!JqJ]/f\+s3g=t?7g=k<:h;7#Gi8NYo
+irA*0E:IrIEqaYSEr;4#Vp58?OoCOAOnt74Ont1>TDtM_SH,2ZRfStGrg44_QBd`"P`q8nOcYZc
+O,f5!N!G8uMM[1GLkkq`!el;\r.G!#rIOZmrIOs"rIb-'!/:E,Ckmh&M2@+JN/WaVO,oBbP*;,q
+Q'[l*R@B\9St;UKU8+N\Vl-MoX/rG+YctF>['mEQ\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'
+g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD5>
+J,~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]_tb,;>j;n:JOY\r_WPhr_<GhqbZl]!`2Zgr(d5eq`jsC!($QK
+s%`Jls$6WMr'1!Bnl>Wfqc!Jlr_ieprD=Cq5Wh+j5!D4t6UXC58P)TL:/4S[:/+GXrD3Dfr_<8b
+s%iPfr_NMi!)NJes%WDb!DQ>f:B4/[:&Ic^:B4/h:BF?g:]!lg:JO[_:]=)h:%V3];#X>_;#F,b
+:]sQh:/=[\;#O2e;#O8e;#X;l;#=#i;,U<h;>jDf;>a5j;>sJf;>!i_;tj8j<VKPm<Vf\m<Vohp
+=8l>%=X@-K;c$4`9M.fD6U3h!4Zbbd3B/uT2)I-Z6SgPT1,:^D1GUaAr\GKN1c.!G1c7-F/M8h=
+0JtRB2`Wua5XRCf3&Wqu4;C%C5s@P!6:4+.7n,m;7nQHI9MA/SrceBes*4usH$O^_I!pHmIt3(K
+JcC>s4o@GB4nV#>55RS:5l=RYVuNmuXokl3Yd+25!OK34[f3`<\@T;ark8<FrkAHKrk\QM$,a^"
+`Q#s=aN;R&<rQ1u<r,nr<q',hTDtM_SH,2ZRfStGrg44_QBd`"P`q8nOcYZcO,f5!N!G8uMM[1G
+Lkkq`!el;\r.G!#rIOZmrIOs"rIb-'!/:E,Ckmh&M2@+JN/WaVO,oBbP*;,qQ'[l*R@B\9St;UK
+U8+N\Vl-MoX/rG+YctF>['mEQ\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P08h;-uHi8N_V
+jQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD5>J,~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/DIp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_>h>Z73hr+1d"5r(nh>Z12gY1B\gAot,g%jA%fa$0]f%&:!daJ-B
+o8NU,rl+ZBs,@&>NW+q<O84h5[JI9/Zi@?1YT0jLY,nb*Wi<"rWK<]pH[^X&Ll..RQ(+G@Wi``'
+\c98@\c98>\bs#@\[oA_p:C:7!4r*=s1/3BqRZ^=rOW!="M24W]Y+3Tq7?U:s186@s1&$<s1/9B
+]"7RFrjr*>rjqj9pq-U?rkABHpV?gFq7upErke]Qq8E9Om`,4Gs2b5^qTAi]rlk>c!6kDds3CMf
+rQtSlrmLhq!7_#!rn%)#pt>Z#qqM/+s4mb5hr+Ijro!h8ro3k9-fjCNhpp/ta2Z'9`ko-^V5'ZS
+SXYt1P`Uo`Mn6@'Ycb(+WJ?4aLAlrEKnP29Lkgb?L4tD:KnbA;L51M<LPLV<re:N/KSG6\M\M/3
+N0'0dPaS#3SXuFHUo15qY-"kis8A/XPk(+8Pl?sCQMAK#aSi$_s89\/_>1tJ_>_7E^\keITqJ%W
+SdV*ZS=?":R@0G0Q^7W9&<rBAP*(lgO,o<\NJrgSMMhCi!f2VereCH,s+L?'rIXruqgeTqrdt'#
+s+CB+re>*ALkpnEMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:qsQUnjlcW2ZetXfek3Z*UdE[^WfX
+]=bhl^VRe)`5Ta;aND]McHab`dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmWnc&([
+oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@S,\!~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/>Gp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_`T)PAPTE(VZT)G5UT)YA]SH#&YRf8`SR/CgrD#A)JQM?O?DZ+GI
+DY/qcN;e_6M&;#(L5(D:KnaYp@V'4eCN"04G'SIbK8,<^NVe_BO-#HaO-#HaO,j1"p5o06rfI)>
+rK-]5!0I)=p5o<:qN1`<rK.&A!g&P,q2kH8qiL3-rfR8FqNClBq3(`@s-3,?op5QCr0[MNrg<AH
+r0mYTqjdPSoq)/Trh07arM'=eqP*tarM0FiqkX4fs/,Ui!3#dos/5psri-^1Tq@jBQB[MoNJN.8
+I!^'[F)c,9D#S,qN/<=DK7JArAnGUaA7]7]A7fCaA7f@`@qK:`AnPafB4YahAnP`TB`D]KBkhBu
+Ci')g'5qi0F`r%UH@(!eI=[!%K7hb-f`'P4g=b35g"P39h;7#Hi;V^8irA'>Dte5NEVXSGEW1"R
+F82"#QMm`-s88#VOoUX?P4Oh5O92,KTDkDiSXc4>S!ob5R$a5+rfn%ZPEM)kOcYWbNfB$WN/NRN
+reU]4LPPk`s+UK+rIb'#r.4`qr.4j!r.G$&!/:E,BSVD"M2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V8
+SXuIITq\?YVPgAlWiN8)YHY:<ZaI6N\[f>b]t_=u_Sa=2`lQ6DbKS8WcdC.heCE.%f\,!5gtgiE
+i8N\Uj5f=akNM0plKdg'mI'uB!V#XYncA@Srq6<bs7cKes7u]kqtpBjr;H6dJcD5>J,~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/>Gp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_\;Z9Pm:]jKg:/CjcrD3>dr(uu^s%i\kqbI/TpHSL>r_E5f!^T(:
+rBL'BoMtihr)<Mkqb\+l5s@=l5!2(s6q'R77n?6F:JOYZ:/:dar(d8dqbI/erD*;es%r\jr(d5c
+rCd5d:Amrg:@V'V:@_3X:B+)i:Adod:@q<^;#X>_;#F,a;#X2i:\[cb:]!ue;>F&f;#jGj:BOEj
+;H!BhrDNDfrD<Mkr_iMgohtQ`p/M&lpK%2lqc*Gmr)W_sr`CRL<)HFd:.n2L6ps=)4Zthg3B9&X
+2)d?M77'@-5<_4k2)@!E1GgmDr\Os>1c@-I2)[<J2E1Up$T9k#2E<`U3B'#\48qAX4?G_m5<hG#
+6pjC58Ol9A8kVcK9MGG/s*+He$@-l@H$XgcI=?Zqrdb$"!ePtcof`79!'U<Fq*4mCq`jj@pJ_$g
+"0J`/YPta/Z*L[A[/IB4[f3`9\c02B]Y2#W^AktI^];4L_?e&t`5]g<aN;O$<r5qu<r#hr<q')j
+TqJ%WSdV*ZS=?":R@0G0Q^7W9&<rBAP*(lgO,o<\NJrgSMMhCi!f2VereCH,s+L?'rIXruqgeTq
+rdt'#s+CB+re>*ALkpnEMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:qsQUnjlcW2ZetXfek3Z*UdE
+[^WfX]=bhl^VRe)`5Ta;aND]McHab`dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmW
+nc&([oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@S,\!~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_nh0J%n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEq@h#?.2hr+.c#2nCqh;$f?rRq;,gA]e$gAfh3f[n^)e'c[ld/Asn
+N;gcr`q6bANK3msq2Y0UrNlO0s02X/Y-.c*(9=I5VMCA-GBeUhLl%"KOd;N1U8k?'qmcmA\[f;_
+\c02=\bWf:\b3N7\[q^Ls1/3BqRZ^=rOW!=!P5oB]_oAA\biu<\c98@\c92<\c95B\[oBF\c',>
+\c027]D0#=^&GbF^]2+J^\ttJ_>1nE_>_=O_t_1M`W*pXa771Ka8X0[anj0ZbQ#fbbm)D:c-4GW
+cMPrcciDJmdf7breG[tufDX@rg&B_%gBQHhh;7#Gi;VX4huMa8iqqa=g!nHj`r3e-^TOQ4U7e-I
+R$X)#O,]'U]!J]FY,nY%IsSZ>[(rVpKnbD=L5(A7L5(D9KSG3[L*VJ.LP:G:L4tA9KnbA@M2S6k
+NffKgQ'n25SXuFHUo:;rY-"nis8%rUPk:78Pl?sHQM/Aua90P]Vl.oAr4r0Fq830Js1nBDqn<0+
+TV.qVScPCPrgNqWRJrQWQ^3o%P`u*0$^$O3O,f6[N/W[QMZ/G6LkgcbLAuu-K`$K%K(=KlK)C9$
+KE-`*LB!$KLl$tGMMmFPNK0'\OHPcjPa.Q$R$a>3S"6.BTV8*TUnsueWN*##Xfen4ZEppH[^`lZ
+]=bkm^qmn*`Pom=aihlPcHaeadaQ^rf@S[/g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8B
+oCW%Ts7ZKerqQKgs8)Wirqu`no)=4?SH"*~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_nh9P&n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEpWSt>qRn=TcRq4@PUq4@VWrgX"YRf8]TR/Lq!D>J)JC]0RkO7@,]
+NVe\7M]Rb4M26qBL4t84Dfg>9@qTLmDfTlAH@:9qL5LqLNW"n:O8k:AO8b7;O7n\3OoLOAO8Y15
+NrY:>O7eV7Ont1>O8Y1?OTLW,Onk+7Oo1=.OoCLHPEM)mPPpXEPPLC@PQ-m<Q1^IBQi*6NQi<BE
+RJiTRS,AfRSb8TRTDkM^U&C_aU]$qcU].(hV>R.fV#[CfVZ<[mWW&hOUnOEKR$<erNf/UCI=-?b
+F`MG<D/3j!BoIq(KS+f'H=pfFM1g_5A7]:aAS#C`@V'-MB)cKDAc?9FB4b^fAnM$Ts(MFI)f'8>
+D/O61E,p)FG^4U^H[^EpJqAW.f%/I)f_X8)g=tE=hVS7is5=(>j5]4uDtn;NEVaYHEW1"WF7YY!
+QDURXd/O*/rK6Z6o9&p3"/2B\TDkD_SXf\K!LfGUQj&hBQ'IStrfRYOOH5H_NfB!VMi3JlM#rKg
+L]3&.L&Zi(KDpJnJc:9!KE$T)L&Qi,LN/-,M2I1KN/WaVO,oBcP*;,qQC!u+R[]e;St;UKU8+N\
+Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_Sa@3a2lBGbK\>Xd*^:jeCE1&f\5'6h;-rFi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cNfrqZTjqtpBjrVc<dJcD8?J,~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_ngs>#n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEq];ZBVn;#X8g;#a>h:B+,h;"@Ha:f%$bq*+[?s$6TKr]pEWoMb9F
+p/V#ir_rbnr)"2*4$Q(q4[)"o5<qP&7n-!=8ki&T:Adod:&n#b:&n)f:Amug;#X8f:B+&e9E@j_
+rD*DgnkK!Vnk]-Xs%`Vir(m8doM5H`r_`5_r(m5erD3Df!)NAdrD3;erDEAer_WYlr(d>i;>sJk
+;>a>f;>j>j;>sJh;>!i];tj8k<VKPl<Vf\l<W,tr=".6P;c$7b:.e&G6pj7(5!M+k3B9&W2)[9I
+770C-5Wq4j5<_Cu5!D"`r\Og:1Gq$H2)Y@hs"sm<2`N_p3#4M62`N`X3]fJf4$?5#69d\"6UX:1
+8,c$Z8,Z*\9`K88G5c^`GQN/:HiAHmJ,b&tJc@k54S(`94T@SD55@DC55IMB5k7hmVPg>pY-5(6
+Z*CU@Za@*I[C3NQ\@K2_]=beir4W?L^q[\#_>V4R_o9U8a8O*W<q9>k<q')kTqJ'Nrgj.]SGnuY
+R[O/B"dbO?Q'@L3OpdD6O,o<]NJrgSMi.Lj!f2VereCH,s+L<&rds]lrdt'#s+CB+reCH.EJTI.
+MMd=NN/`jYO-#NfPE_>uQ^F//S"#t?StMdOUSO`aVl?\sXKAY0Yd1UB[^N]V]">Vh^VI\&_o9U8
+aN;WKc-FV]dF-Lne^rF*g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&Facp\sse
+q>^<gqu6NlrUTr=s.'+>~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/SNp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^q\[[h;7&Ghr+1d#2nCqh;$f?rS%;+rn7,$rn.J,e^W'sdeAanN;^]q
+`pgJ<Nr+n4Nq]p[ZN7>:rid<DXfSS'Wi;nQQ'cc?IY<H4Mi<daS=lUTXL.u;s186@s1/3@rjr*>
+qmlmA]"5HL\cBA?\cTFR])K8?])K>>])B8?])K5C]"G_h]_oD7])T;D\@K2]\bs&3\bNc1]D0#>
+]tXEZs1nTJrP8EKq7usFrke]Qpr*3O!li:$n](ULrlG)\qTAf\rlkDerlbPjbfn>WcMPrdd/VMm
+dK7nIec+/"fDX@qg&Ke&g]-(/h#uTli8<Gii;_d9ir7sBin)W(`l5ss_CE*sVk^#ZSXGk2PE:fa
+MMo'NZ*(40W2Y5j]>_FmTpKhaO,$q@Knb;8LAZc'L)5PuLP:J:L4tA9Ln^T?ViHb!P*2,uS=KSM
+#,.llWiiM,jT"q;r06o?op#H@n]1[Nrhe*Cr4r-EqSN6Js1nBDr4W?/TqS-PTDkDqSXc1=R[TY3
+R$X,(Q'@MsP*1rhrf7)?NW+k;Mi.Lj!f2VereCH,s+L<&rIX]nrIXs"s+LE+re:H/M#N6EMMmFP
+NK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlcW2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WK
+c-FY^dF-Ooe^rF+g=k?<h;@/KiSrnYjlY^gkiq?tlg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6g
+qu-HkrUTr=s.01?~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/MLp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^qZG2St;RHqk*q_pRhMYpn%JUq4@SVs-s"V!1Eb%r,2@JqeZ1rnrNg2
+pMTqHs).Rjs,75CMi<ROMMR(Dre;,@KPtsV@qB:dD/XE7G'\RdK8#,?rf6r<s,[5ArfI#<rf@,B
+qN1N8rfI/@qiL<.ooT39qiLf<rK-r>q2kE7r/g9-r0%)DrK7/Eq3(`@s-3)>op5QCrg<YNs-WGH
+rL3_TqjdVUrLO"]pn%JWrh07a"/;K`UA^kdUAUecV#R:hV#@+iVYI%hW;<JSU7e'FQ'IMoNei@<
+I!^-_F`MJ>DJX$"Bo@h&K7\Z&HY6lHO,/I6EF*NsA4/aoA7]@cB4baeAS,NPAe/HcAnP^hB4u$p
+I!g?kDJfAk&or)=G^4U]H[^HqJqAX)eCE+#rn%&##hn%gh;-rFi8FUns5O+?pi$%Kqf2OQoPskN
+s-E2?rhe*Cm?7%&r/_)VTqS-PTDkDqSXc1=R[TY3R$X,(Q'@MsP*1rhrf7)?NW+k;Mi.Lj!f2Ve
+reCH,s+L<&rIX]nrIXs"s+LE+re:H/M#N6EMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlc
+W2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;@/KiSrnYjlY^g
+kiq?tlg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6gqu-HkrUTr=s.01?~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/;Fp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^q]VA!)`\kr_EVm;,C*g:]4&g:]4,_;?'Jl:B4/f4o%;<5Q3qG:B"5a
+;u/cY62NqA<W5tt;uKVk;%-8`5X%:l5!;.s5XRp<8,l-]92>C\rD!>eqbI/erD*5c!)WVir(d5c
+s%NGe!)EMhs%`Jds%N5_qbH`YrD!Di:/:U\rD)u\!)WYlnkf-Xs%rYir_<Ghpe^obqb[5gq,%&f
+!)WSh!DlYm;Z'Di;Ya2h;#O8j;Yj8`;YF&`<<#tl<r>tp<;T\n<rZ58<`;pn:ea\X7n#j55X%@o
+4$,G]2uY`81_iGG5sRUt4$#Sj6U3ju3]8lP0.n=gr\X[3r\P6G2`E]U2`N]U3]8uX2ENr]5!8d:
+s$?ZL#sgsH6q0[98Ol;M8d.m_F`_bKrc\9brHJTnH@($fI=?ZqrdY'$J:ZuKr]]j:q,@2jr)<Tl
+$EgS9YctC<ZEpmErj<'@\%&u[]=Y_h]`,VC^AktJ^];4L_?.Zp`r3pXaS]*0=8c1i<<]+jTqJ'N
+rgjdoS=?":R[KP1Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G6LkgcbLAuu-K`$K$K(X]nK)C9$K`?c*
+L&m'creY<GMi<USNfT6_OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&gWN*#$Xfnt6ZEppH\%&u[]Y(tn
+^r!t,`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOioB+]k2tjjl07O"m-O--n*fc9rpg-^o^r.U
+s7QHerV6EgrqcQirVZWmo)=4?Sc=3~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nh9P&n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_:mZ!h;8.g!9!P/"Q81oh;&"arn@D,!nu>\rRqY4g=k65f\"g+eC2k>
+NW4t;NVJJ2`W!mF\GhNdO84e9O86-jZa$dAYct:4XfAG$rhgNiQC2oAI=m92MMmO\R\-:QY-Y[M
+]".gO!4i'>s1/$<!5&'<s1A3?!P,f@\c02>]D]>=]DfD@\HKLV]tM)V]D9#<]DfD?\c95@\bs&3
+\bNc1]D0#>]tXEZs1nTJrP8EKpqZjEs2+fRpr*3O!li:$nAbLK!6G/]q9&][rlkDeqof,dcHc=5
+r6PGkrmCkseCFQLrn%/%p=]H!qV)81h;-rFhr*Dii;_d9iaUs+e^;RZ`5BO3_R?D@US4<MR[9>'
+OcYQ\N4Q<uXfSM%V1*Zm_nN=GH]4DGNDF>%HqA:)Lk\Z"NIZ\>KnY89Knb7W:JOkg>G@gfVN-Xu
+P*2#sR[p"ASt;aTW3!/)XlKHUP5pdEPQ$g@Q1pOCQ0lWiVUGM?_#;+F_Z.IO_"b\A^&Xo,Ta%0^
+T:VXFSGnukR[KP1Q^3r&Q'@JqP*(ifO,o<\repl9MZ/J4L]E5/L&cr,K`$K#K(soqK)C9$K`?c*
+L'EEhLl$tGMuJZBNK0'\OcklkPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UgF[^WfX]=bhl
+^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&(\oCV\S
+o`Fj]p\jmeq>U6gqu-HkrUTr=s.97@~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nhK\(n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_47'eSt;RHqOmk^q4I_[pn%JUrLO:cSt;LDS=H(<rgNIrs).^NrbVFs
+nW3[0pMTkF!,hRks,./BMMd7HLk^Y<re(r)G'RS/BPMF'Df^&HI"-a&M2I>mO8b4@O8Y1>Nrb?'
+rf@,BqN1Q9rfI,?qiLN4!0I,>ooT39qiLf<rK-r>q2kE7r/g9-r0%)DrK7/Eq3(`@s-3)>op5QC
+rg<YNrg<AHrL3_TqjdVUo:GrRrh07a"/;K`UA^kdUAUecV#R:gV#@.bVuN^pWE6!kSt277P`h/h
+Lk1&'H?j[TEcGr5Ch[NpMhm(?JUVukBOlaUM19\ZCiX#s4&8UW5ZV6(Ak#7+@:X(aAn>UeB4aV'
+7SHKPI!gBlDJjB3E,g#DGBs16s*auuJc:9%e,Ii*e^i='f@\a/g">!3g]$%/hu;O:iSrnXjSEcq
+E,YPk!c`7$r,M[Spi6=SqNgc=r2.pBm?7('qiCfPrh0OhT:_^HSXf\K':P>VR$X,)Q'IStP*1rh
+OH5H_NW+k;Mi.Ljs+gZ1rIt<+re13%r.=]prIXs"s+LE+re:W4LkpnEMMqIm?]C),O-,TgPE_>t
+Q^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(OA[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZdF$Fme^i@)
+g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD>A
+J,~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nga2!n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_>I12;>X5k;>a5k:Jh$fs%i\kr([5fr)!)as%r\joKE+9q`k*Vr(cc]
+r_ik`5<o*3r^$BGq,IPs;c?Xor_i\lr_O4j5Wh.l5!D4t5X[t/7S--D9ht[`rD!>eqbI/erD*&^
+r(d8dr_3>d!)EMh!)EDcs%N5_r(cfYrD*Ag!)E;br_E)]!)WYlnkf-Xs%rYir_<Ghpe^obqG@/g
+pe^ufs%rVh!)`_nqbd;ipe_#fr)*GkqGHl_pJ^rg!*/tss&Jeor)NSmr)NVps&1pS:JO\Y7mod4
+5<_4m4ZbY_2`<QN2)R`f5sRXu4$#Vk5=.Lo3B/lQ/h7he-SR,(1,_0O2*a#W3rV)@2`WiVr]($C
+4$ER9'M:VV5<hD"6pj@284H*?7nQBI9hkM-rc\<crHJNlH[L3hIX_9Gs*t0%J:ZrJr'(-F!'^9E
+s$66Ur)EYor2'ItricF.ZMq01[/RH5\Gj#@]"G\frk/9Es1SlS^;%Fu_84"*_o'Il`rF'ZaSAm0
+=8c1i<</cmTa%0^T:VXFSGnukR[KP1Q^3r&Q'@JqP*(ifO,o<\repl9MZ/J4L]E5/L&cr,K`$K#
+K(soqK)C9$K`?c*L'EEhLl$tGMuJZBNK0'\OcklkPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3
+Z*UgF[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8LioB([jlYail07L!m-O--
+rpKmWnc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUTr=s.97@~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb2>$M3o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_V3`!h;-rehZ2U-i</#qh;/(brRqA.g=b0XgAKV.f[n^)eVoI\NW+k:
+NVJG4`;R[S`rEO7\,_NeNrP1>Nr"h8Zm;raZ*1@6YH=q,XK/A"W2GTAF*;hXK85;BN0'<mTV8<g
+Ye%C@\cB;;])TD=])TD=])K8>])B8?\cTLV]`,PB])T;D]=bhj]_oD;])TDB])B28](NW/](`i3
+]E,^[r4i9IrP/<Hrk\KI!l)OdrPAKM!5nTMs2>&Za2d\h!QW:[ana*XbQ#fcc2>fcblH&dchu,i
+dJhPqe'uqIf)F;#f_4"tgA9S(g]cNjhr!ALr8@S5"5MARb5T@V`5]^%W2?;]TUM:9Q&q)iMiEY*
+Yd(:1Wi;b@SZ]K>XdOHjSni:AAoC1RFG,TE:47P@L5qC`R\$(:;,9qd<)]NbUSarJNKK?dPF7i0
+Sc52bTqeNcY-+kas7hfWP5CICPkgU>PQ8eka8Vq6VUYY@_#;+F_>qFO_"YVA^Ajr.UAgheTV)4T
+"eD0QS!ocEQk#IKQ'IStP*1rhOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L<&qh"`sqh"`us+LE+reCH.
+!/UW2DMj@2N/`jYO-#KeP*D5sQC!u,R[]h<StD[LU84T^Vl-MoX/rG+Yd(L?['mEQ\[oGd^;%J"
+_Sa@3a2lBFbKS8Wd*^:jeCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3nF5u=o(2JFrq6<b
+s7cKes7u]kqtpBjr;H6dJcD>AJ,~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb2tZ_5o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_OR-eSXuFFTDP;[U&(GWT)P;ZT)>/ZSGo#XD>eAKD>nAGD>BLtNpr,.
+NrEqrD>eALD#nNmrJ_5ENJi[OM2I+FL51M<re(u*G@>#nB5;@&EH?8JI"6d$Ll7=Tq2bZ=OH9=$
+s,m2?qN:c=rf?o;pQ,?9rK$W5!0R,>rf@#>r/pf:q2tT:m#h4/s-*DEs-*;Brfd>Go9K!7rKmMN
+rKmMNopP`HrgWhUrgiVOrh'1_r1X+arM0Cer1j4ds/#XhrM9Lkq5=7k6`HrVT:2+3PE:odLOai#
+HZs[TEH#c2CM.?mMhd"=J:MukB6o2cMg]_WC3*HV4AJj<;-@CB5t,9k@qKOpEHHGLF8eZ/9E7`b
+Hkq3\DJa<1E,p&CGC"O\H@('hJV&H)df._qe,n1Of)F;$fFHTef\5*8h;-rFhr*GOir7s@jDSsU
+DtS&ODfB]9rGqjVs)@gS!13GGp6GWRrMJ*Em#pt&r/grR!2BId!MH(aSct[TS"#k7rg41^QBd`"
+PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi(KDU8uJbt&sKE$W)L&Qi,LB*/0M/J3/N/WaVO,oBb
+P*2&pQ'Rc(R@9V8SXuIHTq\?YVPg>kWiN5'Y->1:Za@0L\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHste
+e'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nb
+rdk*@s*t~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb0D+l-o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_Y[72;>jAm;>F&f;#sKhqb@8i:esnap/1fc!BiR=4oRSB4oISE5Q4IV
+:B+;c<V]Vl5Q3nJ62<eE<<6'!r)3SnqG@l%4[;.m5<h=s5<hP&7Rfp?8kenQrD3Dfp.tQ\!)<Gd
+r_3Afr_NDcs%N5_qbH`YrD)u\s%`/]r_`5_q+q#erD3Df!)NAdrD38ds&&Mes&&emr(dDk;,U<h
+;>jDf;#jGl;$'Wm;>sJk;=d][;u9Mo<W,ns<VKPk<<6'!rD`\pr`9%t+&Ym1:.\)K770C+4Zttk
+4#o8[2)[6I1.+Ar5X%@m3rV>g5X%4f2`3BE-Q4E`.4Qu.3A<<Q1cIEV4[;8!6UWpp3'98crC[;c
+5s[_!62j7O71VmX84Z6C9M.uPFEM_JF`dV*s*"Bc%!Zu@H$XgbI!pHmIt.BH!.j>ss#pTN5!D1p
+55d\G<:Nob<;r`mVZ3k2Z*L[AZa@-K[^`iX\[oDcrOW'Br4NEN^V@S#_8=(,`;[aU`rF*Q<qf\p
+<q02iUB%%fT`LgYrgj:aS=?":RJrQ`Q^3o%P`q8nOcYZcO,f5!Mueiore^Z2!/LN-s+UK+r.Flu
+r.4`sr.G$&s+UH,s+^T1reYNMMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*UUo(&fWN*##Xfen5
+ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--
+n*fc8nac8BoCW%Ts7ZKerV6Egs8)Wirqu]moDX=@T)X<~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY2"^D1o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4g"P3:hVS7h!9!M."lS7ngtUT^gAfq,g&9Y'f`TmYe^XGSp5Sj+s2=oU
+rPnfFm(!)+rf-o;#EOn*O,oBaO8b7@ZiIE2YQ:o1ri?."WrAq1VN%!aG'\UiL5ChIOd2<+Tr5#r
+q76R:rji0C]"7mQrON'B]"7mQ!P5oA])K8>])B8?\cTLV]`,PB\d#^V]=bhj]_oD;])TD@])T>?
+\cBA?](W]0](`i3]E,^[r4i9IrP/<Hrk\KI!5JNKrk\TNs24ZNs2G#Xrl=TL!QW:\anX$WbQ#fc
+c25]dc-FW3ci)5jdJhPse'uq!f)F;$f_!krgA9P,gtgiEhtc2>f$Vjd`5]^4`5SsYV4sQQR@0D,
+NKB*XNJP*NYHP"-Whk/hXi%lSS9]pWD/rHCE(4SdKo8MsN.6J=O-?!"T:&GM:K1:lU7nE\Vi?[t
+OckooR@Tq=T:VXLV5L>sY,nb_s7_]ZP*;)mqih&Eqj%,E!1!PJrQ+EIr2'@hec5E[r5&9Is2"`N
+p:pR?s.gg5U8"?TTV%jJSt2C@S!ob5R$a5+Q'IStP*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%
+nq-aks+CB+rIt?.M#N6LMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF?&>o(2JFrq6<b!;HHerqZTjqtpBjr;H6dJcDABJ,~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY2Y?V3o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4S=H.@St;RHqOmb[r1O(^q4@SVrLWtYs.'+YrbVOMrGMIKr+u=Kpm1l=
+n;mI,!,h^Os).^N"`A6sNK&nrM?\opLkgb>LAli>K5u3E@qB7eD/O?6G'SLcJV8c8q2bT;rf@2D
+OHBI(rK-u?s-!ADrfI,?qiLN4s,d2?pQ,H=OHKC$rf@#>r/pf:q2tQ9m?.=0s-*DEs-*;Brfd>G
+o9K!7rKmMNrKmMNo9oTHrgWeTs.0%Y!2'%Xrh'4`qk=%as.][lUS=L\U]%"gV>I(fV#[CgVa[PX
+St2=9Q'@AmNJ;t4H[0dXF)c)7CMRQrB8VM!K7SJuH=pc>Nei.-A8,p`<BNBD4]5HnBgG1(@:O"f
+E-$,GF@Jbir_3?>%=N\SDJa90E,ouAG^+H3H3/MEIf=m$JqMP#df.\reCFQLs4@;'rn.h9gYCWA
+hV[5Ki8N\Tj5]4uDtJ#KDZOfsqf;LPrKm5Dq3ClSrMJ-Fs,m#<!0R/ArK7,AooUM]Unjc[U7n9R
+T:_^HSXc1=R[KS2R$X,(Q'@JqP*(lgO,o<\repl9MZ/J4L]E5/LAuu-K_pDmK):3#KE-`)L&m'c
+reYQNMi<USNfT6_OcklkPa.Q$R$a>3S"-(ATV8'SUnsrdW2cl!Xfek3Z*UdE[^WcW]"G_j^VI_'
+`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^c
+p\jmdq>^<gqu6NkrU^#>s.B=A~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY0(ec+o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4r)3Gir_`_nqG@,f!DlSi:'+3f;#X8b;?'J]4o@GB4o[_F:]!oc<9dHb
+5<_:15P@AB<W5ts;ZK_l;%?Dc5s.7o5!D4t5XIh,8,c'\8l,4WrD3GgoM>B[!)<Gdr_3Ji:JXa_
+:&do_:&7WW:]4&L:BF?i;=[QZ:]F8k:]*rf:\[cb:[V'Y;#jGk:BF?i;>sJk;>a>b;$'Wm;>sJk
+;=d][;uBVo<W5tt<VTVk<<6'!rD`\p(04C5;,9q^8P;QB6:4"'4Ztkg3B&iSr\Z;`6:*t'5<_+h
+5X.G"4ZYM\2D[$6)C[0d.kih@0/Z!O2E<l_5!VM)2E<c[4$ER9&kY_]5X.Fu6pX.-6q'X97n?-B
+r_!8d9`B,6Fo?F^FoHRaGQ)glH$XgbI=6QnrdP'$It3'#jur`.r]g?FrD`;cr`&flrMBY#Z*OA8
+&%/jT\%&rY]">Pd]Xteg]`#PD^AkqN^qmn)_u7LV`Q#p<a7E@/=8l8#<<-"j<WAj<US=KVTqJ$M
+St;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s!K2j7M>rA3L])u-L&Zi'KCXWkKE$T)L&H`,LPYqd
+Di0I3N/`jYO-#KeP*;,qQC!u+R[]e:St;UKTqeE[VPgAmWiW>*YHY:<ZaI6N\@K2`]tV7s_SX71
+`lH0BbKJ/Ucd:(feC<%#f@em3gtgfCi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojc
+q#:*hqYU0hr;?Nbrdk*As*t~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nhBV'n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Q!Kf\,!6h;7#fhZ2U-i</#qh;&"arn@D,!nu>\rS%5'!SH!%N;nn;Mu\k:
+N:r8.N;pip`VdaK\+@-.\bqHdNW>.9O9VqoZ*(41X8](7W2?GgOI^H:H@:?uMN!OXPa@u7Vld25
+pppO=]"7mQrjr-A!4r-@!kQ"Urjr-?rjr!=s1/3Brk/3Arji*Ark/<Er4Dd9rk&!;s1A3?pUU(1
+pUg45!PQ5F^])%J^\ttI_>:qK^VIYa_>_=O_th7N`W*pZa2l<l`rF*ZanNsVbPo`cc25]dc-FW3
+chu,idJhPse'uq!f)=2#f_!krgA9S(h#H72hu2JCgXFKj`l>s6_8O!eV50iVSXGn4Q&UlbNJrb*
+ZELF5X/i7NH_S-M\YGI4Q&gPu?tF^XEdWd::/64gLl@LdR\-!D:JOke<M?1bVi6UsOckoqR@^">
+T:VXJUSb&nY-+n0h>d24s-!/@s-3GHr06utn]1X)rMBIif)PQ]pqcsHs2"`N!5JKHqnN*DrhKRi
+UAghiTV%gISXf\K&t55UR$X,(Q'@JqP*(lgO,o<\repl9MZ/J4L]E5/LAuu-K_pDnK):3#K`?c*
+LB!$GLl$tGMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\rXKAY0Yd1UB[C3QT\\#Mf
+^V@V%_o0O6aN2NIbg"GZdF$FmeCN7'g"P39h;-uHi8N_VjQ5OdkNV6rlg4!*mdBQ4nF?MK!qZ'V
+rq-?dp\4X]s7uZjr;6HjrVc<dJcDDCJ,~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ngO%tn*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Q!qSH#/[T)YG[T_bA\TE(V[T)P;ZT)G2\S=B=jr,)@Lr,)=Ip6P--p5]/i
+rbVCI!,hdSre^f7Lkg`aKboDpK7\/j?t3_YBl%[,EclVSIt33,Mi[Xp!g/S+rfR2Ar/guBrfR/@
+s,[&=ooK*6s,Zl8rfR&=rf@#>r/pf:q2tK7mudO2rfd>Es-*8As-*GHo9K!7rKmMNr0RGNopGiJ
+RJrZSS,8]USa`6MTDtS]U&Uk\U]%"fV>R.fV#[CjVcT[eSXYt4PEV,iMM-J,H[0gXEcGu3CMIKp
+ArDFuKS"`(Htm8AMg^>*EaNa!?pI7V>X2=sB0\pT?t*ecE-$,GF@Sbh9hS3.I!pH\D/O92EccGK
+G^'.5"ab]IJUrFPKDs<sdfe1Ne^i=NfDjM&g&Ke5gtgiDhr!ANio9stqJYnC!-.gTs)Ih#pQk]A
+rhTLhrMJ0Gr/pi=r/puArK7#>pQ>HN!McCgT`q*]St;LCrgOOhR@'A.QBd`"PEM)kOcYWbNfF$s
+!K2j7M>rA3L])u-L&Zi'KCa]lKE$W)L&Qi,LM_j(M2I1KN/WaVO,oBbP*2#oQ'Rc(R@9V8SXuIH
+Tq\<XV5L5jWiE/&Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!?b0/#RcHjnce'umuf@S^0gYCW@hr*GO
+j5]4^k2tjkl0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmo)=4?T`9N~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nga2!n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Pto;>a>i;?'Mo;>F&f;#sKhr([;h:f.-e!)WMhs%rSVn3-Y2rD38bj&Q"@
+!'g0Br`&nrr_i_mr_O1j69ICq5!;+r5X@_*7nH3B9DM?]:]F2^:]*rh9h\7[:&Ica:&[i_:&%K_
+:B45e:]4&L:[_-U:]=/j:]*rf:\R]b:[V'Y;#jGk:BXKk;,U<h;>jDh;#jMm;>sGn;>sJl;=[WZ
+;uBVo<W?%s<V]\q<<-"p<W,ns<<?,u;Z9Gt9M%cD6UF+)55mVN3]B#T2)I0I0ge;,5t+""3^>no
+5s7=j2E!EH/K>r]0J+k33%m*F1H.?V4[;5"76*=e4?Yc!9M7r@5X.G!6pX1.6q'X98Ou?D9M8#Q
+9hTPKqfDj]FT-F_G5c^bGlN'rH[L6iIXZcrJ:IQKj#mK.5<_:+<:Wrf<;r]lV>[7pZ*L^C['fnB
+!4`$>rk&3A"hVFZ]Y2#X^AkqL^r!te_uI[T`<+'"a7*./=8u>#<W,nk<W8cpUS@a]"e_KZSt2DN
+RhD0XR$a5+Q'IStP*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%o7Hjls+LE+reCH.D2=%*MMd=N
+N/`jYO-#KeP*;/rQC!u,R[]h<StD[LU8+N\Vl-MoWiW>*YctF>['d?O\[f>b]t_=u_Sa=2`lQ6D
+bKS5VcdC.heC<($f@em4gtgfDi8ESSj5f=ak3)!nlKdg'mI'E2n*olHncJFTo`"Lbp@n=[q#C0h
+qY^6hr;HTbrdk*Bs*t~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/GJp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l6N]g"Y9;hqn@i!9!P/s53q7h>Z1-g&Tn(gAT\*Mi@Rnrf$f8!06Z1s,?rq
+rl+cSn[J"t!4i&f"ceY(NfT8"OT1C@XrOODWiE"pVkp;RRr`atI"I-0NK96fQ_'hHX0K/5\cBAA
+])TAB])K>@])TAB])'&<])T>?])0)@]">TR]_oAC]">WS]`>_C]D9&:]DK2<]DT8<\c98@\bNc1
+]D0#>]tXEZrkSNJrP8EKqS3*GrkSQMrkeZPq8<<Q`r3sJ`W=-$prWZ[b0'_,rlkDeqof,dcHc=5
+rQtPkrmCkse^aTL!8-nr!8@5&CY[b&hr!AKda$(Y`5BO1_8<^ZVPKrXS!fV.PE1`^M2R1tY-+n.
+XKALRIX&9=\>l*GLl?:o:e,IuCjUqo:/6h#KT;+\R\-*H:/Fkg<MH7cVMpOqOHYs!S",t?St;[O
+V5^T"Y-"k1YMB0@PPpdHPk<&ga8Db3V>d=lVqD%E_">JC_#M1H^AbnG^Ak&0U`cG,U7n9RT:VXF
+S=H(<R[KP1Q^3o%P`q8nOcb`dO,f5!Mueiore^Z2!/LN-s+UK+qh+Nmqh+p%s+UH,s+^T1reY3D
+Mi<USNK0']OcklkPa.N#R$a;2S"-(AT:qsQUnjlcW2ZetXKAY0Z*L^C[^N]V]">Vg^VI\&_o9U8
+aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!V>s_p&Facp\jme
+q>^<gqu6NkrU^#>s.KCB~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/5Dp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l4I<rga1`T:V[IqOmVWs.K1Zrgj"ZrLNt)rGD@HqJH4Lr,)IMop5*.p5]$0
+!,_^OqJH7Mrbqdl*/B9&KnP)3JqS5k?t*VWBkqU*F*2bUJ:N<-MN7[t!0R8Bs,d;CrfR5BqiLlA
+rfR/@s,[&=p5f-5!0?r;!g/S+rfR&=s,[,?qiUW7qiUT6nr`j5rfd>Es-*8As-*GHns/m6rKmMN
+rKmMNp6buLR@4&Cs-rnUs./YNrgs1`qOmn`pS7Y^rh]LfrhW2`Vl-DbSXc(5P`q2iNei79H[C!\
+F)c)7C2%BoAS-dQKS"c)Isc!DA;6+uI<B(8C04M!4]OdH>\%M;7VlLDC2S'5G]u\K7fH-^I/eX%
+D/O60EcQ;EH$K=7$[dAPJ:W<(K7ei1dJ_Mke,Rttf)F;$f`0Y)gAp%.h>c@:i8NYSioB(nDt.fD
+EqG^lQN!0IV#@.hV?!OHs7qfTP4k%6OSY+>V>m>6US=KVTqJ$LSt2CAS"#k7R$a5+Q'IStP*1ri
+OH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%oRcsms+LE+reCH.!/UW2AVuD)N/`gWO-#KeP*;,qQ'[l*
+R@B\9St;RJTq\?YVPgAlWiN5'Y->1:Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1
+gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0hr;?Nbrdk*Bs*t~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/5Dp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l1ePr)3Gir_`_nqG@,f!)WPf!DcPk:B45f;>EBO54^r;4T/(P:&n)M<W,nq
+4odhB5lX(J<;oet;Gg<j:_Q#Z4$>bk4[21s5se"18OQ-C:/Lpbr(m>fo2#<[!_l?^r_<>dqb@&`
+qG$c\oM>E\jA55@q+pudqb@,epJCfamnj!\!)WYjs%r_m!)iVir_iSi!)ibmqGR8hnP]0]qc*Pp
+s&Aqsq,[Mq!*&epr_sk;;c-@d:/+DQ84,d25sIIp4?GS`2`*BK1bpdPr]re45!1kl5X.S$4ZYJ[
+2)?m6)^d-g.kih@2)RWT2)m]`5XIjs3B9/a4\JIA8O#L*5"%b)6UXC77S--A8kVcKrCd5dErL.W
+F9?Z-F`m\,rceBes*>*#I!g?kIXcirIt*!!k<8i/rB9dPo2GR_rMBLj"fJZ4['mFB[fEu<\cBA@
+])K;C]Y2#X^&l'b_>V7N_uI[T`W*sC<rZ1r<;KVpV>m>6US=KVTqJ$LSt2CAS"#k7R$a5+Q'ISt
+P*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%oRcsms+LE+reCH.!/UW2AVuD)N/`gWO-#KeP*;,q
+Q'[l*R@B\9St;RJTq\?YVPgAlWiN5'Y->1:Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!
+f@\d1gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0hr;?Nbrdk*B
+s*t~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nh0J%n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l6K\f\5*9hYc72i:Z%4i8<DIgtVe]s4dJ*rRq1.!fDnpqi1W7rJg`8pl59k
+rPeZR!4Va3q7#b$!0-u<!0@,>s,[/@rf82&Wi;qpWhu_mOd^?7H$t7!Ll@FYQ'\)9V5pi.]">Pb
+q7H[<qRZa?rk&3As1/-?q7HR;#.qO[]=PVerk/<Eqn)j=!kZ%Tqn)d;r4Dm<rOM[6!kZ%TpUg45
+!PQ5F^])%I^])%J_>:qI^])%K_>_=N_th4O`Q%hro#:aOaN=;$s2k;`rQG5brltAb!6tMgqp58g
+rmC_n!n>cNr7Cu$o[s5uptH&/h;7#@da#u6`!O;o`PS[RVPKoWrg=%VOc>?XMi3J!riJ,\WN;nF
+H)%RJ]r[fjFH_Q6<FKHd8TK6:8l&90JVfALR[]mE:Jaec;.H;rVl#H6OHGftS=H)JSdM6hVlQu'
+Xfeh1YM0$LP5pd9P6$o5nAt=DqP=+erh][nf`1Z\pqcpEs1e3?!N)^mU]mNfTqS-OrgjmrS=?":
+R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi&KD'ooKDpQ(L&QgLLPUbCM2I1KN/WaV
+O,oBbP*2#oQ'Rc(R@9V7SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^r!t,`Q#s>aihlP
+cHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wi
+rqu`no)=4?U&TW~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nh0J%n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l4F;S=Q4BT)G;]TE(\bT_P5[TE(V\T)P;\T)G5[C]J>OD#J5HD#%rIDZ4MF
+Q2m$=O7\J+NW!\oDZ"AODZ+MRLAuoHK8"o1K62BH@:WtbCMn*4Fa8@aJV/]6NKB9aOSP"=OSb.?
+P5^UBOT1C=OS4b5O8t@>O9Lc.OHGZerfR#<!0@)?qiUQ5rK6f8nr`j5rfd;D!0d5As-*GH!gT"7
+op,39rKmMNrKmMNpR2#J!1EhTrgWeT!1itX!2'%Xrh'"[s.]Og!2TLer1s:fr1s:f(o*^mR?j,%
+P)k]bKn+W"H$=FQE,TN*CMNi\7Yc\MJUi/sGA1W;K7\o-G&Uf,B43tq9O'e_?YD_p7:0P<CiFH<
+GXb+k7SQHRI"$QqD/O93EclJKG^Fd`I=H]sJV&N,re1<us3^hormLnte,Intf)F;$f`0V7g=tB;
+h;7#Gi8NYSioB(kDt.cJEH7B8QhQdGQ27<UV>d=lVqD%COT:R?OoCFBOnOn8OTD>UrhK^mU7n9R
+TDkDtSXc1=R[KP1Q^3o%P`q8nOcYZcO,f5!Mueiore^Z2!/LN-s+UK+qLeKnqh+m$s+UH,Fbbd/
+M2@+IMi<USNfT6_OcklkQ'IZ%R$jD4S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'
+`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^c
+p\jmdq>^<gqu6NlrUTr=s.TIC~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ngEtsn*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l7pSr)3Gis&/hnr)!>hs%i\krD!Di:f.-e!)WSjr]]s;rBBm;qG7)cr_EMo
+pf-]^pJh/Ws#pEIq*=pD$rg/';Gg=h:f'>A4$<L+%6m*B6pa=484H3D92A=\:B4/\:]4#i9h\7[
+:&Rie9a+3b9MJ2Sq+^Z[o2#?\jA55@q+puds%`Sgs%WPipJCfamnj!\s%r_ks%rDdrDNAepeq,h
+n5B0_s&8tsr)ESo!*&nsq,RPs<)iZns&0A(:JO\[8Oc3;6UF%&4T7E@3]AuR2)[3E1dXMp5X%:k
+2aBVm5<_4k3ArcQ0J+7g-86u&1H-sD2)@3Q4?Ynq6T6tb3'05d91qfH5sIM"6UF+-7Ros?84Q6D
+8PDfP9MJ6$rc8!ZrcA0`FSp:]G5c^cGRf"FH@($fI=?WpIXcitJE/ln54DPF;u3<hV>d>$VmEb<
+[^NZT\@K2^\[hXL$bO'a]tM.p^VIY$_>_:O_u@US`<!utr)WhtoN(lipJh)k!N)^mU]mNfTqS-O
+rgjmrS=?":R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi&KD'ooKDpQ(L&QgLLPUbC
+M2I1KN/WaVO,oBbP*2#oQ'Rc(R@9V7SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^r!t,
+`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHe
+rV6Bfs8)Wirqu`no)=4?U&TW~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma3rMhf\5*8h>Q72i:c+7i8<GKh;$c>rn@D,r7_2(pl#94N/[Xn!0$f7qi:Z8
+rP\]Sq8WHDn@%hqr4)`d!0@&<!frG)rJqnqW2HSj6B@P'GBeLbL5LhLP*VK,T;8KiZFILA])]G<
+])]MC]DK27]DT;C]=bfU])]MC]`>_A]DoJB])]G=]D]><]DK2>\bE]-]D0#>]tXEZrkSKIrP8HL
+r4iBM^q]las2"]OrknTNs2G#XrQ"iU!6=lS!lrC(qTAi[s2t>arlkAdrQP;ds3CJerm:YlrmLhr
+!7gtu!8-qss4[5%A(/ZEaMc$7^r4*tVkp2_T:D=9Q'@;hO,JmP[BHd:XK&D%J:)U@_m-G=Q$J%D
+K8s&77X.RCI#!JQ:6'pWNK0BoT:SkS:fLCoO/&SLN/ip\PF7i/S"H:EUSXlhY-+n0Y5YWXs8S>W
+PQ-g;PO-Bca8_q3V#I4iVZ3RJs8Kk/_"khH_#D+@^&k40V>d84US=HUTV.pKSt2C@S!ob4R$X,(
+Q'@JqP*(ifO,o<\repl9MZ/G6LkgcbLAlo,K_g>qK)1-"K`?c*LB!#/M#N53MMqImAW;_2O-#Nf
+PE_>tQC+&-R[]h<StD[LU8+N\Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_Sa=2`lQ6DbKS5Vcd:(f
+eC<($f@em3gtgfDi8ESSj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTb
+rdk*Ds*t~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma.&QgSXuCDT:l1Us.K@bs.K7_r1F%^qO[\Ws.97]q/#kDqJ>tErbh\"p6PH6
+ooAI"rb_UOs(qaRqemF+KS+o.6?7?r@U`k^C2Im2Fa/7^J:iQ2MN<kpOT:L<Onb"<OoCI9O7n\8
+OT:L>On=b5On=b7OnOn-Oo1CAPPpXEPPLCAPP^U;Q1^IAQi<BNQi<BHRJrQRRJrZSS,8]USbeoX
+TD5#WTD>2\UA1M\V#I4eUgTgbS<oP*P)t`aLk:/)HZsUTDfBW1Bk_6nAVl(nJq/<!Htd2&J<#23
+G]I8-CL_$E5Wi18<*a'I7Rh6'@r#q%F*Vt"7Rg'G:2tZ1IVit?DfKlAGBnL]H@:9lJUrFPKDpQ'
+d/MGldf7eqeGn(uf)F;$f`'V)g]lTkhV[8MiVqg<j)Au4DuXeVDt@rFQL^C;QN*`WV#I4iVZ3RJ
+s6Pm=OT(@DVl$<iU`ZA+TqS-PT:VXFS=?":R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M#rKgL]3&-
+L&Zi&KD0uoKE$W)L&Qi,LB*/0M#iKlretEJNfT6_P*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsueWN*##
+Xfen4ZEppG[^WfX]=bhk^VI_(`5Ta;aND]Mc-FY^dF-Oof%8O,g=k?<h;@/KiT&tZjlY^gkiqBu
+m-O-,mdKW6nc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUTr=s.]OD~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb/+iH)o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma8Jm5;Z'Dk;Z0Ji;#aAn:f%$b!`)Whr_EMjr_`DRlok>3!)NShr_EMhqbI8i
+<E7aPq`jsCrBL<[*)TU269[\#4?Pej5!_A!6:4767nH<H9MeM\:/:@UrD!Af9`@cb:B+&g9E\'`
+9h\7V:&.QT:B4/M:[_-U:]=/j:]=)g:B+,d:]OAj:[V'Z;?'Jm:]F5l;,[-cr_iJfr_ibprDEVm
+rDEVooMYTcs&9/#<)cjt<;'>i<WZ9%<W5tr<F]'.;,C(b9M.fD6pa7.5!D+i3]f>\2)I0K1,D6_
+6:!du4?,Sk5!M:q4?5;Z1bp[:*??LZ/LrM53]8i\2)[HX5X7Y'2E<cZ4Zu>08kD955=%\)6UX=5
+7nH6A8P2QJ9M>=Ys)J!Xs)\0]s)eBbF`mV*rce?es*FrtI=6QnIt%BH!e<Hupc\X@nNH8=pJ_*e
+qkX4frhf^n%CEOO\$rlX\[o>]\[o?N\dZ3`]Y2%n^V@S"_84"e_u7LR`V`d6<W?,"<Vohr<V9>j
+<<B(qV>d84US=HUTV.pKSt2C@S!ob4R$X,(Q'@JqP*(ifO,o<\repl9MZ/G6LkgcbLAlo,K_g>q
+K)1-"K`?c*LB!#/M#N53MMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoX/rG+YctF>
+['d?O\[f>b]tV7s_Sa=2`lQ6DbKS5Vcd:(feC<($f@em3gtgfDi8ESSj5f=ak3(smlKdg'mHs?1
+n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*Ds*t~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY1\C;0o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oHdaZk#g"P3:hYl@3i:l41i!&#phVHuArn@D,r7V/(rJgK/nW!O.!5nfSrl+ZP
+r3u1(n[JA)rK$o;qMuSWW'Wh5R@/2BI=?s-NK90dQ^OJ>VlR,3]=Y`S])]G<]DoPD]DK2>])]M@
+]D9,=]*,d[]tD#S]DoJ9]DfD;]CEK)]DfJA^&P_G]tXEZrkSKIrP8HLs1nTL!PlJL_#D1L_Z.ON
+`;[aU`rF'[aN*nls2P/]ans6ZaoBK`bP]Tac2Prdc2Z)cci)2jdJhSodfS%Mf)4/"f_!hsgA9Q7
+eBZ7X`PKI/^;IadW268aT9tq2Q'72cNf&XIZELC4X/E"pIsIj'W4f*rHZ5^9EaVd9DL"ioI#!SO
+:JZIkMN3piSXrSP:/=hf;PBq`VMpRrOd2E+SXc:CTqnNaY-4q/Y5YWVs8A2HPN^*b`rMk5U\gke
+V>d@kVq_7L_>:tC_>_7M^[o/^Vl$;eUnjc[TqS-PT:VXFS=?":R@'A.QBd`"PEM)kOT(:FNfB!V
+Mi3JlM#rKgL]3&.L&Qc%KD:&pKE$W)L&HaALPUbCM2I1KN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=E
+TqS3VUo(&gWN*##Xfen4ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8L
+ioB([jlYail07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrUTr=s.fUE~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY0D+l,o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oHR[]e;Sc52bT:hjLT:hkOU&:S`TDP5ZSc>8]Sb$[pD>A#ED#fh"Q2d-MQ2$[@
+O7nUsNVRJfD]46p6?7?r@:<\\C2Is3Fa&1\J:`H0MN*a\P4t(=P5^U:OT1@DNfT6]qiCH4p6#!/
+rfQ<(qN:c?r/po?rfd;D!0d8B!0d5Cop,39rKmMNrKmPOpR1uIs-`nUrgWeTs./_Prh'4`q4Re_
+rhBIhrM04brMBLhA>,Q`R$X##OH5E[K7JDuH['XQDf9H,B52*lAVl+nJU`)rH"^`;N.$M/F(AO!
+Am._h4]5KL<F03L5t4:O@qfe!FE`!u7n#pB91XGYIXZ-ODK0Z=Fa/.WH@(*jJ:W9'K7j/Vrm1Sj
+s3^hormUnsrmh#!s4@;'!nl;]rnRM0s5<q9s5F%=rG_OMq/H@Pr,D\&qNgZ<qj%5VrhK@ds/#^l
+rhnNNlB1b$rK/5#VPU,bUnaZXTqJ'NSt;LCS"#k7R$a5+Q'IStP*1rhrf78DNJrgSMi.Lj!f2Ve
+reCH,re1-#pk&?ps+LE+rJ#*CLkpnEMMd=NN/`jYO-#KeP*;,qQC!u+R[]e:St;RJTq\?YVPgAl
+WiN5'Y->.9Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*GPj5]4^k3(sm
+l0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?U]5i~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY/+iH(o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH;Z0Jj;Z'Di;?0Sj;#aAn:f%$bs%r\j!`2`kn36;(rD*,`r_WMmfi7l6q`t'D
+),`df5!_@p4[2(n5!VA$6q0R97S?BJ:JO[U:]=,h9`Rld:&[of:&.KY:&.Q`:B4/A:\%?^;#jGg
+:]=/j:]=)g:B+,g:]OAl;#F,W;#X;l;#X5j;"mfi;Gg:h;YErf;Z9Vn;?0Sm;?0Ye;Z9Vl<<#qu
+<;'>i<WZ9%<W5tt<<uN$;,9t]9M.eR6iTLQ56!YM3BB)W2)I0J1,Ahq-UBsY3B9;g5X7Fo3]AuU
+2(pL')^d$g/M&S43AEBJ1c@<U4[;>#2?#QF3^#Gq9M%c?5X.V'6pa<@7gMXW8kVcM9he=\:&f23
+EW1"XF8g:]FoQUbFoHR_GQ)meHiAHlIfFltJGh\,4oIS<4mZ/B;ZNQkU\gkeV>d@kVZ=.([fO"L
+r4)d;rji0C]Y4<Ys1\TM_>_:W_ns=._o'F2`V`d0<W6%t<VBDj<?S3:V59u`US=HUTV.pKSt2C@
+S!ob4R$X,(Q'@JqP*(k*Ns:W(N/W[QMZ/G6LkgcbLAuu,K_g>rK)1-"K`?c)L22R#Ll$tGMMmFP
+NK0'\OHG]hPE_>uQ^F//S"#q>StD^MU84T^Vl6SpX/rG+YctF>['mEQ\[oDc]t_=u_Sa=2`lQ6D
+bKS5VcdC.heCE.%f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0i
+qYU0gr;HTbrdk*Es*t~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nhBV'n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,LdF6\!g"Y9:h;@,gi:c+1i8=Oj!SuQ0gA]h-g=uUdrf$i9oo/F#!Q)bR`;[aU
+`rF$T`r!77[d^d+\GWf<[ZHQ2rf6u=!g#]6rB_6]R?r&?I=$['NK'!_Q^FA;U8b<%\FmK5]`5V@
+])TAB]_f>7]`,VE]`#GC]Y"0SoXb+7pq-10!P>r8]DfJ>]`>eE^])%I^Au(C_#_?drkSNLrke]Q
+r5AQQs2P)Z!Q`=\`W4'S`r=!ZaN=>%rQ5)^!6b;arltGd!mT$9ps8rd!7Ceos3h&!e^jZMs4Hts
+s4[J,9%hS6a2Z$8_7de)Xf&%kTq7gAQ'RMmN/EUQLki:=XKAM'WgJ-WW5Q0HS!8#YQ[<L4>\\XY
+E.!G!8l&90ItW]>Pae/69iFhar_sh7U8FiINfK3aR$sP7SXuIJV5LAtXf\e2Yck7]rrA5[PkgLC
+P4b%#aSj0YUAgqcV#R:jVZ*LKs7jG/_"khF_#M1B^Ak,2V?E`kUna[`Td6;'St;LCS"#k7R$a5+
+Q'IStP*1rhO,o<\NJrgSMMd7ILkpibLAuu,K_g>sK)('!K`?c*LB!#/M#N53MMqImCQ4@8O-#Ke
+P*D5sQC!u,R[]h<St;UKU8+N\VPgAmWiN8(YHY:;ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHste
+e'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*ol;o()DDo`"O`pAamdq#:*hqYU0hr;?Nb
+rdk*Es*t~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ng3hqn*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,LrgO(]SY)LFTDP;TU&:P`TD>&ZSY#dqn8/&?pMBkHs-3DGs-E\Mqj-c4if*qs
+qelCO!cUFkrB_6>G^*V*AS5^oEH?5FH$XphK7nu;O8"b:P5^U:O9L]*NfT3\qN(B4rfI2DqN:?1
+!0R8B!0?B+qN:c?r/po?rfd;DplkN<op,39s-EbRQi<BMQhHjGR/`TRRf8fRS,f,VScGDZT)PA^
+T_Y;]UAptgV#@(aV#I1qU7Id@QBd\srf0'pJq&/oG^"7LE,KH*BP;*lA;5eiJ:;ooF_5-5OG&(+
+E*dI#>Z!7F:L-4c?"@Y87n-cn@qfe!F*2a,7i4]i9hn<.IXc0ODJsN:G'A1VH?ssfIY!(LKE$Z*
+KE0<sci2;jdJhSoe,Ikrec45"f*9m\g"P39h#?11i;V[:io=qSE;4AKE;OSQQhQg:Qi36LUAgqc
+V#R:jVZ*LKs5oI=OT(CBVuNUsV50o^UAgi3TV%gISXc1=R[KP1Q^3o%P`q8nOcYWbNfB$WN/NRN
+M2@%EL])u-L&Qc%KDC,pKE$W)L&Qi,LB*/0M#iKlretWPNfT6_OckllQ'IZ%R$jD4S=Q7CTV8*T
+UnsrdW2ckuXf\e2Z*L^D[^WcW]"G\i^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnX
+jlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&Facp\sseq>^<gqu6NkrU^#>s.fUE~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ng<nrn*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L;Z0Jj;Z'Dg;Ys;i;#sKhr_<Ghr_N\m:d72054q)::ARc`:]OJm<S(4M5P[SE
+62a+a5!V@q5!D+m5!VA"6UO=37nH<G:%qE`:Amuf:&n#f9`Iid:&n#d9E7fd9_qKY:B+,i:=i;4
+;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;#jGl:\R`d;ZBSo;Y<le;Z9Vj;Z0Pe;Z9Vo<!$'!<:a,f
+<rQ,!<!#uq;>sAk9)h?`6UX:-55mYW3]T5Y2`*?L1bg^P69mh!4#f8"59E6V3]K&V2DZj0)^6U^
+/hA\53&*6I1Gq'M4?Yqr6oY**+ZhhN4\JF<5X7V"6UX=06q9^;7n?3D8PDiP:/4MXDfB[oEW1"Y
+F8g:\FoHObGBWt0s*4Qh!d]3?rd=frIK"ZsIt9`[557;;55[S/<;9DkUAgqcV#R:jVZ*Ip[^WaE
+\Gs#>\@9!H\cTOX^&G_J^VI\%qSN9Ms2=h9rDi_ooi:cdr`/urs/#pqUnjc[rh1U1T:VXFS=?":
+R@'A.QBd`"PEM)kOH5H_NK&mUMi*CKM26tCrJ(?+re1-#q1AEps+LE+reCH.!/UW2!K)g7N,+E5
+O,oBbP*2&pQ'Rc(R@9V8SXuFGTq\<XV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn^qmn*`Pom=ai_fN
+cHaeadaQ^rf%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerqQKgs8)Wi
+rqu]moDX=@U]5i~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/JKp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK8&Ve(*+(g=tE=hV[5hi;)=<i8NVPhqm5GgtVh^rS%C2Mi@Om!0$l9p5Ja*"H8>"
+_ScAkqSi<Nq7#k%laQo&!jf8?rf?qBrB_6ZQ^Do<H@1@"M2dRXQ'[r3TVecp[J.<3]E#S@\cTLV
+]_f>7]`,SE]_oAB]Y"0Sl+?W"p:L@;s1A9CqRlmCr4i6HrP&?Jp;$jH^VIY`_>_=O_u.IO`W*sV
+a8a0Za8![Q`rX9'r6"u[s2t5_rltJes3:Shps8rdrR1_p"4YlPf)4,"f_!ksg1oBjbK.]A_8="&
+^pp>@UnXNRR['2%P)tW[N/E@DZ)t1/VlZhHHD7sL^8.'?LQI($='9!X95Jp/N(HfAH%:O*O-?!#
+T:SeS:/Fni;c99bVN$UqNf]NoR[fk<St;aSW2m,(Y-+t4Yg`XPP5gaGPkgOCP51=Aal:ACa.]4+
+UAq"dV#R:jVZ!FKs7O2._"tnG_#(nA^Ab#6VPU)aUS@a])5*UnSt2C@S!ob4R$X,(Q'@JqP*(ie
+O,f5!Mueiore^Z2!/LN-s+UK+q1JNqq1J^#re:?+s+^T1reYBIMi<USNfT6_OcklkPa.N#R$a;1
+S"-%@T:hmPUSO`aVl?\rXKAY/Yd(O@[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&f\5'7
+h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjr;H6dJcDPGJ,~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/8Ep@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK60@S"#q=T)PAYT_Y8^TV;@X!hZ-Xpn%4qnne5@q/$(qpQbT@n;cIe!fN"qrbhU!
+rB_6>GBRA'@qTOnDK9f@G^=dgJqSr;N;8S9P5^U:O8t@>Nr"h2OT(@BP5:=/OT1C,OSY+=P5LI?
+P5^[DP5(7:PkLC7Q33J@R$[c=rg*VPp6kiG!1EhTrgWeT!1itX!2'.[rLa+_pn7\^rhBIhrhK:b
+9;S;OR[08'P)bT`MM$D-H?j^WFDl&6CM@BnBOtY,K7\T%I!TF:I>NB/H#dD/CLL%*6;(NJ<*WsJ
+5t=CN@:X(gE,p&GGt(:n7fH+!8UGo8D/O3.E,p&DH$FU\H[U?mJ:W?*K`6Z*c2Q#fci2;kdJhSn
+e,Iksec+/!fDjP(gCW/rh;7&Hi8ESQio9!9DJsImE;4ALE;jeQQhHa8QNEJHU&LedU\pqfV>d@j
+VqqC5Oo(7>OoD6^VPU)aUS@a])5*UnSt2C@S!ob4R$X,(Q'@JqP*(ieO,f5!Mueiore^Z2!/LN-
+s+UK+q1JNqq1J^#re:?+s+^T1reYBIMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl?\r
+XKAY/Yd(O@[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&f\5'7h;-rGi8N\UjQ5OdkNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjr;H6dJcDPGJ,~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/,Ap@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK3UZ;Z0Jj;Z'Dh;?0Sk;#aAr:esk^:/Cgb!^/_2rBKO1qE=aOqG6rarD`_qg/J2R
+<)Zaqr]p?HrB^`O5X%:n4$>h-4odkI6j?+P7nH?I9_qNb:Amuf:&n#f9`Iid:&n#d9EIp^9_hEX
+:B+,h:B"#h:>AY9;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;$0Wj:Jgd_r_i>b!)iboqGR8johtcf
+r_s&$<)cjt<qTJl<rQ)]<`;mm9i"GU84Q$86pj.#4?GVc3'0#V1c%!F0f26b5X.@m3^5en5<M+i
+2`ETL/gVP],qU]!0K(pF2#]?U2E<l_5!VJ%2`WiW4$5\h8kV]@69mb%6pa7.7Rp!>84`_P##%`b
+9hnH$rbqgUrc.pXrcA'\rcS6aqfi'bs*=`nI!km@rdG'$J:]mG4[&d.pc\F:k>_7Us.TFds.fLf
+s/#^lrMTY(s0`*?[^NZT\c0/M]=bhj^:q@u^qmk(_8=%e_Z%IN<rH%n<:s8g<;onsVZiroUnjc[
+rh14&T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L3#qL\Nqs+LB*reCH.
+!/UW2C5Rq.N/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5jWiE/&Y-5(7Za7'J\%0&]]Y2%o
+^r!t,`Q#s>aihlPcHjkbdaZdsf@S[/g>(N?hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg-^o^r.U
+s7QHerV6EgrqcNhrqu]moDX=@V#Pr~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb2>$M2o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bKA,Vdact&g=tE=hV[5hi:u:2i;VU9hVHuArn@D,s,$c3"Gr"nMi7=hoo/[*"Mqsm
+`5MMkq8WHCe[PLc"gt_BZE^S262NtaNL4U)FaAFeK8>MJOHGltT:r$WY-b_:])fRVrOi0BrOW$@
+rk/3Aot::;!5/9Brk/6Ake$Q"p:L16qRlmCr4i6HrP&?Jp;-^CrPAKMs24cQr5AZUrQ"rXrl=iS
+rPnr[ao'<[aoBN\bl5lebQ?&7cM,ZaciDJmdf7bueCE.$r7Cu$p"=*/ccF/F_o'7&`58[RV5'`W
+SX5V,OcYT]LP^nCYcb+/WMlbbI!2R+[&f^[F,uE3?WBU:7qm*tN(ZrBH%1I)Ng-!$T:JbR:/Fqi
+;cA@DVPfE6NK0'bR[BS6SXuFIV5L>sY-"k0YcuOTrK?l<rf[2Cr5n!?rLs7crhKFfs/#amr20On
+hZ*VmpVHmFqn`0FqnN$B!3#mp-`3`9UnaZXTqJ$LSt2C@S!ob4R$X,(Q'@JqP*(ifO,o<\N/W[Q
+MZ/G6LkgcbLAlo,K_^8tK(suuK`?c)L22R#Ll$tGMi3OQNK0'\OHG]hPE_>uQ^F//S"#q>StD^M
+U84T^Vl6SpX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.geC<($f@em4gtgfDi8ESS
+j5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Gs*t~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb0D+l,o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bK?6AS"-">T)PAYT_P5\TECgZT:bqNrG)CLp1sM@!,_RKq/$+Jrfm2CqN_,Hr/Uf:
+rJp]7rJp$"!K;s9M#`>062NtaE-PPo?t3h_Bl%d0F*;hUIXm')LPq5kOTL].OnFh9O8Y+6O8+h:
+OoCO@Om\>1O6_o(OoCOAOo1CAPPp[>PPLI<Q1L=AQi<?PQi<BPQiEHHRJ`EPRJrZSS,8`TSb/NQ
+TDtSZU&UkeUB%+hU\giVTU_I<QBdVpNfK*SJ:DrmH$+1JE,KK+BOtdgAVPkjJUW#pG@tH:N.ZS%
+E*mEr?Um=E<]j5]@qe4u7U9G5C2@j1FEr*/7N,#q91ioGIXc3PD/O93FEMhQH@'scIXZiuK)UE&
+L&T<qcMl/hd/MGldK.hFrm^qts475%&_Pdig=tB;h;-uGi8ESQio9"sDZ+MQE;FMODuahPQiEB8
+Qi3WXUAgqdV#R:kVYm=lW8@RSP4t+=ORJ>/O8u6YV^J@<Unjc[TqS-OSt;LCS"#k7R$a5+Q'ISt
+P*1rhOH5H_NJrgSMi.Lj!f2VereCE+s+L3#qh"Tqs+LE+rJ#*CLkpnEMMmCON/`jYO-#KeP*;,q
+QC!u+R[]e:St;RJTq\?YVPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdt
+f@S^0gYCW@hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?
+V>l&~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb..m-%o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bKBZYr)3GiqGI;jr)!Djs%rYis%r_Zr]U3Dr]fO/!'U3SqbR&b!)NGjqc2NQpf%,W
+qa)#Z5W(Vc4$>en5!M:u6UO@384Q9F:&Ice:B"&g:B+&f9E7fd:B+&d9EIp^9_hEY:B"&f:B+,i
+:>J_:;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;>j>c;>sJb;#jMm;u0Dl;Z]os;tX&f;u]et<E/rt
+!*8bmr`0P0;c-=e:eseZ7n,m65sIR44T@DQ2`WcP2)@'F1.";p5s@Cl3W22r4utY^2)R*@+<;g[
+.4Qu-3&!6K1Gq'O4$>bm6p`gl3&s,`4ZPu*91V<65X.P&r^-iX7n6*?8H)6]9`Iie:B,,1D>nJR
+E;aeUErU4[FT-F^Focf1rceBe!dT*<rd5!"I!pElIXcm"rB1$Ar]^0Ar''4AqG[?ds.]LfrM9Ii
+s/,^l"K8f<[^H+Cs0rBG]"5Mc]Y2%o^])"P_8*n&_86#c"N+;B<`]0!rD`eqqc*5gqc!Qorhh-@
+V50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOH>NaNfB!VMi3JlM#rKgL]3&-L&Zi%KDU8qKE$W)
+L&HaALPUbCM2I4LN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&gWN*##Xfen4ZEppG[^WfX
+]=bhl^VRe)`5Ta;aND]Mc-FY_dF-Oof%8O,g=tE=h;@/KiT&tZjlY^hl07L!m-O--rpKmWnc&(\
+oCV\So`Fj]p\jmeq>^<gqu-HkrUTr=s/#aG~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb2Y?V4o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKJ/VdF6_#g=tE<h;7&HrS[M1s5<k5!oDbfrS%(("GhnlMi7Rnq2P*,qi(`o_8=./
+q8N-Kq6o1iqR6F1s02X0YH\#/q*GgbDf^&FH@CF"MN3dZQ'e&5TVecq[f3o9]`5VB])TDA]`#J8
+]`#PB]DfGE]=PT9]D/u9]DoPA]DB/@]tXEX!5ABGrkSKI!5S<ErP8BJrkeZPrP\WQs2P)Zrl4rX
+q8WBR!Q`C[b5KE_b00\+qoo,dp<Wcc!7Ceos3h)"e^`7KfDjM$g&K_)fkf*]b/VE<_SWst^q$GB
+USFKSR?j)#P)tWZL5:\@ZELC3W2HS`I!2O*[]>j\Ef>iu=]f$V95Jp0MFgT=I=[05OdMW1Sk`'V
+:fLFm;k]t`VN$UqNf]HjR[fn>SXuFIV5L>rYH4k/YHY7XrrA2ZP5(7=P5g^Gb506Aa8hn2U&Uke
+U]%"gV>mFkVuN^Qs8Bh0_>M+K_>1nC^\tnHW;ib9VPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8n
+Oc]R'#*+\%N/NRNreU]4LPPk`s+UH*q1JQrq1J["s+UH,s+^T1reYTOMi<USNK0'\OHG]iPa.N"
+Q^F20S"-%@StMdOUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_A!_Sa@3a2lBFbKS8Wd*^7ieCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H3cJcDVI
+J,~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb0_Fu.o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKH9@S"#q=SY#hQqOmYXs.K:^qk!1jnne2?!gAk5pQbWArg!)8qiC]9k`,V#reUc5
+Lkgb>q*H$E=C>NGAS,UmDK0`>GC"^gJV/c9NKK?dP*(n"OT1C?Nqe\2OT(CAP5CC0OSk1,OSY+=
+P5LI?P5^[DP5(7:Pk^O7Q2m9NQiNKPR/`NQR.ZmGR/`TRRf8fRSH#/WScGD[T)PA^T_P5\UAptg
+V#@(gUhQHjR[9;(P`h)fNer@;IsZHbG&qS>ChdTqAS,RdLP1;2IscWeB4QONK77r]?>F.W6psUL
+5u_-#BL,*W?XdV`DK0cDG=G(k7ncWL8UPo7IVit>DK'T:G'8+TH$ajbIXZiuJ:`E,re1?qrlbAe
+rm(Mhrm:\mr6kSn!n>cNrmhD-f\"m2gY:N>h>Z=3i;_d9iW3t:rbhdSr,;OQr,;USpQtiEl^%UE
+r1X.bs.fOgs/#amrMT[ohuEY<plYK9mudU2s/>sq*N#[/UnaZXTqJ$LSt2C@S!ob4R$X,(Q'@Jq
+P*(k*Ns:W(N/W[PMZ/G6LkgcbLAuu,K_^8tK)(&uK`?c*LB!#/M#N6MMMmFPNK&sZO-#KePE_>t
+QC!u,R[]h<St;UKU8+N\VPgAlWiN8(YHY:;Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!
+f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nardk*H
+s*t~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb..m-&o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKK]Yr)3JjqGI;jqb[;is%rYiqEOa=!'f^3!)NMfqG6ub!`)QcdT$*B!)ibo!)iVZ
+(-j]<4$5Vg5<V1o5XRq-84c9B92%rRr_EJhr_EJfrCm2cs%W;_q+^i`!)NPgr_NGe!)NShhG<]=
+r_`\lqbR2f"A_ce9ht[`qb[,bm83g[rD<5cr_iAcs&/eoq,.;n<)cfh;Z9Vp<;]br<r#bq<$t[H
+;Gg4c:/4JU84Q'96U="#4?bhf3&rrW2Dd3G2D@Kb6U*du3][1)4[D7m3&W]P0J"7f,:tQ!0JkaD
+2)I-J3''2e5XIgs3B/u[4$>Pr9M7oA5X.J#6pj@06UjR984Q3C9M8%X9F"9e:2=W]D/T>ks)@sW
+rc8!ZrcJ-^s)nHfG'<k/"*f*;HN&:!I=-HkIXZcsJNQ*o4T%A@55[SD53,]>;ZNKgU&UkeU]%"g
+V>mFkVuN^o[0j@O\%&rY]"5Md^AbkL^;%IurP8HLs2+fPs2+_9s&T,!rD`\nqc*Mos&Akqr`&or
+s/-m7V50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:FNfB!VMi*DkM#rKgL]3&.L&Qc$KDU8r
+KDpQ(L&Qi,LB*/0M/\?1N/WaUNfT6_OckomQ'IZ%R$jD4S=Q7CTV8*TUnsrdW2ZetXf\e2Z*L^C
+[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6
+nF?)?oCMVRp&Facp\jmeq>^<gqu6NkrUTr=s/,gH~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV/JKp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"]bKS8Zdad"(gYCWAhV[5hi;DO6i;V^8i;MO6hVA+aqhY**",MekMu/J4N<"q8NV\V5
+N<R,6_Sa=1qSi3Ks0qa2pUBq-q7$.-$+7.JZEUO8YHP,.XSY=#6YgLVF*;nZJV8l@OHGZmS"H@N
+VQR;8qRlj?rjr-As1J9Ap:U=:!5/<Crk/9C!4q:(q7?O:rOi-AqRcgAr4W3F^APbF_#;"J_"PVC
+_#;+K_Z%IO`;IUR`W4'Y`r=$R`r=!ZaN=>%rQ,)_bPTN\c1TE_ciDJmdK@tJeCFQLr7Cu$rRhA,
+d`]eP_u@OQ]`5cCXJhtkTq@d?Q]dGjNJWCDLP^bhXf\\&V5pJBGbW*RZ(@5(M3;Fa<Ch7*C3bPl
+8l/93K8GYRR[Tjk:/4Vc<)QYgUSarLNf]6]Q'Rl/rgj(\"JVZgW2op"s/u@*cN!m+s-!,?#F(F:
+PEV0Pb4j$AaSqk2U&UkeU]%"gV>mFkVuN[qWSmgT_YM%D^];4I_#(nF^Ak/XW2HPjV50o^U7n9R
+T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NW+k;Mi.Lj!f2VerJ(?+s+L3#qL\Nqs+LE+rJ#KNLkpnE
+MMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*
+`Q#s>aihlPcHaeadaQ^rf%8R.g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHe
+rV6Bfs8)Wirqu]moDX=@VZ2/~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV/;Fp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"]Q^F20S"-%@T:bkNq4[h]r1EqZk\Kd+rbVY!rfm2CqNh,Gs,Z6$nW!R-$]Bt$M26qC
+LPCM:K_n(S6WR;l?smJVBP_R+F*2\QI"$X#KntYIP*(n"O8t@>Nq\V2OT(CAP5CC0OSb+;O8tF7
+OSY+=P5LI?P5^[DP5(79PkgU8Q2m9NQiNKPQiNKOR.csHR/`TRRf8fRSGo)WScGD[T)P>^T_>&Z
+UAgp&Una]VS=5b/Pa%>kO,f0QIt)ilG]\"HDf'6'An>LaB4Q[KK7JH"I<oR;I?/f-G&Ui(CJdhl
+4]apI>[qJ67RgcqBP_X.Fa.4_7Rg*H8kFDXIXc3PDJa<2F*;_OGBnL\I"$QpJ:W=OKDpT'b6#o4
+c2Q#fci2;jdJVGle,Insf)OA8g"P07gt^cChr!AMiSieVDJsIjE;a_PE;skMQi!*9Qi<ZVU&Uke
+U]%"gV>mFkVuN[qWSmgTP5179OR\J5OT2:*W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)k
+OH5H_NW+k;Mi.Lj!f2VerJ(?+s+L3#qL\Nqs+LE+rJ#KNLkpnEMMd=NN/`jYO-#KeP*;,qQ'[l*
+R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Q#s>aihlPcHaeadaQ^rf%8R.
+g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wirqu]moDX=@VZ2/~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV.u=p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"];#*ud;Z0Jg;?0Sk;#aAm;#X8h5kdM)4oeCU:A[i`:]aEf:=<,>;uKVo;uT\l65i3K
+1bq-T4Zu"n5!VD#6pjF47S$-C9h\;X:]=)h:&I]a:&n#`9_qK_:B"&g:B"&`:>\k<;#X>l;#=&f
+:]sQh9heC^:]=2a:[V'Z;>a8b;?'Pd;>sJm;u'>j;ufki;Z9Vp<;fhr<r#a2<)QUj:JX_Z91_]B
+6UF()5<V(g3]T2Y2D[0G1GUdB5sn"(5<M"f5<_>"4?PV`2Dd0@+rr$^/h/M23&*<I2)dQ[4[)2#
+4>]&Y5!(kd92%uL5X7P!6UO1.6UX@57Rfs>8P;]J9MA/Sr_<K0CAquLCi0/is)@pVrc8$[rH/'^
+qf`!`"F,3;H@,R;s*XuuIt<1M4T7MD4T%A>56!e*<;TVnT`(SaUAq"eV#R:kVZ!FmVuWgr[JmW@
+\@K2_]=bhk^](qJ^V9]^s1nZN!5e`O!Q)eR=8l5#<W,nm;u0Gn<W#hq<W?%uW?eF?Vl$;dUnaZX
+TqJ$LSt2C@S!ob4R$X,(Q'@JqP*(ieO,f5!MueioreU]4LPPh_s+UK+q1JNqq1J^#s+UE+G)(m0
+M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@[C3QS\[oGd^;%J"
+_Sa@4a2lBGbK\>Xd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b
+!;HHerqZTjqtpBjr;H6dJcDVIJ,~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb2Y?V3o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bKJ/VdF?e$gYCW@hVR/Iro!_5qV_>0!SuQ&M#<)3Ll$tGqMbE5s,?l8rJ^cl"2Vjl
+`;.CG`qm1@[f!W7\Gs&9\G<W.[f3]6Zi@97Xfee/XK8K#6N9ChBPhU-FEr1_Jqo>IP*20#SY2XQ
+VlmA8rOi*@"M24W]Y+0Sp:U=:s1JBDrk/9C!4q:(q7?O:o=P(:qS)mBrkSKI!5S<ErP8HLqniBN
+r5AQQrl4uYs2P&Ypr<9Q!Q`C\b5KE_b00\+qp"cZ!mo?BrmLhr!7h)"r7Cu$s4J==b0.c@_83n"
+]"c(bWMQ>`T:;45PECl`MMV7c4c$;EX/`(rWMl85FelOJ];1a=K:Qgu5AP+-Bm,)e8l&?3JVT8L
+R[]pH:ejhd<)HPeUo(#LNK0*bQ'n-?SHYUZV5C5mriQ4'!3cC+bl@^)rfR5DpQPT@rQ=iUlH'!t
+rh04`!huHbrM9Iis/,dns/>ss!35&YrPJBHn\G"9rk9GRWMuhoVl$;dUnaZXTqJ$LSt2C@S!ob4
+R$X,(Q';31$B^F2O,f3YN/NUOreU]4LPPk`s+UH*q1JNqq1J^#s+UE+!JcL1M//!,Mi<USNfT6_
+OcklkPa.Q$R$a;2S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Y
+d*^:keCE1&g"P08h;-uHi8N\UjQ5OdkNM0qlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6Hj
+rVc<dJcDYJJ,~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb0_Fu-o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^Q^=)-R[fn=StGbMq4[e\qk)tcs(h[PoPFPkrfm2Cqj%5IrKd;@k`5=q!K<$;N;eb8
+M>`50K`Hf(6N9Ch<``C1@:Ee\Bl.d/F`r%VIt3'&KSbSIooK07r/UN4qN1]=rf[/@mZ@7*n<!L/
+rf[2Ar0%&CrK?r>pltT>ns09Brg3\Pq3_,Ks-W_Pr0RJPrgNhUqjdYVr13n\qO[\Yp7_M\s.^L'
+S=,Y,PEV,iNK&mOJ:;omH$=@ME,BB*B4h-R5A#V&Jq8E"I<p*L@Xa,`L3[cKBQ7*Q1Jh%6;-.4A
+6:XIO@qTUsEclUt84H'C9h@p(I"$N^D/O93F*2VLH2`*oI"$QqJ:`CPKDgN'b5TQabl5ldcMl/h
+d/VMndK%\odL=USeCE+#f%8R,g"P0Zh#H71huDU;iSrm7D>nGKDuahRE:fLmQLL7@TDkM^T`Us`
+U]%"gV>mFlVuN^qW;rsXs8A,VOnFh/OoLLaWi;trVl-DgUnjc[TqS-OSt;LCS"#k7R$a5+Q'IR4
+Op[>5O,o<\N/W[QMZ/G6LkgcbLAuu,K_^8sK)('!K`?c)L&m'creYEJMi3OQNK0'\OHG]hPE_>u
+Q^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/Ucd:(feC<%#
+f@em3gtgfDi8ESRj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*I
+s*t~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb..m-%o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^:f-sbr)3JjqbmDjqb[8hrB:3GrBU*AlTPG75!Db<qbI#aqb[8fs%q6F!E2tn;uTYp
+;uT\m6N9Cl1,CUF4?Pbl5Wq=s6:4+/84Q-?8kMcN:/4MXr(I2e:/4OZ9_hE^:Amug:B"&_:>eq=
+;#X>l;#=&f:]sQh9heCP:[V'Y;>sDc;>sGp;,C*`;?'Pm;u0Dk<<#nj;Z9Vo<;onr<Xr,/<)lpr
+;,U4c9MJ2Q8H)!V5Su^K5!1ne3&iiR1c$pC1H%Wg69d[u4#o>#5TN0T4ZYM]2)6g4)_*<d.4mA:
+0f1aD2E<l_5!h[or](3H4$5Mr9M.nU5SumU6:4(,7n#m<7n?6F91_fN9h\;X:JP^(CB&&MCi0,h
+s)@sWrc8!ZrcJ-^!HrVbG5lafG^4T6Hi8?lI04qJJ:[V\pHAF<i)KVQs.B:`rLj:eUSId`s/#am
+rhodps/?@*[^NZS\@T8`]=e-Vq7cmDrP8HL!Q)bQ=8l8"<W?%k;tEs0Wi;trVl-DgUnjc[TqS-O
+St;LCS"#k7R$a5+Q'IR4Op[>5O,o<\N/W[QMZ/G6LkgcbLAuu,K_^8sK)('!K`?c)L&m'creYEJ
+Mi3OQNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71
+`lH0BbKJ/Ucd:(feC<%#f@em3gtgfDi8ESRj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[
+q#C0hqY^6hr;HTbrdk*Is*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb0_Fu.o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp1\b0/&UdF6\"gYD_`s53h6r8IM1rndb5M>W/3M27"Fq2"p)"c/"lMMmDjN;eh7N;nn;
+^]_Kj_o0Lk`V7CO`rO-N\,Ni*\+R3.[K!Q4YQ:o1riH4%XSkKa6Q0ZVE,g#DH[UF!M2m^^PaRu2
+T:r0[Y-POL]_f>@]`#J9]_oJB]`5VD]]$Ku])B84]E#YA^APbF_#;"J_"PVD_#D1I_Z.OO`;[aS
+`rF*Y`rF*S`r3pYaN=>%rlG2`bPTN]blH&^ci;AldJhSoe,\%tf)=34f[@pb_na%&^:_"l^oaT6
+U7n3KR$EhtNf8gML4t;9YHP",W2HPlRs]@PZ)kC5R?NYaQ[F6QDJE`sF+0$@:Jc@fLlROaR\-*F
+:/=kh;H'9aVP]?6NK9?lR@Te;St;[QV5^NpXoGU%Yfm%HOSk7?P4t1>ao9HTamI1LT)YG_T`(Sa
+U&^teV#R7kVZ!FmVuiruWoF'Y_>hCJ_=>>;^](r%Wi;trVl-DgUnjc[TqS-OSt;LCS"#h5R$X,(
+Q'@JqP*(ieO,f6[N/W[PMM[1GLkkq`s+UK+q1JNqq1J["s+UH,s+^T1reUZ5MuJZDNK0'\OHG]h
+Pa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.h
+eC<($f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'uB!V#XYncA@SrUg6cp\4X]s7u]kqtp?irVc<d
+JcD\KJ,~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb-1pg#o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp2<QO9+JR[]h<StD[KU%tAWU&Ue`T)`]cCB/2MD>J)KPQ$gAQ2$XJQ'R_rNqJJ#NqJD1
+N;ne8M$A`kL51M;L&F@:6Prg+?=72MA7oOkDfTrAGC+^eJ:W?,M2IAiOT1C?NqSP1OT(CBP5170
+OS4b+OSY+=P5LI?P5^[DP4t19PkgU8QN*<OQiNKKR/NHQR/<<MQiNQRRf8fSSGf#XScbOTStGnO
+rh'(]!20:a)krmnR$Eo!P)t]`N/WF?IscNeGB@hDDJNs#AH$(4@YKJeJ:E#pH?X"2I"[$'HZX1A
+BPq-]2c<II:fh%=5t4=O@:s@nEclYO7n6!B9hS'*I"$N]Ci434FEMeOH$XdaIsuotJqAW-K_pH'
+ao9H]bPocccMl/hd/;;jdK7nIeGdu3f%8O+g"P07gt^`BhV[5Ki8NYSrGDRPrbqgUs)IpTnsB-;
+nsBBJs.B=arLs7c!2KLgs.o^mrMT[o!i`3"irB%@s-!2?ooSj/s,\t8WMuhoVl$;dUnaZXTqJ$L
+St2C@S!fY2Q^3o%P`q8nOcYWbNfK*XN/NRNM2@%EL])u-L&Zi%KDL2qKDpQ(L&Qi,LB*/0M#iKl
+ret9FNfT6_OckllQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXKAY0Yd1UB[C3QT\\#Mf^V@V%_o0O6
+aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!V>s^o`Fj]p\jme
+q>^<gqu-HkrUTr=s/>sJ~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb..m-&o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp07:Jgjas&&hqr_i_mqGR5gr_WVlrB:*Cniuq6r]Ts=s%iMeqbR)cs%iSido?3CqGI>k
+;Z/r\6Q%[>3]]Ac4Zu"n5!VD#6pj@26q9d?8k_oQrCm5c!_uHar(I/d9MG:WrD*;es%`SiohOF@
+nkf<_s%rSgr_N_n:/+GXn5&IKr_`Ykp/1fe!`;cjpJLrgrDWSk!)rkrs&8Vhr_reqrDihts&BM+
+;,L+`9MA)O7mfX15lO"J49IZ)2`^jq!AuY30gS,n5s[_"4?5De5<qIu4ZYM[1Ggp?.2jT],q1H%
+3&!6J1H.9R4?l)!75R"b5!1qe92%rL5<qM$6UO1.6UsU:r^d;e8P)TL9hkL\qeH.H!GlWODuXeT
+EW1"YF8^4\FTQ`/FoHOqGBeCYH@(!dH[C-fI=6QoJaP\Y<;]\pT)YG_T`(SaU&^teV#R7kVZ!Fm
+W!KB&Wj]CH\[f<M]DfJC^&,PD^B;9d^qfrd#/aJB='&F'r`/qsnl,6]0rh4PW2HPjV50o^U7n9R
+T:VXFS=?"9R$a5+Q'IStP*1rhO,o<]NJrgSMMd7ILkpibLAuu-K_^8sK)(&uK`?c*LB!#/M#N53
+MMqIm@?$;.O-#KeP*D5sQC!u,R[]e;St;UKTqeEZVPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.
+`Q$!?b0/#RcHjnce'umuf@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFap@n=[
+q#C0iqYU0gr;HTbrdk*Js*t~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV/AHp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*BbTbK\>[dact'gYL`CrSRV4qVhA1rnmL-!f2\iregW1s+pH,s,-c5rJ^`8s,?rm!l;ak
+rl"fTq8W<P!QN+W\,Ni8\+$iq\,Wo:[0s@IZ*CL9Xf\b.X/l1cr'M>iO-jp/Fa&.[K8PVLP*;,u
+R[p(FVP^N%\,Er;]`,P;]_fD=]]$Ku])B87]`,V?^APbF_#;%J_"#8<_Z.OO`;[aS`rF*Y`r=$S
+`r3pYaN=>%rQ,2bbKS2RrlkAdrm(5`rm1ksdaHUne^aWLs4;#5b/hH8^VIUr\\Pn[W2?5]T:VO<
+OckidLkUM9KS+u]XK/=tV5^&6FeGS3Z`':TN.?/$J6,cC@:i,QIu6or:O.DDNK9EpTUekQ:/Fkg
+<MH7cVi6UpO-Q'"S=?(@Str3[X0&P,YHRf,aT):%r/po?r0-fqr5efXp;m*NrLX%]s.K@bs.]Og
+rhTRj!2f^m!iW)tri5#Yp;-14rP/?Gs/Q*u.&a&AVPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM)k
+OH5H_NJrgSMi.Lj!f2VereCH,re1-#pk&?pre1<*re:K0Lku%eE/KR4N/`jYO-#KeP*;,qQ'Rc(
+R@9V8SXuIHTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ]=bkm^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-
+g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerqQKgs8)Wirqu]mo)=4?WW.J~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV.l:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*DWW#ah$JR[fn=StGbMpn@_\rh'.+r+u@JrbVUMrbV"<s(qUMrfd>Gq3CcAs-3\PQ'I[3
+NrP1=Nr"h$NrP+=N!kQ$M2@%ELPCS=Kn]Ilr'M>iF*Cqu?t!SZC2@g0F*)SOI=?a!K8,5@O8P+=
+O8b16O84n;OoCO=On"P4O8k7:O7JD1Oo:I@Oo1CAPPp[=PPLI=Q26dHQhm$JQi<?PQhm*KRJrTN
+RJiNQRJrZSS,SrTSc>8`SXuFFqk!h[s.K=as.KCc#G%?NQ'7AoOoC>IMhQY0I<^$]F`VP?Ch[Km
+A7K+Y@tTDcJ:;ilG\CT6I=ZusFDbi&>@(Z&5s@n85uqB+6UsXQ@V':jEHHJN7n6$<9heB1I"$Q]
+D/O94F*2\NH$XdbIXcp#JqJ]/qM"mirlY5`!6kGes3CVirQtJis3^nrrm^turn%2&#MIkdgtgfC
+hYuF4hu_lsiqdNiDu=PSR.?U;QM-[FQMmETTDtS`U&UkeU].(hV#[CkVZNfrWW&pXs7VTJOSt=@
+P5LIBOT2?\W@4^CVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`q8nOcYWbNfB!VMi3JlM#rKgL]3&.
+L&Qc%KD:&pKDpQ(L&Qf.LPUccM/\?1N/WaVO,oBbP*2#nQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2Zet
+Xf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?s
+lg4!*mdKW6naZ2@oCMVRp&Facp\sseq>^<gqu6NkrUTr=s/H$K~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV/#>p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*>E_:f-sbr)3JjqbdGl;#O8j;#3?Q54_#655RM@55n@T:AdoZ:t8P@;u0Al;>iiZ6Pi-S
+5s%.j4?Ynl5<_=u6UX=0779[:8P8qTqb@#_s%NJeqb?u`q+pZYi(ruA!Du\m;?'Ji:]=/o:JOVY
+:/:=TmSNm[r_W;cr_i_lpJLrgrDWVlr_req!)rShs&8kqrDiku%8p&":eaYX9M%`A6UF*<4r6=C
+4#]2[3B8oR1bpd?1I4>m5Wq4j3C*O-5<Ltc2D[!9/h7q`-R:#k/i#@<2E!?K2`Wua5XRjs3]K,\
+4ZuG391V945sdq*6UF117S--A8PD]L9MJ2V;#F,hC&2TECB89irbqdTrc.pXrcA'\r,r!^s*"Nh
+H@#L9s*Xips*juun3,T,rDWZds.B=arh9@ds.fRhs.o^mrMK^qWN#lsrODp>rjrEH]=Y_h]tV2Y
+^&u-a^VBcas2"cRr`9&!!*9)!s&AMepJh0ms/@EFVl-DgUnjc[TqS-OSt2C@S!ob4R$X,(Q'@Jq
+P*(ieO,f3YN/NUOreU]4LPPk`s+UH*qLeQpqLed#s+UH,!f)SfreYTOMi<USNfT6_OcklkPa.N"
+Q^F20S"-%@T:hmPUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cNfrqZTjqtpBjr;H3cJcD_L
+J,~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb2tZ_4o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEfqWb08,VdaZk$g>1WChV[5Khu;R1iVh[7hscL#MYr>2M#)u+MZ&J4N;gTo_8=+h`;[aP
+`qm^Y`l5p+\)Fdg[gKROZa@*DZELI7Xo>@$WW#6^6iTOmNg+I$FEVtXItro?O->clR@9\=Tr+cl
+ZF@IE]`,P;]_]>=]]$Ku])B87]`,SE^AYhG^APbF_#;%J_"#8<_Z.ON`;[aT`W4'X`r=$S`r3pY
+aN=>%rlP2_"3\p3bPo`bc2Q#_ci)5jd2^T`e(*""f%&0ja2>[,_7mOk^V$\HV4jQSSsYlDOAh0t
+Lk^V9K7^5+X/W"lW1SK^S=ZgeVjW]iJ9Z!G?UeF5F\6\&Ll=r&:O.JFNK9EqTUntS:/Fnh;08M.
+V2^IpOHl*!S"#t?St`'XX0&P,YHRf,`rH"!r/po?s-*&rqoJZVpW39Qs.0.\s.B=arh9@d!2KLg
+!i;ckrhodp!3,psjT"nhn%ek9rkAE4.B08DVl$>fUnaZXTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWb
+NfK*XN/NSmM>rA3L])u-L&Zi&KD0uoKE$W)L&HaFLPUbCM2I1KN/WaVO,oBbP*2#nQ'I]'R$jD4
+S=Q7DTV8*TUnsueW2cl!Xfek3Z*UdE[^WcW]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<;
+h;7)JiSrnYjlY^gkiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6fqu6NlrUTr=s/H$K~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb,kU^!o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEhcX#ah$KS"-%?StGbMqk<t]!2&t%nnd`0rbVRtrfm2Cqj.&Coo9$3qMtE5mZ%=-N;e_=
+M2I+FLPGe^!/1><r'UKP)f^"+?X[ARAnc("Df^#BG'SLbJUrH-M2RFVOT(=?Nq\V2OSt=AP5(1;
+O8t@9OT(=?Nqnb.OSk7>P5LI?P5^[DP51=9PkgUAQN!6IQ2m9NQiNKLR/`TQR/<<NR/WNQRf8fU
+SGSi\St2FDStGkN!hZ-YrLn&#Ssu(4P*2#jO,]-VKReQ"G^4LTFDu/8C1h-gA7B"VKS+l,I=-Ed
+B4Q=9JUi)hDI6gU<),tG85*/O<aTHQ5t=CN@V'=lEHHJN7n-!<9h\,bI!pH\DJa<3EclSMH$Xda
+IXZj"JqJ]/qM"pirlP/^rlb>cs3:Pgrm1Sj#LUoFdF$Cje,IkseH4=RfDaD/g=tB;h;-rEhr"Fk
+!TE&5D?"MODuH'pQh6U<QiEWUT)YG_T`1YbU&^teU]RBiVZ*LnVuWgqWoX3QOnFh7Oo1CAOoLOC
+W[XpGVl-DhV50l\TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f6[N/W[Pre^Z2!/LN-s+UK+qLeNo
+qLeg$s+UE+E/07*M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjrVc<dJcD_LJ,~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb,kU^!o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEhefs%rMgr)3JjqbdSp:f("d;"QpL55.;A56!kA56!eG4T7MC:]!oa:\@Qa:]45D<;]Yq
+;H*NlrDEP\r'UKP)*U8H3]fGe5!;"k5!VG$6q'L46q0[<8k_qV:&Rc\:&Ic^:\IQ@:\7K];?'Ji
+:]=/o:JOVY:/:=ToM>N`r)!Air_W;cs&&hor_WAerDNSmrDNVnr`&nrp/1lhr)=&(;c-Ce:JFMW
+91h_R6N]Y>5!Am-s#;nq3&roT1GppC1I=Am5<_4k3C#em5<h:l3ArfJ.Oc\h,:"Nh0.nt;3A<?J
+1c73P4?c"t6TG'*$pHa85tajB5X@V$6UUi@!_,UMr^[2d8PDfP:&Rof:]>&*C&ViLCM[j*rGV^T
+rc.mWs)\0]s)e<`rcS6arc\KjH?spard4Zm"FY`IIXglNgJn/Ns.0.\s.B=arh9@d!2KLg!i;ck
+rhodp!3,pss1/0>!4i'>s1A9Cs1S9Cs1eWNrkeY8qc3VpnPf0]s/INIW2HPjVPU)`U7n9RT:VXF
+S=?":R@'>,Q'IStP*1rhO,o<]NJrgSMZ/J4L]E5/LAuu-K_g>qK)1-"K`?c)L2_p(Ll$tGMMmFP
+NK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-JnWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=.0`lH0B
+bKJ/Ucd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak3(sml0@U$m-X60n*olHncJFTo`"O`p&Ojcq#C0h
+qYU0hr;HTbrdk*Ks*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nfI>jn*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3tdJh5rb0/&TdaQe#gYCZDhu2L5iW%g:iSsdoro!!s!/g]2r.t<.r/1H2!5JNK!l;akrl"fT
+rPnWQs2G,Z`5DJ]rjMR/pU:%.oX4b-rj3!;Z*:I9XfSY*X8YH`6iBC]P*p<3FE`%YJVT,BO8b=L
+R@Be?U8=ln[(-+Js1A$<q7Z^=iOertr4D[8rk/<GoY:FArP/BJn\P+>s24`Prl+]Qrl=fRrPnoZ
+qo\o[s2kGebfe3/bl>rdcM,Zad/MGmdg"=Pd`onQ_#D+K]OSI`]re3.TqS*MR?s%uOH><SKSG&0
+JZl,SX/2SiUjdTZT!5]$R?D]IRW)nH7q$[:C3G&_:/FbbH@U^-Ng#p#TUenR:/P"j;-fljVN$Ut
+Ng,fsS"$"@SYE!XW3!,'YHRc+`W#q#rK-r>r0$WmprNBTp;m9Ss.'+[rgs.^!20=bs.TLgrM0Lk
+VPa?j!iW)tri6"!jo>%jm_Jb8s1U%bWiE%sVl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ie
+O,f3YN/NUOreU]4LPPk`s+UK+qLeKnqLeg$s+UH,s+^T1reUZ5MuJZDNK0'\OHG]hPEhE!Q^F//
+S"#q>StD^MU84T^Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(feC<($f@em3
+gtgfDi8ESSj5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Ls*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nfI>jn*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3tdJT=:R$jD4S=H1CTD"rVU&UkdT`/a)D"ql=D"qfGD#.rGPQ$gBQ2R$AQ2$C<N<#":NV\\7
+O78/4NJrdSMZ/G9Lkg\=Kn]Lmr'UEN(j(%0?X[ASAnc%!DfTrBGBnXeJqA]2M2hIps,Qi7q2kQ;
+!0[/?qiLi=plPK9r/UZ8oT9!5rK@)@qi^uCrK@2EnW`j7qj.5JqN_,Jrg3\PoU,NDrg<\QrgNhU
+s.&qV!1s1\s.04_qk!e[DP<\lR?s2%OHGTbN/WXIIt)ijH$4=NE,KK,BP;!f@q&i!Jq8E"I!g3Q
+AU8ZTKR7fX?YOIX9h%3;=[Q(h@:r#!7R^]o@qok!EccSM84Q0>9he2UI!gBYDJa92EHQJKG^=X_
+IsuluJV/T.q1SghrlG&[s2t;`!mJp6rm(Mhrm1_od*Vd>#L_)MeC<%!f)F;$fE9g]gYDeas5*e5
+rnmh9DYS)HDZ?(#R.Zg;QMHmISH#/ZT)YD_T`1YbU&^teU]RBiVZ*IpW2ZcqWrK-]s7VTIOT(C<
+OtMlYX/`2!W2HPjV50o^U7n9RT:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[QMZ/G6LkgcbLAuu-
+K_g>pK)1-"K`?c*LB!#/M#N53MMqIm@?$;.O-#KeP*;/rQC!u+R[]e:St;RJTq\?YVPg>kWiN5'
+Y->.9Za@-K\%0&]]Y2%o^r!t,`Q$!?b0/#RcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$
+m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?WrIS~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf[Jln*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3td8!I9:BXKk;,U<j;>X8i;>a;l;>sAl;=$IE55RSE4p!l24nq5@4o[YC:]!ob:\IWa:]F8Z
+;tj8i;tEud;u9Jm;>ro[6iBCj4[D.l4$5Yj4$,Si5X@_)7RKX57S$-D9MGF[s%N/]rD*>f!)WSh
+p.jL@oMGH_s%rPfs%ikp:/+GX:@V-Q;#a>g;#aDl:]aKl;Y<oe;#!od;Z0Pn;Z0Pn<<#nj;Z0Qi
+;Gg:f:J=GT8kMWB6UF('5X%=o4#]/X2`NWP1c7'G1.+;m5X%:k3Bo\l4[2(j3ArcQ1+=Oq,U4im
+.k`\<0Jk[G1Gq'M4?Pem6q'$53?14E4?H208j>R,5XRn,6U=437nH9C8kM`M9h\@\;#a>kBE2]E
+B`;`EC'/9hDJoGlrc%jVrc8!ZrcA0`FT-F^G5ladGl2meHN8HlI/nch4o[Xt<<#nsSH#/ZT)YD_
+T`1YbU&^teU]RBiVZ*IpW2ZcqWrK.!\,a):])TDB]E5d\^AbhG^]2(O_SO(*r`8ttrD`;cpJ`]E
+WiE%sVl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOreU]4LPPk`s+UK+qLeKn
+qLeg$s+UH,s+^T1reUZ5MuJZDNK0'\OHG]hPEhE!Q^F//S"#q>StD^MU84T^Vl-MoX/rG+YctF>
+['d?O\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(feC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'uB
+!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Ls*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$prQ,Gibg+Vae_&X3h;I8khuVfprSdb8ro*n8qhb?1k)&tk!f;ekqhkEgs1e]P_ScAkrl+lV
+s2P,Zq8WWX`Pf[2r4)U4!4M[1pU9n*qmQO4rj;[/s/lI)XK8E#6Ms4K6lV2QE,p#BG^FjjLPq4T
+P*;,tR\$1HVQ6o,\%D@HrOi3FrOr0BkI^c,rO_p;r4D[8rk/<GoY:FArP/BJn\P+>s24lT!5nfS
+rl+]Qrl=iSr5SiZans6[aoBN^bQ#fdc2>l^ci2;jd::PLaN)01^:h4m]XYPcXf/+iTq@gBQBI>k
+O,JdIL4k,,Jul#QW2-2cQ[<_HZFQp(O*$,FDhh,!@X1[`G_D&N:esr:Jr#AIQ("58SPW'U:KCCn
+;N.<FV2UCpOHc#uR@O8J"JDTfVlTg!s0):'_uBb"OT(CBOSY+/anNmRanNmVRf]+NSc55\T)bP`
+U&UheU].(hV#[ClVuN[qWW&ptWr]<(kPt+ho"b.;s1T\XWiE%sVl-DgUnjc[TqS-OSt2C@S!ob4
+R$X,(P`q8nOc]R'"ceS$N/NSmM>rA3L])u-L&Zi&KD'onKE$W)L&Qi,LB*/0M/\?1N/WaUNfT6_
+OckomQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1Yd1UB[C3TU]">Vg^V@V%_o0O6aN2NIbg"GZ
+dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nF?)?oCMVRp&Facp\jmeq>^<gqu-Hk
+rUTr=s/Z0M~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$pqj.SVR[Tb:SXuIGpRqJYs.TOfT_iO%D"MT<D#%lDD#KRsPk^ODQMZpIPkp[<Nq87tNrP+<
+N;e\6LBE6bKnTFlr'UBM)KL",?XR;PAS,XlDfBc=G'81[IY!'(LPUnJooJm0rfI2Dq2tQ9rf?l:
+rf?u;qiCB2r/pr@r/pl>s-*DEs-)u;q3CiCrg3JI!13\P!13;EqjIGNs-`hSrgNnXqOIVVrgj(\
+!2'+Z"e;!IQ'%4.O>i5ZN/<7?IscNdGB@nFDes0&B4b[a?smDpJUr<!H?s^G@=<f`H?F+5BQ$s\
+4%r:N6W7/uC.%tj.UZ^uCMe'5Fa8.#84H*D9h\/sI!gBYD/=*0EHQGJG^=X^IXZctJV/Q-q1\jg
+!6>&ZrlP/^rlY;crltGfrm1Mhrm:eqe'n<Grmq,$"5);[gA]n-h>c@3hZMfoi8FNNphfnpr0[2E
+nWs*>s-j([SXobOs.9:arh9@d!2KOhs.o^mrhodp!3,sts/Q1%Xlo`TOnFe9Onk1?OWpj+Wi;qp
+Vl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOT(:ENfB!VMi.Ljs+gZ1rJ(?+s+L6$p4E-ns+LE+
+reCH.!/UW2E/KR4N/`gWO,oBbP*;,qQ'Rc(R@9V7SXuFGTqS6WUo(&gWN*#$Xfen4ZEppG[^`lZ
+]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8B
+oCW%Ts7ZKerV6Egs8)WirVZWmo)=4?X8d\~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$pr_EGg"Ar&o;H!Eir)3Jjr)*Sn:f-sOlok>3r]^NL4ZtnirB:$ArD3;cqbR5g"&D`i;>sDi
+:B=9hk>V7Wq,@#e!)ren"&Vro;>ro[6i9=k4?knh3]]Ad5<V(j5X7V'6q'I27n6-C8P;`Np.bK\
+r_NPjrD3,^hbWl@r)*JjqG7,f"]%lf9hnIR:\R]a:BF?g:]=2i;?'Jl;YEud;#!oe;Z0Pn;Z9Vn
+<<#nj;Z9Mo:f%'b"\VH[7n#fE62j%X4?>M^2`<NN2Dm6H1,CZa5q,#^3]T2b5Wq=p4#o/W2)?m8
+)C-R\/h/P43&!9L1c%$N3]oSk6:=7%r](6K4$,Sp92%rBr]g]T6UX7,84Q2L8-V[Z92&#R:ARci
+BP2!lBDuTCC&ViLCMds,rGV^Trc.pXrc@sYrcS6a!dAm6r-J?hs*Xfo!.XT'fMqlLs-j([SXobO
+s.9:arh9@d!2KOhs.o^mrhodp!3,sts/Q1%Xo>g2]".dNs1A<D!kl7[rkAEIrkJZQ_GsT:rDiYm
+oMbK`,-.`DWMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhrf75CNJrgSMZ/J4L]E5/LAuu-
+K_g>pK)1-"K`?c*LB!#/M#N6MMMmFPNK&sZO-#KePE_>tQC!u,R[]e;St;UKTqeEZVPgAlWiN8(
+Y->.9Za@-K\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$
+m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0gr;HTbrdk*Ms*t~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W(GaU626c-Xngf@o!8hu;U7i;;L3iW.s2M>iD.M>iD#M>rA3M>W53^;'Z_!l;akrl"iUqo8HP
+s2G8^`5BI.\@DFH!4_s9r3lO2pU9b&&%&[KZ`pa>Y-+n.X/`3e6Ms4I6lVD/E,p#DH$t*nLl7:U
+PE_B#S=lOMV5LB![(6%Gr4N*ErOr0BqRZa?n%8S3rk&$<r4D[8rk/<GoY:FArP/BJn\P(=rPSWQ
+rl+ZPs2XuUr5\iY!6P,\rlG/_r6,)`!6tGeps8rd#LCK4_SEk!]DfBE\[]/MVk]rYT:D@9PE:ic
+MM?n<K7\](Y,eS&Vkg)`J9mfXWNi1cNcL/>RV,9.D0JWnIYg`q:j.5<LlII^R\-0H:eaY[<E)mq
+PG+bKN/j!ZOd23"S"'DK"JMZgVlTg!!3c4&_>aRuOc]="m`G.Cr5ncUrgWqXs.0.\#G7Z^TqS3T
+U].(hV#[ClVZNfrWW&n"X/rD)kPt%foYCC>s1SK6ri.QLW2HPjV50l\TqS-OSt;LCS!ob4R$X,(
+Q'@JqP*(ieO,f3YN/NUOM2@%EL])u-L&Zi'KCjclKE$W)L&Qi,LB*/0M/\?1N/WaVO,oBbP*2#n
+Q'IZ&R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Ln
+e^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCV\Sp&F^cp\jmdq>^<gqu6NkrU^#>
+s/Z0M~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W(EQO&tIS"-">StDYKT`(PcU24Z@C\qrGD>nGJD>7rEC]8/JPQ$g;Q2d*DQ2Qd<Nq/2!NrP(J
+Mi<OPMMR%CKnY266:1T;qEu9F>[C`E@Uit^BkqX,F*2YMH[UBpJqSi5MN*YmO8"b/Oo(7=O8=t;
+O8P%8O7\P3Oo:I@Oo(=APPp[EPOXn4Q2HsIQi!*JQiEEQQh-UARJrQRRJ`NQS,&TTSGo)VSctXP
+Q^*_rrfA%YO,SmPK7SN"H$FRTEcGo2CM.3h@q&kT?\JE01k'k!H"^c9H[pWlF)5,tBRNW9;,gac
+='oT,84Hik@VBRrEH?DN7n?->78-EM9QPT/IVf"$&T;Z0F`r"SH?jjdIXcp"JqAXNK`K*k`W4'X
+aSs<\b5TQabl5iecMZ#gciDDkd/VJndf._qe,n1Of)F8'g"P07rnRP0s5*b4s5<lprbhRLpm:lF
+q3UQ9rg3VRs.'+[rgj@eTV/!PU8"F^V#R7kVZ*IpW2ZcqWWT<'XKC[cn<*I,rfR,As,d;^ri.QL
+W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOM2@%EL])u-L&Zi'KCjclKE$W)
+L&Qi,LB*/0M/\?1N/WaVO,oBbP*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C[^N]V
+]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@
+oCV\Sp&F^cp\jmdq>^<gqu6NkrU^#>s/Z0M~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W&DrD*Ag!)WVlqGI2hrDEJjrB1!@r''@."[5(45!;(-4T.G@:]!o_:BF?i;>sDi:]F8k;?'VX
+;uBVb;Z]ir;uKVn;?&u\6i'1N55dME3BTGhr]L<I5skQ=#t@9P7n?3D92/1X:&Icc:]F8i:\IQ@
+:\7K];?'Jh:]F5p:JOVY:/:=Tpe^`]s%rSis&/Sgr)!/cr_i\ns&/bnr`&kqr_`_nr_a5':f'q`
+9MS5R84c3:6:(T9<BNE+4#o>\2`NTN2)@$F1bqEb5X@Os3]K>f5X.Fp4#o/V1b_!:)_*<l/MAk<
+0JtaC1H%9U4?c"t69$td3B98c4Zu>/9M7W95=%V&6UX:08Oc5L8-V[[92&#R:ARcbBE)WFBDlNC
+C&_oLCM[keDZ4SRE;jkWEWU6%F8L(YFoHOcG^4T4HN&6oI!pBkJ,MS+4oJ=5;ufkrS,]#YSc52c
+T:hjNTq\9VrhTRj!2fan!iW)tri-7)XK8P5\%&uZrOW$@s1JBFr4`3Gs1nZOs&K%ts&JempJ^fc
+!3?+!/ZG\HVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkpibLAuu-K_pDo
+K)1-"K`?c*LB!#/M#N6MMMmFPNK0'\OHG]hPE_>tQC+&-R[]h<StD[LU8+N\VPgAlWiN8(YHY:;
+Za@0L\@K2_]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60
+n*ol;o()DEo`"O`p&Ojcq#:*hqYU0hr;?Nbrdk*Ms*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r1HaoBKibg4\cf%Jg5hVe@k!93q8rSmX/qhb9/q2,!+mtq%$#JRsf^qmk(_u@UR`V[[Oa8a-_
+`Pf[2_8,uYqRQU8rO;X3!4DR0pU(.2[Bd$@riZL-XK8J(6Mj.G6le^aDK0]=GC"[cL5:bKOHbrq
+R%0b?Tq\E`X0K.Frk/0Bs1\HFrOi$>!5.d4rOi0BqRZU:p:UC<!5A*?s1nQI!5S-@qSN3KrknlW
+`5VMkrl=rVqoA`X!6P,\rlG/_r6,)`s3:Mfps3Koahtm*]=PYe]XbM_YGe=nTUqdFS!B5#O,]'P
+KnY).IsnDuWi2ekUSFEFHC^S&XeD,AEJ]Hl>ZaR>7r!:$ND">7H%1R*O-Q0)T3+l`9i"_e;I6&j
+V5903O-#NhQ'n/4rLO:iV5L8mXf\b0poqR6s,[;EOHB=$s2k2]oZ?^Gr5niWs-iqV!h>gPrgj@e
+TV/!PU8"F^U^*`nVPg>jW2]cr!irE(riPDamD8P4r4i9G/$#\MWMl_mVPU)aUS=HUTV%gHS=?":
+R@'A.QBd\uP*1rhO,o<\NJrgSMZ/G6LkgcbLAuu-K_pDmK):3#K`?c*L2_p(Ll$tGMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-JnWiW>*YHY:<ZaI6N\@K2`]Y;.r_SX71`lH0BbKJ/U
+cd:(feC<%#f@em3gtgfDi8ESSj5f=ak3)!nlKdg'mI'E2n*olHncJFTo`"Lbp@n=[q#C0hqY^6h
+r;?Nbrdk*Ns*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r1EQNESDS,Sr]StDXJT`1Y_T`(S[D#8#FD#8)HDYJ#CD#\;LPPpa;Q2QsBQ26R7NqA>%NX^u.
+Mi*CKMMd4FLPCLLqa:0I*CY-V?=.&KAS#LgCN"36F`r%VI=?]sK8#&:Mi<bsO7n\.Oo1==O8G%<
+O8P%8O7\P3Oo:I@Oo(=APPgRDPOXn4Q2HsIQi*0JQi<?PQhZpJQi<BLRJrQRRJ`NRRfJuTSc>5Y
+SHYUTS!]P*rfI,?B8h\*L4Fc&I!9g[F)l59CMINpA7K(W?snV<J:N)sH?sdUAU8ZOIX#jK?#!tT
+7RB=@4]5HnC-l$-?"%5XD/jZ@Gtpn#7R^!F92^.aI=?!MD/O?5EclPKG^=X]I"$NoJUrH*KD:0#
+`WX9#`lH.!aSj6[b5]Zbbl>oicHjh^rm(Vlci2;jd07tIe'upurmh8)f\"p4g]$".h>Q41hZ2U5
+D?+VSDZ+GPQM-[BR.ls;QN*EQRf]+NSc52cT:hjNTq\9VrhKdqVP^8hW2Q]pWWK6&XT#?cs6YsF
+OSb1?P5gXpX/`2!W2HPjV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3ZN/W[PreU]4LPPk`
+s+UK+qh+Hkqh+p%s+UH,E/07*M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6Vq
+XKAY/Yd(O@[C3QS\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_VjQ5OdkNV6r
+lg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6Hjr;H6dJcDhOJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf@8in*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r/Er(d8f!)`\mqbd;irDEMkofW19!'^0@r]]X2s#g3TqbHu`s%r\lr_WMg!)WYlr`/ttoi(li
+oMbZeoMb`erDNer;,TaX6hs+N76pf4(-=ZB5!1tl5X@Y&770L46q9^;8P2TNrD!2b!`)Wgr_WPh
+pJ0UAoMGH_s%rPfs%i_l:B!rf:@V-W;"RN`;#=,h;Ya2e;#!od;YO,h<;ohq;Z9N::ej\W9M7rJ
+7n,j55X.Lu4$5Yf3BB)X3&EKK2)6pC1.2%+s#r"r3B9&_5<h=o3]JuU2)$R(*[iQh.PES>0JG4:
+2E!TY5!MD&2`NiY3BfJe55n1l8j5I*5XIe)6pj:384H*?84cEG92&#R:AIZcB)-*=B`2WIC27X&
+rbh[Qs)@sWs)J*Zrc/'^F*%>&rcJ?eGB\=Xrd+Tk!.+Wks*OirJ,MP/55dXo<<&EdRf]+NSc52c
+T:hjNTq\9VrhKdqVP^8hW2Q]pWWK6&XT#=(\%&rYrOW$@s1JBFr4`3G"i.sj_GjP(<;KPf<%G#L
+Wi;qpVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NK&mUMi.Lj!f2VereCH,s+L9%nq-ak
+s+LE+re>BILkpnEMMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J
+\%&u[]Y(tn^r!t,`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOj5]4^k2tjkl0@U$m-X6/n*fc9
+rpg-^o^r.U!quB_rV6EgrqcQirVZTloDX=@XT*e~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.f8p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2L[rQ,GibK\G_eCWI1hV[8iiW%p9iW%p2M#3&+MYi8-MXZK&MZ:Bj_#;(M_ScAks2FlTqT&WU
+"NA<t_nuDhqRHC4rj_d5o="D$$FI.GYHG"0X0&Bgqa:3JrC%0aE,fo>FF&@bKntYIOoCOQR$jP<
+TqJ3ZX0&_;]`#PC^AYbD]_oAA]^NK2]`5V?])926]`,SE^@]2?_#1qI_!o2;_YqCP`;d^U`5VMk
+rl=oUqo8`Yans6[ans9\bl>rdcMc(%cHOAL^q@:k]"GYb\%&cDVkTrZSt;=9QBRGlN/ECDK7JK%
+I]99EVl->bUmmU2NJ`V$[@`\BDkMc.='J4A9l,*0EcZ;FH@^m2O-c?/Ski*U:/t4l;kft^V2p^t
+OHl*!R@Ke<rgjCkV5L8mXf\b0pTV@2s,m8ArK7-$rlP)\ouZaFr5nrZ#ah$KR[]e:S=TYN#G7Z^
+TqS3TU].%iV5F6i#H4W$WiE,#XT#=%Y3GuN_>D%F^G<O)X/`2!W2HPjV50o^TqS-OSt;LCS!ob4
+R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%EL]3&.L&Zi'KCOQkKDpN(L&HaALPUbCM2I4LN/WaVO,oBb
+P*2#nQ'Rc(R$sM6S=Z=ETqS3VUnsueWN*##Xfen4ZEppG[^WfX]=bhk^VI_(`5Ta;aND]Mc-FY_
+dF6Upf%8R-g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)WirVZWm
+o)=4?XoEn~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.`6p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC45["IPXIS=TYNs.B=arLs1_s.St!!,MIJqec4JoPOJAs-*;Ds-3SKpQb]ApQY`CplFs*p5S^)
+s,@;CM2@%ELPUXNqa:3JrC%]M>[CcE@:Ee]C27^,F*)MKH$ashJq8T0LP^qKooSm0r/gf:r/go=
+r/UZ8oT9!5rK@)@qi^uCr/q&Dn<Ea6qj.8Krg*GJrg3\Pq3_/Js-W\Org<SOs-s%Yr13eV"J)'O
+Q^.Q48</dmN/<IKJ:N,sH?aXVF)Yu5Ch[QoA7AtU?s\G8IsufoI!KmTDJX!"JqA2eCKu!m><t_B
+>=)7nA6)c7>[LrRCN"99H$K<X!(Hi[s*PZ3IV`k=DK0]>F`r"TH?jgbIXZctJV/Q,pOrUdr5ScW
+r5elZrlP5arlkDes3:YkcMPred/VJndf._qec+,%f@\a/rnIG-s4mn9h;7#GiSjNKr0I&Cr0[2E
+o9KZLR@9S6S"-">rgj@eTV/!PU8"F^U]I<hrhg""WMuntX/i?$XT5Ngs65[FOS=klXK/A$WMl_m
+VPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLkktas+UK+qh+Ejr.G!%!/:B+
+CPR_%M2@+JMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf
+^;%J#_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!V>s_
+p&Facp\jmeq>^<gqu-HkrUTr=s/l<O~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.o;p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC.2h:/4O_:&n,e;Z0Jk;Z0Jm;XcgA4o7G94oRSB4o8%P:AR`d;#X>k;#F,h;#O8k<;ont<:s2e
+<:j)h<:j,h;ZBYt;H$FZqa:3JrC$cQ4$<L'!^&Y/r]L?J5sdp;6jZ:M7Ros?92&#Rr([;h:f70f
+rD32`hbWl@r)*JjqG7,f!DcJi9`RrX:]F8c:]4&g:B45g;>sJh;>sAn:Jam_;>jDe;uTbr;uTYn
+:]F''9M.oJ7R][05<qFt4$>_f3&iiU3&WYl1BB3sr]qqq5!(ec2E*NK1Hdc\3&NTN0.\+c-8$o%
+0fCX:0ekOE3''/c5XRmur]'sBr]L0Q"A1jD5=5<:"%,OJ7K,d_84cEH92&#R:A@W`B)Q?DBP1uV
+B`;]HC2Eldrbh^Rs)@gSs)S*[rcJ-^"*Sm4H2`*lH[:$brHeWoI=QkF4oIRn<!\kZR[T_8S=H/L
+Sd1m\TV8'RU8.^`!Mu[mV['0"WN)u!X/u<&"g5>E\@K0K])TDB]`5\C^Al"K_<Fqu;tj6GXK/A$
+WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLkktas+UK+qh+Ejr.G!%
+!/:B+CPR_%M2@+JMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT
+\\#Mf^;%J#_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK
+!V>s_p&Facp\jmeq>^<gqu-HkrUTr=s/l<O~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIf6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+eGRAsai_fMbg4\ce_/a6hr+IlrSmh8s+pQ/qhY-+q25--pknj'rJ1T5^;%J!rkSWP_u@UR`V[[P
+a8X'[`Pf[n_Z%CM\cB;>\Gs)>])B2=\Fm?'[f3ZB['d<JZE^X;X/rD'r'U9JrC%etPF?K0F)uGL
+I=R!+N/Wg\P*D6!R[p(EU8=chYdM(?^AYbD]`#GB]^NK2]`5V?])926]`,SE^@]2>_#;"J_"#8;
+_YM(P`5T^8`V[[Sa8<mR`ra?(ans3^ai_d'bQ#fdc2>ijbK.fB^qBZXA\#=][CE98Tqe6PSXGn3
+Q]dMmN/E=CJUr8tI&a*AVPKoZU3Vr`N/NIEJq&2pG&qS8F&-I\I;<Y9E,fuCNdZP:Nffd#TU\hO
+9hn_f;LY=7VPfE6Od)-"R@Kh=StD^QV5L?mXT>T.p9;1/!g&P,rK.&A!li:$rlG,]qo\ZTnAtOL
+"j!'uR@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/l@*lMp(ar4r0D!3?+!,,qN=
+VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\repl9MZ/G5Lkkq`!/:E*r.Fp!qLSQrr.G!%
+!/:B+#)A"jM2@+JretWPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1Yd1UB[^N]V
+]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*mdKW6naZ2@
+oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s/uBP~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIl8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+e<ZErQO9.LS"-%@StDXJT_kG^T^?RoD?"GLD>8#DD>\2MPP178Q2HmEPlR-LQ2[$@O7&&(NW5%<
+O8b.ENK0$YN/NRMrJ1;<q*b0M*_(3p>[:]E@:<\ZBkhO)EcZ;GGC"XbIt<6*KntYHp5o'3rK-f8
+rfI,?r/UZ8oT9!5rK@)@qi^rBrK7/EnW`g6qj.5J!1*JJrg3\PqO%5Jrg<SN!goCDqjISUS=KMJ
+FI\efR$<brOH5KaNJiUMKRnT"H[0gYFE2A=D/<p!ARo4X?XI)hJ:E#rH['gIE,B?(B4PFY?<^K3
+<)cp\:/,%m;H-Xs=BTNL@VBRqF*;eP84H$99he;nI!gBmCi4-1EHQDIG^4U]H[U<lJUrH+JqWiO
+s2FlTs2Y&YrQ,8dbKJ/Sbg$%1r6PAhrmC_o!n>cNrmh/&g"HAZrnRP0#N":mhV[5LD>A&NPa.O3
+QM-[ER.H[<QN*<RR@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/l@*lMp%0!0Hr;
+!3?+!,,qN=VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\repl9MZ/G5Lkkq`!/:E*r.Fp!
+qLSQrr.G!%!/:B+#)A"jM2@+JretWPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1
+Yd1UB[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*
+mdKW6naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s/uBP~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIf6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+eG`8D:B!uf:&n,f;Z0Ji;Z9P\4S:l4557;?497N+qbR)a!`)WhrD*DirDEPjrD3Giqbd,foi(Ta
+pJ_&jqbmPq;cEQkr'U9JrC%;f5!M(i3BT>b5!1nh4[21t62j4X779L77Rp'C92>I^!`2`krD<Gg
+q+fgCoMGH_s%rPfr_NSir_3AfnPB-\peUc^!DcPh;>sJh;?'Jm:]=2d;>jDe;^#+=;,L.b:J=DR
+91_]E770=)5sIRr4$5Ma3B8uV2`<NMrA+a66U3k#5!:tf5lNVD1GUU:1&`a3/1WA%)C-X_.k<4N
+/.40t1cRNX4$Gu"75t3+*BlSK6q^3I83T7(6:4./6UjR884H-@8k_iL9h\:\:AIZcAc-0=BE)ZF
+BDuTDB`VsbrbV^SDf5Mls)@pVs)8$ZEcV,"s)e6_!dAm6rd+Ni#C:`CH[C0jJGMG/4oeO1<<&<e
+R@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/lL.\@B)[rOW$@s1JBFrkAEIrkJNM
+k>VF[pJ_-nri.0AW2HMhUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfF$s!K2j7M#iEfrIt<+
+re13%r.=crr.=j!re(9*rItN3LkpnEMMqImCQ4@8O-#KeP*;/rQC!u,R[]e;St;UKTqeEZVPgAl
+WiN8(Y->.9Za@0L\@K2_]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq!f@\d1gYCWAhr*JQj5]7`k3(sm
+l0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0gr;HTbrdk*Ps*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+8#0qo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+ebdDsai_fMc-b"hfA#*<hr+Ilro*q:qhb<0q2#*-qhb')re^9)qMG3d!5SQL"2_so`;[aR`qmaT
+`rF$W_u[cmrk\NDqmc^:pUL:6rO;a8rjVI,$+7.HZ*LU:Y,nf(6hs.K7K5h#8!KN`DfTuDH@10m
+Ko(bIOH>ZkQC4;9TqJ6ZVld22\%_gSr4N$@!5/->s1J0>rOi0BqRZU:ot:=<!5A*?rkSKI!5S3B
+pqljE!lW'rrl+fTrl=rVqT&TWqoSu^b0'V)rQKB,aN)66^Uq+h\@B#V[^<9<VPBlZSt279QB@Al
+O,/XHKReMuH[MfiV50l\T:U:LS[#i*K7A;sG'._?BjshKBPV?uCi=63;GN:&L5M"VS"-*\:eOMX
+<`;nQTqeKFO-#NiQ'n/2St)CDV5:&hXf\b0oWYn+"-J\,Oo:C@`<+'"a8X0Zao'<Vam[=LaT.\,
+QiWVDrgOIhSXl@DT:hjNTq\<WUnjiarhg""WMuntX/rE%XTGZ/Yj;>P_>V1G^FQCdWiE%sVl-Dg
+Unjc[TqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!VMi.Lj!f2VereCH,s+L<&r.=`qr.=j!s+LE+
+reCH.!/UW2!K)g7N+J!/O,oBbP*;,qQ'Rc(R@9V8SXuFGTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ
+]Y(tn^qmn*`Pom=aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl0@U$m-X3.n*fc9rpg-^
+o^r.U!quB_rV6EgrqcNhrqu]mo)=4?YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+eWuNsQOB1KS"#t?T:V[ITV24V!20:-s(q[Onndr8oPXMBop#H@s-EYL!g]+:rfm>Grg*PKrfll4
+pl><6rf6`4r/V/ENJrdRMM[1GM>Ta:7/]RS7Nb3BG["BZ@:<VTAnYprDK9f>Fa&(WI=?a!KS>2<
+MN*\nOT1FCP5LI@OS=h9OT1C=Nr+n0OSk7>P5LI>P5^[DOoU^;PkLC>QM-[EQiNKMR/E<MR/<9Q
+R$jB>RfAlWS7S1VR$Nu!OHGTaNK/sSLkgP2IX?BcG'%bDDf'<+Bk:jc@:<ML?@RKSIXHKdG%G00
+K8P(e@:!/@=&r3p9gVTO:esqe<*!$k7W)[GBl.d0G'HtW7R]^>9h]>MI",sKDJsT:rc\<d$$giF
+IXcp"K7\aJL&T'j`W4'Y`W4'Ya8j?]aSs9`b0.uPrlkMic-?75rm(Vlci)5idf._pe-4FTf@em3
+rnIG-s5!Y1!T2i7D$4`nD/O7jP6-u6Q2?m@QN3EDQhZjHQi<?QR@=,E&=f;^St;RITV8'RUSFW\
+V5F6i#H4W$WiE,$XT#='Y-5(qs4i_eXK/A$WMl_mVPU)aUS=HTT:VXFS=>t8R$a5+Q'IStP*1rh
+O,o<\N/W[PreU]4LPPk`s+UK+r.Fp!q18Hqr.G$&s+UH,s+^T1reUZ5MuJZHNK0'\OHG]iPa.N"
+Q^F20S"-%@StMdOUSO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_Sa@3a2lBGbK\>Yd*^:jeCE1&
+f\5'6h;-rGi8N\UjQ5OdkNM0qlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjqtpBjr;H3cJcDqR
+J,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+8#0qo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+ebr;D:Amlf:Jq'g!E2np;>a;l;>rZV4T7M74RbN/55dYD49/4T:]4#g:]=2h:B45i;>sDj:]=2j
+;#jMn;>sSq<;ohr<:Wuf<;fhr<;0>f<;BJj6hs.K7K5g\7m91"4?EF(s#^?G3^*I,!^]7Br^HfV
+#"VB\9MSA\rD<DfqbH!DoMGE^!)WMfr_NSir_3Afo2#6[q+pi^!DcPi;>sJi;?'Jl:]=2d;>jDi
+;\`2-:f'q_:/";S8P)HC7R][/5sR\"r]C->#rXXu2`<QO1c$uf1(HZ:5<_4m3]TDi5X@Rr0`<R,
+.kE5$.P(KJ&Lf1[/1rJ42*NiU3]fJh6UWm33=7r34[i";90Y[,6N'7\6qBd;7n?3D91hfM9hkL[
+qbR3&r+>k>s(DCFrb2=G#\n-kD/F0.Df5Mls)A!Xs)A!V"`\R'F)uC#Es-W/GBeE3H38M?H[>[<
+s*OisJGDA-;?0YG;ui9aQiWVDrgOIhSXl@DT:hjNTq\<WUnjiarhg""WMuntX/rE%XTkr3Ydh3R
+\c',>]DfJC^&PhG^]2+)<%G&NWiE%sVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!V
+Mi.Lj!f2VereCH,s+L<&r.=`qr.=j!s+LE+reCH.!/UW2!K)g7N+J!/O,oBbP*;,qQ'Rc(R@9V8
+SXuFGTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=aihlPcHjkbdaQ^rf@S[/g=tH>
+hVd>NioB+]k2tjjl0@U$m-X3.n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mo)=4?YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf.,gn*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+aiXG$$HgQ8bg4_ee_&[6ro!h8"6/;!iqSB-MY)c!M?&M%MZ1Bj_#D.N_ScAkrl+lVprEES#04a&
+`Pf^4r5&EFr4;d9rj_d7rO;j:q7-F5q6g:2rj)U1ricI*Y,qRhq*b3Nr^QlW+dJR8E-$,EH?ssi
+K8#5CO-5TeQ'du2TVJ6XVPpPtZaI@A]`,MC]_T2=]_]8=]`5V?])923]E,^[otULArP&?Jo>14=
+q8<3Mrl+cSs2Y)XqSrTWrlOrXqoa0'`l,[-]Xk\b[^WcU\$EEAWM?2[T:D:8Q'7AmOGo$PKn"T"
+H[:":VPBr]Tq.ZrF.8l.[]#aZG*8PWQtes*A:/BBFao4,>Yn4WIY!<6OI)H0T2/9W9ib7m;0\e0
+VN$UsOd)0!R[fq>T:r-ZW2m&&Y-7K%\,ZAgs,d9#rPefVs2Y/\rlP&[qoS3G!m-aprg4(]R[T_8
+S=Q4BStD\TT`Lm_rhKpuVPg>jW2ZesX/i?$XTYf1YHY7ts6mf(_#(tE_#;#%XK/A$WMl_lV50o^
+U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%EL]3&.L&Zi(KDgDqJc12uKE$W)L&Qi,
+LB*/0M.MR&N/WaVO,oBbP*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsueW2cl!Xfek3Z*UdE[^WcW]"G_j
+^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&([oCW"S
+!quB_rV6EgrqcQirVZTloDX=@YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nepuen*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+rKd8G"IPXISXo\Ns.K=a!,V7DoPF2;mr%c^!1!AG!L8oHQ2R$JQ2[$JQ._2pNW5"ANJrjVMuJS8
+Ll$rd6hs.L7K,dU7j2qu>?tQB@:<VWB4u'uE,p&CFa/1ZIXcp#KS>/9LPq+PrfHu=rK-`6!g&J(
+qi:Q7oT8s4rf[2Aqi^rBrK7/Eo9As6qj-oAs-NeQr0[AJrg<JKr0deYR@'8)P5^P\NfT-YMi*@I
+KRnT!G^4OVFE2;=ChdZsARo=[?<plBIsufnH[9pYA7Bh3JqSMoD.%7)B6d<3;GC@t?<:NHBhV)h
+DI?peCMe'4H$VqN7R]sD9hJiAI"-!KCi=<6FEVnSH$XgcIXZj!K7\dKL&]*j`VmgVa8a0UaT'B^
+aoKZ]c2Q#fcNV\Acd:%drR1_ps3q)"f)F8&g"P0Zg]-(.h#uTjhVR/dD>TOsPlI$HQKFP0Q2m9N
+Qj]=NR[]e:SXl@DT:l1W!MZ@gU^O#rVl-JlWN)u!X/u<&"Knr3Yd!KoglX:lX/`2!W2HMhUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*CKM26tCreCH,s+L<&rIX`orIXs"s+LE+reCH.
+!/UW2AVuD)N/`jYO-#KeP*;,qQ'Rf)R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y2%o
+^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0gYCWAhr*GPj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFa
+p@n=[q#C0hqY^6hr;?Nbrdk*Qs*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+;,L0h:]F2h9`\!brDNYo!)i_lr_iPR!'L-AoK;J'pce^Sr(m>frD3Dh!)NSjr)*Gis%iSi!`;in
+r)*Jpr`/ttlVdd_qGmMoqc!>jqc!G\q*b3Nr^QlW!^8k2r]19G4?Yeg5!(h)5Q=%Z6UaL67nH3@
+7S?BK9MPC[qbH!Dnkf9^!)WMfr_NSjr_3Afo2#6[q+pi^!DcPh;?'Pj;#jGk:]=2d;>jDm;]J\3
+:JOY\9hJ#N84uNF7R]a15sRUq4?GVb3&`hr2-2[n1c$mD1bpjQ5<_7o4ZYSg5<_:r4?GM[3&`]K
+2^KCj-8%&1/i#@G1c@6V1c@<S4?c"t6Spha3Bo\g4?uP590YX)5XRk*6UjR87n-'A8k_lN9MP.S
+qdo\;rFZ1FB4q0Vs(VXPD/O4gD?=`oDuO\ZEH#l8DfPbs$Zg?/F)uGGG'8(SH2MsoH$Xd`H[L6j
+J,2>*;ZB\J;ur;Org4(]R[T_8S=Q4BStD\TT`Lm_rhKpuVPg>jW2ZesX/i?$XTu#4YHY7@\[hXL
+s1A<D!58?Fs1eTJgf,u/X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*CK
+M26tCreCH,s+L<&rIX`orIXs"s+LE+reCH.!/UW2AVuD)N/`jYO-#KeP*;,qQ'Rf)R@9V8SXuIH
+Tq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0gYCWAhr*GP
+j5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFap@n=[q#C0hqY^6hr;?Nbrdk*Qs*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q)tEFdn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$"
+ans-laihoOc-Xqhf%]!;iSieTio9"rMY;o,MY)beMZ(9i_#;(M_ScAks2FuWouI*P"NAC!_nu;e
+pq#h&oXOn0rjMj5#-kJ<Y->(1rBpBKrC-`Ur'r0$SSiCeFED_RI"6d$M2[OXP*;/tR%'_@TqeEZ
+Vl-W%ZaRKY]=Y_gqRc^=rOW*C]D]AB]D9&9]CWZ;]tV7spV6^CrP&?Jo>14=q8<3Mrl+cSs2Y)X
+qoA`XrlOrX$H^?/`594#]=GJ^rjFr!['I!>WMH>`SXc+7Pa7GoNfT'TLkC;/I=-EhVkp/^U7e$D
+G&j4PWN;k_O)p&DI>Cs,96,>UEI3M%r_P+BI=[00Ng,s%TV#"V92&,^<)cbOTr"TFO-#QjQ^O;4
+SXuFHVP^;mY-"o!YdON-Onlur`rF*VaS3gCa:X]'QC!u+R@0M5S"-%?St;RIrh0[nUSO]^VP^8h
+W2]cr!NW=$XTGZ/YPtcms7!l%_#M7G_#M.rXK/A$WMl_mVPU)aU7n9RT:VXFS"#k7R$a5+Q'@Jq
+P*(ieO,f5!N!>2tM2@%EL]3&.L&Zi(KDgDoJc:9!KE$W)L&Qi,LB*/0M/S90N/WaVO,oBbP*2#n
+Q'Rc(R$jG5S=Z=ETqS3VUnsueWN*##Xfen4ZEppG[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uq
+f%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Egs8)WirVZWmo)=4?
+YlB4~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q)Y*=cn*]Q/lg!`ukN:mej5T"ThVHu@g=Y#D
+rg*GJ#+1aDR@9Y:r1F"^s.KFerG2@Jqec@Ls)%CEokjA>s)%dRrKI;GplkcDqNh#DqNh,G!0mDH
+duOEes,7/>Mi!7HM2;*tq*b0Ms$loV,'A09?!L`D@:E_ZBPD:#EcQ8FG'J=]IXcp#KS,#7Ll..N
+qiUi=p5]9:O,s0uqiCB2qiUi?rK6u?rfd;D!0d#=p6GN@op>]Gs-NYNr0RDMpmEIrR@';)P*(ie
+NK0!XN/EFJLkL>.I!U![F`hbEE,TN,BP:sf@UT1B86g[pI=-?dGB7;'H[^HnH#mh/BQ%3e5smk;
+>XMOuASX_*7n@#tB52:%F*)\Q84Z3>7nlZN8o&g&IV`n<DfKi@GBeCYH@,X@"+YrTKCafq`;dgS
+`r3sWa8j9Za90Q,bKK\*rm(Mh#ggoEdF-IldaJ-Ds3q/$f@S[Sg&Kb+g]$",h#cHhhYM*bPQ-mI
+Q2?m0Qi33^Q'R`&R$a;0R[]e:SXl@DT:l1W$DO;kUnsrcVl-Jmri-""XT#='Y-5&.YjDDGOX@01
+WiE%sVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NW+k@Mi*@JLkpicLAuu-K`$K$K(OWn
+K)C9$K`?c*LB!#/M#N6LMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>
+['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcDtSJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q*:`Oen*]Q/lg!`ukN:mej5T"ThVHu@g=Y"T
+;,I6fs%`Me"AVcj;H!Km!)i_l!)iJOrB1*CoK;;"s$$EYpeUW\r_`Ge!)`_nqbd;mr`/ttku7R\
+qGmMos&8hpr)<P]q*b0Ms$loVs#pZL3'0/^4Ztq+3sIi55<hM&62j:]84c?C7S$0F9heDY:]*uZ
+:B45Y:[q9\;#jGh:]=/n:JOVY:@h9Y;#*o`:'"-eqbdAkq,.)dr_WDf*`>j3:ejh^9M7rM8P2ND
+8ju0:5X.Ru4ZYVd3]K)XrAO[4!];ekr\H2_5X.Lt5!1ka5X7P!5<Cqd2)[<I/hJ(c-n@#*/MT.D
+0/b^F1c@9R4?c"r6UWj23>k%D4$?#*9M.K55<qS&6pjF47n-!@8P2TKr_<#[q.9J9rFZ+Drb)4D
+"DMXfD/K/f$u^$$DfBZ8E,TZ6EH1kr"ES[-G'<k0rHeKhs*F]l"+5NFIel5';ZB\L<"YC]QC!u+
+R@0M5S"-%?St;RIrh0[nUSO]^VP^8hW2]cr!NW=$XTGZ/YPtd+\Gs,<])TAD]Y2#U^Akn&<$n]I
+WiE%sVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NW+k@Mi*@JLkpicLAuu-K`$K$K(OWn
+K)C9$K`?c*LB!#/M#N6LMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>
+['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcDtSJ,~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.W3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y$V
+ans-db0/#QcI(.lf\G?_iVqj:Mtr7pM<Bcp^Au(J_#_Ejrl"fTrl4WOrl,)[`5BF.r5%s8lad#)
+pp^71"gYD<Ycb,,6hs.L7K,dS8,l+,PFQK-E-$,GH[L6lK85AFOHPflQ'[i*SXuOLUnjlbW3*A4
+\%KBP]DB2>]DK5@]D/u9]CWZ;]tV7spV6O>o>11<qSW<Nrl+QMs2P2^a2e/"rlP,]0$2/Q_S3[q
+]",>Z[C<TPZ*^^8USFQUSt2=;QC!bsOH,0SL4t;2I=$6dVP^2brh)iSRsK1GTWGc$RuhfKOF_j`
+78%WI96#E;N(d&FH%1O(NK9EqTV#"U9MA/V<E)po<hZ:cNfK6cPa.W)R\$(BSti0[WN<5(YO\p(
+s88#T`W*mV`W*pXa8<sQamI1KPl[2;rg4@eR[]e:SXl@DT:hmOU8"EYUnssfV[KH&WiE,#XKAV-
+Y-7i/!3tqkn%nP0rkBVXX/`1uVl-DgUnjc[TqS*MSt2C@S!fY2Q^3o%P`q8nOoCCFNfB!VMi.Lj
+!f2Vere:K.KS98UrIXWlrdt'#s+LE+re>?HLkpnEMMd=NN/`jYO-#KeP*;/rQC!u,R[]e;St;UK
+TqeEZVPgAlWiN8(YHY:;Za@0L\@K2_]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gYL]Bi8ESR
+j5f=ak3(sml0@U$m-X60n*olHncJFTo`"O`p&Ojcq#:*hqYU0hr;?Nardk*Ss*t~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.]5p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y#D
+Qi<<JQi<?]R@B_<T:hjLT:hjNCM``\rG;IMnndo7pMU"J!L&cIPPCCBQ26dHQ1gO<Q1^1:O6ho'
+NW+t;NW+n:MZ8M6Lkkprq*b3Nr^QfUs%"JYG[+KZ?sd;N@V07dCi=<7F*2YMG^+RaIY!*&KS,#7
+Ll74QOcfX)p5f68!0@#;q2b62qiUi?rfR&?q31E7op,H@nX'0@qj7;LrL*\QC6k*KP)tcdNfB!V
+MM[1GKn=f&H[9s\GBIqGDf'?*BkLse@pr_P?<r)2IslZkH?j[F@X<BQLO4/\?tsLd?:6_:<Eqgk
+?Y4%?84[&rASGsuEccSP84Q-=77BpE9M%m)I"#mICi497rcSZoH$XgbI=Hg!JqAXGL&8dg`VdaS
+a8a6\a8O*Zap6,6bg"AVc-613rm(Mhrm:PjrmM/&e^`7&f@\d0rn7_6gt^`@h;-lBgt_gEs-38A
+s-*MKqj-B2s-EYL!LB)OQkPmVS"#q=SXuFFTV8'RU8+N[V5F6i$`L&)WiN2%Xf\b/YPta+Z0hSH
+OWgg,WiE"qVl$;dUnaZXTq@pJSXc1=R@'A.QBd`"PEM)krf75CNJrgSMZ/G6LkgcbL'!'^K`$K$
+K(FQmK)C9$K`?c*L2Vj'Ll$tGMMmFPNK0'\OHG]hPEhE!Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-
+Yd(L?['mEQ\[oDc^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'
+mI'H3nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBjr;H3cJcE"TJ,~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.c7p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y"T
+;,L0h:]F2g9a"6g;,L6j;ZK_o;>WKN4755o4TS>TpeU`_s%iVjr_`Mgs&&bnqb[>iqH!Sqr)DoZ
+s&Anrqc*GkrBpBKr^HfUr($cX!Bi^H3WV6&r]M#Z4Zb_g5!M;"6:"".7R]m>84Q0A9MGC[nk]9^
+mSE@Lr_`\lqbR2f!)NPgo2#6[peUc^!DcP^;#jGk:]=2h;#jGk:/st\8kM`K8P2NC6q'F,5sROr
+4Zkhf3B9#W3&NTM1c$sE0/5+85X7Ou5!;%i3Bo_n5!D%h3&W]Q1bUF%*@WKo/hJh93&!3J1Gq*O
+3]oYn6UN^frAb*H4?GYd92%tW57p.J6UF1/7Rp!>7nH9F8kViPnkT3r!+bt<r+>n?!+u4Cs(DIJ
+C2<fcrb_gTDJj=jD?XrtDfBW6rc.sYrc&9dFEM_LGB\:WH$]F7s*=Zlrd=`o!.Oi/!)rShs&/qt
+<SpdTPl[2;rg4@eR[]e:SXl@DT:hmOU8"EYUnssfV[KH&WiE,#XKAV-Y-7i/"L5JH\[h[Mrk/6D
+rk8HI^:rB%+fq`EWi2hnVPU)aUS=HUT:VXFS=?"9R$a5+Q'IStP*1t,Ns1Q'N/W[PreU]4LPPk`
+!el;\r.Fs"o7?mmr.G$&s+UH,Dhj.)M2@+IMi<USNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlc
+W2ZetXf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^g
+kiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmdq>^<gqu6NkrUTr=s0;TS~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=cDG
+r5]8fb08)ScdL=pg>1Zcir=u6Mu&>$M#`G2M<Toq^Au(J_#_Ejrl"fTrl4oW!6G&XrPelV_u@ON
+_#hE_\aR,q\c'&:[g0=JZa$g?Z*"!mq*b3Nr^QfUr^d&\.@639Df]uCH$asfJ:iT7NKB9dPE_B"
+R@Bb?TqeE[VQ$]&ZF.3Q]Y(rU]`5VD]E#YE]E#S=])B84]E>j]^VKTYq7uU<pVQaDrPS]Tp;[-Q
+s2Y2\r5eoYI`B@D_7dFl]=PJ[[^EQPZa$a:W2$&[St;I?R[B>'PE:i_M26q@Jpr/sH?aRPE,0,s
+?='"DF-ro3YH4=[Men0'?tVlJCjo)uI#3hV;,MUgL5M"UR[g$K:ese[:K:=m;,W^RVP]?6Ocu#p
+Q^F23SXuFGVPU2jXf\b0o!#D!rK6inrl"iUs2P)Zr5e`VmE#<ls-3VNQi<?^R@9V7S=Q4BStD[L
+Tq\=]U]mTlVl-Jmri-""XT#=&Y-7i/s02R0mf2dmnA,(=0W_=TWi;qpVl$;dUS=HUTV%gHS=?":
+R@'A-Q'IStP*1rhO,o<\N/W[PMM[1GLPPk`s+UK+rIb*$qLSWrqgn]trIb-'s+UH,C57V$M2@+J
+Mi<USNfT6_OckomQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta:
+aN;WKc-FY^dF-Oof%8O,g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jme
+q>U6fqu6NkrUTr=s0DZT~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=cFk
+rg*JKrg3hVR[]k>r1Nq&rbV=EoP=MEr+te<r,2CqplkiFQBh<4!13GGp6GQ:pQ#04muI(##E4Ot
+Ll$nDLAjR97/fXS7f5dU8H27.G'$tp?!guI@Us+aBl%[+EccDHG'A4XI=?]tJqSf2M2@%IN/s(p
+O8b7<Nqnb0OSb1=P5^U?P51=5PkC==QL^C?R/<3XR?s8+Q'@JpOH>N`rf%nVM2@%CK7JAuH?j^X
+G'%bEE,9B+BP1pg@prbPra#P-:KUXs;c6G6ARTh4Kn+SpEGJ]kAkl)[<Dd*i<aTHS6:a[S@:a1j
+DKBuG7n6*?7n$-H9M%ftI"$N\D/=-2F*2VKG^4R\H@:6kJUrH*KCX`q_u.FQ`V[[R`ra?&a8O'd
+b0.uPbg"AVc-4E2c2Q#fcNMVBdaHPBdf._peHOOUf@\d0rn@A,rS@M/!ScE.D>9@mPQ-mIQ2Hs1
+QiE<MPl[2;rg41`R[]e:SXl@DT:hmOU8.^`"f8)oVl6ToWWB0%riH4(YPtd+YlM)ts4rekXK/A$
+WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRNM2@%DL]3&.L&Zi)KDpK!Jc:2s
+Jc13!KE$W)L&QgALPUbCM2I4LN/WaVO,oBbP*;,qQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7
+Za7'J\%&u[]Y(tn^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X6?
+mfDqJrpg-^o^r.U!quB_rV6EgrqcNhrqu]mo)=4?ZN#F~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb-M6p#o'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=]D&
+;Gg:f:JX_\rCmDi:JandrDNer;*I2B4nLl:4n(Su4oJ1V:A[ib;#O2i;#X>f;#aDm;Z'Dl;#a>k
+<WH.r<rQ+q<:!Q`<;]bp<;]Yp;Z9&Z7/fXS7f5dU8H26^5<Sm)+?DSI4Zkki4$5Si5=%V&6UF72
+6q0[;7n?-C9MS>Y:JUX[r_W&ZnPK3^s%rSgr_NSjrD)r[qb[&`qb@/f;"7B_;#O/i;Z9ED9i"PX
+8kVcJ8kMWG7R]d869dh#5X.Co4$#D^2`N]T2Dd6H1c$pC1G^a@1,(Qa1++e;5<qFt5s77h2`*BJ
+0eF[j.4?l&/2B+D0fCpH2)mZZ4[;>&3&pmt%6-O54$5Jn9M@uA5=%R66OlOQ7Rop;7nH9E9M.uP
+:%D'YAcH<;Ac-0>B)lQCBE)WIBkhF"rb_[Q!c;gmrbVXQr,2UTEr0hWEc_5&"*Sm4GlE!gGlN$j
+H@(#:HiSTn4oJ=Q;ZB\Q<<&3_Pl[2;rg41`R[]e:SXl@DT:hmOU8.^`"f8)oVl6ToWWB0%riH4(
+YPtd+Ym%GC\[f;_rk&0Bs1JKJ]tOEZh,H)0X/`2!W2HPjV50l\TqS-OSt2C@S!ob4R$O#&P`q8n
+OcYWbNfB!VMi*CKM26qBreCH,s+L?'rdsutrdalsrIY!#s+LE+re>0CLkpnEMMmCON/`jYO-#Ke
+PE_>tQC!u,R[]h<StD[LU8+N\VPgAmWiW>*YHY:<ZaI6N\@K2`]Y;.r_SX71`lH0BbKJ/Ucd:(f
+eC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0hqYU0hr;?Na
+rdk*Ts*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*q]'po'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=aQg
+rlP&Y%*?]:bg+Saf%Ad7i8XWmpP]!-nqldl!/pZ1r4`6IrP8NO_u@UR`W!mVa8X0Wa8X']`Pf[2
+_Yh4S^qmju\[o?N])B84]'Hm5\@/iRZa@$CYHRpmq*b3Nr^QfUr^d&\s%4;pS8E1aEccPPH@:6m
+K8#);O-#NgQBdf)R[p%DUAgtpVPgDpZEgjH\c05C]=bfU]`GdXpq$F9o=P1=^;%JX^\P\9_>(nC
+_u7LR`W!mW`V[XTa8X-h`l5m6_7mRm]=YVa[^Q1CDR?^QYH=e"US"-JSsbt6Q'@MrO,o<[LkUJ3
+J:)WfGH,_$CLq!^?!CK7=BS[OH[M-=G]&8)Ck#2mAUI6hHA7GU;,L5@KntbPR[g$H;,0h[=&i3t
+<)TBbM2dUZP*D6!QC454SY2RJVPgAmriH1(nZ]4srK6rprPe]Qs2>&Za2e(ur5nBJ*0QMMQ'IZ$
+Q^F/.R[]e:SXl@DT:hmOU8+N[V5F6i&ZD\/WiN5&Xf\b0YHY79Z*L_(s7*qt_#D(K_#D)%X/`2!
+W2HPjV50o^TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNfB!VMi3ILM26tCreCH,!/19&rdt*"pji9n
+rdt*$s+LE+re:W4LkpnEMMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoWiW>*YHY:<
+ZaI6N\[f>b]tV7s_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3
+nF5uIncA@Srq6<bs7cKes7uZjr;6Hjr;H3cJcE(VJ,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=c@i
+!1*MKrg3hVS"6.Crh0:+qJ5nCr+kq@j_amYpltcC!g]+:rg*PMpm1Q;p5f!/r/^E/q2PE5#)e@s
+M26n@r^6KLr^HfUr($`Ws%35_'QeP&>[:TA?t!MSAnPdmCi=<6FERS,&UAbQIY!*'KS>29LkghG
+N/`tuO8b7@O8Y+7O8b4@Ont1:Oo:IBOnt7:POat4Q26g;Qi*47Q^3u(Pa%>mO-#?]NK&mVMMd7E
+LP18/I!U'_GBJ%LEcQ)9CMRTrARf4Y@:*;G>_-$\<`Dsp:JOSW91qkU>o[m%@9[D`='Ia]9jC%b
+?"Ie=84Z6[A8,muF*;g+8,c4&928*+I;E_:D/XH8FEM_MG^+O]H@10jJUrE)KCOZp_Z.OP`;dgR
+`qd[Ta9'K+bP]Qac2Prdc2Q#fci2;kdJhSoe,Ro$e^i='f\$2V!SZ<,g]H<eh#?%.h#;0kD=s.j
+P6-u6Q2?mAQN3?DQQ20PPa.N"QC!u+R@9V7S=Q4BStD[LTq\<XUnssfV\,l,WiE,$XKAV-YHP17
+Z*CU@mf2+*0<;+QWMl_mVPU)aUS4BST:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YN/NUOM2@%EL]3&.
+K`Hf(KDpK$JbXcnJc:9"KE$W)L&Qf2LPUbCM2I5jN+J!/O,oBcP*;,qQ'Rf)R@9V8SXuIHTq\<X
+V5L5jWiE/&Y-5(7Za7'J\%0&]]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_
+k3(sml0@U$m-X60n*oi:rpg*]o`"O`pAamcq#C0hqY^6hr;?Nardk*Us*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=]D'
+;Gg:fr_NPhrCmDi:JandrDW_Zq*+[="[5(45!D./55dY;4R501:]4&c:]=2f:]=2i;>F#h;,[9g
+s%r\j"Ai-#<`]0!qH!SqqGco^s&Anr!`W)trDW\_q*b3Nr^QfUr^d&\s%<;U*&]f=3'',_3''2c
+4?>Ve4$Z(r5smt*7RTX784WYM#>7Z_:/4MZ:Amuf;".9M;#X>l;#=&f:]O;i:@h9Y;#!i_:&n)[
+;$'He;#X5g8cVN`8h*A'7R]d86U3t(5X.Fr4$,J`3B&rW2`3KM1GUaC1,UjE6SUDS1GU^A1&`pa
+0f(XC1H.0M2)I*A.2sQZ/h\\.2*<QM2)I0M3^#Yl6:Npn3]]8c5!(nj4A&:35X@Y#r^6ZQs$d>d
+7n-$@8k_fM9MP%Prac%?rabn;r+>tAs(;4B"DMUdCi')f"`A0oDJa4hD>nJQE;snXE;jhaEcZ>E
+F`qqPG^+N4GR&M?H@(!dH[Ga>!'^BFmns-aiD^e[PE_>tQBml)R$jD4S"-%?St;RITqS3UUnjia
+rhgL0WN)u!XK8P+Y-5%5Yd(I=ZadNV])92?]E#YE]`,SE^@>2%;t*a>X/`2!W2HPjV50o^TqS-O
+St;LBS!ob4R$X,(P`q8nOcYWbNfB!VMi3ILM26tCreCH,!/19&rdt*"pji9nrdt*$s+LE+re:W4
+LkpnEMMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoWiW>*YHY:<ZaI6N\[f>b]tV7s
+_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5uIncA@Srq6<b
+s7cKes7uZjr;6Hjr;H3cJcE(VJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb)t`amo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2DgAT+l
+ans-dai_iOcdC:pgYLcbN:Vu)MY)c&MYrD.MZ/P5M?JjP^q[Y`_#;(M_ScAkrl+lVrl>#ZqoA]U
+!Q;nT_YM%J]DfDA]DfD>]CWW&\H04NrjE'=Za6m@YX:eR7/fXS7f5dU8H29[8g$cnO`#,ZF*DhS
+I!pKmJ:rc:N006eQ'Rc(S=Q4CU7n=[V$EotWj/q<\%)CM!5/*<rO_[6"22F`_"YV>_",>:_YM+J
+`;ddV`r<sT`WjE"_8*aq\,NrT\@8lSZa6sDYcY(1WMcG`St;C>R$jA+rfRePNK/mPKnP#*H[0gY
+Wi)fpU^<cfSp+@>='/UOrI"Ql3dZ=(8nWKB96PoG:Jt%eIY<Q=OI2Q2;,C%_:/=kh;cJU3MMmLV
+OHYooQC454SXuFFVPgAlXKSb/n$&qorfQoms2FrTs2>/[`Q#p<a8F$Wam[=NOo^c2rfmeUQ^F/.
+R[]e:Sc52iT:hmOU8+N[V5C/gW2]cr#-4i-Xfeh1ricO1ZEggCnGi$pr4r?IqS<'E0ttE(X/`2!
+W2HMhUnjc[TqS*MSt2C@S!fY2Q^3o%P`q8mOH5H_NK&mUMi*@JLkpicLAuu-K`-Q&K)L8oJGk&u
+K)L?%K`?c*L&m'creYQNMi<USNfT6_OcklkPa.N#R$a;2S"-(AT:qsQUnjlcVl?\sXKAY0Yd1UB
+[C3TU]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6
+naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s0M`U~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg6h`'
+!1*MKrg3kWS"6.CT_E4$CZfO2D>\;BD>KIkPl$aFQN!6GQM-UDQM6I?OSk16NrP13Nr+eCN/NXP
+M2@"CL-n?(7/fXS7f5dU8H29[8hE\ZF'DjT?=72N@V'.aBkqR%Df^#DG'A1VH[U<lJV&K,KS>,8
+LkpnHN/`p\rK$u=q2bN:rfR,?qiUi?rfR&?q31B6q3C`@ns;G(Q'IPrOcYWbNK&sWNJi[NMMHq@
+KRnW#I!L!]F`_\GE,]]2CMINrARo:Y?=$oB>_.HUIXQTiG]mWs9`Ia-?!^fB?=.)I?X7&H4A]9I
+6<[i577g$@?t<tfDf^&Hr'qVn9he;UC2@X$CMdj,EcQ8EGBeCYH[:'fJ,Y!#K7\aFL&]!f_>qLP
+`;[aR`r=!Y`r3sXa8sE*rlbJfbfn90bl5ldcMl/hd/MGmdK%bqeGe%uf`0V)gA]k*g]cHfgYCQ;
+rbhForK[>Gs-*JIs-<MJq3V)Hp6YfB!L&cIPmNbCR$a;1S"#q=rgjRkTV8'RUSO]^VPg>jWW&n%
+X/rG*Y-+u-YQV5:ZEpn,s4rejXK/A$WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@JqOcYWbNfB$W
+N/NRMM26tCreCH,s+L?'rdt*"p43*mrdt*$s+LE+re:H/M#N6LMMmFPNK0'\OHG]hPE_>tQ^F/.
+S"#q>StD^MU84T^Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6
+h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcE(VJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb)t`amo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2DgAY%N
+;ZBSo;#X8j:Amlh:/=\`r_rPSqE=mBrBC'Bs$$<C!'L6Dr]KR2s%iPfnk]6]r_`Mgq,%,grD3Gi
+o2YTes&JtrmSa*br`/qsr_rhaq*b3Nr^QfUr^d&\rCR,a5!8d()EKr?2`No_4Zkhi3^,hp5!_J$
+5t"+07Rp$?r^d&]#"qZc9i"M\n5&OMr_`\lqbR2fmSE^VpeUob!)NPg"A_ik:f.'e#u=;l:JO\]
+91hhU9,^Ao7nQ9@7R]d86:+(+5<_1m4?GS`3&rrX2uYZ61Cl2q1GL^C69mh$5!:qf3C!L!,;M)3
+1c$sD1bpjE1Ggm5-7p]!0/PU@2E*NM2EEr`5X@as3;to@3'KAd55m\Y5=%Lu5X[n+6q'O67n5s<
+8P2WKr_*;dn4isnrF>n>rFGb9rFQ%BrFZ%A!GH6HD#.uKD#S;ODZaruE,bbqs)J*\rcJ-_rHJ<d
+rcnEgs*FfnH[Ga>r]TsQq,@;ks&7uXs,mDHPl?pSQC!u+R@9V7S=TYN%A0;eTq\<XUnsrdVl6To
+WWoN*Xf\b/YPta0Z*L[AZap(Hq7HX=s1Rr%qG[#c0<D4SWi;qpVPU)aUS=HUT:VXFS=?"9R$a5+
+Q'IStP*(ieO,f3ZN/W[PM2@%EL]3&.L&Zi)KDpK$JbFWmJc:9"KE$W)L&Qf-LPYqdDi0I3N/`jY
+O-#KeP*;,qQ'[l*R@B\9St;RJTq\?YVPg>kWiN5'Y->.9Za@-K\@K2_]Y2(p_8=+/`Q-'Ab0/#S
+cHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0g
+r;HTbrdk*Us*t~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@r5eo[
+qoB/eb0/#Rd*pOugkq$cN:Mo+MY)c&MYN,.MYrD._#;(L_u@UR`W!mVa8X0Wa8X'[`Pf[n_YCt:
+]CNQ(\HKFO\$`[DZi@<16hs.L7K,dS8,c'Z8c;9]9E.[=S8E1_EcZDLH$k!gIt<'&M2R@VPa%Gu
+QBmu1StDUITq\B[VPg>lX0T+?[(!TUqmua<rOi0Dq7HgC^;%JX^\GV9_>(nC_u7MM`Q#d3_8=%&
+]tV%d\\#G_[^WWMZE^[<XKJY(VPBfWStDL@QC=,*PED#hNfK'SL4b,0IX?6\F/l+5USFNWT:L1E
+R]*Bj[&9LYIXQZmHi8BmIK>"MrdQSMIt3*#J:iZ;OI;T2;G^2@JqAQ,L4tJBMkc>oOHPinQC454
+SY)LJVl$DmYH>"oYc[s*On6Kk`V[UR`W*sWa8<sXamd@OOoCLkPE_>tQC!u+R@9V7S=Q7CT:hmO
+U8"EYUnsrdVl6SpWiN5&Xf\b0ricI/ZEjJ9nGi$prP8?Gr4r9Gs1Tq_WiE%sVl-DgUnaZXTqJ$L
+SXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkktas+UK+rIb*$rdjZkrdk'#rIb-'s+UH,!JcL1
+M.qj*N/WaVO,oBbP*2#nQ'Rc(R$sM6SXuFGTqS6WV5C/hWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn+
+`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X6/n*fc9rpg-^o^r.Us7QHe
+rV6Bfs8)Wirqu]mo)=4?[/YX~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@rg<;D
+"dk^HS=Z>CCB&)CD#A)ED#/#EDYS)EPPLI?Q2[*KQhZm@Q2Hs@O8P+<O62K&MueforeU`5LI4H)
+7/fXS7f5dU8H29[9)hQa9I"dc>$G<=?=./O@q91bBPVF$Dfg/HG'A.TH[UBlIt<0&K7s5Ys+gl:
+N/`dUOHKC#rfI#>s,d,?rK@/BqNCW;o9B'9pm1iE8sYa.P`q8mP)tcdO,f3[NK&mSM26tCKnb53
+J:2imH$OXYG&q\CE,KK.CM@HoA7]4[@U35C>Ch<RI=6HhG]mV)H%CTuK6h]YrEfP1rF,_611F[%
+@preU@:E\S@q][sEclXt84I3(B4bdjBkhBuHu!P7E,p#BFa&+UH?sseIt*$#re'Qk!5SNLs24lT
+rPeZR!lr=#rPo8dai_cLbfn8Sbfg"0rltGfrm1SjrmCbo!7Uqs!nGoSrn%;*g=lP\!8RM,"kqY`
+g2:g"Pl-gDPl?sIQKsk;OoCLkPE_>tQC!u+R@9V7S=Q7CT:hmOU8"EYUnsrdVl6SpWiN5&Xf\b0
+ricI/ZEjJ9nGh=,.BBJKWMl_mVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NSmM#iEf
+reCH,s+L?'rdt-#o76gkrdt*$s+LE+re:H/M#N6FMMmFPNK0'\OHG]hPE_>uQ^F//S"#t?StMdN
+USO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_V
+jQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBjr;H3cJcE+WJ,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@rDW_o
+!Du\m:]F2g9a=Eh:f1+h4?W0tq*+R<r]]F,s%iMes%iVhpeUlcr_`JfqbdAir(m;gn5]Kf!``9$
+rDinur)E)_!`W)sr`&nbq*b3Nr^QfUr^d&\rC[)_s%F7o3&rrZ3BB5`2`Ei\4$#Je4?5Vk5sR\&
+r^$fX6q'R77nESMs%<Gg:/=Xa;"mcT;#X>l;#=&e;#F,e;#*ob;"m`e:/=[a:'FEj:/F\]r_=/(
+9hS,Q91hiL8k;ND7Ros<6:4(+r]q2^4Zkef3B0&[3]B#X1GpsF1bgfb1_N/A5<h=p4ZbYg5!M:t
+5<V(g2uYW91,CaDr\FR12#]?82Dm<K2?#KZ3BTDg5smLh3B0&Z3BB8a4Zbi$5X.Iu6pj@2779U8
+84Q6C9)_K`:$bXSA,0[4Ab]m;B*)a\C\qrHD?"GPD?"JWDfBZ8E,bers)J?cFEDYKGB\<1G63#7
+H2DpeHiJKn4T\S];ta,_;rpsYOoCLkPE_>tQC!u+R@9V7S=Q7CT:hmOU8"EYUnsrdVl6SpWiN5&
+Xf\b0ricI/ZEjJ9s1/0@rO`*@rk&0B!57o%pf$lc.BBJKWMl_mVPU)`U7n9RT:VUDS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NSmM#iEfreCH,s+L?'rdt-#o76gkrdt*$s+LE+re:H/M#N6FMMmFPNK0'\
+OHG]hPE_>uQ^F//S"#t?StMdNUSO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Y
+d*^:keCE1&g"P08h;-uHi8N_VjQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBj
+r;H3cJcE+WJ,~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu0r5elZ
+qoB#ab0/&TdFHnIMYrD.N;JM5MYi>3MYi51M#E2-MXcT+^qmkb_#D1M_>qLQ`;[aT`r=$XaSX$W
+`WX9!_o'@b_="r(](ifD\@8rU['d<KZa$`%q*b3Nr^QfUr^d&\rC[)_s%NGe2OLdeDfB]:F*2eU
+I!pNoItNQ5N/j$bPa7T#Q^4)2StD[KU8"N]Vl-JjWN*#$Za@-J[^WfYrOi0Dq7HgC^;%JX^\GV9
+_>(nG_[OK#^Vdn']t:nd\%'!J\Gip.[Bd*BZ*1=1XfJ=pU7e0OSsu4:Q^=#'PEV,lO,f0TLkUJ3
+IsQEbG'%]%VPL#\TV%a@F)7>A\$WH3PDj=6S:#Qd7<<0kIt@TK"b(rOJUr@NJH^XVJqAW+rIQ&@
+K7el3KV>3:UQ:P"PEhE!S"6(@StW'ZW2d#&YNE'lrrA2G`;dgV`rF*EaT%>TOcklkPa.N"Q^F/.
+R[]e:SXuFFTV8'RUSO]^VPg>jWMuntX/rG*Y-+t4Yd(I=rj2X3o)J6rrP83C!5SNIs1\N5-E3rA
+Vl$;dUnaWWTV%gISXZ+;R@'A.Q'IStP*1rhO,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#
+rIb-'s+UK-s+^T1reY0CMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE
+[^WfX]=bhk^VI_'`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s0_lW~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.K/p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHubR.lpI
+QN!3RR$jG7C[Gm4C]A5GC\hlBD>J/LD$#ocPl-aBPk^OCQN!6GQ3*>;QMd$DQLKt8OSt7)NrP(=
+N;\Y:M26pSq*b3Nr^QfUr^d&\rC[)_s%NGe"*]W+>5hb=?!^uK@q94aBk_@#Df9]=Fa!b.)L6^X
+I=?]tJV8`0L5(J;LkpnDMi<XTNfT<aqiUo?qiUi?rfR&?plk<6q3ClD&!`BDQ'@GpOH>NaOH,<\
+NrG#9N/NOJM2-h?KS+i*I=6HhG^+CTF`VPCDf'B.C2%<mARf4X?X@&B=^#!ZJ:;lmHZjUS@U+5-
+L4Xu#E,/TkE*lj=2cW[[@:<VR@pieT@U`mHA,TpA@qB1]AnV'U)/">FI!][HDfKf>FEi"SH$Xgc
+IXcp"K7ej?L&Ssf_Z7XQ`Vd^Ua8X*Xa8a3aaihlObKKb+rltGfrm1Vkrm:eqe'n<Grmh/&f\$2W
+rn@S0gY1E9rn7;)!H+1mPl-gDPlI$JQL1%=O=u`ZP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrd
+Vl6SoWiE,$Xf\b/YHY79Z*OA8s0V@sgl_W:-E3rAVl$;dUnaWWTV%gISXZ+;R@'A.Q'IStP*1rh
+O,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#rIb-'s+UK-s+^T1reY0CMi<USNfT6_Ockll
+Q'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_'`5Ta;aND]Mc-FY_dF6Up
+f%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=
+s0_lW~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHsdrDW_o
+s%rbmr_NPhrCmAh:Jas`4RtZ754q/=541Q84?Yk,:\IQY:]=2i;>O,e;?'Ji:B=9fr_W#_qc*Sq
+!*9)!qc*2d!`DrqrDEV_q*b3Nr^QfUr^d&\rC[)_s%NGe*^;hJ3B0#Y3]]>_2`a#^4?Yhi4$>_k
+5X@Y#6:4%*r^6fW7n<PLr^m,_#u"&f:/+M\:JjpW;#X>l;#=&e;#F,e;#*oc;"mcc:`W;,:JO\]
+:/=MV8P)QJ8k_iM8kDNC77]p<6:4%+r]plV5!;"i3]f;^3B$jrs#'m71]B3I1GgmE1c%Ha5<_7n
+4$#8a4[2+p4?GP^r\Y!</M&"b.OQf)2?#K?1c%!J2)dHR2`1Ll%lH1)3B0&Y4$5Se3)!"=9)_'f
+6:4.0779U87n-'A8kVfN9hjeGrF>b9qdoP7s(;LKBkqO$C]/&LD>\2PD/O92rc.sW"`\R'F*)O'
+Fo?IdGBS1TGl2jfH2`-iHiABm4oJ=O;YF&Q<<&%5OcklkPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^
+VPg>jWMuntX/rG*Y-+t4Yd(I=rj2X3!4i*?!5&0?rk&3CnPo-Zq,IBo-E3rAVl$;dUnaWWTV%gI
+SXZ+;R@'A.Q'IStP*1rhO,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#rIb-'s+UK-s+^T1
+reY0CMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_'
+`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]
+p\jmeq>U6fqu-HkrUTr=s0_lW~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.Q1p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu1ans0Z
+ans-_ai_iPd*qWErJUK1s,6c3!/pi6pPJd)o8EUas1nWMrPJQO!6"fSs2P&YrlFrVrl,)[`5BL0
+otgC7!5/0?rjr-Aot(18r4;a8s0W$:['Hs@6hs.L7K,dR8,l-[8c;9]9E.]b:&ds):RRGbDfKl>
+GBeC[I"$QqJqSf3LPh(Rrfd_TQ^=)0StVjNU&LbkTqnT`VlH\pri6"$&$`LL[C<WT\@K/]]=bkm
+_"YV=_"PVC^];(I^DFVt]Xk\b]"5D[\$i`S[^NQN['R'DZ*F;4%'6D/X/2PbTqS'KR[X5B&!iHE
+PE:ldO,f-SL5(>2IK"KkF%(#FVkg)]TV.mGRs/jfS=ZdjU7.0eOI(c3DG+V^H$4RUIu9;@;MpB]
+JVT,CP*qf2K7JN*KM5*><10>NTqnEXO,oHfrfmq]S"6.CSu/B`WiW>*YN)jjs8U"#`;[aU`rF*H
+aT%;IOHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU8+N[V5C/gW2ZesX/u<&!NrX*YQ;#7rj2X3!4DCt
+o"k:?o"Y4=/uu"PWMcYkV50o^U7n6PSt;LCS!ob4R$X,(P`q8nOcYWbNfB!VMi*CKM26qBre:K.
+KS9;Vs+:6$mstCgs+:3%s+CB+reCH.EeoR/MMmCON/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]
+Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rGi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]kqtp?ir;H3cJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.K/p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHuaR/N?O
+QMd*LQN*9PR@<ndm:u3-rbVUO!,V7Ds)%gRrfmGHpQP`EQBqH6rg*PMoToKAp6P$*!0I/?l])4.
+N/ELLM24Op7/fXS7f,^U8H29[9)hQa9`@cd:*i\[FBVjR>@(WD@:<VUB4kmkCMdp-DfBf@Fa/+T
+H$b!gIXclurdb3*KnY89reCf9M2I.KN/`gXO8b7?OTU]-P*5g,qNCW;oooH?rfR>FP*>m-s,d2?
+r/CrANK&mTN/<DhLj4W,K7e](I=?KgG^":OFE2D@E,TW2CMIQtB4PO_@UNMJ>[(E8It2urI!g9c
+G'7D+>^:[HKR%ZV?uBsr:/X)I='Ag9=CGfXAk?fU?t*_`D/OE:G\(DsAn4G$9MB\YH[L6hHu!P;
+EH6,CG'A4WH@($gIt3+LKB%[c_Yq@P`;IUP`rF*Z`r3sXaTBW.bl5fbbQ?&5bl5ldcMl/iciDJm
+df.]$eCE.$f@S[.g&9V)g&B_&g&KdmPl6mDPlI$JQLL7@O!TmMP*2#nQ'IZ%R$a;1S"#q=St;RI
+TqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6o)IO./uu"PWMcYkV50o^U7n6PSt;LCS!ob4
+R$X,(P`q8nOcYWbNfB!VMi*CKM26qBre:K.KS9;Vs+:6$mstCgs+:3%s+CB+reCH.EeoR/MMmCO
+N/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBF
+bKS8Wd*^:jeCE.%f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]k
+qtp?ir;H3cJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHsdr)<Vn
+s%rbmrD*DgrD!;ep,r@:rB0^8r]^<GrBC'Br''p>rB1*C!'L6Vs%WPipeLW\r_WSkq,%#es%rJd
+"&Mch;"7Qc<;oku<)rcor`/eop/Cle!(6QMr^HfUqa^ZWs%3/]s%EAcr_<Df+AY0a2E!TU3BB/]
+3]K2^4?Yki4utei5<hJ!5sIV$6pprBr^HoY7fGsX8H_XY8kMeV:&dug:]=2j:]F5l;,I6hs%rSg
+o2,9Zs%r_m#>e2k:/+JZ:]=)j:eFF\8d%d\91qkU8,l*]6q0ZF6kD[Q5XRk(4?bni4?GVc3&itt
+3!;,u1c.)h1BB?hr\P9E5X7Ou5!;%k3B9>h4[)(q4?5D"2EiiJ-Q=?`/MT+81c@BU2aBSa2)mZY
+4?l(t3B0#[1cdW]4\JIC9MA)P5X.M"6psI56q9a:77g'C9M8&R:#f"KA,9a6AbTdGB5)*rCM[d$
+CM[g(Chs#d"E&-sE,khq!HN8ZFT6L\Fp<2:H$Xd^HN&3iHN&9kI/d+B;tEo\;sRE_O!TmMP*2#n
+Q'IZ%R$a;1S"#q=St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Ms;\[f;^\bir?]=beg
+nl5*WrDYDMWiE%rVl$;dUnaZXTV%gISXc1<R@'A.QBd\uP*1rhO,o<\N/W[PMM[1GLPPk`!el;\
+rIb-%rdjNgrdk*$rIb-'!/:E,s+bWNM2@+JMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTV8*UUnsue
+WN*##Xfen4ZEppG[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf%8R.g=tH>hVd>NioB+]k2tjj
+l07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZTlo)=4?[f:j~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu1b/hX$
+a8j?Ya90T.b_thFrJUT4rep]3oniR'oo&^`rkeWOs2=fRs2P#XrlFoU"ieO"_o'@__>V"H^&>VD
+]`>_E]`>_A]D];@]CEK0\HTIP['?m?q*b3Nr^QcTs%*/]rC[)_s%NDds%WPir_Ol,Zu9f"EcH2F
+G'\L`I=?ZsK7nr5L5M%TPa.Q#R[KS6S=lIGrh'apUSFQZVP^8iW2ZetWiQ-#s/l:(s0)X2Za-mD
+os=V)!joAErjMg5!42[1s0Dd6[C#q@s0Mj4Za9V9s0+#YYc=V!Wi2kkTqJ-QT:VL>Q^!c#P`q;n
+OH>K^Mi*CHL4t/.IXH?`E,fdpV*^lKT:VU@RWrdfS#*Hf]!@rpNcKl8JT"pdF)-8"DgR1tMG$j)
+H[gd.Nff]uTV.d?:/4MW<E+gHTV/'RU5Y.oP5UXTS"-%@T:VpXW2Zl#Y-6]dZ2ad?n&5(?"N89u
+`lA"unAmAFO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3VUnsrdVl6PnWiE,$Xf\b0YHY79ZEjJ9
+!joACo)J<tr4qm<s1\N5+fVE<Vkp2bUS=HUTUqaGS=?"9R$a5+Q'IStP*(ieO,f5!N!>2tM2@%E
+L]3#0KnP-XKE$Q&JaS'fJcC?#KE$T)L&Qi,LBNEiM2I5jN+@p.O-#KeP*;,qQC!u+R@B\9St;RJ
+TqeEZVPgAlWiN8(YHY:;Za@0L\@K2`]Y;.r_8=.0`lH0BbKJ/Ucd:(feC<%#f@em3gtgfDi8ESS
+j5f=ak3)!nlKdg'mHs?1n*olHncJFTo`"O`pAamcq#C0iqYU0gr;HTbrdk*Xs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHtTR$X0=
+R/WHOQMm0MQ3*ChC]8/BC[Gm3C]/)AD>\5BPlI$JQMd$HQN!6DQN*6AQKF5.OSk1/NrP(@MM[1F
+q*b3Nr^QcTs%*/]rC[)_s%NDds%WPir_NuGMHX.f>[C`E@:E^FA,g0@B`DiYD/O<5FEMbNH$FU]
+I!pHmrI5'&K7SZ/L4tB[L]*#7M26tFM2I.IN;\b4Nr+h4NW>(<NW>(<M\qG4NJrdRN/imWN/NRO
+M2-nALkpe=KS"jUJJN]_H[C$_GBS(NF)l;@E,KN0CMRWtBDuHA@U<JL?!^c>=atmJI!^3cG]e.>
+?sJ#+Km\Z*G&hG(Bkq0[8NBgJ?UIgu@VTRD7r2RCASZ.$F*)\QF`U&D7n-3IDL?eXI=-EXDJa?4
+EccGJG'S=YH[L9lJ:N6(KAM=]_uI[Q`VdaT`rO-X`rO3Zb5TT`bl5lec2c,gcMl,kd*^8?df.\s
+eCE+Kf)s[Yg"QDXqq1o$s4Z@prg!MLns;+lO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3VUnsrd
+Vl6PnWiE,$Xf\b0YHY79ZEjJ9!joACo)IO.s/I6AW2HPiUnjc[TqS-NSt2C@S!fY2Q^3o%P`q8m
+OH5H_NW+k@Mi*@JLkpicL'!'^K`-Q'K)U>hJGt-"K)L?%KE-`*LB!#3Ll$tGMuJZGNK0']Ocklk
+Pa.Q$R$a;2S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^N]V]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Oo
+e^rF+g=k?<h;@/KiT&tZjlY^gl07L!m-O-,mdKW6nc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUTr=
+s0hrX~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHsd<)Z]o
+;u]_r;,I0d!)EMf!'Tm8q`Fa=oKE4<rB:*Cs$-BEqE=a=qbQu^q+prcr_`Phr_`Sip.tZa!*8\k
+oi(okr)E\rqGd2frDNGZr^HfUqa^ZWs%3/]s%EAcr_<Df!)NSj*^2_I2`<WT3B9,[3B0&Z4$5Yi
+4$,Pe4[2.r5X@\$r]pu[6UO7177Ka:6q9d>8c)-Y9DV?^:&n#d:AI]^:*`V09MJ2U:/+DS91qfK
+8kDWJ9M8#N8Ol6A84c<?7Rom76:!m96N08L69ICn3BB/]4#o>\3''#X2`<QO1c.!E1bppE1,CaO
+5X.Fr4?P\d3^>nm5<hCs4?>J]2)[<K/h8+d.OZu(.kie=3\`QX1c@<S3]fPk6UX@4r]1iU5WhP1
+9h\5R9L1g.5XRq-77K[87n,uI8d%g[9MJ7<:B+i)Ac60:Ac63@BDlECBPIB[!buLdrG;LNs).dS
+"`J@!EH6-tFT6L_Foll4Gl2geGlE!fHN/?lI,n3';sdO>NfT6_OcklkPa.N"Q^F/.R[]e:SXuFF
+TV8'RUnjiaVl-JlWN)u!XKAV-YHP17Z*L\7ZN@MA[Jm]@]",A_]=PTP])]D4<:s/i<;fbo<<&sA
+WMl_mV50o^U7n9RSt;LCS"#h5R$X,(Q'@JqOcYWbNfF$s#)e@qM26tCre:K.KS9;Vs+:6$mXY:f
+s+:3%s+CB+reCH."GhnkMMqImA;uV1OHG]hPE_>uQ^F/.S"#q>StD^MUSO]_Vl6SpX0&M-Yd(L?
+['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3
+nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc<dJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI]3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHH#bK9b(
+rlG,]qT&ZYqhs]rqMY**reUW4re^N0pP]$erPJQOqo&EO!64oVrlG&Ys2YGc`l?!9_o'@`_>h:N
+^\tkJ]tV5Y^&5VE^&PbB]D]>=\H0:Pr4;g:"h2"M[^EL<7/fXS7f5dU8H29[9)hQa9`@cd:&n)h
+;#aBP;H)tID/O?6FEMeNGC+U\I=?`uJqSi4L5:kMO->lsQ^XA4S=H1AStVjNTqS6UUSFW^V5L8j
+VuEOsVlQkuWiZ0$s/u7&s0)L.r3-1)ricU3ZEpjAZ*4/2s0!HGYdCgFXf&+oVPpAfU7n6QStMO<
+Q^F&'QBm`!P5^PZO,f0TLl$q?KS+o,IslWcF`MA8VPU#\St2=:QZd=`R\@?mZD3kPN,k#>Q[Na[
+<D$hFHusFYM3!<gB8h=mM2d[aS"64CQVU@O9N4u0StMdQTq[O.Ocu&rQB[f,S=Q:FTVeTaWN<5*
+YNi=mnF?IDp9:n'qSVjApqm<S`Poj:a2dbl.#j7JO-#KeP*;,qQ'Rc(R$jD4S"-%@T:hmOU8+N[
+V5C/gW2ZesX/u<&#-P/6Yd(I=rj2X3s0Vj8o`+O!r4qj;0#"?cWMl_mVPU)`U7n9RT:VUDS"#k7
+R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCre:K.KS9;Vs+:6$m=>1es+:3%s+CB+re>-BLkpnEMMmFP
+NK0'\OHG]hPE_>uQ^F20S"#t?StMdOUSO``Vl6VqXKAY/Yd(O@[C3QT\\#Mf^;%J#_o0O6aN2NI
+bg"GZdF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7uZj
+qtp?irVc<dJcE4ZJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqIQ/p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVJ1!!1<bP
+!1<_OrKdGL!1*@qnS@`2phTnGs(qaPoPOSDpQYQ?rg*PKqj.5JrKdJMm$@[:s,m;Bi/dSls,I&;
+!K2j27/fXS7f5dU8H29[9)hQa9`@cd:&n)h;#aAr;H'iC=^(f0"^YSC?t!LC@h!$`B5)*rD/XB3
+EclMJrc\`pH$O^_I"$NoJUi=MK)^H*KS>,5re:T1LPL\AL\Zc$M>W82M$AcnMM[.FL]3*FLPCS?
+Lkgb?K7ec,JV&B"I=$<dH$=IUF`_bJF)l5;DJX0+CM@HoB4bXbART"T?X6rA>$+jUI=6KgGBS(L
+A7&SeI#*3%H$!t??#==o?r]ca4&K'b>?>3ECh?7>D.7!gCi+06G'\@Sr^R\m9MAc?H[L6hHu!S:
+EH-)CF`qtSH2`*mI"-WrJc:;eL&\OYFS:Ci_o0Lk`V[XVa2Z-ua8a6Zb5TT`bl,fdcMu2jcMl/h
+dJhSne,Ro(e^i='f\+s1f[p&R!8%5&rn.;*gm%i(s-E;D.#j7JO-#KeP*;,qQ'Rc(R$jD4S"-%@
+T:hmOU8+N[V5C/gW2ZesX/u<&#-P/6Yd(I=rj2X3s0Vj8o`*a0s/ITKW2HPjV50l\TqS-OSt2C@
+S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkpicL'!'^K`-Q'K)U>gJGt-"K)L?%KE-`*L1uF!Ll$tG
+Mi<USNfT6_OcklkPa.Q$R$jD4S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_(`5Ta;
+aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jme
+q>U6fqu-HkrUTr=s0r#Y~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI]3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVD+/<)iip
+"]J;s;,L0f:]F/i4S_/54SV#:4SLu=55@A<55IGA4TA4W:B"&a:A[ia;#X>h:]OAi;"[W_;#=;i
+<W,ku;cH`j;u]eu;cH]l;uoospJV&iq*b3Nr^QfUr^d&\rC[)_s%NDds%WPir_WVl##\Ad4#]&V
+rAXm<3B/tr3r_>M4$#Ga4$>\j5<qO55lO(L6N9CS6q'QB7K>sX8-):Qr^d)\r^m2a9);3X9E@d[
+r(@Sn91qfF84Z<C8kDTF84Q9Cr^HoW7fGaU5=GK<s$6oU5sdau5!;"ir](fV2E3]X3B/uS2E*NP
+1c.!I1c.'H2)I*Fr]`b64?PYd3']Yj5<V1n4ZbY_2)dHN1+jt!+<N-b0Jk=92**]V4$PMZ3B]Jg
+5XIk-763Fi3BoYn8khuQ92%W85sRg:7/o[a6q9^:7n?3D91qrQ:$PLR>5^\Z:AeZ"Abfp>B4u&Y
+C]A/KC]8,MD>nGQE;a_TE<:0&FT-@\F9$I_G5ZXdH$K12s*FZk!IRi0;ZBVj;ZB\b<%*`dO,oBb
+P*2#nQ'IZ%R$a;1S"#q=StD[LTq\<XUnsrdVl6SpWiN6#XTkr3YctC;ZMq31[/[N<[^ioX\[o?M
+])oRS\*d5j;u'DmW[k'IVl-DgUnaZXTqJ$LSXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMM[1GLkkta
+!el;\rIb-%rdjHerdk*$rIb-'!/:E,BnqM#M2@+JN/WaVO,oBbP*2#nQ'Rc(R@9V7SXuFGTq\<X
+V5C/hWiE/&Y-5(7Za7'J\%0&]]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4^
+k3(sml0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6EgrqcNhrVZWmo)=4?\,Us~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb*VAsoo'u5<n*]T0lg!a!kN:pfj5T%UhVHH$bfe*,
+a8X0[ans0RMs#upMu8J4MZJ]nr/(K4qhk3-"2_mk_YqCJ`;IRS`r!gUaT'<ZaT'9^`l5mq_uIUH
+_>h=H^\Y\E^\PSF]tD#T]DfD@\c98@]DfDA\H'/=\,Wf8Zhd)h7K,dR8,l-[8c;9]9E.]b:&dug
+:]=0C;,U:j;cK$(QY^PZEHH;GGBeIZH[:-jJUrE)KS>/8LkpqKOHG`kQ'n)/R[p&KT*h6`T:qpN
+T:qsSV>[:iVuEXnWVrh0WN)qtX/rJ0YcOk(W2HSmVl$<iVZ<OlUAghiTUhO=R@!o=rf[_QOHGZb
+O,]*WMMI)gL1Z-jJq&2rH#n%HDf'?dVPKoXS=Gq4G&_8cUq3M0TU1b!DhXa;Ap[fSChn-C:OI;5
+L5_$`;i6ZdKo;"UR[p.EQqgCM9iG"fJY8[1TqRI-OHc#qQBmu0S=Q:DUSaodW3!/)YNW4in,`'F
+qNq#^ZiC'Cm)8V8#fO^$`l?'>aN4A$q8b+GNK0'\OHG]iPa.N"Q^F/.R[]e;St;RITqS3UUnjia
+Vl-JmWiE,$Xf\b0ricI/ZEjJ9"LPSE[^Pi.o>1C@n\>+</?5\JVl-DgUnj`YTqJ$LSXc1=R[KP0
+QBd`"PEM)kOH5H_NJrgSMM[1GLkkta!el;\rIb-%s+0Hcs+13%rIb-'!/:E,!JcL1M/J3/N/WaV
+O,oBbP*;,qQ'Rf)R@9V8SXuIHTq\?YV5L5jWiN5'Y->.9Za@-K\@K2_]Y2(p_8=+/`Q-'Ab0/#S
+cHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0hqYU0h
+r;?Nardk*Zs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0lg!a!kN:pfj5T%UhVJ-u"IGF@
+Q^I`<rKdJMnndc1rbDIKs(_RL!,DIJs(h[NrG;LNs).LH!,VCoqj%2IrK[8Grg3YNrKli9rg!>B
+rf@,@rfI/Br/^u@OHAmkr/U`8!fMqnqF(<Or^QcTs%*/]rC[)_s%NDds%`Sir_Ob8;GpFl<-DMi
+>$5-8>[(N@?X[DQA7K.]AnYmnC27[(DZ4VTEs6]0G'J7WrHeKk!e#NHrdP*%JUrE)Jc:8tKDL6*
+KnP/5Knb?]LBE9aJqO#Q!.t)urd=ipH$K:3(NaeAF)l;@E,TZ4DJX0+C1q<nAn>L`@fBau?X6r@
+>$5!0IXQZmH?a[VF(AT^H$kEqJU)<RC0G:lAQ)i'3DrdW?q"I+?tF(e6:l$4@V'=lDf^)JH$0*V
++@](!95/^"I=-EXCi465F*2VLGBe=WH?ssgJ:N6'K7iBArNlQGqK2Oerl"`Rq8WBRs2k8_rQG5b
+rQY5brm1Vk!7Ceos3q"t!S,d#f)jUVfDa>&f[naSf_a>)g6@heQ/7c*Q1U@nN/`jYO-#KePE_>t
+QC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta-Z*L\7ZNRYC[C3O9s4regWi;qpVl$;d
+UnXQVTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%EL]3#0KnP-XKE$Q'Ja.dcJcC?#KE$T)
+L&Qf-LPYqdDMj@2N/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?P\[oDc
+]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF5u=o(2JF
+rq6<bs7cKes7uZjqtpBjr;H3cJcE7[J,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb-hR$$o'u5<n*]T0lg!a!kN:pfj5T%UhVD+/<)cdo
+;H$Ll;Gg:f;#O2b4S_/84SLr94Sh5@4odbF55m_A55IDC4AYrOr_EPi:\mi`:]!uf;>!`f;,C%b
+pJ:]`r)Nbts&Jtr!)rkrlVdmb;c?Zk;uT\k7/fXS7f,^U8H29[9)hQa9`@cd:B+,h:`iP4;H$Ln
+5;,)W2)dKS2`NcW3]T5]3]fDc4Zkeg4$!:%!BiOD56=):5l<qI6N0@L7/]RU7n3>FrCHlWs%*,Z%
+7W`R779O4779O26pa3=6iTOX6UF+)5=594*BcMI3BB,[4#o>`3B9,[2DmBN1c.'I2`!9H1c7/i1
+f6%n5X.Lu4ZYYc5X%=q4[)"k3]T,U2)I0E/Lqq`,qUW$0K(R>2)mZP2EsGb2`j/c5X@b)76!:g3
+BoYj7SHEJ92%W95X@e+77B^87Rom;r^[2b9M8&R:$>@N=o^b_5P\(PAGg$:Ad`6`AnPdlCMR[#C
+23``rbMROrbhaS!,hdSs)A-]F)uC$F8g:[G5HLcH$FT4H2i3iHN8Hk;sI9X;>sJn;t<m=N/`jYO
+-#KePE_>tQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta-Z*L\7ZN[_D[C3NQrji$>"
+hV@U[^ER1<;TVh<%P&KW2HPjV50o]TqS-OSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkpicL
+'!'^K`-Q'K)^DeJH(3#K)L?%KE-`*L&m'creYNMMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTV8*UU
+nsueWN*##Xfen4ZEppG[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf%8R.g=tH>hV[8MioB+]k
+2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mo)=4?\Gq'~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu1e$bf\$*
+a8a6\ao0<OMs#ufMuS\3MZAY3MZC]o_tM%H`W*sTa8!aU`s0Q&`Pf[2_XtYI^q[Xu_"PPA^A>V@
+^&bp[qn)d;r4<0E\[T#T['TWtr^HfUqa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_kdU<E<.ZCi!m(
+EGoi<F`qqRH$=O\I!pKpJ:W<'K8##9Ll%%INf]EfP*2#nPa@c,SXc1>SXuFGrLj4cr1O"^s.]Xk
+USIg_!i)H^rgsLgT:VUES!f\2Qi<:sP`qAsPEM#gP*(c`NfB!WMi!CMM26q?L4b&-IXQTjG'.eC
+E,TWiUnscXSt)=?QBuW0B:>?qYH41WNHV1ZQ?RI]8o/<dHV\R)Jr5VE9i=iGIY*3/Nff^!StMTN
+:/+GV<)c_ETVSBWUQ:M#Q'IZ#R@B\;T:_kWVZa$$XfnqjYl*tknX'6@q3V&a!N2g&s89e&`:_%J
+_udot`qmaQaT%2GNK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3VUnsrdVl6SpWiN6#XTkr3YctC;
+ZMq31ZiIN5[e0Ul_>V1=^F6grWMl_mVPU)aUS=HTT:VXFS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M#iEfre:K.KS9;Vs+:9%q1/9jq1/Krs+:3%!ec8]re>9FLl$tGMMmFPNK0'\OcklkPa.N#R$a;2
+S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=k?<
+h;@/KiT&tZjlY^gl07L!m-O-,mdKW6nc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUTr=s1&)Z~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu&lDR$X-8
+Qi<9NQgS\PC\hlED>eAID>'4eQ2?mBQNWV@Q^4!-QMm'KP4k%:OT1I8ORS;3NfF$rs,-\Ar^HfU
+qa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_j,&<E<.>=BJ^0>5h_1>[C]C?t*RDA,g'AAS5Ufrb2^T
+D/O60DfB]9F*.D)s*"HgrceTlH[:!bI/SKnHiSTjI/A?hI/eKmH2`'gH2i'iG'.s+F96K&ErKtZ
+DJa9.rbMOJs(D@CBOk[b@prbR?=$lB>$+j,=FP^HI!^0aG^":O@U3/_HA$cqF`D5*Hu!S(=\CeR
+<*3Eo='T3JChH1088VdGAnc("EclVPG"G4p7n-0G94rU"I=-E[DK'T9F`qqPGBnI]H@13mJV*lR
+k(WiArj2[3rc8!ZqfMdj!iMp6r5JHNs2Y/\!6P5_rQG2arltJg!6tMgrm1Vk!7CeormLr!f%0fO
+!S5g#f)=5#f`Km[f`'P(g=VYhQ1pUEN$aOEO,oBbP*;,qQ'Rc(R$jD4S=Q7CT:hmOU84T]VPg>j
+WN)u!XT#=+Y-5(6Z*CV6Zi@B4[JmW,s5&kcWi;qpVl$;dUnaZXTV%gISXZ+;R@'A.Q'IStP*1rh
+O,o<\N/W[PreUZ3L]3#0KnP-XKE$Q'JbailJ,+WpJcC?#K*$^[L&QgDLPUeDMMd=NN/`jYO-,Tg
+PE_>tQ^F/.S"#q>StD^MUSO]_Vl6SpX0&M-Yd(L?['mHR\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:k
+eCN7'g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc<d
+JcE7[J,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu6RR<;oeq
+;u]bq;>sAl:[pRC4o7A83rhDA4nh,A4[)(,4TI\C4TJ=W:Adob:ARc`;#X>d;#aDl:]O;j;#3ub
+:]aZt<V]Sp;cMILr_iV]r^HfUqa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_jD.<E<-^1,CmI2`<ZU
+3''#Z3rM&F3]K/^4Zkhg4?E@$!'L0Cs$$]R5X@\&5sbE8nj<CDq*Y-Js$6]Q5sYE5&j/<?5<h=q
+4ZYbh3]K2\3]fA]r\tWN2)R9M2`EWQ1c.!D1c.*J1c.!E1Aj?B5!;"i3]]Jh4T7Q;4?>J]1c@EP
+1+b""*%!6g0eY(11c@BU1,h0W1c@3P4Zu"q6:=:&3]K,[5<_4u9h\5R9Kka.6psI47n#m;7S$$@
+7nZNK9MJ7D:A\5o56*nC5Q+=XVl'H(qdfe@B)H9EBPD0rC]%rIC]8/MD>\;ODZFbUEW1"XF8p=^
+FoHOdGBe@VrcnBeqg/9h!.=T@p/:feqbmDjr_N_p;GpFloMkjL-B4%HO-#KePE_>tQC!u+R@9V8
+SXuFFTV8'RUnjiaVl-JmWiE,$riHC-YHY79Z*OA8s0Md6rjMj:rOE-D\@&]O\%([%s&8kq!*/ts
+-`X/EVl-DgUnjc[TqJ$LSt2@?R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5Lkkta!el;\rIb-%s+0ur
+q1&3js+13%rIY0)Kn]M\D23q(M2I1KN/WaVO,oEdP*;,qQ'[l*R@B\9St;RJTqeEZVPgAlWiN8(
+YHY:;Za@0M\@K2`]Y;.r_SX71`lH0BbKJ/Ucd:(feC<($f@em3gtgfDi8ESSj5f=ak3)!nlKdg'
+mHs?1n*olHncJFTo`"O`pAamcq#C0iqYU0gr;HTbrdk*Zs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-<j"kiV$gj5T%Uhp0OHblc/2
+aN4>#s2k8]m>L(`k_fG[ou-XE!64rWp;dEX`lH*;_u@OF_$7]i^V7Cs^uiE/^AknH]`#JB])B8@
+\H9:L[eiJl7K,dR8,l-[8c;9]9E.]a9`e'c:]=/l;,U<k;ZTitr`0\6=BVJ1CM[d&Df9Z<F)uPK
+G'A00H4>4LI=HctJV/Q.LPUbCr/1W8NK!js!K`HCP5UUAPQ6p?PR<V=PEM&lPEM#hOoCGZO,f-X
+N/W[QMMd7ILPLV;L51D5K7SQ%I!p?cF*)><Df0?cUS4<OSsu1:Pa-9,BU>3\\=U@<R?NSbI?9.l
+IoAmR91hj+G(PX6LJ:ZDN.?S;Mia'hR[p.FQr-[T9hePc;,a-\US=KCOHTR-&!rcTSXuFFV5C/g
+Xf\b0YNE(gn,2YXPa.N"QM$RHV50o^\,Z<Bn&4h8"N89u`l@kqrl?[LN/WaVO,oBbP*;,qQ'Rc(
+R$sM6S=Q7CT:qsQUSO]^VPg>jWN)u!XKAV-YPta3Z*L[AZa@*I[JdQ-s8Be4_#2%I_"5>=^+64_
+Vl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o%PEM)kOH5H_NJrgSMMd7ILkktas+LH+rIb-%s+1#sp4)ph
+s+13%rI]!@KnY89LPL\BM2I4MN/`jYO-#KeP*;,qQC!u,R[]h<StD[LU8+N\VPgAmWiW>*YHY:<
+['d?O\[f>b]tV7t_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f=akNM0plKdg'mI'uB
+!V#XYncJFTo`"O`p&Ojcq#:*hqYU0gr;HTbrdk*[s*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-<j"kiV$gj5T%UhjU#4RK&WR
+QMd*KQK`5MC\V`AD>nGND>ogqPkLC?QL^C2QMm'KPk:+$OS=h9N<5&sMu,pA7K,dR8,l-[8c;9]
+9E.]a9`e'c:]=/l;,U<k;ZTitr`0>,=BToJ='/R->5hb+>manD?t*MO@:E\UAH$-EAnPaiBkqJ^
+C]A2UD/O91E,]i;r,MgZFSp7]FS'VVFE;JBqf)RQ!,qjS#]+?oCMRa%BkmTZ"D)+T@q5LI#@V"I
+?<pi@>5hVI<IT=CH[9p\G'.kH@U32_G^>-jL4=;`CM$shA5?Do4&Z&B(1CEUBP_<M8kEl/AS5dr
+Df^&EH?s[)r^RYl9h\5RH[L6hHYdS<EH-&BG'A1Vrd"frIt*!#JqJ^;L&\CdZEpmE['OamEcH)>
+Er:"VF9AA8Undk,q8WHTrlG&\rlb;brltGf!mf0;rm1Vk!7CeormUks"4l)Tf)F5!f)OA%f_aA%
+g=;GfQ2HsIPq@oQN/`jYO-#KePE_>tQC!u+R[]e:SXuFFTqS3UUnjiaVl-JmWiE,$Xf\b0ric[5
+ZEggC['[6KrO2G"rK7&?lB2(-/Wl-pWMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!V
+Mi*CKM26rdLAur-K`-Q'K)^DuJG+KhJH(3#K)L=>KS>,7L51P?M2@+JN/WaVO,oBbP*2#nQ'Rc(
+R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7Za@-K\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1
+gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?\c70~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb*q]'po'u5<n*]T0m-<j"kiV$gj5T%Uhc*QR;cH^p
+r_i_os&&blkrer.q)nF6s#g<Ep-/I=r]L!>s%iSgr(m>fpJ:]`r_`Acs&&Vh!`;cjr(m2d!`)it
+r`/ttku7RZmo06aqaCEPr^QcTs%*/]rC[)_s%NAc!_uNer_NYn;H!Km!E<(u<YSV;=Z\>s2DmBO
+2E<]U2`WiX3B0(u3<2,>497N+r]('A3BB1u3WV?)r&jsAs$-?Ds#p<E!'U*>s#p?D%Qum83]fDa
+3]fAa3]]>_r\sp92Z>WA2)[9I1GpsF1Go%f>r4>n1,M6[5!M1m4?>M_3']Vi5<h=r4Zthc2`3?C
+1GCF1*?QaW-RUc)1H%9U1,_*V1c@<T4Zu"p6:4+.2``oZ3BoYj4\SLB91qK75XIh*77B^97n,s=
+84cGQ9`IiK:An>o=opfL54^uBV50o^A7YXM!bQ(Yqe#qCC&2TDC]8/KD>nGPDZXltEW1"YEr^=]
+FT?U^GQ)jcH2`-hHiJKf;ta,e;u0Dl;>j;o;,U:j;tj6CMi<USNfT6_OckomQ'IZ%R$a>3S"-%@
+StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#dL\@Za7$G[C,tAs1&3@\[VRF!k#JHrD`_oj]!b1WMcYk
+V50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!VMi*CKM26rdLAur-K`-Q'K)^DuJG+KhJH(3#
+K)L=>KS>,7L51P?M2@+JN/WaVO,oBbP*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7Za@-K
+\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJ
+rpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?\c70~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-<j"kiV$gj5T%Ucd0n^c-=JT
+aN)C#`ra?(aQ\WFMX$*"`V%1G`VmgVa8O*Zanj*W`ra5u_u@OF_$%Qg^:q;Z^uN3*^&l!\]`#GB
+])K8?[JWGl7K,dR8,l-[8c23\9)qZa:&drg:]=2j;#jMn;^taH<E<.%=BJ^/>$GNGCM[g&Df0K2
+F)uJGF`qqQGBeCZH@(!dIXZcqJGt*#KnKAXs+LZ4L51S?M2D4hrep`6rf%/ANK&mTMi*GlMZ8P4
+L]`EgM2D4e#Dn1hKS4u2Jc:00IXHKiH?XOQFE)8;Df0CjU0aLbS=H(;P`g'+BpG0aVOaolS<f7o
+DeOfLE,0,p=&Daf95S9gKT1pb<)JO&Jqf5FOdV`1TqIKE:/4JW9N4tfBqM&oUnONDOd))qQBn#3
+S=Q:EU8=fdXKJ\/YN2nfmelPPnG\^OPlI'BQN3_hs7jM$`::bE_u[isqo:2-MMmFPNK0'\OHG]i
+Pa.N"Q^F20S"#q=StD[LTq\<XUnsueW2ZesX/u<&#-P/6Yd(I=rj2X3!4Da5pAb-.q7m!HrP8$>
+r4X\]WMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!VMi*CKM26rdLAur-K`-N'K)U>u
+JFe9fJH(3#K)L=CKS>,7L51P?M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\?YV5L5jWiN5'
+Y->.9Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$
+m-X60n*oi:rpg*]o_nFap@n=[q#C0hqYU0hr;?Nardk*\s*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-<j"kiV$gj5T%UrL3_R!go=>
+rg*ML!1)\^lYH*.qJ?7ND>BIrPk:7@QLC1/QMm'KPkgI)OReG4NrG%<Mu6!B7K,dR8,l-[8c23\
+9)qZa:&drg:]=2j;#jMn;]Jb:<E<.%=BJ^/>$F]t>ZY$0>$G37>?b?:>[:Y7?OU=N@prhVA7]@a
+AnPcUB)cKIBkV3oBPR<X!,VXO!GlWPD#\AOC]S<grbMdSC2%?oB5%0T!G5pBAH$'I@UW\Q?XI)D
+?<g`>>5_PcIXQTkH?j^YG&qY4?<_VuI=?KlI!0OJCKjhQ>?=]t8OPm05X/CI?=[ec6qU'g@Us(e
+DK'Z>G'S@O8H)-Z7fQ.&93Q[hI!pBiD/XB5F*2VLG^+L[I!U3jJ:`B*K7r<>rNZC.rNlKDqf2UU
+r,_gY!29A1r5JiZ`l?'uaT'?^b5BH^bl,fcc2l8:rm(YmdF%sArmUks!S#]uec"(ufE0aYf`'S(
+g=__fP6-u6Q2[*LPpqTKN/WaVO,oBbP*;,qQ'Rc(R@9V7S=Q7DTV8'RUSO]^Vl-JmWiE,$riHC-
+YHY79Z*OA8s0Md6r3l>!rfR#<mZIF//#oSHVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\
+N/W[PMM[1GL]3&.K`Hf)K)gN&JbsuhJ,=crJcC?#K6)^"Knb>;LPUeDMMmFPNK0'\OHG]hPa.N"
+Q^F20S"-%@T:hmPUnjibVl?\sXKAY0Yd1UB[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)
+g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6nF?MK!V>s^o`Fj]p\jmeq>U6fqu6NkrUTr=s185\~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-<j"kiV$gj5T%U;uTbr;u]eu
+;Gg?j;Z]io;#WW54Sh/>4T%A>55m_?4T@PE:\miV:]F8g;>O,h:\[cc;?'Jk:]F5k;>j;k:]4>n
+<W?%^;u9Jb;u]bn7/fXS7f,^U8H29Z9)hNa9`7]c:&n)h;#aAm;Z9T5<)lq!<``C*=]np4,;;AB
+3&NTO2E!NQ3&`eq3!;-"3&ihq3WD/P4?>J`3]T/Y3]T8^3&rrZ48V&33r_5>3X.T*3BB2]3W1o>
+3]AuUr\jg8r\YHJ1GgsE2)I*I2`EQO2`3EK1,LaB5X5638if's4#f2a4Zu"n5!M1m3]T/Y2)[<K
+/Lr4s,U4Q[,ptN"0f:pO0K1gQ1H%-Q4?Ynp6:O=03''#[3B9;d5!_h99MA)Q5!_J%r^75d7Rfm;
+7n?3C92/)R9hj\D!*];'rEB.^!^/_2o038LAGp'?AnV*V!bQ(Xrb27F!c)OcrbMLLrGDOOrbhjW
+EH1tus)S0^rH8'^s*+Edrd"Hgs*Ocns&A_kp/:cdqGR>jrD<Jj!E)km<%3]_N/WaVO,oBbP*;,q
+Q'Rc(R@9V7S=Q7DTV8'RUSO]^Vl-JmWiE,$riHC-YHY79Z*OA8s0Md6r3lX8#e%.IZa@-L\%)E:
+q,@#er`/Yk/#oSHVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/W[PMM[1GL]3&.K`Hf)
+K)gN&JbsuhJ,=crJcC?#K6)^"Knb>;LPUeDMMmFPNK0'\OHG]hPa.N"Q^F20S"-%@T:hmPUnjib
+Vl?\sXKAY0Yd1UB[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^g
+kiq?slg4!*mdKW6nF?MK!V>s^o`Fj]p\jmeq>U6fqu6NkrUTr=s185\~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$gj5]+Vrm1Sh#0kB7
+aN)?Brl5)]M2D.fl\jn_o8EU*s,-ru`Pqhprl+lTpr36Ps2Y/\qoJo\aiXP'rl5)[`5MVkotg[D
+!PcAFNW6f[^[Ai9]EPpX\@8rUrC$WRrC6]Ts%*,\rC[)_s%NDds%WPir_WVl!)iep(fXL8<`W:'
+=BSd1>?b?;?!^lpBonNpD/K8is)7mVs)\lpGBe@VG'8(SH$O^_I!^6gI=M*Es+1<'J:RWMrIXlu
+rdc/?J:N3'J:N)tI=-HjI=6HeG]n7NEH#l8EGfW1CM]^DTO+.\SXc1?PEL!+C6k?\]Ul+'Q][/K
+CPdb5I[Y[f9PJB]I=#g[:k+@bM,$uHN.?S=NffWsS=uUD;,0e[9h\Pd:lq<BU8+EVNf]EgQ'IZ%
+R\$(@T:VaQVl?\uXo>NaYl=(fn,DhSQ2d'MQ'@O4Q1pUFQFd+k`;[[G`9tPC`;dgS`rClHMi<US
+NfT6_OckomQ'IZ&R$jD4S"6.BT:hmOUSO]^VPg>jWN)u!XKAV-YPta3Z*L[AZa@*I[JdN6\+]k%
+_>(hG^])%@^\b`!WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@JqOcYWbNfB!VMi3ILM26qBL5(D9
+K`-Q'K)^E!JF\3eJH(3#K)UE&KE-`*L&m'creY!>Mi<USNfT6_P*2#nQ'I]'R$sM6S=Z=FTqS6W
+V5C/hWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^
+k2tjkl0@U6ljN4Kn*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZWmo)=4?])R9~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$gj5]+VRJ`NRR0/hB
+Q'M?7s-NRtk%s@!n8/,Arg*PKrg*JI!1*DFs-E\Org<YNs-WYLoTfKBrKdDIqJ?1ojH/qns,I&;
+!/peDr^HcTr($cXr^m&\s%EAcr_<Df!)NSjs%rbor_jP2<E3(#='&L,=^#$6>[1Q@;/'9UFoGMC
+=Tqu3>?b98r`fb9?XR2J?sd8L@K'a9@0'hIqIKS:!b>eNrac%?s'uLKA7]=_AS#C`A7K-I@UEPQ
+?sd;L@:<ML?!^c@>?b64=]eg0=&s]rH[L0cG^":RFE1kt>Bb@=LO"5nFDkr&=__Se@")<J4&ApU
+?!UTB6XaVEBLPNaDI[6mD/aN;GC"RX84Z3@7n-3H961#Y(4CRXD/F32EcZAHGBeCYH?spbIXm!$
+re'3ar3?4+rj2NCs)A$Zr,MaWqK)[Y!lW'srPniW!65#Zs2bPhbKJ,Pb0/#QrQY>e#LC]@cd0tc
+dJ_Mme,Iksec4.uec42#fDaD(f@\aSf`9b'PQ7!)Pl$[DPlI$KM(FRDN/`jYO-#KePE_>tQC+&-
+R[]e;St;RITqS6WUnsrdVl6SpWiN5'Xfel,YR%M>ZEpmE['d=?[K*f1s8S5TOR\J1O>*Z4Vl$;d
+UnaZXTq@pJSXc1=R@'A.QBd`"PEM&iO,o<\N/W[QMM[1GLPLV=KnY3YKE$Q'JbsugJ,=crJcC?$
+KE$T)L&Qf-LPYqd?]'c#N/`jYO-#NfPE_>tQ^F//S"#q>StMdNUSO``Vl6SpX0&M-Yd(O@[C3QS
+\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P08h;-uHi8N_VjQ5OdkNV6rli-5YmI'H3nF?&>
+o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcE=]J,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$gj5]+Vr_r\n!`Dln
+rDN_p4oIMC45i:%48_5:3t"264?Yeh4Ztnj4?`F$s%`Mep.tW^r_NPjr)*;erD38dr)*JjrD3;e
+!'U3As&T/"r`&,\pJUidr_i\_r^HcTr($cXr^m&\s%EAcr_<Df!)NSjs%rbor_jP2<E3(#='&L,
+=^#$6>[1Q@1,_<Z4oI8?2)[>j2Zu*!2E*Vm2[_T(3B0#Y3&roV3'$t!r&Od9r\ss>3&pmr!B<+=
+2\J#*2Dd<L2)[?O2E*KM2)R9M2#]?<2Dm?K1c$pC2#]B45>FC-5!;"j4$,D]5Wq7p5!;7q4#o>\
+2`<NN1G^XK-lsBT/L`;-1c6a<2E<lT2E!cW3'',a5<hJ%6U`sq3'')\5Wh5$92/)R92%Q85lO.Z
+779X87n6$:84cBGr_3>di_KMWqcWl$s#pEGrB1*C!'^!=s(24Bs(;=Fqe#qCC&VlICB/,KC]/)K
+D>nGPDuObUEWC1[FS^.ZGQ)jcH2`-hHN8Hm<Vobm;ta,e;u0Dk;>j>k;?'Pn;u]hsM(FRDN/`jY
+O-#KePE_>tQC+&-R[]e;St;RITqS6WUnsrdVl6SpWiN5'Xfel,YR%M>ZEpmE['d=?[f<f:[/R?9
+['d?N\%#C:p/Cfeqc3Dj0WD"KVPU)aUS=HUT:VXFS=?"9R$a5+Q'IStP*(ieO,f3YN/NUOM2@%D
+LPCP;KnTDWs+:9%qge6eqge]ts+:6&s+CB+re:H/M#N6<MMmFPNK0'\OHPcjPa.N#R$a>3S"-(A
+TV8'SUnsrdW2ZetXf\e2Z*UdE[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=k?<h;@/K
+iT&tZjlY^gl07L!rp1$[mdKW6naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s185\~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+rci22lc-+5M
+rl5#[p5/^)mYg.`onrm/a2[eks2OrTrl4oXr5er]rlP/\rl5)[`5MVkot^[E^\!NV^[Ai3]`c'^
+]=GHM7/fXR7f5dV8H)3Z9)hQa9`@cd:&n)g:]XEkr_rhr!*0#!$<L>4=^#!5>[1Q@ra-:GLgFq_
+P%ff7P%ncLDf'B1DK,Sp$?1!*F`VYHF`qtPr-/9gG^045r-/NnG^+LZG^=UZGQ)h+GBS1RGBe:S
+F`_VDE,KT5D/F')Cn@5jSXZ.?rgH$AP`h/lO,]*VL4b)LT<#/^OGS*pK85Y4DIud>G"[(/;LhP@
+KoM0k:K17iKR\T/NKB?lSY)RICJdi%9MPLc&;HdKTVJ<WOH>]jQ'IZ%R\'ML#bRcaUo:5mY,qW+
+iNN=LrU0UPrU9fOr0@2Er078JqNh2J])Us3m)/kAs2G#X08PIAMMmFQNfT6_OckomQ'IZ&R$jD4
+S=Q7CT:hmPUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8s0Vg6rO2a8q#CB1pqZ=4qn=2OVl$;dUnaZX
+TqJ!KSXc1=R[BJ/QBd`"PEM)jO,o<\req5CMM[1GLPLV=KnY3ZKE$Q'JbsuqJ,4WlJ,=crJcC?$
+KE$T)L&Qg?LPUeDMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\sXKAY0Yd1UB[C3QT
+\\#Mf^V@V%_o0O6aN;TJbg+M[dF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK
+!qZ'Vrq6<b!;HHerqZTjqtp?irVc<dJcE@^J,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+tRJ`NRR/iTP
+PlR-CCZ]HsC\2ECQ1L=9Q2R'KR/`NOR/30CQN*6JQN*3MD=q`&OSOq?OH,?\NVu9E7K#^R8,l-Z
+8c;9]9E.]b:&drg:]4)j;,[Bls&8tur`0A-=BSd1>$G6:?!dM;&7B6I=`edkDK9i#=BJ^.>$Ci.
+!a8f4r*0G3>[1TA?XNe="'o5>@/OC3@/XI4?jC%F?<piA>[@;5s',M,r`T)"#(1cEH$Xa\rcV.]
+F)c2<Df'6'BP(h#H@:3`DJ<H[B4u$`=&(tB=?ftr7U\VOAnl3P78$9FBOYOcCN"05Fa/1V=@YnP
+84H9I9Pf*&H[U<hCi432F)uJIGQ)jnH@1'cI=Hd!K)UB&L>dgeYH[o/rj)O0!H<&WEr9qWErL(X
+Er0qX`;IXR`rO3[ao0E_b5TQabl5lacMu2pd*^:ie'c\De,%Snec45#f)jUVfDaG%g&KdVPkpUD
+PV7iLM2I4MNK0'\OHG]iPa.N"R$a;1S"-%@StD[LU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0Zi@E4
+[JdQ6\+p"'On+V+Oo(4_W2HMhUnjc[TqS-NSt2C@S!o_3Q^3o%P`q8nOH5H_NW+kEMi*@JLkgb?
+L4t>7re(6&s+1&tr."Qlr."Tos+13%re(6(!/:E,BSVD#M2I4MN/`jYO-#KeP*;/rQC!u,R[]h<
+StD[LU8+N\Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ9EbKS8WcdC.heCE.%f\,!5gtgiE
+i8N\Uj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"O`p&Ojcq#:*hqYU0gr;HTbrdk*]s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5])trDWVn"]J8q
+;H$Nm4oIM=4756/49%G?49%G<48_5948h;A:Amle:A@W^:B"&f;#aDh;#O2d;#=)i;#O2f:]N]Y
+4nq/><W5tY;u0Di;ZK_o7/fXR7f5dV8H)3Z9)hQa9`@cd:&n)g:]XEkr_rhr!*0#!$<L>4=^#!5
+>[1Q@ra-7F4"rNS5!M+l4?#,U2Dd9N2Z5W82@)0!2E<]S2`<Pj2ZPc82ZPi72ZYfqrAag8#W4Lt
+2)[?M2DkCjr\OX62?#E01&sT=5"In#4Ztnj3BB/Z3&roU2`*BK4?Ybf3]AoS2)R3E/1W%f+"ANf
+1,(R8.lB:H0JGFE2*EcT3'05c5=%S'76NUj3]]8c5<VO79E\!S5X@d:6i][S7fZ!V8-V[[9h\5T
+:#JbH>Q.h'=oMS)>P^M`4oRPE4[/O'!G,mBB*2g[AnM$T#\[pdC2.O"C23``rbVOMs).gSrc.pX
+!-A-]s)n?`rcJ9cGBa"1rd"Hgs*Ocn!*9)!pf.5koMYWdqGR)cs&/kq08PIAMMmFQNfT6_Ockom
+Q'IZ&R$jD4S=Q7CT:hmPUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8s0Vg6rO2a8s02j8['d<M\$f78
+o2GTepf7/i+K238V50o^U7n9RSt;LCS"#k6R$X,(Q'@JqP)t`cNfF$s$]Bn!M26qBL5(D9K`6W(
+K)^E!JGaonIf+]mJH(3#K)UE&KE-`*L1l?uM2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5L5jWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!@b0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5]4^
+k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?]DmB~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-Ep#kiV$hj5]+Ecd:&<ci;8l
+bfe--a8_%dM>`>'MrT]hMuLcs`qm[O`r*dU`r=$YaSa0Zb5KH^aSs6[`<=)q_ns:`_=rohNqeV2
+^Z<-.]`c![]=GKO7/fXS7f,^U8H)3Z9)hQa9`@cd:B+,h:^9iq;H$Ln<)rou!EWD&=TM]1r`gON
+?=.&I@:E\UHWjR1NejgBQ\:<XOcu&qQYUDQD/4"eDZFeUDujs"rcA0^FT$:\EY`_:F)l;@EcH#8
+DJsE1Df0B-C203+R/WLFQ^O2+Q^=#)OcXEpBP3U!SY!$^Y-kEXGBS+MEcQ)7CR'$\A5Q$?:/6%3
+:JOea:/Oh_:/?7eK8,8BOHZ*%SY;^KR8H^Q9hkUd+E3mCTV/*TUQ1M$Q'IZ%R@]q>StD^NVQ$Pq
+XKA\0Yd",1iirIMr9jOPr:'WKs-3\NQ'@O/Q2d0IQb<@\`9Y>?`&>SiLl$tGMi<XUO,oBcP*;,q
+QC!u+R@B\9SXuIHTqS3UUnsrdVl6SpWiN5'Xfek2YctC<ZMq03['d=>[f<i3rrBn1_!8]7^+ZF_
+Vkp2bUS=HUTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%DLPCP;KnTDW!ePuSqgeWppO<$i
+r.+fus+:6&F+f7$L5(J=Ll$tGMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTqS3VUo(&gWN*#$Xfnt6
+ZEppH[^`lZ]Y(tn^qmn*`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--
+n*fc8nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s1JA^~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+tRJWHQR0/b>
+Q'LrVj)"!rpMBMgrg3YNqj%,GrKmPO!13SMqNq#Dr0@2GrGD(@hN7_trf7#;r^?`Sr^QcTs%*,\
+rC[)_s%NDds%`Sir_Nhs;GpFl<)cls<WQ9(r`K8*>Q.kO?!^lF?t!MR@q/2'Anu(-Jp1pIEH?5F
+GBd.j=BSd1=]nr-=U826=^#$7>?Y2+>5qe6>[(E8=^"s1=BSc(<s)K)G^912.s?&YFEDSDE*QXP
+>'G7;H@gTqJp^j.=]ng-<E)mpCKae75!;n26!QlG7/fXS6kMjU?t*\[C2@d,F*)VPH$OO'r^R)^
+9M8)crd,H/I=-EZDfBc=F`qtRG^4U_H[:0lJ:`CPKAD7]YQ(j'Z2_-/Zi+hIEH6)>EcH*qEWC+Y
+Er:"Y`W!mU`rO3[ao9K^b5TQcbg"E0cMu2kd*_d>rR:er!7UqsrRLo!!nc,Vrn.5's4Yncqi`mm
+Ll$tGMi<XUO,oBcP*;,qQC!u+R@B\9SXuIHTqS3UUnsrdVl6SpWiN5'Xfek2YctC<ZMq03['d=>
+[f<i3rrA2MORnV7O>!Q1Vkp2bUS=HUTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%DLPCP;
+KnTDW!ePuSqgeWppO<$ir.+fus+:6&F+f7$L5(J=Ll$tGMi<USNfT6_OckomQ'IZ&R$jD4S=Q7D
+TqS3VUo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>N
+ioB+]k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s1JA^~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$hj5])t<;]\n<!-#q
+;H*HUrB0^6o/t\fq+glar_WSiqbI,d!DlSc;#O2d;#F2j:]O;h:]OAk55m_;4TAC=;uKVo;u]bp
+7/fXS7f,^U8H)3Z9)hQa9`@cd:B+,h:^9iq;H$Ln<)rou!EWD&=TM]1r`gIL?=.&I@:E\U4#8<=
+2DmNX4ukVb4Zkkl5;b8T2#K322Z,E52DtIls"sp92)[?MrA=O0qD8+."uJ+l1,D0\rBC`V5<V1o
+4$,G`3^,Yh4oRZ15!M4o4ZY8N0.nh./hS\*1+b"&*ZljX-8@2'.k</'0.nk10/PLE2`Wr_5!M7u
+6Ua@23BB/]3^5ho6;'pFrCd8W5XYN=&k,8Z84Q-?84cBG9MJ/R9heAXr_;BIs',D)r)s&'s',Fb
+rB:3Gr]^<Es$$0Ar+H%Arb)7E!,;=FrbMOMr,)FNs).mVrc&![F*.D(s)\EcFEDYJG5c^bGlE!e
+HN/<mI!binr`/_mr_r#Ype`qILPUeDMMmFQNfT6_P*2#nQ'Rc(R$jG5S=Q7DTV8'RUSO``Vl-Jm
+WiE,$Xf\b0YHY79ZEjJ9!joACr3lX7$*ghE[C3QQ[^T6-;uK\j<VfZJW2HPiUnjc[TqS-OSt2C@
+S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkgb?L4t>7rIY0'JV!]KrI=Qjr."Wps+13%re#9FKnY89
+LPL\BM2I4MN/`jYO-#KePE_>tQC+&-R[]h<StD^MU84T^Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"
+_Sa@4a2lBGbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF5uIncJFTo`"Lb
+p@n=[q#C0hqYU0gr;HTbrdk*^s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0m-Ep#kiV$hj5\D0cd2U;#LC]@
+c-+5Na8:b_M>E,)Mr]cjM[.AFaN)<?`PqMirP\iXa2e2#!6P,\s2bAcaiVX'`rj?#`PhbnrkeNJ
+s,Hu;s,Hu;r4_rc!06!O#edsc]XkYa6q$uBr^QfUr^d&\rC[)_s%NAc!_uNer_WVl!)iep2,mRU
+<`W:(=BSd1>?b?;?!^lF?smDP@Uiq[AWNX7>CT^^BRtAKI%-:^SnMeOMi<[WOcu"*Q2R!KQi<?c
+Q^O;2S"-";S",t8R@0CSB4YXbrF5hArb*I@Q'@`6RC\ukX.blDMhc4cOb8j`J73G:?;Fa*=&i3u
+<W5l9;,:%dJp<!/N.HV=NKB9iS"61FT:'(`:J4GW:&\*7ELrbpTVJ<WNKTHiQ'Rc)St;LET:_gS
+W2Zi!Xfek3YkbK`Yl=%dmf)\QnGe^IPl$aGQMm'KQMm/`s5h2___?h#Ll$tGMi<XUO,oBcP*;,q
+QC!u+R[]e:St;RITqS6WUnsrdVl6SpWiN5'Xfel,YQ;#7rj2X3s0_d5s0qe'pqZ+.0>=?^VPL#_
+U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`-N)Jq8LMJGt&jIf4coJH(3#
+K)UC:KS>,7L51S@M2@+JN/WaVO,oEdP*;,qQC!u+R[]e;St;UKU8+N\VPgAmWiW>*YHY:<ZaI6N
+\[f>b]tV7s_Sa=2`lQ6DbKS5VcdC.geC<($f@em4gtgfDi8ESSj5f=ak3(smlKeH9$gmBNn*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?Nardk*_s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5ZMorgE\Q"IYXD
+QB^oTi,%drph]Yiqj7;JrK[AJrKm;Hq3UuEqN_)Hs)%^PqeZIuP*(lgphTqIh2hf#NJrfa7/]RR
+7f5dU8H29[9)hQa9`7Ze:/=[b;#aAm;Z9TN<)lq!<``C*=]np4>?kE=?=.&I?t!MR@q9.^E-u4i
+@7NphAQ`5FG]\(T>?tHNDK'T:rcS'\q02a]20jCiG^"@TG'$__<)Zap;cH\#>$G3TG'/%WGDCHl
+I!BaOCM@!TCM.L%@8L'*7m0C57R]fG70,kHr^7MhAm]7iDI[9lCi434FEMnTH$*"T7n3JJ*DK1$
+?@.'GH[L6gD/aE7F*2VLGBnI[I!^0hIt3.LKA)%ZXoP[)YkkX(ZN%92Du4MQEV"5MF8j/Y`r=!c
+aN;QHb0.rLai_d*b6H28c-FY\c2Q#gciVVCdJ_Joe'e6E!7Lhqs4%,#qUbc"rRh2)c]nHn0p79H
+Ll$tGMi<XUO,oBcP*;,qQC!u+R[]e:St;RITqS6WUnsrdVl6SpWiN5'Xfel,YQ;#7rj2X3s0_d5
+s0qe'mu[%$s/.EFUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkph@L4t>7rIY0'
+JV!]KrdXQhrI=`qs+13%re"p<KnY89LPUbCM2I4MN/`jYO-,TgPE_>uQ^F//S"#t?StMdOUSO``
+Vl6VqXKAY/Yd(O@[C3QT\\#Mf^;%J#_o0O6aN2NIbg"GZdF$CleCN7'g"P39h;-uHi8N_VjQ5Od
+kNM0qli-5YmI'H3nF?&>o(2JFrq6<bs7cKes7uZjqtpBjr;H3cJcEF`J,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$hj5X':<;]\n<!#ur
+;>EBR4RP<+4PMsn:A@Zb:\mic:\R]`:\moc;>a5j;>WTU4p!lB:B";m4T7GB49.P";uT\p7/]RR
+7f5dU8H29[9)hQa9`7Ze:/=[b;#aAm;Z9TB<)lq!<``C*=]np4>?kE=?=.&I?t!MR@q9.^6q0Bn
+1FFA!2(UL?r]U]T5!;(h3]]>a4Zu"+4TI\E5Q*eG5Q3nJ5Q3eT5!;(l4>erP2)R0G1c5.os$%Pg
+5<h:q4?P\e3]AuT2`*<J1GUU7.juP\.k</%.OtBJ)(dHm/NGgV5<h"b3]fAc5<hG"7RT[,3'')!
+3[6pT5=%q99MJ2S90Y[.6q'L37Rfm<7S$'B8kVfO92&&S:/:UZjA,YXqc`r$s&oJ.>WhgFs$$BG
+r]U?I55@GCB)uUWral.Crb2.CrbMOMs)%dR!,_^Q!cN$src.sZs)\<bFEIM'!H`J`G5ldcGl;pe
+HN/<mH@,Qjr`/\lr_qcR0SY@=M2@+JN/`jYO-#NfPE_>uQ^F//S"#q>StD[LTqeEZV5C/gW2Zes
+X/rG*Y-7i/!O8s0Zi@E4[J[K5\,Wi8[KO"H[^Wa;;uK\j<V]VoV_"^@UnaZXTqJ$LSXc1=R[KP0
+QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3YK*$XUJbsusJ+S3gJ,FisJcC?$K5$!mKnb>;LkpnE
+MMmFPNK0'\OcklkPa.Q$R$a>3S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_(`5Ta;
+aND]Mc-FY_dF-Oof%8O,g=tE=h;@/KiT&tZjlY^gkiqBurp1$[mdKW6naZ2@oCMVRp&Facp\jme
+q>U6fqu6NkrUTr=s1SG_~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-Ep#kiV$hj5\D0cd0tbdEp7c
+cHXPSp58EtoSWX+onia+n;@(#"j>'1aiMNn`W4!V`rF*Za8j?Uap#o.a2l<@rl+oUs2+iRqnWJo
+Mi3OQNK*gqrOr?C^VBc^p5S(Gs1AHG\O8ja7K,dS8,c'Z8c;9]9E.]a:&drg:]=2j;#jMn;u]es
+<W6#"='5H)%U*(A>[:ZB?XI2L@U`hXrad*^B5!p-<*G9$Q<J`U?=\b>MI^U^Oe/_OVRi+iRJN3J
+Pk^LSPa7]+Un*m^XIZGDJRDhlrE_^?DJX#tObAaTKkPgX?rB`pE)()"G]/+/;M9sgP)b<LH\IN>
+N)>%]NKKEnS"6:IT:8YQ91qrP<)ZeXSt2JPT`:epUPt>!Q'@T$Q_'cISd:s^Uo12kXKAVpYNN.h
+m/QJKmf2bQnG\UNPQ$dHQ2?gDQ2R$KQ2d0MQbWR^`9>)sKnbA=M2@+JN/`jYO-,TgPEhE!Q^F20
+S"-%@StD^MU8+N[V5L5iWN)u!XKAV-Y-5(6Z*CV6Zi@E4[J[K5\,$(!_!&Nd^8Im+Unjc[TqS-O
+St2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1)urdXKfrI=`qs+(0%rIY-(
+L&Qg?LPUeDMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlcVl?\sXKAY0Yd1UB[^N]V]">Vg
+^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'V
+rq6<bs7cKes7u]kqtp?ir;H3cJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5ZMorL*SP!h#FB
+ltcN8rGCh9mVDZ8op5KArg!PLqj.5JopGWCqj.)Dr+uCMrGMXPrK75AOcfX)p2&`Mrf.&=6q$uB
+r^QfUr^d&\rC[)_s%NAcs%WPir_WVl!)ieps&8tur`0&$=T2G5>$G6:?!^iE?XR;O@UisJAKPMs
+BRG+u9Q+6V8RPXn:1\!O<*O'RFF8@[Lj",iG'3A!s*+Kd$?p`CH$>!nH$s%/rD<Mk,>`#W>$"X=
+B52-j<*`X!5<V535u;&s>@KrfA7oXpCM7<jC&W!+7Ug+KDfBc>G'\IZG">+m7RomB9MKJQH[L-d
+H[U<iDf9T9F*2YLG^4U^H@1$fIXls#re(6(g4fI-!3cC+qm$+*s0M]Bs)7aQrc.XPrGr"Y`r=$Y
+a8j?]ap#u2aN;QHrQG5crltMgrm(Pj!n#HDqU,GodaJ*Cs4%8'f@SU)rn%/%rn.;*c'1/NKnbA=
+M2@+JN/`jYO-,TgPEhE!Q^F20S"-%@StD^MU8+N[V5L5iWN)u!XKAV-Y-5(6Z*CV6Zi@E4[J[K5
+\,$'mORSD4V_"^@UnaZXTqJ$LSXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'
+Jc(&tJ+A'eJ,FisJH1<#K)pXZre>*ALl$tGMi<USNfT6_OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&f
+WN*##Xfen4ZEppH[^`lZ]=bhl^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8MioB([jlYai
+l07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>^<gqu-HjrUTr=s1\M`~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0m-Ep#kiV$hj5X*;<)ifpr)<Yp
+oKE.8lT=o)iB-m2s%iJfr(dAh:J^par_N2`s%iJfqbd>h!)`\Xr]^3DrD!>lr)Ne[r]C-@s#^3B
+hbsSS6q$uBr^QfUr^d&\rC[)_s%NAcs%WPir_WVl!)ieps&8tur`0&$=T2G5>$G6:?!^iE?XR;O
+@UisJAJJfiBM(rT1dF#]/2Jq./i,=B1c@6Or]10E5s7Fsr]^<GpHJL>r]^?Fs$$HF4Y\TH1c$jA
+1G^jG2Dm<K1c-s@/hJOt*ZlOX,q:Z*1c?d61c@<S4$#Ac5<h=r/iPjR4[21r6:4.07Q<L/3XRi3
+5sRq492&#R9E%U"5!MD%6psI37Rp!>7n?9F8P;`M9MFtNk=u"\qHNi#$X$Y:>?Y694Ztnj4S_/?
+55RPE55@DGAnPagB)ZHDC&2QNCM[d&Ci+$,DJfAj!cN$src%pZr,hmYs)e9`!d8d3rHS<erd"Zn
+H?sr7<rQ+n<;ohV;Ds5`LPUeDMMmFQNfT6`P*2#oQ'Rc(R@9V8SXuFFTqS3UUnjibVl6SpWiN5'
+Xfeh1YctC;ZMq31[/[Q3[f<f;[C6(BrjMDsrD`MkrDYLM<)fcnVPL#_U7n9RT:VUDS"#k7R$a2)
+Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&hIf4coJH(0#K)L<&KSBD[BSVD#M2I4M
+N/`jYO-#KeP*;/rQC!u,R[]h<StD[LU84T^Vl-MoX/rG+YctF>['mEQ\[oDc]t_A!_Sa@3a2lBF
+bKS8Wd*^:jeCE.%f\,!5gtgiEi8N\Uj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0i
+qYU0gr;?Nardk*`s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#kiV$gj3>fmcHjh`da?Fg
+cd'c*MXu\cM?&M#M@#3bbfe/NaN2EBn](OJ!Q`C\b5TQrb0.uNb/q`Fa2Z*;`l5m6_SZ8fs,-c5
+s,?f6r4W32[Jmu@^]2%CN<#""^AkkI^-qogr^QfUr^d&\r(?u^!)3>cs%WPirD3_r;GpFl<)cls
+<WQ9(r`K8*>Q.k_?!^lF?t!JQ@Uiq[AS,RgBPD3s<E5NLN)`q]ODpLf>$4p-<-;2A@=NoUML^;4
+Lj=:EH<ZAhR]is#Xg"=VNaT/LJr#\TNIQ%VFFeslJV8\\=^+a$:f2mnEd1J[<)Z_YNJM+FKo_4P
+;,gIm<fN9+R%0Y9TVA-MQr-XQ92&#Y;i79?SXuIHTqnHDOHfa0s-NkVSt5kP$(mlaUo12lX/rGi
+YN`:hm/QJKmJu_Sn,i.LnGSRMOoU^?Pl$aBQG<Iq`:UtD`9G/oKS>/8Ll$tGMi<XUO-#KeP*D5s
+QC+&-R[]h<StD[LTq\<XV5C/gW2ZesX/rG*Y-7i/!jT&:rj2X3s0_a4s0qk)q7u1.0#"3ZUnjc[
+TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1)urdXfor-eHkrdXls
+s+13%re(6(EJ9.%LPL\BM2I4MN/`jYO-#NfPE_>tQ^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF5uIncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-Ep#kiV$gj8GAERJWEQRJq'u
+D"29@D"ql7D!Yp<CmXg\qj7&Cs-N>Er0R>Iqj%1sqeZ+Gr/q)5N;f">OoLO<C]J>5OT1@BO@9%9
+r^QfUr^d&\r(?u^!)3>cs%WPirD3_r;GpFl<)cls<WQ9(r`K8*>Q.kE?!^lF?t!JQ@Uiq[AS,Rg
+BPD3s9hKbPD>m0CDdIHV8k;QD7Ti)G93c"5B4PUfBjLXCs(`ZrM33gQMfrrT;NY[*BPqTu?s-3-
+@:3MP@q/;0:."qI%V&jN?:77P77M01Bi.N<rb`WD8Ou?CD/O<5F`hkRH@'gW84Z6?7n$0HDLDG1%
+XNJKI=,pNEH?5DG'8+Urd#$#I!^0gIt3*%JqJ]/K\(qSY5b^*Yl(d)ZMq3/DuOVSDuO\UEW'kUE
+VFMRErsA%a8X-[ao0?baiMTGb5TQcbg"E3c3;J<cHjkarR(Pk!7Ceor6tYq!nZ#Srn%/%r7U\+q
+NKp'0nb78L5:\CMMmFQNfT9aP*2&pQ'Rf)R@9V8SXuIHTqS3UUnsrdVl6SpWiN5'Xfel,YQD)8Z
+Mq31[/[Q2[f<i5s6u-=OY*H,Unjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L
+4t>7re(6&s+1)urdXfor-eHkrdXlss+13%re(6(EJ9.%LPL\BM2I4MN/`jYO-#NfPE_>tQ^F//S
+"#t?StMdNUSO``Vl6VqXKAY/Yd(O@[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h
+;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF5uIncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-Ep#kiV$gj&K&X;cH`p;uK\p
+55[SB55@A>4T7DB4RbH-4Qnm+:]!le:]=2f:]=,f:]=,h:]+&g;$'Qk;><u^;>EBO55n=W:B=9j
+q,[>Qs#U3CiDT_ErC-]Tr($`Ws%3,\s%<>crD!;e!)NPi#>nAs;c?Xp<W6#"='5H)!Er_,>VKGi
+?XI2L@:E\UA7]=aB4tsmC25pn912*)1c.EU3\2m:0.82!+sA0\0eP4:2)I2i1&`jB2Dm?Y7n#X2
+3]K,U7l<+Y1bpa;/M&IP0c)Mu0f1dH,pjre0JPFB.kE8(0020V2)kIu#r"(i1,:pS5<_@35nZUR
+7RT3s3]K/[5XJ"78kViO:&[id56""M7/fXT7LVgX7n?0C8P2WL91qtF:$GFQ>52>%=q4b?>$G07
+>?kB;5!D1q55m\I5!;%mrB:0EoKN=frb)4Ds(VLJ!,;FI!,MRMrG;p[D/F0.DfBZ8EH6."FT6C^
+ErL+[FT$@]GQ)jcH2i0nH$Xd`Hhg_B<W?%k;rpn3KS>/8Ll$tGMi<XUO-#KeP*D5sQC+&-R[]h<
+StD[LTq\<XV5C/gW2ZesX/rG*Y-7i/!jT&:rj2X3s0_a4s0r$9r3l5rrD`MkrD`_o/Z,A?UnaZX
+TqJ$LSXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'Jc(&tJ,=]mIJ\KmJ,Oot
+JcC?$KE$UEKnb>;LPUeDMMmFPNK0'\OHPcjPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UdE
+[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;7)JiSrnYjlY^gkiq?slg4!*mdKW6
+nF?MK!V>s^o`Fj]p\jmdq>^<gqu-HkrUTr=s1\M`~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb)YEXlo'u5<n*]T0m-<j"kiV$gj3>imc-O__rmLhn
+!mc^[mu$UkeVaCN"O506b/sY(r5\NNrl5)]aiXG's31Mds2tA`!m&F&rPeoX`5DPjr/1H2s,?l8
+qnE*D"/`E?_>D%J^\a#iNrP1&^&YhE7K,dR8,l-[8c23\9E.]b:&dug:]=/l;,U<k;ZTitr`0D.
+=BJ^/>$G39>[:\8?T);#@U`hXAS#IcB4tsmC27U$D,XG6S:6HXO.96N=H\_rHZN.d<E<1$=+PI@
+IXcp"JqJ_U<;oerJbt08KSFr&F`;e-;H$SLLQ-h7JV&MWr`CjUDNBj<;H-Oo<`N*s<)Ze3H$X7&
+;c6Ff9MA)P9hSGb;dGQXSXuIHUnj]HP*D5srg<_V%A'2`StD^OVPgDnX/rH&Y5kflYO&InlhTlI
+mJ62Mn,MnVnGr(RP6$i1pQYK=rKb;"pVc^Aqo&BLp;6^E14t76L5(M@M2I7NNK0']OckomQ'I]'
+R$sM6S=Z=ETV8*TUnjiaVl-JnWiN2%Xf\b0ricI/ZEjJ9s0Vg6qR-C5qZ$E-k.`LFV50o^U7n9R
+T:VUDS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&sIe\?hIf=iqJH(3#
+K)UB,KS>,7L51TaM-l-uN/WaWO-#KeP*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O
+\[oDc]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKeH9$gmBNn*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?Nardk*as*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-<j"kiV$gj8GAFRJNBPD"qlD
+D"DH?D#%rCD#\AKD!u0<Qh-OBQi*0HQh-UBQi*0JQ1f%lD?#b!PPgRGJr5_Tqi^u@qeZ1Ik)]S'
+rC-]Tqa^ZWs%3,\s%EAcr_<Dfs%iVj!`;inr_ihs<W6#,='/R-=^#$6>[1Q@ra-pY@:E\UA7]=a
+AnPdjBkhF!Ci)j?9R:5fDK0kn8P=&ABOtO@rC@&]87Pq4rF#h<@q.tsr^73(@qB4^A7]7^?X@#C
+@fAdu7qH:HrF,b:rCd5b>Q/R?8H)0\8Gu*n<afH>84lHE8Oc3>7n6!C9h\H+rd,T1H[U<hE,fl>
+FEMbNG^4U]H[C-eI=H`sJV&LQK@>PQXo,@%YPk^)Z2M!,ZhSG>DK#Mnrc.sWr,MUS"*&@%a8X-b
+ai_cJaiMQFrlY8a!R/gec3)>:cHlL:rmCbo"4>QEdJ_Mmdf@npec+/!f`0V+f\+sLPk^I8PkL=<
+PVRlEKnb><M2@+KN/`jYOHG]iPa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWiE,#XKAV-YPta-Z*L\7
+Zi@E4[JI<3\,--pORJ;`VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;
+KnTGXs+:9%r.+crrI4Nir-nWprIFp!s+:6&#)%\aL5(J>reY!>Mi<USO,oBbP*2#oQ'Rc(R@9V8
+SXuIHTq\?YV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWA
+hr*GOj5]4^k2tjjl0@U6ljN4Kn*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mo)=4?^]/f~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-<j"kiV$gj&B%U<;ohr<<#,O
+55.584RbH.4RP<0:]4&f:]4)i:\mib:]=,h:B45d;>F&_;>*0N56"CS:BFEo<V]\m3r_8C4?Yjh
+;uK/a7f,^U8H29Z9)hQa9`@cd:B+,h:]aKl;Z9Sq<)rou$WgG4=]np4>?kE=?N+:_?t!MR@q9.^
+AnG[hBPD3sCM[iO4?H7r6UF101c.!R5sILn0JY76/M/M32>K$-.0V1M-o*S5r\=U20JP=<r\jd+
+s""+,"ZA+k1G^ld2@26'5<hCf1,:R>rA+d;2)dW[3\rcU3]m7#.6'RX5sIk391qrQ9MA)E5sn%.
+77BU67Rp!>7n?6D8kM`M91qrQ9hnIK:$bUT>Q.h)>6%q)>6%k+>6.u5rET:a!'^BHpce^@s$$*?
+rau4Erb;=GrbMIKrbW*^D/F0.DfBZ8EH6,BFT-=]ErL.[FT6L`G5HL`GQW5;H?oL9!.=NAs&K(u
+oMbQ`p/1]b14t76L5(M@M2I7NNK0']OckomQ'I]'R$sM6S=Z=ETV8*TUnjiaVl-JnWiN2%Xf\b0
+ricI/ZEjJ9s0Vg6qR-C5rO)X5oi(fgpJq/krDP;FV50o^U7n9RT:VUDS"#k7R$a2)Q'@JqP*(ie
+O,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&sIe\?hIf=iqJH(3#K)UB,KS>,7L51TaM-l-uN/WaW
+O-#KeP*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[oDc]t_=u_Sa=2`lQ6DbKS5V
+cdC.heCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKeH9$gmBNn*ol;o()DDo`"O`pAamcq#C0hqYU0h
+r;?Nardk*as*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0m-<j"kiV$gj37MI"4#6=d/MGn
+d.`CgMXcPbMZ8P+M?2&KrlkVjbK@rJaSa*P`rF'\aN;U(bPKEbbK@uLrQ"uZrl,,\`5BI0M>N2.
+MuSb8NVpNg]`XOoYe9nMqnN9JNK*gq!KW?-^AknG7K,dR8,l-Z8c;9]9E.]b:&dug:]=/l;,U<k
+;[69%<E<.%='5H)$<gY=>[:WA?XI2LraI$\A7]=aB4tsmC27U$Ci+'-Dc9S8<)oK;:77'$Oe&/?
+F8])=<rQ/%<*#.ZO8k4ENJrdRN/NSmM#W;QLl.:UNf[1=;c?[sBoe@=P*:HKJ:U[!;H-Ok;,C-h
+:C^)l92/,\<)Zdr?%\]>T)PAkU84KFP*D5sQC+#/Sc52cTV%pPVPpJpri?1)Y--cfm]c`V!:0LJ
+s6]gR!:TpTrpTmVrp^!XrK?r>r0.8JPa(j+!1(M%ou-L?rP\NLotp^Gs+<4_KnbA=M2@+KN/`mZ
+OHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$Xf\b/YHY79Z*O>7s0Vg6q6p2#qS;7./\\'W
+UnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'Jc1,uJ,OihIJnWo
+J,OotJH1<$KE$T)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N#R$a>3S"-(ATV8'SUnsrdW2ZetXf\e2
+Z*UdE[^WcW]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Lne^i@)g=k<:h;7&IiSrnXjQ>Ufkiq?slg4!*
+mf)YUnF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc9cJcEOcJ,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-<j"kiV$gj8>;ERJ`NJD#8)J
+D"2<>D"MTDD#A/ID";BAR0&bBR/NBLQMHmFQMm0@R/<6JQN*6AD#S8RPEM,nr/q2HGCPC0r0./D
+rK./CCi&oalB)%,r^HfUqa^ZWr^m&\s%EAcr_<Dfs%iVj!`;inr_j&$<E3(#='&N'=UJ>:>[1Q?
+?=.&I@K'^e@q9.^AnPdjBkhF!Ci!s+DJr3B9h\3+@nM&cDK9rHHsTB:91hiM8kVcKE;XVPD>nAM
+C]8&XBl%a-Df8-:8P2QH<c.eR$XmLR@nB9b8OuHF8c;3[7fGma:/">U9i5YPH[>[<s*YW/E,fl=
+FEMbMG^4U]H[:'dI"$TrJc:9$KE$VOL&\7QXo5F&YPta.Z*:L<r3H:-rGM@JrG_OOqf2^Wa8X0[
+aoKQ^aSs?^b66&6cHa]6cMu5id/MGmdK.bBrmC_ns3q"ts4%,!rmh&"!8%,#s4Qt-pQP97oooB>
+s+<4_KnbA=M2@+KN/`mZOHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$Xf\b/YHY79Z*O>7
+s0Vg6q6p2#nW<1$/>]/<US=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;KnTGX
+s+:9%rIFlsrI4EfrI4`qrIFp!!.t3&s+CB+re>*ALl$tGMi<USNfT6_OckomQ'I]'R$sM6S=Z=F
+TqS6WV5C/hWN*#$Xfnt6Za7'J\%&u[]Y(tn^qmn+`Q#s>aihlPcHjkbdaQ^rf%8R.g=tE=hV[8M
+ioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUKl<s1nYb~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-<j"kiV$gj&8oWqc*So!*&\U
+q`b!B!'^'=q)n1/q)n+-s%r_k!)WJer_WVjqbI)c!_uNer_WAeqG?raqE=gArB:-D!DcJd:BO9c
+;,dBmqH!VWs#^6Cs#pBGs&A8^r^HfUqa^ZWr^m&\s%EAcr_<Dfs%iVj!`;inr_j&$<E3(#='&N'
+=UJ>:>[1Q??=.&I@K'^a@q9.^AnPdjBkhF!Ci!s+DJq^&4?Ybu3''Z"6:=:46T[._1G^jE1B''4
+5X.M!5Q!eH5PIDs5<qG!0etI?0f1dN4$Gek2DR$D2`EWR2E!NR3''&Z3]T5^3C#ho5<qA$9MA&Q
+:&[fi90km36q%#C$q<ZT84Q0@8P)NI92,=XhbEN6"^,#5>?Y5/>Q7t->6%q->6.u5qHWhZ!^8h5
+oKN"6s(D@Fs(VFH!,MIJqeZCPDf>Vo"`e[*FEDU&ErU4\F9$I_Foll2G5c[lG^4R\H$O^^H[PKe
+s&K(uoMbQ`ohk]ds+<4_KnbA=M2@+KN/`mZOHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$
+Xf\b/YHY79Z*O>7s0Vg6q6g@3[C-"Boi(fgpJq/kr)5/CUnjc[TqS-OSt2C@S!ob4R$X)'P`q8n
+OcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1-!rdXlqomQdfrdXlss+(0%re(6(!/:E,BSVD#M2I4M
+N/`jYO-#KePE_>tQ^F//S"#q>StMdNUSO``Vl6SpX0&M-Yd(O@[C3QS\[oGd^;%J"_SjF5a2lBG
+bK\>Yd*^:jeCE.%f\5'6gtgiEi8N\Uj5f@bkNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0i
+qYU0gr;HTardk*bs*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0m-<j"kN:pfrlkAd"jYH?dF-M=
+M>`8.M=uhuM<'QkM>W5=da6=cc-=JVbK7iHr5\TPrPo,`ai_fMbfp%1s3(Pfb0'_*s2Y2\rl4uW
+!6"knqMP<2r/:W8r4`$@"GN&4XLeAIr5&<H!0@)=qiC0Zs1SG$r^QcTs%*,\rC[)_s%NAc!_uNe
+r_WVl!)ieps&8tur`0&$=T2G(>$Lu2!F9%2?NjhG@U`hXracXQB4tsmC27U$D/O60E,fl<r_s2(
+;H$Rp<E>Z[RJrW]N/`m[OH,HgR@EfBq4mta%\]MbS=#V-P`UlbNK0!Xr/:l=R@0M5S"-,KSc>8^
+TTK/;'9e]JR$aA5SXuFFSt;UKU8=ffWrB(%Xfek1bch34kiqC3lhp,Jm/ZSRmf;eSn,DeWnaQO?
+!KrTEP5(7=Pl?pJQM6Z^s7=2$_u@UK_tLtI_uG?IKS>/9Ll$tHN/WdXO-#NfPEhE!R$a;1S"-%@
+T:hmOU84T]VPg>jWN)u!XKAV-YHP17Z*CV5Zi@E3[J@9/s80Un^EUCfUnaZXTqJ$LSXc1=R[KP1
+Q^*i#PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3ZKE$Q'Jc1,uJ,OigIJnWpJ,FfuJV&LQK*I!_Knb>;
+M#N6FMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsueWN*##Xfen4ZEppG[^WfX]=bhl^VRe)
+`5Ta;aND]Mc-FY_dF-Oof%8O,g=k?<h;@/KiSrnYjlY^gkiq?slg4!*mdKW6nF?MK!qZ'Vrq6<b
+!;HHerqZTjqtp?irVc9cJcERdJ,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0m-<j"kN:pfR@3u?s-`nU!1Wq(
+qJ?1IrG2ILrG:k:!,Ut<r+u"@#Fh0NR@0G/R.?UCQM[$>R/`NQR/`NNQMt_$DZ+GIC]\I;Pl?mG
+P5URID0:5[Nr"t>P5LFBDYJ#9OT1CA7K,dR8,l-Z8c;9]9E.]a9`e'c:]=2j;#jMn;u]es<W6#"
+='5H)!Er_,>QJ,:ra,h:@:E\UAH$-OAnPdjBkhF!Ci+'-DfB]9ErJ`4:&IZc976Y`$u^*(Df9T7
+FEMeSI!ka:qKi-f$[R/IH?aUWFEDSFEVsePDuY+`H2`*mI!^0cHiA<kHiA!dEcZC&G5lgbH3\eC
+H[L9lJ:[]Os+:?*K?T&LX8f:!Xo>L'YPtd)Z21d+Zi4h>DYJ)JE;aeVE;jkTEWX>&a83mVap-&5
+bg"GYc2>lecN)>hd/_PmdJ_Jne,7_peH"2"fDjJ+f@\a/g$t=#POt+5PQ-mIK/SC:L51SAM2R=O
+NfT6_P*2#oQ'Rf)R@9V8SXuIHTqS3VUnsrdVl6SpWiN5'Xfek2YctC;ZMh-0[/RK/[f$0rOR821
+U`ZA+TqS-OSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi.Lj#)J%hL4t>7re(6&s+1-!rdXlqoR6[e
+s*srs!eGrTrdtE.KnY89LPYqdBo7h-N/`jYOHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\sXKAY0
+Yd1UB[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZdF$CleCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'H3nF5uIncJFTo`"O`p&Ojcq#:*hqYU0gr;HTardk*cs*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0m-<j"kN:pfr_rhsqGd5QrB0F0
+rB0I/q)n..qbR;h;"d]^:ARcc;#!oa;#4&`4o%;7:BX<b:/Fmc<Vfbq4T@SA55eIM;u];c7f,^U
+8H)3Z9)hQa9`7Ze:/=[b;#aAm;Z9Vp;ufqt<WQ9(r`K8*>Q.k.?!dM;"^kbJ@UisJAIrHdBP;*p
+CMRa'DJjB3EH-$u4TIVD3s7Z-3(lpC9)h<Y6iTOU77TfG6NBOL7JoUe6pj=277'C277Kd:77BU3
+6UguA!^oIGr^6ZWr_!8c9)VBg9h\2I6pj=07/]O^7R]d;84H*@8kDTHr(@#`r_:U3"BS]-=^(T)
+s',P.r`oG,qcj,*qE4X<of`FA5!Jd,s(D=E!,;FI!,MRM!c;aiqeZCPDf>Vo!-8!Y!-8$ZrcA-_
+qf_s_qKW-hI!kNds&K(upeq/lr_rSip/1ifs+<4_KnbA=M2@.LN/is[OHPcjQ'IZ&R$jD4S=Q7D
+TV8'RUnjiaVl-JmWiE,$Xf\b0YHY79Z*O>7s0Vd5q6p:1!OfE0;uK\i<W,no;u`X8US=HUTV%gH
+S=?":R@'A.Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+:9%rIFlsrI4BerI4crr."j"JqEuS
+#)%\aL5(J>reY?HMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0&]
+]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdtf@S^0g>(N?hr*GOioB+]k2tjjl07L!m-O--n*fc8nc&(\
+oCV\Sp&F^cp\jmdq>^<gqu-HkrUKl<s2"_c~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0lg!a!kN:pfrlk>c"jYH@d>3VS
+M=uc(M><%tM<BcnM$/^cda6>>c3DP;bf\&KaSa*X`r!gUaT'?_b00Y+!mJj2rlY8_s2Y;_`lH*r
+M?&M4MZ/M6MZ/P4N;gQc]a&_6OI`D]_o)AgqnW?L_85l,o"G4>^:Zo67f,^T8H29[9)hQa9`7]c
+:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=?!^lF?t'%D"_2(SAS,TSBFeflCMRa'DJjB3EH-#?
+FEI@Y!EN+s;Zp'"T:__SSHG@MS"&W0!1NnV"eD9XSt;MPSd:sZSt;RGStM2EPQmD>R$a>4SGo)c
+T:VXITqS9[WW&psX8o=#Y5k`GYQa.NkNM0qrp0LKrU'CKr:'`Lr/q#B!L&]APPgXFQ2HsEQ,N\&
+_t1h=_uI[K_tLr'JV/T.KnbA=M2I4MNK0']OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6SpWiN5&
+Xf\b0rilF-!4)R0s0Vd5q6p5$r4qC.s.ga3U7n9RSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M#iEfre:H-K`6W(K)^E#JGt&tIe%pdIf=iqJH(3#K)UB'KSBD[A;>ttM2I4MN/`jYO-#NfPE_>t
+Q^F//S"#t?StMdNUSO``Vl6VqX0&M-Yd(L?[C3QS\[oGd^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE.%
+f\,!5gtgiEi8EVTj5f=ak32'olKeH9$gmBNn*ol;o()DDo`"O`pAamcq#C0hqYU0gr;HTbrdk*c
+s*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0lg!a!kN:pfR@3r>"IY^ICi&rb
+qJ>8/qJ>Y<rG;.Bs-s%WrgE_Pl^%X>QggCAQN3?JD>nGMD>\5MPl?jHP5:@I@r$.4K8YnUqigo?
+rfR1tqeZ=LnrNs7OH2j07f,^T8H29[9)hQa9`7]c:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=
+?!^lF?t'%D"_2(SAS,TSBFeflCMRa'DJjB3EH-#?FEI@Q!DQ2b9E@d\r-JEkrH\Hhl[&SVrH\]q
+I!g9eH@(#<H4#"FH@1'dEH-#?FT-FbG^4T6H4,"FH[:$dIXZcsJV!cO"+u8[K?&]GWWK6&XST(!
+Y5b^*Yl(d%Z3%@MDZ+GOD?4ZnpM^"Ls)J!Vr,MaW#KFg*aN)BCao0B^bQc>;cHXY[c2Q#gchu2j
+d/DAkdK%bneGn)!f)O>'f[naSf`0V)POk%2POt+5P;@cBK7nr5LPUeEMi<XUO-#KeP*D5sQ^F//
+S"#q>StD[LU8+N[V5C/hWN)u!XK8P+Y-7i/s02R0rNlO2rjDR1r;ZAMm?.FE+/>R(TqJ!KSXc1=
+R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1,uJ,XofIK"]pJ,OotJcC?$K)pXZ
+re=s=Ll$tGMi<USNfT6_P*2#nQ'I]'R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn
+^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8LioB([jlY^hl07L!rp1$[mdKW6naZ2@oCMVR
+p&Facp\jmeq>U6fqu-HkrUTr=s2"_c~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0lg!a!kN:pfr_ikt<E8rrs#g*?
+p,qn/rB0I/pcS.0!'KsOpeUc^qG7,fpJLc`rDE/LqEFOI"\D?\:/Fja<VTSp4nq5?<W#hj;ZK8c
+7f,^T8H29[9)hQa9`7]c:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=?!^lF?t'%D"_2(SAS,TS
+BFeflCMRa'DJjB3EH-#?FEICC!BrXE3s%H)3VuGL9)_KI9)M<`9M8"S9E%Wb9ajZ^6psI377B[7
+6UXBB8H20\8P8tR"%l3Z9`@]_9ug$.=8uA(=^##)>P_V)>Pqb+>Q6k_497T-qE=[=!^Ak4pcemF
+B4kmkrb;FKqeZ.HrGM^UEW1"]EcZ8ArH%s[!-S0^s*+Kf"aP?;H$O`7HiR1<<rZ2"<;9Al<;ohk
+;YEsDJV/T.KnbA=M2I4MNK0']OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6SpWiN5&Xf\b0rilF-
+!4)R0s0Vd5q6p4/pJ_#ipJq,jr)<Wk+/>R(TqJ!KSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5
+Lkkta!JQ4+KE$Q'Jc1,uJ,XofIK"]pJ,OotJcC?$K)pXZre=s=Ll$tGMi<USNfT6_P*2#nQ'I]'
+R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-
+g=tE=hV[8LioB([jlY^hl07L!rp1$[mdKW6naZ2@oCMVRp&Facp\jmeq>U6fqu-HkrUTr=s2"_c~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(&%=no^qbGo'u5<n*]T0lg!a!kN:q)bl5igcHji9M"QW!
+M#E2*MX62bM?\oC>h.?PdJhJlc3;J:bK@rJouI!Os2b;abkfQcbfe3/b5]Q`aSs3^Mi*CMpko$.
+rf$l8rP%s<"`f0SS>`mq_u%=F_>]JnO8b4@OnZTi^&PbD7f5dU8H29Z9)hQa9`@cd:B+,h;#aAm
+;Z9Sr<)lrt<WQ9(r`K8*>Q.k.?!dM;"^kbJ@UisJAI2s]BP;*pCMRa'rb`']E,fl<F*)MHG'EXZ
+!EE%o;[ZK&<)Z^p<)lmr<)icor_`_pqbdi";c?[p;H$V!DhXXMrgj"Zs.B:^"ehT^Uo1-iWrB(#
+X02H*!3X,AroO1Bs5sOKlK[^$rTsLMs6f^Or:'THrfR2Cs-*JIqNLiA!L8uLQiE?QQ,q%cs8Kq-
+`9kJ?_>qLK_CpFjK7ei2L51SAMMmFQNfT9aP*;,qQC!u,R[]h<St;UKTq\<XV5C/gW2ZesX/u<&
+!NrX*YlCs.ZMh-/[/IE0[f-7$_!&NV^8.NuTqS*MSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi.Lj
+#)J%hL4t>7re(6&s+1-!s*surnU:CcrdXlss+(0%re(6("GMSbLPYqdA;Z;(N/`mZOHG]hPEhE!
+Q^F20S"-%@T:hmPUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZd*^:keCE1&
+g"P07h;-rGi8N\Uj5oFckNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0iqYU0gr;?Nardk*d
+s*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(A@Foo^qbGo'u5<n*]T0lg!a!kN:orrgE\Os-`k&pMKbC
+kA0^+p20\CqJ-4>>b%:QqjIMQrKuo;pm;&Lqj@ALrbhFH!,h[N!,VUuoofSgC3"WOM37_!qih#B
+rK6nmrbV7hs,[+Jr($`Ws%3,\s%EAcr_<Dfs%iVjs%rbor_ikt<E9$!!EWD&=TM]1r`fJ0?N+:8
+?t!MR@q>RM$"dg`BPD3sCM[keD@1<$EH-#?FEDYKGP+Z/9)qZ`9*e6b9M.rN9M8"W9DqK^8bu$f
+8P;ZJ8P)QJ9j;:SH2)^bHiJBlIJnWpJc13#KE$T)K><3=WWK6&XST%!Y5PR$Z1tWtDZ=YTE;=GF
+E!(*DP/dF@!6P5_#Kt?8c-=PYcMl)gcMu2nd*^7fdJhMldJqYpe,Rnte,Ihsebn"sfDjM'g&@3-
+Pk1+8Pl-^FPk^FqJ:W?*KS>/9Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CTV8'RUSO``Vl-JmWiE,$
+riH4(YPtd+YlM*.Zi7?1[JRE2s7;?=OW^HpU7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M$AckL5(D9K`6W(K)^E#JH(,tIdqjcIf=iqJH(0#K)UE&KER!`L51TaM.DL%N/WaWO-#KeP*;/r
+QC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5Vcd:(feC<%#
+f@em3gYL]Bi8ESRj5]7`k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6Egs8)WirVZTlo)=4?
+_Z,,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(&%=no^qbGo'u5<n*]T0lg!a!kN:q);Z]ou<W5ts4S:l/
+4SV)<4RG6%4Sh,??!R;(rDEPjl;%CVpJLfas%rbmr]]p:r''XH#"M9[:/Fhfp/Urir]U'@qc3So
+rDWYar($`Ws%3,\s%EAcr_<Dfs%iVjs%rbor_ikt<E9$!!EWD&=TM]1r`fJ0?N+:8?t!MR@q>RM
+$"dg`BPD3sCM[keD@1<$EH-#?FEDYKGP=6(5<Cth4?NL(!':*@#Wat*3]]8]3&pappcApG4#o;^
+3]TAh6psI47f,aU7fZ0Z8HDFWrC[,ar(Xt%r)`l"s&f>*q-3Z"!*fD,r`f1]rB1*Cs$$9Br''m?
+s%WN+"DDLaC2<Z^r+uFOrbhpYEH6,Ar,VdXs)e9`s)nBbrHA0brd"Khrd+Wmr`/Pjs&K(upeq/l
+r_rSipe`\pJV/T.KnbA=M2I4MNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnsrdVl6SpWiN6#XT>T.
+rilF-!4)R0rj;X3qmQI1q,7;n;uK\i<W#hn;]qm2U7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3Y
+N/NSmM$AckL5(D9K`6W(K)^E#JH(,tIdqjcIf=iqJH(0#K)UE&KER!`L51TaM.DL%N/WaWO-#Ke
+P*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5Vcd:(f
+eC<%#f@em3gYL]Bi8ESRj5]7`k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6Egs8)WirVZTl
+o)=4?_Z,,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI<(p@e1Po^qbGo'u5<n*]T0lg!a!kN:n'bl5iecK^8bM#E2(
+MX-,hMAD,-MI'Rne^`0udEp4ccHa\YbK@rJaS*[SaSa-\bKTk.s3(JdrQ5,^rlFek!/g]4!K;s8
+N;UE_]a2>]AUTK(V6e#:`;[XK_>M+JNW>.>OT(C<^&l!\]`(Cu8,c'Z8c23\9E.]a9`e'c:]=2j
+;#jMn;u]es<W6#1='/R-=^#!5>[1Q@?=.&I@K'^>@q9.^AnV*V(27N!CM[j*DJsK5EH-#?FEDYK
+GB\:Wn5L*%<)lms;,L7i;H$Ik;c?[s<`N*srDESm#@;+fLR=m6VuEXpWW0"!Wr/suWrfB)Y5PQ5
+Yl<_`jo4BGkNV6rlKeH9qs=COq="7NqNCl@"-Se0P5UUDPkpUBPQI,9Qi5#*`rO3$s89e2`9+u0
+_Z,-BJV/T.L5(J>M2I4MNK0']OckonQ'Rc(R@9V8SXuIHTqS6WUnsrdVl6SpWiN5'Xfeh1rilF-
+!4)O/rj;U2rO2\)ot]t0s1TVOUS=HTT:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/W[PreUZ3L]3#/
+KnTGXs+:9%rIFotrdO<ardOlsrIFp!s+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u+R[]e;
+St;UKTqeE[VPgAmWiN8(YHY:;Za@0M\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1gYCW@
+hr*GOj5]4^k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmdq>^<gqu-HkrUTr=s2+ed~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqIB*p@e1Po^qbGo'u5<n*]T0lg!a!kN:lqRf8`QR/CdmD>J)6
+C[l6:D>%cK?<pg+SGerTRfAcUR/30LR/307Qi`UkD>nGED#eJQD>]XkP6dCS=D2YuIts*]P5(7@
+P5^U@D>e;GOT1C@7f5dU8H29Z9)hQa9`7Ze:/=[b;#aAm;Z9Vp;ufqt<Y/>7=BSd1>$G6:?!^iE
+?XR=A@Kg7PAS#Idrb*']C27U$D/O60E,]f:EcZ>EF`qtQG^8dP"AMQa9M>@Ys%E8`rCm;d9)D0a
+;-.+?G^b,@J,artJGt,rK)L?$KXZ[3WWB0%q5jY"ric@+r3?%&oPXVGrc%^PqJcCsrfR?(aiOJ'
+s2tAbrlkSkc-FSXrlkPjd*U2;d/D>ldehMne,\%rf)F;$f`0Y&PPUO<PPp[APPUO9PQ-.hJV/T.
+L5(J>M2I4MNK0']OckonQ'Rc(R@9V8SXuIHTqS6WUnsrdVl6SpWiN5'Xfeh1rilF-!4)O/rj;U2
+rO2\)q2kQ;!0HW2s,\A!US=HTT:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/W[PreUZ3L]3#/KnTGX
+s+:9%rIFotrdO<ardOlsrIFp!s+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u+R[]e;St;UK
+TqeE[VPgAmWiN8(YHY:;Za@0M\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1gYCW@hr*GO
+j5]4^k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmdq>^<gqu-HkrUTr=s2+ed~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI<(p@e1Po^qbGo'u5<n*]T0lg!a!kN:n&;Z]ru<9l^B4S_/<
+4RG5u49Str>Yn8n;>j>W:]F8d;>F&g4oRY84o[_7:]Eie8P;cQ;H36fqH!SYqEF^Ts&8tsr^QfU
+r^d&\r(?u^s%NAc!_uNer_WVl!)ieps&8tur`0S3=BJ^/>$>-8>[:ZB?XI2LraH%@A7]=aBDuQ[
+BkhF!Ci+'-DfBZ8EH6,BFEMbNGBeE&4T[l355[MB3rD&B4[2.p4o.5E4[;>%7nH;M8cVN`9`%H_
+9_D,m:AIrk=T2G'>52=p>lIss4oRYA4oISD5Pn+[9k\6UC27X$C]/)HD>nGUE,ou?qf;XV!-J*\
+s)nBdrcnEfrHeKj!.=]Do2YchpJV&kr_rPhqbdBD1P(12KSG5:Ll%"IN/`jYOHG]iQ'IZ%R$jD4
+S=Q7DTV8'SUnjiaVl-JmWiE,$Xf\b/YPtd+YlM*-Zi7?0[JdN6Zi7?.;uTbr<<-"m<W#hp;u]`<
+UnaZXTV%gISXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XocIK"]q
+J,OotJcC?$K)pXZre><GLl$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6
+ZEppH\%&u[]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uqf%8R-g=tE=h;@/KiT&tZjlY^gkiq?slg4!*
+mdKW6nF?MK!qZ'Vrq-?dp\4X]rqZTjqtp?irVc<dJcEUeJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!`ukN;WbrltJ#j,*>amYUIk
+(1:KU?!Pt2e^W$pd*U+acHXSVbK@rJpW*-P!QrX_c2YufbPoZ`ao..tMY;u.N;S\4^@o5?^AbnH
+@g$t9U9D9.`;[[R_YCtH^]9DoO8G(:^&YhF7f,^U8H)3Z9)hQa9`7]c:&n)g:]aKl;Z9T"<)lq!
+<``@)r`K8*>Q.k.?!dM;-X^@l@UiqZAS#IdBP;*pC27U$D/O60E,fl<F)uGFF`qtQG^4U]Hh:;.
+;[uc0?Y4(nG^Y4%OHuH4WVirrYlE_\jSe6@kl9lKlKdd8m/-2Gn,2\QOoCOBOo:I@PQ-mDPQ-mF
+aSa*"s8'Y0`9+u2_CU1eJ:`E+Knb>;M2@+KN/is[OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6To
+WWoN*Xf\b/YPtd+Z2_-.Zi.9,[Jg-u_!\u:^)s)CTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!V
+Mi.Lj!JlO1L&m!]re(6&s+1-!s*t#smX>(`s*suts+(0%re#KLKnY89LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;1S"-%@T:hmPUnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:j
+eCE1&f\5'6gtgiEi8N\Uj5f=akNM0plKdg'mHs?1n*ol;o()DDo`"O`pAamcq#C0hqYU0hr;?Na
+rdk*es*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!`ukN;c5!1NnTrg<S!nSS,=
+m;)3-q/,qD"CPSC?!RB!qO@MRrgEPKrKl`8qeYe>s).^upQPQ?!0dC_"ClJ$L5l"loooB<r,)@J
+qiCf=r^QcTs%*,\rC[)_s%NAcs%WPirD3Pm;H!Km#?4]'<`W:'=T2G(>$Lu2!F9%2?RK5i@U`hX
+A7]=aB4tsmC2.O"Ci+'-DfB]9EcZ;DFEMbNGBeCZH@,9Xnk0Hd:K(:t?=IM\D/j]DI=_<LV1nrK
+po4=qpoOV#YHRr0r3?('!,qFGr,;USqJZCQr0.&As2bJdaiV]JbKTn/rlkAd"4#6=d/MAid/MGh
+dfn7Oe^i:$rmq)#rn%5(qNLc?plkW=qigl@p6.%WJ:N6(K8#&7LP^kFN/WdXO-,TgPa.N#R$a>3
+S"-(AT:hmPUSO]^VPgAlri-1'XKAV-Y-7i/s0;U0rNlI0q6g2$qN0s(rfA4rTqS-OSt;LCS"#k7
+R$X,(Q'@JqP*(ieO,f3YN/NSmM#iEfre:H-K`6W(K)^E#JH(,uIdVX`IfForJH(0#K)UCJKS>,7
+L51SAM2I4MN/`jYO-#KeP*D5sQC+&-R[]h<StD[LU84T^Vl-MoX/rG+YctF>['d?O\[f>b]tV7s
+_SX71`lH0BbKJ/Ucd:(fe'uq"f@\g2gYCWAhr*JQj5]4^k3(sml0@U$m-X3.n*fc9nac8BoCW%T
+s7ZKerV6EgrqcNhrqu]mo)=4?_uG5~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI?)p@e1Po^qbGo'u5<n*]T0lg!`ukN5Z?qc!Mokrni)p-&F<
+loX`""CPSC?!RA*qGI,dq+q#epJ1ccpJLfar]C*Amlg/9r_NSjr^6r]92/2[<)iKiqGmSrrB:$A
+qc*Vqr^QcTs%*,\rC[)_s%NAcs%WPirD3Pm;H!Km#?4]'<`W:'=T2G(>$Lu2!F9%2?RK5i@U`hX
+A7]=aB4tsmC2.O"Ci+'-DfB]9EcZ;DFEMbNGBeCZH@,9IniRCF5!M:u6:4./77Kg>8ke5=^J=c/
+q,dMts'#5&pfmf)r`oJ-lokA4q)n^ApItU$rbDFJrbMaTCi!s*DZ4PSE;OYRErL+^FEM_JrcJ9c
+GB`n.rd"Nj!.=WBo2YchpJV&kr_rPhrD>+qJ:N6(K8#&7LP^kFN/WdXO-,TgPa.N#R$a>3S"-(A
+T:hmPUSO]^VPgAlri-1'XKAV-Y-7i/s0;U0rNlI0q6g1-qc!JnoMtfgrDW\n+/5I&TV%gISXc1=
+R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]qJ,OotJH1<$K6`-(
+Knb>;Ll$tGMi<USNfT6_OckllQ'IZ&R$jD4S=Q7DTV8*UUo(&fWN*##Xfen4ZEppG[^WfX]=bhk
+^VI_'`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<:h;7&IiSrnXjQ5Oekiq?slg4!*mI'H3nF?&>o(2JF
+rq6<bs7cKes7uZjqtpBjr;H3cJcEXfJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.3'p@e1Po^h\Fo'u5<n*]Q/lg!`ukK_?NbQH,6bg$$BmYUn"
+r/'m"q2,'-rJC-'%UiaP?<u17f%&=#e'cUirm(eoc-4ARaiO>!rlFrX!R&^`bm)D8bKA#NanUem
+MYW21Muo!!^\bbE^&PhF^&G_J^V7Itrac%=")j!f\Ga>D`;RUQ_YCtI_#KJpO8tFBO9L]Z]tHm)
+qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT=]np4>?kE=?=$uG?t!JQ@Uiq[AS,Oe
+BP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQq5;[uo:ASZ:1I=mE=QCXbKYGAE#iW/$<
+j8e<@k5XWEkQC)7lKeE8r9XLPq=":Onr`m6pQGTtqT/QSaT)(RqS_O6pqet=It3'$K7el4L5:\C
+Mi<XUO-#KePE_>uQ^F20S"-%@StMdNU8+N\VPg>jWN)u!X/rG*Y-+u-YlD!.ZMV!%[/^1!_!\u9
+^AjlHTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]p
+J,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3
+Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.3'p@e1Po^h\Fo'u5<n*]Q/lg!`ukF7q>S,\rVRJLacD>\5=
+C\_fFD>e;BD$49T?X@%6SGSfURK/cOR/`N>QiNQQR/Uq&DZ4MMD"_]GDYfUsPQ-mHPPLFL=B8F%
+<aBQjN0O=*q3(E7s-!@uqJ6:rO,lb"qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT
+=]np4>?kE=?=$uG?t!JQ@Uiq[AS,OeBP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQY-
+9+F]p<a&g<Anc+%Fa8CdKVX>$W;`dmWrK+"XSJsuY5YX(Yl1j&ZMSS4DYJ)IPl?mDOoWZ(aTK]/
+bKTn/rlkAdqTo,es3Uqse'lbDe,.\pf)=2&f\+s3q31Z>q31]=qigl@pldXcIt3'$K7el4L5:\C
+Mi<XUO-#KePE_>uQ^F20S"-%@StMdNU8+N\VPg>jWN)u!X/rG*Y-+u-YlD!.ZMV!%[/^1&OQho+
+OT2!oTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]p
+J,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3
+Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.0&p@e1Po^h\Fo'u5<n*]Q/lg!`uk>V@Xs&/nsr_ql@pcS44
+r]L$=rB1$?o/m.a?sd5Gr)!)as%rPfr_WAcs%i_n;#*ue;"m'N4S:l;:@h9[;#X5j7K#UV77g3N
+rDW\pp/Uujs&JeWr`/tfqa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT=]np4>?kE=
+?=$uG?t!JQ@Uiq[AS,OeBP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQ+s4:XM<5<qM%
+6psI584cEH9]Jja:A\)g=8uD%=oV\$>PMJ'?2n10>Q6hJ4oA%L9`Jf0C2%EuC]8,RD/=$*D/T>k
+qJlISs)\3^!d/U,rcJ3arceBe!-eEercnKjrd=N@s&B%up/V)kpJV&kqc!8f2h$7,J:`E+Knb><
+M2@.LNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnsrdVl6SpWiN2%Xf\b/YPtd+Z2_-,ZhCd+ZM[Z"
+<:j2g<;fbo;ZEF1TV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!
+J,XobIK"]pJ,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrd
+W2cl!Xfek3Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5Od
+kNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q&+T/Xmd9B-lg!`ukKhGuc2Poec1QtjM#`G/
+M><&/MscJuM=6<*@UWYO?<mK]&D#C^eC)akdEp4ccHa\Yb/sP$rQ+iW!m8^1q9Ao_!6atlqhk6.
+!5JEF!58?Frk86D!5JKH!+Z"=s'l.DJ=*S2_u@OK_>]MpOSt4?7f,^T8H29Z9)hQa9`@cd:B+,h
+;#aAm;Z0Mp<)rous&T2&r`K8*>Q.k.?!dM;$=I:O@UinYAS#Idrb)ILC27U$D>nDkDfB]9EcZ>E
+F`hkOGBeCZH@($eI=6QoJ:LVh;[uo:ASZ:1I=mE=QCXbKYGnc+WrCrViVqg:j8S->jo=KBk61#5
+lK[^5m/QGRmd:#AqsXLQmudR3r0-uts2auUb5_4RqS_g>!5eTMqSG4?IXcm!JqJ`1L51SAMMmFQ
+NfT9bP*;/rQC+&-S"#q=StD[LTqeEZV5C/gW2ZesX/rD)Xfek2rilF-rj)C,q6U40s8Vf.m_A_7
+s.LF*T:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFlsrdO6_rdOls
+rI=s#JqEuS!JH1+L2Vj'M2@+JN/WaVO,oBbP*;,qQ'[l*R@B\9St;RJTqeEZVPgAlWiN5'Y->.9
+Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf%8R-g=tE=hV[8LioB([jlY^gkiq?slg4!*
+mdKW6nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?irVc9cJcE^hJ,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q&Fo8Ymd9B-lg!`ukF7s0R[a;Fs)%aOr+uFO
+q/$+Lmqr#>rbMOMoP=A@mqi5;@:3GK>kjfhS,SrXS,\oWRH0b7RK&ZJDZ+GMD#/#FPQ6pGPQ6pA
+PlI$K=T;J&<<H?9G_c6^rfd2AoTT;lqJ61L7f,^T8H29Z9)hQa9`@cd:B+,h;#aAm;Z0Mp<)rou
+s&T2&r`K8*>Q.k.?!dM;$=I:O@UinYAS#Idrb)ILC27U$D>nDkDfB]9EcZ>EF`hkOGBeCZH@($e
+I=6QoJ:L>`9+F]p<a&g<Anc+%Fa8CdKW0\*WrApqW;`dmWrK+"XSK!uY5b^'YlD!(ZMJM1DZ"GH
+Pl6gFOoibJb5TTablQ&5rQP;d"O>?>cHcC7rQkVndaJ-DrmV"ueC=KJrRUu#rn7A,pQPH<qigi=
+qigl@qNEmeIXcm!JqJ`1L51SAMMmFQNfT9bP*;/rQC+&-S"#q=StD[LTqeEZV5C/gW2ZesX/rD)
+Xfek2rilF-rj)C,q6U40s8VtXl&kq+s.LF*T:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PreUi8
+LPCP;KnTGXs+16%rIFlsrdO6_rdOlsrI=s#JqEuS!JH1+L2Vj'M2@+JN/WaVO,oBbP*;,qQ'[l*
+R@B\9St;RJTqeEZVPgAlWiN5'Y->.9Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf%8R-
+g=tE=hV[8LioB([jlY^gkiq?slg4!*mdKW6nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?irVc9cJcE^h
+J,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q%IrrVmd9B-lg!`uk>YCY;?9]qmQCP6of_q0
+p-%P#"_(nJ?X@"7;#O5k;Ys>k;#=#j:f1(dpJ:fcpeh&f!'Kg6rB0p>r_E,^rD<Ae!(6WO!_>s[
+qG[Amoi:ojpHARHqa^WVs%3,\s%EAcr_<Dfs%iVjs%rborDN_r<W6&!<rcA%=TM]1r`fJ0?N+:=
+?t!MR@q0%\AS,TSBE`*bCMRa'rb`WmE,fl<F*)MHF`qtQG^4U]H[L3hI=?ZrJ3EEb%R!!?5X@b*
+6q'R98P2WLj%[Qhs/PipqH*Yu!*T;)q-3Sus'>V.r]U3Bm61DCr([2ds%WDb"DVXbC23``rbMmX
+DJjB2E,fl:E;abVErL.ZFT-F]FoZabGQ;seGQrG>H[L3hIJ6\><;'>k<;0;k<;TVj;E0)RIt3*%
+K7nr5LPUeEMi<XUO-#NfPEhE!R$a;2S"-%@T:hmOUSO]^VPg>jWN)u!XK8P+Y-5&.YlD!-ZMLp'
+Zi[S=Z2IW#<:a,g<;]\n;ZEF1TV%gISXc1=R@'A.QBd`"PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3Z
+KE$N'Jc1,uJ,XoaIK"]qJ,Om!JV&LQK)pXZre>?HLl$tGMi<USNfT6_OckomQ'I]'R$jG5S=Z=E
+TqS6WUo(&gWN*##Xfen4ZEppG[^WfX]=bhk^VI_'`5Ta:aN;WKc-FY^dF-Lne^i@)g"P39h;7&I
+i8WeWjQ5OdkNM0plKdg'mI'H3nF5uIncJFTo`"O`p&Ojcq#:*hqYU0gr;HTardk*gs*t~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kg.W%ccs_YbjUGhM>E,0
+M>2u)Mti/0Mu&>.M=ZT=A7K(W?XI,Ef\"g-f%&@$e'cXjd/MAkc2u54ans-WaSO!ab0/#RcHa\[
+cMl&gbjLDgMYi;8^q[Uu^;'NY!58!<s()(<s'c(SOJot`_uIUL_>fPr7K,dR8,c'Z8c23\9E.]a
+:&drg:]4)k;,U<k;Z]ou<W6#"='5H)&6`:B>[1Q??=.&I@:<VS@q>RM.qWF-BPD3rCMRa'DJjB2
+E,fl<F*)MHG'8(RG^4U]H[L3hI=?ZrJ:W9'KD&4R=C5WTEHlnaMNF-pU8Y9!YlC^%W;YTRi;V^7
+irA'=jSn9@k5XTJkiq?slg+K8rpB[Pr9sURm#h70rlFQKbQ%7QqS_j?s2+WMr5/J^0n+V&JV&N-
+KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrdVl6SpWiN6#XoGO(YPk^*Z2_-"ZiC("
+_!\u8^)`o?T:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFlss*j<_
+rdOlsrIFp!!.t3&s+CN/L5(J>reYBIMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5L5iWiE/&
+Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF6Upf%8O,g=k?<h;7)JiSrnXjlY^gkiq?s
+lg4!*mdBQ4nF?MKs766_rq6<bs7cKes7uZjqtpBjr;H3cJcE^hJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kl%"NRK8nHp20YDs)%UM
+mqqf8oP=DApMC4I@q&kR?X@!.Sc,)WSc,)YS,\oWRHKt7RIY7fD<mG`Q2Oei=&r=$@rd0aqiq)D
+rfZf8s(h[(r^QcTr^d&\r(?u^s%NAcs%WPirD3Pm;H!Km!`W0"r`0&$=T2G7>$G39>[:WA?XI2L
+@:E\UAH$-jAnPdjBkhBuCM[j*DJsH4EH-#?FEDYKG'A.TH$Xd`I!g?jIXcluJUrE*p.Glj;H?t-
+@:j4jEHQPTJV:4\s/H!rrMKUmri#dpql0^uXK;3!s/u@)rNH:,q6L!;r,;:Hs)%^Prg!)>rK@9*
+b5TTac25`bc2Z&jcd'i7ci)5idf%VteC2mreG[qtecXOVf\-5Wooo9;qigf<qigl@r0.//0n+V&
+JV&N-KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrdVl6SpWiN6#XoGO(YPk^*Z2_-"
+ZiC()OQVc(O<($fT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFls
+s*j<_rdOlsrIFp!!.t3&s+CN/L5(J>reYBIMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5L5i
+WiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF6Upf%8O,g=k?<h;7)JiSrnXjlY^g
+kiq?slg4!*mdBQ4nF?MKs766_rq6<bs7cKes7uZjqtpBjr;H3cJcE^hJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-Ep#kZ(V^<;f_^4o.A=4n1Z5
+4TI\@4mtK<A7K(W?XI,EqbR8ir)3Dh!)WMf"&Mil;"mcc;#*rk:d$s(4S(Z54Sq;?:A7Q_;#!fd
+:B!TX6NfkN9i+a`;uTbh<W,tu4oe%N7f,^T8H29Z9)hQa9`7]c:&n)g:]aKl;Z9Sr<)lrt<WQ9(
+r`Ke9>?b?;?!UcD?XR;N@U`hXradTlB4tsmC2.O"Ci+'-Df9T7EH6,BFEMbMGB\:WH?spcI!pEl
+It3'#JV&OJ4:XM<5<qM%6psI584cEH9]Jjl:B.<mW;T`k<r,nt=9)M'>52=s>Qe>;>[(G04o7A6
+4oS7R:&n#c:B+&g9`Jc,BkmW_rbMmXDJjB2E,]f9E;abVErC(YFT-F^FoZacGlN!eGQE)9rd=`o
+s&A_kr`&Skr`&Acr)3QC0n+V&JV&N-KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrd
+Vl6SpWiN6#XoGO(YPk^*Z2_-"Zi@<1;uTbf<W#ho;uBN6TqJ$LSt2@?R[KP1Q^3o%P`q8nOcYWb
+NfB!VMi.Lj#)J%hL4t>7re(6&!.k*!rdXrsm!\k^s*suts+(0%re(6("GMSbLPYqdC5Rq.NK0'\
+OHG]hPa.N"Q^F20S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@[C3QS\[oGd^;%J"_Sa@3a2lBFbKS5V
+cdC.heC<($f@em3gtgfCi8ESRj5]7`k3(sml0@U$m-X6/n*fc9rpp*\!;-9`s7ZKerV6EgrqcNh
+rqu]mo)=4?`W(G~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kg.W&cd0k\onra,l&,(j
+oSWU(rJLK1s,%+oA7K(W?XI,Eg&9P7f@JO&eC2jndEp4ccHXVVaSj0WaSs<]b5]Qcb0/#Rqp#5e
+cK'ld_8*k$_#;%B^AktF^AkqJ_#7dCAH-0>@KUS)TXaF-s2+TJr^QcTs%*,\rC[)_s%NAcs%`Si
+r_WVl!)ieps&8tur`9&#!*K5'!Er_,>QJ,:ra,\6@K'^C@q9.^AnG[hBPD5\CB\NkDJjB3rc&*^
+F*)MHG5c[mG^4U]H[L3hI=?\FJ-LRVK7ei1L&=jZ=C5WTEHlnaMNF-pU8Y9'YkY-nhuDX6iW%p;
+j8S->jo4EAkl9lKlKdd7m/?>MmeuVQnElA<Oo^]cq8i-IbQ$D9o>3>2I=6QpJ:W?*KSG5;M2@.L
+NK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnjibVl6PnWiE,$riQ4'!3c@*riuI.o<\JspqZ=4qn=&B
+St;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFotrdO0]rdOlsrI=s#
+JqEuSDhNh!L51P?M2@+JN/WaVO-#KeP*;,qQC!u,R[]e;St;UKTqeE[VPgAlWiN8(YHY:;Za@0L
+\@K2_]Y2(p_8=(-`Q#s>aihlPcHjkbdaQ^rf%8R-g=tE=hV[8LiT&tZjlY^gkiq?slg4!*mf)YU
+nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?ir;H3cJcEaiJ,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kkpqMRe:O`DXMB:D"qf@
+D#\>XARo:[@:*AJ>kX`eSH#&[R[KT.R/<<KD>%l?D#fjfPkgUC=8uD&<s;W)?>b1Mrfd>GlBD3:
+qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!s&T2&r`K8*>Q.k.?!dM;!FT@8@L?UUAS#Ic
+B4tsmCAquPCi+'-DfG\q"`e[+FEMd+G7&S?H?spcI!pElJ,Xs&JV&N,KS5'W9+F]p<a&g<Anc+%
+Fa8CdKXHO/Vu*@jVuEXoWVidrWroH*XfhN&s/u=(rNQ+'q/-1Nrb_^Sphg+LPkgU9PQd8nbKJ,S
+rlkDcs3(Jfqp,/drm1YmrmL_n!7Lkq!7_"us4.5&f`'S'g&TmtPkgO;P4=_mH[U<kJ:N3'K7nu6
+Ll$tHN/`jYOHG]iPa.Q$R$jD4S=Q7CTV8'RUSO]^Vl-JlWN)u!XT#@%XoP[(Yl:p,ZLbF&s8S2[
+Oo:I2Oo(4[T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3ZKE$N'Jc1-!J,Xo_
+IK"]qJ,Om!JV&LQK5ZEsL5(J=Ll$tGMi<USNfT9aP*2#nQ'Rc(R@9V7SXuFGTqS6WV5C/hWN*#$
+Xfnt6ZEppH[^`lZ]=bhl^VRe(`5Ta:aN;WKc-FY^dF-Lne^i@)g"P39h;7&Ii8N_VjQ5OdkNM0p
+lKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0iqYU0gr;?Nardk*hs*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kl+T^<<#kc4oIM@4oISB
+4mG/q4o[VMARo:[@:*AJ>l7Ft;>a>i;?'Ji:BOEj;,I3es%rVh"&Mil;#F/j4oIM548qA?4oA(N
+:]+&b:]4&g6i04M6N]_J9i(ac!)iSjr`&Sks&T+gqa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr
+!*0#!s&T2&r`K8*>Q.k.?!dM;!FT@8@L?UUAS#IcB4tsmCAquPCi+'-DfG\q"`e[+FEMd+G7&S?
+H?spcI!pElJ,Xs&JV&N,KS5'W4:XM<5<qM%6psI584cEH9]Jjr:AC^e<;]bk<r5tu=T2J&>5MM)
+>[.,2!*fA+r`f1]q)nU=s#pHH:AI]W:'OF+BPD3sC]8,PD/O60qf)LR!-8$ZrcJ-^s*"Ed!-nEc
+"*f*;HiAElI0*DJ<;0>f<;KVo<:*U@H[U<kJ:N3'K7nu6Ll$tHN/`jYOHG]iPa.Q$R$jD4S=Q7C
+TV8'RUSO]^Vl-JlWN)u!XT#@%XoP[(Yl:p,ZLbC*Yd%,+<;ons<qo\m<;]\l;B2=#St2C@S!ob4
+R$X,(Q'@JqP*(ieO,f3YN/NSmM$AckL5(D9K`6W(JcLB#JH(,uId;F]IfForJ-(:RK)UC@KS>/8
+LPL\BM2I4MN/`jYOHG]hPE_>uQ^F20S"#t?StMdNUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_=u
+_SX71`lH0BbKJ/Ucd:(fe'uq!f@\d1gYCWAhr*GOj5]4^k2tjjl07L!m-O--rpKmWnc&(\oCV\S
+p&Facp\jmeq>^<gqu-HjrUTr=s2P(h~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-<j"cHjh`d*L#9MuSb6MuS\2
+MsQ>rMZA_6Mt;f+M>W80MuS_EAn>L_@UWVN?<l4;g&BV0f@JO'eC;sqdJhJqcd'bXanWsWao'<]
+b6#o4c2Gofch`UcMuUWm^]M?f_#1qI^AP_I^;%G\^&c!arPADArFGq<")<CTZ2MT>_Y1nD_Yh7J
+8,l-Z8c;9]9E%Wa:&dug:]=2j;?'Pn;Z]ou<W6#"='5H)'j=gG>[1Q??=.&I?t!MR@q0%\AS,TS
+BF8HgCMRa&D/O60E;jhoEcZ>EF`qqPGBeCZH@(!dI=6QoIt3'#K)UB'KSBD[%YojsM/dcgK8PbV
+SYE'd^T[^7o;2SchVS.erS[\6s5O"<s5j:Cs6'CF!U8nKli-8LmJQDOn,;bPOoLU;Onm&paRdHs
+rrC!n_t1`,I!pEmJ:N6(K8#&8Ll%"IN/`jYOHPcjQ'IZ&R$jG5S=Q7DTV8'RUSO``Vl-JmWN)u!
+XK8P+Y-+t3rNQ:+r3H1*rNZG'p;$14qn=DLSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PM2@%E
+LPCP;KnTGXs+16%rIFotrdO0]rdOlsrIFp!!.t3&!JH1+L1Z3sM2@+JN/WaVO,oBbP*;,qQ'[l*
+R@B\9St;RJTq\?YVPg>kWiN5'Y->.8Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF-Oof%8O,
+g=k<;h;7&IiSrnXjQ5Oekiq?sli-5YmI'H3nF?&>o(2JFrUg6cp\4X]rqZTjqtp?irVc<dJcEai
+J,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-<j"Rf&WTRdk7\DY7iHDYJ#C
+D#8#FC^OccA7K(W?XI,ET(\`RS-5=MR[KT0R/<<CD>S5FD?#n#PQ7!>PkgUCQMsq`=8uD&<s)Z@
+G_kaNpQGGEs%*,\rC[)_r_3;cs%`Sir_WVls&/hp!`W0"r`0&$=T2G<>$G39>[:WA?XI2K@:E\U
+@q9.^AnV*V$>F6jCM[g(DJjB3rc&cqF*)MHG'8(RG^4U]H[C-gI=?ZqJ:N3&rdt6)L&Qf:LPUeD
+?=@G[D/j]DI=['dK`It@V?!IlV?!IkVZ!FlW;ijoWWB0%rN-(&qlTn$qlg%(!3uC+rbqIIrbqdR
+q3:cAo9B3trQG5b!6tMg!6tMgrQbPldF%sArR:bo!n5ZKrm_,%f@S[Sg&Kb,g"PnZqig]9nrl._
+I=6TqJ:`E+KnbA=M2I4MNK0']P*2#oQ'Rf)R@B\9SXuIHTqS3UUnsrdVl6SoWiE,$XKAV-Y-5&-
+Yl:p*ZMLp+Z3(&fOT(C<P4Fb4O=$TkSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9
+K`6W(JcLB#JH(,uId;F]IfForJH(0#K)UB'KSBD[Aqu2!M2I4MN/`jYO-#KePE_>tQ^F/.S"#q>
+StD^MU84T^Vl-MoX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#RcHjncdaZdtf@S^0g=tH>
+hV[8MioB([jlYail07L!rp1$[mdKW6naZ2@oCMVQo`Fj]p\jmdq>^<gqu-HkrUTr=s2P(h~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-<j"<;fet<)`ZXof`"2qE<n%
+n3%(iARo:[@:*AJ>l7Cu;>F,f;?'Ji:BF?i;>X2e:]4,i;#jGh4oRS63rhDB4oA(O:\mob:\dca
+6iKFP62s7S6UsgG;Z0Jm;YX2i<;'>i8,l-Z8c;9]9E%Wa:&dug:]=2j;?'Pn;Z]ou<W6#"='5H)
+'j=gG>[1Q??=.&I?t!MR@q0%\AS,TSBF8HgCMRa&D/O60E;jhoEcZ>EF`qqPGBeCZH@(!dI=6Qo
+It3'#K)UB'KSBD[%YojsM*XKs6q'R98P2WLj%\?)!2]:a!2]WnrDiVnrDs)'='/T&=oV\&>Ph\)
+>Q.n+>P:5T49.P?:ARcY:&o#-CB&,MD?"JRDuO\UDuO_UEW:(XF8g:\FoQX`G5ugcG6<)9H[GX;
+"BJN&<)iTjqGd;kr`&;a4+)I)It3'$K7el4LPUeEMi<XUO-#NfPEhE!R$a;2S"-%@T:hmOU8+N\
+VPg>jWMuntX/rD)Xfeh1YPk^)Z2Cp(Zi.03Y>\D"r`/eqr)NYor)<Jj-D-m$SXc1=R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl[Ab]s*suts+(0%rdt6)L&Qg=LPUeD
+MMmFPNK0'\OHG]iPa.N#R$a;2S"-(AT:qsQUnjlcVl?\sXKAY0Yd(O@[C3QS\[oGd^;%J"_Sa@3
+a2lBFbKS5VcdC.geC<($f@em3gYL]Bhr*JQj5]4^k3(sml0@U6ljN4Kn*fc9nac8BoCW"S!quB_
+rV6Bfs8)WirVZWmo)=4?`rCP~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqIE+p@e1Po^qbGo'u5<n*]T0lg!a!c-FY]d*V]Kpl+s*rJLQ3
+!/gc6!/g`5!/gQ0q2G*,!K)g3MZ/MFN+cm:ARo7Z@:*AI>h[obg&BY(f*9gVeC;sqdJhJrcd'bW
+aN=8!s2k5^s3(Dc"3o-:ch!+bMuUWp_8-&drP/]T^qd_#^q[Y"rkJHH!l)OdrPANL!P`+CA,Ts<
+AcH9DAUKZ@_Z%IM_YV1K_>qFL_>qFO8,c'Z8c23\9E.]a:&drg:]4)k;,U<k;u]es<W6&!<rcA%
+=TM]1r`fh:?=$uG?t!JQ@UisJAH?CUrb)XQC27U$D/F0.DfG\q$?C30FEMbMGB\:Wrd#<+I!pEl
+IXcluJUrE*K7nr4L5(J=M#N53MMqIm!N3*AYPk6bU]B6LhYc:/i;_d9iW/$<jT"?Ak5FKBkl9rI
+li-8MmJH>On,;_UOo:C>Oo:I?On?ZoaRR<rs8Ksn_t:f"H[L6jIt3*%K7nr5LPUeEN/WaWO-,Tg
+Pa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWW&n!X/rE%XTGZ/YPbX'Z1bL%Z1l'4^]2%A^\Y\ESg0er
+S"#k7R$a5+Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;KnTGXs+16%rIFotrdO-\s*jutrIFp!!.t3&
+E.iq!L5(J>M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Xfnt6ZEppH[^`lZ
+]=bhl^VRe)`5Ta:aN;WKc-FV]dF-Lne^i@)g"P39h;-uHi8N\UjQ5OdkNM0plKdg'mI'uB!V#XY
+o)J:]o`"O`pAamcq#C0hqYU0hr;?Nardk*is*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!a!R[X2El>>s,phfhEphfY>
+s(DdPARo7Z@:*AI>b7P\Sc5/ZS,\rVRI$=>RJh$mD>J/LD>oe#Pl?sHPQ7!GPkLC=QMOY^=8c5'
+B6Aiinrrj3rf[>Fr^ZrYs%3,\s%EAcrD!;e!)NPi!`;inr_rhr!*0#!s&T2&r`K8*>Q.k8?!^iE
+?XR;N@U`hXrac+BBDuQOBkhF!Ci+$,DJsLnE=-`-FEDYKG'A.TH2`+)H[L6iIXZcsJ:W9'K7ei2
+Knb>;LPYqd!K)g7MueH]aFsMem\KlZs/,gmrhfUkrhogrqPjRsXSo:$Y5GF$Y5>C(Yd(J2Z2q:L
+r,;7Gs)7Oo!1!)=!mJj3rQG5b"O56;c-?75rQbJjrmC_n!n5TFrmLhq!S#[!f)F;#f_sLkPl$[;
+P4OkkH[L6jIt3*%K7nr5LPUeEN/WaWO-,TgPa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWW&n!X/rE%
+XTGZ/YPbX'Z1bL%Z2Kg\P4Fb3OT1msSXc1=R[KP1Q^3o%P`q8nOcYWbNfB!VMi*@JLkph@L4t>7
+re(6&!.k*!s*t#sl@&\]s*suts+(0%re#0CKnY89LPUeDMMmFPNK0'\OHG]hPa.N"Q^F20S"-%@
+T:hmPUSO``Vl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u_Sa=2`lH0BbKJ/UcHstee'uq!f@\d1gYCW@
+hr*GOioB+]k2tjjl07L!m-O--rpKmWnc&+Zo)SF^p&Facp\jmeq>U6fqu6NkrUTr=s2Y.i~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!a!<)ifro03(8o/uh3jZN3!
+s(DdPARo7Z@:*AI>Z"As:]OAf;Z0Jl;#F)j:f1*e;#*lh:f1%Or]C'@q`Xm?oK3"Hq+pf_r(m&^
+!DPoX6iTLP5mBYE8ki2^;Z9Pl;YX2i<;KVo8,c'Z8c23\9E.]a:&drg:]4)k;,U<k;u]es<W6&!
+<rcA%=TM]1r`fh:?=$uG?t!JQ@UisJAH?CUrb)XQC27U$D/F0.DfG\q$?C30FEMbMGB\:Wrd#<+
+I!pElIXcluJUrE*K7nr4L5(J=M#N53MMqIm!D?,-:&UjUV#"'i<VTVo=8Z1s=TDY%>Pqb)>Q.n,
+>Ot#T4S2DF:]F2f:]=,gCB&,MD?"JRDuFYTE<'tVE<(%YF8g:[FTQc1FoHR`G5upfHN&9jI/[1H
+<W?%m;u0Ji<W5te;_WQGI=?ZrJV&N-KnbA=M2I7NNK9-_P*2&pQ'[l*R[]e:St;RITq\<XUnsrd
+Vl6ToWWK6&XT#='Y-5&,Yl1j#ZMh'.<<#to<r>tq<;]\k;ZE=5SXc1=R[KP1Q^3o%P`q8nOcYWb
+NfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl@&\]s*suts+(0%re#0CKnY89LPUeDMMmFPNK0'\
+OHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u_Sa=2`lH0BbKJ/U
+cHstee'uq!f@\d1gYCW@hr*GOioB+]k2tjjl07L!m-O--rpKmWnc&+Zo)SF^p&Facp\jmeq>U6f
+qu6NkrUTr=s2Y.i~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!`Xbg"J\chiXkN:`&*N;eb4
+N;eb+N;/>1MZ8SHC1q6lARo7Z?sd8H>hdudg"HAWs47J+e^W*tdaA'@"jbH;b/qd%aT'B\b5]Za
+bl>ofcKgG_MZL`4qnW9Jrk\WMs2"WKr4`6Ir5&BJ$,=9k@:3JP@q0'GAHR.9Uq6NBpqm$JrkeQK
+!l@Gtr^d&\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`08*=BJ^/>$>/0>QJ,:ra,\6@K'^:@q>RM%
+q]HfBPD0qCMRa'D/O60E;jhaEcZ>EF`qqPGBeE4H3&A?rd=frJ,Xs!JV*lR!JH1+L'NKiLl$tGM
+MqIm!f`5#rf7,BOcfX+s-!GIlE:2Yr1<kZrh0"Zo:c?Agt^`ahYl@0i;_d9ir8!<jT"<Ak54?Ak
+Q'lHlMp2Mm/HDKmJu_SnG\RHOSP"=aRdIN`q.6ss89gn_t:f#H@($fIXcm!K7ei3L5:\CMi<XUO
+-#KePE_>uQ^F20S"-%@StMdNU8+N[V5C/gW2]cr!irE(riQ4's0)=(oWeA!pqZmDqS)g@qS"8IS
+Xc1=R[KP1Q^3o%P`q8nOcYWbNfK*XN/NRMM26tCL5(D9K`6W(JcLB#JH(,uId2@]If=irJH(0#K
+)UE&KER!`L51TaM/8'-N/WdXO-#KeP*;/rQC!u,R[]e;St;UKTqeE[VPgAlWiN8(Y->.9Za@-K\%
+0&]]Y2%o^qmn*`Pom=ai_fNc-FY_dF-Ooe^rF*g=k<;h;7&IiSrnXjQ5OdkNV6rlKdg'mI'H3nF
+5uIncJFTo`"O`p&Ojbq#C0iqYU0gr;?Nardk*js*t~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!`&R@9S6S)S;TDY@rBDYS)H
+C_(8oB4b^c@U`_P?X6p/St>bKqjd\Us-a"WR[X5Dqj7AOpmD#JphoM:r,2=q!0mJJr06r@qN_;O
+QC!q?=8Gts=8uA)A9*6^nWWa2!g?,Er^d&\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`08*=BJ^/
+>$>/0>QJ,:ra,\6@K'^:@q>RM%q]HfBPD0qCMRa'D/O60E;jhaEcZ>EF`qqPGBeE4H3&A?rd=fr
+J,Xs!JV*lR!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-!GIl@]/.r1<kZrh0"Zo:l2Zs/#am
+rh]XlrMTUm!3,ps"fnZ'X/rE%Xo>L$XoGR$Y5kg+Z2V'/ZN=u]DYe;IDW$cZb5f]abQ#fdblZ28
+c2Q#eci)5fdJhPre'upurRV##rn.2&mZdU4o9/d10m\1oI=?ZrJV/T.L5(M@M2R=PNfT9aP*;,q
+QC!u,R[]h<St;UKTq\<XUnsrdVl6ToWWK6&XT#@%Y5b^&Yk54!YlBj\P4Fb3O<pKhS=?":R@'A.
+QBd`"PEM)kOH5H_NfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl@&\]rdXots+(0%re(6("GMSb
+LPYqdCl4.0N/is[OHG]hPEhE!Q^F20S"#t?StMdNUSO``Vl6SpX0&M,YctF>['d?O\[f>b]tV7s
+_8=+/`Q-'Ab0/#RcHjncdaZdsf@S[/g=tH>hV[8MioB([jlY^gl07Kulg4!*mdKW6nF?MK!qZ'V
+rq6<b!;HEds7u]kqtp?ir;H3cJcEgkJ,~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!_5;cH^r<U;pI4o%524oRS@
+4mtN24Ul.>B4b^c@U`_P?X6o5qbd)cs&&\jr_NPjr_`SirD3>d!`(p@pH/@:qE=g?q)eRNrD*Di
+rD38dqbQr]"&2Nc62j4I6OlFK5sn1::f:4j;Gg:h;Y*id<!$&i8,c'Z8c23\9E.]a:&dug:]=2j
+;?'Pn;Z]ou<W6#(='/R-=^#!5r`fJ0?N+:4?t'%D!Fo[>AIiBcBP;*oC27U$D/F0.DfG\q$?C30
+FEMbMGB\:Wrd"TlI/\NpIXh?I!J,k%K)pXZre:Z5LkpnEMMd>kMuo!!NrG(@OHG\)P5g^GPj1sC
+Sc#)XTDkMXU%>#P<<#to<rH+u=SZ)">5DJ&>QA(->Q7t,>Q-bV4TIV4:@q<a:hjc^rb_[Qs)7mU
+!c`0urGhdVrcA'\"*Jd1FoHRaGQ2pdHN/?kI/I%F<W?%n;u0Jh<W5tg;_`TFI!pHnJ:W?*KSG5;
+M2@.LNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnjiaVl-Jmri-%#XK;E's/uC*qlo^trNH?&<E8iq
+r)NYor)<Gi-(^ZtS"#k7R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnY3ZKE$N'Jc1-!J,Xo^
+IK+cqJ,XuuJH1<$KE$T-Knb>;M#N6IMMmFPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnsrdW2Zet
+Xf\b1Yd1UB[C3QT\\#Mf^;%J"_Sa@3a2lBFbKS5VcdC.geC<%#f@\g2gYL]Bhr*JQj5]4^k2tjk
+l0@R"m-O--n*fc8nc&(\oCV\Sp&F^cp\agdq>^<gqu-HjrUTr=s2b4j~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.6(p@e1Po^h\Fo'u5<n*]Q/lg!`Wbfn>XqMX^!qMX*eqMPiB
+CM@HpAn>L^@UNPL?!R?^s4RD(s47h5e^W*tda?Fgcd0k[bK@uLqoJfZrlP5arQP;dqi0m"r/:Ql
+s2+TJ!5STM!PlPN_#M1K_#(tD_#%OC@Uiq[Ac?9FATETu[)2dZoYULAs%!)[r^m&\r_*8brCm>g
+:J^pc!`;inr_rhr!*0#!s&T2&r`L=H>?b?;?!UcD?XR8M@U`hWA7]=aAnPdjBkhBuCM[keD?4Zp
+rc'$#F*)MHF`qtQG^4R\H@($eI=6QoIt3'#JqAW-KS5'YL&m'cre^Z4!/pi8!f`5#rf@)@!0R8D
+s-*JIrg!MLs-N\Os-`kTrL<eVrginWrL`t[pn@Z?s4[V1h;/%ds53\2s5O";!9F.@qre"Cs69OJ
+!pf4>r9aCLs6p!W!:fuLpQ,B;rQ+WOq8W-Kci<m\iPY?*s*?AGI=6QpJ:`E+KnbA=M2I4MNK9-^
+P*2#oQ'Rf)R@B\9SXuIHTqS3UUnjiaVl-Jmri-%#XK;B&s/uC*l`gAl!PlPN_#D+B^AktC^*K8>
+S"#k7R$a5+Q'IStP*1rhO,o<\NJrgSMM[1GLPLV=KnY3ZKE$N'Jc1-!J,Xo^IK+cqJ,XuuJH1<$
+KE$UNKnb>;LkpnEMMmFPNK0']OcklkPa.Q$R$a>3S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@[C3QS
+\[oDc]t_=u_Sa=2`lQ6CbKJ/UcHstee'uq!f@\d1gYCW@hr*GOioB+]k2tjjl07L!m-O-,mdKW6
+naZ2@oCMVQo`Fj]p\jmdq>^<gqu-HkrUTr=s2b4j~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.'#p@e1Po^h\Fo'u5<n*]Q/lg!a6RK&`4D=MN8D>J/FD%18p
+BP1pgA7B"U?X@#CrLWhUqjd\Ur0mVQs-WhQs-WbQrL!POrb_:Fmqq]^s-3;Ds-<YMqj.&Es&]5&
+!*B%urDs23DgmY1Q'Cs*plbYIs%*,\rC[&^s%NAc!_uNerD3Pm;H!Kms&8tur`9&#!*K5'+'MlQ
+>[1Q??=.&I?t!MR@q0%\AS,OeBP;*pC27U$D>nDRDfG\q+*)FEFEM_LGB\:WH$Xd`I!g?jIXcit
+J:W<(K7ei1L&Qf-LPYqds,$f7repo<NfO+"s,[5Crf[;Fs-3MJs-E\OrL!VQrgNeTrg`tYqO[YX
+qk3_XrM0:dqka:hrMT[os/H!tqlBaus/l7&rN-(&q6'k(Z*F85!4;`Bs).XNrb__$hNS&ab5TQa
+bl5ldc2c,gcMl/gd/25idK%erec")!fDXA$f`9aoPl$[8P4t1?H8'\oI=?]sJqJ]0L51SAMMmFQ
+O,oBcP*;/rQC+&-S"#q=StD[LTq\<XUnsrdVl6ToWWK6&XSo:$Y5b]kYl:g,P*>j-nr`^/,b:Hp
+S!ob4R$X,(Q'@JqP*(ieO,f3ZN/W[PM2@%DLPCP;KnTGXs+16%rIFotrdO-\s*jrsrdb$"!.t3&
+s+G]PL5(J>Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdE[^WcW
+]">Vg^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%f\,!5gtgfDi8ESRj5f=ak3(sml0@U$m-X3.n*fc9
+nac8BoCW"S!quB_rV6Bfs8)WirVZWmo)=4?aT$b~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.'#p@e1Po^h\Fo'u5<n*]Q/lg!a6;u]hX55[PD4QATp4:c4A
+BP1pgA7B"U?X@#C:f.$dqbdDmr_ibnmna']:f%!aq`OL4r]L$?r]L3Bs%`Ge!)EJgqb[,bpeCfb
+r_EJhrB^ELqEkQU6UsaC:f1+g;uT\d;u]hs8,l-Z8c;9\9E.]a9`e'c:]4)k;,U<k;u]es<W6&!
+<rcA%=W^gO>?kE=?!^lF?smDP@UinYAS#IcB4tsmC2.O"Ci0/h!H2rVE?B4BFEDYJG'A.TH$O^^
+H[L3hI=?ZqJ:N3&JqJ]/KSBD[!JcL1M>rG5MuJY:NK0%uO8k:AOoCODPQ-mHQ2d0MQi3<ORJrZR
+S,SrWSberVTDP;VU%21^<Vohp=8uCt=oMV&>Ph\'>6%q,>PpVW4TJ:B:A@Wb:]Y<HrbVXQrbqdT
+!,qjUrc.mWrcA*]s)eWkF`hkNGB\:VH2W'gHiAEi<rZ2"<;9Dg<;KVn<:j,hH8'\oI=?]sJqJ]0
+L51SAMMmFQO,oBcP*;/rQC+&-S"#q=StD[LTq\<XUnsrdVl6ToWWK6&XSo:$Y5b]kYl:g,<`f6#
+r)NYor)<Ag,b:HpS!ob4R$X,(Q'@JqP*(ieO,f3ZN/W[PM2@%DLPCP;KnTGXs+16%rIFotrdO-\
+s*jrsrdb$"!.t3&s+G]PL5(J>Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&fWN*##
+Xfek3Z*UdE[^WcW]">Vg^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%f\,!5gtgfDi8ESRj5f=ak3(sm
+l0@U$m-X3.n*fc9nac8BoCW"S!quB_rV6Bfs8)WirVZWmo)=4?aT$b~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Es9aoT]0qMXQrrJTTmrJg`6
+s,.G*Chm`uB4YXa@UWYO?<u@@r7V/(rn.8&&D#C]eC2jnd*U+ac-4ARaiXG$s2k;`!6bAcs3:1q
+nVmF+s,?rqs2+oT_8>u`!lDdirkJTM^qfla!5e`OrkSKKs2+eFs'bq8s'bq:!Fo[=Ad!%)RBOI)
+_Z.OJ_Yh7L8H29Z9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<X2].=BSd1>$Lu2!F9%2?P$UR@:E\U
+A7T7_AnPaiBPD5\CB86grb_aTE;jhlEcZ>EF`hkOGBe@XH?spbI!pElIXh?I!J,k%K*R'`Knb>;
+LPYqd!fDnorepo<NfO+"s,d8Crf[;Fs-3MJs-EYNrL!VQrgN_Rrg`qXpR_;Tq:Yr*gt^`ah>lI0
+i;_d6irnH)jlY_(kPscFl2KrKlg4N9r9jRQ!q>aMrfI2BqiUf<!6P/[p;cgFrQ"lV!6<Leo#0h2
+rPJEK3l6/gH@1-hIt3*%K7nr5LP^kFN/WdXO-,ThPa.Q$R$a>3S"-(AT:hmOU8+N[V5C/gW2Zbr
+WiN2%rN6(%ribjrrNH7(rN-(8rkIa4'V(Y^R[KP1Q^3o%P`q8nOcYWbNfF$s$]Bn!M26qBL5(D9
+K`6W(JcLB#JH(,uId2@\IfFosJH(3#K)^K'KQ)X"L51P?M2@+JN/WaVO,oBcP*;,qQ'[l*R@B\9
+SXuIHTq\<XV5L5iWiE/&Xfnt6ZEppH[^WfX]=bhk^VI_'`5T^9aN;TJbg"GZdF$CleCE1&f\5'6
+gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?ao?k~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Es7RGD`IDX20>C_1H"CM@Hp
+AS#@\@:3GK?([_]SbnrVS,JfTR/iWRQiEHQRJWBORJ1RjDY7iKQC!o'm?RI4pQklGr`8quqc<_u
+"'o\gM#EV5PPC=?8H29Z9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<X2].=BSd1>$Lu2!F9%2?P$UR
+@:E\UA7T7_AnPaiBPD5\CB86grb_aTE;jhlEcZ>EF`hkOGBe@XH?spbI!pElIXh?I!J,k%K*R'`
+Knb>;LPYqd!fDnorepo<NfO+"s,d8Crf[;Fs-3MJs-EYNrL!VQrgN_Rrg`qXpR_;Tq4mnaqPF4h
+r29Ons/PprriH.%riZ4%!3Z1%s0)L.rNcI0r,)FNqelIPrfu<(!6bAcrltJgs3:PgrQkGh!R]9m
+d07tIeC<%!rRUu"rn.8(!nc1jo99*:qigZ8rfd2C3g4i8H@1-hIt3*%K7nr5LP^kFN/WdXO-,Th
+Pa.Q$R$a>3S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%rN6(%ribjrrNH7(rN6*_nr`[.'V(Y^R[KP1
+Q^3o%P`q8nOcYWbNfF$s$]Bn!M26qBL5(D9K`6W(JcLB#JH(,uId2@\IfFosJH(3#K)^K'KQ)X"
+L51P?M2@+JN/WaVO,oBcP*;,qQ'[l*R@B\9SXuIHTq\<XV5L5iWiE/&Xfnt6ZEppH[^WfX]=bhk
+^VI_'`5T^9aN;TJbg"GZdF$CleCE1&f\5'6gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^
+o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?ao?k~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Eq9rDW2Lq`XO7h*(Ts%rH,u
+BkV-jARf1X?sd5G:]+&f;>3ug;=76\:]4&\4S1`74Sq;A:Adoe:Amuc;#3ud:'"-crD*DgqbI2Y
+r^$QL!($TNqa1ZX7nZTS:f1(f;Y!cd<;oGg8c23\9E.]a:&dug:]=2j;?'Pn;Z]ou<W6#(='/R-
+=^#!5r`fJ0?N+:C?t!JQ@UiqZAS#IdB4tsmCAquLCi0/h!H2rVE><M8FEDYJG'A.TG^4U]H[C-g
+I=?WprdY$#K)UB-KS>,7L51P?reU]6Mi7Rn!f`5#rf@)@s,m;Ds-*JIrg!MLrg3SNs-`kTqj[ST
+rLN\Sr1<sfn5TBer)W_sr`K,%!*]A)rEB/(rEKA->l7h*>lIt'4Sh2@;>sDl:[V!Q:]+&gD#eJQ
+DuXeVDuO_SEW'qWF8g=\G5c[eG^4T5HN&6mI!^8:<rQ+g<;KVd<'!s'H?sseI=HcuJqJ`1L51VB
+MN!LSO,oEdPE_>uQ^F//S"#q>StD[LTq\<XUnsrdVl6SoWiE,#XSo:#Y5YWpYl1d*Y5PL&<r>tq
+<;]\h;A>XjS!ob4R$X,(Q'@JqP*(ieO,f5!N!kQ$M2@%DLPCP;KnTGXs+16%rIFotrdO-\rdOls
+rdb$"s+:9's+G?FL5(J=Ll$tGMi<USNfT6_P*2#nQ'I]'R$jG5S=Q7DTV8*TUnsueW2cl!Xf\e2
+Z*L^C[^NZU\\#Mf^;%J#_SjF4a2lBFbKS5VcdC.geC<%#f@\g2gYCWAhr*GPj5]4^k2tjjl07L!
+m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s2k:k~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Ep7b2nT]NV8>2NW+n6NW+n6
+NW+n-N=p,GCMRWtB4YXa@UWYO?<u@Ag\fb*g&BY(f*'[TeC;qGd0.hBcHXT4aoKQ]aT'B]aofi2
+c-H9JqMkB4rf-H,!6+oTs24fP"i8'l_SO(f_Z.IN_#;+K_Yh4M_Z%CL_Z!sF@UW^E?iXX7@L-IT
+AnGe.PcDOu_=YVC_>d(*8c;9]9E.]a:&dug:]4)k;,U<k;u]es<W6&!<rcA%=U/,7>?kE=?!dM;
+!FT@8@KBtLrac+BBDuQFBkmW_!GlWPD?4Zprc%sZF8g7^Fa!b.!I/nhH3&A?rd=frJ,Xs"JV&LQ
+K)pXZreCH.!/UW2s,$f7rf$l:!07#=s,[5CrK@2Es-3JIs-EYNr0[MPrgN\Qr1*YTp=fN#!o2Vf
+rn[Y4qr%M5!94"<rT""@k5FKCkl'cGl2g5;qX+4KrpKpXnacU?rK-u?r5noYoZ-@=df8gTlbiY;
+qnk:9H$XgbI=?ZrJV/T.L5(M@MMmFQNfT9aP*;,qQC!u,R[]h<St;RITq\<XUnsobVl-JmWW&n!
+X/rE$Xo>L$YPGF#YPt^&XoGL&WrTp"^*B/;S!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOM2@%DLPCP;
+KS9>W!ePuSrIFotrdOQhs*XQhrdOlsrI=s#JqEuS!JH1+L1l?uM2@+JN/WaVO,oBbP*;,qQ'Rf)
+R@9V8SXuIHTq\<XV5C/hWN*##Xfen4ZEppG[^WcW]"G\i^VI\&_o0O6aN2KHbK\>Yd*^:jeCE.%
+f\,!5gtgfCi8ESRj5]7`k3(sml0@U6liukFn*fc9nc&([oCW"S!quB_rV6Bfs8)WirVZWmo)=4?
+ao?k~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Ep7RHeYgDZ=SMDZ+G=DXM?T
+Ci4**CM@HpAS#@\@:3GK?([a\optuMrgWnUrL!YQrg*\RR@3u?s-`RtmV_o=rg3YNo9B<Arg!8E
+op>ZDr`B"ur`B&!s&T>+BQf)nrKRAIp65H<s%*,\rC[)_s%NAcs%`SirD3Pm;H!Kms&8tur`9&#
+!*K5'#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`G5c[dG^9:7
+!IK4nI0"eHrdY'$JqEuS!JH1+LB!#/M#N82M?&S6N;nk;Nr>%=O8tFAP5gaGPl6mIQN!6KR/`TR
+ReiNOSGSlNU\pqaV>d@kVZ<[pWW0!qX8T."XoGR&XoGR$YPta+Z2V'/ZN.B-D#eJQDu,a\PlI$H
+PlAo*blZ28c2Q#echl)fdJq\qeGn)!f)O;#ec=>$fE9gZf\-7go990<qigT6rfd5D20aCmH[L6j
+It3*&K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CT:hmPUSO]^V5C/gW2ZcqWWK6&XSo:#Y5GL!
+Yl(^(Y5GF%XT,?mOnXq^S=?":R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkgb?L4t;6rdt9(JV!cM
+s*t#sp3lsgpO3$is*sut!eGrTrdt6)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N"R$a;1S"-%@T:hmP
+USO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=h;7)J
+iSrnXjlY^gkiq?sli-5TmI'H3nF?&JncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEjlJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb&bP\co'u5<n*]T0m-En8<)Z`a54q)352/44DJa0)
+BkV-jARf1X?sd5G:J^mbrDEAgs&&Yir_`>b!`)Qdp,r48r]Kg7r]C6V:/:dar(d2drD3Pm:f.$b
+s%`Mgs%rDb"[YRC6:!p:5QF+J6N9CV6qBsG;,[Bjs&/Ges%*,\rC[)_s%NAcs%`SirD3Pm;H!Km
+s&8tur`9&#!*K5'#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`
+G5c[dG^9:7!IK4nI0"eHrdY'$JqEuS!JH1+LB!#/M#N82M?&S6N;nk;Nr>%=O8tFAP5gaGPl6mI
+QN!6KR/`TRReiNOSGSlU;ufko;ufqm<;onr<rH+t=T;P'>5qb'>5hb)>kqV&>QJ&6pH8F<qGI5g
+s%i2\q+pi`s)%aQs).sXDf>VorGhdVs)\3^rcS3`rce?ds*=Tir-S0=r`/GeqGm/e20aCmH[L6j
+It3*&K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CT:hmPUSO]^V5C/gW2ZcqWWK6&XSo:#Y5GL!
+Yl(^(Y5GF%XT,@"<W#ho;tj07S=?":R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkgb?L4t;6rdt9(
+JV!cMs*t#sp3lsgpO3$is*sut!eGrTrdt6)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N"R$a;1S"-%@
+T:hmPUSO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=
+h;7)JiSrnXjlY^gkiq?sli-5TmI'H3nF?&JncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEjlJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI0$p@e1Po^qbGo'u5<n*]T0m-;dnb2eNXNW4t9N<"q8NW"k;
+NW+q=NK3Ie!07&<'5qc*CMRWtB4YXa@UWYO?<uCBg\fe*g&BY(f*'[TeC2kFd0.hBcHOK2aoKQ]
+aT'B^ao]c1c2<Y$Nr=t2NrG%4N;^]t`5T[4rk\ZQq8*6O_SO(f^]M?h_>V7L_>h@P_=teJ@UNUC
+@JjL5@K'^@A7]>!Oeo\,rPAKM!5\HI!(d)\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`0)%=BPQ*
+#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`G5c[oG^4R\H@($e
+I=6QnJ,Xs'JV&K+K7no3reCH.!/UW2s,$f7rJUf;NfO+"s,d8CrK@2Es-3GHs-EYNqj@ANrL3SP
+rRpu"rS%D/h;/(es53e5s5Et:!9="<!p/S-rTO1D"7#4<m.p&Jmf)\Tn,`(NqN:];qT8WUo>g@?
+e,SjSm)/_;rPLO;G^=[_I=6TqJ:`E,KnbA=M2I7NNK9-_P*2&pQ'[l*R@B\9SXuIHTqS3UUnjia
+VPg>jWN#lss/Z1$r2oq#pTOLtr2p"#s/Z*u!NE$g^AY_d^:g#)R@'A.QBd`"P`q8nOcYWbNfB!V
+Mi*CKM26rdL'!'^K`6T*Jq8LOJH(,uId2@\IfForJ-(:RK)UB'KSBD[D23q(M2I4MN/`jYO-#Ke
+P*D5sQC!u,R[]h<St;UKTqeEZVPg>kWiN5'Y-5(7Za7$I[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[
+dF$CleCE1&f\5'6gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNh
+rqu]mo)=4?b5Zt~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI0$p@e1Po^qbGo'u5<n*]T0m-:&=RH\S[DYS&KDZ+GFDXhQW
+Df0E-CM@HpAS#@\@:3GK?(dg]oUYoMrL<eTrL*YOs-WhSrKmYSCi&f^nS\ADqelA!s-E8Ap6PN@
+!1*PLqj.7_r`Att!*B%u"(cP*O8P:CPkL:@8H)3Y9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<WZ?)
+=T2G.>$G39>[:WAra,\6@K'^:@q>RM!G6!DBE;g^rbDOND>nDRDfG\q!HN8\F9-N-rc\cqH$O^^
+H[L3hI=?WprdY6)JqAW-KS5'YLB!#/M#N82M?&S5Muo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNP
+ReiNPUA1M]V"gedVZ*LnVuWgrWr/prXT#=%Y5GF$Y5PR&YQD)8ZMq03ZtsRQD$#ugQM6[0Pl$aG
+PlJu+c2Z&hc2Grechl)gd/_Voe,@eqeH4=RfDaD)f@\a/r06f:s-3DEnWNm8rKK3aG^=[_I=6Tq
+J:`E,KnbA=M2I7NNK9-_P*2&pQ'[l*R@B\9SXuIHTqS3UUnjiaVPg>jWN#lss/Z1$r2oq#pTOLt
+r2p"#s/Z*u!NE$lOo1=>NujCDS!ob4R$X,(Q'@MsP*1rhO,o<\N/W[PMM[1GL]3#0KnP-YK*$XU
+Jc1-!J,Xo^IK"]qJ,Om!JV&LQK)pXZre>9FLl$tGMi<USNfT6_OckllQ'IZ%R$jD4S=Q7CTV8'S
+UnjlcVl?\sXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`lH0Bb0/#ScHjncdaZdsf@S[/g=tE=hV[8L
+ioB([jlY^gkiq?slg4!*mf)YUnF?MK!qZ'Vrq6<bs7cKes7uZjqtpBjr;H3cJcEmmJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI-#p@e1Po^qbGo'u5<n*]T0m-=OKm69i!!']=(r]UoWDf0E-
+CM@HpAS#@\@:3GK?27:q;"mi`;#X>c;#a>h4o%564oRS<49&%T:&n)d:Amub;#=#g:Amuf;"[Wa
+:B*WZ63'=L5QF+I63B_M9i1ge!)`_np/:r^r^m#[s%EAcrD!;es%iVjs&&eor_ikt<E9$!!`rK+
+r`KJ0>?b?;?!Ue9?NFPCraGn<AH$-@AnV*V!GQ<JCB86grb_aTE;jhXEc_5%!HiSbG78_AH$Xd`
+I!g?jIXZeGJ-UXWJqJ]/KSBD[s+^T1re^Z4!/pf7!f`5#rf@)@s,m8Cs-*JIr0@;Jrg3MLrgE_R
+qO@=\!)repr`/_ms&K"urE&kus&fA+>PVJ%>Q%e->?^r/r`fP2>[1S-4S2MN;#a>c:A@W\;#bD3
+DZ"GPE;jkUEWC1[FT-F^G5c^aGl;pkH[:!bHhCG=<U`ua<VBBMGBeF[H[U<lJ:N6(KS>/9Ll%"J
+N/`mZOckllQ'I]'R$jG5S=Q7DTV8'RUSO]^VP^8hW2ZcqWrK."XSf4!Y4o-tY5GF%XT,@"WWB)t
+r)ESmr)3Jj*`>k)R[KP1Q^3o%Pa%ApP*(ieO,f3YN/NRNM2@%Dre:K.KS9>W!ePuSrIFotrdO-\
+rdOlsrI=s#JqEuS!JH1+L2D^%M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuFGTqS6WUo(&fWN*##
+Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8WcdC.geC<%#f@\g2gYCWAhr*GPj5]4^k2tjj
+l07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s2t@l~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.-%p@e1Po^h\Fo'u5<n*]T0lfu[:b2eNPNUr2/O8b19N<#";
+NW5"XEcH#8D/3m#BP1me@q&kS?X@$oh;$c>g=k65r7M&$&D#C]daHOjd*L%_bfe/PbK9\'s2b>b
+bKTmF!0I/?oT&s4qi:W7rJ^`p"ieO#`5BIk_uIUQ_Z7RQ_Z[im_8*n^_>qFC_?.Qj^&DL@@/j[5
+@/jX?@UinYGDr9)rPJQM!5e`Os2+cO!_>mSr(?u^s%NAcs%`SirD3Pm;H!Kms&8turDir#=T2J'
+=o_e+>R+P@?=.&I?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcAQkG'8(RG^+L[H@(!d
+rd>$#It*!!JUrFPKE$T)L&Qi,LB*/0M>rJ5MuJ\8NW5%<O8k=AOo:IBPQ-mFQ2[*KQhd$KRK(k=
+f_jG!gABY)h#H41hZ)L2i;MX8j8A!<joFTDkkjWEl2p;<m/$,LmeuVSn,W"QOoLO<anWsKa7I="
+s80b2`VRO@_th1K__u^aH@($fIXcm!JqJ`2L51VBMi<XUO-#KePE_>uQ^F20S"#q=StD[LTq\<X
+UnsobVl-JlWVrjsX8f9tXnJpoXo>F%X8T%"WMlcpVZ<Ul^&YqH^A5GXR[KP1Q^3o%P`q8nOcb`d
+O,f3YN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\rdOlsrI=s#JqEuS!JH1+L1uF!M2@+JN/WaV
+O,oBbP*2#oQ'Rc(R@9V7SXuFFTqS3VUnsueWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J"_Sa@3`lQ6D
+bKS5Vcd:(fe'uq!f@\d1gYCW@hVd>NioB([jlYail07L!rp0jVmdKW6nF?MK!qZ'Vrq6<bs7cKe
+s7u]kqtp?ir;H6dJcEmmJ,~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.-%p@e1Po^h\Fo'u5<n*]T0lfsq-RJh$eD>.rBD>S/JD>.rB
+D&./3Df0E-C2%?oARo:[@:3GK?(dj_T(JTOSGerVRf8]VR$X0=R/`TRR.tLqD>8#KDtn5KD#eJP
+QiEBDQ2R$KQi36FQiEBKQi*0LPlQjC<rZ5%=BGH%!*B)!"(?.tNV\n?PkgLE84cDN9)hQa9`7]c
+:B+,g:]aKl;Z9Vp;ufqs<WQ9(r`T8)!*fG-#@1YB?XI2K@K'^:@q>RM!G6!DBE;g^rbDOND>nDR
+DfG\q!HN8\F:<;8G'A.TG^4U]H[C/>I0Y4NIt3'#JV*lRs+CB+reCH.!/UW2s,-i7rf$l:s,R)>
+s,d8CrK@/Ds-3GHrg*PMq3_2Ms.T=aqP3q`pndqds/5mq!3,strN#mup9"@t!3c:(s0;U0rj2Q?
+!,VLKr0Hu?l]h:3!6kDd!m]'8rQbAf!mo9>rm:\m!7Lhprm^qtrRV,'f@U#S!86Lun<3d7rff<b
+H$XgbI=?ZrJV&N-L5(J?M2R=PNfT9aP*;,qQC!u,R[]e:SXuIHTqS3UUnji`VPg>jW2]`qs/Z1$
+qQ9IoqQ9aus/Z*u!i`,srhfanqiUi=q2Z;[R@'A.QBd`"PEM)kOcYWbNfB!VMi.Lj!JlO1L'!'^
+K`6T*Jq8LOJH(,uId2@\IfForJ-(:RK)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;/rQC!u,R[]e;
+St;RJTq\?YV5L5jWiE/&Xfnt6ZEppG[^WfX]=bhk^VI\&_o9U7aN2NIbg"GZd*^:jeCE.%f\,!5
+gtgfCi8ESRj5]4^k3(sml0@U6liukFn*fc8nc&(\oCV\Sp&Facp\jmeq>^<gqu-HjrU^#>s2t@l~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.$"p@e1Po^h\Fo'u5<n*]T0lg"IKk!&)oq`O1-s#q'9EGo`3
+CMIQsB4YU`@UWYO?=!>%r_WAeq+q&gp/(cbs#p9Dr&t'Bpc\X@q`Xm?rB($RpJ1W^"&Mci;"d]_
+;"d]^:AmKX63]_@5X.Iu62a+P7S-9Mpepre!_>mSr(?u^s%NAcs%`SirD3Pm;H!Kms&8turDir#
+=T2J'=o_e+>R+P@?=.&I?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcAQkG'8(RG^+L[
+H@(!drd>$#It*!!JUrFPKE$T)L&Qi,LB*/0M>rJ5MuJ\8NW5%<O8k=AOo:IBPQ-mFQ2[*KQhd$K
+RK$4X<;]_t<)lrq<<#tt<rH+s=T;P(=p%u4>?gu.r`f>+r*0,)s'5k74?Pbi4?Yk*4RZ/I;#X5m
+:/=V[peUW\!,_[PrGV[SrGhgW!-A-]rcS3`rHJ9d!."Ee!df<BoN(fgoMkZepJa%pH$XgbI=?Zr
+JV&N-L5(J?M2R=PNfT9aP*;,qQC!u,R[]e:SXuIHTqS3UUnji`VPg>jW2]`qs/Z1$qQ9IoqQ9au
+s/Z*u!i`,srhfdo<;]\n;Ya0*R[KP1Q^3o%P`q8nOcb`dO,f3YN/NSmM#iEfre:K.KS9>W!ePuS
+rIFotrdO-\rdOlsrI=s#JqEuS!JH1+L1uF!M2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V7SXuFFTqS3V
+UnsueWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J"_Sa@3`lQ6DbKS5Vcd:(fe'uq!f@\d1gYCW@hVd>N
+ioB([jlYail07L!rp0jVmdKW6nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?ir;H6dJcEmmJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*fZ1m-FYoj,EPgn;d=*r/MSSNfK0A
+EcH#8D/3m#BP(gd@q&kR?X@":h>c7/gAfk(f`0P6f%&9uda?Ihcd'h\bfe2Pr5f&^aiV^#O8b7?
+O8+b2O8=kCNQ/rV`l?!:`5M;cs2"cPiPGT.r*o\6s'bn7rF,_8"*'*eZMVN8_>hCP8c;9\9E.]a
+:&dug:]=2j;?'Pn;u]es<W6&!<rcA%=TVc2>Q.k.?!dM;#@LtK@U`hWAH$-@AnV*V!GQ<JCB86g
+rb`-_E,]f:EcZ;DFEM_Lrc\BfH2`*pH[L3hI=?Wprdb$"!.t3&!ec8]reCH.!/UT1!fDnorJ^c9
+!07#=s,d5BrK@/Drfm;Frg*PM!7q/$rn./%qqCr%s4mY1s5*e5rS[_7s5O%<ro=1Ck3(q,kks]F
+lMp2Mm/?>OmK)_CqsORTnb81=an<aGa7mU's7sV0`VROA_t_))_fp?NH@($fIXls#K7el4LPUeE
+Mi<XVO-#NfPEhE!Q^F20S"#t?StD[LTq\<XUnsobrhfgrWN#lsri?(#m&g8gs/Z*us/H$srhfmr
+V59u`qS)d=!1EhR&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#0KnP-YK*$XUJc1-!J,Xo^IK+cq
+J,Om!JV&LQK)pXZre><GLl$tGMi<USNfT6_OcklkQ'IZ%R$a>3S"-(AT:qsQUSO``Vl6VqX0&M-
+YctF>['d?O\@K2`]Y2(p_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*g=k<:h;7&Ii8WeWjQ5OdkNM0p
+lKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#C0hqYU0gr;HTbrdk*ms*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*fZ1m-FY>q/5M8pMT_BokaPCqel:J
+'6A26Df0E-C2%?nARo:[@:*AJ>lLAsT:Y\Gr1*bUrL3_Rqj7GQR$d_eph]qHr,2=KqelFNr0RGL
+!L8uGQ2R$IQiEBGQi<<JQi36IPlQjA<WcE*=BGH%!*B/#"(,kkMYNJ6PQ+5Q9)_K`9`7]c:B+,h
+;#aDm;Z9Vp;ufqt<rZ5$=T2G)>$G51>QJ,:ra,n<@:<VS@q0'KAH?CUrb)=HCAquLCi0/h$u^*(
+EH-#?F*)MHFa!b.!I/nhH3\eEI!pElIXh?Is+(0%rdt9*Kn]M\s+^T1rJ:T5Mi7Oms,@#=rK$u?
+rfR/Brfd>Gqj%/Hrg*VXrLs(^qkO%aq5+%erMT[pri5sur2fUos/l@*r361*rj)R1pMK_lnWiF)
+rg!?)rQb8crm1YmrmLeprm^tus47)!"PD>YfTbQ_mZRR51R**.H$XgbI=?]sJqJ]0L51SAMMmFQ
+O,oBcP*;/rQC!u,R[]e;St;RITqS3UUnji`VZ*IpW2ZcqWrB(!XR*(gXT,@"WrK'uW;`\!VPU,b
+Ulgf;OSOq;RJrQdQ^3o%P`q8nOcYWbNfK*XN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\s*jrs
+rI=s#JqEuS!JH1+L2Md&M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Z=ETqS3UUnsrdW2ckuXf\e2
+Yd1UB[C3QS\[oGd]t_=u_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[/g=tE=hV[8LioB([jlY^gkiq?s
+lg4!*mf)YUnF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcEpnJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd=pVn*fZ1m-@VL<:)jL4nq5.4nUr-4VU)$
+EcH#8D/3m#BP(gd@q&kR?X@"8:]4#g:]=2j;<UjV:\[*N55.5955IDB4T8(L:@:pU;#X5j:A[i]
+:'+-V6N'4M6N9@O57'M<5X@_'6qL$Ip/:ifs%3/]r_*8brD!;es%iVjs&&eor_rhr!*0#!s&T2&
+r`K;+>?h)3!F9%2?O'tI@:E\U@q>RM!G6!DBE;g^rbDOND>nD]DfBZ8EH6,AFEDYJG5c[dG^9:7
+#CCiGI=6QnJ,XuuJH1<$K*$^[L&Qi,LB*//M#rQmMuAV7N<#";O8k=@Oo:IBPQ$gDQ2[*KQiC"b
+;t<o`<Vobq<W?+u=8>tt>5VV&>5hb)>l@n)>lJ%.4T7MB53YrC;#!iZ;#P;1DuO_SEW0tYF8g:[
+FoHR`G63#7H2`*iH2`-iHN8Ha<r,hg<;KVj<&/ZBH$XgbI=?]sJqJ]0L51SAMMmFQO,oBcP*;/r
+QC!u,R[]e;St;RITqS3UUnji`VZ*IpW2ZcqWrB(!XR*(gXT,@"WrK'uW;`\!VPU,bUf14i;Ya/i
+RJrQdQ^3o%P`q8nOcYWbNfK*XN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\s*jrsrI=s#JqEuS
+!JH1+L2Md&M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Z=ETqS3UUnsrdW2ckuXf\e2Yd1UB[C3QS
+\[oGd]t_=u_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[/g=tE=hV[8LioB([jlY^gkiq?slg4!*mf)YU
+nF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcEpnJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m)mJogPl,kpQ#04pl>95rK-r<
+'m+M:EGo`2CMINrAn>L_@UWVN?<l@dh>c7/g&Th'f`0P6f%&9uda?Ihd*L"^bfn8QqT8,cqi:<0
+s,I*"r5S`T!6"NIrke]Qrk\ZQrke]Qm_\q?!PZ5G@K9j9@f9a6@/aR:DM+=Zq8*-Jrk\]P8c23\
+9E.]a:&dug:]4)k;,U<k;u]hs<W6##='/T(=U/,7>?kE=?!dM;#@LtK@U`hWAH$-@AnV*V!GQ<J
+CCG#rD/O60E,]f:EcQ7#F9-N-rc\EgH$TC8!IK4nIK+`rJ,Xs"JV&LQKE$T)L&Qi,L]<20M>rJ5
+MuAV7NW5%;O8k=@Oo1CAPQ$gEQ2fG7fDaG"g&'M$g]$".h#cHjhu;R4iVhg9j9+N+kNDg-rosIJ
+rp'RNrU'ROq<nCTOHB=$o?$REo#LRGf)PWcrPeWQs2G#VrknBFrPSWOqnrGX0mJ"jI!pEmJ:W<)
+KS>/9M2@.LN/is[OckllQ'I]'R$jD4S=Q7CT:hmOU8+N[V5:'gVuN[qWVrjrX8T-lXo5@#X8K!t
+WW/prVZN`lV>d7mUS=HUrkA0@s-NhRQN!-UP`q8nOcYWbNfF$s!K2j7M#iEfre:K.KS9>W!ePuS
+rIFotrdO0]rdOlsrIFp!s+:9's+CB+re>?HLl$tGMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:hmP
+USO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY^dF-Lne^i@)g"P39h;-rG
+i8N\Uj5f=akNM0plKdd&m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcQirVZTlo)=4?bl<1~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m$X91D>.r1D>8#DD=_TBD>e>e
+D00i=EGo`2CMINrAn>L_@UWVN?<mH%!M>tUSc##WS,SlTRJN<ID>eAOD>J)ID#eJHDuOYOQi36H
+Q2?mHQN3?GQiE?OQ2[*IQi<<GPlZo)rDj/)<`W:'=BJZ'<WuQ*?#"Y>pQbcC!L$+Q9)hQa9`7]c
+:B+,g:]aKl;Z9Vp<<#tt<WZ?)=T2G.>$G39>[:WAra,n<@:<VS@q0'KAH?CUrb)=HCAquWCi+$,
+DJsK5EH-#>F8g7^Fa!b.!dK!9rd"TlI/\QoIK4lsJ-(:RK)UE&KE-`*LB!&/M#N82MZ8V5N;nn;
+Nr>%=OT(C?P5^[EPl-dIT:l+UqP*k^r1s@h!2TUjr20Fj!N<!rWrK-rX9#H)qQ9e#s0)@)riuC,
+s(qOKpQk64l]_I9c-6.2rm(Adrm1YmrmLeprRChss4.2%rmq,$s4I=8m$%1,rfR&?qih&(0mJ"j
+I!pEmJ:W<)KS>/9M2@.LN/is[OckllQ'I]'R$jD4S=Q7CT:hmOU8+N[V5:'gVuN[qWVrjrX8T-l
+Xo5@#X8K!tWW/prVZN`lV>d7mUS=HUrfHo9s-NhRQN!-UP`q8nOcYWbNfF$s!K2j7M#iEfre:K.
+KS9>W!ePuSrIFotrdO0]rdOlsrIFp!s+:9's+CB+re>?HLl$tGMi<USNfT6_OcklkPa.Q$R$a>3
+S"-(AT:hmPUSO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY^dF-Lne^i@)
+g"P39h;-rGi8N\Uj5f=akNM0plKdd&m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcQirVZTlo)=4?
+bl<1~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0m/Bra4RG?.4o[_04nCf24V`'[
+EH,o7Chmd!BP(gd@q&kR?X?u6r(m8d!)NSjs&&Vh!)N/^s%iYYkrni+qE=jQoM4mOr)!DhrD*8d
+ohPN]r'LBKs$H`O!'pNI"[G@A84u_N;?9]fr(?u^s%NAcs%`SirD3Pm;H!Kms&B"ur`0)%=BPQ*
+#?k>9>[1Q??N+::?t!JQ@UinYrac+BBDuQFBkmW_$uBctDJjB3E,fl<Ec_5%!HiSbG63#7H2`*j
+H[Pg@s*artrdY'$JqEuSs+CB+reCH.s+pZ2s,-i7rJ^c9s,R&=s,d5Br0%&Crfm>Gm8Wm]r`&hr
+s&T,#q,dW"r`]8)qca#(qcj,*q-<r*q)eX?m8<m[qGI)c!)N/^s).dRrc%gUs)S*[rcJ-^rc\9b
+"*f*:GlE!fH3/G@I.125<V08a<W?%uG;4>gH@1-hIt3*%K7nr5LP^kGN/WdXO-,TgPa.N#R$a;1
+S"-%@StD[LTq\<XUnsobrhodp!3,psri?"!oWA(nri>sss/H$srhfgpV5=0e"/DTaU&Isb;?*!a
+Q^7W9$'^X:P*(ieO,f5!MueioreUZ3L]3#0KnP-YK*$XUJc1-!J,Xo_IK"]qJ,OotJcC?%KE$T)
+L&QgFLPUeDMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>StD[LU8+N\VPgAlWiN5'Y->.8Za7'J[^`lZ
+]=bhk^VI_'`5T^9aN;TJbg"GZd*^:jeCE.%f\,!5gtgfCi8ESRj5]4^k3(sml0@U#m-O--rpKmW
+nc&(\oCV\Sp&Facp\jmeq>U6gqu-HjrUTr=s31Ln~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m)mK&N;eh9Nq/8,NW>.:O<Jdh
+F)c/;DJX*'BP;!hA7B"U?XI)DhVR)DgtUT;g"G$1r7Cr!!S,^!dL"=Jd*L"^bfn8Qr5nntoT/p3
+rK$c7s,[,?s,R6'aN+1t!QE"K_Z7RQ_Z7RP_Z7RP_th1L_tq7I_uIR\]jP5V@UW\Q@:NgG@JaF7
+I$CYGp;6c#s%E>brD!;es%iVjs&&eor_rhr!*0#!s&T2&r`T8)!*fG-s'5V2ra,\6@K'^@@q9+]
+AS,Oerb)=HCAquRCi+$,DJsH4rc%sZF8g7_F`qs-G6)r6rd+Tk!.=co!e,WKrdY'$JqEuSs+CB+
+rJ(?-!/UT1s,-i7rJ^c9s,R#<s,d5Bqi^oAs-3Q7s4@8&qq:i"r7h8,s5!_3!8me6ro!k:ro<t<
+"6J\-kPaWEl2U&Ili$5JmeZAPnbnRJOn$Q^aSs3[aS*[P`n(1d`;R[O`rF$X`;[[H_Z.OO_YqA*
+G'A1VH@($fIXls"K7el4LPUeEMi<XUO-#KePE_>uQ^F//S"#q=St;RITqS3UrhKRkVZ*LnW;ijp
+Wr9!iXSo3tWrK'uW;WUqVPU-gU]I6brh0FeT:VYL]`sjjQBd`"PQ$^KOcYWbNfF$s#)e@qM26tC
+re:K.KS9>W!ePuSrIFlss*j9^rdOlsrIFp!s+:9's+CB+re>`SLl$tGMi<USNfT6_OcklkPa.Q$
+R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@0L\%0&]]Y(tn^qmn*`5Ta;aN;WKc-FV]dF$Fm
+eCN7'f\5'6gtgiEi8ESSj5f=ak3(sml0@U$m-X6/n*fc9nac8BoCW"S!quB_rV6Bfs8)WirVZWm
+nc"+>c2W:~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m$X8YD=qf.D=qfAD=_TDD&7A;
+F)c/;DJX*'BP;!hA7B"U?XI)DTqVIY!M>t\Sb8NPS,8WSRJ`HPDY7lGD?=`oDYe5HDY\5IQi36J
+Q2$[<QiEBOQ2[*IQiEBDPlZnHqc<Mo$!(&+<``sYKT_SoQ2O>T9E%W`:&dug:]=2j;?'Pn;u]es
+<W6&!<rcA%=oVY*>Q.n->l\41?NFPCraH+BA7T7_AnG]TBE;g^rbDaTD/F0.Df9UoE<1*$rcA3a
+G'<k/!I/nhHN/<lI/\NqIXckHJ-(:RK)UE&KE-`)LB!#/M#E21MZ8V5N;nn;Nr4t<OT(C>P5UUE
+PlIESU&1S\U\^ecV>d@iVZNfrWVrgsX7r^mXo5C&YPYR'Z2M!,D#J5DQKsh8PQ7!=PQB"QrlkDe
+"4#6=cMc)gd/MGkdf%YoeH4=Pec+,&f@JO)fDUs#PPC=>Ont7>P:q*'G^4U^I!pHoJ:W?*KnbA=
+M2I4MNK0']OckomQ'Rc(R$sM6S=Q7CT:hmOU8.^`!Mu[mVuN^qWVidpX7NFkX8K!tWW/pqVZN`l
+V>d7kUS@a]"/)9XT(n?NR$X,(Q'@L3Op-u0O,o<\req&>MM[1GLkkta!el;\rdt9(JV!cMrdXrs
+l[Ab]s*suts+13%s+C?)!/:E,HA@<5M2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\<XV5C/h
+WN*##Xfek3Z*L^C[^NZU\\#Me^;%J"_Sa=2`lQ6CbKJ/UcHstde'umuf@S[/g=tE=hV[8LiT&tZ
+jlY^gkiq?slg4!*mdBQ4nF?&>o(2JFrUg6cp\4X]rqZTjqtp?irVc9cJcF!pJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0lr6qH4Sq;555[S=4Q\g&4S_,V
+G'%eFE,TW1CMINrAn>L^@UNPM?!L3&r(m8d!)NDer(m5e!)NAdpceL:q`a^:q`b$CpeL`]s%`#Y
+!)WVir(d/cnkK0Zqa(<N6N0:N6N9=V5<V.n5XnCBoht`\s%E>brD!;es%iVjs&&eor_rhr!*0#!
+s&T2&r`T8)!*fG-s'5V2ra,\6@K'^@@q9+]AS,Oerb)=HCAquRCi+$,DJsH4rc%sZF8g7_F`qs-
+G6)r6rd+Tk!.=co!e,WKrdY'$JqEuSs+CB+rJ(?-!/UT1s,-i7rJ^c9s,R#<s,d5Bqi^oAs-3+S
+s&8kqqGmPprDihts&]"ur`T8)rEK/&!*fD,!+#;'s'>F_m8<^VqGI5g!)`8_!,_[Ps).mVrG_gX
+rH%s[!d/U,rcJEgGB\:WG^045rHeKj!.=69qGm/ep/NbhGBeCZH[L6jJ:N3'K8#&8Ll%"IN/`jY
+OHG]iPa.Q$R$a>3S"-%@StD[LTq\=]U]I<hrhodps/GprrN#OkrN#jrs/H$srMK^oV5=0e!McCg
+T`^s[St>^S#+1aCQ'IStrfRGIOH5H_NW+k@Mi*@JLkpicL'!'^K`6T*Jq8LOJGt&uId;F]IfFor
+JH(3#K)^K'KE-`*L3eW2M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jG5S=Q7DTV8*TUnsrdW2ZetXKAY/
+Yd(L?['mEP\[f>b]Y;.r_8=+.`Q$!?aihlPcHaeadF6Upf%8O+g=k<:h;7&Ii8N_VjQ5OdkNM0p
+lKdg'mI'E2n*ol;o()DDo_nFap@n=[q#:*hqYU0gr;HTardk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.$"p@e1Po^h\Fo'u5<n*]T0aiW(lrf-i9mZ.@.qMuP=F`_\E
+E,KQ0CMINqAn>L^@UNPM?!Q:DhVJ1d"l%bag"=sTfDa>%e^OKF#gq#FcHa\Yb0'_*q2PN9NfNss
+plPH8qi:W9s,d9'!QiCZ`W=&skJR)3rPSKKrPSTNs1o7V@:3GM?t!JO?t!PT@U`bSrEo_FMPn,]
+_Z!1-9E.]a:&dug:]4,i;#jMm;Z]ou<W6&!<rcA%=oVY*>Q.k/?!^k:?NFPCraGq=A7Y[N!G6!D
+BEr6dC27U$Ci0/h!H2rVE<:0%F8g7^Fa!b.s*+Nhrd"WmI!kpA!e,WKrdb$"!.t0%!ec8]rItB/
+Lku"ds,-i7r/CZ8s,R#<s3:YkOnY%<fDaG$g%jA!g]-%2h;7#Gro!e7s5O(=roF+@s5j=Eroj@G
+!:'OKs6TdQqX+CQmeuSTnF?C;!g1UIn]C1>n]1[LfDkWarPeWQs2G#VrknBF!5n]Ns2-O5GB\:X
+H@('gIt3*%K7nr5LP^kFN/WaWO-#NfPEhE!Q^F20S"#q=St;RITqS3UrhKUlVPa?js/>ssql94f
+qPsRpri#gos/,gmrhKRiUAghmTV%jJSt2CA]Y+3V$C@'EQ'IStP*1rhrf7GINJrgSMi*@JLkpic
+L&m!]rIY0'JV!cMrdXorm!\k^s*suts+(0%re(6(FG5I(LPL\BM2I4MN/`jYO-#KeP*;,qQC!u+
+R@B\9SXuIHTq\<XUo(&fWN)u"Xf\e2Z*L^C[C3QS\[oGd]t_=u_SX71`lH0Bb0/#RcHjkbdaQ^r
+f%8R-g=tE=h;7)JiSrnXjQ5Oekiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Na
+rdk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.*$p@e1Po^h\Fo'u5<n*]T0R@.o/o5<`.m;D]9q.ppmF`_\E
+E,KQ0CMINqAn>L^@UNPM?!O+tU&L\cT:YqNopl#Nr0mYRrg<P"p20eHr,;UQrbq[OqeuJ$r0RDK
+rK[,Cp6YfFrK[AJr0IDLr0@;Hq3CuEr`Aqsq,[c$<E3@FJrohnrg!ITs%EAcrD!;es%iSis%rbo
+rDNbs<E9$!s&T2&r`T8)!*fG-!aT,=ra,\6@K'^;@q9-LAH?CUrb)ONC2.O"Ci!tfD?4Zprc&![
+F*%>&!HiSbGQ2mfH2`*kH[L5?I0+kIJ,XuuJH1<#K*$^[L&H`-LPUcbM>rJ5Mu8P6NW5%:O8b[M
+DZ4SNP5CsOUA:S\V#I4jVYm@lVuWgpWrK-qX8o=!Xo5F%YPYR(Z2M!*C]\I>Qh?[/Q1't9bQ,ob
+cMl/hd/DAjdf7bueCE'urmgnss4@.4m$%:/qiU`<s-#-ZGB\:XH@('gIt3*%K7nr5LP^kFN/WaW
+O-#NfPEhE!Q^F20S"#q=St;RITqS3UrhKUlVPa?js/>ssql94fqPsRpri#gos/,gmrhKRiUAghm
+TV%jJSt2CANfO(!$C@'EQ'IStP*1rhrf7GINJrgSMi*@JLkpicL&m!]rIY0'JV!cMrdXorm!\k^
+s*suts+(0%re(6(FG5I(LPL\BM2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\<XUo(&fWN)u"
+Xf\e2Z*L^C[C3QS\[oGd]t_=u_SX71`lH0Bb0/#RcHjkbdaQ^rf%8R-g=tE=h;7)JiSrnXjQ5Oe
+kiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.0&p@e1Po^h\Fo'u5<n*]T0;c>b>4?W=#qEFg?n3$M0!'K^5
+!'L*@(3anCF)c/:DJX*'BP1pgA7B"U?XI)Dr_WMgrD!>gq,$c\qG?uOr]U0Cs#p!<q`OpCr]L<H
+4\toLqG$ubpJ1carD*Ji:JUmbqbI#amnO$P5X@\&62j1O6ULc<%7<HJ5sILq5tFaK<)cfm;Z9;g
+9E.]a:&dug:]4,i;#jMm;Z]ou<W6&!<rcA%=oVY*>Q.k/?!^k:?NFPCraGq=A7Y[N!G6!DBEr6d
+C27U$Ci0/h!H2rVE<:0%F8g7^Fa!b.s*+Nhrd"WmI!kpA!e,WKrdb$"!.t0%!ec8]rItB/Lku"d
+s,-i7r/CZ8s,R#<r_ieZr]U+@pJh)irD`GirDrr"qH3]!r`];*qcWu(r`oG.pKR`)?MZbb;,Zj[
+ohbN_mnit#!,qjUrc%pYrH%jXrcJ6bGPl^aH2`-iHN8H\<r,hg<;9HIFa&%SH?spdI=HcuJqJ`1
+L51VBMN!LRO,oBcP*;/rQC!u,R[]e:SXuFFTV8'RU].%jV5C-hVuN^qWV`^dX88jrWW&jqVuNXo
+V>d7kUS@a]#G@]]St;LCSGQ.jQ^3r&Q'@JqP*(k*Nsgu-N/W[QMM[1GLkkta!JQ4*K*$XUJc1,u
+J,Xo`IK"]qJ,OotJH1<$KE$UHKnb>;LPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q=StD[LU8+N[
+VPg>kWiE/&Xfnt6ZEppG[^WcW]"G\h^V@V%_SjF5a2lBFbKS5Vcd:(fe'uq!f@\d1gYCW@hVd>N
+ioB([jlYail07Kulg4!*mf)YUnF?MK!qZ'Vrq6<bs7cKes7uZjqtpBjr;H3cJcF!pJ,~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*f]2m)]0b!0,ThrJg`8lAla-G^":P
+F)c/:D/=!%BP1pgA7B"U?X@%;huDO5h>Z12gY1?[f_jA#ec=8!dgFONcd0n_c-+8Pao.;!Nqn\7
+Nr4t4OS=e@ONbnjaiMQDrPelW`9>,7_Y_7H_>qLM_Yq:QAn#4Xra5S2!+Pq;#\%4N?smDkR'lb,
+s%<;ar_38bs%`Sir_WVls&/hps&B"ur`0)%=BPQ*!a8f4r`f\6?=$uG?smFB@L$CRA7]=aAnV*V
+#AIpfCMRa&D>nDXDfBZ8EH6)@rcA3aG'<k/!dK!9rd"WmI!kpA!e,WKrdb$"!.t0%s+CB+rJ(?-
+s+pW1s,-f6rJ^Tu!0R2@!0R8DrfR64rRh/'pY,Q""l.qihVR/gi;_d9ir8!;jT"<Dk3(slrTO=I
+rp0RM!:BaQ!:B[Os6g$YnaZL<!6P)[oZ?UDnAkOJf`1Z`rPeWQs2G#Vrkn-?0m.Y`G^4U^I!pHn
+J:W?*Knb><M2I4MNK0']OckomQ'I]'R$jD4S"-%@StD[LTq\=]V#R7kVZ!FmW;`d^WrB!sW;WXo
+V?!IlV#R1iUAgi1TV%jJSt2FBS"#k7R(U)FQBd`"PEV/mOcYWbNfB$WN/NSmM$JilLPCP;KnTGX
+s+:9%rIFlsrdO6_rdOirrI=s#JqEuSIY<E/L5(J>Ll$tGMi<USNfT6_OcklkPa.Q$R$a;1S"-%@
+T:hmOUSO]_Vl-JnWiN8(YHY7:Za7'J\%&u[]=bhk^VI_'_o9U8aN2NIbK\>Yd*^:jeC<($f@em3
+gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@s766_rUp3a!;HEds7u]kqtp?ir;H3cJcF$q
+J,~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd=pVn*f]2m$Va.D=MN.D=)63D&7MCGBJ"K
+EH#f4Chm`uB4b^c@U`_P?=!Q)s.TFb!M>t\Sb8NQS,Si\S!oe6R@%jaDYJ#GDXhZFRK&ZOQiE?O
+Q1gO:QiEBKQ2[*KQiEBNQ2HmCPlR-KPlk)g=',2uq,dSs!bZe:r0.,Es%<;ar_38bs%`Sir_WVl
+s&/hps&B"ur`0)%=BPQ*!a8f4r`f\6?=$uG?smFB@L$CRA7]=aAnV*V#AIpfCMRa&D>nDXDfBZ8
+EH6)@rcA3aG'<k/!dK!9rd"WmI!kpA!e,WKrdb$"!.t0%s+CB+rJ(?-s+pW1s,-f6rJU`Hqjd_(
+qelCOrfR,PrhB.^qkX1erMK[nVuEUpWViarX88ptWrT7#Xo5F#YPYO(Z2M!*C]KdtQhcs5Q0jh8
+bl5lfc2Q#bci;>ldJ_Mje,Ro!e^i=Mec44rPjFV2P5:=;Oth*&GBeCZH[L6jIt3*&K8#&7Ll%"I
+N/`jYOHG]iPa.N#R$a;1S"#q=St;RITqS3UrhTRj!2f^ms/>prl`0r`ri#dns/#dmrhTRh!2BId
+,+tR#St;LDS=?":R@'"pO-Z&rP`q;oP*(ieO,f3ZN/W[PreUl9LPLV=KnY3ZKE$Q'Jc1,uJ,Xoa
+IK"]pJ,Om!JV&LQK78K-Knb>;LkpnEMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>j
+WiE,%Xfnt5ZEpmF[^WcW]">Vg^;%J#_Sa@3a2l?EbKJ/Ucd:(fe'umuf@S^0g=tH>hV[8LioB([
+jlY^gkiq?slg4!*mdBQ4nF?&>o)J:]o_nI_p&Ojbq#C0iqYU0gr;?Nardk*ps*t~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*f]2lr3mFq)n@6!'^<Dl9,)0nN?S0
+(j^FNF`_\EE,KN/CM@HpAn>L^@UNPL>u1Dqr(m8d!)NDep.tT_q*+O9k<AoAr(d#]s%`>bpJ(]a
+r(d)alV7IE62WtJ62j1[6UF()6:4(*5sIM"8l>Rd!E<"s;ZBAh9E%W`:&dug:]=2j;?'Pn;u]hs
+<W6##='/T(=TVc2>Q.k4?!^iE?XR8MraH+BA7T7_AnG]TBEr6dC27U$Ci0/h#B+R#EH-#>F8g7_
+F`qs-G63#7H2`*kH[L5?I0+kIJ,XuuJH1<#KE$T)L&Hc+L]<2/M>rJ4MuAV2;ZJrZ49%GA4oUT>
+<;]\m<;BPk<rQ1r=T;P&>5qe.>$5#->5qh,>l@t&>QJ,:q`FjUqGQu`pe^lar_NSlm83h#!H2rV
+EW'qVF8Bt^F`qqPG^'+2rd"Khs*Fco<U<c_<V08e<AAW>GBeCZH[L6jIt3*&K8#&7Ll%"IN/`jY
+OHG]iPa.N#R$a;1S"#q=St;RITqS3UrhTRj!2f^ms/>prl`0r`ri#dns/#dmrhTRh!2BId%%s5b
+St;LDS=?":R@*tN&sefJP`q;oP*(ieO,f3ZN/W[PreUl9LPLV=KnY3ZKE$Q'Jc1,uJ,XoaIK"]p
+J,Om!JV&LQK78K-Knb>;LkpnEMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>jWiE,%
+Xfnt5ZEpmF[^WcW]">Vg^;%J#_Sa@3a2l?EbKJ/Ucd:(fe'umuf@S^0g=tH>hV[8LioB([jlY^g
+kiq?slg4!*mdBQ4nF?&>o)J:]o_nI_p&Ojbq#C0iqYU0gr;?Nardk*ps*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0a8LtsNRs-hNW"n;O8=n-Nu<7h
+G^":PEcH&9D/3p$BP1mf@q&kS?X@$prnmb4!8[Y0!o)G^rn./#rmh,#e,Iksdf7Yscd'eZbPdP#
+O8b1<NW"h8N<#":O8+h6O8k:Hbfe/NaN2EBrl+uX`9G29_YD%=_>qFOQ2R$J@/s^7?i=@@@:NeX
+@q/tV?uV%$_>D(P8kVfN9`7]c:B+,g;#aDm;Z9Vp;ufqt<rZ8$=T2G)>$G51>QJ,:ra5\5!+Gk9
+!b5bOrac+BBDuQGBkhD^CB86grbhaS!-%pW!ci@'rcABfG'8(RG^+N4H3/G@I/\NqIXckHJH(3#
+K)L<'KS>-YLB!&/M#E2'cMWh%OT(FCfDX@qgAK\/gtgfChV\7h!TE&9j8\0CjlY^gkl'cGlMp2K
+li?GPmf)SSmd9u@s7$'Yr/^p#oud$No#U:?rl+qFg&L]_rPeWQs2G#Vrkn0@.!9]WG^=[_I=6Tq
+JV&N-KnbA=M2I7NNK9-^P*2#nQ'Rc(R$jD4S=TYN#+qQ^Tq\<WrhKUlVPa<iri#dpnuD\gri#am
+s/,gmrhTRh!2BIds.B@argj.]SGnukR[KP1Q^3r&Q'@JqP*(lgO,o<\repl9MZ/G5Lkktas+LH+
+re(6&s+1-!rdXorm="t_s*suts+13%rdt6)L&Qf-LPYqdD2O71N/`jYO-#KeP*;,qQC!u+R@9V8
+SXuIHTqS6WUnsueW2ckuXf\b1Yd(O@[C3NR\[f>b]tV7s_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*
+g"P39h;-uHi8N\Uj5f=akNM0plK[^%m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?
+cMrC~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0RHnbQD>\;MDu4GDD&IYFG^":P
+EcH&9D/3p$BP1mf@q&kS?X@$3rhBFds.KCa!1s(Ypmh>S!1a"WrgEhTq/,nEqJH.JpMU%LqeuM&
+s-W\MoTo3;rg*DGrg*SNs-EYLqNUoCrg!PLqJlO9s&]/"oiD3&E.[qM"A2<[9MGCZs%`SirD<Mk
+s&/hps&8tur`9&#s&f8'!a8f4r`fJ0?N+=3?iXX7@KL%MAH$-@AnV*V!blCarbDOND>nGQDZFbU
+E<:0%F8g7dF`qqPGBe@XrH\NlI!kpA!e,WKrdb$"s+:3%!ec8]rJ(?-s+pW1!1j%Xqjd_'rGDFL
+"E/0qTqVFZp7qM\rh]Xls/5jn"/i)sWViarX8B!tWrfB)Xo5F!Y6(r3YPtd)ZM\M=QM-[BQL0t(
+PQkL=c-FVZc2,`bcN;J@dJ_Mndfe+JdaHVBeG[ntf(YErPP^O=Oo(:iF`qtRH?spdI=HcuJqJ`1
+L51SAMN!LRO,oBcP*;,qQC!u+R@9V8Sc52bT:hmOU8+L_U]RBiVZ!FlW;W^dWrB!sW;NRnVZ3Ll
+V#R1iUAgkdTE(V`ScPCPrgORiR@'A.QBmf$P`q8nOcb`dO,f5!MueioreUZ3L]3&.K`Hf*KE$Q'
+Jc1,uJ,XoaIK"]qJ,OotJcC?$K)pXZre:H/M#N6JMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZV5L5iWiE,%Xfen4Z*UdE[^N]V\\#Mf^;%J"_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[.g=tE=
+h;@/KiSrnXjQ5Oekiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*ps*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0<;eoL4T%A&4T.G24<$G0H$FOU
+FE2A?DJa0)BkV-jARf1X?sd5G:/Cgbr(m8d!)NDerD3GirD3Ag!'U-AqE=d>r&sC1s%iSgq+^la
+peUBSqG6]Xs%WDdr]^9F!CB*M5QF+L63'CP5lsA?6N07O7nrhY"A2<[9MGCZs%`SirD<Mks&/hp
+s&8tur`9&#s&f8'!a8f4r`fJ0?N+=3?iXX7@KL%MAH$-@AnV*V!blCarbDOND>nGQDZFbUE<:0%
+F8g7dF`qqPGBe@XrH\NlI!kpA!e,WKrdb$"s+:3%!ec8]rJ(?-s+pW1oi(cO"$AY,4T%A><;TVl
+<;KVp<rZ8$<rH+q=9)M#>5h\)>5_\(?2.\(>l\4/49/7O;Yj8c;"RQQ:]k'CE,bbqrc7sY!d&L)
+rH/'_qKDpard"Hgs*XfGlrNs_oMk]f.!9]WG^=[_I=6TqJV&N-KnbA=M2I7NNK9-^P*2#nQ'Rc(
+R$jD4S=TYN#+qQ^Tq\<WrhKUlVPa<iri#dpnuD\gri#ams/,gmrhTRh!2BIds.B@argj.]SGnuk
+R[KP1Q^3r&Q'@JqP*(lgO,o<\repl9MZ/G5Lkktas+LH+re(6&s+1-!rdXorm="t_s*suts+13%
+rdt6)L&Qf-LPYqdD2O71N/`jYO-#KeP*;,qQC!u+R@9V8SXuIHTqS6WUnsueW2ckuXf\b1Yd(O@
+[C3NR\[f>b]tV7s_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*g"P39h;-uHi8N\Uj5f=akNM0plK[^%
+m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?cMrC~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0a8V%qNVn_8NUDc*NV&2-NW+t7
+O8k=;NrY:@NuNImH$=ITFE2A?DJa0)BkV-jARf1X?sd5GhVS7hs5!b3rnIY2g=b-2qq(hu!7h%t
+#1M#Id*L"^q2kH6s,R&;s,?o9rf?]5rJq0-bfe/NaiOG$!QN+V`;%7M`;daS`;IOO_Y:t<_>ohs
+Pm*Jj_82G'ra>k9?XN_=$=[LTA7K+YAUp8Yr4rA+r_38bs%`SirD3Pm;H!Hl!`W0"r`9&#!*K5'
+s&oD,r`oJ/!+,Y3s'Ph8raGq=A7Y[N!G6!DB`DcHCAquMCi+%gD?4Zprc.sY!-A-]s)e<brceBe
+!."Qis*OcnrdFfq!.Xrts+(0%rIb-'s+UE+n]pijrK.'2!nc2ZptGW"s4mY1s5!b5r8@S6rT!q=
+$g$O6kNM-ol0@R"li$2MmJlVOmJcPRn,MkZnWArqrQ4WQqT8<Ln]1UJs'FCYn&5(Arl"cQnA6Vr
+G'A1VH@($fIXcm!K7ei3L5:\CMi<UTO,oEdP*;/rQC!u+R@B\9Sc52bT:hmOU8"F^V#R:kVYm@j
+W:R"eW;ELmVZ3LkV#R1iUAgkdTE(V`ScPCPrgNqWRJrQ\Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G5
+Lkktas+LH+re(6&s+1-!rdXormX>(`rdXlss+(0%re(6(!/:E,!JcL1M0Oo9N/WaVO,oBbP*2#n
+Q'Rc(R$jD4S=Q7CTV8'RUnjiaVl6SpX/rG+YHY:;Za@0L\%0&\]Y(tn^VRe(`5Ta:aN;TJbg"GZ
+d*^:jeCE.%f\,!4gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@oCMVQp&F^cp\agdq>^<g
+qu-HjrUTr=s3L^q~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0RH\VMD>nGLDuX_JD&[kKH$=IT
+FE2A?DJa0)BkV-jARf1X?sd5GTqVI[s.TIcs.9:_r13YRr1*hXrL<hUs)7mSrGD1Er,)FNpM]nG
+"IbaHR$dc;oTo6<r0I8Gqj.5Hq3:iCrKd4urg!M'!*9)#s&Seo"'TGcMu8b=9E%W`:&dug:]4)k
+;,U<j;Z]ou<W6&!<rcA%=oVY*>Q.n->l\41?iOL6@K'^;@q9-LAH?CUrb2=G!,DLK!c2^jrb_aT
+E;jkWEWC1[FT6I`G5c^cGQ<$gHN/?lI/\QoIK4lrJH(0#K)L?%K`?c)LB!eCSc##TSc<R)D#\AN
+D?OlqTq\:TU\pqfUB%+hV>mCmVu<IqVl6PnWVrgsX8K'tWr]<(rN?+&!3Z.$!3lI-"0uf^D>fdo
+Qi!*9Q0jh9?3AErbfoq.rQbDhrQt\pdF%sA!7Ukq!7h(us4-1oqi^]9rK8UOG'A1VH@($fIXcm!
+K7ei3L5:\CMi<UTO,oEdP*;/rQC!u+R@B\9Sc52bT:hmOU8"F^V#R:kVYm@jW:R"eW;ELmVZ3Lk
+V#R1iUAgkdTE(V`ScPCPrgNqWRJrQ\Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G5Lkktas+LH+re(6&
+s+1-!rdXormX>(`rdXlss+(0%re(6(!/:E,!JcL1M0Oo9N/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7C
+TV8'RUnjiaVl6SpX/rG+YHY:;Za@0L\%0&\]Y(tn^VRe(`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!4
+gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3L^q~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0<;nu>4T@M04Sh544</`pH$=IT
+FE2A?DJa0)BkV-jARf1X?sd5G:/4U`;#F,f:&n)c;#X8i;#O2i;#``V4o.A>4o7A@4nh/?4o@MC
+:]4&a:%_<R:B"&h;#a>_:Amod:&mKS57'SO:JX5@6:!k&r]gHLrBgKL#!t[D6:OREr)3Sgr_38b
+s%`SirD3Pm;H!Hl!`W0"r`9&#!*K5's&oD,r`oJ/!+,Y3s'Ph8raGq=A7Y[N!G6!DB`DcHCAquM
+Ci+%gD?4Zprc.sY!-A-]s)e<brceBe!."Qis*OcnrdFfq!.Xrts+(0%rIb-'s+UE+s&&bnp/C`L
+"[5(34[)%.<;BJl<;KVo<rQ/#<r?%p=9)M$>5h\)>5_Y*>lJ%(>l@q.?N*(c;=[W];>j>Z:\@Qa
+?Mnd@E<(%XF8p:\ErpH+G5ZXbG5ladGl;peHN&9i<U<c_<V08h<@N$5GBeCZH[L6jIt3*&K7nu6
+Ll$tHN/WdXO-,TgPEhE!Q^F/.S"#q=rgj=dTV8'RU8.^`s/#amr29Llo;V\eqksIks/#[is.]Rg
+rh9@b!2'7^!M,b[RfStGrg4%ZQBd`"P`q8nOc]R'!KN0=MueioreUZ3L]3&.K`Hf*KE$Q'Jc1,u
+J,XobIK"]pJ,OotJH1<$KE$T)L&Qf-LPYqdG`%E<N/`jYO-#KeP*;,qQC!u+R@9V8SXuFGTqS3V
+UnsrdW2ZetXKAY/Yd(L?['mEP\[f;a]Y;.q_8=(-`Q#s>ai_fNc-FY^dF-Lne^i@)g"P07h;-rF
+i8EVTj5f=ak3(sml0@U$m-X6/n*fc9nac8BoCW"Ss7QHer:p<fs8)WirVZTlo)=4?ci8L~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]S`rJ^T4rf$]5oSiR)qi(H4rf6i9
+q2kW;rfA.KI!U'^G'%hHEGo`3CMIQsB4YU`@UWYO?<uFFhYuF4h?VllgtUQ9f\$&Prmh)"rR:u!
+da6@eoT8j/s,I/?NfF$ur/^K3#LC]>bK@rKaSj0Z`rF![`l5m7qnrBN!5ncRr58NNpVZR=qj%)F
+qSE;sQBq8Q!b#PIrF5nPO/i2q!_Z3\rD!;es%iSis&&eor_rhrs&K&!s&T2&r`T8)!*fG-s'5V2
+ra5\5!+Gk9s'l%>rac.CB4q3W!GQ<JC]A2ND>nDSDfB[pE<:0%F8g7_F`qs-GQ2mfH2W$jH[L5?
+IK+crJ,XuuJcC?$KDj'hcMu/ecM`juOTLWsf`'S$gA0M'g]610hZ)L4i;_d9ir8!<jT"<Jk3(pk
+kiq?slg+N9p?hkI!:TpV!qDD8prW6Pq8r*Hp;d*Ns'>Y0g].;mn&5(Arl"cQo"lkuFa&%SH?spd
+I=HcuJqJ`1L51SAMMmFQNfT9aP*;,qQ'Rc(R@9V7S=TYN!M?%aT`Us`U].(hV>mFhVt-e_VuNXn
+V>d:jU]7(fU&UbcTDkDnSXc4>S!ob5R$a5+QBd`"PQ$^VOcYWbNfK*XN/NUOM2@%EL]3#0KnP-Y
+KE$Q'Jc(&uJ,OicIJnWpJ,OotJcC?$KE$T)L&QgALPUeDMMmCON/`jYO-#KeP*D5sQC!u+R@9V8
+SXuFGTqS3VUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2(p^r!t+`Pom=aND]Lc-FV]dF$FmeCE1&
+f\,!5gtgfDi8ESRj5]4^k3(t-klpA<m-O--rpKmWnc&+Zo)SF^p&Facp\jmdq>^<gqu-HkrUTr=
+s3L^q~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]S3kAKBuphg(Mq/6+I*IW<]H$=FR
+FE2A>DJa0(BkV-jA7K(W?sd5GTV8(YUA^bdTV)+Pq4.AR!1a"Ws).[Omr&,Ar,2CMqJQ>%s-`nS
+r0Qu?pm:oErg!>Grg!>ErK[>Ip2U+tr0@G&EH,%L<rulRL&R8;92&%X:&dug:]4,i;?'Pn;u]hs
+<W6&!<rcA%=oVY*>Q.n->l\41?iOL6@K'a9@fU'=AHHIVBDuQFBkmW_s(h[Prb_dUE,ber!ci@'
+rcA3aG'<k/s*+NhrH\NlI!kpAs*jutrdb$"s+:6&r1*\UrLE_T!,h^Or+uCMrbhb1pnR_^rhKLh
+s/#Og!N2mqWW0!uX8T-uX8f:$XoGR&YQ(d$Y5kg+Yl_4KDYTOnQi!*6Q1:+=?2n10bl>ofbl,fc
+c2c2hd/25hdf7ereGn"se,e+Nj-0A'p6#B<.WffWGBeF[H[U<lJ:W<)KS>/9Ll%"IN/`jYOHG]i
+Pa.N"Q^F20S"#q=rgj._T`1VdU8+L_V#R:kVY[4]W;<FlVZ*FkV#R4iUAgkdTE(V`Se.H_S=?":
+R@0G0Q^3r&Q'@L3Oq<b;O,o<]NJrgSMi*@JLkpicL'!'^K`6W(K)^E"JH(,tIdhdaIfForJH(3#
+K)UE&KE-`*L2)L"M2@+JMi<USNfT6_OckllQ'IZ%R$a;1S"-%@StMdNU84T]VPgAlWiN5'Y-5(7
+ZEppG[^WcW]">Vg^V@S$_Sa@3a2l?EbKJ/UcHstde'umtf@S[.g=tE=h;@/KiSrnXjQ5Oekl0fM
+lKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*qs*t~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]RCrB'%%pcIk*!'Ts:)L[!ZH$=FR
+FE2A>DJa0(BkV-jA7K(W?sd5Gr_EGgs%r_kqG%#do2,B]r]^!<r'(!@rB1!@q`ap@!B`OD:]4&c
+:&du]:\7E^:]+&h:\IQ[:&@0Q5lOUY:BimG5XIb&6N04P5sdn*rBUQQ6UaUBr_ikk9MGCZs%`Si
+rD<Mks&/hps&B"ur`9&#!*K5's&oD,r`oJ/!+,Y3s'Ph8raPn;!+c(?!bQ(Xrb)=HCAr#KC]J>O
+D?=`qE;jhYEcZ=$F96T.G5c^cGQ<$fH3/G@I/\QoIfFosJH(3#K)UE$;#X>k;YF&]4o[\G4nhkT
+<;BPo<q]Vk=T2J'=ohc0r`T8)rEK8+!+#;'s'5_3>s(7E;>*o];>j>Z:\die?2n1/E;abXEcZ=#
+EWpN+F`hnPr-&'`rceEgrd+Tk!.=ZDlrNs_oMkij.WffWGBeF[H[U<lJ:W<)KS>/9Ll%"IN/`jY
+OHG]iPa.N"Q^F20S"#q=rgj._T`1VdU8+L_V#R:kVY[4]W;<FlVZ*FkV#R4iUAgkdTE(V`Se.H_
+S=?":R@0G0Q^3r&Q'@L3Oq<b;O,o<]NJrgSMi*@JLkpicL'!'^K`6W(K)^E"JH(,tIdhdaIfFor
+JH(3#K)UE&KE-`*L2)L"M2@+JMi<USNfT6_OckllQ'IZ%R$a;1S"-%@StMdNU84T]VPgAlWiN5'
+Y-5(7ZEppG[^WcW]">Vg^V@S$_Sa@3a2l?EbKJ/UcHstde'umtf@S[.g=tE=h;@/KiSrnXjQ5Oe
+kl0fMlKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*qs*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fY`r/C]:q2GB5oSr^+m>_+*qN(B4
+s,e=NI=$9cGBS(LEH,o7Chmd!BP(gd@q&kR?X@!ohYc:2hZ)C8gtUQ9f\$&Prmq,"rmV"uda7HE
+p5f66pQ,-3s3Ctrc-+;QaiMNDrl=uWs2=uVr586Ho#("7s-<AFpVQpGs-<^o?XNV:$XmLR@q0>0
+T"2\R9`7]c:B+,g;#aDm;Z9Vp<<#tt<WZ?)=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$-AAnPcU
+BEDm_CAquMCi+%gD?4ZprG_mZF*%>&!d/[0rceBe!."Nh!df<BrI"iuIt,\cbPfZ_c2,`ac2Grf
+O8t@>OSP%=OT3u4g&'M#g]-(.h>c@2hZi#tiSrkWj8S->jo=KBk61#5l0@U5m.B]Emf)\VnrWIb
+qo\ZTlcB"Eqo8V?s'+:Yo#:IDqSiHPrPS<F/AZFNG'A1VH@($fIXcm!K7ei3L5:\CMi<UTO,oBc
+P*;,qQC!u+R@9V7S=TYN!M?%aU&UheU]%"gV>d@WVuERnV>R.hU]7(fT`UmZTDkDsSXc4>S!oe6
+R$a5,QBd`"PEV/mOc]R'!KN0=MueioreU]4LPPk`!el;\re(6&s+1)urdXornU:@bs*srss+13%
+rdt`7KnY89LPUbCM2I4MN/`ksO)0o@P*;,qQ'Rc(R$jG5S=Q7CTV8'RUnjiaVl6SpX/rG+YHY:;
+Za@-K\%&u[]=bhk^VI\&_o0O6aN2KHbKS8WcdC.ge'uq!f@\d1g>(N?hV[8MioB([jlY^gkiq?s
+lg4!*mI'H3nF?&JncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*rs*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fY3r,(\9kABO&++AWbH?j^XFE;GA
+Df0B,C1q9mARo:[@:*AJ>bIa`U&LebT`LgYr13VQr1*nZS"'1jqJY;0rL*eUR$dl>nWrm8r0@>J
+pm1c@rK[;Hp2U+tr0I;Hs-3P'r`8eqs&T/$#$l(oNg#Z#rD!;es%iSis&&eor_rhrs&K&!!`rK+
+r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>rac.CB4q3W!blCarbDROD/K8i!H2rUE<:0%F8g7_F`qs-
+GQ2mfH2W$jH[L5>I0+kIJ+]?0Sc>5USc3L+DYn;KD#\>PUA(G^V#7"eV#R:gVZ3RoW;`grX8]4!
+X8f:#XT5O&YPt^$YQ(j+YlV.Io9T<@qj-B0p6>P]s',EFrQY>erQkJirR(VmqpYPos4-+mqi^`:
+rfSdRF`qtRH$XgbI=?ZrJV/T.L5(M@M2R=ONfT6_P*2#nQ'Rc(R$jD4S"-&KScPIVrh9@d!2KLg
+s/#^llDOWYs/#Xhs.fUgrh0CdT:c+S'qLkbS"#k8R@'A.Q^3o%P`q;oP*(k*Nrb9#repl9MZ/G6
+LkgcbL'!'^K`6W(K)^E"JGt&tIdqjbIfFoqJH(3#K)UB5KS>,7L51S@M2@+JN/WaVrf:lWP*2#n
+Q'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`lQ6CbKJ,T
+cHjncdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;rpg-^o^r.Us7ZKerV6Eg
+rqcNhrqu]mo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fXCr&`q$niQ5$r&ap@)h*3^H?j^X
+FE;GADf0B,C1q9mARo:[@:*AJ>l@Fs:]F8k:]!oe:\dib;$'Qi:\m9/4oRPE:JUmbrD*;cr_E2`
+!`2ZgoM5E^r_WMgpJ(``:Amoe5PRM@;#3uf5l<tJ5Rp(H6:4"'5s[n19N"ef9`7]c:B+,g;#aDm
+;Z9Vp<<#tt<WZ?)=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$-AAnPcUBEDm_CAquMCi+%gD?4Zp
+rG_mZF*%>&!d/[0rceBe!."Nh!df<BrI"`rIt.Gqs&&Vhs&&bnpJ_&RnicbHs&Akqs&SeoqcNSq
+s'#A*mT]cu4S)GI;XdQ_;!q-X;#X`">Q8[AEW'nXEW0t[F*)O%FoHR_G63#7H2W$iH[PWhlrNs_
+oMd>_F`qtRH$XgbI=?ZrJV/T.L5(M@M2R=ONfT6_P*2#nQ'Rc(R$jD4S"-&KScPIVrh9@d!2KLg
+s/#^llDOWYs/#Xhs.fUgrh0CdT:c+S'qLkbS"#k8R@'A.Q^3o%P`q;oP*(k*Nrb9#repl9MZ/G6
+LkgcbL'!'^K`6W(K)^E"JGt&tIdqjbIfFoqJH(3#K)UB5KS>,7L51S@M2@+JN/WaVrf:lWP*2#n
+Q'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`lQ6CbKJ,T
+cHjncdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;rpg-^o^r.Us7ZKerV6Eg
+rqcNhrqu]mo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$rJpT2!05rrrJpc9pQ-GY
+JUi2tH[9p\G'%eFE,TW1CMINrAn>L_@UWVN?!RBdro!h6s5*e3"l.kdg"=sRfDaA"eH47Le*E+`
+O84n:cNMP<bfe0.aTBQ(aSs6[`rF!X`;[[H`;%4M`;@IE_Xs/h_YM"LP*VF0?iFF<@:E\WI?q%P
+rD!;es%iSis%rborDW_q!*/tu!`rK+r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>ral+A!,):Es(MIJ
+rbMOM!,_^Qs).mVrc.sY!-A*\!d/[0rceBes*=Ti!.4Xe!6Y;arQP2arQb8arQb>%!0I2@rfI&?
+s,d95s4R;'rS.>,rS@M1rnmb7s5O(=s5a.?!9X:Ds6'XNlKdd&m/?>Om.fuJmf2_WnF?,KaR[FQ
+b4Wm?aSNm[>[(E9>$9Y\!64TKo>L:=r5/JU.WorZG^=[`I=6TqJV&N-KnbA=M2I4MNK0']Ocklk
+Q'IZ%R$a;1S"#q=rgj1`TV2:X!huHbr1s=grMK4br20Iir1s@fs.]Lds.KCargj@cS=H(<R[TZD
+QiWP>rfmMKPQ$^LOcYWbNfK+uMueioreU]4LPPk`!el;\re(6&s+1)urdXlqo6pRdrdXlss+13%
+re(6(!/:E,!JcL1M/\?1N/WaVO,oBbP*2#nQ'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(6
+ZEpmF[^N]V]">Vg^;%J"_Sa=2`lH0Bb0/#RcHjkbdaQ^rf%8O,g=k<:h;7&Ii8N\UjQ5OdkNM0p
+lKdd&m-X6?mfDqJrpp*\!;-9`s7ZKerV6EgrqcNhrVZWmo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$k&0I$lu!hpJ:;onH?aXW
+FE;G@Df0B,C1q9mARo:[@:*AI>lLGpUA^bdTV).QpmhATr1*V$no*Z.r0dYSR/NBCQLpO8QN*6J
+Pl6mGQLo.sQ26gHQ26^HD/jRk<rH,"<WlN;G)):[:&dug:]4,i;#jMm;u]es<W,r"='/T(=oVY*
+>Q.n->l\41?iOL6@K'a9@fU'=AcH?BBDuTEB`MoIC]A2ND>nGQDZFbUEW:%ZF8^1^F`qs-GQ2pf
+H2`*iHi'<*SFW6KD"VZFD"j_)V#-qdV#I4hVZ3OrW2Zbrr2]gu!3?+#rN-(&ric4%qQKq's02R1
+mZmj>qNg0,qNM1h>?b97=j-fgrQY>erQkGhrmCVkrmUboj-/qps)]`5GB\:XH@1-hIt3*%K7nr5
+LPUeEMi<XUO-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSIa_rh]RjoV_Varh]Ogs.fUgrh9@b
+s.B:^#G%BTS"#k8RJrQSQ^7W9!L/fIOp7&1O,o<]NW+k;Mi.Lj!f2Vere:K.KS9>Ws+:9%r.+cr
+rI4?drI4`qrIFp!s+:6&s+CB+re:H/M#N6MMMmFPNK0'\OHG]hPE_>tQC!u+R@B\9SXuFGTqS3V
+UnsrdW2ZetXKAY/YctF>ZaI6M\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f@em3gYCWA
+hr*GOioB+]k2tjjl07L!lg4!*mf)YUnF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcF*sJ,~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$j#l]jniZe2*J&`iI=$9b
+GBS(LEH#i6Chmd!BP(gd@q&kR?X6q9:Adof;#a>i:B+,a;#F2j;"d*04oRPH:JOY\:]!le:&[oa
+:]F/i:]=2i:\@K^:B45h:\7E^:%U^J;"dZf4?u.u62j1[5sR\$6:4()5X@n5:fI<es%`SirD<Mk
+!)ibos&8turDiu$=BPQ*s&oD,r`oJ/!+,Y3s'Ph8raPn;!+c(?s(27Drb2=G!,DLKs(h[PrbhaS
+!-%pWs)J*\rH&*`G'<k/s*4Qhrd"Qkqbd>js&&Vhr_`Ympf%,Qr&j^:q,@;mrDihtoN1unqcWr$
+s&oA*rEK5*s',>)"']#7>Q%e,?1(Pi;X73Y;"%0g>[(E9>$5f`EH6)>ErL%_EcZ;DF`hg*Fo?L_
+GPugdHN&9e<U3]S<W@.jFa&%SH?sseI=HcuJqJ`1L51SAMMmFQNfT9aP*2#oQ'Rc(R$jD4S"-&K
+ScYOWT`1VdU8+L]V#I4hVY$eaVZ*FiV#R4iUAgkdT`:Y`Sd1gVS=?":R[O/B!LK,OPl[,5rfRJJ
+OH5H_NfF$s!K2j7M#rKgL]3#0KnP-YKE$Q'Jc(&tJ,OifIJnWoJ,OotJcC?$KE$T)L&Qf-LPYqd
+E/KR4N/`jYO-#KeP*;,qQ'Rc(R$jG5S=Q7CTV8'RUnjiaVl6SpX/rG+YHY7:Za7'J[^`lZ]=bhk
+^VI\&_o0O6a2lBFbKS5Vcd:(fe'uq!f@S^0g=tE=hV[8LiSrnYjlY^gkiq?slg*p(mI'uB!V#XY
+o)J:]o`"O`pAamcq#C0hqYU0gr;HTbrdk*rs*t~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+oN<#%9NpD])
+NrG%;Nr>%=O8t@9O<9++J:;onH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HhV\=js5=+=hr!;IrnR_3
+g=b-2qUbYrs4%,!muRO3qN1**rK.!(s3:Sf"3\j0ao0<[a8a-Z`UCbA_u@UO_u%:N_u@OEQMA>m
+_>;"LQBhASrEoS4$=RCbNM]EE:/4S\rD<Mks&/eo!`W0"r`9&#s&f8's&oD,r`oJ/!+,Y3s'Ph8
+raPn;!+c(?s(27DrFc7HC23``!c2^jrb_dUE,bers)J*\rH&3cG'8(RbPo``bPoWdbKA#Orlk;b
+s3CPes31Jerm(J(pQ,?9rfI5Cf`'S$gAfq-h##q-h>lI4i;_g9irJ0=jo4EBk6C/7lK[^$m/?>N
+m.fuImK;qInauXukfN,2r5\iWs',M,rE7tVrl4NJo>L=>rPC@3FEMbNG^4U^I!pHoJ:W?*KSG5:
+M2@+KN/`mZOHG]iPa.N"Q^F/.R[]e:SXl@DT:_eUU&UkeU\gkcV=^Y`V>I(fU]7(eU&UbcTDb>d
+SXc4>S!oe6rg3_QQN!-MP`u*0%$?X5O,o<\NJrgSMMhCi!JlO1LAuu-K`6W(K)^E"JGt&rIeA-f
+If=ipJH(3#K)UCPKS>,7L51P?M2@+IMi<USNfT6_OcklkPa.N"Q^F20S"#q=StD[LTq\?YV5C/h
+WN*##Xf\e2Yd1UA[C3NR\[f>b]Y;.q_8=(-`Pom=aND]Lc-FV]dF$FmeCE1&f\,!5gtgfCi8ESR
+j5]4^k2tjjl07L!m-O--mdKW6s7-*Z!qZ'Vrq6<bs7cKes7u]kqYU9ir;H3cJcF-tJ,~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+aDX;6-DBFL^
+J:;onH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HT:l1Wr1a+_!2'1[pmhATrg`h&lYcc@rGV4DrL3bS
+s-WbOop5-7p6PWAs-3PKs-<YOrg*.q!1!DHs-<GFrK[AJs)A!<q,[Ms$!(GRJ5&a5:/=[a;#aDm
+;Z0Mq<)lrt<rZ8$=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$0?AcQKBBEDm_CAquMCi+%gD?=`q
+E;jkWEWC1ZF9Qf1G'A/!p7(`Fnt#YorbMOMphff$!2B=brM9Iirhf^ns/5stWr&jrXT,F&Y5bX'
+Y5b^%Y5GL%YQM/9Z^9g?i0F>,s',M,rE9-D!mSs5rQY;drQkJirmC_nrR1o!e'ujqifikp1NRY\
+G'A1VH@($fIXls"K7ei3L51VBMN!LRO,oBbP*;,qQ'Rc(R$jD4S"-%?St;RHT`1YbUAq"cV#@.^
+VZ!@gV#I.hUA^ecTE(V_Sd1gVS=?":R[O/B!LK,OPl[,5rfR\POH>NaNfB$WN/NRNreUZ3L]3&.
+L&Zi*KE$Q'Jc(&tJ,FcgIJnWoJ,FisJcC?$K7AQ.Knb>;LPUeDMMd=NN/`jYO-#KeP*;,qQ'Rc(
+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J[^`lY]=bej^V@V%_SjF4a2l?EbKJ/UcHstd
+e'umtf@S[.g=tE=h;7)JiSrnXjQ5OdkNM0plKdg'mI'E2n*pAIrpg-^o^r.Us7ZKerV6Egs8)Th
+rqu]mo)=4?dJn^~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+o49.P94RG6$
+4T%8_K7SQ%I=$9bGBJ"KEH#f5Chmd!B4b^c@U`_P?X6B#r_EAes%r\jr_EJhpeV#h;H!Kknim%9
+!']^3pcS(AqbR5e!)NMhs%`\k:J^^[qbQo\!)NShoKWC@qbZfYs%r_\s$?WN!($TLs$I,Z5X\1>
+9heAX:J^pcs&&eorDNbs<E9$!s&]5&r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>ral+A!,)7D!blCa
+rbDROD/K8i!cN$src.sY!-A*\"Eem2GBa$a!Du\i;>jDm;>X2h;>sJg;u/TO4T%A=;uTbr<W?+t
+=8u=s=8l>"=oDG&=oDP(>Q%h+>Pqb&>6A,7>[>fUrD<,^s',M,rE08BEH6&<rGhgX"E\d.FERS)
+s)eEeGB\<1H2`-iHN8Hf<U3]U<AS]<F`qtRH$XgbI=?]sJV/T.L5(J?M2I7NNK9-^OckomQ'IZ%
+R$a;1S"#q=SXuFFT:l1Ws.]OgqkX1eoVVS`qkX4ds.]Ics.B@arLO7bS=H(<R[TZDQiWP>rfmMK
+PQ$^ROcYZcO,f3ZN/W[PMZ/G5Lkktas+UK+re(6&s+1)urdXipomQdfrdXirs+13%re#]RKnY89
+LPL\BM2I1KN/WaVO,oBbP*2#nQ'IZ%R$jD4S"-%@T:hmOU84T]VPgAlWiN5'Xfnt5ZEpmF[^N]V
+\\#Me^;%G!_SX71`Q-'@b0.uQcHaeadF6Upe^rF*g"P39h;-rGi8N\Uj5f=ak3(sml0@U$m-X6/
+n*fcGnc&(\oCV\Sp&Facp\jmeq>^<fqu6NkrUTr=s3^js~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)=d4bn*]T0lg!a!kN:pfj5T%Uhqd,Cg=_J[
+NpVi(Nr+n0O<K7.J:E#rH[9p\F`_\EE,KQ0CMINqAn>L^@UNPM?/OPtro*n:%,p.&hqm2FgtUQ9
+g"?/Qqpt_,rfI#<r/g`:r/gK1qiLj(s3CYhs3(Sgb0%j(aT'<\`W4!H`;IOM`;@IO_YqCBQ2ni!
+_YM%A_Yq=J?41+H?=7/WKM>3::J^pcs&&eor_rhrs&K&!s&]5&r`T8)!*fG-s'5V2rEfV6@:B.E
+!b5bOrac.CB4q3Ws(MIJrbMOM!,_[P!cN$src.hWrQG/`!6b2\s3(AbrQP>drltAbrltJgqiUf<
+q2YW>YcudZg&0P*gYCT\h>c=7hr*GOir.p:jo4EAk5sl3l2KuJlh]uCmJlVSmfN"Lo^p5kam@+E
+a8]?A=oVS(=5NuF`r3mM`:q1K_Z.ORF=_TZGBnL\I!pHnJ:W<)KS>/9Ll%"IN/`jYO-#NfPE_>t
+QC!u+R@9V7S=H/LScYOWT`1YbUAgqaV"CMZV#I.hUA^ecT`:Y`T)Y>]SGo#XRK/cTQk>[NQBd`"
+PEV/mOcb`dO,f6[repl9MZ/J4L]E50LAur-K`-Q'K)^E"JGjuqIeeEhIf=ipJH(3#K)UE&KE-`*
+L'EEhLl$tGMuJZPNK0'\OHG]hPE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZetXKAV.YctF>Za@0L
+\%0&\]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.ge'uq!f@\d1g=tH>hV[8LiSrnYjlY^gkiq?slg*p(
+mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*ss*t~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)"I+an*]T0lg!a!kN:pfj5T%Uhqd,Cg=c"6
+m;;9/+bPAsIsufmH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HTV/"XUAUbeU7qRZ!1s+Zpmh>SrGV[Q
+iG\@+rL3bSqj.;KrKmDIn<`j7q3:rGrKm%oqNh/HqNUrDrg*MJrKR:]q,R]*CJ@Q!:J^pcs&&eo
+r_rhrs&K&!s&]5&r`T8)!*fG-s'5V2rEfV6@:B.E!b5bOrac.CB4q3Ws(MIJrbMOM!,_[P!cN$s
+rc.\$p7)&O!1WbRoUYkrr+u@JrG;LNs+U?FrM'1arhTRjrMKRms/Gjqs/Z4&n#lVmr3-7-ZEsIq
+l'C4ls'#A(s&]>(bKKk.rQY>erQkJir6bPm!7Ukos3okhoTK6<s)]f8GB\=YH@1-iIt3*%K7nr5
+LPUeEMi<XUO,oBcP*;,qQ'Rc(R$jD4S"-">rgj1`TV2:Xs.]LfqP<b[q5""bs.]Ics.KCargs.\
+!1a%Xs-`qUrg4:aQBmf$P`q;oP*(lgO,o<]NW+k;Mi.Ljs+gZ1reCH,!/1<'s+:9%r.+`qr-nHi
+qgSNor.+fus+:6&s+CB+re:W4LkpnEMMqImD2jR:O-#KeP*;,qQ'Rf)R@9V7S=Q7DTV8'RUnjia
+Vl6SpX/rG*YHY7:Za7$I[^WfX]"G\h^V@S$_Sa@3`lQ6CbKJ,TcHjncdaQ^rf%8R-g=k<;h;7&I
+i8N\UjQ5OdkNM0plKdd&m-X6?mfDqJrpp*\!;-9`s7ZKerV6Bfs8)WirVZWmo)=4?dJn^~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)"I+an*]T0lg!a!kN:pfj5T%Uhqd,Cg=c?c
+s#^$=m5sl$rAu0TJq/?"I=$9bGBJ"KEH#f5Chmd!B4b^c@U`_P?X6B#:AI]c;#X8i:B+,b:]OAl
+;Wg744o%5=:%V3[:]=,h:]+&e:\RW]:\[]`:\R*S5Q!eE;"@EV:]aEY62j1N62j.K6Np"T:/4S\
+rD<Mks&/hps&B"ur`9&#s&f8's&oD,r`oJ/!+,V2!aoGFraGq=A7Y[N!bQ(Xrb2=G!,DLKs(h[P
+rGD[TE,berqbd5gpeh#gr_`Mgr_`\nq,?rJ!'L6DrB1*Nqc!Jn!``9%r)`kur)`eur)ru#s&f>*
+r`T8)qHNo's',M,qca)+?-cCH;#!id>5_V(=92KCrc%jV!ci@'piHR[G'<k/"*f*:GlDsiH@1+t
+<q98jF=_TZGBnL\I!pHnJ:W<)KS>/9Ll%"IN/`jYO-#NfPE_>tQC!u+R@9V7S=H/LScYOWT`1Yb
+UAgqaV"CMZV#I.hUA^ecT`:Y`T)Y>]SGo#XRK/cTQk>[NQBd`"PEV/mOcb`dO,f6[repl9MZ/J4
+L]E50LAur-K`-Q'K)^E"JGjuqIeeEhIf=ipJH(3#K)UE&KE-`*L'EEhLl$tGMuJZPNK0'\OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZetXKAV.YctF>Za@0L\%0&\]Y(qm^VI_'_o9U7aN2KH
+bKS8WcdC.ge'uq!f@\d1g=tH>hV[8LiSrnYjlY^gkiq?slg*p(mI'uB!V#XYo)J:]o`"O`pAamc
+q#:*hqYU0gr;HTbrdk*ss*t~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhfPmZ%4+q2b-/,DCc%J:DupH?j^YF`_YDE,KN/CM@HpAS#@\@:3GK?/XVti;V^8ir@sE
+i8<DJh;$c=g"G$RfDa@tO8Y+=O8k7=O8P+9Oo1==O8k==O8b4BOjDDRcMu/hbl>inb/qcHaiMQD
+a2Z-u`ULhG_t_1I_Z7RQ_siuj_u@OK_=b\;_>dgA?2e.5A55lq:]4,i;?'Pn;u]hs<W6&!=8uD%
+=oVY*>Q.n-?2n71?NOVD@K'a9@fU'=AcH?BBDlKFBkhD^CB/2HaSX*Zb5TT`bQ,ibb5]T^aoKW`
+bl>rebQ,o`bl>rfcMN_%Oo(7:Yl38TgA]k%h>c=9hr*GOioB(uj8e<@k5OQCkQ'lGlMp2Im.fuJ
+mf2_WnF?/?aR@7=aS<gS=oVV'<rc:Xs6[i)`V.7F_u7G%F*)PJGBeCZH[U<kJ:N3'K7nu6LP^kF
+N/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%Mrgs.^s.K=as.]Lfm%jTTs.]Fbs.KCarLO(]S=KSJs-`qU
+rg3qWQBmf$Pa%C2Oo^],rf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc(&sJ,=]lIJ\KlJ,Fis
+JH1<#K*$^[L&Qf-LPYqd"cA4sN/`ksO(j]<P*2#nQ'Rc(R$jD4S"-%@T:hmOU84T]VPgAlWiE/&
+Xfnt5Z*UdD[^NZU\[oDc]tV7s_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@(f\5'6gtgiEi8ESRj5]4^
+k2tjjl07L!m-O--rpL*]naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3gpt~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhN(n87`6rG<d5K7\W'I=-?dGB\1OEcH&9D/=!%BP1mf@q&kS?X@$3TV/"XUAUbeU7qRZ
+!2'4\pRD5SeSk5#r0mYQp6PlIQ^3s)QhHaDQ2[*KQgf"kQ2m3HPl-gGQMm*FPl$aG<rH#$=ADUe
+:]4,i;?'Pn;u]hs<W6&!=8uD%=oVY*>Q.n-?2n71?NOVD@K'a9@fU'=AcH?BBDlKFBkhD^CB/2H
+RJ**?S+rNGSbm7%D>S/GL&IeEUAL_cV#R:iVZ3RoVuiruWr&h(XKAV-Y-5%3Y-"i#Y5GL%YlCs0
+Z^-pRQgC$rQ2Okc=T2A'<m/\_bl5lcci;>lci2;kdJ_MmdJ_MMPOt"fF*)PJGBeCZH[U<kJ:N3'
+K7nu6LP^kFN/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%Mrgs.^s.K=as.]Lfm%jTTs.]Fbs.KCarLO(]
+S=KSJs-`qUrg3qWQBmf$Pa%C2Oo^],rf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc(&sJ,=]l
+IJ\KlJ,FisJH1<#K*$^[L&Qf-LPYqd"cA4sN/`ksO(j]<P*2#nQ'Rc(R$jD4S"-%@T:hmOU84T]
+VPgAlWiE/&Xfnt5Z*UdD[^NZU\[oDc]tV7s_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@(f\5'6gtgiE
+i8ESRj5]4^k2tjjl07L!m-O--rpL*]naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3gpt~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhYN!'KX1niZk4,DCc%J:DupH?j^YF`_YDE,KN/CM@HpAS#@\@:3GK>u"*g:AI]c;#*o^
+:]XEkl9522ofi::s$$<CrB1!PoM,B^qbI/er)!>fp.kK\qG.#cr]g?HpHSRPnk]*Ys%`VkpJ:fU
+#XCU=5XS:A:J^pcs&&eor_rhrs&K&!s&]5&r`T8)!*fG-s'>Y2ra,_7@:B.Es'l%>ral+A!,)7D
+!blCarbDLMr)!Gjqbd,dnko6[!)`YlqGZuIs#g-K!*&nqs&B"us&T,#qc<Vrr`K2'!E`M$=Sl8$
+>5MP(>lIt,>5DG'?-?+D;#F,f=oVV'<rc;#E;sqXErL._F*)MFrH/!]s*"]mH$FRZH$Xi:I,@ur
+<@W'3F`qtRH$XgcI=?]sJV/T.L5(J?M2I7NNK0']OcklkPa.N"Q^F/.Rf8cWS=TYNs.B=arLs7c
+rhJhUrM0Cer1X.`s.B7]!hGjOrgWqV!1EhR#FCaBQ'ISuPQ$^GOc]R'#EFe'N/W[QMZ/G6Lkgcb
+L'!'^K`-Q'K)^E"JGjupIf"QjIf4coJH(0#K)L<'KS>-ZL&m'creUf9Mi<USNrG)ROHG]hPE_>u
+Q^F/.R[]e:SXuIHTqS3VUnsrdW2ZesXKAV.YctC=Za@0L\%0&\]=bhk^VI\&_o0O6a2lBFbKS5V
+cd:(fe'uq!f@S[/g=tE=hV[8LiSrnXjQ5OdkNM0plKdg'mI'uB#Oq9Ro()DDo_nI_p&Ojbq#C0i
+qYU0gr;?Nardk*ts*t~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`Uf)fNrG+.O<TF5K7\W'I=-?dGBS(MEcH#8D/3p$BP1mf@q&kS?X@$uiVqd7
+iW%p;i<eH"hVR)DgY1?5pt#MsrK-r<oo9$5qN1Q9o8s!5s,[9.ci)/hc2PohbK@uLrQ+uYs2P&W
+ji$u4!L8uMQh6U@_th.B_X,,:_>qLQ;#aDm;Z0Po<<#tt<rZ5$=T)D&=o_e+>lS+0?N+:5?t!LC
+@fKp=A7bbZr5S]Up;m0Rs2t2]!6Y5]qo\r^!R/adbl>l^bl5iecM3M"OnQ!Zg&B_)g]-()h>c=8
+hr*JPioC%!#3G"0kNM-orojCHrTaCJr9X1Fs6fpU!qGp)mE"k?nAt@Es&oA(s&],!huE#^rPeNL
+pr!*J.s#fTG'A1VH@($fIXcm!JqJ`1L51SAMMmFPNK9-^OcklkPa.N"Q^F/.Rf8cXS=Q5MScYOW
+T_tM^UAUe]V#-qcUAU_bT`1S_T)YA]SGo#XRK/cTQi`V?QN!-MP`u*0#Eb+0O,o<]NW+kAMi*CK
+M26tCrItB-KS9;Vs+:9%qgeWpnp^Oeqge]ts+:6&s+CB+re>NMLkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmOUSO]^VPgAlWiE/&Xfen4Z*UdD[C3QS\[oDc]tV7s_8=+.`Q#s>ai_fN
+c-FV]dF$FmeCE1&f\,!5gtgfChr*JQj5]4^k2tjjl07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<bs7cKe
+s7uZjqtp?irVc<dJcF0uJ,~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`VXQDD=VTDD'F^gK7\W'I=-?dGBS(MEcH#8D/3p$BP1mf@q&kS?X@$5UAgkc
+UAUbjU7n6QT:VVHSGI1(E8kg9E;=GNDZ#q)R@'AuQh?[EQ2R$KQg\qkQ2m3HPl?sGQN!0FPjjt<
+QMs_\;?'Pm;u]hs<W6&!<rcA$=oVY*>Q.n-?2n71?NOVD@K'a9@f^+OrgEPKp6kWCnsfWK!1WnV
+pRV>Uph]nGr.b*&!2K@ar1j:f!2]XkrhfjsWN)uqX8f7%XfhW+!3Z='pTFCsrNH=-Zhp'bQg^7!
+Q2b"e=T;J#<WgOhbfft/s3:Shqp5;h!R]9ndKItEd*^8>dbU,[Ot1TqF`qtRH$XgbI=?ZrJV&N-
+KnbA=M2I4MN/`mZOHG]hPE_>tQC!u+R@=,E!h>gPrgj1`TV24VrM'4bpn[e^rM'4`s.K@`rgs.\
+s.'(Xs-`qUrg3bRQBqN8!L/fIOp@,2OH5H_NfF$s#E+IsM2@%EL])r/KnP-XKE$Q'JbsurJ+A'e
+J,=crJcC?$KE$T)L&QgKLPUbCM2I4LN/WaVO,oBbP*2#nQ'IZ%R$a;1S"#t?StD[LTqeEZV5C/h
+WN)u"Xf\b1Yd(O@['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GYd*^7ieC<%#f@\d1gYCW@hV[8M
+ioB([jlY^gkiq?sli-5OmI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0gr;HTbrdk*ts*t~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`U#\W4T7DcL4t83J:DupH?j^XFEDPCDf0E-CM@HpAS#@\@:3GK>u1Dor_NJf
+!`)Whr(lu^cT_=k!Ba-T:%D$Z:]4&g:]+&h:\.?Y:]4&e:]ETX4odhH55meC55e=P:\IWK:]+&h
+;?'Pm;u]hs<W6&!<rcA$=oVY*>Q.n-?2n71?NOVD@K'a9@f^+Oohb?Zp/:BWr)!Djs&/Vj!*&SP
+rC?]Ts&B"ss&8tur`9&#qH!Jps&]8(pK7;qr`]5(rET>+!*]5'!*mQAr)!Drs&f;&r)Wf9s)S-\
+"a"g,FE;O&F9$I^G5c^aGQN2<HiAEL<qKBBF*)PJGBeCZH[L6jIt3*%K7nr5LPUeEMi<USO,oBb
+P*2#nQ'IZ%R$a;1rgNtZSXobO!hZ-Yr1X(`r1j%_qkO+ar1X.`rh'1]s.01[rgWqV!1EhR!gf4=
+rfmMKPQ$^MOcYZcO,f6[req)?MMd7ILkpibL'!'^K`-Q'K)^E!JGjugIf4cnJH(3#K)UE&KE-`*
+L3/3,Ll$tGMi3OQNK0'\OHG]hPE_>tQC!u+R@9V7SXuFFTV8'SUnjiaVl6SpWiW>)Y->.8Za7$H
+[^WcW]">Vg^;%J"_Sa=2`lH0Bb0/#RcHaeadF6Upe^rF*g"P39h;-rFi8N\Uj5f=ak3(sml0@U6
+liHMArpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s3gpt~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh'D$n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[Rqr/Cc<NK*ptrK$H0,_q,-K7SQ%I=-?dGBS(LEcH#8D/3m#BP1me
+@q&kS?X@$uj5U$qs5F";s5=:Bhqm5GgtUQ:f_O.mOSk1;NrP1>OT(C@P5:=<O8tF=OT3Z-chu)f
+blu>7bK@rKr5eoY"NJL%`PprWr58N!rKdJMpQk]orkeTLrPJQOrPIp;r5/3Gn&56t!*fD,!+#N@
+rl+fRrl+fTrQ"cU!6P5]r5nu]s3(Gbs3(Gbr5niY"O"s2bKTq.prrc_rK$f:!3u."rn7A,r7q5+
+rS@Y6i8NYoj8\3Ek3(pkl0A01s6BXMq<[nDs6^$YnF5u?r5n?IouZgHouI)7s&](us&J"Ws2F<D
+rPeNLqSW<L,B@mJFa&%SH?spdI=HctJqJ]/L5(J?M2I4MNK0'\OHG]iPl?pOQC!u+R@=,Es-s([
+rLX%]s.K7_qkEq^qP*h[s.K@`rLX%[!1a"W!h,OFrg3bRQBqN8#F(F9P*1riOT(:ANfF$ss,-l7
+re^Z2!/LQ.s+UK+rIb-%s+1&trI=EfrI=]ps+13%re(6(s+UK-s+^T1reY`SMi<USNK0'\OHG]h
+PE_>tQC!u+R@9V8SXuFFTV8*TUnjiaVl6SpWiW>)Y->.8ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@
+b0.uQcHab`dF-Lne^i@)g"P07gtgiEi8ESRj5]4_k3(sll07L!m-O--rpL-^naZ2@oCMVHrq6<b
+s7cKes7uZjqtpBjr;H3cJcF4!J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh9P&n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[RqDJoGj!,hRKpMU"JrbhaQ,_q,-K7SQ%I=-?dGBS(LEcH#8D/3m#
+BP1me@q&kS?X@$5US@^\s.]Fd#GRobTV%gHSbS`ODtn;JDZFbSDuFYODu+GMDuX_RRf/ZSR.lsG
+R-^1/QMPXpEVc"$Q2HmHQ2d0LQN3?NQ26a6Q1gO@QiEBGQiD70>Q%e,?2U)`RJ<0GR/i]TRJ**?
+RfJuXS,AfNSH,8TC]K7cLAZc#UA^hiUnsobVZ!CoW2ZcmX8]1%Xfel,Y5PKsY55@$YQ;#8p6P`F
+mZujts&f;&qc<_s!mJj2rQP8d!6tMgrQkMjs3^bkrmC_ngQVAp,B@mJFa&%SH?spdI=HctJqJ]/
+L5(J?M2I4MNK0'\OHG]iPl?pOQC!u+R@=,Es-s([rLX%]s.K7_qkEq^qP*h[s.K@`rLX%[!1a"W
+!h,OFrg3bRQBqN8#F(F9P*1riOT(:ANfF$ss,-l7re^Z2!/LQ.s+UK+rIb-%s+1&trI=EfrI=]p
+s+13%re(6(s+UK-s+^T1reY`SMi<USNK0'\OHG]hPE_>tQC!u+R@9V8SXuFFTV8*TUnjiaVl6Sp
+WiW>)Y->.8ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uQcHab`dF-Lne^i@)g"P07gtgiEi8ESR
+j5]4_k3(sll07L!m-O--rpL-^naZ2@oCMVHrq6<bs7cKes7uZjqtpBjr;H3cJcF4!J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh'D$n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[Rqr&Xm@pcJ%/s#VH\L4k21J:;ooH?j^XFE;JBDf0E-C2%?oARo:[
+@:3GK>u+8o:B+,g:'+3f;#=&`:ujh=5O1K6:JUj_o1o6[!)EMhqG?]WqbR5er_NJVr'(6H5<o!.
+r_W;ap/'sKp/(3Ts$6WhrEK>.q,-WXqG@5jr_`GgmSWs[rDE8erAsd:njiXXs&J_mqcESqs&o>'
+rE9/(r*'5+>?h#1s'#J,qHEr)_GU>8s&](us&B,>EH:hqs)e6_rc\6as*+QiHN&9kI,7or<?lO+
+FEMeOG^=[_I=6TqJ:`E+KSG5:M2@+JN/`jYO-#KePEc'3"dYLBR$jEBS,\uYSc,/[TDtS]U&1S\
+U\^_]U&UebTDbA]SH,2YRf]%HRJrQTQ^3s:Pm<P;PEM)kOc]R'!KN0=N;ne9MZ/J4L]E50LAuu-
+K`-Q'K)^E!JGjuhIf4cnJH(3#K)UE&K`?c+LB!#/M#N6QMMmFPNK&sZO-#KeP*;,qQ'Rc(R$jD4
+S=Q7CT:hmPUSO]^VPgAlWiE/&Xfen4Z*L^C[C3QS\[oDc]tV7s_8=+.`Pom=aND]Lc-FV\dF$Ck
+eCE.%f\,!4gYCWAhr*GOioB([k2tjjkiq?slg4!*mf)Y\nF?&>o(2JFo`"O`pAamcq#C0hqYU0h
+r;?Nardk*us*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb47r.8o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-fqNr4t-O=#g>L4k21J:;onH?aXWFE;GADf0B,C2%?n
+ARo:[@:3GK?012/j8@m8iWA)shu;I9h;$c=g=cATooT39r/gr>!K`BAOT(C:P5LIBOSY+=OT*W,
+ci22pcd'h\c-4ARrlP)ZrPnuZ`PqbnrPe3Cs24`"q3UuEqnr<J!5\TMrkn]OmD8_;p;?@;qjmk[
+>[76Grl+fRrl+fTrQ"WQr5eu^ana*WanNsTbP03\OSb+=OS5sUYlEDWg\oq)h>Z7>hr*JQioB([
+jlYail29iGl2U#KlhBc@m/ZSRmfW(Lou[3Sr5n?IprW3MoZ-u5r)Wesr`%hU!lW'slc/nBpVcsH
+s2$C/F*)PJGBeCZH[L6jIt3*%K7nr5LPUeDMi<USNfT6`P*2#nQ'IZ$Q^F/.R[X5F!h>gPrLX%]
+rh/GJrh07_r1<qZs.'(Xs-itUrg3bRQBqN8#F(F9P*1riOT(:BNfB%tMunopMZ/G6LkgcbLAur-
+K`-Q&K)^E!JGaojIf+]mJH(3#K)L<'KS>-ZL(B&qLl$tGMi3OQNK0'\OHKO*A!<.BQ'Rf)R@9V7
+S=Q7CT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^C[C3QS\[oDc]tV7r_8=(-`Poj<aN;WKbg"GZd*^:j
+eCE.%f@\g2gYCW@hVd>NioB([jlY^gkiq?sli-5TmI'H3nF5uIncJFTo`"O`pAamcq#:*hqYU0g
+r;HTardk+!s*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb3V;q6o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-h5DZ=SJDYe2rM2-h=K7SQ%I=$9bGBS(LEH,o7Chmd"
+BP(gd@q&kS?X@$6Undg]rhKIe"JMK]T:c+S!1j"Wol'SD!,qaRs)IgQrGVOOr,2S)rL3\Qrg3_Q
+R/NBKR-L%0QM#:oEVl(!PlR'JQ2d0LQi36HPjan2QLgIAR/2%,>lC&fR/i]RRJ<0CRJ**;S,8`N
+SH,8VD#/qaLAZc%UAUbgUnsobrhoaori5jrri?.&Y5,3oY5GL$YQ;#8i0NDgs&],!r`/qsrlb>c
+s31Vjc-?75rQk8crm:_ormBG`q3!@NF*)PJGBeCZH[L6jIt3*%K7nr5LPUeDMi<USNfT6`P*2#n
+Q'IZ$Q^F/.R[X5F!h>gPrLX%]rh/GJrh07_r1<qZs.'(Xs-itUrg3bRQBqN8#F(F9P*1riOT(:B
+NfB%tMunopMZ/G6LkgcbLAur-K`-Q&K)^E!JGaojIf+]mJH(3#K)L<'KS>-ZL(B&qLl$tGMi3OQ
+NK0'\OHKO*A!<.BQ'Rf)R@9V7S=Q7CT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^C[C3QS\[oDc]tV7r
+_8=(-`Poj<aN;WKbg"GZd*^:jeCE.%f@\g2gYCW@hVd>NioB([jlY^gkiq?sli-5TmI'H3nF5uI
+ncJFTo`"O`pAamcq#:*hqYU0gr;HTardk+!s*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb3V;q6o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-h54T@M44=#c=L4k21J:;onH?aXWFE;GADf0B,C2%?n
+ARo:[@:3GK>u4An:]*uc:\R]H55%524p4\X:/+IY:&n)c:A[ia;#X8\:AI]b55meC5lO"H55nCQ
+:\@QJ:\IWR;#ir[62t3d;=IEU;>X8W;?'Jm;>jDe;u/QT47>]><;onk<rQ2#<rZ7u=Su;'=BSf+
+>5VV(>5qh*>lS%.=o_e*>5haC;?'_q<rQ+u<!RD`F)uACF)q5#!-J3_s)nBbrHA?gH$Xf7HN8BK
+<qTHFEcZ>FG'A1VH@($fIXcm!JqJ`1L51SAM2R=ONK0'\OcklkPa.N"QC!u+R@9TDRf]+NSc,/[
+TDkMHU&L_aTDY;\Sc>5ZS,\rWRJrQTQ^3s:Pm<P;PEM)kOc]R'!fi8"repo:MMhCi!f2VereCH,
+!/1<'rdt0$qgeTop3uphqge]ts+:3%!ec8]re:r=LkpnEMMmCON/`jYO-#M'P%0]?Q'IZ&R$jD4
+S"-%@StD[LU8+N[V5L5iWN*##Xf\b1Yd(L?['d?O\@K2_]Y2%o^VRe(`5T^8aN2KHbKS5Vcd:(f
+e'uq!f@S[/g=tE=h;7)JiSrnXjQ5OdkNM0plKeH9#4:jIn*oi:rpg-^o^r.Us7ZKerV6Bfs8)Wi
+rVZWmnc"+>eGk%~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#VkijE.#Nk:L4k21J:;onH?aXVFE;G@Df0B,
+C1q9mARo:[@:*AJk2tdejQ$$p$K0h!hVR)DgY1?5r7Ct2q2kK9rf[&=p6,66rfI#>!7Cems3C\j
+rQbVlc-=JUrQ>/^s2b)X#0+X$`5KX6rl4uWr58TSou-cps-EAFrKdE"oYUUFrPIs<r5/6Hm_nml
+s.0/-rl+fRrl+cSrl5#[rl=lVqT8c[s2k;`qT8HRr6+iYr/^o>rj(ss"5;Mah"]_*hZ;Zoro3t<
+#j(43kih9rlKeB5s6KCFq!A@Tn*fc9o(C,HqoJZVo#URIpW3!I!*B)!r`/qsr_qeUs2=oUqSr!C
+p;HgF,]e'LG'A.UH?sseI=HctJqJ]/L5(J>M2I4MN/`mZOHG]hPEc'3!LB)OQiWVDrgWqXs.0(Z
+rh'.^nY,oSrLa"Zs.0.ZrgWqVs-`kRs-NbOrfm_QPEV/mOcbb)O8k4?NW+n:MZAY6M>rA3L])r/
+KnP-XKDpK&JbjomJ,aunJ,4]qJcC?#KE$T)L&Qi,LO+c5M2I1KN/WaVNfT6_OcklkPa.N"Q^F/.
+R[]e:SXuFGTqS3UUnjlcVl6SpX/rG*Y->.8ZEppG[^WcW]">Vf^;%G!_SX40`Q$!?ai_fNc-FY^
+dF$FmeCE1&f\,!5gtgfChr*GPj5]4^k2tjjl07Kulg4!*mf)Y[nF?&>o(2JFrUp3a!;HEds7uZj
+qtpBjr;H3cJcF7"J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#Vkj9.qel:J-]3b9L4k21J:;onH?aXVFE;G@
+Df0B,C1q9mARo:[@:*AJV59u`U\geaU]7%kTqJ'NTDkD^Sc##XE;=GLE;jkPE;4GKE;"5MS,JfR
+RIZa2Qh?[;EqaSOQM6[EQN!6LQMm*JPjan4QLU=@R.b_(R.QgAQiNQRR/36ERdHUBSG8WTT)3?s
+L\HQ%UACYbV#R=lVuEXpW;rspX8]3pXnT!tYPPI(Z*`DSjcogIr)Wesr`&kqs2tDdqp#)bs3C\j
+rm1Vk"4,??ci2;kd/hS?oons0qigT6,]e'LG'A.UH?sseI=HctJqJ]/L5(J>M2I4MN/`mZOHG]h
+PEc'3!LB)OQiWVDrgWqXs.0(Zrh'.^nY,oSrLa"Zs.0.ZrgWqVs-`kRs-NbOrfm_QPEV/mOcbb)
+O8k4?NW+n:MZAY6M>rA3L])r/KnP-XKDpK&JbjomJ,aunJ,4]qJcC?#KE$T)L&Qi,LO+c5M2I1K
+N/WaVNfT6_OcklkPa.N"Q^F/.R[]e:SXuFGTqS3UUnjlcVl6SpX/rG*Y->.8ZEppG[^WcW]">Vf
+^;%G!_SX40`Q$!?ai_fNc-FY^dF$FmeCE1&f\,!5gtgfChr*GPj5]4^k2tjjl07Kulg4!*mf)Y[
+nF?&>o(2JFrUp3a!;HEds7uZjqtpBjr;H3cJcF7"J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#VkiiF-AmY8L4k21J:;onH?aXVFE;G@Df0B,
+C1q9mARo:[@:*AJ;,L.dq+po`r(m)as$$HGq`Y!Er'(*EpceC9nim(:s%i\kqbHu`pJ1`aqb[5e
+n4rmWqEFmCpd"gCs%rAapJC'Lpe^BU!(6NJ"$od^;Z9P_:]OAl;#4&g;Ys>k;#aAm;"@Ha:f7-g
+pJ^rMr^luXoLJj[r`0##r)Wbtr`9&#r)ir$!*]>(!*];)s'#D)!*]A+!aJr6p0%H$_bgD8r)Wes
+r`&kq"EJR(Ec_5#s)\3^#'G$0F`hkNrce<drd"WmH@#6bnl>Hcoi38YFED\MGBnL\I!pEmJ:N6(
+K7nu6LPUeEMi<USO,oBbP*2#nrfmMMQi<?QR@=,Es.'+[r1<n[rLi\SrLj+]r1<qZrg`tWs-itU
+rg<_Ps-EYL#F(F9P*1riOT(=@NW>(<N;ne9MZ/J4L]E5/L'!'^K`-Q&K)^DuJGF]pIeeKiJH(3#
+K)L?%KE-`*LB!$TLl$tGMMmFPNK0$[O-#KeP*;,qQ'Rc(R$jD4S"-%@StMdNU8+N[VPg>jWN*##
+Xf\b1Yd(L?['d?O\@K2_]Y(tn^VRe(_o9U7aN2KGbKS5Vcd:(ee'umtf@S[.g=tE=h;7&Ii8WeW
+jQ5OdkNM0plK[^%m-X6?mg&@Pnac8BoCW"Ss7QHer:p<frqcNhrqu]mo)=4?eGk%~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJDpkMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AIkN:q+jT4H&q;MD4rndn9h;$c=f_sFmOnOq<OnFn0OT:LAOU'=^
+dEp7dd*Vd<rltYkbfn8RrQ5,^rlG#X!65#Ws2P)Z!64uV!6"iTpVd)uq3L`@!1*T$otp[FrPIs<
+r5/6Hm_ndi!6"iTrl"`Rqo8KQqT/'Gp<*<VpWWVt!g'drrNcL0n$2oI!8RD+s5!e7iVha=jQ5Oe
+kl0fHlM^&KlMg,Cm.frPmdKZ8oCV_TaoBHSanNmLan3[La8K'<<W5tp;r[iU`;[aP`p^n@`;@Fu
+EccDGGB\:XH@('gIXcm!JqJ`1L51SAM2I4MNK0'\OHG]hPEc'3!LB)OQi`\ERf8fVSH#/WT)G;O
+T`(MZT)YA\SGerWRfAfTR/`KQQMm'MP`q=1Op@,2OH5H_NfF$ss,-l7re^Z2s+gT.s+UK+rIb-%
+rdjorn:1:bs+13%rIb-'!/:E,s+^T1reUZ5MuJZ[NK0'\OHGZgP*;,qQ'Rc(R$jD4S"6.BT:hmO
+U8+N\VPg>jWN*##Xf\e2Yd(L?['d?O\@K/^]Y(tn^VI_'_o9U7a2lBFbKS5VcHstddaZdsf%8R-
+g=k<;h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc8nc&(\oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=
+s4%(!~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJC\HMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AIVPU-gV#R4gUA^keUApngTV%kUScG>\SFUXmE<'tNEVj_JDuQ7(
+RerNPR/`TKR/!$JR/`NPR/E<FQN)"$EVa_REVc!tQ2R$KQi366Q2$[9Qi3<EGP%<qR/36ERdHUB
+SG8WTT)EKrL\HQ'UA:PfUnsobVl0Nms/Pssr2fXps0)7$!3c7'"L58<[$^iZig08&qj.#BrDrnt
+r`&bn!6bAd!6kDdrltMir6>AicHc11o98a.rKHf8-$"*LFa&%SH?spdI=?ZrJV&N-KnbA=M2@+J
+N/`jYO-#KeP*;.0Pl[2;rg3bTR[X5Fs.'+[qk!bYnY#iQqO[_Xrg`qVs-itUrg<_P!1*SK!gJn4
+rfRMKOH>NaNfK+uN;ne9MZ/J4M#W80LAuu-K`-Q'K)U>tJFJ'bJH(3#K)L?%KE-`*LB!#/M#N53
+MMqImG`@`EO-#KdP*2#nQ'IZ%R$a;1S"#t?StD[LTq\<XV5C/gW2ZetXKAV.YctC<Za@-K\%&uZ
+]=bej^V@S$_Sa@3`lH0Bb0/#RcHaeadF-Ooe^i@)g"P07h;-rFi8ESRj5]4^k2tjjl07L!m-O--
+mdKW6nF?MK!qZ'Vrq6<bs7cKes7uZjqtp?irVc<dJcF7"J,~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJArlMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AI;Gg<j;#3uc:Adoa;#WZO5Q<qB56*n?5P@;;4oS:X:B4/^:\[]b
+:]=2e:]F2h:\@K^:]EWS4o[_F5Pm\I5>Y2J:\diN:\[cS;>!<U;ZBVo;#=,^;#=)i;#=,c;".?[
+;YO,g3r;PG8cM?U8,cNe<WH5#<r?%u<rZ8#=T2J$>5q_,>$G51>5_V">5qb%>5qe->Z:W"!`;in
+b#/+<r`/qsqc!K7!-/!Y!-A$Z!-S9arce<dqg.j7nl>Neoi3;YFEDYLGBeF[H[U<kIt3*%K7nr5
+LPUeDMMmFQNfT6_OcklkPl?pKQC%T<!h#LGrgWqXs.0%YrL`VQrL`qXs.0.ZrL<hUs-`kRs-E_O
+rKRGKPEZ!/#Eb+0O,o<]NW+n:MZAY6M>rD3L]3&.L&Zi)KE$Q&JbjodJ,4]qJcC?#KE$T)L&Qi,
+LB*/0M#iKlreu)]NfT6_OcbfiPE_>tQC!u+R@9V7SXuFFTV8'RUSO``Vl-JmWiN5'Xfnt5Z*L^C
+[C3QS\[f>b]Y;.q^r!t+`Poj;aN;TJbg"GYd*^7heC<%"f@\d1g=tH>hV[8LiSrnXjQ5OdkNM0p
+lKdg'mI'E2n*oi:rpg-^o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?eGk%~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X;jXroX7Bs5a+<ro*q:rne+?h;$f>f[n`;Ockn$Om8+u
+OoCFDda?J>d/2,gc2Z#dbQ#]daiMR$a8X*Va8a0T`VROQQg9t:_tCnD_Z7R?_>M1H_uI[L`VIIE
+T)Q\-`W*mS`V[[Oa83mFan3aRbPB?`NK0(s[/@9.ZLtI(gYCT]h>c=4hr+Im"QSS*kNMp0s6BCF
+p?_VB#O_'Lnac;Ep?Tj!aR[ICaSa*Y<rQ+u<;KPm;WRiX_u.IP`VRUG`;mpU`VRON_^9DFFEMbN
+G^4U^I!pHnJ:N6(K7nu6LPUeEMi<USNfT6_OcklkPl?pKQC%T<s-WkUrL<hWrgikVo:PfLrgj(Z
+r1!_Ts-`hQ!gf4=rg!MJ!0dAE!g/S+rf7,@NK*pr!fMqnre^Z2!/LN-s+UK+rIb-%rdjlqoRH[e
+rdk*$rIb-'s+UH,H&%33M2@+IMi<USNfK0]OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU84T]VPg>j
+WiE,$Xf\e2Yd(O@['d?O\@K/^]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjncdaQ^rf%8O,g=k<:h;-uH
+i8N\Uj5f=ak3(sml0@U6liHMArpKmWnc&+Zo)SF]o`Fj]p\agdq>^<gqu-HjrUTr=s4.."~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X9P+rh]Xjs.fOerM0Ces.KFcrh'4^s./_"l>cH8q/?8%
+qjR2G!goCDqj@8IpmCrFqNh&"p2TqL!-.b!rg!8EkEYn0n<a-AoQTqqoU,KCq3pQ;r1*VS!1s1+
+mYCRlpnJ.kV5:&eVl6PnWV`anXST'uY5YX'Y5PR#YQ_;;Za?*erg2W1oTf6<r0@:_r`/qsqG[Ak
+!mSs4rlkAd!7(Sgs3CSfrltMir6>>hP4Fh.P5UU9OsY3jFEMbNG^4U^I!pHnJ:N6(K7nu6LPUeE
+Mi<USNfT6_OcklkPl?pKQC%T<s-WkUrL<hWrgikVo:PfLrgj(Zr1!_Ts-`hQ!gf4=rg!MJ!0dAE
+!g/S+rf7,@NK*pr!fMqnre^Z2!/LN-s+UK+rIb-%rdjlqoRH[erdk*$rIb-'s+UH,H&%33M2@+I
+Mi<USNfK0]OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU84T]VPg>jWiE,$Xf\e2Yd(O@['d?O\@K/^
+]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjncdaQ^rf%8O,g=k<:h;-uHi8N\Uj5f=ak3(sml0@U6liHMA
+rpKmWnc&+Zo)SF]o`Fj]p\agdq>^<gqu-HjrUTr=s4.."~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X6Q-r_`\lqG7#aqbR/es$#m9rBBg;oKN(6r_WAcr_WJf
+peL]^!)E>coM5<Jp-&=;r]g!Mq,$6MqG@,fqbm/coL&UUoMP?Zqb[Dk;,R!_mns'^pJ_&PnOiaO
+r(-fWr`/qu!`rE'r)`hts&]5&r`SquqH<Vtr`T/&s',M.s&8\jhGO8KoMPWhr`/qsqG[Aks)J$Z
+rcA-]rcA-_rc\<cs*4Ngs*=Zjrd"QDq,R8lo2YWfp/NG[F*)PJGBeCZH[L6jIt3'$K7ei3L51SA
+MMmFPNK0'\OHG]hPEc'3!LB)OR/`QSRf/`USGo)TT(ATLT)P;\SG\lVRfAfSQi`V?QN!0LPQ6pG
+Oogc-OT(:BNfB%tMunopMZ/J4L]E5/LAuu-K`-Q'K)U>sJFn?eJGt-"K)L?%K`?c*L3\Q1Ll$tG
+MMmFPNK0$[O-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAV.YctC=Za@-K\%&uZ
+]=bei^V@S$_Sa=2`lH0Bb0.uQcHab`dF-Lne^i@(g"P07gtgfDi8ESRj5]4^k2tjjl07L!rp0[Q
+mf)YUnF?MKs766_rUg6cp\4U\s7u]kqtp?ir;H3cJcF:#J,~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!Qnr9"%@roF+>ro+:Di8<GKh;$c<fTH#npQ=j+l]DA"
+da?LjdJhMlchl#fc2Z#ebQ#]daiMQqa8a0T`VmaNQi<<BQ2\\o_YV1L_XPD=_YV1M`:V%H`:KT#
+`;IUJ`qmaOaR@7Cb5BHYbQ*[u[/73'ZM_!-h#-".h?)TmiVqg>j5f=bkl0iGlM0]=m/$)VmdKW7
+o(2PJpWCY3amR4Ma8T*=<;KPl;Z9PSs8Tt@`5BL2`5T^k`pC\?`$iNDF*)PJGB\=YH@1-hIXls"
+JqJ`1L5(M@M2I4MN/`jYO-#KeP*;.0Pld8<Qi<?RR@9TBS,]#WSa2mGSc5/VS,\rWRJiNQQiEBN
+Q2d'KPPpXGOcY\(Nrk?$NW+n:MZAY6M>rD3L])r/KnP-WKDpK%JbXcjJ,"QnJcC?#KE$W)L&Qf3
+LPUbCM2I1Kreq#?NfT6_OoCMZPE_>tQC!u+R@9V7S=Q7CT:hmPUSO]^VPg>kWiE,$Xfek3Yd(O@
+['d?O\@K/^]Y(qm^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^rf%8O+g"P39h;-rFi8N\Uj5f=ak3(sm
+l0@R"m-O--rpL-^naZ2@oCMVHrq6<bs7cKes7uZjqtpBjr;H3cJcF:#J,~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!Q-r2'Fhq4mq`#,.]^St;LDmr7Z6m;W)Dqj[JOo9oKC
+rg3;Fqj78Irc@sWoPskNka(M!qNgN8oQC4YoU5B>q3h2Mk*u:=qOIYYD!-TOLAI\FV#R7rVPgAk
+WMuntrN#gsqlTe!p94@ts02X2ZaKb!qj6H2nWip9!1!O`s&AhnrDNVls3(Dcrlkbnc-=JWbfn>V
+bl5lecMc#fcMs'uPOjt:POt"cEcZ>FG'A.UH?sseI=?]sJV&N-Knb><M2@+JN/WaVO,oBbP*2#n
+rfmPNQ^@]=!h#LGr1!_VrLN8GrLNqXqj[VSs-`hQs-NbOrg!MJ!0dAE!g/S+rf7,@NK*prs,-l7
+re^Z2s+gQ-!el;\r.G!#rdjippj`'hrdk*$rIb-'s+UH,#D\+kM2@+IMuJY=NK0'\OHKO*CQk!J
+Q'Rc(R$jD4S"-%@StD[LU8+N[V5C/gWN)u!XKAY/YctC=Za@-K\%&uZ]=bei^V@S#_Sa=2`lH0B
+b0.uQcHab_dF-Lne^i@(f\,!5gtgfChr*JQj5]4^k2tjjl07Kulg4!*mf)Y\nF?&>o(2JFo`"O`
+pAamcq#C0hqYU0hr;?Nardk+"s*t~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!P.r)*Jjr(m5cq+guSoKW:<s$-3@qEO@2s#g?Zr)!;e
+qG?u`oM53XpJ1KIoKE1;r_W>bpe^-LqG@,fr)35co0`OUr_`Jhs&&Meqbco\mnj<f;c?Xp;cH`o
+;ZJoB9)V<_86&[h<r,nq<rZ8#=T2Iu>5;=s>5h\%>5qh-?2[^q;WCXM:]OAl;#F2i<W?%p;uKVn
+;#kY9F8p@^Er^=]Fo?L_Gl2gkG^4R\HW3u@<V]\e<Vohk<@;g.FEMbNGBnL\I!pElJ:N3&K7nr5
+L5:\CMMmFPNK0'\OHG]hPEc'3!g]1>rg3bTR[X/Ds.'%Yl^n'Grg`kTs-itUrL!VOs-EYLs-*MI
+rK75EOHBI&!fi8"rf$l8!/gc4s+p]1rItB-KS98Urdt-#pji-hpji?ps+:3%s+LE+re:Z5LkpnE
+MMd>kN!53$O,oBbrfV&\Pa.N"Q^F/.R[]e:SXuFFTV8*TUnjiaVl-MoWiN5'Y-5(6Z*UdD[C3QS
+\[f>b]Y2(p^qmn*`5Ta:aN;TJbK\>Xcd:(fe'uq!f@S[.g=tE=h;7&IiSrnXjQ5OdkNM0plK[^%
+m-X6?mg/FQnac8BoCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s4.."~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?=!Nmr9"%@roF+>ro+1Ai8EMLh;$caOnY%3OnFn%OTO(^
+e,7YodJ_Glchu)gc2PojbK@uLaN4%ps2OiQ!6"Jqrg*>Er58BJs24iSqnr<JoYLFAqSW?Oou6jI
+!2&hRrP\]SpW!'Mq8i$Ho?.!Sqof)c[I^d%ZhC^'h>Z:2hu;R<ioB+]kNMp0rTa1Ds6TaNqs=1H
+#k.9Qo(;VKq"Xj2fu`['!``3!qG[>jr)!Gjjo>4qrl"iUq8VjApr"e)F*)MHGB\:XH@($fIXcm!
+JqJ]/L5(J>M2@+JN/WdWO,oBbP*2#nPa.N"QC%Q;s-`nUr1!\UqORGRqORSTqj[VSrgE_Ps-NbO
+rg!MJs-*GFs,m>Crf7,@NK*prs,-l7rJ:T3LPPh_s+UK+r.G$$rdj3^s+10$rIb-'s+UH,s+^T1
+reUZ5MuJY9NK4"!G*%iLP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY79Za7$H
+[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg"GZd*^:jeC<%#f@\d1g>(N?hV[8LiSrnXjQ5OdkNM0p
+lKdg'mHs?1n*oi:rpg-^o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?ec1.~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?=!N,r2'Fhq4mq`"JMK\T:Y7col958!1`hRqjR2Gr0RJN
+nsK<@!1*P(pi?%IjHf5!qNgoC!1*DH!-e!WopPK?q3h5NjI?(;qjd_Yn;%%"o8!:>r1s@is/,mr
+WW&prX8B!rXo#9pYPk[2Z*L^B['[6-Qi!0LQhZmEQ1L=5Q2$XH<E)ro;uKVl;#jGjbPo]dc-6.0
+qof/ebfn?2bQ,odP4Fh.OoU^<OtL`qFEDYLGBeF[H[L6jIt3*%K7ei3L51SAM2I4MN/ipZO-#Ke
+P*;,pQ'IZ$Qi3<ORK&`RS,SrSSb\lRSc,)US,\rVRJiNQQiEBNQ2d*KPQ$aFOoLOBNrk?$NW+n:
+MZAY5M#rKgL])u-L&Zi(KE$Q&J`_L_Jc:9"KE$W)L&Qi,LB*/0M#iKlrepl;NrG)_OHG]hPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!XKAY/YctC=Za@-K\%&uZ]=bei^V@S#_Sa=2`lH0A
+b0.uPc-FY^dF-LneCE1&f\,!4gtgfChr*GOioB([jlY^gkiq?slg4!*mI'H3nF5uIncJFTo`"O`
+pAamcq#:*hqYU0gr;HTbrdk+"s*t~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?<pM/;Z'Dl;#F)h:A7Q`54h(h55nFR;#X>i;#a>j;#a>`
+:AI]^:@g[L4TI\@4oA.P:\mo`:B45Z:\mod;>a>d;#j&U7.jIX;>3oa;=[QQ;?'Pj<;]Yp8`<;?
+<r#hr<rQ2!=T)D$>4u+r>5VP&>5h_->[:Y2;tX&R;=@<`;,pRpqG[>jr)!Gjrc8'[rc8']rcS3`
+!-eEe!."Hd!d]3?rD`Vnq,[)erDrYm/obrSFEMeOG^=[_I!pHnJ:W<)K7nu6LPUeDMMmFPNfK0]
+OHG]hPE_;sQ'R`&rL!VQs-ikTrg`hUq4@GRrLEbSs-iqTrL!VOs-EYLs-3PIrf[;Ds,d5@!fi8"
+rf$l8!/g`3!f2VerJ(?+s+L<&s+:6$k(*J_rdt*$s+LE+reCH.!/UW2!K)g7Mueourf;5aOcklk
+Pa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^VPgAlWiE,$Xfek3Yd(O@['d?O\@K/^]Y(qm^VI\&_o0O6
+a2l?EbKJ,ScHjkbdaQ^qe^rF*g"P08h;-rFi8ESRj5]4^k2tjjl07L!m-O-,mdKW6nF?MK!qZ'V
+rq6<bs7cKerqZTjqtp?irVc<dJcF:#J,~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no+'fn*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?XEWmr9"%@qrA"Bio/kSi8<AfOSt=<P5:=5P3A#1f%&:"
+r6t\o#LUuIdEp7dchu)gc2YujbK@rJaRmOQ`WF-!`r*gDQN3?JQ2SVs_Z.OM`;@IL_YM%E_YV1M
+`:_+I`;QA)TDbA[`;[aM`r*jYaN)?taR@7Bb5BH\bl>rd[J7--[JR?-Zi.30h>Q41i;_a>ioB+]
+kNMp0r9F"A!:'RLr9X@K$L[BPnalDGp@n@XrQ<g8n&YN.qc!Gkr)*Dhk5Y7prl"iUqSqX9.<9NP
+F`qtRH$XgbI=6TqJ:W<)KS>/8LP^kFMi<USNfT6_OHG]hPE_=2Pld8<Qi3<ORK&`PS,/ZPSbelP
+S,SlVRJ`HPQiEBMQ2d*KPQ$aFOT:LANrk?$NW+n:MuS\6M>rD3L]3&.L&Qc(KDpK$Ja%^aJc:9"
+KE$W)L&Qi,LB*/0M$o3!Mi<USNfK0]OHKO*BTn[GQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/gW2Zes
+X0&M,YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Pom=aN;WKbg"GZd*^7ieC<%"f@\d1g=tE=hV[8L
+iSrnXjQ5OdkNM0plKeH9!U]=SmfDqJrpp*\!;-6_s7QHer:p<frqcNhrqu]mo)=4?f)L7~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no+'fn*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?XEW,r2'Fhq4mq`!hl9ZrGh4DoPs)6!hGjOoUGiKq3_;Q
+R@3E/r0Qnnpi-:Sjd,>"qNgoC!1*DHrHIpXopPH>qO.>OjI?(;qjd_YrJ:6(rJ:K/!/U6%s.fOg
+s/#ams/,stWN)uqX8K'uXnf-nY6D/8Z*L^Brj;^5qj7/Hs-N_Nop,9;o9K0<!gckcqc!Gkr)*Dh
+rQG/`"3Sa.b5KN`bQ,i^bkmRpPN@rVEccDGG'A1VH@($fI=HctJV&N-Knb>;M2@+JN/WaVO,oBa
+OcklkPa)04!g]1>rL!VQs-ieRqOIGRqOIANrgNkTr0[MNs-EVKs-3PIrf[;D!0I/?!fi8"rf$l8
+s,-f4s+p]1reCH,re16&rdt*"l%&bardt*$s+LE+reCH.!/UW2$]9k#N/WaVNfT6_OoCMWPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWN)u!Xf\b0YctF>Za@-K\%&uZ]=bei^V@S#_Sa=2`Q-'@
+aihlOc-FY^dF$FmeCE.%f\,!4gYCWAhr*GOioB([jlY^gkiq?sli-5OmI'uB!V#XYo)J:]o_nI_
+p&Ojbq#C0hqYU0hr;?Nardk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?X?]2;uT\m;?'Ja:]!<R54h(n55J.S;#4&a;#a>a:A@W_
+:A@$H5PdSB;#3u`;#3ub;"@EY;#O8h;YO&Y7J0RY;>*ic;=IEQ;?'Po;u0Jk;tN]\9DV9X9DqK^
+<WZ?'<r5qu<r,nt=T)A&>4bts>5;>$>5qh)>kCtg;XdQM;#aMl;uKVl;>j;qF)l;BF*)O&FTQ`1
+GQ)ggGBe?1GlE$d<;KVk<q98i<qfTCEccDGG'A1VH@($fI=HctJV&N-Knb>;M2@+JN/WaVO,oBa
+OcklkPa)04!g]1>rL!VQs-ieRqOIGRqOIANrgNkTr0[MNs-EVKs-3PIrf[;D!0I/?!fi8"rf$l8
+s,-f4s+p]1reCH,re16&rdt*"l%&bardt*$s+LE+reCH.!/UW2$]9k#N/WaVNfT6_OoCMWPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWN)u!Xf\b0YctF>Za@-K\%&uZ]=bei^V@S#_Sa=2`Q-'@
+aihlOc-FY^dF$FmeCE.%f\,!4gYCWAhr*GOioB([jlY^gkiq?sli-5OmI'uB!V#XYo)J:]o_nI_
+p&Ojbq#C0hqYU0hr;?Nardk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?XETlr9""?r8\(Bio/kSi8=3hrK7&As,l]3m?%J%f%0iN
+s4$tqrmLhorQtPi!7(Sg"jG04aiMQra8<mV`W);)R.-I@QN!0L_Z7XR_u@OP_tM%I_u7IJ_>M1K
+_uI[S_uI[R`W!mP`VH2&TDtM^`;[aM`rF*OaR@7Ab5KN_bl>ogcF3DRrj;F-qm?=.s5!_3s53k8
+s5F.@jQGb+l20c@li$,Ili-8LmJlYTnH\XWp%S7Wq>1$3pW<6Pn]C[L!6OfQ!*&horDNPjqG?>S
+pr!-Mrl+`RkJ\okF*)PJGB\=YH@('gIXcm!JqJ]/KnbA=M2@+JN/WaVO,oBaOcklkPEc'3s-E\O
+rL!VQrgNJK!1`YMrL3_Rr0[MNs-EVKs-3PIrK75EOHBF%!fi8"rf$l8s,-f4s+p]1rJ(?+s+L<&
+rdt*"l[\qbrdt*$s+LE+reCH.!/UW2(lF60N/WaUNfT6_OcbfiPE_>tQC!u+R@=,E=IbqRT:hmO
+U8+N[V5C/gW2ZetXKAV-YHY:;Za7$H[^WcW\\#Me]t_=t_8=+.`Pom=aN;TJbg"GZd*^7heC<%"
+f@S^0g=tE=h;7&IiSrnXjQ5OdkNMp0$gR'Em-X6/n*fc9nc&(\oCV\Sp&Facp\jmeq>U6fqu-Hk
+rUTr=s474#~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?XET+r2'CgqP4%a!MQ1_EUn)9EU@]HSt2GNSG8TNRfAfQ
+RK/cAR/`N>Er'bUQfaV'Q2d0KQi<<>Qi21-GP?:SRIlmCRJrZ8S,JlSSc"??M#N2+M"HK&U]%"g
+VZ3RoVu`ltq5aIqs/l(!pTOV$!jT&;rj;[4!4Mlmq3V&Is-NVKp6GK?n<O$>!LHd_;uKVl;>O,h
+b5TTab5]Qbb/qd)b5]Wkb0.uNb0.uPbKKdGnrr7".WTTPF`qtQH$Xd`I=6QoJ:W<)K7nr5LPUeD
+MMmFPNK0'\OH>TfP*;)org!MLs-N\Os-`kToU>iNo:,]IrgE\Os-NbOrK[DIs-*DE!g/S+rJq#?
+NK*prs,6o7re^Z2s+gQ-s+UK+r.G!#rIO9brIOs"rIb-'s+UH,s+^T1reVJLMi3OQNK&sZO-#Kd
+P*2#nQ'IZ%R$a;1rgR#[SXuIHTqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['d?O\@K/^]Y(qm^VI\&
+_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(g"P07gtgfChr*JQj5]4^k2tjjrojgUlg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#C0hqYU0gr;HTbrdk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?X?Z1<)`cor)*GiohY6DrBBj<i'-m4!)WAdq+q&eohP6W
+s%`2Nq*=mCr]^<XqG6o`q+plaoM>K`rDEPjrDEJjpegKKp/:ofpe^ibnPJmUrDNSmrD`YmpIbEX
+r^uQNqc<;is&f8'!a&T-rE05+=^##.=TDY"=oV\*>Pqb*;Y<u\;Y<o]:]O;c:]OJl;uKVl;>O,h
+Er^=YFoHUbGlMsdGQ2pfGli;;H2CS:<Vfbe<W?+p<@W$1FEMbNGBnL\H[U<kIt3*%K7ei2L51SA
+M2I4MN/`jYO-#HcP*2#mPl?sJQN*<MR/`TRRe3'LSF`6KRf8`QR/`NQQMm*KPlHsGOogc-OSt4A
+NfB%tN;nh9MZ/J4M#W8/LAuu-K`$K%K)L8dJGk&uK)L?%K`?c*LB!#/M#N5JMMmCON/`gWO,oBb
+OcklkPa.N"Q^F/.Rf8dYS=Q7DTV8'RUSO]^VPg>jWN*##Xf\b0Yd(L?Za@-K\%&uZ]=bei^V@S#
+_Sa=2`Q-'@ai_fNc-FY^dF$CleCE.%f@em3gYCW@hV[8MioB([jlY^gkl0fSlKdg'mI'E2n*ol;
+rpg-^o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?f)L7~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?XEQkqrRq@k5=<DjQ#:[iU`01Ol;JpOTO1efDX;#ebmnt
+e("<Es3_>'d*L"_c-=JUb/qcHoZ-mLqO%8MqO%#Drg*N$qSVjA!5nfQqSE'GrPSQOqo/QSpr2Zo
+rl"iUpW!6Ro>p=@oud3UrQP>fqmPUos0Vd]s53k7s5F.@jQ5V)l2']AlhTiElN$;Nm0rFOnF?,B
+p%S7WqYU3fb4s*OaS*a@aS]!8;Z0Jd;!7lP_uI[S`VRU=`?oVHFED\MGBeF[H[L6jIt3'#JqJ`1
+L5(J>M2@+JN/WaVO,oBaOoCLFPE_=2Q2d0MQi*6MRJiTCS,JfSRJWBNQiEBMQ2d*KPPp[EOoLOB
+O8k7?NW+n:MuS\5M#rKgL])u,L&Zi(KDpK$Ja@pdJc:9!KE$W)L&Qi,LB*/0M>rG5MuJY9NK4"!
+"d"k0P*;.0Q"H>KR$a;1S"#q=St;RITqS3UUnjiaVl-MoWiN5'Xfek3Z*L^B['mEP\@K/^]Y(qm
+^VI\&_o0O5`lQ6Cb0/#RcHaeadF-Lne^i@(f\,!5gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB
+!V#XYo)J:]o_nFap@n=Zq#C0iqYL*gr;?Nardk+$s*t~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?XEQ*qkX=hV>R.gU]7(eEr'eME92*2DuuZ'T)G5[SG&HG
+RK/cAR/1k&F7OALEW)1'Q0Xb0Q2-a0Qi;7"GP@NtR/36MRdusIRe<0JSG\rTMZ8P'M"QQ&U]7.i
+V>dCmVu`ltq5aIq!3Q.$!3Q7'!3c@(r3$L4Z*L^B['[6L[^WaBQLgI?QM-UAQLU7?QMa\[;Z0Jd
+:]nk`b0'V'!6G/]rlP5aqo\r^q3(<4l&mB6F*)MIGB\:XH@($fIXcluJV&N-Knb>;Ll$tGMi<US
+NfT6_OHKO*!gAk5rg!MLs-NYNrgE_Rn!j9ErL*PMrg3YNrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7
+rJ:T3LPPh_re:B*r.G!#rIO<crdk'#r.G$&s+UH,s+^T1re^Z4!/pi8!KE-=Ns1W-P*2#nrfq)]
+Q^F/.R[]e:SXuFFTV8'RUSO]^VPg>kWiE,$Xf\b0Yd(L?Za@0L\%&uZ]=bei^V@S#_Sa=2`Q$!?
+ai_fNc-FV]dF$CkeCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=SmfDqJrpp*\!;-6_
+!quB_r:p<fs8)Thrqu]mo)=4?fDg@~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?X?W/<)cfq;Ys;l:f7!a!)N&Hr]]s=j?EQ?rD<Mkr)!)a
+qbR8gp.k<WqEY$Gn3Ht;rD<Ggpe^c^qb[,bq,$c^r)3;er^HTMqF1-Vr_`VjpJLres%i;apJLle
+qc!Moq,@/_s%3/]nOraQs%E2ho2kro!*T8&r`T8)!*fD*!*Jqt!*]>*rET1sq,?`[p/1fcq+pud
+r_NGjrDNSkp.u':FEM_JFEM_LGPcR_G5umdGl`/6q,I/iqGui\-?=0LFEVkPG^=[_I!pHnJ:N3&
+K7nr5L51SAM2I4MN/`jYO-#HcrfR>HPa)04s-E\Or0[JOrL32ErL3\Qqj@ALs-EVKs-3PIrK@2C
+s,d5@s,R,=rf$l8s,-c3!f2VerJ(<*s+L<&rdt*"m"#(drdt'#s+LE+reCH.!/UW2s,$f7repl;
+NrG(COHG]hPEc'3AsSdNR$jD4S"-%@StD[LTq\<XUnsrdVl?\rX/rG*Y-5(7ZEpmE[^NZT\[f>b
+]Y2(p^qmn*`5T^8aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^k2tjjl07L!rp0[Q
+mf)YUnF?MKs766_rUg6cp\4U\s7u]kqYU9ir;H3cJcF@%J,~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.6kPF?=jT=N'j7JH0OT:RDPN%c#OoO)6fDX;#ebmqs
+ec4,!ec+&"e'cVAc3MV<bK@rKaN4"o!li:$nsTBB!1E\N!13Z&qSVjArPJWPqn`3IrPSNNr5JWS
+q8M`or5JKOs2XlTs2Y)ZmE,"Cs3(Gd!6tJfq6o@l%Gfmui8ESRj5f=bkiq@-lMKoAlMg)\m-X3.
+n*oo=o_%qQq"adarVF\9aT0KZan<aJanWsWa83mV;uKVm;=dWJs7O;/`;dgP`p:SfEcZ>EFa&%S
+H$XgbI=6QoJ:W<)K7nr5L51SAM2I4MN/`ksNrb?)rf[;F!0mGIs-E\Oqj@;LnXBBDqO%8Krg*MJ
+s-3MHrK75EOHBF%s,R,=rf$l8s,-c3s+p]1rJ(?+s+L9%rdt'!n::Ffrdt'#s+LE+reCH.!/UW2
+s,$f7repl;NrG)YOHG]hPEV5rQ'Rc(R$jD4S"-">St;RITqS6WUnsrdVl6SpWiN5'Xfnt5Z*L^B
+[C3NQ\@K2_]Y(qm^VI\&_o0O5`lQ6Cb0/#RcHab`dF-LneCN7'f\,!4gtgfChr*GOioB([jlY^g
+kiq?sli-5OmI'uB#k7BSo()DDo^r.Us7ZKerV6EgrqcNhrVZWmo)=4?fDg@~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.6VY[.eV#I.cEqjYPE8P[1E;uR1T)G5[SGerVSGSfO
+RfAfBR.>=qEWC1WEWC+XQMm*:QM-U>QMHjIR.?U>GkH:TR/iWQRJE6HRK&`IS,A`IS,JlTSb\0=
+M>)i"LBjTMUnsobVl0Nm!NE*sWr]<&r2]n#r3$%$q6'\"s02R1rj;^5"1G\K\G)<ZQi*0BPlR->
+Q2X_\;Z0Ja;#AB7a8j9ZaSX*Yao]]-bP.1jPO"AUEcZ>EFa&%SH$XgbI=6QoJ:W<)K7nr5L51SA
+M2I4MN/`ksNrb?)rf[;F!0mGIs-E\Oqj@;LnXBBDqO%8Krg*MJs-3MHrK75EOHBF%s,R,=rf$l8
+s,-c3s+p]1rJ(?+s+L9%rdt'!n::Ffrdt'#s+LE+reCH.!/UW2s,$f7repl;NrG)YOHG]hPEV5r
+Q'Rc(R$jD4S"-">St;RITqS6WUnsrdVl6SpWiN5'Xfnt5Z*L^B[C3NQ\@K2_]Y(qm^VI\&_o0O5
+`lQ6Cb0/#RcHab`dF-LneCN7'f\,!4gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB#k7BSo()DD
+o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?fDg@~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.=;u]es;uKVj;>F&T4oIS:5Nb61;>!cY;>a8j:\[]X
+:\$gK5QF+H5QF%I;#O2b;#*oa;#3u`;#*ri;Gg<h;Ya2c7J0(C;Y!]b;#O2_;#*uf;Ya8k;ZB\q
+;Z'Jh9)M9[9)2-P9`.rj<s)K)='#,uqH3c#s'#D+!*]8&!*K,$!*]A+qcrknpf$c^nkoB_pJ:ce
+rDNSko2,@,"*Jd1Fo$:]G6<)8H$K=4pJguhq,Zf],'%aHFEMeOG^4U^I!pElIt3*%K7ei2L5(J>
+M2@+JN/WaVrf7)AOoCODP5pjGQ2d0MQi!0JRIQaDRJN<MQi<<LQ2d*JPPpXGOcY\'O8k7?NW+n:
+MuS\5M>rD3L])u-L&Zi'KDpK#Jae3fJc:9!KE$W)L&Qi,LB*/0M>rG5MuJY9NK4"!E0-3FP*;)o
+Q'IZ%R$a;1S"#q<SXuFFTV8'SUnjiaVl-JmWiE,$Xf\e2Yd(L?ZaI6M\%&u[]=bei^V@S#_Sa=2
+`Q$!?ai_fNc-FV\dF$CkeC<($f@\d1g>(N?hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8B
+oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s4@:$~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.'pZM;5s5a7AooT'5g628o!87A(rn%/#o[OK%e'cUh
+cHa\Zbfe/OaiMQpa7>YgR/Ou"_t(bE_uIUN_>M1K_u%CD`W!mDT`2q*`rF*VaSX$VaT'B^aSEsX
+aSX*Qb5]Zabl>rdc2b?L[d1?u[LBS#hr*JPioB+^kih:+lMTrKlKS'.s6C9`mI'E2nac;Ep\=R\
+qu$EkbO`mPan3[Janj*Wa8X-[;uKVl;=RKHs7jM3_Z.OQ`;dgP`pCYbEccDGG'A1VH?spdI=?Zr
+J:W<)KS>/8LPUeDMMqIm!KE-=Nrb?)rf[;Fs-3JIs-EYNpmC]ApR(oGrg*JIs-3MHrK@2Cs,d2?
+!fi8"rJ^c7s,-c3s+p]1rJ(?+re13%rIXrunppXhrdt'#s+LE+rJ(?-!/UW2s,$f7repl;NrG(?
+OHKO*"d>19Q'Rd9Qu8=\S"#q=St;RITqS3UUnjiaVl-JmWiE/&Xfek3Yd(L?['d?N\%&u[]=bei
+^V@S#_Sa=2`Q$!?ai_fNc-FV\dF$CkeC<%#f@\d1g=tE=hV[8LiSrnXjQ5OdkNM0plK[^%m-X6/
+n*fc9nc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4I@%~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.5VY[.hU][HhUndj.no=JEhf/^:EH1rLrgs+[pRM/N
+r0mSPm[3-X!-8'[s-NbOqN^W;oTf9=m$I^=m!&&hpmCuIrgEnXR[X&Aq3prFr1*bW!1rtConiO$
+reLB,",E\JV>d=qVl6PnWN,ls!N`F%XT,F%Y5>@"Y5bX(Y5b[7Yd(I>['d<M[^W`U\X3/Yl^.L7
+k`l-HrDNPjnPB;/aN4A$rl4uY"3AU+aSO![b0A9+P4Fh'Or\RbFEMbNG^4U]H[U<kIt3'#JqJ`1
+L5(J>M2@+Jrepl;NrG(?OHKO*s-*JIrK[DKrg3DIoU5H@rKmMLr0@;Hrfd;Ds,m>CrJq#?NK*mq
+s,6o7rJCQ1s+gQ-s+UH*r.Fs"r.4Ehr.4j!r.G$&s+UE+s+^T1re^Z4!/pi8!KE-=Nrb?)rfRGK
+Pa.N"Qi<@iR@9V7S=Q7CT:hmOU8+N[V5C/gW2ZesXKAV-YHY79ZEppG[^NZT\[oDc]Y2(p^qmn*
+`5T^8aN2KGbKS5VcHjncdaQ^qe^rF*g"P07gtgiEi8ESRj5]4^k2tjjl07Kulg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+%s*t~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.:;ufkq;Yj8j;#O8Q4oIS;5P.,>4o.>B;=RKV;?'Jk
+:\dcZ:]EZX5kmY=5lX(J5lFOY:\R]^:]!u`:\mo];=mcQ7/0[R;>j>g:\@Q[;?'Pj;ts8h;uK;g
+9DqKY8cD?Z9D)!X<rH)#<`f9$qcESq!EiV(>6J,4=]ei*=Su;&>$Ll/s'>Funl,B_l;@RXqbI2j
+rDNPjnPK1+rH/0bF`mY+!-eBd!-\?c!-n3:qGm>llr>'HFEDYKGBeCZH@('gIXcluJV&N-Knb>;
+Ll$tGMuJY9NK4"!!K`HCP5gaGPl6mIQN!6GR.Qg@R/NBNQMd$JPl?mFP5g[EOSt4ANfB%sN;nh9
+MZ&D3M#W8/LAuu,K`$K$K)C2jJGautK)C9$K`?c)LB!#/M#N82M?&S6Mueourf7)AOoCLIPE_>t
+QC%T<DOHr_S"-%@StD[LTq\<XUnsrdVl6SpWiW>)Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&_o0O5
+`lQ6Cb0/#RcHab`dF-LneCE1&f\,!4gYCWAhr*GOioB([jlY^gkiq?slKdg'mI'E2n*ol;rpg-^
+o^r.Us7ZKerV6Bfs8)WirVZTlo)=4?f`-I~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XN'skkO?;k5ONDk4au6On=h:PNe8)OoO)7f_X4uf)=.s
+f)O5%e'ZOgrltbnbfe/OaiMQra8_UtRIcgF`;@IN_uR^K`;RUR_Yh7I_Z%IH`:q7N`p05j`rF*Z
+aS3aNaSEsXaSO$Sb5TTabl,fccMG$J[dgcu[f>:ciW\B'jlYdkpZh_Cs69UKq!.kE&FAfPn*ol=
+p%A(Tq>:*frVl`<o#ggNoZ6aJrQ+lVr_iYkmSN0Jqo&9Is2=oUo#CUHqSXFqF*)PJGB\:XH@($f
+I=?]sJV&N,KS>/8LPUeDMMqIm!KE-=NrkE*OoCODPQ-mFQ2d0KQg'n9Qi36JQ2[$JPPgUDOoLOA
+O8k7?NW"h9MuS\5M>rD3L])u,L&Zi'KDgE!Jb=QkJc12uKE$W)L&Hc+LB*/0M>rG5MuJYCNK0$[
+O-#KdP*2#nrfqAeQ^F/.R[]e:SXuFFT:hmOU8+N[V5L5iWN)u!XKAV-YHY7:Za7$H[^NZU\[oDc
+]Y;.q^qmn*`5T^8aN2KGbKJ/UcHjkbdaQ^qe^i@)g"P07gtgfCi8ESRj5]4^k2tjikiq?slg4!*
+mI'uB!V#XYo)J:]o_nI_p&Ojbq#C0hqYU0hr;?Nardk+%s*t~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XNH&pS@kcrc7@Fqf(M6rGqn1rLa(\rLN_RrgWhSrL*/B
+i,\sdQBqE5rK[GKoTo*6rg)o;rg;tpoU5`Hs-`ePr0dGNq4%/JopblLrgi_>oni3ps/#am!2ogp
+s/?!urMoq"riQ4%riQ4'qQ9b"rN6+&$*US;ZEppG[^N[E\,a);QN3?5Qi!*8Q2X\Z;=79\a8<jV
+a8F$XaT0E]aTBZ1d-["ePPLC?OWJOaFEMbNGBeF[H[L6iIXls"JqJ]/Knb>;Ll$tGMuJY9NK4"!
+!g&P,rf[;Fs-3GHs-EVMl'VF9rKdAHrfmGHr0%)Bs,d2?s,R,=rJ^c7s,-c3s+p]1rJ(<*s+L9%
+rIXotomlskrIXs"s+LE+rJ(?-!/UW2s,$f7req5ENfK0]OHGZgP*;.0Q#;nSR$a;1S"#q=St;RH
+TV8'RUSO]^Vl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vf^;%Fu_8=+.`Poj<aN;TJbK\>Xcd:(f
+e'umtf%8R-g=k<:h;-rGi8N\Uj5f=ak3(pkl07L!m-O-,mf)YUnF?MKs766_rUp3a!;HEds7uZj
+qtpBjr;H3cJcFC&J,~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XNV.!)rhop/0j5pceX@oKN%5!']aGq,./grD3;cp.t?G
+qEXX:!)WVinPK6]qbZr]r_W8boht'Cpepobr_WSis%`Gepe^farDNSmohtcfqb$o_r(Hu\q+:TY
+qFgZYs&T/$qH!MqpfIQ">5_Y,>$5#,=T;J&=T)A(>$G51>Q\8<?![,$nl,B_l;@OW!)NSlr))lY
+rH.pZ!-\?crceKgG'<h.m8`^Xoi3&RF*)PJGB\:XH@($fI=?]sJV&N,KS>/8LPUeDMMqIm!KE-=
+NrkE*OoCODPQ-mFQ2d0KQg'n9Qi36JQ2[$JPPgUDOoLOAO8k7?NW"h9MuS\5M>rD3L])u,L&Zi'
+KDgE!Jb=QkJc12uKE$W)L&Hc+LB*/0M>rG5MuJYCNK0$[O-#KdP*2#nrfqAeQ^F/.R[]e:SXuFF
+T:hmOU8+N[V5L5iWN)u!XKAV-YHY7:Za7$H[^NZU\[oDc]Y;.q^qmn*`5T^8aN2KGbKJ/UcHjkb
+daQ^qe^i@)g"P07gtgfCi8ESRj5]4^k2tjikiq?slg4!*mI'uB!V#XYo)J:]o_nI_p&Ojbq#C0h
+qYU0hr;?Nardk+%s*t~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd:=klBrBkPOEAk5^Y@OSY+.P5^[-P5ULCg&0M!fD*qr
+eHOIOda?FfrltVjbfe0.aT0EWa8VM+RdQU=R/Y&$_u7ON_u%CL_u.@K_YqCG`;%=N`p05h`q@CJ
+aT'B^aSa-[aSO$Tb5]Zbbk]KacFEPVs0hO,qmQC2s5=1BjQ5Oekiqj,rp0IHs6KXKrTb'^mI'H4
+o(;VKp\F^`rVc`pbl#ZQb506PaSX*VaSa*Y;Z0JY;!S)X`:h+K`;[aH`r3mR`#j#@FEMbNGBeCZ
+H[L6iIXcluJV&N,KS>/8LPUeDMMqIm!KE-=O8k:AOo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUD
+OoLOAO8b1>NW"h9MuS\5M>rD3L\uo,L&Qc&KDgDtJbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\
+NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS
+\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0p
+lKeH9!U]=Smg/FQnac8BoCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd:6VY6hdEoqB>E8P[4T`1S^T)G5USGScURf&TFR/V-c
+Erq\oQMZsGQMZs?QM6[DQL1%;R/D3tGOV$uR/EBLReWBJRfAlWReiNNSGo)ZMtW&#M=QK&V$Elq
+Vl6PnWN,ru!3H!us/u$s!3H1%s/u^4Z*L^C[C3QRrjVs=g6_`'n<O#OrDDlW!65#Wrl4rY!6>&Z
+s2P;aaihoRd-HkcPP^OAOWSUbFEMbNGBeCZH[L6iIXcluJV&N,KS>/8LPUeDMMqIm!KE-=O8k:A
+Oo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUDOoLOAO8b1>NW"h9MuS\5M>rD3L\uo,L&Qc&KDgDt
+JbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8S=Q7CT:hmO
+U8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQcHab_dF-Ln
+eCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8BoCV\Sp&Facp\jmeq>U6f
+qu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd8><;onr<!#ur;YEuG4l\a)4mGl>;#jGj:]=,_:Z"A:
+;#O2V;#X>l;"mcb;"[]Y;ZB2_7.`kH7/9^\;>j>i;?'Gm:]*ub:\[cb;>O/j;uBPn;>*oa9DM9[
+9DhE\8cD?\9D_E_<WH4t<rH+p=T;P'>Q7k0=]ed-=Su8"=T;P(>5qh+?2e.1;t<iW;u'>W;?'Pm
+;<q'XFT-F]G5ZUbGl;gbG5upS<Us2b<?H7&FEMbNGBeCZH[L6iIXcluJV&N,KS>/8LPUeDMMqIm
+!KE-=O8k:AOo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUDOoLOAO8b1>NW"h9MuS\5M>rD3L\uo,
+L&Qc&KDgDtJbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8
+S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQ
+cHab_dF-LneCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8BoCV\Sp&Fac
+p\jmeq>U6fqu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd:<klBrCkPOEAkP^MCOSY+&P5ga-OoX23f_X4sf)=,&
+eC2jnd*M^:#0kB8b/qfIprE6!s-i;Br0[E#rkn]QpV[$LqnrHNs2"TLrknEIp;Q6gou?sN!6FuV
+ouR*R!6G#YrQ>)^!6k2^!7(SRp:'h*q6g./qmQdhjQ5Oekiqg+!:0LHrTjFIrp(-_mdKZ9o(;YM
+q"adarVlisrlk>am)o1Ho>pjOrQ+uYrDDcTlMpb"!5nKJrl+KKr5JTP)fg"AFEMeOG^4U]H[L6j
+It3'#JqJ]/Knb>;M#N53MMqIm!f`5#rf7,BOcfU*s-*GHqN^E5pm(iCrfd8CrfR5Br/^l<s,Hu9
+s,6o7rJCN0s+gQ-re:?)qh+fumXb:fr.G!%s+UE+s+^T1re^Z4!/pi8&<2^1O,oBaOcklkPa%Gu
+QC%T<ELE8bS"-%@StD[LTq\<XUnsobVl6SpWiN5'Xfek3Yd(L?Za@0L\%&uZ]">Vg^;%Fu_SX4/
+`Pom=aN;TJbK\>Xcd:(fe'umtf%8O,g=k<:h;-rFi8ESRj5]4^k2tjjl07L!lg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+&s*t~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd9=oqqJ[iGna6k&LB@q4R_ZrLX"ZqOIST!1a%X!1NhR
+s-NeSpR(o"rc@aSnT4Vorg!GJpQbK=q3CrFop>TDrg3VOpj)CSn<s9CqjI;Lq4%#FrL<VQrgj%H
+p58L!nq[[MVPg>jWMuntX/rDtXT5NuXo,7-Xfeh1Z*CXA[C*IB[fX(M\^m,EQM$OA;<UjU`W*sX
+`rX9$qSrf]b0/&Vda[TGnrrs6rfJ.?F*)MHGB\:WH?spcI=?ZrJ:W<)K7nr5L51TaM#iKlrepo<
+NfO+"!g&P,rK@2Erfm8Em$@F3rfmDGr0%&As,d/>s,R,=rJ^c7s,-c3reUT0rJ(<*re10$r.=?f
+r.=j!re1<*rJ(?-!/UW2s,$f7reqDJNfK0]OH>TfP*;,pQ'IZ%rg7\nR[]e:SXuFFTV8'RUSO]^
+V5C/hWN)u!XKAV-YHY79ZEpmE[^NZT\[f;`]Y2%o^VI_'_o0O5a2l?Db0.uQcHab_dF-LneCE.%
+f@em3gYCW@hV[8LiSrnXjQ5OdkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\jmdq>^<gqu-Hj
+rUTr=s4RF&~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd8>;cN`rrD`eq!)iPggHFR\l;7:R!)WShs%`8`hEV!8
+lVRRXrD<;cr_W8bp/:ZSr^?BGq,.)er)!Jk:]!ob:\moe;#sQlp/:fcp/:WXoM#9Xp.G3U!`iB(
+qc<\tpK.c*>$>-6>$4s0=',?$r`B)$s&oA*s'5S0ra#S'mSa$_r)3Aiq,6NUkYV;$rH/0bGBWq/
+!HrVaFour6H[Y3[nQ,Hc)fg"AFEMeOG^4U]H[L6jIt3'#JqJ]/Knb>;M#N53MMqIm!f`5#rf7,B
+OcfU*s-*GHqN^E5pm(iCrfd8CrfR5Br/^l<s,Hu9s,6o7rJCN0s+gQ-re:?)qh+fumXb:fr.G!%
+s+UE+s+^T1re^Z4!/pi8&<2^1O,oBaOcklkPa%GuQC%T<ELE8bS"-%@StD[LTq\<XUnsobVl6Sp
+WiN5'Xfek3Yd(L?Za@0L\%&uZ]">Vg^;%Fu_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8O,g=k<:
+h;-rFi8ESRj5]4^k2tjjl07L!lg4!*mdBQ4nF?&JncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+&
+s*t~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd7:klBrCkPOEAP5CCAO8tF*P5CI,P4mQ*fDF.ueHF@L
+da?D?c3MV<bKA#NaiOD#"3ANORf&TNRd-:B`5T^k`:UtI_YqCI_YqCF`:h15T_?Cta7[OPaT0E\
+ao0B\bPfZ`blH&eblH&f\Fm?%[K*`/[KYaRk3(smpZheEqWe(Gqs"g[m-X61nac;DpA"FZqu$El
+s8W&ArQFHJqT8?Ms2k5\!6>%8k"u'Vrr2utrVllsp](*.s24QKrPeEKrPe]Q*--+BFEMbNGBnL\
+H[L6iIXcluJV&N,KS>/8LPYqd!K)g7Muo!!NrG+>OT1IAP5^[EPiJ&-Pl?mDP5g[DOSk1>NrP+;
+N;eb8MZ&D3M#N2.LAlo+K_g?!K(+?hK):3#K`6])LB!&/M#N82M?&S6N"Cu/NfT6_OHG]hPEV5r
+Q'Rd9Qj&nHS"#q=rgm;cTV8'RUSO]^VPg>jWN)u!XKAV-YHY79Za7$H[^NZT\[f>b]Y2%o^VI_'
+_o0O5a2l?Db0.uQcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNMp0$gR'Em-X3.n*fc8
+nc&+Zo)SF]o`Fj]p\agdq>U6fqu6NkrUTr=s4RF&~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd6<VtHq_V;6.kE8km2TE(V^T)YAXSG\lVRf/WUR$jB=
+QiibDF*%8"rcA'\q/uXXp2g5"q3LZ<q3LlBqNgoCr0[MNrKubnnX9BDr0dDMpm^oErL<bU!1j+Z
+rgitFp58L!o8!OHVl6Pnri-""XRiRoXT,C8XKAS*X/i>'Xfek3Z*L^C[C*IB[fX(M]@<2FQM6[C
+;<C[V`5T^m`W4'X`X'W,b082[e'jNGP4Xt7P5gXaEcZ>EF`qtQH$Xd`I!pElIt3'#JqJ]/Knb>;
+M#N53MMqIm!f`5#rf@)@s,m8Crfd>Gj-BS-rfd5Bs,m;Br/^l<s,Hu9repf6rJCQ1reLH,re:?)
+qLe]tn:CLhqh+p%re:?+s+gW1re^Z4!/pi8&<2^1O,oBaOcklkPE_>tQC%T<"dtgKS"-&KSm%bZ
+TqS3UUnjiaVl-JmWiE,$Xf\b0YctC=Za@-K[^WcW\\#Me]tV7r^r!t+`5T^9aN2KGbKJ/UcHjkb
+dF6Upe^i@(f\,!5gtgfChr*GOioB([jlY^gkl0fSlKdg'mHs?1n*oi:rpp*\!;-6_!quB_r:p<f
+rqcNhrqu]mo)=4?g&HR~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd7>;ZKer<W,ns;ZK_k;;47n55n@D;#=,i;#O/i:A@Tc
+:f$^Jq*=L8s%hlUs&&Me!)NPiohkE\ogSjJp-\jWpe^lc"&Mcg:]4&e:\dic;?0Sg;Ys>i;?0Ym
+;X[9R9`7W\9)M?^=8Q%u=8#_t=^##.=TMW+r`9&!r`9#"s&f;(#[1G:>[1Q@?=2YhqG[2fn58=E
+!-J0^rH8<fG'8"NrH89fH@1,)<Us2e<?-%#FEDYKGB\=YH@($fI=?ZrJ:W<)K7nr5L51TaM#iKl
+repo<NfO+"s,d8CrK@/DrflH.rKR;Fqi^uArfI&=s,R,=rJ^`6s,-c3s+pZ0rJ(<*re1-#r.=Eh
+r.=fus+LB*reCH.s+pZ2s,$f7reqDJNfK0]OH>TfP*;)oQ'IZ%rg3kWR[]e:Sc53aT:hmOU8+N[
+V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NQ\@K/^]Y(ql^V@S$_Sa=2`Q-'@ai_fMc-FV\d*^7ieC<%"
+f@S[.g=tE=h;7&Ii8N\Uj5f=ak3(t-kmQeBm-O-,mdKW6nF?MKs766_rUg6cp\4U\s7uZjqtpBj
+r;H3cJcFF'J,~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKkkaNDkkO??joCS<OT:LAOm\D*PO"D2g%X.sfDF/!
+eI'gTe'cXjcd'h\bl5cjb/q`FaN)?BrL<GJm@!jjr5AEKmDAh>q8E6Lr5ANPn=fTLou?gJn]:RK
+rlY2_q9/i`rm(GdqRH7.k-bKVkNM0plKe92rp0IHs6K^Ms69RKs6C0^mdTc;oCV_Lq"ad`rVlcq
+rltGdrlaKIqT86Js&%fQ"T85srr)iq"9&5trqHHi`;RUI`;R[J`r3mS`#!K:FEMbNGBeCZH[L6i
+IXcluJV&N,KSBD[!JcL1M#iKlrf$l:!07#=s,d8Cr0%&Cr06W7r07/DqNCi?s,d,=s,R,=r/CZ6
+s,-`2s+p]1r.b3)re1-#qh"Bir.=fure1<*rJ(?-s+pZ2s,$f7reu8bNfK0]OH>TfP*;)oQ'IZ%
+Q^F/.R[]e:S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(ee'umtf%8O+g"P39h;-rFi8ESRj5]4^k2tjjkiq?sli-5OmI'uB!V#XY
+o)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+&s*t~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noXEkn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKVPg?bVYd4%EV?(*TDY8\SbelQRfJoRRJrQUR@'A0
+rH.jVqK2XXpN6CUqj72Gp6GE=qN^Z<s-NYNs-N_Pn9XhSl'_O>oUGlLrgW\OrL3eWrgj%Ys./b>
+qMP$(o8*FF!3,sts/Q.$or\(lqlBb!s/uU1ZEpmE[JmT8\@MRLe<g&uq3CtWj%ofp`PhSk%*$?0
+ai_lTdaHUnPEY9pooo99rfJ"<FEDYKGB\:WH@($fI=?ZrJ:W<)K7nsXL&m'creUZ5MuJ\8N<#";
+O8k=AOo1CAPPg[5Q2HmFPPUIAOoLO?O8k7?NVnb8MuS\4M>rD3L\uo+L&Qc%KDU8kJc(,sKDpQ(
+L&Hc+L]<20M>rG5MuJZ`NK0$[O-#HcP*2#mPa.N"Q^=),R@9V7S=H.AStD[LTq\<XUnsrdVl6Sp
+WiN5'Xfek3Yd(L?Za@-K[^WcW]">Vf]tV7s_8=(,`5Ta:aN2KGbKS5VcHjkbdF6Upe^i@(f\,!5
+gtgfChr*GOioB([jlY^gkih9qlKeH9!U]=SmfDqJrpp*\!;-6_s7ZKerV6EgrqcNhrVZWmo)=4?
+g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKrDW_qs&Jtr!E2nn;#icP53b;g55S.K:]OAg;#=)i
+;"RNa:dFJ6nj*1=s%hcRs%rbml;@:Ro1&^Js$ZZM!)`GdrD<Pkp.tQ^s&&_m!)`JgqG@5jr_r_m
+k"G_Jqb-ZU!*B%us&\nrrE9/&!EW>!<W6#0='/R-=^#!5>[1Q??=.&Gr_qcRqG[2fp/0jH!-J3_
+s*+Hc!HiM`FoQUgG^=^aI=:<ZnlGWf(NX\?F`qtQG^4U^I!pElIt3'#JqJ]/L&Qf-LPYqd!K)g7
+N;nk;Nr>%=OT1I@P5^[CPjXh7Pl6gBP5^UDOSb+=NrP+:N;nh9MYr>2M#W8.LAlo+K_g>uK(=Kj
+K):3"K`?c)LB!&/M#N82M?&S6N.$\GNfT6_OHG]hPEV5rQ'Rc'R$a;1S"#q<SXuFFTV8'RUSO]^
+VPg>jWN)u!XKAV-YHY79ZEpmE[C3NQ\@K2_]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^7ieC<%"
+f@S[.g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!rp0[Qmf)YUnF?MKs766_rUp3as7cKes7uZjqtp?i
+rVc<dJcFF'J,~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3I)kNDd,s60OIpu_Y>nWEg4r/pK3p64p-s4RJ+p"9/n
+r72J1eC;sqdEp4ccHXVXbKJ&Mao0<\SGJ`QRfAlURdZ[>`;mjP_tCn>_th7L_tV+2U%ZM'a7%+G
+ao9H^bPKH_c2Grcc2"m@\*:='kNV6rrp0FGrp0IH!pf.:rTOjYm-X3/nFH2Cp@e7UqYU6gs8(">
+bl5fGb5KH^a8j?WaP]kpqu-EqrVZWlrV$9g_Z[oq_o0L``V7CM`Vm^lEccDGG'A.TH$Xd`I!pEl
+It3'#JqJ]/L&Qf-LPYqd!K)g7N;nn;Nr>%=OT1I>P5LO6Pl$[?P5UOCOSb+=NrG%9N;nh9MYr>2
+M#N2-LAlo+K_g>uK(FQkK)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'Rc'R$a;1
+rgR/_SXuFFTV8'RUSFW\V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?O\@K/]]=bei^;%J"_SX4/`Q#s>
+aN;TJbg"GYcd:(ee'umtf%8O+g"P07h;-rFi8ESRj5]4^roOCIkiq?sli-5OmI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3H=rMKRlpnn"dqf'>jpRqGVrgs+[r1*SP!1NbP!1<\P
+s)n0[r,_jZqK;COpm:lDqN^*,s-NJIpj2X\q0MV"rL3bSr0m)DpmV5Ps.'%Ys.'(Zq2561p5Ad)
+qhb*(rJ:TSWiH'!s/c$u!j&N+r2fmuri,t!ri?7*YHY:;rj2g9[^WcWr4:UK!1<VLqNh&Ei(sNn
+`5KRl`W*j``lQ9Ec-Oebe'c\,P4k+:P5gX]EccDGG'A.TH$Xd`I!pElIt3'#JqJ]/L&Qf-LPYqd
+!K)g7N;nn;Nr>%=OT1I>P5LO6Pl$[?P5UOCOSb+=NrG%9N;nh9MYr>2M#N2-LAlo+K_g>uK(FQk
+K)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'Rc'R$a;1rgR/_SXuFFTV8'RUSFW\
+V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?O\@K/]]=bei^;%J"_SX4/`Q#s>aN;TJbg"GYcd:(ee'umt
+f%8O+g"P07h;-rFi8ESRj5]4^roOCIkiq?sli-5OmI'uB!q>aMrpg-^o^r.Us7ZKerV6Bfs8)Wi
+rVZWmo)=4?g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbGP(Lto'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3G@;uTYt;cH^r<W#es;c<Qkq`X^=rBBO1j$*66q,%#e
+q,%)gs&/kos%iYkq+guerBU*Aks4?,k>CtOn4*@FqF($RrDEMiq+plas&&bns&&Si!`MuprDESm
+rDWVlh+RK7qc<_unQ5rr<`N.!<;ff"<``C+=oMS,>?kH>ra#Y5?=*J,iDTJMqGR5gi(sDrqfWEk
+F*)MHF`r"UH[C-gIJ-Y1<V'8h<>]auFEMbNGBeCZH@($fI=?ZrJ:W<)K7nsXL&m'creUZ5MuJ\8
+NW5%;O8k=AOnt7=POXn7PPLC?OoLO?O8k7>NVnb8MuS\4M>rD2L\uo+L&Qc%KDU8lJc(,rKE$W(
+L&Hc+LB*//M#rQmMuJYMNK0$[O-#HcP*2#mPa.N"Q^=),R@=,E>b%@VStD[LTq\<WUnjiaVl-Jm
+WiE,$Xf\b0YctC<Za7$H[^WcW\[oDc]Y2%o^qmn)_o0O6a2l?Db0/#RcHab_dF$FmeCE.%f@\d1
+g=tH>hV[8LiSrnXjQ6C'"m>+6l0@U6liHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?irVc<d
+JcFF'J,~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3I(k3(q*kl9lIkkaKBk5UV6Oo1=<On+\/POan:gAfju
+f_jA!edp<\eC2jod*L%`cHXSVbKBh+!6G#,oUGTDs-`_Ppr36Nqnr*Dp;?[DoY^$hrh0.^pW!*N
+n&YILrQ>&]rQP/`rQbAdpUKV"n?rD_lK\?6qs+.GqWe(Es6:*[mI'H4o(2MHpA"I[r;HKlp<ET\
+!6a3@rlP)Zhba1H!W;rjs7XA1`:CnA`r!aT`"[65FED\MGBeCZH@($fI=?ZrJ:W=OK*I!_L5(J=
+M#N54MMmDlN;nk;Nr4t<OT(C;P4=b1P5UOBOSb+<NrG%9N;nh8MZ&D2M#W8-LAlo+K_^8tK(acl
+K)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'R`&R$a;1rgO(]SXuFFT`1WuU8+N[
+V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ]">Vg^;%Fu_8=(,`Poj;aN2KGbKS5VcHjkbdF6Up
+e^i@(f\,!4gYCWAhr*GOioB([jQ5OdkNM0plKdd&m-X6/n*fc8nc&(\oCV\Sp&Facp\agdq>^<f
+qu6NkrUTr=s4[L'~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3H<V>[:jVu!:gV=nlIEV?(&TDkG^Sc##RRfJoNRJM's
+FSU(SFT.[%Qi*0JQ/e21QhZsCHMr3dI/&'_RJ!$7S,/QRS,AfTSH,2ZSc4NDMtr8.Mtr8,M#`A,
+M#aRTX8]4#XoGL%XoGI&Xo,7%X/`6!WXc)2Xfek4Z*L^C[C*HP\GWo=\[p(QqN_,Hhba<i&B)K(
+`5T^8ai_iQd*U1gda@0>pQPH:'p3NXFED\MGBeCZH@($fI=?ZrJ:W=OK*I!_L5(J=M#N54MMmDl
+N;nk;Nr4t<OT(C;P4=b1P5UOBOSb+<NrG%9N;nh8MZ&D2M#W8-LAlo+K_^8tK(aclK)1-"K`6](
+LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'R`&R$a;1rgO(]SXuFFT`1WuU8+N[V5C/gW2Zes
+X/rG*Y-5(6Z*L^B['d?N\%&uZ]">Vg^;%Fu_8=(,`Poj;aN2KGbKS5VcHjkbdF6Upe^i@(f\,!4
+gYCWAhr*GOioB([jQ5OdkNM0plKdd&m-X6/n*fc8nc&(\oCV\Sp&Facp\agdq>^<fqu6NkrUTr=
+s4[L'~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3G?;cEZns&/tu<E8rr!E2nq;>`QU4oRYB5Q3k14m,$(
+:\dib;>F#g;>jAm;>j>f:\d9P5NtGp;"@K^;Yj8c;Y3HS8,c!T7JBXW;>j>i:\IW\;>X5n;c6Lj
+qbmAkrDM3>rC[#hs&\_m!EN4t<;ol)<`iL->$>-7>[:Y6?34J??1q4U;Ya8e;Vt=NFoul1F`dV(
+rcJHiG^=^aI!pD7<:X&]<r>r3EcZ>EG'A.TH$Xd`I!pElIt3'#K)UB,KS>/8LPL]bM#rQmMuJ\8
+N<#":O8k=@Onb+0PP:7=OoCI>O8b1=NVnb8MuJV4M>i>2L\li*L&Qc$KDU8oJbjupKE$W(L&Hc+
+LB*//M#rQmMuJYMNK0$[O-#HcP*2#mPa.N"QC!u+R@=,E"e;-TStD\TTkL0qUnjiaVl-JmWiE,$
+Xf\b0YctC<Za7$H[^NZT\[f;`]Y2%o^VI\&_Sa@3`lH0Aai_fNc-FV\d*^7ieC<%"f@S[.g=k<:
+h;7&Ii8N\Uj5f:_k2tjjl07L!lg4!*mdBQ4nF5uIncJFTo`"O`pAambq#C0iqYL*gr;?Nardk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`1o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3I(jlZL(s60LIs60@Cplb$,o9/O*plYZAgAT^sf_a;!
+f)O82eC2mpdEp4ccHa\XbK@uLqj[GPp7)#Lq4%>Orl+oWrPefTqSW9Ks24`Np;?[DoY]mdr1Nf(
+qoA9K!6P,\q9/`\qT\uas3:Shp:07oqR6F5!pT"8r9O=Hqs4:I!pT"8rok!Zlg4!*n+#u?o_/%S
+qYU3iq>^-4s31DahTGc<hbX=Mr;$HkrUg-`_u@UF`V@IM`=9b+F*)MHG'A.UH?spcrd><+It3'#
+JqJ]/KS>/8LPL]bM#rQmMuJ\8NW5%:O8b7>Olqo*Oo:C=O8b1=NVe\7MuJV3M>rD2L\uo+L&H]#
+KDC,pJbjupKDpQ(L&Hc+L]<20M>rJ5MuJY9NK4"!IuoeTP*2#mPa.N"QC!u+R@9S6S"-%@StDXJ
+TqS3UUnjiaVPg>jWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/^]Y(ql^V@S#_SX71`Q#s>aN;TJbg"GY
+cd:(edaZdsf%8O+g"P07gtgfChr*GOioB([jlY^gkiq?slKdg'mJlVSn,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s4[L'~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`1o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3H<Uo"!drhoXjrh]1)j`1<@ol9nMpi-:Soq;2Srgs+[
+rLEeTs.'+Y".GXHRf&TNFS^.NFSU(XFSqNuQi330QN*<HR.Ye(Hh`!dHhWs(Rcg1>RerTQSGeuY
+SGo)WMYi=oMY`20MZ0[UXT,F%XT,F!XT,@!WrB%,XKJb2Z*L^C[C3NRrODp>rOL%:rg)G<qniZW
+`Q#s?bK\B3d/VJndc?SdPP^LPO`GMbFEMbNGBnL\H[Pg@%t9"YJ:W<)K7no3L5(J=M#N54MMmDl
+N;nn;Nr4t;OSt=)P5LI@OSb+<NrG%8N;nh8MYr>2M#N2-LAlo*K_^8rK)'uoK)1-!K`?c)LB!&/
+M#N82MZ8V6Mueourf;PjOcbfiPEV5rQ'R`&R$a;1R[]e:SXuFFT:hmOU8+N[V5C,fVl6SpWiN5'
+Xfek3Yd(L?Za@-K[^WcW\\#Me]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$CleCE.%f@\d1g=tE=
+h;7&Ii8N\Uj5f=ak3(sml0@R"m-O->mf2bUn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`2o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3G?;H$Nm;?Kis<E8rr!`MuoofW+7rBBR2o03(:pHJCK
+pJC`aqG@2hrDEVmr_WMgq`jsCpcnU?q*FsEj\YPGlr*@Cpdb?Rr^HQXrDDuZq,.&fs&8\jrDWYm
+dS'R@!a&N*pK.Dsr`BA+<`N*u;cEWo$W^>1=BSg3>?kE=?N+=2?N4=&;rCRH;r:FMFo?C]F9Hc2
+G^4W4Hh15-<V9Dk<=EnhFEDYKGB\=YH@(&=I1LdVJ:N3&K7ei1Knb>;LPYqd!fDnorf$l:s,R#<
+rfI)@kE>b*rK-o;rf6u;qi(Q5regW1s+pZ0r.b3)rIk!!q1AEnqL\Qrre1<*rJ(?-s+pZ2s,-i7
+repl;NrG)hOHGZgP*;)oQ'IZ$Q^F/.R[T_8S=Q7CT:_dMTq\<XUnsrcVl-JmWiE,$Xf\b0YctC<
+Za7$H[^NZT\[f>b]Y2%o^VI\&_SjF4`lH0Aai_fNc-FV\d*^7heC<%"f@S[.g=k<:h;-rFi8ESR
+j5]4^k2tjjl07Kulg4!*s6fpUs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNhrVZWmo)=4?gAc[~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYOjQ5Lcr9*t@rTEL0r/pT6o99-;o99.+n_!ckrRV#!%
+b/tVda?Fgcd0n]c-4ARpRCuKpm_/Lq3qB'rl4oUs2=ZLrl"?EpVcaBjIuRG!6+cRrQ"NN"3J^.b
+Po`^bPKHXc2>iechb3K\DF^olN-A<qs+%Dqs".G&*rWNn*oo>p%J.UqYU6jrqcWprq=V5bl5f?b
+2H1r;?-Fpq"agbrq-6__u@UF`VRUM`?0/CFEMbNGBeCZH@($fI=?ZrJ:W9'K7ei2Knb>;LPYqds
+,-i7rf$l:rf6l:rK-l<plbH8r/g`8rf6u;qi(N4s,-]1s+pZ0qhG*(re1'!q1AKpq1AEps+LB*r
+J(?-s+pZ2s,$f7rf$l:!07&>'p+Q?P*2#mPa.N"QC!u+R@9S6S"-&KSctaZTqS3UrhNSkVPg>jW
+N)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=+.`Poj;aN2KHbKS5VcHjkbdF-Ooe^i@(f
+\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?ir
+Vc<dJcFI(J,~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYOUSFW]r20Cir20%(kAg<<qf24JrGhG%qk*kZs.0+Y
+s-rkT!1WtV".PaIRJ1h!Fn0YOFoQR^R.Zg<Q2m9<QN*<IR.5LpHiJBlHha$-RdZaFSF;sFSGSlR
+MYi>"MZ8P(MXRYHWr]6"r2L1,Xfek4Z*L^C[C3QSrOMs<"1PeM\'UKAQN*<KQJk[>;%(7W_SX4/
+`lH3Ebg$(3!n#HEifa,$qN;qAFEDYKGB\:WH?spcI=6QoJ:N3%JqJ]/KnY89LPL]bM>rJ5MuJ\8
+NW+t8O8Y1:Onb+8Oo1=:O8b1=NVe\6MuS\3M>rD2L\li*L&Qc#KDC,rJbaonKE$W(L&Hc+L]<20
+M>rG5MuJ\8N<#"<Ntmb=OcklkPE_>tQBml)R$jD3S"#q=rgj:cTV8'RU].&iV5C/gW2ZesX/rG*
+Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn*`5T^8a2l?DbKJ,ScHab_dF$CleCE.%f@\d1g=tE=
+h;7&Ii8N\Uj5f=ak3(t-klL)8rp0[Qmf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0gr;HTbrdk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYO;c6Ll;uKSp;cN`rr)E5Lk<8E#o0<1;q+pZ[r)*;e
+s%rbor_j&";,C(d:esm_5lX(G5kdM>5l!_6;#O8i;"IQO;XHsK8,c!R;#4&Z;#!oc;?0Yh;Z9Vo
+;Z9A=9Dqrm=85nt=8uA*=&r=#<;fbq<!lW+=BJ^/>$P<<?N"47?<plC>[6_ri)9ALiDBMN%<Z`5
+EcZ;DFEMbOH$O`8HNJM?Hgt)+<VBJl<?H:(FEMbNGBeCZH@($fI=?ZrJ:W9'K7ei2Knb>;LPYqd
+s,-i7rf$l:rf6l:rK-l<plbH8r/g`8rf6u;qi(N4s,-]1s+pZ0qhG*(re1'!q1AKpq1AEps+LB*
+rJ(?-s+pZ2s,$f7rf$l:!07&>'p+Q?P*2#mPa.N"QC!u+R@9S6S"-&KSctaZTqS3UrhNSkVPg>j
+WN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=+.`Poj;aN2KHbKS5VcHjkbdF-Ooe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?i
+rVc<dJcFI(J,~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UW['j5g7%!9X4Bqrn(CrKHi9rfcf6o98p5p65F-nCRcn
+f`'M$edp<\eC2jndEp7dcd'eZS"&`6qO@GPqO@H'rl+fRq8;mDqSW'Gou$U"l(J*Mq8WBRprNEU
+s2tAbnBCXO!7(Mgs18!9rODR1rj_=(s6B^PlhfuElN$5Jkn*.Glg4$.nac;Dp@nCZqu-Nks8W)u
+rV4Y3bl5f@b2Q7q;$?XgqYL0^s74)-`::hD`qmX_F*)MHG'A.TH$Xd`I/\NtIXcluJV*lR#D@eb
+L5(J=M#E/3MMmDkN;eh:Nqnb2OSk78OSFn8NrG%8N;eb7MYi81M#N2,LAlo*K_U2dK)(&uK`?c(
+LB!&/M#N82M?&S6N;nk;NrG(SOHGZgP*;,pQ'IZ%Q^F/.R[T_8S=TYN%\KDfTq\<WUnjiaVl-Jm
+ri/ntXKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%J"_SX4/`Poj;aN;TJbKS5VcHjkbdF6Upe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6liHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?i
+r;H3cJcFL)J,~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWZ=U8+IaUo"!dr29OkrGhFJluD--qJcM-oUu#Ps.94\
+opc&PRf8cVRd"t`FT.[.R.Zg?QN!6MQiNKKQN!0GQN*<IR/)+&HLuOaHMO!-Re*$ESF;sGS,f,Z
+T)YAWMY`8!MYW,)MXdbLX/`3!WW&n+X/rJ-Yd(L?['[6M\Gj&=\G`o:[a1<8QJta=;$t.V_o'I5
+aND`Oc2Puhcd;[>i0*u$qN;8.FEDYKGB\:WH?spcrd=s!It3'#K)UB-KS>,7L51P?rJ:T5Mi7Om
+rf-r<q2b<4r/p`8plGB6rf-f6repc5qhb?/reLB*re:<(pk.pbq1J["s+UB*s+gW1re^Z4!/pi8
+s,@#=rf7eUOcbfiPE_;sQ'Rc'R$a;1R[]e:Sc52jT:hmOU8+KZUnsrdVl6ToW`,t"Xf\b0YctC<
+Za7$H[^NZT\[f;`]Y(ql^VI\&_Sa=2`Q#s>ai_fMbg"GYcd:(ee'umtf%8O+g"P07gtgfChr*GO
+ioB([jlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4dR(~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWYE<)`fps&8ko!E2ts<W5tr4nCf&4nCl/5PdS<:\@Q^
+;>O)i;,[Bl!)ibm!)WPXr^$6Cp-8L@qEaRHl;?qHq+'sEq*tESqG7/hrDNYmp/(H[m8Em]s&/\f
+rCm2`!)26Br`B/%q,mVt"^"i,<)Z]m;[ZQ*<``C+>$>-8?!dM;!+,Y1s'5S.r`&;ahbsGPi_]PM
+rGqmZ"Eo!6H$T=6s*O67nQ#?brDa8IFEDYKGB\:WH?spcrd=s!It3'#K)UB-KS>,7L51P?rJ:T5
+Mi7Omrf-r<q2b<4r/p`8plGB6rf-f6repc5qhb?/reLB*re:<(pk.pbq1J["s+UB*s+gW1re^Z4
+!/pi8s,@#=rf7eUOcbfiPE_;sQ'Rc'R$a;1R[]e:Sc52jT:hmOU8+KZUnsrdVl6ToW`,t"Xf\b0
+YctC<Za7$H[^NZT\[f;`]Y(ql^VI\&_Sa=2`Q#s>ai_fMbg"GYcd:(ee'umtf%8O+g"P07gtgfC
+hr*GOioB([jlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UW[&iT'"\jlZL(r9+1EPk^I?P4Xt5P5:CAPl6g9PkgO@
+g$IAifDjD+e^W*tdaHPAciDDfS*QUBS,\rRS,C8+`VmaI_t_1J_tM%B_Z6IoUALVa`VRUQ`rO3V
+ao0B\bPfWbc25`Wc2Greci;Aj](ro1\G`o2\F[3.lhp&Hli-2Jkn!(Flg4'.nFH5Ep\=U^r;HWo
+#ljo(rr2lpr;HK:qTSu_!6k5]il_;Cj\YkPrDE^mqu-'bs2=WK!5e]Pq8E-Kqo8NP&T`&9F`qtQ
+G^4R\H@($fI=?\FJ,t4Qrdt6)L&Qi,LB*//M>rJ5Mu8P6NW"mrO8P%;NV\V5MuJV2M>i>1L\li*
+L&Qc#KDC,pJbaooKDpQ(L&?Z,LPUcbM#rQmMuJY:NK0%uNrb?)rfRYQPa%GuQC!r*R$jEBRfT%M
+rgm_oTV8'RUSFW\V5C/gW2Q\qWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q-'@
+ai_fMbg"GYcd:(fe'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkNM0plKeH9!U]=Sn,MkWnc&+Z
+o)SF]o`Fj]p\agdq>U6fqu6NkrUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWZ<U8"EXUo"!dr20OlpMotIrc.gUpi6.Nrc@OKpMp2)
+pRq8Qrgs(ZpRM2OmreSNq/u:NrgEeRpQtW?s-NYNrKmJKs-<DGs-NSLja6lNq3h2MoUGfL!1WqW
+n!a<IrLNqZs.0.H!/p`3oS`C"nqdL,XK/G'qlBk"XK;E%!36!ss/H^4XKAY/Z*L^C[C3NQ\@B#X
+\$u7Cd$OQos-;\Br)*Dj#/eBu`lH0CrQGDhcd:(drmCb0rK?i9q3(B6qiVP4FEDYKGB\:WH$Xd`
+I!pElJ,Xs!JV*lR!JH1+LB!#/M#E21MZ8V4N;nn9No?&sNrG%7N;eb7MYi80M#N2,LAlo+K_U2q
+K)'unK)1-!K`?c(L'!-dM#E/3MMmDlMuo!!NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYNAtP`i
+Tq\<WUnjiaVl-JlWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^9aN2KGbKJ,S
+cHab_dF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)\Tn,W"Xo)J:]o_nFa
+p@n=Zq#C0hqYU0hr;?Nardk+(s*t~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`7o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWYF<E)mp;H$Onr_`r!<)cjt<':"?p,r=;q`ad<qEFmC
+rBBg;qEFmAohY9XqGI2f!)`_ns&8np!)`ARs$?EFoKW:>r^$9TrD3>flr!1Kj[]2;qb[;irDNPj
+rD</am8EdZs&/hj!)E5^q+TmC!a&N*qH3Ys"BJK#;H!Hl$<1#+='8[0>?kH>r*BA/r`oD+s&K"s
+m8O$_r_qoVj\YkPrDEoAF)uGFG'A1UrH\9ds&JSgq,Qrcr`'POFEDYKGB\:WH$Xd`I!pElJ,Xs!
+JV*lR!JH1+LB!#/M#E21MZ8V4N;nn9No?&sNrG%7N;eb7MYi80M#N2,LAlo+K_U2qK)'unK)1-!
+K`?c(L'!-dM#E/3MMmDlMuo!!NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYNAtP`iTq\<WUnjia
+Vl-JlWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^9aN2KGbKJ,ScHab_dF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)\Tn,W"Xo)J:]o_nFap@n=Zq#C0h
+qYU0hr;?Nardk+(s*t~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kShVdAPjQ5Ock5FK@kl$bGQ1pOBPPpa7PPUOBQ0sn8
+PQ'88gAfjkf`0P.f%&=#e'c[lrQtD1k+)18qo8ZTs2=9As2=oSou-RAq4db[n=olTqSrQUs2b)Z
+rlY2_r64QQqTf,erm:SSppoCoqR?Iis6BRK!:9^Ns6BXKs6:*[m-X60nac>Gp\F^arVcTls8Drp
+!<)i?qTSfZ!6Y&ZjN?X^qbd;is&/srrpg$e`;%7L_YqCK`;.CN`r!^aF*)MHG'8(RG^4U]H[Pg@
+#(D&PJ:W9'rdt6)L&Qi,L]<2/M>rJ5Mu8P4NW"n'O8Ft9NVSP4MuJV1M>i>1L\li*L&H]"KD0ur
+JbXinKDpQ'L&Hc+L]<20M>rJ5MuJY?NK0$[O-#HcrfR;GPl?pKQC%T<!L]DURfT%MrgjIhTV8'R
+U8+N[V5F6i:oL@nWiN5'Xfeh1YctC<Za7$H[^NZT\[f;`]Y(ql^V@S#_SX40`Q#s>aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ6C'&Ei9Al0@U#m-O--mdKW6nF?MKs766_rUp3a
+s7cKes7uZjqtp?irVc<dJcFL)J,~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbGP(Lto'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kSU&LedU]7+iV>[:hVt"d+E;OYDEqaYMEqFANTD5)O
+TDY;\SbJZSS,RQpFSU(SFT.^)R/NBDQM$RFQBh62s-NSLid:WMqO.;Nn!j?Im[O6HrLEq[rLND7
+pP\g(nqm@Hq5jUsri5pr$EC/.Xfnt6ZEpsHrjDj:\Giu;[K*`5[ca"UR-p=9Q2m35;#=,g;ZBZ'
+_o9[<b0%oNbg"GZrm:\m!7Lh0rK?i9qNCK7r/qM1FEDYKG'A.TH$Xd`I/\NuIXcluJUrFPK)pXZ
+reCH.s+pW1s,-i7r/CT6rJp3)qi:W7q2G<2regQ/reUQ/qhG*(rIjrupO`?ppk&?pre19)rJ(?-
+s+pZ2s,-i7req)ANfK0]OH>V(Oo^c2rfmMMQi<?QR@=,E!M#_[SdM*_TqS3TUSO]^VZ*JiW2Zes
+X/rG*Y-+t4Yd(L?Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa@3`lH0Aai_fMbg"GYcdC.ge'umtf%8O+
+g"P07gtgfChr*GOioB([jo4BRkNM0plKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmeq>U6fqu-Hk
+rUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kS<`W4"qG[Dls&/tu<E8EKr&sR6qEOpDmQ^Y6ohY3V
+qGI5g!)`_nr_rhpo0E1=qEXa=rBUBKpJC`_r_VrYmS`%7rC6]]s&&eos%rborD<Pko25KbrDW;c
+qc!Jlr(QfYoh=UCs&],#rDs,&=&i7"r_i_o#ujr,='/U/>?kJ3?4'tC>?kB:>$>-7<rH%b;uK\o
+;s7-B;#=,g;ZBYtF)lAGrHJ3cs*=Zjrd+NCnPo?bnQ,Zi%<HW5F`qqPGBeCZH@(&=I0P.MJ:N3%
+K)UB'KSBD[s+gW1rJCQ3s,6f6rJgc9l]:q'rJgW3repc5qMG3-reLB*re:<(pk/<mrIO`qqLed#
+re:<*s+gW1re^Z4s,6l8#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssf
+Vbj=kWiE,$Xf\b/YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`Poj;aN2KGbKJ,ScHab`dF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f>$jq-_>l07L!lg4!*mdBQ4nF5uIo)J:]o_nI_pAamcq#C0h
+qYU0gr;HTbrdk+(s*t~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1F-p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMOStBP1pgA7K(W@,'MpiSrq[jlY_'kPs`GPkC=@Pl-gDPl6g@PQ7!D
+Pk^O>PQ7!EPlKG7gAfjlf`0P*f%&="rmLho!7:>,qjdPSopklJr5SZR!6"9BnAP%<pS.MXn=foV
+rPniWr5eiYrQ=u\lco7N!71YkqRZL5gpd@NrTjIL!pf4>rp0LI$L@'Hn+#u@pA"I\rVc]orr)cm
+!;lc?!R/gdbkfNZb4s0Db32\!;>jDj;t0h]`:_%E`;.CO`r!aSF;/k@GB\:WH?spbI!pElIt*!!
+JV&LQK*$^[L&Qi,LB*//M>iD4Mu&D1NU2]&NVSP3MuJV1M>i>1L\cc)L&H]"KDC,pJbaooKDpQ'
+L&Hc+L]<20M>rJ5MuJY?NK0$[O-#HcrfR;GPl?pKQC%T<!L]DURfT%MrgjIhTV8'RU8+N[V5F6i
+(9"44WiN5&Xf\b0YctC<Za7$H[^NZTrjau!]=bhk^V@S#_SX4/`Poj;aN2KGbKJ,ScHjkbdF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f>$jpUA9l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*h
+qYU0gr;HTbrdk+(s*t~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMRWtB4b^c@q&kSStMeWUAgngUo"!ds/4jrpi6@Uqf;@Npi?1Ms.B(Z
+nt5iOs./nSq/tnCqK;^Xs-NeSq3^iAq3LuGrKmSOpQkiGqNq81i-PHMrL*JM!1WtVhjaY9pmpT*
+repQ/o83FHqlKasri6!t$EC/.Xfek4ZEppGrO2[6!4Ma3!4M-YpmCH8r0HPCqbd;ir)3pAaNDZI
+b0/#Rc2Q#kd*^:iqiguAp6#06p65B:rcAisG'A.TH$Xd`H[L6iIXcitJ:W<(rdt9*Kn]M\s+^T1
+rJCN2s,6`4r/L''qi1E1rJUZ4qMG3-reL?)re:<(pk/Boq18?nqLed#re:<*s+gW1re^Z4s,6l8
+#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssfV\Z51WiE,$XKAV-YHY79
+ZEpmE[C3NQ\Gj#t]">Vg^;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rF
+i8ESRj5]4^roOUOkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKerV6Bfs8)WirVZWmo)=4?g])d~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMRWtB4b^c@q&kS<E<-$<E/]ks&8t[k</]+mQ^J3!'gEGofr.Gnkf0[
+r_NSlr_i_o!($6Bog/L@oKN=@p/(Z_s%r/]r_`_nmS_q4!(Qf]r_`\l!)`_lnPT<arDW;cqc!Jl
+oM#0Wp.XaEs&]/$rE&u!(faO6;c6Ll<)cju='/R->$G9<?=$oC>[784qc`u!qc*,bpf./im8E.E
+qbd;ir)3W;Fo?IaGBit0s*FQBnl5Ebo2bijrcAisG'A.TH$Xd`H[L6iIXcitJ:W<(rdt9*Kn]M\
+s+^T1rJCN2s,6`4r/L''qi1E1rJUZ4qMG3-reL?)re:<(pk/Boq18?nqLed#re:<*s+gW1re^Z4
+s,6l8#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssfV\Z51WiE,$XKAV-
+YHY79ZEpmE[C3NQ\Gj#t]">Vg^;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:
+h;-rFi8ESRj5]4^roOUOkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKerV6Bfs8)WirVZWmo)=4?
+g])d~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`7o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&lsf%Ss:i8N_V!p&J*r9*g?rg!MLp6F[&mZmg:ptGc$
+lIZ6kf%&:!rmCeorLEGJqjdPSpRM/Ns2P)Zs2P)Xs2=<Bq8E3MrP\HJoV2/TnY5m#rlG#Zs2t>a
+rQONNq9B&fd*VR"rOVp;o=4e1m^W;_s6KaQqs4m[m-Es&m-O-.nF?,Bp\=R]rqu`orVc`nrqc]l
+p<<HXp<*-Qm)nWjqbd8hqGRAnnGi:%m)/e?rl+lVr5Aq_FEDYKGB\:Wrd"TlI/\NpIXh?I#_@SZ
+K7ei1Kn]M\s+gW1rJCN2repQ1m>^gurJUW3qMG3-rJ19)rIt6(pOi9npjr6mqLed#s+UB*s+gW1
+re^Z4!/pi8s,@#=rf7,BOcfX+!L&cIPl[2;rg3_SRf8cWS=TYNDkE\rTq\9VUnjiaVPg>jWN)u!
+X/rG*Y-5(6Z*L[AZa@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5Lck3(sml0@R"m-O-,mf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0g
+r;?Nardk+)s*t~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`3o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&l8S=ZCIr1X4eV#7+EEVskUEVjePF7XGPEVQ3pTDP2[
+Sc5,^SXc7ASG%*fFSU%ZR/WNNR.cmAQMm0JQiNKKQN!6JR/MEjHh*W^S,]#TS`,J*Mu/D(M>sXR
+XT,=$XT#:#WrK+*XKAY/YctF>[/IB4[f3c9[f<`8[/78nQhQm:Qi369;#=,f;Yj;l<;joDb0/#Q
+c-FV\r6bD*rK?i9q3(K9r/q>,FEDYKGB\:Wrd"TlI/\NpIXh?I#_@SZK7ei1Kn]M\s+gW1rJCN2
+repQ1m>^gurJUW3qMG3-rJ19)rIt6(pOi9npjr6mqLed#s+UB*s+gW1re^Z4!/pi8s,@#=rf7,B
+OcfX+!L&cIPl[2;rg3_SRf8cWS=TYNDkE\rTq\9VUnjiaVPg>jWN)u!X/rG*Y-5(6Z*L[AZa@-K
+[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnX
+jQ5Lck3(sml0@R"m-O-,mf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+)s*t~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&kE;H-[t<E8rrr)3SWi]R3'r]^6ErBC0E!'^?Gs$6EF
+r''sApeU<Sr)!Vq;,C(d;>sGn;tWHQ5kRGB5kRA9;#F,h;".?I;VXbB;=dWS;=%3Y;u]bP9^YOR
+=8l>#=8l5%<E)rs;[u](<)lq!='/U/>?kE=?N+44>[(B9r*',)oi1K\pJh&hnP\[Lqbd8hqGRGp
+F`m\,s*"QiH$OZ6H2`-e<Uj&a<V0>l<=!YfFEMbNGBeE4H3&A?rd=frJ,Xs(JV&K+K7no3L&Qi,
+L]<2/M>iD3Mti7uNV8>0MuAP0M>i>0L\li)L&Qc"KDC,oJbaooKDpQ(L&?]*L]<20M>rG5MuJ\8
+N<#"<NrkE*OoCLEPEc'3!LB)OQiWVDrgNqYSc54!T:hmOU8"EYUnsrcVl-JmWiE,#XKAV-YHY79
+ZEggC['d?N\%&uZ]">Vf]tV7r^qmn)_o0O5`lH0Aai_fNc-FV\d*^7he'umtf%8O+g"P07gtgfC
+hr*GOioB([jlPXekNM0plK[^%m-X3.rpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?ir;H3cJcFO*
+J,~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(We'uq#gtprHioB+]rT<j?qNq/Hpm'd%qN_)Hqj$m/
+s4R%srRq2&#hdk^f%&:!daJ#^s.'%WqOI5JqjdPQs.'+Y!65#YrPnlVp;HgF!Q;nP`;@OP`:q1>
+UA:MXUAU_^a8*jWb5TT^bj3OKcMl2h])0,9])B24\G*Q,\-20cmd9E>li?GOlj<(InF?)@p%S7W
+rqc]nr;?ZorVcWuqtg0bq9-tVbl#ZTb4j*Kb3i+';>a>f;uT_r<Up+``9bD?`;RXT`r*dYF*)MH
+G5c[nG^4U]H[L3hI=?WprdY$#K)L<'KS>-ZLB!&.M#<,/MZ/OmN;SV4MYW,.M#E,+LAci)K_U2r
+K(OWjK)1-!K`?c)LB!&/M#E/3MMmDlN;nk;NrG(JOHGZgP*;)oQ'IZ$Qi<?QR@=,E'V(_cStDXJ
+TqS3TUSO]^VP^8hW2]cr"fn`,Xfel,YR.S?Za7$H[^NZTrjb2']=bei^;%Fu_8=(,`5Ta:aN2KG
+bKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4]jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\
+oCV\Ro`Fj]p\agdq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np0cpn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(WR@9V:TV/!Prh9FgV#I43EVjeVF7aMHT^JHOSck[W
+SXl;LSaLXbFT$=^R/WNCR/*'KQMm0KR/WHLQMm0IR/23nHi/3]Rc'\6SGf#YS,f,<MZ/P1MY2i(
+XSo4"XSo1+XKAY.YHP4:Za9P:rjMj7rj;X3s0hrpjHoV.oU#NBmSNdXr)3>hr_s5)aiMTHbK\8T
+cHlI9s3^Y+rK?i9qNCT:rK7;)FEDYKrc\`pH$Xd`I!g?jIXZeGJ,t4QrIY0)Kn]M\s+gT0r/(E1
+reo`or/:N2q2,*,rJ19)rIt3'pk/EpoRZjjqLed#s+UE+s+gW1rJ:T5Mi7Rns,@#=rf7JLOcbfi
+PEV5rQ'R`&rg3_SRf8cjS=Q7CT:_dMTq\9VUnjiaVPg>jWW&n$X/rG*Y-7i/$*geBZa@-K[^WdG
+\NRO9]Y(ql^V@S#_SX4/`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_
+k2tjjrojIKli-5OmI'uB!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nosWnn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(W;GpFm<`]3"qGd;Qk</Q'nim(:mQLV8q+pc^s&&Jd
+r_`\n##S2n;,L4hqa(!DoKi.8q`b'Go2+jPku%LNiCEf8!)`AbnPSdRpf%2jrCbj<oh5<er`B)"
+!``9$r`&nr!*&ns"'8T-=oMV*>l@t.>PhV&>P1t`;tj8h;tX&V;#=,f;Ya8j<!cQIF`qtQG^4RZ
+r-8<hHhg\3<;KVe<WuKEFEDYKrc\`pH$Xd`I!g?jIXZeGJ,t4QrIY0)Kn]M\s+gT0r/(E1reo`o
+r/:N2q2,*,rJ19)rIt3'pk/EpoRZjjqLed#s+UE+s+gW1rJ:T5Mi7Rns,@#=rf7JLOcbfiPEV5r
+Q'R`&rg3_SRf8cjS=Q7CT:_dMTq\9VUnjiaVPg>jWW&n$X/rG*Y-7i/$*geBZa@-K[^WdG\NRO9
+]Y(ql^V@S#_SX4/`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_k2tjj
+rojIKli-5OmI'uB!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLs:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(We'eZRe^rO2hV[;Oj5p:&qNg]=rg*AFhin,+qNh/H
+s$?>3s4R/!qq1u%rn.J-f@JL%e+B1.S,/Z@RfSttrl=uWrPeQMqnr3IqSiEOpquNo!28nVs.T>2
+qoSl\s3(;`rltJg!71SgoZd?[r6PAhpU^C:pU^@7ppfh(r4)dprpBaPs6TjTmJcMYn*ol=o_%qQ
+rVH6c#5e8mqYBp]qoel\r6+QOpWN3OnPK'Zr)3>hr`&ks!*8[j!5nQLkemG=qS`SYFEDYKrc\Bf
+H2`*jH[Pg@#C_/PJ:N3%K)L<'KS>-YLB!&.M#<,.MYrD"N;AJ1MYW,-M#N2+LAci)K_U2rK(4Eh
+K)1-!K`?c)LB!&/M#E/3MMmDlMuo!!NrG(?OHKO*,a4IWQ'IZ$Q^F/.R@9V7S=H.AStDXJTqS3U
+USO]^VP^8hW2]cr<3*+&Xfek2YctC<Za7$H[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uP
+c-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs766_
+rUp3as7cKes7uZjqtp?irVc<dJcFO*J,~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLm8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(WrgEkWT)PD_U&UhhUSO]^qJcLUbAm)ns$?=Nn"0TO
+rh'4^rLNk0m<.]9!1<bRn<ij7q3_/Js-EVMr0[5+pNuRZr-SHirgWSLqO@MRlC7gDqjdeYSXnYq
+rJU<*r/(ESr2]gu$E^D3Xfeh1YctC<rNuO2rjDg7rNuU4rO2TjjHoV.pQtlFnPK'Zr)3>hr`&ks
+"'3Lbb5TQdbg+P\rm:\m!0[/ArK?u=rK?]7rK7;)FEDYKrc\BfH2`*jH[Pg@#C_/PJ:N3%K)L<'
+KS>-YLB!&.M#<,.MYrD"N;AJ1MYW,-M#N2+LAci)K_U2rK(4EhK)1-!K`?c)LB!&/M#E/3MMmDl
+Muo!!NrG(?OHKO*,a4IWQ'IZ$Q^F/.R@9V7S=H.AStDXJTqS3UUSO]^VP^8hW2]cr<3*+&Xfek2
+YctC<Za7$H[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07
+gtgfChr*GOioB([jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs766_rUp3as7cKes7uZjqtp?irVc<d
+JcFO*J,~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLm8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(WrDN\qr`9&!qc*DRlTFu+nilS,pce^Dq+plaqbd)a
+r_`\n!Du\m;>!6I6MNk=5QF%?;"%9G;Z&u\7d!;A7K?<W;"[]Q;ZB\m<;ohp9)D969`.Q_=8c/#
+<EB*!r`&kss&K/%=T)D/>?kH=>[(E9=oDM)>?q/3nPnpTpJh)ipepWYqGI/gq,@8lr`';+FEVkQ
+GB\=XG^045!d]2mq,QranQ#Qh"]]VcFEMd+G6)r6rd"TlI/\O!IXcitJ:W9'rIY0)Kn]J[s+gT0
+r/(B0r/9s$qMY9/q2,'+reL?)rIt3'pk/EpnU^RhqLed#s+UE+s+gW1rJ:T5Mi7Rn!f`5#rf7)A
+OoCLhPE_;sQ'R`&R$a;0R[]e:S=Q7CT:_dMTq\<WUnjiaVPg>jWW&nsX/rG*Y-5%5Yd(L?Za@-J
+[^NZT\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESR
+j5]4]jlY^gkl0fIlKeH9!U]=SmfN"Knc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(WrmM8)e^iF.h;7)Lj5f>#QL^C<QMQm:Pkp[APkLCB
+QMs2BgA]e&f_!i"f[n^)eFfC$SF2mHa8![Q`VmaO_uIXT`Vd[K`W*mO_sF,tU%"fVaSO$YaoKW\
+bl5lbcN)8hci;;ec25f_ci;Ac])TD:](`c8\Eg^*mf)STmd9HAmf;kVnH8@Sp%SF\rVQKi"9&/o
+qYp<iq"Mu2bl#ZOb4j*Rb4SU,;>X8e;uTbp<W6%is8U"4`95&;`;@ORF:iY=G'A.TH$O^^H[L3h
+I=?Wprdb$"!.t0%s+LE+rJ(?-reUE-r/0m"qhk-)rJ:E-qM+s&rIjruqh"3dr.=ctre1<*rJ(?-
+s+pZ2s,-i7repo<NfO+"!K`HCOsH6UPa.N"Q^=),R@0M5S"-">St;RITV8'RUSFW\V5C,fVl6To
+WWB0%riH@,YHY79ZMq0:['d?N\%&uZ]"@sS3k`8B^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_k2tjjrojIKli-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6Eg
+rqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(WrgNtXS"9MN!29@crGhXRlZ)lBol9hKqJl.Jr^$1L
+l_"0Js./V%ol]\Es-`ADqNq5L!1EDFqj75Jr-eEhp3Z:Ts-rbOqj[MPqO@MT!hGjOqO@DQpRU/u
+rJU-%s/c.!"g"i.Y-+u-Xobf2ZMh-,[/dZ5[0!_C[J[K-R/30LR-p=8R/**KQM")M;>X8e;uTbp
+<W6#(ai_cMbg"GZrQtPks-!2ArK?u=rK?`8rK@2&&Tr8?GB\:WH$Xd`I!g?jIXZeGJH(0#K)L?%
+K`?c)LB!&.M#)u+MX??!MYDu+M#E,*LAci)K_U2sK'e-eK)1-!K`?c)LB!&/M#N82MZ8V6Muo!!
+NrG(?OHKO*,a4IWQ'IZ%Q^F/.R@9V7S=H.AStD[KTqS3UUSO]^VP^8hW2]cr!NW=$XTbl2YctC<
+rj)p<[C3NQ\@K/]]DfH(]tV7r^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@
+hV[8LiSrnXjQ,Fbk3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)
+s*t~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(Wr`&nr!*&qus&K"srB':,p-%h-mlg\7r^$?Uqb[)c
+q,%#es&/em!(-<Dr^-6Eqa19JpH\LMmSO$`;,QRUpdP*Mk=>2Aqbd>hs&&2^r)<Dj!E2tq9)D9M
+9`7]c9`7]S9`J2i<r,es<`o<'r`fA,s',D)qHNAemSijZr)<MkohbH]qbm5gr`&hrr`02GGB\:V
+H2`'gH2`*kHW3u?<Uj&Z<W6#5<HN>*G'8(RG^4R\H@($eI=6QnJ,XuuJH1<#KE$W)L&Hc+L]3,+
+M>W7uMu/D+M>`8/L\cc(L&H]"KDU8fJc(,rKDpQ(L&Hc+L]<20M>rJ5MuJY:NK0%uNrb?)rfSOj
+Pa%GuQC!r*R$jA2S"#q<SXuFFTV/!PU8+KZUnsrcVl-Jmri-""XT#=*Y-5(6Z*OA8$+.+K[^WcW
+\[oEP]K3a?^V@S#_SX4/`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4]
+jlY^gkl0fIlKeH9!U]=Sn,MkWnc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[daJ*C#h7DVg"Y?>ioBQqq3LiAl]g\"rB^/2kLfmg
+fC>EjSH#)Ya8*aQ`VmaP_u@UC`;mjQ_sa?"U[b)WUBRC5aN;QHrlG2`bP06\blH&gci;;bchG`]
+ci;Ab])K>:]&1'umeuS`nF,l9nac8Bo_/"Qq>(!crVQQk!rMiiqY9^+!6kDbn&k1Dqo\b3pJLfc
+pf%/krDibr!*Adl!5e`QqS_O6rl"cSs)e9`"a5*6G^+N5H3&A?rdFfq!.Xuus+(0%rIb-'s+UB*
+s+gQ/pkeBqp5/^'rJ13'rIt3'pk/Hql@JncqLed#s+UE+s+gW1re^Z4s,6l8#E=b(O,oBaOoCLE
+PEc'3)O?_VR$a;1R[]e:SXl@DT:hjNTq\<WUnjiarhfdqWW&muX/u<&;6I+,Yd(L>Za7$H[^NZT
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+f\,!4gYCW@hV[8LiSrnX
+jQ,Fbk3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)s*t~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[qjRYWSY#hQ!hc9^nT+/>oPjSFl>lhhp7UT@s.8M!
+k]QoIs-`ADqj7;Lr0d/Drg3SNpjN$eom?:Vs-rhQr1!MNqj[PSr13VQqOI_YSXk\qMYrD%MYsRT
+XoGR&Y6D/8Z*L^BrNuO2s0hd3r3l6bs-NPKoU#-9qj.;KqG?o`qbm2fr`&hrr)O#'b0/#Qc-H75
+s3LbnrK?u?rK@#>rK?`8rf[;'s)eKgGB\:VH2`*jH[Pg@s*artrdb$"!.t0%s+LE+r.b6,rJ:6*
+m>CUor.t<,q1ej%rIjruqh"*arIXlure1<*rJ(?-s+pZ2s,-i7req)ANfK0]OH>V(Oo^c2rfnCf
+Q^=),R@9S6S"-%?St;RITV8'RUSFW\V5F6i!N<!sWWB0%riK&#YHY79ZEggC['d?N\%&rY\[oDc
+]Y2%o^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\a/g=k<:h;-rFi8ESRj5]4]jlY^g
+kl0fIlKeH9!U]=Sn,MkWnc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[q,@Gr<`W6"<9ZOA4TI\<4nLr+4oI\C:\[c^;>a8f
+;#jMn;>`cO62j4I6i04C62s4G;!h-C;Y3EU7d<JG;,C(dqb[2fqb[;ir_ibno2>KbqG[Mp<)i`e
+qb-BOn4iUMr`Attr)Eo$='&L,=oDM(>Q.n+>Q7n'>6%pn<:j,Z<;]Yp;Yj5a;>X8d;uTbp<W#ku
+=*FRf!-eBdr-J<@q,QubnQ#Tis)e9`"a5*6G^+N5H3&A?rdFfq!.Xuus+(0%rIb-'s+UB*s+gQ/
+pkeBqp5/^'rJ13'rIt3'pk/Hql@JncqLed#s+UE+s+gW1re^Z4s,6l8#E=b(O,oBaOoCLEPEc'3
+)O?_VR$a;1R[]e:SXl@DT:hjNTq\<WUnjiarhfdqWW&muX/u<&;6I+,Yd(L>Za7$H[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+f\,!4gYCW@hV[8LiSrnXjQ,Fb
+k3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)s*t~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[rmL_n#1_;Wg>1WDm?[g=pQb33!0d5Cn!3f:pY+`^
+!8-t7qOQW9s2XfPrl+fRl,EY?r58$!rLs:en=ooWrlP,]!6b)[s3:DcrQkDgnBV*]qRcU8rk%p9
+iOT!W!q>aMrU:6co()DEp@n=Vq>'m`rVQQk!rMiirV-BerqHKfm`Y1Dlc]=Nr_W;cqbm2frD`br
+qc<\t!*Jmnrke]QqS_L5s2=oUs)e9`!-\?c!I/nhH3/G@I/\NqIXckHJH(0#K)L?%K`6]'LAlu,
+LuF3fM#E,)LAci(K_U2tK)'ukJGFcpK):3"K`?c)LB!&/M#N82MZ8V6Mueourf@)@!0R8D!L&cI
+Pl[2;rg3_SRf8cWS=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XU;57YctC;ZEpmE[JmTe\%&uZ
+]">Vf]tV4q^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\dUg'QNhh;-rFi8ESRro4RN
+jlY^gkih9qlKdd&m-X6/rpKmWnbr"[oCV\Sp&Facp\agdq>U6fqu6NkrUTr=s5!^*~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[q3qDUT)G8]T^6^nEUIfAEURrG62.&ITDkMQTBCC^
+FoRlmR/!*=R/VR1IJS?aHhD^\Rf&ZMRf&WTSGf#VT(SZPS,f,VMrKWlMt)])X9,N,YPkX&Y6D/8
+ZEggCrj;R1s0ha2rjDg7k*Z"3n<j'=r_W;cqbm2frD`brqc<\t#$B'mc-=PZrQbPldF%lTq31c?
+q2tW=oTT9;s)e9`!-\?c!I/nhH3/G@I/\NqIXckHJH(0#K)L?%K`6]'LAlu,LuF3fM#E,)LAci(
+K_U2tK)'ukJGFcpK):3"K`?c)LB!&/M#N82MZ8V6Mueourf@)@!0R8D!L&cIPl[2;rg3_SRf8cW
+S=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XU;57YctC;ZEpmE[JmTe\%&uZ]">Vf]tV4q^VI\&
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\dUg'QNhh;-rFi8ESRro4RNjlY^gkih9qlKdd&
+m-X6/rpKmWnbr"[oCV\Sp&Facp\agdq>U6fqu6NkrUTr=s5!^*~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[pf%Ds<`W4#<:rBL4TI\B4oRY54o%8A5Q!_<4o@VD
+:\7KZ;?'Jd;>EQM62O"F6iKFF62FFJ;>jAm;<LjR7Is"88,cB`;#O8e;#*ub;Yj>g<;]Yp<;9)`
+9Bo4C:&%E[=8l7u<<ZE)=BJ^/r`];*r*95*!*];)r`nSbqGZ]Zs&8nnp/1]bpf%,jr`/hrr`9,&
+GlDpeGlN'eH2pnB<;BPa<:NugFT6I`G5c[dG^9:7!df<Brd=isIt.HJs+(0%rIb-'re:9)reLH.
+iJIGfrJ13'rIt0&pk/Krq186iq18Krqh+m$s+UE+s+gW1re^Z4s,6l8!KE-=O8k:AOoCLEPEc'3
+!LB)OQiWVDrgNqYSc52]T:l1W!MZ@gU]I<hrhfdqWW&muX/u<&$EgS:Yd(I=Za7$HrjFGg\@K/]
+]=bei^:q@s^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pit1;5
+k2tjjkiq?slg*p(mI'EAmfDqJrUL$]o^r.Us7ZKer:p<frqcNhrqu]mo)=4?h>`!~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[rR1Vm"Ou#Sg"Z"_q3L]=n!*1(qa'o/pY#T#s4RA)
+q:Y5,r12o=!6FrUrl4iSrl4oWrl4`P!64oTrl"cQ!6"H'rM9@dn"Kr[aiV]Jrlb)\rlt8ar6P>g
+r6bGh!mf6?r6P>Rqn2m>s183Apq#Fp!V,a[nc/+YnI"m[p@n=Vq"aa^qY9phqYBp]p]&D)bOis@
+bP+m1;YX2h<;fho<rQ2"=S)Oo_8=(g_u.I6_u@US`W(#\Fa!b.!dK!9rd"TlI/\QoIfFosJH(3#
+K)L?%K`6]'LAco)M!^&qM#<&'LAci(K_U2tK)1&eJGausK):3"K`?c)LB!&/M#N82M?&S6N;nk;
+NrG(EOHGZgP*;)orfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i!N<!sWWB0%riI<GYHY79
+Z*L^B['d<M[^WcW\[oDb]Y(ql^V@S#_SX4/rl$5(a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07
+gYCW@hV[8LiSsjs&EMs8k3(sll07L!lg4!*mdC)C!q>aMrpg-^o^r.Us7ZKer:p<frqcNhrVZWm
+o)=4?h>`!~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[pmVDVSXuIGpi?7QpN#qHp2KkJluMth!2&tXq4IVY
+s.B=apRgJhlZE2qkEtq1o9fE(qL/3foR$=YqO7GR!h,UJrL*eWR[X2ErLEkXs.9"Xr1<nYrL<nZ
+N;eb4N;\[tMYrD'M?'gXYPt^)Y6D/8ZEggCrNuI0!4ML,igBb4m[3m<pJLcbpf%,jrDi_qr`B)$
+"O#$6cHZ@6s3L_ls3^_,q31c?q2tW=oooB<s)\9aG5c[eG^4T6H3&A?rdFfqs*t#us+13%rIb-'
+re:9)rJ19+m>:[qr.k'%rIt0&pk/KrqLS*cr.4fuqh+m$s+UE+s+gW1re^Z4!/pi8s,@#=rf7;G
+OcbfiPEV71Pl[2;rg3_SRf8cWS=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XWXdMYctC;ZEpmE
+[C*HO\%&uZ]">Se]Y2%o^VI\&_Sa=k`?rUFaN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<9gtgfC
+hr*GOir7sLjQ5OdkNM-ol0@U#m-O--mf)YVnF?&JncJFTo`"O`pAambq#C0hqYU0gr;HTbrdk+*
+s*t~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[pJ_,mr`8eVq*"+/p-&79p-8I=r&spCr_NGgrDEAe
+mnr=9n3d1Aq*FmSnPS:DpI4"0s&&\js&&Vhp/1T_mo'3Zr^u`SlqI"Fqb6ujs&T%t"]e],=BSf*
+>5hb)>l@k,>5DJ'>lRa`<<#n\<;08d;YX2h<;fho<rQ2"=T*FDGl;peH38MA;cEWoq,Qranl>^3
+!HiSbG63#7H2`*jH[Pg@s*jutrdb$"s+:3%s+LB*r.b0*qhXWrqM>')pkJa$r.Oitr.=crmst=e
+rIXp!re1<*rJ(?-s+pZ2s,$f7rf$l:!07&>#EY(1P*2#mPl?pKQC%T<!L]DURfT%Mrgj._T`1Vc
+U8.^`!Mu[mVZE`qri-""XT#=EY-5(6Z*CU@Za@-J[^NZT\[f;`]=bei^;%Fu_8=(,`;[_&`lH0A
+ai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gY:N>h;7&Ii8N\pit1;5k2tjjkiq?slg*p(mI'EAmfN"K
+nc&(\oCV\Sp&Facp\agdq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fFdWe'c\BdfJ"Mqj6i=m$7=0lBM?9qa'i-q:YMr
+r7U>)rgi5Bs2b8^r5nu[pW*-Orl>#XrPe]Srl+lTrke`Srh\qVm\Bg(!6Y8`qTSuapWi``qU#/f
+p!EKGq7Q[<q7>Oqs76-Y#4qK[p\4IXrV6HiqtpEis7u]ip\4R-o#p[Jl-&s$qGR#crD`brqH!Ss
+r`K/&o`+s-rke]Qr5@U4s2=qZ#Bb35GB\:VH2`*kH[L5?IK+`rJ,OotJcC?#KDpQ'L&-Q%L[9in
+L\HQ$L&H]"KD^>uJa%^`Jc12tKE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O$\qjOcklkPa%GuQBml)
+R$jA2S"#q<SXuFFT:hmOU8"EYUnsobVl-JlWN)u!X/rG*Y-+t4Yd(I=Za7$H[C3NQ\Gj#W]">Vf
+]tV7r^qde'_Sa=2`Q#s>aN;TJbKS61c4SCLdF$CkeC<%"f@S[.g=k<:rnSIKhr*GOioB([jQ5Od
+kNM-ol0@U#m-O--mf)YVnF?&JncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fDhsSGScWS=Q5BEr:"SEq+/DE9_HD6Mj(JTD"rR
+TD>/VTAOh[FoRlkR.ZmAR/VU3Ie\?gI-u@XRL,IPR[]e8R[]e:rL<_Ts.01]oq2/RqOR,7l&,Cs
+nr!INr2p4,Yd(L>Zi.9%[/dT1[J6-dRG4,,QhsYV;YF&f<;ono<rQ2"=T2J'bl,cjcHjh`d*^8;
+P51=?P4at/P5fV/F`qqPGBe@Xrd"WmI!kpAs*artrIFp!s+:3%re19)qM+p'm"kLnpP/U"rIjru
+r.=fsl%&_`rIXp!s+LE+rJ(?-s+pZ2s,$f7rf$l:!07&>6BI=lP*2#nPa.N"QC!u+R@0M5S"-">
+St;RHTV8'RU8+N[V5:&eVl6PnWiE,#XKAV-Y-5(6Z*CU@Za@-J[^NZTrj`rY]=bei^;%Fu^qmn)
+_o0O5`lH0Aai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h&5),i8ESRj5]4]jlY^gkih9qlKdd&
+m-X6/rpKpXnaZVL!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcFR+J,~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fB=,<Vf\p<<,2V4T7M)55.525P[JC6Mj(J:]4,d
+;>F&Z;:7i26N0:L;!V!A;Z9/Z7H6i<;Gm*`r)!Gjqbd&bn5JgLrCZr[mS*@Lr(I2o<`N3"<<ZE)
+=BJ^/rEB,'s'5M,r`])$qbta=qbd2fp/Cohr`/eqr`B)$r`T5E!-nEe!.+Wkr_rbpq,QZYqc3Z<
+#Bb35GB\:VH2`*kH[L5?IK+`rJ,OotJcC?#KDpQ'L&-Q%L[9inL\HQ$L&H]"KD^>uJa%^`Jc12t
+KE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O$\qjOcklkPa%GuQBml)R$jA2S"#q<SXuFFT:hmOU8"EY
+UnsobVl-JlWN)u!X/rG*Y-+t4Yd(I=Za7$H[C3NQ\Gj#W]">Vf]tV7r^qde'_Sa=2`Q#s>aN;TJ
+bKS61c4SCLdF$CkeC<%"f@S[.g=k<:rnSIKhr*GOioB([jQ5OdkNM-ol0@U#m-O--mf)YVnF?&J
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbGP(Lto'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_e,7Yje,Pd)QJ@c'Pjt%<6Ms.>gAT^pg&Th)S`u[E
+SbnrHS,15,b5KH^aRmURaSs6R`r<p[`5BL2`VZP(V>m@fV=CA]aTBW.bPKH_c1oT_chGf]dJhMk
+dIFjK]_oD<]&C1+o(2GDo_%qPq"Xg`rqcQi!W)Wkq#C*gpA+IXb4NmIb3dCO;>F,a;uK\o<Vfbq
+=8l>"=TDXts8Kk7_Z%IO`8SW6F96T.G5c[dG^9:7s*OcnrdFfq!.Xrts+13%r.G!%re:-%lA,%e
+rIt0&pk/Krr.3pZrIOp!r.G$&re:?+s+gW1re^Z4!/pi8s,@#=rf7)AOoCM,PE_;sQ'Rc'R$a;1
+R[]e:SXl@DT:hjNTq\<WUnjiaVPg>jWMuntX/i>(Xfeh1YctC;ZEpmE['d?N\%)FJ%_B9b]Y2"m
+^V@S#_SX4/rl$t=a2l?Db0.uPc-FV\d*^7he'lgre^i@(f\,!4gYCW@hVR/Ji8N\Uj5f:_k2tjj
+kiq?slg*p(mI'EAmfN"Knc&(\oCV\Ro`Fj]p\agdq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_qj[GP!-.%>jDj^1r^-NKr1E_Vpn.5P!2&(jqK;OS
+q3gH6p6k`Dqg\HknU9qTr0mYTs-ikTrgWtXr1*eXs.8tWr1O"\qO[/7qhsp#qht''riZ[3YHY79
+ZEggC[']D3rj;O0pmCfDhO+8.r_`JhpJ_#irDi\pr`B)$r)j&(bPfZdcHlI9s3^Y*q31c?oo\p1
+s)\<bG'<k/!I/nhHN/?lI/\QoIK4lrJH(3#K)C9#K`6]#L?aQeLAci(K_U2tK)C2\JGk&tK)C9$
+K`6])LB!&/M#N82M?&S6N;nk;NrG(?OHKO*4d2+pQ'IZ%Q^F/.R[T_8S=Q4BStD[KTqS3UUSO]^
+VP^8hW2ZbrWiN2%Xf\b/YHY79Z*L^B['[6L[^WdG\IQ3_]Y(qk^;%Fu_8=(,`;[_;`lH0Aai_fM
+bg"GYcd:(edaQ[peCE.%f@\d1g=tE=h;7#Gi8ESRj5]4]jlY^gkih9qlKdd&m-X6/rpKpXnaZVL
+!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcFR+J,~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_qc*Mor`&h[r]U6Cr]S[nr'1$ArB:-Hr'C6Vp/1W^
+oMOF3n3R1Q;,R6hmSW1Ge40I8r)!Dhr_WMi!)WPioMY3Xmn<@Hqb-?Nr_<;a$!(&,<E<1&=BSf*
+>5DG'>lIt+=o__&>5hb$;p\MC;>F,a;uK\o<Vfbq=8l>"=ThoPG^+N5GQ<$fHN8Hl;uK\k<U!K]
+<W@.BF`qs-G6)r6rd+Tks*Xfos*artrIFp!s+:0$re19)pkJ'honNF!r.Oitr.=itjFI2[rIXs"
+s+LB*reCH.s+pZ2s,$f7rf$l:!07&>!K`HCP!,"nPa.N"Q^=),R@9S6S"-%?St;RITV8'RUSFW\
+V5C,fVl6SoWiE,#XKAV-Y-5(6Z*CU@Za@*I[^NZTrj`NM]=bei]tV7r^qmn)_o2Pn43#=^aN;TJ
+bKS5VcHjkbdF-LmeC<%"f@S[.g=k<:h;-rEhr*GOioB([jQ5OdkNM-ol0@U#m-O--mf)YVnF?&J
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`rmUhoqpPP4r0R/Df9Q?"o9K5?rBUG<iS"@fg=l@n
+hjj>.s2jQKrQ,&\rQ"WOr5JZ6q5=%cqPF"b!2]Cbs2k;aq98f_"4,9=cMZ#]d.bofd/;;T]DB,!
+\Hqj#p%J+Rp\=O]q>C'jqtg-fq#C*epA"CTb4s0Ib43[O;YF&e<;ono<rQ2"=Sl8$>5qh"s8Be5
+_Z%IQ`8SW6FT6I`G5c[eG^4T6HN/<lI/SKnIK4lrJGt-"K)C9#K`-V\LAZc'K_U2tK)C2XJGk&u
+K):3#K`?c)L'!-dM#N82M?&S6N;nk;NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYN!M?%aT`Lm_
+rhKRkVZ*J8W2ZbrWiN5&Xf\b/YHY79Z*L^B['[6L[^WcV\[f;`rk&EJ^;%Fu_>_:X_o0O5`lH0A
+aiaV+%F!)BcHjkbdF-LneCE.Lf-8l#g=k<:h;-rFhr*GOioB([jQ5OdkNM-ol0@U#m-O-,mf)YV
+nF?&JncJFTo_nI_pAamcq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`SGSfQS,dX/EWC1VErU4MEoh<4Er89&62mMNT_P/N
+T_Wd*Fm=/IFnp.VRf&T=R.csGR.,UrIKFqHIJ/'fRf/`URf/`RS-,=PSXobOoq2/Tr1EkXlAYOs
+onrX)oSWXOs02O.s0D[2rj;^5rj2a7[']b=r3Z:-opGKAiL'V2qGR#cr)EYqqH!Ssr`K&#s'#G,
+"O#'7cHc@7!R]?iP51=?P4k%3P5fY(FT?UaG63#7H2`-iHN8HlIK+`rJ,OosJcC?"KDpQ&L#%L]
+L&?W!KD^?!J`)(WJc:8uKE$W)L&H`-LPUccM>rG5MuJ\8N<#"<Nrb?)rfRYQPa%GuQC!r*R$jEB
+RfT%Mrgj._T`1VcU8.^`!Mu[mV]Vk:WN)u!XK8P+Y-+t4Yd(I=Za7$G[C3NQ\@B)[]"@sS"hhXb
+^VI\b_?n,u`Poj;aN2KGrlYbpc-FV\d*^7he'umtf)F8Ff\,!4gYCW@hV[5Ki8N\Uj5f:_k2tjj
+kiq?slg*p(mHs?@mfN"Knc&(\oCV\Rp&Facp\jmeq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`qGdDns&8t_pceX>b!,\cr'L?Jr(m>hp/1cbo25<N
+pHn+3oKiOTr)2fWlr*4?o1/IC"B&)o:f.*dr_WMi!)WSjo2>*Wl:^bAqFgHSr_<Ac#Zar+<``C*
+=]tZ+s',J+!F&b,>Q.h*=o;J'>Q.n#;q+eC;YF&e<;ono<rQ2"=Sl8$>5qh,GQ`58G^4W5HhUM8
+<Td?]FT6I`G5c[eG^4T6HN/<lI/SKnIK4lrJGt-"K)C9#K`-V\LAZc'K_U2tK)C2XJGk&uK):3#
+K`?c)L'!-dM#N82M?&S6N;nk;NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYN!M?%aT`Lm_rhKRk
+VZ*J8W2ZbrWiN5&Xf\b/YHY79Z*L^B['[6L[^WcV\[f;`rk&EJ^;%Fu_>_:X_o0O5`lH0AaiaV+%
+F!)BcHjkbdF-LneCE.Lf-8l#g=k<:h;-rFhr*GOioB([jQ5OdkNM-ol0@U#m-O-,mf)YVnF?&Jn
+cJFTo_nI_pAamcq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geACUV-rR1Yns-WMHpm0-hq*P*I!o;Ydo@j2u!SZ<)
+gA9RbSGA`MSGAZLb43[Tb5TN_aSa*N`W3%:WV`XmVt?k^Vtm4iV#e]]qTSuas3CSh!RT0jd/VMk
+d-]6B]Cic"\c;C'p]($`q>^<kq>^6gp\aa[p[QE'bNd7CbPb?4;uBVn<Vfbq=8l>!=oV\)>Q7t%
+s8'V2_uI[8_uIXWFEM_LrceBe!."Nh!df<BrI+]p!.Xoss+10$r.Fs$r.X?hqM"j#pOiBqr.4Eh
+p4)acrdk'#r.G$&s+UE+s+^T1rJ:c:Mi3OQNK&ttNrb?)rfR;GPl?pKQC%T<!L]DURfT%Mrgj._
+T`1VcU8.^`!Mu[mVZE`qri.'@XK8P+Y-5%5Yd(I=Za7$G[C3NQ\%&uZ]">Se]Y2&Y^F[1:_SX4/
+`Poj:a2l?Db0.uPc-FV\cd:(edaQ^qe^i@(f\+s3g=tE=h;7&gi!SH&j5]4^jlY^gkl0fOlKdd&
+m-X3.rpKpXnaZVLs766_rUp3as7cKerqZTjqtp?ir;H3cJcFU,J,~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noXEkn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geA=T1eS,JlOF8g:VF7OA<EU\#E6N9=PTV(tOoq1oM
+l?2H:qfVgYqjQl>q3^fBs-Wb8nUL+YomQk/rL3eUrL<_Trgj%[pn%PZm[rKtreofos02O.s0DU0
+p9ae+qm?1,nX0-?j-]h4rDN>fr)EVpqH!Ssr`K&#s'#D+s',ZNcHji7ciMPBp6,68q3(91s,mJ+
+F`hm,GQ2mfH2W$jH[L5>IK+`rJ,FisJc:9!KDgK$L$49fL&?VuKD^?!Jb"?bJ+\?kJc:9!KE$W)
+L&Hc+LB*//M$JorMi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i
+!N<!sWZS:CXKAV-YHP17Z*CU@Za@*I[^NZS\@K/]]=Y_g]tXK\/AT*=_Sa=2`Q#p<aN2KGbKJ,S
+cHab^d*^7he'umtf%8O+g"G*5gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Z
+o)SF]p&Facp\jmdq>^<gqu-HjrUTr=s5*d+~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geAGK4'<W>;"557;:6N9=O;#=#g;"[Zc;#!of;#aDm
+;!LC36hs%K;W:RC;?0Y\7d3GC;#jGj:B45e;#jMm;>=&V;rUIG9)D9L9`J,q='/R-o3),urEB2'
+rEB5*r*8bjfMqfIp/ClgrDi\pr`B)$qcWr&r`fD-s*+Kgrd+NiqGd,fk>VP*F`hm,GQ2mfH2W$j
+H[L5>IK+`rJ,FisJc:9!KDgK$L$49fL&?VuKD^?!Jb"?bJ+\?kJc:9!KE$W)L&Hc+LB*//M$Jor
+Mi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i!N<!sWZS:CXKAV-
+YHP17Z*CU@Za@*I[^NZS\@K/]]=Y_g]tXK\/AT*=_Sa=2`Q#p<aN2KGbKJ,ScHab^d*^7he'umt
+f%8O+g"G*5gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmd
+q>^<gqu-HjrUTr=s5*d+~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbH1^_!o'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAC]3/e,@_pe*`RsQM6[>QMQmDQLg@A6hitJ62o[@
+gtVSWr7h8,s4[P-pY5\:ka_:9p72)N!6k;_s31&Wr6#&]!6G#W!QN1V`rE%;Wr/joW:-YZW;ELl
+bPo``c2Gued,EC5]C3?"\H;O#q"+:]q#0s`pA4Lap@msss3(;^!6OiTo?6f*r)EVpqH!Ssr`K&#
+r`];*r*8sqq83*J!6!m7"*A[.G5ZUdG^4T6HN/?lI/\QoIf=iqJGt-"K)1,tK_L2tLA$>uK_L,s
+K)C2lJF.j\JGt-!K)C9$K`?c*LB!#/M#E/8MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQiWVDrgOIh
+SXuFFT:hmOU8"EYUnsobrhfdqWW&muX/u<&)Qp9IYctC<ZEpmE['d?N\$rlX\[oDb]Y(qlrkArY
+_8=(,`5KX6`lH0AaiaV+'$SVGcHjkbdF-LmeC<%"f@S[.rn7P1gtgfChu;O@iSrnXjQ5Lck3(t-
+km-M>lg4!*mI'uB!q>aMrpp*\!;-6_s7ZKerV6Bfs8)WirVZTlo)=4?hZ&*~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbGP(Lto'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAGhtrS,]#UF7aSKF7+)FEU@cH6hitJ62.&BTD5)@
+FmXALFoQRXRdHO@R.QdHR/)9oJ,XolIK#]2S,JlWSc>;]T)bJ]TDG5LTAGP*Ms#s!Z*L\4ZhCd+
+[J@00[JmW5[I'@]RGaJ4Qh=;T<;fhn<rQ2"=Sl8#>5hb(>lE"Kd/MDndaRlPq31W;nW<oqF`hm+
+G63#7H2`-iHiJKmIK+cqJ,OosJcC>uKD^DsL&6VuL&6PtKD^?!Jb4K[J+nKmJc:9!KE$W)L&Qi,
+LB*//M$JorMi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E&=f;_StDXJTqS3TUSO]^V5F6i!N<!s
+WWB0%riI*AYHP17Z*L[AZa@*I[^NZS\@K/]]=Y_g]tXK\%`#ot_Sa=1`Poj;aN2KGrlYquc-FV\
+d*^7he'lgre^i@(f\-8X"l%hgh;7&gi!SH&j5]4^jlY^gkl0fOlKdd&m-X3.rpKpXnaZVLs766_
+rUp3as7cKerqZTjqtp?ir;H3cJcFU,J,~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbGP(Lto'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAH#R.<W,ns<U)aJ4n:f35Oq#24TIkE63'=N;#F,h
+;!q3X:]NlF6Kpl96K(f<;?0Yk;?0YU7dikI;#jGl:]F8f;>sGq;,U:hqGQWX!)2-?s%<2^mS!ab
+=BJ^/n65`mr`T;+ra#J-m8Me>oi(cfrDi\pr`B)$qcWo%r`f;*!I/ngHN&9kI/R%7<U!HbFEM_L
+rHA<fH$TC8s*OcnrdFfqrdXlsrdk*$qLe^!pP&L!p4`BspOiBqr.4Kjm=4k\rdk'#r.G$&s+UH,
+s+^T1rJ:c:Mi3OQNK&ttNrb?)rfR;GPl?pKQC%T<!L]DURh2*\St;RHTV8'RU8+N[V5:'gVZE`q
+ri-""XT#=?Y-5%5Yd(L>Za7$G[C3NQ\%&uZ]">Se]Y2&Y^CJ&q_SX4/`5T^8a2l?Db5TQsbg"GY
+cd:(edaQ[peCE.%f@\dUg'-6dh;-rFrnn.BioB([jlPXekNMp0#O:X@m-O-,mf)YVnF?&Jo)J:]
+o_nI_pAamcq#:*hqYU0gr;?Nardk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfeCE(LeG@YmR.?U6Q2m33QM-UC6hj"Gh#Z<cqV(l%
+r7q&$rg`nUka_=:opkHoqoefX!m/O)prE?QrM]@fr2B4boVhf5rlkDerm(PirQtSlrR(\prmCeo
+r6kSlo$RNOqn21*l+6T!o_A[eq=s^YpAXgapAOa`p&OjKb5BBVb4<aN;uBVn<V]\p=8l>!=oMV(
+>Pqb+>l\4*s89am_tq=OF96T.G5c^cGQ<$fHN/?lI/SKnIfFoqJGt-!K)(&oK_U8qK_9uqK)C2m
+JG4QhIe\EgJGt-!K)L?%K`?c)L'!-dM#N59MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQlh`bS"#q<
+SXuFFTV/!PU8+KZUnsrcVl-JmWN)u!X/u<&!NrX*YQ;#7rj*?H[C*HO\$rlX\[oAa]Y(ql^;%Fu
+_>_:]_o0O5`lH-@aN;TJbKS61c6^f`dF$CkeC<%!f%8O+g"P07gt^`AhV[8LiSieVj5f=`k2tjj
+roj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmdq>^<fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfp72,'nT=;B!HN89ErJH$6MR5ATDP;>FmaGNFn(pi
+RK&ZHR/iWKJE24ZIenKmRKAtIRf/`USGo)ZT)##ST^SN/N;JOtMYXUP[/RK1[/[N6[emK#R/E<J
+R/WHJQiNKEQiNKJ;uBVn<V]\p=8l>!=oMV(>Pqb+>l\41cN)>kdJhSdP4=b7P4k%<F96T.G5c^c
+GQ<$fHN/?lI/SKnIfFoqJGt-!K)(&oK_U8qK_9uqK)C2mJG4QhIe\EgJGt-!K)L?%K`?c)L'!-d
+M#N59MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQlh`bS"#q<SXuFFTV/!PU8+KZUnsrcVl-JmWN)u!
+X/u<&!NrX*YQ;#7rj*?H[C*HO\$rlX\[oAa]Y(ql^;%Fu_>_:]_o0O5`lH-@aN;TJbKS61c6^f`
+dF$CkeC<%!f%8O+g"P07gt^`AhV[8LiSieVj5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]
+p&Facp\jmdq>^<fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfr)EPnmQU>-q`aO7q*+@4r^6HIr)!;es%r8`qG@,X
+j?i)uiDKDKr_r_m!)q]CoLAs[:f%$drDE8drDN\ol;I[XrD!5ag.Um.rE8SmrE08,>?kH>qcrAa
+n5KBdnl5B_r)EVpq,[Jrr`K&#r`];*r*98-!FC'LH38MAI!bcjkuI:Rs)\<bG'<k/s*+NhrHeKj
+s*Xcns*jutr.+ctrdsrupk8ErpOr3lr.=itomlddq0r*gq1/Hqrdt*$s+LE+rItB/Lku%e#E"Ft
+N/WaUNrG(?OHKO*!L&cIPl[2;rg4dqR[]e:S=Q7CT:hjNTq\<WUnjiaVPg>jWMuntX/i?$XT>T.
+ricF.ZMq0F['d<M[^W`U\[f;_]=bei^:q@s^qp#e%`?6(`Q#s=aN2KGbKJ,Srluh9d*^7he'umt
+e^i@(f\,!4gYCT?h;7&Ii8NYSj5]4^jlY^gkl0fOlKdd&m-X3.rpKpXnaZVLs766_rUp3as7cKe
+rqZTjqYU9ir;H3cJcFU,J,~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbI.[%%o()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kA^f/Ze^XKFqO$oAd['`pr'U9HqV;2-g]#q)g\BS"
+g\dT<S+W<9SbJZMc1]BVbPTH^aoBHVa8)\,WVNLdVtR(hbQ#fbcMu5id/MGldf._ldf7eqde;/g
+eG-`S]^NJn])B/>q"FLhqYBp]p\+=Tp\X[`p\XXapZ0KmanX$QbPG08<;fhm<rQ2!=Sl8#>5qh(
+>lS+/?3"@-s8'Uk_u%@SFEMbMrceBes*=Qh!df<Br-eTos*sorrdk'#on2jhnq6jlr.4Qlq1%a[
+r."Qnrdk*$r.G$&!/:B+!f)SfreU]6Mi7Rn!KE-=Nrb?)rfR;GPl?pTQC!u+R@0M5S"-&KScPIV
+rh0@eU].%iV5F6i!N<!sWX#T+XKAV-Y-7i/!O8s0ZPp3Y[C3NQ\@B)[]"5Md]Y2%n^V@S#_8=(,
+`;[^Z`lH0AaiaV+"jG6:cHjl:d07tIeC<%"rmq>+g"P07h#?+:hV[8LiSrkWj5f>$joOZ/roj[Q
+lg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmdq>U6fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kAbMY]FR=/,Er8<#6MdA?TDbGIFlITDFo7[%Rc0Y7
+R.PplJ,"KmIJoW6S,\uYSc55YT)bJ[TDbGMTA5D$MsQ<$ZMV!$[/[Q3[.^osR-g7?R/30DR/0bZ
+<;fhm<rQ2!=Sl8#>5qh(>lS+/?3"@2d/D>ld.3@iPPp[=OTT]JG'<k/s*4QhrH\NlI!kj?s*jut
+qgeZsrdsfqo7Z[er.=itp42sgm!ek^qLJQrs+:0$s+CB+rItB/Lku%e!fDnorepl;NrG(?OHKO*
+!L&cIPmWhDR$a;0R[]e:Sc52]T:l1W!MZ@gU]I<hrhfdqWW&n&X/rD)Xfeh1ricF.ZMq0K['d<M
+[^WcV\[f;_]=bei^:q@s^qmk(_Sa=k`<F9%aN2KGrlYJhc-FV\d/MDrdaQ^qe^j`O"k_M^g=tE^
+h$W#ri8ESRioB([jo4BCkNMp0#O:X@m-O-,mf)YVnF?&Jo)J:]o_nI_pAamcq#:*gqYU0hr;?Na
+rdk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kAc#I)<UE!@4o@M>5P[M34o@\C6MaOV:]F8a;>F&c
+6gmA!6iL!C;>a>i;uTYp;q=G78,Z9_;>3ub;ZK_\;ZTWhqG-u`r_2HIs%NAan4Wgar`T#"s&o5&
+rE08,>?kE=qHW,\p/LlepJgufr)EVpq,[JrrE/r"r`]>+qcs/,ra#S3rHeEh!.+K@kuI=S"*A[/
+G5c^cGlN'fH3/G@I/JEmIfFopJGt-!K(XcfK^scnK)C2nJGF]]If+]lJGt-"K)C9$KE-`)L'!-d
+M#N54MMmDlMueourf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj._T`1VcU8.^`!Mu[mVZE`qri-4(
+XK8P+Y-+u-YQ;#7rj*NM[C*HO\%&rY\[oAa]Y(ql^;%Fu_84"*_o2Pn"ieU(aN;U(b6?,7cHab_
+rm:nte'umtf)F8)f\,!4gYDea$Js[ui8N\Tj5]4^roO7Ekl0fOlKdd&m-X3.rpKpXnaZVLs766_
+rUp3as7cKerqZQiqtpBjr;H3cJcFU,J,~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np']on*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kA^o2Ye^`1Je+]7"Qdh?#Q23lE6MT@:h##k$h"f_"
+SGAZPSE$1:SGph7cMl)ebQ,o]bkoTZb5]T`aSs6ZaRuLuWUHecbl>recMl/hd/VMldf._qde_Dn
+eC4<EpXSfIqn2R5o"+k5o"+Mi!VlEfpAXgap&Ojbp&k!]p@mUip<!*Pqoet;qc*Moq,[JrrE/r"
+r`];*r*95,ra,S2p](*,iPYT3"*A[.G5ZXbGQ<$fHN/?lI/JEmIf=ipJGk&tK&D:YK)C2nJGXik
+IeA-bIf4cnJGt-"K)L?%K`?c*LB!#/M#N82M?&S6Mueourf7)AOoCLSPE_>tQBml)R$jD3S"#q=
+rgj[nTV8'RU8+N[V5:&eVl6Pnri-""XT#=,Y-5%5Yd(I=rj)X4[JmTQ\%&rY\[oAa]Y(qk^;%Fu
+^qmn)_o0L4`Q#sta9B].bKJ,Srlt\nd*^7he,Ii#e^i@(f\-8X$JX@lh;7#Gi8ESRro4%?jo4BC
+kNMp0#O:X@m-O-,mf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kAY/[ekB-06j)Xu`qEjtMm@X?MlZM!+r0d>Ki0j+c
+k(!2UrgNeT!h>gQr1EqZj.G%aoS`@!s,$WZosF_+s0VR/!4;a5n<i.#qj@@]qc*Moq,[JrrE/r"
+r`];*r*95,ra,S2rQkPlrm1\lcLR.gPPp[>OTT]JFa!_-s*+NhrHeKjs*X`ms*jrsr.+`srIWs[
+qh"`sp43$ipjVmaq0r9lqgeZss+:3%s+LE+reCH.!/UW2s,$f7repl;NrG(?OHKO*&!N6CQ'R`&
+R$a;1R[]e:Sc52lT:hmOU8"EYUnsobVl-JlWW&muX/u<&#Hk86YctC;ZMq02['fnA)Rm5d\[f;_
+]=bei]tV7r^qde'_Sa=1`Poj;rl>8bb0.uPc2Pulcd:(edaS3F"kD2Uf@\dUg'ZTih;-rEhr*GO
+ir7s=jQ6C'!U&\Gkm-M>lg4!*mI'uB!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kAQAS+s&J5GnNHV1lTP)3qEjsRs%iPhoMPQ`pI"U?
+gdD'=i_fMLr);$5rC?larDEMk!)rhonP]Eep/Cifs%`AcqbI)ar_2WNr(R,bnkB'dp0%H!qH<r'
+>$LZ)k>V(RoMbWdr_r\nrDiYor`B&#qcWo%r`f;*ra#M0ra,YNrH\TlH?sdZqGc]ZoMbp7F`hm+
+GQ2mfH2W'hHiJKkIK+cqJ,FiqJc12YKDU8uJbFWkJ,"KcIJJ?jJ,=cqJcC?#KE$W)L&Qi,LB*/0
+M>rG5MuJY9NK4"!!K`HCOq3b@Q'IZ$Q^F/.R[T_8S=TYN&>,VhTq\9VUnji`VPg>jW2]cr!NW=$
+XTu#4YHY79Z*OA8!OT96[MlWb\@K/]]">Vf]tM.p^VIY$_SX4/`5T^8a8X-`ai_fMbg$.4"jbQC
+dF-MCe-4CRf@S[.rn7_6gtgfChV[8LiSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@mfN"Knc&+ZoDeI^
+p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbGP(Lto'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAc:-XeH+1Ko9es4qNh,Iig'R4qEt*Gp>#f*gY;JX
+rn@G.r7gq8pRD)Njdl=>s3Uel!m]'9n]gsSp<*EWr5e]5or%kirM\kXrltJgs3L_lrmC_nqpPPp
+rmU_no$m`kl+R#-q7HX;s1A$:qRcR7!*&gjrV6Bdrq?9as7QHcrV$-]oZI0Vo#gRGpr`W[!)rep
+rDiYorE&u#qH<f$r`f;*ra#M0r*KG3q#C-+iPYZ5"E\d/G'<k/s*4QhrHeKjs*X`mrdOlsqLJNq
+qh"-dqL\TqpON-jqL7aYqgSNoqgeZss+:3%s+CB+rItQ4LkpnEMMd>kMueourf7)AOoCLNPE_>t
+QBml)R$jEBRi7ffSt;RHTV8'RUSFW\V5C,fVl6SoWiE,#XT#=&Y-7i/#I1S?Za7$G[JmT8\%)FJ
+)S3Pm]Y(qk^;%Fu^qmn)_o'F3`Q#s=aN2KGrlYJhc-FV\d/ME+daQ^qe^i='f@\d1g=tB;h;-rF
+rnmh9ir7s=jQ6C'!U&\GklL)8rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?
+hZ&*~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbH1^_!o'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAY,LlSc5/;FRjM:EWL5LqEt*Gp7UfFs.JOti-,'e
+pR:$.q186ik(!8Ws-iqV!h>gQrL`tYj.G"`s,Hu9oS`O&!*&m&osFS's0Vd5rNlU3[.KabRJ`H1
+QiEEQ;uBVn<V]\o=8l=u=oMV(>Pqb*?2e1.?N=L3cihY?cHqdFP4=b7P5::DFEM_LG5c^cGlN'f
+HN/?lI/JElIfFooJGk&rK'S'cK):,nJGXimId;FZIf=ioJGt-"K)L?%KE-`)L'NKiLl$tGMMqIm
+!KE-=Nrb?)rfRVPPa.N"QC!u+R@=,E)P!@iStDXJTqS3UUSO]^VP^8hW2ZbrWiN2%riH4(YPta2
+Z*L[AZa@*IrjDj:\Gj#W]">Se]Y2"m^V@S"_8=(,_o0O5`lH-@aN;U(b6?,7cHab_rm;D-e'umt
+f%/I)f\,!4gY:N>h;7&ghuVfrro4%?jo4BCkNMp0!UB"Mm/QGQmf)YVnF?&Jo)J=]o`"O`pAamb
+q#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbH1^_!o'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAQ;b,<8]t:4nLr*4TR`7qEt*Go2,0Yr_WPjs%r\^
+r^-KLo0VA&s&/>`rDN8bpeq,jq+'%+s%!&crDNVns&/;a!*&Vir)EShpJ:QZrD!8bpe1W\rCd#]
+qG$cZ!E<4i=o_e+>lS%)>lS%#;uTbl;t3iY;u]es;uBVn<V]\o=8l=u=oMV(>Pqb*?2e1.?N=L5
+HN/6mG^"=Tn5SpXp/D0:F`hkNrceBes*=Qhs*Ocnr-eQns*slqrIOitl\#%cqgnKlqg\Hkl[AYZ
+rdXfqrdk*$rIb-'!/:B+#D\+kM2@+IMuJY9NK4"!!K`HCOp[D;Q'IZ$Q^F/.Rf8cpS=Q7CT:_dM
+Tq\<WUnjiaVPg>jWMuntX/i?$XT>T.ricX4ZEggC['[7?[K3kIrj`rY]=Y_g]tM.p^VIY$_SX4.
+`5T^8a2c9BaiaV+"jG6:cHjl:d1asWeC<%"f%8O+g"P07gYCW@hV\=j!TE&;irS6&roO7Ekl0fI
+lKeH9s6TgSrpKpXnaZVLs7?9_rq6<bs7cHds7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0le'n6Es4%,!n<i4%rKd>IpQk`DrC$KLr'LG>rndJ,
+ptPl(rS7>*!1i_OqO@8Mk+2LAs3^kn!71GcrltJgrltGdrlaoUs2b8^ql'7goVhefpSdba#L1Q>
+cd0tbdJ_Mle,Ikse,.Yaec+.h^&G\<^&5PA]DoJ<]D]>6])]GA<;uXqq=saZq"a[`q#C'hp@\CX
+rq-9`rq6$.pWN6PrQ5&[prW?Ss&Anrq,[Gqr`K#"r`];*qcs/,ra,M0ra>b7q#C-+iPYZ5s)n?b
+rHJ9ds*=Qhs*Ocnr-eQnrdXcpqgms_qLS?jr."Tmj*giSrdXirrdk*$re(6(s+UH,s+^T1reV2D
+Mi3OQNK0$[O-#KdP*2#nrfmYQQ^F/.Rf8c`S=Q7CT:_dMTq\=]U]I<hrhfdqWW&n&X/rD)Xfeh1
+ricF.ZMq03['d=@[K3kIrja,^]=Y_g]tM.p^VIY$_SX4.`5T^8`lH0Aai_cLbKS61c4eONdF$Ck
+e'umtf%8O+f\,!4gYDea!T)`5i!\N'j5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&Jo)J=]o`"O`
+pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0lSXoePqjl;[q/ZOVqfDLPr,_g)qEt0Is.K@bq4R2K
+!2/=oj*('`iL04eqLI^XrdOm:rgX"[T)PAXT&cNqN;8J2N;/>1MZ-TRZh_!-[0<qF[^NTOrNuU4
+rj;[2!4;HepmM&Iq3UuEn<a/Sr)NPnrE&u#qH<f$r`f8)s'>V1r*TG2s'Z5[cHje\c-OhfPOXh+
+PPgU@OoKS(G5ZXbGlN'fHN/?lI/JElIf=inJGXo]K)1&lJGaooIcGkSIf=ipJGt-"K)UE&K`?c*
+LB!#/M#N5BMMmCON/`jXO,oBbOcklkPl?pOQC!u+R@=,E$CmZYStDXJTqS3UrhKRkVZ*IoW2]cr
+#HOr-Xf\b/YPta,Z*OA8!joACrjDj:\Gj#\]">Se]Y2"m^V@S"_8=(,_o0O5`l?'?aN;TIbKJ,S
+rlu2'd*^7he'lgre^i@(f\"m2g=tE^h#ZBirnn1CioB([jQ5OdkND(.klL)8rp0^RmdC)C!q>aM
+rpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0lrDibp!*.''nicq>qEt0Is%r\lq,$i`qG@/gp-S[E
+nj;A(n59*]o25?^s&82Q!(QfTlULbLjAYqRs&8kqo1o9\nP9'Xr_3;an4`XPr`&Jm"'\r5>Q.n+
+>Pqb)>PD(j;ufk^<:s2i<;]bl<rH,!=Sc2">5hb'>lS+/?Mn10@/jX8H2`'gFoll5Hgk#)<VBDl
+FoQX`GQ2pfH2W'hHiJKkIK"]pJ,4]mJ`q^^JbFWlJ,=]TIJeQnJ,FirJcC?$KE$W)L&Qi,LB*/0
+M%GQ&Mi<USNfK0]OHGZgP*;.0Pm*J?R$a;1rgO7bSXuFFT:hmOU8.^`!Mu[mVZE`qri-4(XK8P+
+Y-+u-YQ;#7rj)[5[C-"B!OoT<\KADp]=bei]tV7r^qde'_Sa:0`Poj:a2l?Db0%oNbg$.4'@5%Q
+dF-LmeC<%"f@S[-g"P07h#?+1hV\=j$fU+*j5f:_k2tjikl0fIlKeH9!q#FDrpKpXnaZVLs7?9_
+rq6<bs7cHds7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrB@?e.rR:htm$Q%ar'^?JrBgA;q;(c"qqM%>qj[YW
+lC@(/"J!rhdEqU5!RAsfcMl)bbOis9W:Qq`W!B<Jcd:%ddaJ'BqpYVpr7(Yps47+ur7:hu!8.7a
+o=an2r4Vs>k.CUks7l9]rV6Ee"SVN]p@eLYrq-3_q9&6Nqo\cWqoJQSrQ>(=q,[Gqr`K#"r`];*
+qcs,+ra,M0ra>b7raP^'f#%X/F`hkNrHJ9ds*=Ngs*OcnqgJKnrI=Tmq186kpjr'fr."TmhL5?O
+rdXirs+13%rIb-'!/:E,s+^T1re^Z4%Z?:)NK&sZO-#KdP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W
+!MZ@gU]I<hrhfdqWW&muX/u<&#Hk86YctC;ZMq08['d<M[^W`Urj`HK]=Y_g]tM.p^VIY$rk\]R
+`;[^V`lJ)"$H^H6bKS2TcHab_rm;8)e'umte^i@(f\+s3g=tE^h%8H#i8ESQioB([jQ5OdkND(.
+klL)8rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrBDnD$T)P;/FQ[`C7/94K6MdDOT^n`TT\ahSG5[p(
+RcBh9JFJ-eJE24[SH#,[T)G;XT&ZIANRWpbNVe\3MZAY6;uX-"[/IE2[f<c2[/@61[.9UZRJ`EP
+Qh6U9Qi0q[<rH,!=Sc2">5hb'>lJ%.?Mn10@/j[7@f=ORd*gIrrfcl8nWWp7r/q#%s*"?bs*4Qh
+r-JBis*X]ls*jorpji0kp4E'joRQjhqgRCMrI4`qr.+fus+:3%s+CB+reCH.!/UW2s,%;EN/WaU
+NfT6_OcbfiPEc'3"dYLBR$jEBRg#=QSt;RIrh0@eU].%iV5F6i!N<!sWWB0%riHF.YHP17Z*CV6
+ZNmkF[C3NQ\%)FJ%(a'_]Y(qk^;%Fu^qp#e!Q2kT`<"!!rl>Ggb0.uPbg"GYcd;[=&(8qVeCE+#
+f@S[.g"P07h#?+@hV[8LiSieVj5f:_k2tjikl0fIlKeH9s6TgSrpKpXnaZVLs7?9_rq6<bs7cHd
+s7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrB2ne/r`$Zsq*"XDq*Y*IqGI2fpJLibr_NPj!)`JV
+r'LBMn3Z;*n59*]o25B_r_rhdkXYA<pdb0M!(Zucmo'3aq,@&dr_reqr_<Ghh+mlBlq@CRr_rDl
+s',P0r`oA*r`o>)q,>sGq,@5lq,[Gqr`K#"r`];*qcs,+ra,M0ra>b7raGkOrcSBgH$au-<:Nu`
+<<%+@G5ZXbGlN'eHN/?lI/A?lIf4ckJGFciK(sohJGaooIboMOIf=ipJH(3#K)L?%KE-`*LB!#/
+M#N82M@PQ'N/`gWO,oBbOcklkPl?pOQC!u+R@=,E"e;-TStD\TT`Lm_rhKRkVZ*IoW2]cr!NW=$
+XTu#4YHY79Z*OA8#ILnH[^NZS\Gj#I]">Se]Y2"m^V@S"_>_:P_o2Pn!QN1Za9p&3bKJ,Rc-FV\
+d/ME'daQ^qe^`7&f@\d0g=k<:rnS.Bhr*GOiSrnXjQ,Fbk3(pkrojIKli-8Nm/ZSRmfN"Knc&+Z
+oDeI^p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nosWnn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB@>8We'n<Gl'TterL!FLqEt3Jo\TQ&qV:r%nt#?A
+iLL/$da?Ihd.kr_c2c,fbkoTWb20)bVuP-DdJVJge,[tqeGn(lf)F;$f`'Rt^A5J']^EE1;uHCi
+q#0sbp]C3`pA4IYo_cksbP]N\anWsPaT,?:<rH,!=Sc2">5hb'>lJ%.?Me+0@/aU4@K9p7s6[_l
+_Z%IQ`;au[G5ZXaGlN'fHN&9kI/A?kIf4chJFS3]JGaooIe/!WI.r'fIf=iqJH(3#K)L<'KS>-Z
+L'!-dM#N53MMqIm$B:(,O-#HcP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W'r%J!UnsobVl-JmWN)u!
+X/rG*Y-+u-YQqG=ZEpmE['fnA#Ih4Q\[f;_]DfGJ]tV4q^VIY$rk\]R`;[^V`lJ)"&';u;bKS2T
+cHab^d*^7he,Ihte^j`O+5#9#g=tB;h;-rFhr*GOio9"YjQ5Lck3(sll07Kuli-5PmI'EAmfN"K
+nc&+ZoDeI^p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB:Spks.04]c?/AnqF(0IrBg.MrLihUs.K=6kB5a,
+rL<MLj-fdpq18QtqgnWpkC<N&s.94^pn$N<r/UZ6i/IVmn;RC*rDWa&rj;R1rO)g9[^EOBZiIH3
+[/RB3ZMq3.QiNQIR.m$JR/WHEQM?dH<V]\o=8l=u=oMV(>Ph\)?2e1-?iOO5@JjR>A'N<Gdact&
+rKHc7plk93s)n?brHJ6cs*=Qhrd4ZmqgJHmrI=KjnU^7]r."Tmo6p+UpO3!hrdXlss+13%rIY0)
+Kn]M\!f)SfreUZ5MuJYBNK0'\OH>TfP*;.0Pm*J?R$a;1rgO(]SXuFFT`1W"U8+N[V5:&eVl6So
+WiE,#XKAV-Y-7i/#I1S?Za7$G[JmT>\%&rY\[oAark&KL^:q@s^qdec_?%Qmrl"oXa8X-jai_fM
+bfn>WcHjh`dF$CkrmUu!f)F8Cf\,!4gY:N>h;7&Hi8ESRioB([jlPXekNM-ol0@R"rp0^RmdC)C
+!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_noaKln*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB2hl1rD`hs`'3u[rB0pEqEt3Js%r/]rD<>dnj31?
+!(6NJiBuEur)3JlqaT[;n4<OKs&/>br_iMiqGR5ir`%9?rCuiVrDWDns'#J.ra#P/r`fA,!+#G*
+r);*EqbmJpq,[Gqr`K#"r`];*qcs,+ra,J/s'Yh7r*fn@F`qtSH[U>0<;9Ja<<%+@G5ZXaGlN'f
+HN&9kI/A?kIf4chJFS3]JGaooIe/!WI.r'fIf=iqJH(3#K)L<'KS>-ZL'!-dM#N53MMqIm$B:(,
+O-#HcP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W'r%J!UnsobVl-JmWN)u!X/rG*Y-+u-YQqG=ZEpmE
+['fnA#Ih4Q\[f;_]DfGJ]tV4q^VIY$rk\]R`;[^V`lJ)"&';u;bKS2TcHab^d*^7he,Ihte^j`O
++5#9#g=tB;h;-rFhr*GOio9"YjQ5Lck3(sll07Kuli-5PmI'EAmfN"Knc&+ZoDeI^p&Facp\agd
+q>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYHh?q#o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQsdF-Ile,IkYR,42(R.s)G6iKFChYl:-h#,q)SAq*&
+e'cXkd.kr^cMl&gbl#ZXb3#Z#WV`X_VZP8odf._feGIemf(mqsg&Ke&^\bbA^$WK3]Cii1]DGP*
+p\FUap]'sep&F[`p&=R`oDJ7[b3I1Gb5BBTaSX*V<rH+u=Sl8">5hb'>lJ%/?Me+/@/aU4@fBj;
+AGZ>n_sP>@_Z7XSFoQX`GQ2peH2W'gHiAEiIJnWnJ)5_QJ,FcfIHQ"RIK"]pJ,OotJcC?$KE$W)
+L&Qf-LPYqd#)\=sN/WaVrf75EOcklkPl?pOQC!u+R@=,E':bVbStD[LTq\9VUnjiaVPg>jWW&mu
+X/u<&#Hk86YctC;ZMq03['d=@[K3kIrji'?!5&6C#JIjc^V@S"_>_:P_o2Pn!QN1Za8sE*rlY>d
+c2Puhcd;[=&(8qVeCE+#f@S[.g"P07h#?+1hV\=j!TE&;irS6&roOIKkih9qlK[^7liQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYHh?q#o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQsR[]h<Sc55FF9$IEFRF5F7/B:M6LpiKT_P/ZT_`j)
+FjtU7SGo#QRcKn2JG=ZqK(a`qJE_R_ScGDVT(elTT`:Y^T`1S^TE(\^O7eLqN;&8(N;HNUZa@*I
+q6p70s0Mp8ZEpmErj2U0rj1pXrL*GJrg3;Dqj71\rE&r"qcWl$r`f8)ra#P1qd9>1raG_6raQ1D
+d*gLtf\,$?POjt:FoQX`GQ2peH2W'gHiAEiIJnWnJ)5_QJ,FcfIHQ"RIK"]pJ,OotJcC?$KE$W)
+L&Qf-LPYqd#)\=sN/WaVrf75EOcklkPl?pOQC!u+R@=,E':bVbStD[LTq\9VUnjiaVPg>jWW&mu
+X/u<&#Hk86YctC;ZMq03['d=@[K3kIrji'?!5&6C#JIjc^V@S"_>_:P_o2Pn!QN1Za8sE*rlY>d
+c2Puhcd;[=&(8qVeCE+#f@S[.g"P07h#?+1hV\=j!TE&;irS6&roOIKkih9qlK[^7liQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYH1^_!o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQs;H$Qm<Tu[I5N"a#4o7A:7/B:M6N'aO;>j>f:[ULK
+6IeH[;>jDk;tic88,>dJ;u0De;u]bk;uBVk:AIW;:Amo`9`%ce>5MP'>QA(&>l.b);sI?Z;t3i_
+;u9Vo=8c7u=oDP'>Ph\)?2n7.?iFI4@JjU6@g?OhH$apdIXUQ^q,R#crcS6arHJ9drd"Hgrd4Wl
+qgJElrI<[Sqg\NmoR5nMq0i6krdXlss+13%re(6(s+UH,!JcL1M$AiqMi<USNrG(COHG]hPEc'3
+"dYLBR$jEBRhM<_St;RITqS3TUSO]^VP^8hW2]cr!NW=$XTu#4YHY79Z*OA8!joACrjDj:\Gj&=
+\cBAA]Ec-a^;%Fu^qp#e!Q2kT`<"!!rl>,^b5TQbbg$.4!RK-ld1=[SeC<%!f%8O+g"G*5gYDea
+!T)`5huVfrro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWm
+o)=4?hZ&*~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWtdF&!Bs3q"ts-WbQo9fHDrg<_RrL!VO!1<)=r0[8I
+pI+jFs$HbCo%s?$rnRP0s4mY/qOISVqO[#D!1rDFs3q"r!R]9hchYlcc25`Yb5S@>WT^;WWVEFd
+VZ>0Ee+M5gebI_nfDjM&g&B_*g\S\]^@],0]`#J4]`#J>;Z6@ep]1'fp&OdboEb'\o^h\Ho^h\P
+o_Q`#bOs$Uan*URao5?>=8c7u=oDP'>Ph\)?2e1.?iFI4@JaO6A,^!=AbuGo_sG8>_uFlZG5QRa
+GlN'eHN&9jI/89iIf"WYJGOcmIeA-cI-l:XI/89kIf=iqJH(3#K)UE&KE-`*L)l&*Ll$tGMMmFP
+NK0$[O-#KeP*;)oQ'IZ%R$a;1rgOCfSXuFFTV8'RU8+N[V5F6i!N<!sWWB0%riH4(YPta-Z*L\7
+ZN7G@rjMj9!4`$=!kQ"Urk&9F^AbkK^qmkd_?%Qmrl"oXa8X-kai_cLbKS5UcHab_d*^7he,Iht
+e^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rosIJ!:0XN!q#FDrpKpXnaZVLs7?9_rq6<b
+s7cHds7uZjqtp?ir;H6dJcFU,J,~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWtR[O;IS=TYNm<&)Fk&g6:s)\6^pI+jFs$H4KrLiqX
+gNER@k]ZurrgWYNjdH*us+0urm"+h[pODe+qOdAPs.KFcrh9:bqN(K5oSr9tnVdC*!/p_Ps0Vg6
+s0hm8s0Vp8[C#q>r3H@/rNcF/!1DT/rg3;Ds-N^crE&r"qcWl$r`f8)ra#M0r*TG2raG\5s'u%=
+"D-*6f\-8Yo9/U,oTK5ss*"<as*4Qhr-J?hrd=QjrI4Wnk^`MZqgS3dqL%[WqgA6gs*jrsrIFp!
+s+:6&s+CB+re;GKLkpnEMMd=NN/`jXO,oBbP*2#mPa.N"Q^F/.Rf8cdS=Q7CT:hmOU8"EYUnssf
+VZE`qri-""XT#=&Y-7i/!jT&:rj)X4[JmW7[fEr;\H9@S]DfGD]tXK\!l2Xgrk\]R`;[^V`lJ)"
+&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;irS6&roO7Ekl0iHl2^/L
+liQSBmf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;?Nbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWt;GmNo<;fha55.;,541Q64SM8?6iTLM;"@K_;#=&b
+61mS46NBO<6f_,D;Z9Pl;Z0Pn7fQ!S7c-`47fQ!P;tj2[;u'Dh:AR]`9__?B:A@Q\;ZBr!>Q7t.
+?1qM'>Q.n(>P_:g<:s2`<;0>j<rH+u=Sl8">5hb'>lJ%.?Mn10@/aU3@fKs;A--=hI/\NpIXUfe
+n5]9`r)<W<s*"<as*4Qhr-J?hrd=QjrI4Wnk^`MZqgS3dqL%[WqgA6gs*jrsrIFp!s+:6&s+CB+
+re;GKLkpnEMMd=NN/`jXO,oBbP*2#mPa.N"Q^F/.Rf8cdS=Q7CT:hmOU8"EYUnssfVZE`qri-""
+XT#=&Y-7i/!jT&:rj)X4[JmW7[fEr;\H9@S]DfGD]tXK\!l2Xgrk\]R`;[^V`lJ)"&BW);bKJ,S
+c-FV\d*U1fdaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;irS6&roO7Ekl0iHl2^/LliQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;?Nbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbIe<7'o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C!b8TdaHUnopPTBp6klJrL*MLs-N_Prg3MLr0dDM
+!(HTLqEk6Lqqq#%q:u&+o:>fNq47#Hm%+1+s3q"rr6Y,_rlt>ar6+u[r2At]q5F4jp8Ihc!7USi
+s4-enrR_)%rn.;*qqLt]!5J?DotBq/rO_^7r4Vo(s7cHd!Vc<eo`4XZoDeC]oDJ7Tb4a$Lb5'0P
+aSf3==Sc2">5hb'>lJ%.?Me+/@/aU4@fBm:AGp*9s6[_i_?@c!F`qs+GQ2peH2N!fHiAEgIJeQj
+J+A-bJ,=]gIJS?dHhMd]Hi8?hIK"]qJ,OotJcC?$K*$^[L&Qf-LPYqd!K)g7N"V,1O,oBbOcklk
+Pa.N"Q^F/.Rf8csS=Q7CT:hmOU8+KZUnsrdVl6PnWiE,#XKAV-Y-7i/!O8s0Zi@B4[JmT9\%&sI
+\H0:Rrk/9E!5AHI!l2Xgrk\]R`;[_4`lH-@aN;TIbKJ,Rc-FV\cd:(edaHUoeCE+#f@S[-g"P07
+gYCW@hVR/Ji8NYSj5]4]jo4BCkNMp0!p]+;rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKer:p<frqcNh
+rVZTloDX=@hZ&*~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C&XP'S"-(Ar,q@JpN>\Ar,_^V!(HTLqEk6Lm@jKO
+!M?%aTDNj!G49_BG5n*0S+<$IRJiTSRJ`NNRJ_TuJaS'bJ+fK2TD"rQT`ChaU\]uNO84h)NV&1u
+Mtp9M[/dZ7[fNqFrj2[3pp0q)rNcF/!1DK,s-NGF!13XcrE/o!r`];*qcs,+ra,J/ra>_6r*oY8
+rabt="4u5\g]#q#P3nJ+P5f\)G5QRaGlE!dHN&9jI//3gIenQbJG=WkIeJ3dI/&'^HMMpdI/A?k
+IfForJH(3#K)UB(KS>-ZL&m'creUZ5MuJYJNK0'\OHGZgP*;,qQ'Rc(R$jEBRiS#iSt;RITqS3U
+USO]^VPg>jW2ZesX/i>(Xfeh1ricF.ZMq31ZiIN5[K<qJ\Gj#>]"@sSs1JEHrkANM_86,f!Q2kT
+`AGTTa2l?Db0%oNbfn>WcHjh`dF$Cje'umte^i@(f\"m2g=tB;h;-rEhr*GOiSrnXjQ,G%joOZ/
+rojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtp?ir;H6dJcFU,J,~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C&V!4;cHasr'0p>q`Xj@pHS:6krf#8p-eaE!(-KX
+nPT<_r_N5SnO)e6oL&F@jAG\Mr)<M_njiUK!(luWnONFFqc!)an5K0_q+g`[oh>6Wkt_(Lq,72r
+s'5P/!aJr6qHX#("'f&7>l@n,>kV+j<:<c`<:s2g=8c7t=oMV(>Ph\)?2e1-?iFI4@JjU6A,^$;
+Ac@)[I!^6gnl5-Zq,I;ks)n?br-/0crd"Efrd4Wlq0i0iqLA'dpj`0ip3ldbpj;^\q0W'fqgJHm
+s*suts+13%rdt9*Kn]M\!JcL1M#iKlreqJLNfT6_OcbfiPE_>tQC!u+R@=,E*Lr[lStD[LTq\<W
+UnjiaVl-JlWN)u!X/rG*Y-+u-YQ;#7rj2X3!4Dg7!k5\Lrj`'@]DfJC]`>eG^B23e_>_:P_o2Pn
+1rdSVaN2KGb0.uPbg"GYcd0tcdF-IleC<%!f%8O+f\,!4gY:N>h;7#Gi8ESQioB([jQ6C'!U&\G
+klU/9li-5PmI'EAmfN"Knc&+Zo)SF]p&Facp\agdq>U6fqu-HjrU^#>s5*d+~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbIe<7&o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&cd0tcda?L4pmM2PrL3SNr0dVRns]<@!1<SMp6ttL
+pI+jF!^bi&rS[Y3rSIM1rS@P1rndY1oUYfLqOR#Fn=9^4eC;srrmLhorQt>crm(PgrQP)\s2t5<
+ri"_Ror.kfo[Nokpt#Dqrn.8(rS%2(!8R@`qS2g>qn;p?!580?pq-C8rOr&)s&&jkrqHNfp&=Rb
+oCDJMoD8%XoD\C^oD?](b5fcabOisSan3XS=8c7t=oMV(>Ph\)?2e1-?iFI4@JaO5A,g*:AcHB>
+s8'V(_s>2>FoQX_GQ)jdH2N!eHiAEgIJSE[J,+QdIJ\EgHg?"UHi8?hIK+crJ,OotJcC?$K+N]i
+Knb>;LPUeDMMd=NN/`ksNuF+BP*2#nQ'IZ%R$a;1R[]e:SXuFFTV8'RU].%rV5C/gW2ZbrWiN6#
+XTu#4YHY79Z*OA8#ILnH[^NZS\Gj&=\cBAA]E5d\^AbkP^qmk(_Sa:0rl#,^a2c9BaiV^)b5oi3
+rltPjd/MDndaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;is4Z,jlY^gkNMp0#O:X@m-O-,mf)\T
+nGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbGkCUuo'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&R[X5F!LfPQFmjGCFlRTC7JB4H6NTTJU&C_]U&C_a
+T`CbbU&UbcTD<]uG3sMCG57[.S+2sIS+W6MRJ;<qJaJ!eJ+fK3TD"rTU&C__UZda,NV/8(Mu$<N
+;Z=*1\$i]O['R*EZ2V'&YlM*.ZN-EIR/30JQMm-M=8c7t=oMV(>Ph\)?2e1-?iFI4@JaO5A,g*:
+AcH?Cg=cGYqN:]=m$%1,s)n?br-/-brd"EfrHnNkq0i*gm=4q\omQ^bqKqOSr-SBiqgJKns*sut
+s+13%rdtc8KnY89LPL\BM2I1KN/WaVrf7tZOcklkPa.N"Q^F/.R[T_8S=Q7CT:hmOU8.^`$DjVt
+Vl6SoWiE,$riHF.YHP17Z*CV6ZNmkF[C3NQ\%)FJs1/3Brk&<G^:sT]#Je0l_SX4.`;[^\`lH-@
+aN;QHrlY>dc2Puhcd;[=!RfHre,e+Nrmq2'g&B\+gYDea!T)`5huVfrro47EjlPXekND(.km-M>
+lg4!*mI'uBs7$'Yrpp*\!;-6_s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbG4bCso'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&r)3Vo;tiKV54Lf655%5=53P0/7JB4H6NBII;#!oe
+;#O8k:]O;Q6g[;?6h`qH60(o<;Z0Pd7eT@M8GGdU8Fo@N7fH?a;Z9Pg;XdW^<:N`Y:%h9X:&7W^
+:&@]`:&7`e;ZC#$>m">9>?_#1r`oJ-s'#8'rEK>.o2GTegf"2SrE/o!r`];*qcs,+ra,J/ra>_6
+qdTP7s()"<s(2:[I/\HmI/6e:<:Eo`<<#nsFoQX_GQ)jdH2N!eHiAEgIJSE[J,+QdIJ\EgHg?"U
+Hi8?hIK+crJ,OotJcC?$K+N]iKnb>;LPUeDMMd=NN/`ksNuF+BP*2#nQ'IZ%R$a;1R[]e:SXuFF
+TV8'RU].%rV5C/gW2ZbrWiN6#XTu#4YHY79Z*OA8#ILnH[^NZS\Gj&=\cBAA]E5d\^AbkP^qmk(
+_Sa:0rl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;is4Z,
+jlY^gkNMp0#O:X@m-O-,mf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'rm(\ndF-J5S,/QRS*?C:RIZdH7f>dM7/B7Pio/ko
+i:Z"'hWUR,SaE$?Sc71=eGn"rdK%\md/MAicMPidbkTB]XSJpsWW9*nWp?YWVuWaheGe"qf)F;#
+f_sJ'gAK_&h"\VS^\PVB^&PhE^&>V6]DfJ;;$-Lcp&=O_o)A1Znc84Snc8:ZoE=d/bKA!$bQ#f\
+bP00SanWsW=Sc2">5hb'>lJ%.?Me+/@/aU3@fBm:AG]s;B)cNAs7aD(_s5)=FoHR^GQ)jdH2Dpe
+Hi8?dIHQ(OIJeKhHfTMNHiAEjIK+crJ,OotJH1<$KE$T)L&Qf-LPYqd!K)g7N!YK(O,oBbP*2#n
+rfn(]Q^F/.R[]e:SXuFFTV8'RU].%mV5C/gW2]cr!NW=$XT>T.ricX4ZEggC['[7?[K<qJ\Gj#?
+]">TR]E,^[rkJKK!5\ZOs2+iTrl#,^a2c9BaiV^)b5oi3rltPjd/ME.daQ[peCE.$f@S[.g"P07
+gYCW@hVR/hhuVfrro4%?jo4BDkNM./klL)8rp9[P!:KjTs7$'Yrpp*\!;-6_s7ZKer:p<frqcNh
+rVZTlo)=4?huA3~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'rgNeTr,qIMn9+2A!-RpU!(QoUpI+jFrLs1arLs%]
+s.TIerLrq/lZVZ>o61#$rgWGHqj[>Ks+9*Ym!o(cpn%AToq;;X!2B1^iK!DeqMb0,pJD1'[^EKL
+Za-n8Yl_/7YkbR'ZMh-0RGF8"QiC1a=oMV(>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<ABE-Zag@pa.
+P5UU?PkgO;OoTY(G5QR`GlE!cHN&9iI.r'PIe8'dI/83NHMi-hI/JEmIfForJH(0#K)UE&KE-`*
+L&m'creUZ5MuJYANK0'\OHG]hPEc'3&XJcNR$jD4S"-%@StD[LTq\=]U]mTlVl-Jmri-""XT#=&
+Y-7i/#I1S?Za7$G[JmT9\%&sI\H9@S]DfGD]tXK\s1eWNrke]Q!6"lU#KFg)aN2KFb5TQbbg$.4
+!RK-ld2(0Ze'umtf%/I)f\+s3g=tB;h;-rEhu;O7iSsjs!T`AAjoX`0kl0fIlKeH9s6TgSrpTmV
+s7-*Zs766_rUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'qG[;Vpce.0r''g=r''O3!(QoUpI+jFohbQ`qG7/h
+r_WS]rC#g9!(?TLpI,!JpHejGp/1ZapJLW^s&8JXogegKqap]Vog]!OrDNJhqGQrapJ_,kr_EGg
+r_E>dpeLWZrCm&^qbHWTpJD&u?!LT<r`]2'rEB,'qcj,,nl,QfgJe,SqH<f$r`f8)ra#M0qd9>1
+raG\5raYq<qdob=s(D7VpJ^$Ms&/o?rc\3`rcnEfqg/6grI"?fkC3&Or-\?fjEg`Nrd=Wls*jut
+rIFp!!.t3&s+CB+re:H/M#N53MMqIm$&st+O-#KeP*;.0PnB=KR$a;1S"#q=St;RITqS3UrhK^o
+VPg>jWW&muX/u<&!NrX*YQqG=ZEpmE['fnA!k5\Lrj`*A]=\'T!PQ5H^]2(L_>_=O_Z7XS`<XE'
+a2l?DaiaV+!R/gfc2l8<rm;M0e'lgre^i='f@\d0g=k<9gtgfChV\=j!TE&;irS6&roO:Fkii$1
+!UB"Mm/QGQmf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,C]2Q[d*^sEkaDL@n!a8GrC-EJqa:ABs5Eb2q;;)+
+k+;=<nXf?Cs4.;&f%&=Ke,[tsdf.Yjchu)gc2>fbbNc2+X8]-gWV3:aeGn(tec=>$f_aA$g&Tn&
+h#H4)^?WK0^AGV@]^rc0;$?L]nac5Kn,i.LnG_tTo)A7XoDm,.bPBB[bOs$Nao'6W=oMV(>P_V(
+?2e1-?iOO5@JaO5A,^$9Ac?<@BDuTBs7aD(_s>2>FoQX^GQ)jdH2DpdHi8?aII_jXIJ\EhHes)J
+HiAEjIK+crJ,OotJH1<$K+rumKnb>;LPUeDMMd=NN/`jYO-#M'OtDl^Q'IZ%R$a;1S"#q=St;RI
+TqS3UUnji`VPg>jWN)u!X/rG*Y-+t4Yd(I=rj)X4[JmW7[fEr;\c95@]DfJC]`>eG^B23e_>_:Q
+_o0Lm`<"!!rlG,]!6Y;a!R/gfc4&%Gd*^7hdaQ^qe^`7Mf)aOWrn7D-h#?+7hV[5Ki8NYSro4%?
+jo4BIkNM-ol0@R"rp9[P!:KjTs7$'Yrpp*\!;-6_s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,C]0_%S*P1fFl%3AF%/Xt7J9.H6i3SUUA^eYUApqY
+GNsAAGOp"VSc>5XS,/TNRfJuVS+iBFK&hLMJGl)2TD>/[U&Uk[UYLn%NV\V/Mt^'K[/RB8ZE^[=
+Yd+,1qm$()rNcQmR@3!#m[*fRr`];*qHX#*ra,J/s'Yh7qdTP7rabn;rau.Brb);brS%".rK@,C
+pltT<q3(c#s*"9`rcnEfqg/3frI"6cnp^.XqgA9fhKo0Jrd=Wls*jutrIFp!!.t3&'SM0oL5(J=
+Ll$tGMMmFPNK0'\OHKO*/X)EaQ'Rc(R$jD4S"-%@StD[LTq\<XUnsobVl-JmWiE,#XKAV-Y-5(6
+Z*CV6ZN7G@rjMj9!4`$=s1/3Brk/9E!5AHI!l2Xgrk\`S`5MYo!QN1ZaT'?^b5TQbbg$.4%+!;I
+dF$Cje'umte^j`O!SH*)g&]s`rnRh9hr!AMiSieqirS6&roOIKkih9qlK[^7m/QGQmf)\TnGi%X
+o)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,CK::2pcdb%r''g=r''a9s$lrUp-edFo2,Hap.tfd
+6:1T;r^>g7r^-NMqaCBMpHnRNo2>TcoMY]Xm7-k@rCHiVr(-BKr_iPhqGR,fpf./is&/hkqG7)e
+pJ:NYoM,3Xo1esV!aJr6rEB,'qc`u'q-3o*oMbQbk>V@Zr)<Jqr`];*qHX#*ra,J/s'Yh7qdTP7
+rabn;rau.Brb27W!.=N>i)K`!s*"9`rcnEfqg/3frI"6cnp^.XqgA9fhKo0Jrd=Wls*jutrIFp!
+!.t3&'SM0oL5(J=Ll$tGMMmFPNK0'\OHKO*/X)EaQ'Rc(R$jD4S"-%@StD[LTq\<XUnsobVl-Jm
+WiE,#XKAV-Y-5(6Z*CV6ZN7G@rjMj9!4`$=s1/3Brk/9E!5AHI!l2Xgrk\`S`5MYo!QN1ZaT'?^
+b5TQbbg$.4%+!;IdF$Cje'umte^j`O!SH*)g&]s`rnRh9hr!AMiSieqirS6&roOIKkih9qlK[^7
+m/QGQmf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.c-H:6o:,]Ko:,6<p7(`DrC6`SpI+mGr8Rb8pu)//
+!9!e4s5)b,p7:rLnXTg9f@SU)rmgtsrmUkp!7C\jqp5;frltDcq5jOsmB$;fri5Rhpo+&=r71et
+s4I2$rn@A+rS78*pV,h*r4_g:qn2j=pe^rerp]dQs7#sVs76-[qt0g1r6+ZTr6+lXo?%$Rr`T5(
+r`f5(ra#M0qd9>1raG_6raYq<qITY<rb).Br;Yrss2"9Cs)n<ar-/-brH\9drHnHigjT'Iqg7p\
+nTjkTrd4Wlr-eTo!.Xrt!eGrTre!CfKnY89LPUbCM2I4MN/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=
+St;RITqS3UUnjiaVPg>jWN)u!XK8P+Y-7i/#I1S?Za7$G[JmT9\%&sI\H9@S]DfGE]tV5[^B23e
+_>_:V_o0L4`Q#p<rlG,]!6Y;a!R/gfcMu2jd/MDndaS3F!S,d#f*Bs]g"P07gYDea!T)`5huVfr
+ro=%>!9O4B!U&\Gl2U#Kli-8Nm/ZSRn,MkWnbr%Yo)SF]p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.R@4#Bj`LKEfQ@']rC-HKqa:1Q!2B=`p7hG.rHS!Z
+m<85JnTOo's./eO!1`\Nq3pu-!.sThrdsutmst8,s.9%YqOmk^rM'"\fT,T`qi(H2pe^re!OB!*
+YQ1m)YlD!*ZMh,eR-^1==oMV(>P_V(?2e1-?iFI4@JjU6A,^$8Ac?<@BDcECg&9XtOnk11PPUIB
+FoHR^GQ)jcH2DpdHi/9HIJ\EhHh2RRH1uXaHiAEjIK+`rJ,Om!JV&LQK0FsBKnb>;LkpnEMMmFP
+NK&sZO-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrcVl-JmWiE,$XKAV-YPta2Z*L[AZa@*I
+rjDm;\@DOK!kQ"Urk&<G^:sT]!l2Xgrk\oX`5KX6`l?'uaT'?^b5TQbbg$.4s3C\lrm:bpe,Iht
+e^j`O#M@__g=k<9h#?+1hV\=j!TE&;j8\0?jo4BCkNMp0s69UMrp9[P!:KjTs6p$YrUU![!;-6_
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_no=3hn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.r`'#!;cETXg-,?tp-8I=qE=dHrC-HKqa9OC!)NJY
+!(6<FqEs^<njE:@nknUKr'fp@q+(ETl::kPq,.#eqc!2f!)r_lrD*5crD<5ao1npPpeL`]pe^re
+qc`r&qc`u'pfmf)pJ^W^mSim[s&8o"r`];*qHX#*ra,J/ra>_6r*oY8rabk:rau.Br+Q"TiD]GL
+s)n<ar-/-brH\9drHnHigjT'Iqg7p\nTjkTrd4Wlr-eTo!.Xrt!eGrTre!CfKnY89LPUbCM2I4M
+N/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3UUnjiaVPg>jWN)u!XK8P+Y-7i/#I1S?Za7$G
+[JmT9\%&sI\H9@S]DfGE]tV5[^B23e_>_:V_o0L4`Q#p<rlG,]!6Y;a!R/gfcMu2jd/MDndaS3F
+!S,d#f*Bs]g"P07gYDea!T)`5huVfrro=%>!9O4B!U&\Gl2U#Kli-8Nm/ZSRn,MkWnbr%Yo)SF]
+p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nosWnn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/bfn>Wcd2EVnsoECpR:H<qjROTrC6`SpI+pHq;MD5
+ro!h8pu),.qk*#BoUY`JpRV>Ss4RP-f[p,Rr71_prmLenq9]/fs3CYhs312<m&g)bs/Z!rr2K^p
+r2K_Gp=08rf@\aRg&Ke(g]-(*h>c=3htFeH^\tn6^&G\;:]OAkmf;eSn,2\Tnc&+YoDA1Abl5f\
+b4NgUaSoBA>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<AC&J"o_Z.IC_>n`XG5HL_Gl;paHMi-f
+I,o_PI/A9`HK]YMHN&9kI/JEmIfFosJ-(:RK)UB'KSBD[!JcL1M(X[DN/WaVO,oBbP*2#nQ'IZ%
+R$a;1S"#q=St;RITqS3UUnjiaVPg>jWN)u!XT#=&Y-7i/!O8s0ZNmkF[C3NQ\%)FJs1/3Brk/9E
+!5AHIs1eWNrke]Q!6"lUs2G&Zrl>/_b0'_,!R/gfcMu2jd/MDndaS3F#M%DVf@S[-g&B\+gYDea
+#N"@qi8ESQir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cHds7uZjqtp?i
+r;H3cJcFX-J,~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_no=3hn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/r0[PR\odsBrC6`SpI+pHqP!n_pn@MXom$(Pm<85J
+olg>+s./tUrL<YRpRD&Kh1>TXqLS0erLa%[pn.DUs.T@bpS6)qoSrj/ohYZdYPta+YPtd*YPbX(
+Z2M!-Zi@>cR.?UDQMt(d>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<AC&H]XOnk19P5pjCPP^LC
+FoHR]GQ)jcH2;jbHi/9PIJS?gHhD^KH22dcHiJKkIK+crJ,Xs"JV&LQK)pXZre:H/M#N5`MMmFP
+NK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU8+N[V5C,fVl6SpWiN6#XT>T.ricF.ZMq08['d<M
+[^W`Urji'?!5&6Cs1JEHrkJKK!5\ZOs2+iTrl+oW!6>)[!m/U-rlY>dc2Q#gcN)>kd/h\ErmV2'
+f%/I)f\"mVg&]s`rnRh9hr!AMiSieqis4Z,jlY^gkNMp0!p]+;rp0^RmdC)Cs6p$YrUL$]o^r+T
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nosWnn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/<)cjt<)h4-q`amArBC*As%!#WrC-HKr'LN^:J^4O
+p-\C=qEs^<njEFDo24mQrDW_oqF0O9rC?iXm77+Qqbd5gqc!>jr)<Gip.kW`s%r5]qG-NSpJ1BX
+!)`\urEK,%s',5&!+#@umSrRPqGdGtrEK/(ra#M0qd9>1raG\5raYq<qdob=rb)(@s(VCXnPf*Y
+r)<>h!-S9aqfi$arH\6cr-S?hjF-lPqg8!^k]uuMrd4Zmr-eTos*t#u!eGrTrdt6)L&Qf-LPYqd
+/rGRGN/`jYO-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrcVl-JmWiE,$riH4(YPta,Z*OA8
+#ILnH[^NZS\Gj&=\cBAA]`5YF^AbnI^];4M_Z.LR`;[aU`W4'Ya9'K+b5TQbbg$.4s3C\lrm:bp
+e,Ii%e^i='f@\a/rn7D-h#?+7hV[5Ki8NYSro47EjlPXekND(.klU/9li-5PmI'EAn,MkWnbr"[
+oCV\Rp&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYHh?q#o'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1bKS2TcMj<rSG8QRRc0_9Rf5hU7f>dM7/]LQj7qX3
+i<&#tiVVO5htE]*T(\`IT(ni_gY1?6f\"g-f%0`Ks3q%trmLbms3U_lrm1_mcHb1HqQ0LnpT"&>
+!nPuTrn.5'rn@A+rS7>,#N"@qi8ESQir6^g^?*--^?iQ*;#g"^melPRnG_tXo)J:^o_&.Ss3:Md
+!6slSrQG#Zp<!9S!*]A+qcs,+ra,J/ra>_6qdTP7rabn;rau.BqIokBrbDE3kJI26oYLTNrHA'^
+rcnBeq0MscqL%[Yq0`'dom6FZnTaqVq0N'frd=Zms*artrI?_UJqAW-KS5&6L51P?M2@+JN/WaV
+NfT6_OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiarhfpuWN)u!XT#=+Y-5(6Z*CV6ZN7G@rjDm;
+\@DOK!kQ"Urk&<G^:sT]!l2Xgrk\`S`5MYo!li:$rl>/_b0'_,#L(H;cHab^d/MDtdaQ[peCE+#
+rmq2'g&B_*gAp%.h#ZBirnn%?io9"YjQ,G%joX`0kl0fJlKdd8liQSBmf)\Tn,W"WncJFTo_nI_
+pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1r0dP,]QF-CrC6`SpI+sIs.]@`rhB1]r1X18np'_L
+n94GJpicV-s./\Mp7(uKd=Lk=rLa(\qOd_Zr1Wt]qkO+crf>EdoSrK>!O&a+Y5ka(YPtd(Z2_-/
+Zi.3'QiNK5R.lsHQ2k+f>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<@C&VlGg@UO&P4=b6OoTY'
+G5HL_Gl;p`HMi-dI-l@XI/A9`HMMjVGl)d^HN/?kI/SKnIK4lrJ2Dh/JqJ]/KS>/8LPL\BM2I4M
+N/`jXO,oBbP*2#nQ'IZ%R$jD4S"-%@StD[LTq\<XUnssfVZj#uWiE,$riHC-YHY79Z*OA8!OT96
+[K<qJ\Gj#?]">TR]E5d\^AbkK^qmkd_?.Wn`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:u!e'lgr
+e^`7Mf)aOWrn@D,!8RS0!T)`5i!86#ioB([jQ6C'!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'V
+rUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYHh?q#o'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1;cH^r<Q[Ju55RMB8,YpU7JB4K6hjIW:]O;_:tnA+
+6M!S:;=7?Z;sd$S8,YpM7fZ$B8,Z?a;>X8g;uTbi;u9Jc:@1jR:@1dQ:@q?_>Q.h*>P_P'>Pqb+
+?2e(0?!d2&nPndPrDWc#r`f8)ra#M0qd9>1raG\5raYq<qdob=rb)(@rb;@H"+,??Hgao+;Z0Ph
+;uh(>G5HL_Gl;p`HMi-dI-l@XI/A9`HMMjVGl)d^HN/?kI/SKnIK4lrJ2Dh/JqJ]/KS>/8LPL\B
+M2I4MN/`jXO,oBbP*2#nQ'IZ%R$jD4S"-%@StD[LTq\<XUnssfVZj#uWiE,$riHC-YHY79Z*OA8
+!OT96[K<qJ\Gj#?]">TR]E5d\^AbkK^qmkd_?.Wn`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:u!
+e'lgre^`7Mf)aOWrn@D,!8RS0!T)`5i!86#ioB([jQ6C'!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y
+!qZ'VrUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CU.o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D9L,Hbh\fFS,>eT7f>dN7/]LOj7hO5j8J!;iV_X&
+TBr0HSaE$HSc@IJgY1B6f`'M%f)F5"eGn"tde(reciDDFXno-hX8UWLeH4=RfDXD$g&Tn)h#?+8
+hV[5Ki8NYSir7s<jOq<D^@Ao-;#]n_mJZJPn,MnWnH&4Prq-0^s7H<8rm(Gdo$$jOr6"iWqoAbA
+qcs,+ra,J/ra>_6qdTP7rabn;rau+Aqe5qBrbDFJrr;,trPA0Ds)n<aqKMp`rH\0aqg7IQqKqm]
+qK_:LrH\9drd4ZmrI+]ps*t#u$\<n]K7ei2Knb>;M#N5VMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7
+S=Q7CTV8'RUSO]^VZ*J2W2ZesX/rG*Y-+t4Yd(L>Za7$H[C3NQ\%)FJs1/3Brk/9E!5AHIs1eWN
+rke]Qs2=oU!li:$rl>/_b0'_,#L(H;cHab^d/MDodaQ\Ee,e+Nrmq5(g"HAY!ScE/h#cHjhu;O7
+iSsjs!p&J)roOIKkih9qlK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk+,
+s*t~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CI*o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D>fn"Fh`%r8,YpU7JK:L6iEbWU&1S[U&UheU&9-,
+Gg^g6G5e*0Sa`0FS,Sl&Jb4KkTDtM\TDYA]U%Y2\U\pqdV=ou3Nqe\5NqSJ';#[ZqXoP[(YlD!.
+ZMq01ZMq31ZLsU`QfFJ.QN17e>lJ%.?Me+/@/aU3@fBm:AG]s;B)QB>B`2ZECAr#Jg@UO%P4Xt7
+P5f\(G5?F^Gl;p_HM`'OI/83_HMVpNGl;pbHN&9kI/SKnIfFosJ.$p[JqJ]/KnY89LPYqd,`7M=
+N/`jYO-#KeP*;,qQ'Rc(R$jD4S"-%@StMdNU8+N[V5F6i)5sO7WiN5'Xfeh1YctC<ZEpmE[C*HO
+\$rmH\c95@]DfJC]`>eG^]2(L_>_=O_uI[S`<+'"a8X-]ai_d*b6Q89c-FV\cd;[=!n,QHrmUu!
+f)F8&f\+sWg&]s`rnRY4hr"Fk!TE&;ir\<'jo4BIkNM-ol0@R"rp9[Ps6fmT!q>aMrpp*\s7H9_
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CU.o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D,XA4<5h#s55[SA8,YpU7JK:L6h=+H:sMH'6MEk=
+;<_!E7f5dM8GbpL7f,^S;Z9Pl;X.3\;Z0P]:Adod:B"&Z:A.E[:@_6\>5MP(>5_\)>l7n+?L^tg
+<9R9Z;ug/">lJ%.?Me+/@/aU3@fBm:AG]s;B)QB>B`2ZECAr#KH2r<\;tNu_;uTbrFoHR\GQ)jc
+H2)^_Hff_PHhD^]H0BMOH2DpeHiJKlIK+crJ,Xs+JV&K+K7nr4L5(J>reVnXMi<USNfT6_Ocklk
+Pa.N"Q^F/.R[]e:SXuFGTqS3UUnjiarhgX4WN)u!XKAV-Y-5(6Z*L[AZa@-J[^NZS\Gj&=\cBAA
+]`5YF^AbnI^];4M_Z.OR`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:eqe'n<G!S,d#f)jUXg&B\+
+gYDea!oDhlrnmh9ir7s>jQ5M&jp1)5kiq?slKeH9s6]jSrpKpXnaZVLs7?9_rUp3as7cHds7uZj
+qtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbHh?q$o()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7b0%oNbiG;mSbel?S,8`P8,c!V7JB4L6i5p7irA!;
+i9-a&T)"rESdCtEh;-l@g=b03rn%2$s4./!s3q"ro[3]c!709!m]?Dgr71o#f`'S(gATe(h#H17
+hr*GOiSrkqj8S*>jk%9?^@o81;#BYYmKE"Jnac;Mo`"O^oDm/2cMYrXbl#Z\b5BBWaSfBC?2e1-
+?iFI4@JaO5A,^$9Ac66?BDQ<@C&MfDC]=@r_Yh7D_>n`XG5?F]Gl;p^HMMpVI//-]HM`!aGjoqS
+Gl;pbHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[22@!EM2I4MN/`gWO,oBbP*;,qQ'Rc(R$jD4S"-%@
+StD[LTq\<XUnsrdVl6SpWiN5'Xfel,YQ;#7rj)X4[JmT9\%&sI\H0:Rrk/9E!5AEH!l2Xgrk\`S
+`5MYos2G&ZrlG,]!6Y;as3(Jfrm(Pi!7:_ms3^nrrmV2'f%/I)f\"mVg'?BfgtgfChV\=j!o`.u
+ro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+ZoDeI]p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbHh?q$o()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7Q^=)-RJ:plFS9k@FSg4W8,c!V7JB4L6i3SXU%tGW
+U%`d(GgU^8G5Im1SaN$ES,Sl$Jb=QiTDYA[U&(M_U].(fV>[:YO7\J0NrY43O8b18NU]j@Y5b[.
+Yd(I=ZMq30Z2h60ZLjO\QfOP2Qi11g?2e1-?iFI4@JaO5A,^$9Ac66?BDQ<@C&MfDC]<&[OnY%2
+PPUFBFoHR\GPudbH1uX\Hgc@XHh;X]H2;dTGPcX`H2DpfHiJKlIK+`rJ,XuuJH1<$K)pXZre<:c
+Ll$tGMi<USNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8
+!OT96[K<qJ\Gj#>]"@sSs1JEHrP&EL_86,f!lMsprl+oW!6>)[s2b8`rlb>c!6tMgs3C\lrmCbo
+!7Uqs#M%DVf@S[-g&B\1gYCT?h;7#Grnmk:io9st!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%X
+o)J=]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7rDN\qj?<3#kWSf,qFCNSrC-HKr^-Z^nPAsWb<tti
+qa9mNlVct:qa^BOr($0EpJU*OgJ.`EmnWgUrD)lZs'#)"!*oG-qd/YgrD_fU!*&o%ra#M0qd9>1
+raG\5raYq<qdo_<rb)(@rb;=GqeQ4X!.405o2>B_r_rl?rc\-^rHS9dpNlX^msOqXoQpC[qKVLR
+qfr'bqg/9hs*Xcns*artrdb$"!.t3&!JH1+L,FaBM2@+JN/WaUNfT6_OckomQ'IZ%R$a;1S"#q=
+St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricF.ZMq02['fnA!k5\Lrj`'@]DfJC]`>eF^B23e_>_:Q
+_o0Lm`W*pXa8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVpe,Ii%e^i='f@\a/rn7V3gt^`AhVR/hhu_ls
+ir7s=jQ6C's5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rUp3as7cHds7uZjqtp?ir;H3cJcFX-
+J,~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no=3hn*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:rQ<ues.0(Xn!j$@s%)uVr^QiTpI,$Kq;_J6rT!\4
+ih-";!2&8Bs53k4s4d\1g=lPYrn%2#s3q,!daId8s3UMBrN>suordtim]?H?s4I>(rn7A,r7q>.
+s5!n9i8ESQro3k9roF+@d_GUlpV$)ns6TgQr9XXTn*ol<qt'm]qt0m6pWi]]o$%$Tr6"u[q8iS@
+ra#M0qd9>1s'be6raYq<qITY<rb)(@rb;=GqJ6+Irr;,trPA0D!-S6`qKMm_rH\'^k'Q`Hqg&$_
+l$*)NrH\<es*OcnrI+]p!.Xuus+(0%re!4aKnb>;LPUeDMMmFPNK0'\OHG]hPE_>tQC!u,R[]e:
+SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta1Z*L^B['[7?[K3kIrj`*A]=\'T!kl=^rkJKK!5\ZO
+s24lTrl"rYa2e2#s2b8`rlb>c!6tMgs3C\lrmCbo!7Uqs!nGlQrmq2'g&B_*gAp%.h$;fohr*GO
+iSsjss5X1AroO:Fkii$1!p]+;rp0^RmdC)Cs7$'Yrpp*\s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?
+huA3~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_noF9in*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:R/WHEFmF/GFmjGGFoP#/8,c!V7JB4M6h[8QU]7(b
+U$-aLGQ4<3T)5)QSG/NQR`^3UJH)8>T_P5YUA^kdV#."gVZ3RTO8P%7O8G%7O8Ft9NU]jFY5PL&
+Xotr4Yd(J3ZhUj*RJ*$CQfFJ5QiC=i?2e1-?iFI5@JaO5A,^$8Ac?<@BDQ<@C&MfCC]A5Mg&R</
+OnY%0PPgRDFo?L[GPudbH1cLGHh;X]H2;dMGPudbH2N!gHiJKlIK+`rJ,XuuJH1<$K/nU=L5(J=
+Ll$tGMi<USNfT6_OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricU3ZEpmE
+['fnA!OoT<\H9@S]DfGE]tV5[^]2(L_>_=O_uI[S`<+'"a8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVp
+e,Ihue^i=Nf)aOWrn@D,!8RS0#N"@qi8ESQir8!<j8e<@joX`0kl0fJlKdd8liQSBmf)\TnGi%X
+o)J=]o_nI_pAamcq#:*gqYU0gr;?Nardk+,s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_noaKln*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:<)cdphEC^!mlgA.s%)uVr^QiTpI,$K"Aqul:J^sd
+p.tT_fgG<sr^6?Fs$Q?SlVcq9kst85ohtTarD`AefM;<>mnWCLs'#,#s'5P/q-O&"bu=XIra#M0
+qd9>1s'be6raYq<qITY<rb)(@rb;=GqJ6+I!df6>mo/dTpeq2mFo?L[GPudbH1cLGHh;X]H2;dM
+GPudbH2N!gHiJKlIK+`rJ,XuuJH1<$K/nU=L5(J=Ll$tGMi<USNfT6_OcklkPa.N"Q^F20S"#q=
+St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricU3ZEpmE['fnA!OoT<\H9@S]DfGE]tV5[^]2(L_>_=O
+_uI[S`<+'"a8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVpe,Ihue^i=Nf)aOWrn@D,!8RS0#N"@qi8ESQ
+ir8!<j8e<@joX`0kl0fJlKdd8liQSBmf)\TnGi%Xo)J=]o_nI_pAamcq#:*gqYU0gr;?Nardk+,
+s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);rlX]"s./>Cn=06D!(m/\qFCNSrC-HK!(658qr62!
+j.6V:i8EMLh;$c>g"HAW#1qGWe^W'rqpG5f!7CYFriZ:'ordqjpoaLro;qrFrnID,s5!_3rnm_5
+s5<t;r8[e;"m+n/kND'O^\GM2;#KY_mI'H4nbr(Ro`+U]chG`bc10$VbP]N]ao'6[a8]HE?Me+/
+@/aU4@fBm:AGTm:B)ZH>B`;`ECADZDC]J>Os4>-fFoHR[GPl^aH1Q@MHh2R\H2DjIGPudcH2N!f
+HiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reWgrMi<USNfT6_OckomQ'IZ%R$a;1S"#t?StD[LTq\<X
+UnsrdVl6SpWiN5'Xfek3Yd(I=Za7$H[C3NQ\%)FJ!P5oB]`5YF^AbnI_#M7M_?.Wn`;[aU`W4'X
+a9'K+b5TQcbg"E3cMu2jd/MGmdK%bqe,n1Of)F8+f\+s3g=tB;rn[V2!8me6!o`.uro47EjlPXe
+kND(.l2U#Kli$/OmI'EAn,MkWnbr%YoDeI^p&=[bp\jmdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);rg<4us)e9`eo^_1!(m/\qFCNSrC-HK!(6@PrM0Ce
+rLr=te9:ncqk*n[p7;/Ppm_;R!1V#[q1/45rhBCe!i2TdrhTOirhf[m!2f^m!3"P2o8rg/s,HJD
+rN6+&"0\r6Z21d+Z2Cp-Zhp0dR.Zg-R/^Ik?Me+/@/aU4@fBm:AGTm:B)ZH>B`;`ECADZDC]J>O
+g@UO%P4Fh8P5f\(G56@[Gl;pZHL?.OHM`!bGiX)IGlE!dHN&9kI/\QoIK4lsJH(0,JqJ]/KS>/8
+LPYqd5)P8WN/`jYO-#KePE_>tQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHY79Z*L^B
+['d<M[^W`Urj`'@]DfJC]`>eG^]2+L_>_:Q_o0Lm`W*pXa8O'\ai_d*b6#o4c2Q#gcN)>kdJqVp
+e,Ihue^i=Nf*Bs]g"P07gYDeas5!b5rnmk:io9st#NY".k2tjikl0iHl2^/KliQSBmf)\Tn,W"W
+o)J=]o`"O_pAamcq#:*gqYU0gr;?Nardk+,s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);r`&>Ls$#!sq*"dMr^clUr^QiTpI#!Kr_`Ph!`;cj
+pJ:fcj?rN*p-JUC!(6BFr_i>bpJUfc!)hoJkst>7pJUleqGd&bfM;9=nP8OLs',A(s',G,!+#M/
+rE]G0qc(sAs'>V1qd9>1raG_6raYq<qITY<rb)(@rb;=Gq.oqF")W@1Hgao(;YX2jFoHR[GPl^a
+H1Q@MHh2R\H2DjIGPudcH2N!fHiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reWgrMi<USNfT6_Ockom
+Q'IZ%R$a;1S"#t?StD[LTq\<XUnsrdVl6SpWiN5'Xfek3Yd(I=Za7$H[C3NQ\%)FJ!P5oB]`5YF
+^AbnI_#M7M_?.Wn`;[aU`W4'Xa9'K+b5TQcbg"E3cMu2jd/MGmdK%bqe,n1Of)F8+f\+s3g=tB;
+rn[V2!8me6!o`.uro47EjlPXekND(.l2U#Kli$/OmI'EAn,MkWnbr%YoDeI^p&=[bp\jmdq>U6f
+qu-HjrUTr=s53j,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO^lm-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GAao9H]SGA`UT(\`>SG/NHSGl+Z8GbpU7f>dN6ioa8
+ipYq,iqoA;T'DsFT)YAKT)[gMi<nN#hVI#BgY1?6f_sD'f%&:Le+V5]Y4]!oYk#!qY5PKuX8q#Q
+h#?.0hYuF4i;V[8ir8!;jSn9@k5OTDl,pd9^@>&!;?#nemI'H4o()DDqt'm]rq-0^pWrc_r6=iW
+r6,&]qT8]Ws'GS0ra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL!cJ&<f"qE0rHA!\r-8-bf6[=>
+qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*R@9V7
+S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC['fnA!OoT<\c95@]DfGE]tV5[^B23e_>_=O
+_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVpe,IkseH"2"f)jUXg&B\,gYCT`h#ZBiro!h8
+!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aMrUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTlo)=4?
+huA3~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO[km-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GArKuekhfSR7r^m)[qa^TSrC-KL!^iZTo:l5Z!2BId
+ics@)piue3#G@]]TV%jJT(nlUSG/NPSEGIcK)1&qJGl2@UA^kdV#."fVYR.fVuWgHO8"b4O8k71
+;#X>lXTkr3YHY79Z1YF$Zh^$cR.?U.R/^Li?iFI4@JaO5A,^$9Ac?<@BDQ<@C&MfBC]/)JD$+\0
+g62,kpQG97!0mDFrK7/'rHA!\r-8-bf6[=>qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7
+L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*R@9V7S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC
+['fnA!OoT<\c95@]DfGE]tV5[^B23e_>_=O_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVp
+e,IkseH"2"f)jUXg&B\,gYCT`h#ZBiro!h8!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aM
+rUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTlo)=4?huA3~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO[km-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GArD`GQoKM.qp-/IIr^coVrC6`Spd>0N:f.-gs%rVj
+s%rJdr^,U3r'Kd:nj<1NpJL]`!`MupqGZQHiCE]5peq#gq,Ho`e5#s<nkS^Or_`Sss',A*!+#P0
+r*B>/pJf[As'GS0ra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL!cE=0mo/dTpJV'7rHA!\r-8-b
+f6[=>qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*
+R@9V7S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC['fnA!OoT<\c95@]DfGE]tV5[^B23e
+_>_=O_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVpe,IkseH"2"f)jUXg&B\,gYCT`h#ZBi
+ro!h8!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aMrUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTl
+o)=4?huA3~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbH1^_"o()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBaiV^'SG\rPT)5)ASH#)RSGA]U9)_E]8GbpU7fGjN
+7/c-5irG_7T(elHT)G5ST)>,Z62omBiW%d=hVHuBg=lPZs4IA'"kM5ReC2nCdf$BLY3N4eYjnpp
+Y5>@!XT.,UhZ)L4i;_d8iW/$;jSn9?k5XWEkQ'lHlMp1u^\bbE^\PV6;#X;tm-X60nF?)@oD/%S
+p%6Q1cM5ZWbl#Z_b4s'YaS]EE@/aU3@fBm:AG]s;B)ZH>B`;`ECADZDD#J5KD?0_(_YqC?_>n`W
+G5-:ZGl)dBHMVpbGk-(NG4p.ZGlE!eHN/?lI/\QoIK4lsJ-LRVJqJ]/L&QfgLPUeDMMmFPNK0'\
+OHG]iPa.N"Q^F/.S"#q=St;RITqS6WUnsrdVl6SpWiN5'Xfek3Yd(L>Za7$HrjDj:\Gj#>]"@sS
+s1JEHrkJKK!5\WN!lMsprl+oW!6>&Z!m/U-rlb>c!6tJf!mf6?rm:eqe'n<Gs4%,#rn%2&!87A*
+!o)McrnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cHd
+rqZTjqYU6hr;H3cJcFX-J,~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBrg<G&rH@jVmWA;Js)e$Yq/ua1r^m)[qa^TSr^HQL
+rLrYRi-=I0pildar-/3-rLs+]rh'1]qORAMs.&/$k(<G\r."dArhKIgpn[tfpo"(hrMfgsb`Dab
+qMtW:nPK3^"Kei1YH\#2p9O_*rNl9eqj?i=m$R]Xra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL
+r,)PhP4Xn2P4Fh8OoTY'G5-:ZGl)dBHMVpbGk-(NG4p.ZGlE!eHN/?lI/\QoIK4lsJ-LRVJqJ]/
+L&QfgLPUeDMMmFPNK0'\OHG]iPa.N"Q^F/.S"#q=St;RITqS6WUnsrdVl6SpWiN5'Xfek3Yd(L>
+Za7$HrjDj:\Gj#>]"@sSs1JEHrkJKK!5\WN!lMsprl+oW!6>&Z!m/U-rlb>c!6tJf!mf6?rm:eq
+e'n<Gs4%,#rn%2&!87A*!o)McrnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+Q:s6TgSrpTmV
+s7-*Zs7?9_rUp3as7cHdrqZTjqYU6hr;H3cJcFX-J,~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBr`&VTlosr&r'(-DpceL<!)!5^r^coVrC6cTpI,$W
+s%rDds%rVh!`20Kr'K^:oKrC?pd4dD!CB0O63'=G;Yj8d;?0Yj;WL=)8,PjV;Ya8c<:No':@V0[
+;?'i">Ph\(?2n7->le8=oMjIAr*TG2raG\5raYq<qdob=rb)(@rb;=Gq.oqFrGDIM!."!2nl#6]
+!-S6`pilX\qg%"DqK`!`nos_Lp36L\rd"Hgs*OcnrdFfq!.Xuu#(_AXK7ei2re<LiLl$tGMi<US
+NfT6_OckomQ'IZ%R$a;2S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*L[AZa@.>[K3kIrj`'@
+]DfJC]`>eG^]2(L_>V4P_o0Lm`W*pXa8O'\ai_d*bQ#cdc2Gohcd:&<d/qbFe,IkseH"2"fDjJ'
+g&B\,gYCT`h#cHjhu;O8iSrkrir\<'jo4BDkNM./klU/9li-8Nm/ZSRn,MnWnc&+ZoDeI]p&Fac
+p\agcq>^<fqu-HjrUTr=s53j,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSEaiX=JoUc#PoUPTDr1*eVoUYtRr^m,\qFCNSrC-KL
+qr7/+rL`2CpRguInt#eHr8Rk<iSjdos5"CEgtUQ:g"G$1f@SU)e^W'sdaS3D!O&['YN2qbYOSdm
+Xo>F%hu)C8iSrkWj8A!<jo=KBkPjZHl0@R4li6>!^[]&0;#=)nmdKZ8o(2VJqXjj\pWr]]r6=iW
+r6+u[qT8_Ds'Yh7qdTP7rabn;rau.BqIokBrG).DrG;FLq/664n\Y.?mD8jGrH@s[qfr!`id1HH
+qfqaWmWSALrcnEfrHeKjs*Xfos*artrdY$#K)UB`KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.
+R[]e:St;RITqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZO=.J[^NZS\@K/]]"@sS!kl=^rkANM_86,f
+s2+iTrl+oWs2Y,[s2b8`rQ>8dc-?75s3L_lrm:eqe'n<Gs4%,#rn%2&!87A*s4[P/rn[V2!8me6
+s5<t;ro=%>!9O4Bs5sCGrosIJ!:0UM!q#FDrpTmVs7-*Zs7?9_rUp3as7cHdrqZTjqYU6hrVc9c
+JcFX-J,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSER$dYkqKDUUoQ9MDoQL4+r^m,\qFCNSrC-KLqk<PS
+!-e-]pNc.NpNPtKs$?RW!297^rgs1^qORGP!h5^M^k)K8s.oCcr20FjqPaCmr2RSoo2,<]s02F+
+pp0q+s0Vd3!4)?eqO$f>m$RcZs'Yh7qdTP7rabn;rau.BqIokBrG).DrG;FLq/65d!0[#;pQG97
+!0mDFrK7/'rH@s[qfr!`id1HHqfqaWmWSALrcnEfrHeKjs*Xfos*artrdY$#K)UB`KS>/8LPUeD
+MMmFPNK0'\OHG]hPE_>tQ^F/.R[]e:St;RITqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZO=.J[^NZS
+\@K/]]"@sS!kl=^rkANM_86,fs2+iTrl+oWs2Y,[s2b8`rQ>8dc-?75s3L_lrm:eqe'n<Gs4%,#
+rn%2&!87A*s4[P/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrosIJ!:0UM!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHdrqZTjqYU6hrVc9cJcFX-J,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSE<)iWUjZ`2tr''a;r_!/]s%)uVr^QiTpdG*Wr_W;c
+s%r_k!Dl&Z62O">6g[5<61@8?6N9@.;TM?'8,c!P;u]hs;u0Ja;o)6#;#=,d>l@q.>k_P(?M@FL
+;uU/(@/aU3@fBm:AG]s;B)ZH>B`;`ECADZDD#J5HDZ>"N;t<i\;ZLt=G5-:YGl)dGHMVpaGk?4J
+G5-:\GlE!eHN/?lI/\QoIK4lsJ,t4Qre!7bKnb>;Ll$tGMi<USNfT6_OcklkPa.N#R$a;1S"#q>
+StD[LTq\<XUo(&fW2ZesX/rG*Y-5(6Z*OA8$ad=M[^W`U\[f;_]DfGE]tV5[^B23e_>_=O_Z7XS
+`W*sXa8X0[aT0K^b6#o4c2Q#gci;Akd/qbFe,IkseH"2"fDjJ'g&B_*gAp%.h>c=3hu;R6i;hm:
+j8\0?jo4EBk5a`Fl2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]p&Facp\agcq>^<fqu-HkrUKl<s53j,~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(anhP*Sb\lRSar<BS,SoXS,SrSSbu+Z8cD9X8,c!V
+7JT@MiVhd6j8\-8j8,D1T(S`IT(SZQ62]gBir@sAi8<DJgt^Z_gAfe*fDaA#eH47Le+^',YktWp
+Y5YR$XS^oYiSrkWj8A!=k5=EAkl0lGlN$;Nm/Y!#^t-9l^@G+s;$HIZo()DDq=ORWrq-$4q9Jo_
+n]^sTpWEKWra>_6r*oY8rabn;rau.BqIokBrG)1Er+u=KpMU"L!<;Z-pVZF9!-S3_pNQO[q0D4N
+q0Dj^oQU"PrH7jXqKMp`s*=Qhs*OcnrdFfq!.Xuu!J,k%K/nU=L5(J>M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7CT:qsQUSO]^VPgAlWiE,$Xf\b0YctC<rj*0C[C3NQ\@B)[]">Se]Y2"mrkJKK
+!5\ZOs24lTrl"rYa2e2#s2k;`rlb>cs3:Pgs3C\lrQt\pe'n<G!nGlQrn%2&!87A*s4[P/rn[V2
+!8me6s5<t;rSmt?jlQL(!pAe2rojLLlg+Q:s6]jSrpTmV!:g$Ys7?9_rUp3as7cHds7uZjqYU6h
+rVc9cJcFX-J,~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(R/1t"G5$.MFR4/HG5Ou38cD9X8,c!V7JT@IU&:Yb
+U&(MSGjp"YGkH@FGl9r+U\gb`TE(V[T)"rWSA0XTJG,i;V?!OiW;<LlWW8.WO8=maO7H-D;>[Wo
+ZMV!.Z2h0*RIlm@Qg0t;@/aU4@fBm:AG]s;B)ZH>B`;`ECAM`DD#J5FDZ=VUg62)jpQG*2rK7/'
+r-%gYr-8$_l$E/NqfqaWp3-CWpNHCWrcnHgrHeKjs*Xfos*artrdY$#K)UB_KS>/8LPUeDMMmFP
+NK0'\OHG]hPa.N"Q^F/.S"#q=St;RJTq\<XUnsrdW2ZesX/rG*Y-5(6Z*OA8&@AjR[^WcV\[f;`
+]=bei]tXK\s1eWNrke]Qs2=oU!li:$rlG,]s2t>as31Mfrm(Pi!7:\l!n,QHrmV#"f%0iPs4@>)
+rn@D,!8RS0s5!b5ro!h8!93t;!p&J)roO:Fkii$1!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKe
+r:p<frqcKgrVZWmnc"+>huA3~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(<;Jc754Lf655IMA9)_E]8GbpV7f>dO7/9[Q;>sDd
+62X(>6g-l,6iB=.;Y3H07J0+M;u9Ji;uK\`;o2<#;#4#h?2.[u?2n7,<7=eF@/aU4@fBm:AG]s;
+B)ZH>B`;`ECAM`DD#J5FDZ=VTH1"W%;YX/jFo6FWGPl^]H0KYNH2DjYGP64YFn^(UGQ)jeH2W'h
+HiJKmIK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5sQC!u+R@B\9SXuFFTqS3UUnjia
+Vl6SpWiN5'Xfek3Yd(M5ZOjLO[^NZT\@K/]]=Y_g]tM/Z^]2(L_>_=O_uI[S`<+'"a8X0[aoBN_
+bQ#fdc2Q#gcN)>jd/qbFe,Ihue^i=NfDjJ'g&B_*gAp%.h>c=3hu;R6i;hm9ir\<'jo4BDkNM./
+klU/9li-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agdq>U6equ-HkrUKl<s53j,~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%iJanqV&Sc55WSa2gDS+)sJ9DhE]8cM?X8,c!V7J]CR
+hr*GliVhd9j87j8j7f2@T&H=/T)YA[62TaBj8\-<i<J5thqm2Fh#6"-g&BV,f@JNVYP,3cZ2:d&
+YO\jpXo>C%i;V^8ir.s7k5OQDkl9oHlhp,Km/Y$$_>(h&^\#84;#4&h;ZH7go(2JJo_nI_o`"I[
+chPccchu&gc1&sRbPTH]ao5`G@fBm;AG]s;B)ZH>B`;`ECAM`ED#A/EDZ"DRE<#RIpVZgDrknQK
+!-S3_p36@XpNc@VpNcX\olp4TnoaePqfi$as*=Qhs*Ocnrd>0'It*!!JUrE*K7nsXL,=[AM2@+J
+N/WaWO-#KeP*;,qQ'[l*R@9V8SXuFFTV8*TUnjiaVl-JmWiN5'Xfek3Yd(M5ZN[_D[^NZTrj`'@
+]DfGE]tV5[^B23e_>_:Q_o0Lm`W*pXa8O*ZaT0K^b6#o4c2Q#gci;AkdJqVpe,@bte^i=NfDjJ'
+g&B_*gAp%-h#cHjhu;O8iSrkrir\<'jo4EBk5a`Fl2U&Kli-5PmI'EAn,MnWnbr"[oCV\Rp&=[b
+p\agdq>U6equ-HkrUTr=s5*d+~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%hnR/;$uG5$.KFQmrJ9DhE]8cM?X8,c!V7J]FHU&Uka
+U&Le]GkZLYHKoeCGlN!d5ldb[U]@1fUA^ecT_Y5UT"KUSJG5o:Vu!@fWW&mtOSFn/NnKKc;#4&h
+;Z!a!ZMq01ZMq05ZEpmCZMq-,RI-C@Qfjb8@JaO5A,g*:Ac?<@BDQ<@C&MfCC]/)ID>.rGDZXn3
+P4at3P51=@Pl-aEOoTY&G4p.VGkZLTHM;^^GkH:VG4KePG5HL_GlN'fHN/?lI/\O%IXcitJ:W9'
+K7ei2re<7bLl$tGMi<USO,oBbP*2#nQ'I]'R$jD4S=Q7CT:hmPUSO]^VPg>jWN*##Xf\b0YctC<
+rj)d8[C3NQ\Gj#>]"@sS!kl=^rkANM_86,f!lMsprl+oW!6>&Zs2b8`rQ>8dc-?75s3L_lrmCbo
+!7Unr!nGlQrn%2&!87A*s4[P/rS7P3hr"Fk!o`.uro4(@jlQL(s5sCGrosIJs6K[N!q#FDrpTmV
+s7-'Y!qZ'VrUp0`s7cHds7uZjqYU6hrVc<dJcFU,J,~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%h*<;Si155@A556":R9)_E^8GYjU7f>dP6i^*Z;"dcW
+62a+M6hWqG6g-l26iTLO62a^_<)`!Ys&8qdo1%h1njN1?qbm;i!*&8_!)LL-oMGB]s&/Srp0I])
+r)EGi!*%ZNraG\5raYt=qdob=rb)(@rb;=GqJ6%Gr,)1Gr,2UTHLFf);YF#hFo6FVGPZRYH1Q@V
+H2DjZGPQFQFo$:YGQ)jeH2W'hHiJKmI1(LRIt3'#JV&N,KSBD[1l$mDM2I4MN/`mZOHG]hPE_>t
+Q^F/.R[]h<St;RITq\<XUnsrdVl6SpX/rG*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&<G^:sT]!l2Xg
+rk\`S`5MYos2G&ZrQ,#\!6Y8`!mJp6rm(Pis3Ubms3^nrrR:o!f%0iPs4@>)rn@D,!8RP/!oDhl
+rnmk:io9st!p&J)roX7D!9jFHs6BXMrp0^RmdC)Cs7$'YrUL$]o^r+Trq?Bdr:p<frqcKgrVZWm
+o)=4?hZ&*~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS,Nao%\#SH,2XS`H=8SbnrW9`Ic`9)_E^8GYjU7f>dQ
+6ic-AhuMa/iW/$3T)bJ1TD"lS63$!?jT"9?iWA)si;VU6hYu@2h#H./gAfh(Yhu__Yl(]pY5PI&
+XT%8YjT"?>k5FKCkQL/8lKdd5m/HDP_Xt\>^u`?(^@b>";>a;lo)A7Zo_nF_o`"Leo^h\FoCDn,
+m`tgVo?@!Q!6Y5]qdTP7rabn;rau.Bqe5tCrG)1ErG;CKphotIr,D8EpVZsHqnr3G!-S3_p36=W
+jE^THolp7Ului5Lqfi'brd"Hg!df<Brd@FgIt*!!JUrE*K7nr5L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u,R[]e:SXuIHTqS3UUnsrdVl6SpWiN8(Y-5(6Z*L^B['[6L[^WdG\H0:Rrk&9F^AbnI^];4M
+_Z.LR`;[aU`rF*YaT'B^b5TTabl>recMu2jd/DAldK%bpe,n1Of)F;$fDsV'g&g$ah#?+2hV[5i
+i;_a9ir8!<j8e<?joX`0kl0iHl2^/Lm/QJQmf)\TnGi%Xo)J=]o_nI_pAXgbq#:*gqYU0gr;?Na
+rdk++s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS+rR/D*uG4]qLFRjSQG5HF^9`Ic`9)_E^8GYjU7f>dQ
+7.$ZLU3LqVH16.?H1cF[62[SXV#R1iUALY\T`:Y]T(moUJc;MCVYm@eW;3CqWiN1^OS=h&NoH,m
+;#=,f;Z*d$ZEpn9Zim_@ZEpk7Z2U0:R/:@lA,^$9Ac?<@BDZBAC&MfCC]/)ID>8#GDu=PSP4Xn2
+P5UUAPl-aDOoTY&G4p.UGiX/HGkH:WG3jALG5HL`GlE!eH3/G@I/\OeIXcitJ:W9'K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V7S=Q7DTV8'RUSO``Vl-JmWiE,%Xfek3Yd(L?Za@*I[^NZT
+rj`'@]DfGD]tXK\s1eWNrke]Q!6"lUs2P)ZrlG,]s2t>as31Mfrm(Pi!7:\ls3^nrrR:o!f%0iP
+s4@>)rRq>-gt_nb!oDhlro!h8!94"<s5X1ArT41Ekii$1s69UMrp9[Ps6fmTs7$'Yrpp*\s7H9_
+s7ZHdrV6BfrqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS+.<;\oA55[Y155d_C56"=V9DhE]8cM?X8,c!V7JfLP
+;><u_;=m0P6Mj.E7/TF16Ms.G<;]\_;ZB\b7c[#/7/04E;uTb`;u]YT:B!uI:A%H\;>a>f>lS+0
+?MRk-?=3\2c;XULraYq<qdob=rb)+Arb;=GqJ6%Gr,)4HqeuCOmSimYnl#O2r-%dXq0:tGqKV[W
+qKD4Jr-%s]s*4NgrH\NlI!kpA97DA?J:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4
+S"-%@T:hmOU8+N\VPg>jWN)u!Xf\b0YctC<Za7$G[C3NQ\Gj#>]"@sS!PQ5H^]2(L_>_=O_Z7XS
+`W*sXa8X0[aoBN_bQ#fdc2Q#gcN)>jdJqVpe,@bte^i=NfDjJ'g&9V+gYCT`h#cHjhu;R6i;hm:
+j8\0?jo+<CkNM./l2U#Kli-8NmJlVRn,MnWnc&+ZoDeI]p&Fabp\jmdq>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\5PanqV%S_BV+SH><T9`@]_9)hK^8GYjU7f>dR7/l*>
+i;_d4ipr`@T')aDT^n`PT)YG[62BR?jSe-<irA!9i;VR5h>Z40g\J)4Z2:d'YOSdqXoCcjjQ5M%
+k54??kl'fGlN$;ImHVO`_!Ac0^@kD";>a>l;ucIgo_nI^oDnR`o`"C^naPbfrQY)\qTJcYs2k7L
+raYq<qdob=rb)+Arb;@Hq.oqFrGD:Hr,;FNs)A&=oYU@?!5eKJq8*,Sqf_XVpiu+Mq0;RVqKDRT
+r,h^VrHA'^rcnHgrH\NlI!kpA6%4<5J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6`P*2#nQ'I]'R$jD4
+S=Q7CT:hmPUSO]^Vl-JmWiE,$Xf\b1Yd(M5ZOaFN[^NZT\[f;_]=bei]tXK\!l2Xgrk\`S`5MYo
+!li:$rQ#&^b0'\+!mJp6rQYJjd*Va=!n,QHrm^tus472$s4@>)rRq>-gt_nbs5!b5ro!h8s5O%<
+!p&J)roX7D!9jCG!p]+;rp9[P!:KgSs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\4tR/;%"G4B_LFRsYJFole[9`@]_9)hK^8GYjU7f>dR
+7.HuLU@3BuHK0;GGl'f#V>d7gU&gs^qk<q\s.B";qh!(Ds$Zj`rMTCgq5O4j!3?!YqN'`ul]:a9
+qGI/gs&8s&s0D[2rj;X1rj)I,m?mp?iL'URraYq<qdob=rb)+Arb;@Hq.oqFrGD:Hr,;FNs)A(n
+P4at3OoU^?Pl-aEOoTY%G4g(SGjBYNGkH:WG4p(VFSL"WG5HL_GlN'fH3/G@I/\O[IXcitJ:W<(
+K7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQ'[l*R@9V8SXuFFTV8*TUnjibVl6SpWiN5'Xfen4Z*OA8
+&%&aQ[^WcW\[oAa]Y(qk^AbkK^qmkd_?.Wn`;[^W`lH-ua9'K+b5KKbbg"E2c2u>=d/D>ndaQ\E
+eGn)!f)F;$fDsV'g&g$ah#?.0h>lI4i;_d9ir7s>jQ5M&k5XTEkl'`IlKdd8m/QGQmeuVSn,W"W
+o)J=]o_nI_pAXgbq#:*gqYU0gr;?Nardk++s*t~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\41<;SiC557A@55[Y?54q,A5"nZL9DhE^8cD9W8,c!V
+7JoRO;><ub;>roQ62X(L6iKFB6fgZ362":I;uT\p;sm-:7I`eC7K5dT<;KPm<:*WD:A7KK:A.N\
+;>a>l;uBnm?2n43?W>6JraPk:rabn;rau.Bqe5tCrbD7ErG;FLpMTnIqJcIS!.+*4qbll]!-S0^
+olp1UlZr;Nolp7Up3$:TpiZOYqfi$as*=Qh!df<Brd@(]It*!!JV&K+K7nr5L51SAM2I4MN/`jY
+O-,TgPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG*Y->.8ZMq0@['d?N\%&uZ]"5Md]Y2"m
+rkANM_86,f!lMsprl"rYa2e/"!m/U-rQ>8dc-?44!mf6?rQt\pe'n<Gs4./#rn%2&!87>)!o)Mc
+rn[V2!8me6s5F";ro4(@jlQL(s5sCGrTOCKlg+Q:s6TgSrU9dU!:g$Ys7?9_rUp3arqHBdrqZQi
+qtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbGP(Luo()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"ARSbS`PS`cLCSb/HDSc;Fa9`@]_9)hK^8GbpU7f>dS
+7/YpCi8=IjrSd_7q4@Y[pn.PWl_!pEo:PuQq*FW4qVqP6ro!e5"5_k<Yk>3sYj/LkYj\doY5^oh
+k5"3>kl0iFli$2LmJZAQmD6X;_!&T7_!8]1^@tJ$;>a>j;uZFfp%n:boCDG@n*]W-c2c2icMl)a
+bkoTZb5PoMAG]s;B)ZH?B`;`FCAM`ED#J5FDYnALE;+AG_X58:_Z+cUG4^"PGk?:TGkH:WG56:P
+FSg4ZG5HL`GlN'fH3/G@I/\NuIXcitJ:W=OK2.)RL5(J>M2@+JN/WaVO-#KeP*;,qQC!u+R[]e:
+SXuIHTqS3VUnsrdVl6VqX/rG*Y-5(6Z*L^B['d?N\%&uZ]"5Md]Y2%n^V@S"_>_=O_Z7XS`W*sX
+a8X0[aT0K^bQ#cdc2Grfci;AkdJqYpe,Iksec45"fDjJ'g&9V+gYCT`h>c=3hu2I7iSrkrj8\0?
+jo4EBkPscFl2U#Kli$/OmI'E@mfN"Knbr%YoDeI]p&Facp\agcq>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbG4bCto()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"A!pN?@VmWJAJo6'YJs%WMer_*/]s%32\qa^TSrC-ZQ
+pS%>Uq0D(Jja$]Iq*FYLrhK+[!MQ1XKBRpWJb4QoJcA.;Vtm:_WVNRiOSb*uNpi&';#=,f;Z0Po
+ZNRS?Za@+<Zi790Z2_$/YH[D]r0QK3raYq<qdob=rb)+Arb;@HqJ6%GrGD:Hqeu@NpMonhqNCiA
+pQYT>rf[;(qf_UUp3?4Tp3?7SqKD[Wo5skPrHA'^s*4QhrH\NlI!kpA#(D&OJ:N3&re!t!Knb>;
+Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Q7DTV8'RUnjiaVl-JnWiN5'Xfek3Yd(L?Za@-K[^WcW
+\[oAa]Y(ql^;%Fu^qp#es2+iTrl+oWs2Y,[s2b8`rQG5b!6tJfs3L_lrmCbos3ptss4./#rn%2&
+!87>)!o)Mcrn[V2!8mb5!o`.uro=%>!9O4Bs6'FGrosIJ!:0UM!q#FDrU0gWnaZSKs7?9_rUp3a
+s7cHdrqZQiqtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbG4bCto()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"@3pH@q.oKN=@pcn^@o0<7Ls%NDbr(?u\r^coVrC6`S
+rC$N[qb[/es&/h`rB^KMhEps(mm?h9oMk9XlUKu)nO3=Es$ZW\s&A;_qb?9LqG$u`peC?TpJC`a
+r)3Jls'5V0p0IZ("'o5=?2R[h;ZKeY;uU;+AG]s;B)ZH?B`;`FCAM`ED#J5FDYnALE;+AB;u]b^
+;u_";G4^"PGk?:TGkH:WG56:PFSg4ZG5HL`GlN'fH3/G@I/\NuIXcitJ:W=OK2.)RL5(J>M2@+J
+N/WaVO-#KeP*;,qQC!u+R[]e:SXuIHTqS3VUnsrdVl6VqX/rG*Y-5(6Z*L^B['d?N\%&uZ]"5Md
+]Y2%n^V@S"_>_=O_Z7XS`W*sXa8X0[aT0K^bQ#cdc2Grfci;AkdJqYpe,Iksec45"fDjJ'g&9V+
+gYCT`h>c=3hu2I7iSrkrj8\0?jo4EBkPscFl2U#Kli$/OmI'E@mfN"Knbr%YoDeI]p&Facp\agc
+q>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$II0SbJWSS`ZI?Sb\fHSc):_9`@]`9)_E]8GbpU7f>dT
+7/5[>i;)@1T)bP\TC\ZETCJTITDtMY60mP2ir%d8huM[5Yj\dgYkG@"YjS^n7/l?Gk5a`Fl2U&K
+lhg&Klhg#Kli+`s_"tnE_YM%E_!f&7^A1V&;>a>g;ucLip&4LkoCV\Ho'u2<n*]T0m,H=hc2>f]
+bP]N^AG]s;B)ZH?B`;`FCAM`ED#J5GDYnALE:IrHEr<f@_th.LFo-@QGN=#?GPcR[FmX;KFo?L]
+GQ2pfH2W$jH[L5?I0"eHrd[[nJqJ]/KnY89LPUeDMN!LRNfT6_OckomQ'IZ&R$jD4S=Q7CT:qsQ
+USO]_Vl-JmWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDb]Y(qlrkANM_86,f!lMsprl"rYa2e2#s2k;`
+rlb>cs3:Pgs3L_lrQt\pe'n9Fs4%,#rR_)%!87>)!o)Mcrn[V2s53h6!o`.uro=%>s5j7Bs5sCG
+rosIJs6K[Ns6]jSrpTmVs7-'Ys766_r:U*`s7cHdrqZQiqtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$G_JFT?UNFo6@RFn0_S:&dod9DqK^8cD9X8,YpU7K,^C
+UA]B!HLlC^GjBYSGkjYtV>d:fU\LSWK]n'HK)J+:Vu!@_WW0!rWW/+WORnP!Npi&);#=,f;Yj>f
+ZN.</Z2_'-YQ(ioR/**4R/UXnAc?<@BDZBAC&VlDC]/)JD>8#GDu4MDEW'qUOo1C?PP17=PQ$^F
+Fo-@QGN=#?GPcR[FmX;KFo?L]GQ2pfH2W$jH[L5?I0"eHrd[[nJqJ]/KnY89LPUeDMN!LRNfT6_
+OckomQ'IZ&R$jD4S=Q7CT:qsQUSO]_Vl-JmWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDb]Y(qlrkANM
+_86,f!lMsprl"rYa2e2#s2k;`rlb>cs3:Pgs3L_lrQt\pe'n9Fs4%,#rR_)%!87>)!o)Mcrn[V2
+s53h6!o`.uro=%>s5j7Bs5sCGrosIJs6K[Ns6]jSrpTmVs7-'Ys766_r:U*`s7cHdrqZQiqtp?i
+r;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$E<[4nCkh5Q+=V9`@]`9)_E]8GbpU7f>dT7/9^[;#=,h
+;Z/o^6e=Zu6h<Y?62ssY<;TVn<;9DJ7c6`67/9d]<:j,h;Yj>`:%1pS:%h9U:&Ic^;#=,f;Yj>j
+?2n1+>l\4-?2@OL;uU>)Ac?<@BDZBAC&VlDC]/)JD>8#GDu4MDEW'q8;ZLt;G4Kk<Gk6.VG5?@K
+FSp:[G5QRaGlN'fH3/G@I/\NpIXh?I9S%eJK7nr4L5(J>M2@+KN/`jYO-#KePE_>tQC+&-R[]h<
+St;RJTq\<XUo(&fW2ZetXKAV-YHY79ZEpmE[C3NQ\@K/]]=Y_g]tXK\!l2Xgrk\`S`5MYo!li:$
+rlG,]s2t>as31Mfrm(Pis3U_l!n,QHrRCkt!7q,#s4@>)rRq>-gt_nbs5*e5rnmk:io9sts5a4A
+roX7D!9jFHs6BXMrp9[Ps6fmTs7$'YrUU![!;-3^s7ZKer:p9erqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?dR0Sb\fSSa)a>Sc5/LSc;I`:&doe9DhE]8cM?X8,c!V
+7K,^JhuDU7iVqa8iUic4T(&BBT_P/S63$!EjS@j9j8e6:j8e6<irA!7Yj&@gYkG?fYl-uhk5FHE
+kiq@1lLsNDm/-)M_ns:g_>h=I_=PMD_>:t9^\bbA;#F2f;Ya8ko`"O`o`"Feo'l,:mdBK/rp'R1
+im.MIr64lX!QnsNAc?<@BDZBAC&VlDC]/)JD>8#HDu4MDEV=GPF7$m@_Z+cTG4BeAGk-(UG5?@H
+FT$@\G5QRaGlN'fH3/G@I/\NpIXh?I7Y-/DK7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F/.S"#q=
+StD[LTqeEZV5C/hWN)u!XKAY/YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW!6>)[
+s2k;`rlb>cs3:Mf!mf6?rR(Yns3ptss4./#rn%2&s4RD*s4dS/rn[V2!8mb5!o`.uro=%>s5j7B
+s5sCGrTOCKlg+N9!q#FDrU0gWnaZSKs7?9_rUp3arqH?cs7uZjqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?bkMFo?LMFoQR\Fo?L_Fn'YT:Amoe9`Ic`9)_E^8GYjU
+7f>dT7.-fFH0]eEH2i-gH16(R63!e\VY?neV#7(hV"peXK[,5JK)J+:Vu3LfWW&grWW&jmWW&%V
+OR/&!Npr,+;#F2f;Ya8iZO!qEZa$d>Z*:J1Y62#4Y*n[Ep6Y-5!+c"=rau.Bqe5tCrbD:FrG;FL
+php"Jqf)(Fp2^.Rr0$uApQYT>rf[;(qKDCQl?MlDqf_gYl?)uIrHA*_s*4QhrH\NlI!kpA!IfOt
+J4>*AK7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+R@B\9SXuIHTqS6WUnsrdW2ZesX/rG+YHY79
+ZEpmE[C3NQ\@K/]]DfGD]tXK\!PlPN_Z.LR`;[aU`W4'YaT'B^b5TTabl>rdc2u>=d/DAldf7eq
+eGn)!f)F;$f`0Y(gAfq-h#?.0h>lI3hu_lsir8!<jT"?@k5XTEkl'`IlKdd7liQSBmeuSUnF?&I
+o)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk++s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?`H^4nLqh5Q=LW:&doe9DhE]8cM?X8,c!V7K,^H;>a;l
+6-hms6h!G;62XaZ<;fbd<4k^!7/Bj]<;BJh;Yj>X:%qEZ:%(dQ:&7]a;>X8e;tOAp>l7n$<7b%K
+AGg$<B)ZH?B`;`FCAM`ED#J5GDZ"GME:IrAErL.A;u_":G4BeAGk-(UG5?@HFT$@\G5QRaGlN'f
+H3/G@I/\NpIXh?I7Y-/DK7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F/.S"#q=StD[LTqeEZV5C/h
+WN)u!XKAY/YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW!6>)[s2k;`rlb>cs3:Mf
+!mf6?rR(Yns3ptss4./#rn%2&s4RD*s4dS/rn[V2!8mb5!o`.uro=%>s5j7Bs5sCGrTOCKlg+N9
+!q#FDrU0gWnaZSKs7?9_rUp3arqH?cs7uZjqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o@Xr1*PQn!rF/!`)Qdr([2bs%E8^r^m,\qa^TSrC-`S
+s5*A)s5<pLp7V>UnXfHHm%F9KpH\f>qW.Y9qrI\:rT*t<!93gYs0)=(n?;_npTa+iqa:MJkNDj.
+rTX1DrTj7D!9sL$s24ZLrPA'AqSDsBpV6[@qb[2fr)38fs&9$kp&4LboCDD>rpC!Xm-Es&lg!ER
+rQY8ap<3DGs(;7Cqe5tCrbD:FrG;IMphp"Jqf)+Gp2]hIs)dhLqSN8Tq0)1Mnp'YJqf_gYkB-ZF
+rc\3`s*4QhrH_:eI!g?jIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*;/rQC!u,R[]e;St;RJ
+Tq\<XV5C/gW2ckuXKAV-YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#e!lMsprl"rYa2e2#s2b8`
+rQ>8dc-?44s3L_lrmCbos3pqrs4./#rn%2&s4RD*s4dS/rn[V2s53h6s5<t;rT!q=!9O1A!pAe2
+rosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3arqHBdrqZQiqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o1+pibnEqKDm_nob(1:/:^]s%NGcr(?r[s%*#WrC6`S
+s$Zm\nY4oems4>GpH\eUqPO+cqPO4frM/n9c\)4Kqa:L`W2TKjoVhbgri#gZs,m2?hN.\uo8icF
+r)*AipJ_)krNlO0!3uO-q6'h%Xo4[VR.Qa6R/LUrB)ZH?B`;`FCAM`ED#S;HDZ"GME:S#BEqOMR
+FT%EsPl-aFP5f\#G4'SFGjoqSG5?@EFT$@]G5QRaGlN'fH;Js9I!pElIXcluJUrE*K7nr5L51SA
+M2I4MN/`mZOHG]hPEhE!Q^F20S"#t?StD^MU8+N\VPg>jWiE,$Xf\b1Yd(L?Za@-K[^WcW\[oEP
+]E,^[rkAKL_>_:Q_o0Lm`<+'"a8X0[aT0K^b6#o4c2Grfci;AkdJqYpe,@erec45"fDjM'g&B_*
+g]-(.h>c@3hu;R6i;hm9j8\0?jo+<CkNM./l2U&Kli-8NmJlVRn,MnWnbr%YoDeI]p&Fabp\jmd
+q>U6equ-HjrUTr=s5*d+~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o0HqEFpDrBAar!`)Qdr([2bs%E8^r^m,\qa^TSrC-`S
+nPT<as$=:apH\dYqGmJnr)<VpqGmJn]LMcdqc!Gmr_rJfqbuNLpeLTYoh>B[qb[2fr)38fs&A_u
+r*05-ra#S1o2OFBrFQ"@rb)+Arb;@HqJ6%Grb_FJr,;IOno=ADolL.TlVmh+q0)1Mnp'YJqf_gY
+kB-ZFrc\3`s*4QhrH_:eI!g?jIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*;/rQC!u,R[]e;
+St;RJTq\<XV5C/gW2ckuXKAV-YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#e!lMsprl"rYa2e2#
+s2b8`rQ>8dc-?44s3L_lrmCbos3pqrs4./#rn%2&s4RD*s4dS/rn[V2s53h6s5<t;rT!q=!9O1A
+!pAe2rosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3arqHBdrqZQiqYU6hr;H3cJcFU,J,~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,7Sc>5OSbnrWSc##:Sc;Lc:Adid9`Ic`9)hK^8GbpU
+7f>aU7/c!6hts&?T_kAOT(elBT_C_QjQ6:"!9<n9p#Q27pTX\$m]cYnqloh"n$)[Wroa:ErTX4E
+s60dRl07Erl0.C1kQ'fF`:q1;_XbP>_#1qK^;%G\;#F2g;YX2h;ufqtoE=aTnaGrFm/ZMNl2p4p
+c/R%Hc25`[b5c,QB)ZH@B`;`ECAVfFD#S;IDZ"GME:\)BEq=AHFSNcL_Z+cSG0tO2G5?@CFT$@]
+G5QRaGlN'gHN/<lI/\NuIXcitJ:W=OK0Y*DL5(J>M2@+KN/`jYO-#KePE_>tQ^F/.R[]h<StD[L
+TqeEZV5C/hWN)u"Xf\b0YctC=Za@-K[^WcW\[oEP]EZ'`^V@S"_>_:P_o2Pns2G&ZrlG,]s2t>a
+s31Mfrm(Pis3U_ls3^nrrRCkts47/#s4@>)rS%;+s4mV0s5*e5ro!h8s5O%<s5X1ArT=.C!9jCG
+!p]+;rTjUQmdC&Bs7$'Yrpp*\s7H6^s7ZKer:p9erqcNhr;?Nlnc"+>hZ&*~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,5Fn9eRFT?UWFo-@YGP-.Z:]F2f:&doe9DhE^8cD9X
+8,YpU70#aSU%>#5HLZ:MGkXN#V#[CdV>R4iV>m=kU\f_^K)gN#7/j.bWV3:fVuN[qVuEXpVZ<Un
+P517?OQV]$O8tF<OSt7?OShrQ;>a>e;uKYq<W9<*Z*=&-riZ7&q3gf@nX&j7!+l.Arb).Brb;=G
+qeQ.Hrb_IKr,;IOo5XGDo5jYJplt]?rf[;(q0(/0qf_gYj`LHDrc\3`s*4Qhrd+Tk!.=co#(D&O
+J:N3&re!IhKnb>;Ll$tGN/WaVO,oBbP*;,qQ'[l*R@9V8SXuIHTqS6WUnsrdW2ZesXKAV-YHY79
+Za7$H[^NZT\[f;`rk&HK^;%Fu^qp#e!Q2kT`W*pXa8X0[aoBN_bQ#fdc2Q#gci;AjdJqVpe,@er
+ec45!fDjJ'g&9Y)g]-(.h>c@3hu;R6iW%p:j8\0?jo+?Ak5a`EklU/9li$/OmI'E@n,MnWnc&+Z
+oDeI\p&Facp\agcq>U6fqu$BjrUKl<s5*d+~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,54o.A>56*tG5Q="(5Q=OZ:Adid9`Ic`9)hK^8GbpU
+7f>aV6rNMOqa&"apH\dYqGmPppf$oe!*$U#qaC?\r)EVnpJUidiD&l<peC]\s%WDfr)*Aipf%,j
+!*0#(!aK#:qHX&+rEeqlhGXDcrau.Br+Q(DrG)4FrG;IMq/6+Kqf).HolBYFpN5n's)n-\d<GJ2
+qK:nArH8*_r-/0cs*=Tis*F`nrd>!"It*!!JV*lR5_OiGL51SAM2I7NNK0'\OHG]iPa.N#R$a;1
+S"-%@T:hmOUSO]^VPgAlWiE/&Xfek3Yd(O@['d?N\%&uZ]"@sS#/.ac^VIY$rk\]R`;[aU`W4'Y
+aT'B^b5TTabl>recMu5jd/DAldK%bpeGn)!f)=5#fDsV'gAfq-h#?.0hZ)L4i;_d9ir8!<j8e<?
+k5XTEkl'`IlKdd7liQSBmeuVSnGi%Xo)J=]o_eC^pAambq#:*gqYU0fr;HTardk++s*t~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fn!sHKfq&.>s%iYirD!8bs%E8^s%32\
+qa^TSrC-V?p>>e>pRh>Urh'4`qk*VSp7LfHog/W?r8m_7r8me;!9NmXs0)=(p9F:ppTa:nq*b5F
+s60FG!pJn5rTF:Fkl0`Fkl'ZHk3(mhrPe9DnA=h6r4r3Er_WMir)3;grD`br$M<r[nF5o8md9E.
+rTjLK!U8eEblH&fc0imPc2Gl\b5c/RBDZBAC&VlEC]/)KD>A)IDu=SGEV=GCF7+/K_tq7LFnp41
+GPcR[FlINAFoQX_GQ2pfH2`-iHN8HmI0P.MIt3'#K)UBtKS>/8LPUeEMi<USNfT6`P*2#nQ'Rc(
+R$sM6S=Z=ETV8*TUnsrdVl6VqX/rG+YHY79ZEpmE[C3QS\[f;`]=bei^;%Fu^qmn)_o'Fl`<+'"
+a8X-]ai_d*bQ#fdc2Q#gci;AjdJqYpe,@ereH"2!fDjM'g&9Y)gAp%-h>c@3hu;R6iW%p:j8\3?
+jo4EBkPscFl2U&Kli-8NmJlVRn,MnWnbr%YoDeI]p&=[bp\agcq>U6fqu-HjrUKl<s5*d+~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fmre\Rr-%jXqf_XVq0)d7s%iYirD!8b
+s%E8^s%32\qa^TSrC-UWp7hS5oQfSFnTjbOog.uArhfUi!2K@C`ImtSqksFlrho[k!2odm!2ogn
+rMBIUplYB6p5f*4!0?u<pQ>?7r_WMir)3;grD`br!jf/9pTFV#YPt[)XSS@TR-p=7QiLatBDZBA
+C&VlEC]/)KD>A)IDu=SGEV=GCF7+/KPl-aFP5]V"G1:a5G5?@@FT$@^G5QRaGlN'gHN/<lI/\Nu
+IXcitJ:W=OK2.)RL5(J>M2I4MN/`jYO-,TgPE_>uQ^F//S"#q>StD[LU8+N\VPg>jWiE,$Xfek3
+Yd(L?Za@-K\%&uZ]">Se]Y2%o^VIY$_SX4.`;[^W`lH.!a9'K+b5TTabl>recMu5jd/DAldf7ep
+eGn&!f)=5#f`0Y'gAfn-h#6(/hZ)L4i;_d9ir8!<jT"?@k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%W
+o)J=]o_nI^pAambq#:*gqYU0gr;?N`rdk++s*t~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fq`amAq`k-GqEWt's%r_ks%`Mer_3>b
+r(?u\r^coVrC6`Sr_i>bnj1Aaog/FSs&A\jr_rktr)CF#s$ulQr_r\n!)rShpf%,dj\=u7qb@&d
+r)*Aipf%,jr`&r(r`oG.rET;,ra#S1qGdDlp/L$M!+u4Cqe5tCrbD=GrG;IMq/6+Kr,D7Ip2]\E
+mWA/$rcS$[e9Ce5qK:e>rH8-`r-/0cs*=Tis*F`nrd>!"It*!!JV*lR:5"=UL51SAMMmFPNK0'\
+OcklkPa.Q$R$a>3S"-(AT:hmPUSO``Vl-JnWiN5'Y-5(6Z*L^B['d?O\@K/]]=Y_g]tV7r^qde'
+_Sa:0rl"rYa2e2#!m/U-rlb>cs3:Pgs3L_lrR(Yns3pqrs4%,#rR_)%s4RA)s4[P/rS@M1s53h6
+s5F";ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp0`s7cHdrqZQiqtp?ir;H0b
+JcFU,J,~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0Cs\^Q;>sDl:]F2g:&[id
+9DhE^8cD9X8,YpV70)0?hY?"(T(\fHT^/6BT_(PGk5OHBjS@p5k4>hVYPYQ_Z1G3q7/lBIkksWA
+k5FKBk5XQCjS[!m`:1\5_Yh7E^]74/;>jDf;uBVn<W?)'naQ&:n*^/@s6BjRl07Epjo*I%bkoZW
+cM#N\bkTB]BDcHBC&VlEC]/)KD>A)JDu=SIEVFMEF5h<AFo0&UFng.3GPZL[Fl7B?FoHR_GQ2pf
+H2`-iHN8HmI0"eHrd\($JqJ]/Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rc(R@9V8SXuFGTqS3VUnsrd
+W2ZetXKAV-YHY:;Za7$H[^NZT\[f;`]Y(ql^V@S#_8=(,`5KX6`l?'uaT'?^b5KKbbg"E2c2u>=
+d/DAldf7epeGn)!f)=5#f`0Y(gAfq-h#6(/h>lI3i;_d9ir8!<jT"?@k5XWEkl0iHlMp2Lm/QJQ
+meuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?N`rdk++s*t~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0D!cEGFo-@OGPu[b;>sDl
+:]F2g:&[id9DhE^8cD9X8,YpV70'"WU%kA]HLZ:WHMDj\HLlFXGlN![60>!DV"TJ^KD@q8Vu!:d
+V>R4eV=]rGOnk+<O84n'OT85U;>jDf;uBVn<W?+sYQ(j,YPbO)XfST%RI-C-Qhm*LBDcHBC&VlE
+C]/)KD>A)JDu=SIEVFMEF5h<AFoIU(P5f\"G1Us7G5HF?FT$@]G5ZXbGlN'gHN/<lI/\NpIXh?I
+=+PsUK7nr5L51SAM2I4MN/`jYOHG]hPa.N"Q^F20S"-%@StMdNU84T]VPgAlWiN5'Xfek3Z*L^B
+['d?N\%&uZ]">Vf]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^b6#o4c2Gohcd:&;dJqYpe,@erec45!
+fDjM'g&B_*g]-(-h>c=3hu2L5iW%p:j8\3?jo4EBkPscFl2U&Kli-8NmJlVQn,MnWnbr%YoDeI]
+p&Fabp\agdq>U6equ-HjrUKl<s5*d+~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0D#QZg5ib-0;>sDl:]F2g
+:&[id9DhE^8cD9X8,YpV7Jp'V;=6aH6MNq)6M*S@<W5tc;o2$$8,5RI;uTYp;>F,d;uBDP:#etK
+;#F2h;YX2g<;fhs<rZFu?2S%-<;'8b<9I3[<<$V/B`;`FCAVfFD#S;IDZ+MOE:n5FEq4;2FT6L\
+;u_"8G1Us7G5HF?FT$@]G5ZXbGlN'gHN/<lI/\NpIXh?I=+PsUK7nr5L51SAM2I4MN/`jYOHG]h
+Pa.N"Q^F20S"-%@StMdNU84T]VPgAlWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tV7r^qmk(_Sa=1
+`Poj:a8X0[aT0K^b6#o4c2Gohcd:&;dJqYpe,@erec45!fDjM'g&B_*g]-(-h>c=3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U&Kli-8NmJlVQn,MnWnbr%YoDeI]p&Fabp\agdq>U6equ-HjrUKl<s5*d+~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1r2SH2Vc
+rD<Mis%`Mes%NDbrC[&\r^coVrC6fU!ScE-h>Q4.htiuFT(8NDT^8<FT_(PMjn7d6jnRs<Z1>-u
+YP#-_Z1bEs7/c9IkPXKAjo=HDjlZO's5a.=rPeiVn\jn6pqlpEq7uo*r)3;grD`_qrDipfrpTmS
+s6TdO!:'RJ"mG+1jiu'Bbl5l`cLoHXbk]H[B`;`FCAVfGD#S;IDZ+MOE;";IEq=A,FS^+[_Z"]Q
+G2%6:G5HF=FT-F^G5QRaGlN'gH3/G@I/\OjIXcluJUrE*K7nr5L51SAM2I4MNK0'\OHG]iPa.Q$
+R$a;2S"-(AT:hmPUSO``Vl-MoWiN5'Y-5(6ZEpmE[C3NQ\@K/]]=bei^;%Fu_>_:P_o2Pn!li:$
+rl>/_b0'_,s3(JfrQbGhs3U_l!n,QHrRCkts47/#s4IA)rS%;+s4mS/s5!b5rS[_7s5O%<s5a4A
+rT41Ekii!0s69UMrTsROs6fmTs7$'YrUU![s7H6^s7ZKer:p9erqcKgrVZTlo)=4?h>`!~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1rGG3jDR
+;GmBhs%iYirD!;cr_*2^r^m)[qa^TSs$cdWrLs.`qKhXVr-J'`pNlIWq0;NtjeVs2on:J?pdG+X
+!2TUjrM0FirhT:brM8eCplYN:r/q#@m#h3Cr)3;grD`_qrDrs&qlg%&s/c@*Xf_T'q3g`>lBhF9
+r+Q(DrbD=GrbVRNq/6.Lr,D@Lq/Z(JgN<:7!0[>(pibD9q0)XXhK8a>rc\3`s*4Qhrd"WmI!kpA
+:k!nEJ:W9'K7ei2L5(J>M2@+JN/`jYO-#KePE_>uQ^F/.S"#q>StD[LU8+N\VPg>kWiE,$Xfek3
+Yd1UA['d?N\%&uZ]">Vf]tV7r^qp#e!Q2kT`<+'"a8X-]ai_d*bQ#cdc2Grfci;Ajd/qbFe,@er
+ec45!fDjM'g&9Y)g]-(-h>c=3hu2L5iW%p:j8\3?jo+<CkNM..l2U#Kli$2MmJlVRn,MnWnbr%Y
+oDeI\p&Facp\agcq>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1rN5l*_D
+54Cc;;GmBhs%iYirD!;cr_*2^r^m)[qa^TSs$cc^peg9Ar'L*Ej$E`5oKiFTs&K"smo'3V_++Do
+pdFsWrDNSkr_iGgr(c<Ij\G_Nr)3;grD`_qrDrl%pg*l*s'>Y(nPf-\mSj$_r+Q(DrbD=GrbVRN
+q/6.Lr,D@Lq/Z(JgN<:7!)rl>pibD9q0)XXhK8a>rc\3`s*4Qhrd"WmI!kpA:k!nEJ:W9'K7ei2
+L5(J>M2@+JN/`jYO-#KePE_>uQ^F/.S"#q>StD[LU8+N\VPg>kWiE,$Xfek3Yd1UA['d?N\%&uZ
+]">Vf]tV7r^qp#e!Q2kT`<+'"a8X-]ai_d*bQ#cdc2Grfci;Ajd/qbFe,@erec45!fDjM'g&9Y)
+g]-(-h>c=3hu2L5iW%p:j8\3?jo+<CkNM..l2U#Kli$2MmJlVRn,MnWnbr%YoDeI\p&Facp\agc
+q>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]rtSc;Rf;>j>k:]F2g:&doe9DhE]8cD9X8,YmW7K)!@h#?..hYuF+TE(VDT^/6JT^tJLjm;.0
+k5sf/kPhaWYl:iWYl1d#6i][Rk5=?9jSe-;iW.s8`qdUC`:h+F_YV+F_#@4/;Ya8i<;fhm<XnNc
+md9B,lg!a!kih3lro=((pWWTZrljoWp!!9Us(MCGrbD=GrbVRNqJQ7Mr,DCMq/Z1Md<,))pNGG<
+q0)XXh/rX=rc\3`s*+NhrH_XoI!g?jIXZcsJ:W<(K7ei2L5(J>M2@.LN/`jYO-,TgPE_>uQ^F20
+S"#t?StD^MU84T]VPgAlWiN5'Xfen4Z*L^B[C3NQ\@K/]]=bei^;%Fu_84"*_o2Pn#KFg)aN2KF
+b5KKbbg"E3cMu5jd/DAldf7epeGn)!f)=5#f`0Y'gAfn-h#6(/hZ)L3i;_d9ir8!<jT"??joX`0
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*gqYL*fr;?Nardk+*s*t~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]s6G3X;O;?0Sm;#a>k:Amoe9`Ic`9)_E]8GbpU7K>mPT`(S`U@rm5H/a/9H2MpY604sBL#n!C
+KD7h77Jrt]U\^eaV>-kbPNS+fOoA5U;Ya8i<;fhm<r0#tXT5I$WrSU_RIZa4Qhm*LB`;`FCAVfG
+D#S;JDZ+MOE;+AJEqXS%FS9kOG2IN>G5HF<FT-F^G5QRaGQ<$fH<PZCI!pElIXcluJV&K+K7nr5
+L51SAM2R=ONK0'\OcklkPa.Q$R$jD4S"6.BT:qsQUnjiaVl6SpX/rG*Y->.8ZEpmF[^NZT\[f;`
+]Y(ql^V@S#_8=(,`;[^\`lH-@aN;QHrQ>8dc-?75s3L_lrR(Yns3pqrs4./#rR_)%s4RA)s4[P/
+rS@M1s53e5s5F";ro=%>s5j4A!pAe2rTX@Is6K[Ns6]jSrU9dUs7-'Ys7?9_rUp3arqH?crqZQi
+qYU6hr;H3cJcFR+J,~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]s65PRG65Q=U];>j>k:]F2g:&doe9DhE]8cD9X8,YmW7J'LW;>!6B6M<e@6L[A662+@J;ZKer
+8&7Xp8,,IP7Jp'Y;>jDe;tNiK:$GFP;>a>f;uK\o<V]\l>l7k2?<piA>ZCGrqbm>jpJg`_qGdK.
+rb;@HqeQ1Irb_LLrGVUQpMp"Lp2eW'p3$+Qhfnm>qfU_:rcS3`r-/0c!."Nh>'kXEI=6QnIt3'#
+JqAW-KS>/8LPUeDMi<USNfT6`P*2#nQ'Rc(R@9V7SXuFFTqS3VUnsrdW2ZetXKAV-YctC<Za7'J
+[^WcW\[oDc]Y2%o^VI\%_SX4/rl#,^a2c9BaiV^(b6#o4c2Q#gci;AjdJqYpe,@erec45!fDjM'
+g&9Y)gAp%-h>c@3hu2L5iW%p:j8\3?jo+<CkNM..l2U&Kli-8NmJlVQn,MnWnbr%YoDeI]p&Fab
+p\agcq>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!Qfgs&8qq!)`\ks%iYirD!;cs%E8^r^m)[qa^TSqqM/+rS@M1!8[1<nY,KG
+q4I8Onj339!9a4@r9+"?rTEaVgT^7PpI#!MrT=%=rT!q=rT!k9ro*n8r5S9GnAP.?qni9Ir4i;0
+r)3>hrD`_qq,[Jr!q#@?rTX^Rkih0kjlGL^iVq+!bk]HYbkfTTbkoT`C&VlEC]/)KD>J/KDuFYL
+EVa_NF3A\!FnU"<GPQFYFmsMKF7jYRFoQX_GQ2mfH2W$iH[Pg@<.9=HJ:N3&K7ei2L5(J>M2@+J
+N/WaVO-#KeP*D5sQC+&-R[]h<StD[LU8+N[VPg>jWiE,$Xfek3Z*L^B['d?O\@K/]]=bei^;%Fu
+_84"*_o2Pn!QN1Za9'K+b5TTabQ,odc2u>=d/DAldf7epeGn)!f)=5#f`0Y'gAfq-h#6(/hZ)L3
+i;_d9ir8!<jT"??k5XTEkl'cGlMp2Km/QGQmeuVSnGi%Wo)J=]o_eC^pAamaq#C0hqYL*fr;?N`
+rdk+*s*t~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!QfAs&8qq!)`\ks%iYirD!;cs%E8^r^m)[qa^TSoq;>Y!20:9eU$S-!-n'#
+qkj4dr207ciJ$WOnq6[)!(Hj^s.enUrKI;Gi0*hsqNC];!)`Ylq,@5krDiYor`B-&#Ht;5Xf\\+
+Xo5="WrAIaRIHU6QhQmIC&VlEC]/)KD>J/KDuFYLEVa_NF3A\!FnU"<GPQFYFmsMKF7jYRFoQX_
+GQ2mfH2W$iH[Pg@<.9=HJ:N3&K7ei2L5(J>M2@+JN/WaVO-#KeP*D5sQC+&-R[]h<StD[LU8+N[
+VPg>jWiE,$Xfek3Z*L^B['d?O\@K/]]=bei^;%Fu_84"*_o2Pn!QN1Za9'K+b5TTabQ,odc2u>=
+d/DAldf7epeGn)!f)=5#f`0Y'gAfq-h#6(/hZ)L3i;_d9ir8!<jT"??k5XTEkl'cGlMp2Km/QGQ
+meuVSnGi%Wo)J=]o_eC^pAamaq#C0hqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!R.gpHS[Vs&&horD<Mis%`Mes%NGcr(?r[r^coVrC6?UrB^*CmR-V7q*XaA
+nj2hGoi(NRmmd=Ih+%-,!(Hiar)*>hq,@5k!)rhln4r1AnP0']r)3>hrD`_qq,[JrqHWr(r*95#
+qc!5er)<;gqG[,fs(VIIqeQ.Hrb_LLrGVXRpMp%MpiFW#p3$(Pick3AqK;:Lq/c4NrH8-`r-/0c
+!."Nh!IK4nI8kZFIt3'#JqJ]/Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rf)R@9V8SXuIHTq\<XUo(&f
+W2ckuXKAY/Yd(L?Za@-K\%&uZ]">Vf]tV7r^qmk(_Sa=k`<"!!rl>/_b0'_,s3(JfrQYJjd*Va=
+s3gqrrRCkts47/#s4IA)rS%;+s4mS/s5*e5rS[_7s5O%<s5a4ArT=.C!9jCGs6BXMrTsRO!:KgS
+s7$'YrUU![s7H6^s7ZKeqtU3erqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T#erDNbq;,R9gs%iYirD!;cs%E8^s%32\qFCNSq:kr)s5!_1
+!8ZP+rLibUn"B2:!9i\1!9ipWgT^=RpdG*MroF%<!93q:r8R\6r8@7fnAY";r58BJqSE,.q,@5k
+rDiYor`B,%#4(R>lg!`uroXLJjlGI]i8FIVr64lXlHK.KrbD=GrbVRNqJQ7MrG_OOqf;LR`H:`p
+olfPCpicLVn9"AFp2p:Vrc\6as*4Qhrd+Tk!.=co!IfOtJ51ZIK7ei2L5(J>M2@+JN/WdXO-#Ke
+PE_>tQ^F//S"#q>StD^MU8+N\VPgAlWiN5'Xfnt5Z*L^C[C3NQ\@K2_]Y(ql^V@S#_8=(,`;[^V
+`lJ)"#g(63bKJ,Rc-?75s3C\lrR(Yns3pqrs4./#rR_)%s4RA)s4dS/rS@J0s53h6s5F";rT!q=
+s5j4As6'FGrosIJs6KXMs6]jSrU9dUs7-'Ys7?9_rUp0`s7cHdrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T#?rDNbq;,R9gs%iYirD!;cs%E8^s%32\qFCNSoq;>W!2016
+e9^S/nNl?8b(]MA!/(&7r^Hg^s.eqV!2]UXqNKg"rfQi9rDNGirD`_qq,[Jrs&f3%s/l4#"KSQ&
+WN#`_r0d/DoU#3;rbD=GrbVRNqJQ7MrG_OOqf;LR`H:`polfPCpicLVn9"AFp2p:Vrc\6as*4Qh
+rd+Tk!.=co!IfOtJ51ZIK7ei2L5(J>M2@+JN/WdXO-#KePE_>tQ^F//S"#q>StD^MU8+N\VPgAl
+WiN5'Xfnt5Z*L^C[C3NQ\@K2_]Y(ql^V@S#_8=(,`;[^V`lJ)"#g(63bKJ,Rc-?75s3C\lrR(Yn
+s3pqrs4./#rR_)%s4RA)s4dS/rS@J0s53h6s5F";rT!q=s5j4As6'FGrosIJs6KXMs6]jSrU9dU
+s7-'Ys7?9_rUp0`s7cHdrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T4aq`k$X!`DlmrD<Mis%`Mes%NGcr(?u\r^clUr^QodpJV#g
+!)iY[ogA.8o0r+9nNltMr_reqoi(HPmmcS4oLAUDr^HEVrDWMk!)rekkt^D9qG-ueq,@5krDiYo
+r`B,%!*fD,ra#;(qGdAkp/:fepJ_,koMkg)qeQ1Irb_LLrGVXRpi61Oq/aMsoQBhMk]cfFqK;:L
+p2fqLrcS3`rHJ9ds*=Tis*F`nrd=frJ,XsnJV&N,KS>/8LPUeDMMmFPNfT6_OckomQ'I]'R$sM6
+S=Z=ETqS3UUnsrdW2ZetXKAV.YctC<Za@-K[^WcW]">Vf]tV7r^qmk(_Sa=k`<"!!rl>Aeb0%oN
+bfn>Vrm(Pi!7:\ls3gqrrRCkts47/#s4IA)rS%;+s4mS/rnd\4ro!h8s5O";s5a4ArT=.Cs60IH
+s6BXMrTsROs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^QqAq:c&+gY:N<l_4*Jl(S$Jpn@1CqWRn@pZVV>s6/^Oq60"dpTO<Zr^?hIn)F<)rS[^pn&Fk9
+q8E'GqSN50q,@5krDi\prE&r"!*T<d%-d!=kN:pgjQ#7ZiSaFSrljlTqonu]r65)^qeQ1Irb_LL
+rbqaSpi64PqK'DnoQBbKm<A8IqK;=MoQ0_JrcS3`rHJ9ds*=Ti!df<Brd@jsIt3'#JV&N,KS>/8
+LPUeDMN!LRNfT6`P*2#nQ'Rc(R@9V8SXuFGTqS6WUo(&fW2ckuXKAY/Yd(L?Za@0L\%&uZ]">Vf
+]tV7r^qmn)_o0O5`l?'ua8sE*rlb>c!6tMgs3L_lrmCbos3pqrs4./#rR_)%s4R>(s4dS/rS@M1
+s53e5s5F";rT!q=s5j4As6'FGrTOCKlg+N9s6]jSrU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU6h
+r;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^Qp[q4RYXpNb87r-89gq0DHqrMKRlm\\'ZpOr9/r^H(Irh]XYrfm5Bd?=K,q,@5krDi\prE&r"
+"^/%4Y-"i)XT#:"WW9$lRf8`IR.?U<R/:[uD#S;JDZ4SQE;4GNEr'jlFS'_IG3sMIG5?@OFS'YJ
+FT-F^G5ZXbGlN'gH3/G@I/\OqIXcluJUrE*K7nr5L51SAM2I7NNK0'\OcklkPa.Q$R$jD4S=Q7C
+TV8'SUnjlcVl6VqX/rG+YHY:;Za7$I[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#p<rl>,^b5TTabQ,oe
+cMu5jd/MGmdf7epeGn)!f)=5#f`0Y&gAfq-h#6(/hZ)L3i;_d9ir.p;jT"??k5XWEkl'`IlKdd7
+m/QJQmeuVSnGi%Wo)J=]o_eC^pAXgaq#:*gqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^Qibqbm>hs$HNKogI_,o0i(6qGcu`r`&DXmmcS4pI=mFr^?fbr_rMgrDWMks%`PhiD/W3r_iPj
+rD`_qqH!PrrE',(>[786p0@;jr)<Agqc!Akr)<>hqeQ1Irb_LLrbqaSpi64PqK'DnoQBbKm<A8I
+qK;=MoQ0_JrcS3`rHJ9ds*=Ti!df<Brd@jsIt3'#JV&N,KS>/8LPUeDMN!LRNfT6`P*2#nQ'Rc(
+R@9V8SXuFGTqS6WUo(&fW2ckuXKAY/Yd(L?Za@0L\%&uZ]">Vf]tV7r^qmn)_o0O5`l?'ua8sE*
+rlb>c!6tMgs3L_lrmCbos3pqrs4./#rR_)%s4R>(s4dS/rS@M1s53e5s5F";rT!q=s5j4As6'FG
+rTOCKlg+N9s6]jSrU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$WgATb+gAK^rU$eZ3U$k;@kl0i?kQ'l1YkP?dYkbKt7/TLFiq_R3i:b.Z`q77J`:CeG;Ya8i
+<;fhn<rH,!=T)D&klBrHkPsZFjlHF$s5F%:p<ET\ilh>FrQG1UrbVOMqel@Nrc%XPr,V[U]QE^e
+nTOJIolg.RnT=DEp2p:Vs*"<as*4Qhrd"s!I!g?jIXZcsJ:W=OK2RAVL5(J?M2I4MN/`jYOHG]h
+Pa.N"R$a;1S"-%@T:hmPUSO``Vl6SpWiW>)YHY79ZEppG[^NZU\[oDc]Y2%o^VI\&_Sa=2`Q#p<
+aN2KFb5TQcbg"E3cMu2jd/DAldK%bpeGn)!f)=5"f`0Y'gAfq-h#-".hZ)L3i;_d9ir.p;jT"??
+k5XWEkl'cGlMp2Km/QGQmeuVSnG_tVo)J=]o_eC^pAamaq#:*gqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$WTDbG[TCR9bHL6"H62mbWVt6bcVoFGdK_Rt57IR&NV>[:hPP^OCPL5Nn;Ya8i<;fhn<rH,!
+=T)A(Y-"i&X8o=!WrAF^Rf8`HR.-I=R/Un#D#J5JDZ+MQE;4GNEr0pjFRjSEG4KkMG56:NFS'YJ
+FT-F_G5QRaGlN'gH4,(II!pElIXcluJV*lR;M9aYL51VBMMmFPNK0']OckllQ'IZ&R$jD4S=Q7D
+TV8*TUnsrdW2ZesXKAV.YctC<Za@-K[^WfX]">Vf]tV7r^qmn)_o0O5`l?'?aN;QHrlYAec-?75
+s3C\lrR(Yn!7Unrs4./#rR_&$s4RA)s4dS/r8%D0s53e5s5F";rT!q=s5j4As6'FGrTX@Is6KXM
+s6TgSrU9dUrpfsXs7?9_r:U*`s7cEcrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$U;uBPm;>W`U7+Og#7.3G<<:Wud<:EEG7d<M>7efCL7K-6Y;Z0Pj<7F\59`S)e;uK\o<Vfbp
+=8l>#=oM_,>lS%'>lI\&<VKJj;uKV[;u0JmC]8/KD>S5LDuO_NEVskSF1cVcFn'YGGP-.TFn'SG
+F7s_TFoQX_GQ2pfH2`*tH[L3hI=?WpJ:N3&re"+%Knb>;M2@+JN/WaVO-#KeP*D5sQC+&-R[]h<
+StD[LU8+N\VPgAlWiE/&Xfnt5Z*L^C[C3NQ\[f;`]Y(ql^V@S#_SX4/`Poj:a2l?DaiaV+!mJp6
+rm(Pi!7:\ls3^nrrRCkts47/#rn.8(rS%;+s4mP.s5*e5rS[_7s5O";s5a4ArT=.Cs60FGs6BXM
+rTsRO!:KgSs7$$XrUU![s7H6^s7ZKeqtU0drqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFC55s4Zq8n"TKKrM&kVs.\sJroj7D!9j%=!9iOKp93bcr3,i_r'^VEqVq;/rS[_5ro!4`n](FE
+qS`'EqG[>lrDi\prE&u#qH<g]rT=.@ro4(>iSa[ZrlbAepWVO<!,MRMrb_LLrbqaSq/Q=Qr,_:J
+k&og.n9*H.piZ(JolKhKrcS3`rHJ9ds*=Tis*F`nrd@XmIt*!!JV&N,KS>/8LPUeDMMmFPNfT6_
+OckomQ'I]'R$sM6S=Z=ETqS3VUnsrdW2ZetXKAY/Yd(L?Za@0L\%&uZ]=bei^;%Fu_8=(,`;[^[
+`lH0AaiV^)b5oi3rQYJjd*Vd>s3gqrrm^tus47,"s4IA)rS%;+rnRJ.s5*e5rS[\6s5O";s5a4A
+rT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUU![rq-0^rq?Bdr:p9erqcKgr;?Kknc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFCFTrLj+]s*F3\hg4d;mm6`G!2oCb!/AFGr.Of4r'gX\p8%Y`pnmtQaccL!rD`_qqH!Prr`K#"
+riQ1$"Kec,X/l6"!3,g_!1NYMp6b66rg3\$rbVRNqJQ:NrG_RPr,V^VmW@T6k&g*8g3376n9">E
+p2p:Vrc\6as*4Qhrd+Tk!.=co;1="EJ:N3&K7ei2L5(J>M2@+JN/WdXO-#KePE_>tQ^F//S"#q>
+StD^MU84T]VPgAlWiN5'Y-5(7ZEpmE[^NZT\[f>b]Y2%o^VI\&_Sa=k`<O?&aN2KFb5TQbbg$+3
+!mf6?rmCbos3ptss4./#r7Cu$s4RA)s4dP.rS@M1s53e5ro*n:rT!q=s5j4As6'FGrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?6^rUp0`s7cHdrqZQiqYU3gr;H0bJcFR+J,~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFC?[qbllNf1#I&mm6eLo2GTehadT6l::bApI+pJ!)rJes&8\lcqa7.qG[>lrDi\prE&u#qH<f&
+r`f2'!*enki`#hU!,MRMrb_LLrbqaSq/Q=Qr,_:Jk&og.n9*H.piZ(JolKhKrcS3`rHJ9ds*=Ti
+s*F`nrd@XmIt*!!JV&N,KS>/8LPUeDMMmFPNfT6_OckomQ'I]'R$sM6S=Z=ETqS3VUnsrdW2Zet
+XKAY/Yd(L?Za@0L\%&uZ]=bei^;%Fu_8=(,`;[^[`lH0AaiV^)b5oi3rQYJjd*Vd>s3gqrrm^tu
+s47,"s4IA)rS%;+rnRJ.s5*e5rS[\6s5O";s5a4ArT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUU![
+rq-0^rq?Bdr:p9erqcKgr;?Kknc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!Vg]-"*g]#q"U#r*HU$8<>60RS5Z/r4`YNN.b7/KFOiq_R3i;2@1i9eMS`qdUN`:_%G;uK\o
+<Vfbp=8l=u=oMV)kPaNGjlGI^ir7p7c2GidbPKHUbPo`QbPuDXD>S5MDuFYNEW'qUF7FA,Fm*r:
+Fl%<:FmsMEF7s_TFoHR_GQ2pfH2`*kH[L5?I8GBBJ:N3%JqJ]/Knb>;Ll$tGN/WaVO,oBcP*;,q
+QC!u,R[]h<StD[LTqeEZVPg>kWiE/&Xfen4Z*L^C[C3NR\[f;`]Y(qm^VI\&_Sa=k`=']+aN2KF
+b0.uPbg$.4s3C\lrmCbos3pqrs4./#rR_)%s4RA)rnIJ.rS@M1rnm\4s5F";r8[h<s5j4As6'FG
+rTX@Is6KXMs6]jSrU9dUs7-'Yrq$0^rUp0`s7cEcrqZQiqYU6hr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!TTD>/XHMVp?HLQ4J62meJVZ)=dL%n(570'+VV":J]PKB!c;uK\o<Vfbp=8l=u=oMV'XTPZ,
+XK25um$[R7m?dihrb_OMrbqaSq/Q@Rr,_CMgND_%n9*T2piZ(Jo5jVIrcS3`rHJ9ds*=Ti!df<B
+rd@UlIt3'#JV&N,KS>/8LPUeDMN!LRNfT6_P*2#nQ'Rc(R@9V8SXuIHTqS6WUo(&fWN)u"Xf\b1
+Yd(L?['d?N\@K/]]=bei^V@S#_SX4/rl#8ba2l?Dai_fMbfn?2cMu2jd/MGmdf7epeGn)!f)=5#
+f`0Y'gA]k,h#6(/hYuF2i;_d9ir%j:jT"??k5XWEkl'cGlMp2Km/QJQmeuVSnGi%Wo)A7\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk+)s*t~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!N;u]bg7*\6u7.*A?<W5ti;u9Po8AIaj7/KCQ;ta,f;tj8<:A%?Z;uK\o<Vfbp=8l=u=oMUu
+>lIso<;BJl<:*WaD#S;KDZ4SQE;=MPEr:"KFPCs%FRXG0G5-4LFRsSIFT-F^G5ZXbGlN'gH3/G@
+I/\OjIXcluJUrE*K7nr5L51SAM2I7NNK0'\OHPcjPa.Q$R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV-
+YctC<Za@-K[^`lY]">Vf]t_=t_8=(,`;[^``lH0AaiV]KbKS2Trm(Pi!7:_ms3gqrrRCkts47/#
+s4IA)rS%8*s4mS/s5*b4rS[_7s5Nt:s5a4ArT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUTsZs7H9_
+rq?BdqtU0drqcKgrVZTlnc"+>h#Dm~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXq:Yi'r7]bsqk<DOlp9q$!9j9akcjfbl*0nMqF1ABqr%2*rS[(^o#CFCq8E-IrDWYorDi\p
+r`B&#qcWl$s',NdroO:DjQ$3u!TDu9c2,Z_b5fc[bP9<Pb6,o1D/K/frGV[Sq/Q@Rr,_LPo6'_L
+k]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c!."Nh$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9a
+P*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4!mf6?rmCbo!7Unrs4./#rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@
+s6'FGrTX@Is6KXMs6]jSrU9dUrpfsXs7?9_r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXq4IPWgj7t*lp:ZLl_aN5`eF.TqF14Urh]=crh]LUerouqqNCeUrD`_qqH!SsrE/r"rEB5*
+s/l:%rN#jrl'_74nWs<ED/K/frGV[Sq/Q@Rr,_LPo6'_Lk]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c
+!."Nh$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/h
+WN*##Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?rmCbo!7Unr
+s4./#rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@s6'FGrTX@Is6KXMs6]jSrU9dUrpfsX
+s7?9_r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXo2EFnr^?*=!*/tsoi(`e!)r_b`^fbkqF1-VrDWDhbYJ"/rDWYorDi\pr`B&#qcWl$s',G,
+!*f5'kYqO\pf-`]s)%XNrGV[Sq/Q@Rr,_LPo6'_Lk]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c!."Nh
+$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##
+Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?rmCbo!7Unrs4./#
+rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@s6'FGrTX@Is6KXMs6]jSrU9dUrpfsXs7?9_
+r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[8+bNbUA:MQU?k22l1hOHYi2e\7/B=P7fM?Hi:,Y'i9\GR`qICC`;W^7<;fhn<rQ2!=Sl8#
+>5_\*>lNjmjlGL^ioB%WiS`Ygbj`gLbk]H[b56)UDuFYOEW'qUF7s_MFlml7FmaA=Fm!rAFmaAD
+F7s_TFoHR_GQ2pfH2`-iHN8HmI9qAPIt3'#JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQ'[l*R@B\9
+St;RJTq\?YV5L5iWiE,%Xfek3Z*L^C[C3NR\[f;`]Y2%o^VI\&_Sa=2`Q#s>aN;QHbKJ,Rc2Pui
+cd:&<d/qbFe,Iksec45!fDjM'g&0S(g]-(,h>c@3hu)F4iW%p8j8\3?jo"9@kPscEl2U&Kli$2L
+mJlVQn,MnWnbr%XoDeI\p&Fabp\agcq>U6equ$BirUKl<s4mX)~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[7f]4VTDtS`HeWl.H0dimVt-_[L<##C7/B=P7erkYV>R4eV>leWPLkukPQ"M[<;fhn<rQ2!
+=Sl8#>5_\*>l1T-X/`2!WiE%tl'_.1oU#GmrbqaSqJlISr,_RRpN>VAm<.i=m<.T8p3#eFoQ0_J
+rcS3`rHJ9ds*=Tis*F`nrdA+%It*!!JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'I]'R$jG5S=Z=E
+TqS3VUnsueW2ckuXf\b0Yd(L?['d?N\@K/]]=bhk^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?
+rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%D0s53b4s5F";r8[h<s5j1@s6'FGrTX@Is6KXMrpBaR
+rU9dUs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[7fZN];nYU"7-m2><W,nj;u0Jg8B46q7/B=P7fH<`;t3i*:B"2k<;fhn<rQ2!=Sl8#>5_\*
+>lIt$>h`6M;u:J3DuFYOEW'qUF7s_MFlml7FmaA=Fm!rAFmaADF7s_TFoHR_GQ2pfH2`-iHN8Hm
+I9qAPIt3'#JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQ'[l*R@B\9St;RJTq\?YV5L5iWiE,%Xfek3
+Z*L^C[C3NR\[f;`]Y2%o^VI\&_Sa=2`Q#s>aN;QHbKJ,Rc2Puicd:&<d/qbFe,Iksec45!fDjM'
+g&0S(g]-(,h>c@3hu)F4iW%p8j8\3?jo"9@kPscEl2U&Kli$2LmJlVQn,MnWnbr%XoDeI\p&Fab
+p\agcq>U6equ$BirUKl<s4mX)~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8+bN`UA1GTU?b,1l1V@KZ21]cYPCT_7K,dTi;2=2i;2@1huMa&`U_%A`Uq+I<;fhn<rQ2!
+=Sl8#>5hb(>lWpojlGL_j5T+ZiSi_Qrlt;`mE>4Irlb/\rGMUQrc%^RrGqgWpN61QhKJ@1m<%`<
+l?;lDm<&#Bp2p7Us*"<as*4Qhrd"WmI!kpA;gs4HJ:W9'K7ei2L5(J>M2@+JN/`jYO-#NfPE_>u
+Q^F20S"#t?StMdNUSO]_Vl-MoWiW>)YHY79Za7$I[^WcW]">Vf]tV7s_8=(,`5T^8a8X-fai_fM
+bfn>WcHjh`rmCbo!7Unrs4%,#rR_)%s4R>(s4dS/r8%D0s53b4s5Et:rT!n<s5j4As6'FGr9=7H
+s6KXMs6]gRrU9dUs7-$Xs7?9_r:U*`rqH?crqZNhqYU6hr;H-aJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8,f1VT)bP^He`r1H0[cdVu!:dLAlnhL?+'a7/B@O7fB.ZV#[CdV>c_VPLYilPPnJZ<Vfbq
+=8c7u=oMV(>Pqb(XT,@!WrK'^RIQ[=Qi1h$DuO_PEW'qUF8'eOFl%<1FmX;<Fm=/DFmX;DF7s_S
+FoQX_GQ2pfH2`*kH[L5?I8bTEJ:N3%JqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]e;St;UK
+TqeEZVPg>kWiE/&Xfnt5Z*UdD[^NZT\[oDc]Y2%o^qmn)_o0O5`lJ)"$d$Q7bKS2TcHab^d/MGm
+dK%bpeGn&!f)=5#f`0Y&gAfq-h#-".hZ)L2i;_d8ir.p:jT"??k5XWEkks]FlMp2Km/QJPmeuVS
+nGi%Vo)J=]o_eC^pAXgaq#:*fqYL*fr;?N_rdk+)s*t~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8,cK^;nYWc62adV;u'Dd8*3A'8,5RL7K,dA<5_Q1<;fhn<rQ2!=Sl8#>5hb(>lIt$>hE$M
+;uLV5DuO_PEW'qUF8'eOFl%<1FmX;<Fm=/DFmX;DF7s_SFoQX_GQ2pfH2`*kH[L5?I8bTEJ:N3%
+JqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]e;St;UKTqeEZVPg>kWiE/&Xfnt5Z*UdD[^NZT
+\[oDc]Y2%o^qmn)_o0O5`lJ)"$d$Q7bKS2TcHab^d/MGmdK%bpeGn&!f)=5#f`0Y&gAfq-h#-".
+hZ)L2i;_d8ir.p:jT"??k5XWEkks]FlMp2Km/QJPmeuVSnGi%Vo)J=]o_eC^pAXgaq#:*fqYL*f
+r;?N_rdk+)s*t~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!(Z_9c_C0-r1a.blTt++r94.EoW[_fnZ_Mdq*b'JrC-eGp>Gu.qV_D4!64EFlc/h@ou-l0
+rDi\pr`B&#qcWo%r`f8)s'5Zfjo4??irnB#i8ESjc2GlObPKH]bPTE^DZ4SQE;FSREr:"QFS^.R
+G4BeGG4B_BFR"#?G4TkDFS0_JFT-F^G5ZXbGlN'fH4,(II!pElIXcluJV*lR=G2B_L51SAM2R=O
+NK0'\OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?N\@K/]]=bhk^V@S#_SX40
+`Q#s=aN2KGbKJ,Sc-FV\cd;[=!n,QHrm^tus472$s4IA)r7_2*s4mP.s5*e5r8@S5s5Nt:s5a4A
+r9"%Bs60CFs6BXMrTsONs6fjSs7$'Yr:9mZrq-0^rq?BdqtU0drqcKgr;?Kknc"+>g])d~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!(Zs[r1F"^q0V@Pi-G9IlTt*>q53n@re90_n:g[+qF1?PrM9CgrMK:brKR/Bc]\<-rDi\p
+r`B&#qcWo%r`f8)s'>Z+r2]gsri,@S!1NeQm?md;!,hdSrG_UQrc7pXpN67Sp3,tMn94>Em<%W9
+o60_Jm<&#BolU1Urc\6as*4QhrH\iuI!g?jIXZcsJ:W=OK33e\L5(J>M2@.LN/`jYO-,TgPEhE!
+Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K[^`lY]">Vg^;%Fu_8=(,`Poj;a2l?Db0.uP
+c-=PZcd0u;d/qbFe,Iksec45"fDjM'g&0S(g]-(,h>c@3hu)F3iW%p8j8\3?jo"9@kPscDl2U&K
+li$2LmJlVQn,MnWnbhtXoD\C\p&=[bp\Xabq>U6equ$BirUKl<s4dR(~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!_63hpJ\^nlTtJKpf$od!(ccQh+7$*q*b'JrC6'O`(p>3rDi\pr`B&#qcWo%r`f8)s'5Y1
+>PVP(>6%pX<;TSoDZ4SQE;FSREr:"QFS^.RG4BeGG4B_BFR"#?G4TkDFS0_JFT-F^G5ZXbGlN'f
+H4,(II!pElIXcluJV*lR=G2B_L51SAM2R=ONK0'\OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2Zet
+XKAY/Yd(L?['d?N\@K/]]=bhk^V@S#_SX40`Q#s=aN2KGbKJ,Sc-FV\cd;[=!n,QHrm^tus472$
+s4IA)r7_2*s4mP.s5*e5r8@S5s5Nt:s5a4Ar9"%Bs60CFs6BXMrTsONs6fjSs7$'Yr:9mZrq-0^
+rq?BdqtU0drqcKgr;?Kknc"+>g])d~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8-.N#pY*HXrM/XDo'-/;rTWjVm]l8cnuqjWqaLEPq;D20rS[S3s2P#Vq8W9Ml,NV>pr!/3
+rDi\pr`B&#qcWo%r`f8)ra#P1rT++Aj5L!q!T2i2c2GlMb5fc\bPoZaDuO_PEW'qVF80kRFnp4@
+GP$(KFmjG8Fo-@OFm=)EF7aSRFoHR^GQ2pfH2`-iHN8HmI0"eHrd\7)JqJ]/Knb>;Ll$tGMi<US
+O,oBbP*2&pQ'Rf)R@B\9St;RJTq\?YV5L5iWiE,%Xfen4Z*L^C[C3QS\[oDc]Y2%o^qmn)_o0O5
+`lH0Aai_fMbfn>WcHjh`rm:eqe'n<Gs4%,#rR_)%s4RA)s4dS/r8%D0rnm\4ro*n:r8[h<roO+@
+roa=FrTX=Hs6KXMrpBaRrU9dUrpfsXrq$0^r:U*`rqH?crqZNhqYU6hqu-'aJcFL)J,~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8-#@\TE(V_T_EfsHK9AMHKmfeVu!:`LAch^L@U&o7/KFN7f9(]V>R4hV>R1jV>QSQPLGZp
+<;fhn<rQ2!=Sl8#>5hb'>lJ%/?N$r+X/c&rnX9?EqO-];rg3Y'rc%^RrGqjXpiQ@Tq0(eBoQKbI
+mr[`8qf_IOl?)iCoQ:(Trc\3`s*4Qhrd+Tk!.=co!IfOtJ6[YWK7ei2L5(J>M2@+JN/WaWO-#Ke
+P*D5sQC+&-S"#q>StD^MU84T]Vl-JnWiN8(Y->.8ZEppG[^WcW]">Vf]tV7s_8=(,`5T^8a2l?D
+b0.uPbg"GYcd0u;d/qbFe,IkseH"2!fDjM'g&9Y)g]-(,h>c@2hu2L4iW%p8j8\3>jo+?@kPscE
+l2KuJli$2LmJlVQn,MnVnbr%XoDeI\p&Fabp\agcq>L0dqu-HirUKl<s4dR(~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8H2Z`;sd$:7fPpU7e&q462adY;tj8i8G,L/8Ff:H7/KFN7ep$]<W,np<<-";:&n8l<Vfbq
+=8c7u=oMV(>Ph\)?2n42>Ph\(>6%pU<;ohrDuO_PEW'qVF80kRFnp4@GP$(KFmjG8Fo-@OFm=)E
+F7aSRFoHR^GQ2pfH2`-iHN8HmI0"eHrd\7)JqJ]/Knb>;Ll$tGMi<USO,oBbP*2&pQ'Rf)R@B\9
+St;RJTq\?YV5L5iWiE,%Xfen4Z*L^C[C3QS\[oDc]Y2%o^qmn)_o0O5`lH0Aai_fMbfn>WcHjh`
+rm:eqe'n<Gs4%,#rR_)%s4RA)s4dS/r8%D0rnm\4ro*n:r8[h<roO+@roa=FrTX=Hs6KXMrpBaR
+rU9dUrpfsXrq$0^r:U*`rqH?crqZNhqYU6hqu-'aJcFL)J,~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^d%Ds4dG)j.bq9n"T&4rTNq=!9j@Fj0AWir3>=eq*b'JqaUMAnDX>cs2FQK!6=]Nr5\`T
+oYggKr`/eqr`B&#qcWo%r`f8)ra#M0"CL<Qjl?@""QA:shr+=Tr63m<s)@jTrGqjXpiQFVq0(M:
+p3,tKmrZs"eo^n6rc\3`s*4Qhrd+Tk!.=cos*dstJ:N3&JqJ]/Knb>;Ll$tGMi<XUO,oBbP*;,q
+QC!u+R[]e;St;UKTqeEZVPg>kWiE/&Xfnt5ZEpmE[^NZU\[oDc]tV7r^qmn*`5T^8a2l?Db5TQg
+bg"GYcd0u;d/qbFe,Ihue^i=NfDjM'g&9Y)g]$",h>Z:2hu)F4iVqj7j8\3?jo"9?kPscEl2KuJ
+li$2LmJlVQn,DhVnbhtXoDeI\p&=[bp\Xabq>U6dqu-HjrUBf;s4dR(~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^d$^q4RA,n9Y%[qg.@Lks>9For%\ao7m6ugkPKUq*b'JqaUL[n>?)InWWR-r0-Q3r`/eq
+r`B&#qcWo%r`f8)ra#M0#[a[6X/`2!WiH#sm[=*DpmLH8s)@jTrGqjXpiQFVq0(M:p3,tKmrZs"
+eo^n6rc\3`s*4Qhrd+Tk!.=cos*dstJ:N3&JqJ]/Knb>;Ll$tGMi<XUO,oBbP*;,qQC!u+R[]e;
+St;UKTqeEZVPg>kWiE/&Xfnt5ZEpmE[^NZU\[oDc]tV7r^qmn*`5T^8a2l?Db5TQgbg"GYcd0u;
+d/qbFe,Ihue^i=NfDjM'g&9Y)g]$",h>Z:2hu)F4iVqj7j8\3?jo"9?kPscEl2KuJli$2LmJlVQ
+n,DhVnbhtXoDeI\p&=[bp\Xabq>U6dqu-HjrUBf;s4dR(~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^crdqc!5XqF:KTp.#!Nl:1J9ks>;Jq,?udqagENgdq*.q*b'JqaUK_n5[G&r`/eqr`B&#
+qcWo%r`f8)ra#M0!FK(0>l._*?-Q@KE;OYRErC(SFSp:WG2%67G4B_DFO>6^FT-F^G5QRaGlN'g
+HN/<lI/\QoIT:lJJ:W<(K7ei2L5(J>M2@+JN/`jYO-#KePE_>uQ^F//S"#t?StMdNUSO]_Vl-Mo
+WiW>)YHY7:Za7$I[^WfX]">Vg^;%Fu_8=+.`Poj;aN2KGrlYMic-FV\cd;[=!n,QHrmV#"f%0iP
+s4IA)rS%;+rnRJ.rnd\4r8@V6ro3k9s5a4Ar9""As60FGrp'OLrTsONs6fjSrp]sXr:9mZs7H6^
+rq?BdqtU0drqcHfrVZTlnG\"=g])d~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<Zh#cBdg]#q,U\1A9U[b)B629[:l/8l*Z2-lb7JfOS8,_B7iVUXla8![Ka8EsRa8<mM
+`;ip7<rQ2!=Sl8#>5hb'>lJ%.?N"43jlHF$s5Et8!9*^tr63p=qJlLTrH%aUr,qjZf6?q3noa;@
+eTKGbrH8*_r-/0c!."Nh!df<Brd=frJ,Xt&JV&N,KS>,7L51SAMMmFPNK0'\OcklkPa.Q$R$jD4
+S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K/^]Y(ql^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjh`
+rm:bpe,IkseH"2!fDjJ'g&9Y)g]$",h>c@2hu)F4iVqj7j8\3>jo"9@kPscDl2U&Jli$2LmJlVQ
+n,DhVnbhtXoD\C[p&Fabp\agbq>U6equ$BirUKl<s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<ZU&1M<Hi&-QH0@QkVXgY\L['WoLZ!p`7/B@L7K>sVV=:AZPj">/P4Xt3OoSMY<rQ2!
+=Sl8#>5hb'>lJ%.?N"72X8f3rW;r=ERI6I=EW1"WF80kTFo$:5GP64NFmO5#Fk1[5FoHR^GQ2mf
+H2W$jH[L5?I0"eHrd\4(JqJ]/KnY89LPUeEMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/h
+WN*##Xfek3Z*L^C[C3QS\[f>b]Y2%o^qmn)_o0O5`lH0Aai_fMbg"GYcd0u;d/h\Erm^tu!7q,#
+s4@>)rS%;+rnRJ.s5*b4r8@V6ro3k9s5a1@r9"%Bs60CFs6BULrTsONs6fjSrp]sXr:9mZrq--]
+s7ZHdr:p6drqcKgr;?Kknc"+>gAc[~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<Z<;TVo7J9488+9">7Hd&;<;KPd<52!#7/B@L7K>sW<:Elf<5hT4<Vfbq=8c7u=oMV(
+>Ph\)?2e1/?i"%->68&8;pJA=EW1"WF80kTFo$:5GP64NFmO5#Fk1[5FoHR^GQ2mfH2W$jH[L5?
+I0"eHrd\4(JqJ]/KnY89LPUeEMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##Xfek3
+Z*L^C[C3QS\[f>b]Y2%o^qmn)_o0O5`lH0Aai_fMbg"GYcd0u;d/h\Erm^tu!7q,#s4@>)rS%;+
+rnRJ.s5*b4r8@V6ro3k9s5a1@r9"%Bs60CFs6BULrTsONs6fjSrp]sXr:9mZrq--]s7ZHdr:p6d
+rqcKgr;?Kknc"+>gAc[~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^lqAs4mOIoV1-9oV1M7qrdk?q!#T"qF(0KqaUTUlf%larPmU4oZ$mLqc<\trE/r"r`];*
+qcs,+ra,J/"Qe_)ioC!rs5<Xrr63s>rGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0cs*=Ti
+s*F`nrdFfq=atsPJUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``Vl6Sp
+X0&M,YctC=Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"fDjM'
+g&9Y)g]-(-h>Z:2hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[p&Fab
+p\Xabq>U6dqu-HjrUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^m'_rLs7agjAsFkBZ5Vqkiq^pP8$giJ77tqF19Ns$us_s/,[iq54%RplkT<h37i$qc<\t
+rE/r"r`];*qcs,+ra,J/!ir?$q5O=[i0j/'rGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0c
+s*=Tis*F`nrdFfq=atsPJUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``
+Vl6SpX0&M,YctC=Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"
+fDjM'g&9Y)g]-(-h>Z:2hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[
+p&Fabp\Xabq>U6dqu-HjrUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^lobs&8eai^`K-o0qh.lr;"rqFUNOqF19Ns$uTZqc(O0qc<\trE/r"r`];*qcs,+ra,J/
+!aK#:qHO#+rDV*CrGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0cs*=Tis*F`nrdFfq=atsP
+JUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``Vl6SpX0&M,YctC=Za@-K
+\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"fDjM'g&9Y)g]-(-h>Z:2
+hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[p&Fabp\Xabq>U6dqu-Hj
+rUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hH_h>?(.h>3o<U>;U=U?4c=kP=?=l2@sVZMLojZM1^&7/B@L7f>jWir7m:iqhX4iW.s:
+imc$>`r&m:=8l>!=oMV(>Ph\)?2e1-?iFF5j8S';i;hg8iV1Umbi$\EEW1"WF89qVFo-@KGPQLI
+GPH@RFm!l#FkLm8Fo?L]GQ2pfH2W$jH[L5?I0"eHrd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_Ockom
+Q'I]'R$sM6S=Z=ETqS3VUnsueW2cl!Xf\e2Yd1UA[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uP
+bg"GYcd;[=!RfHreGn&!f)F;$f`0Y(gAfq-h#-".hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2J
+m/QJPmeuVRnGi%Vo)J=\o_eC]pAamaq#:*fqYL*er;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hKZUAgkcI.2LMHKKM861^uNVt>c=LAH]&L?"'d7/B@L7f>jKV>@(dPkUC7P2VW&<rQ2"
+=Sl8#>5hb'>lJ%.?Me+/?im=+W;3FlR,+2(Qi`[qEW1"WF89qVFo-@KGPQLIGPH@RFm!l#FkLm8
+Fo?L]GQ2pfH2W$jH[L5?I0"eHrd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_OckomQ'I]'R$sM6S=Z=E
+TqS3VUnsueW2cl!Xf\e2Yd1UA[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uPbg"GYcd;[=!RfHr
+eGn&!f)F;$f`0Y(gAfq-h#-".hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2Jm/QJPmeuVRnGi%V
+o)J=\o_eC]pAamaq#:*fqYL*er;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hKZ<;ohk7drq97dEM*61%Xj8Gc!U7/B@L7f>jN<VKJ3:Ae/l=8l>!=oMV(>Ph\)?2e1-
+?iFI.>lS++;q4kIEW1"WF89qVFo-@KGPQLIGPH@RFm!l#FkLm8Fo?L]GQ2pfH2W$jH[L5?I0"eH
+rd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_OckomQ'I]'R$sM6S=Z=ETqS3VUnsueW2cl!Xf\e2Yd1UA
+[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uPbg"GYcd;[=!RfHreGn&!f)F;$f`0Y(gAfq-h#-".
+hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2Jm/QJPmeuVRnGi%Vo)J=\o_eC]pAamaq#:*fqYL*e
+r;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapi[ptkb?ntP!9q4d";rT=%@p?;%Rpp9q+oX"4rq6U(-qaC9LqaUKRrSmk;ro++AioB([
+jSn3=iq1:gaT'<TaSa'YaS<gJ`r/s;=8l>!=oMV'>Pqb*?2e1-?iFI5@0GWMj5T(ti;V^0c1]BA
+bPlP\F8C"VFo6FQGO'M@GPH@SFlRT$FkLm8Fo?L]GQ2pfH2W'hHN8HmIK+b%It3'#JV&N,KS>/8
+LPUeDMMmFPNK0'\OcklkPa.Q$R$jD4S"6.BTV8'SUnjlcW2ZetXKAY/Yd(L?['d?O\@K2_]Y(tn
+^VI\&_o0O5`lH0Aai_fMbg"GYcd;[=!RfHre,n1Of)F8&f\+sVgAfq-h#6(/hZ)L2i;_d8ir%j9
+jT"?=k5XWDkks]ElMp2Jm/QJPmelPRnGi%Vo)A7\o_eC]pAXg`q#:*gqYC$er;6H_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapo]USI[[s*aclnpBtSid'ZPmABK1p4h7UqaC9LqaUKRoVMA\qipf<p6,68!0lf5rDro!
+r`K&#r`]8)r*95,ra,J/ra>b7rM]dsql/YErg<DIr0[JOrc7sYqK2XXr-%USlZhf@pic=Qj)j1$
+fl[18rHA*_s*4QhrHeKj!.=cos*e7'J:N3%JqJ]/Knb>;Ll$tGMi<USNfT6`P*2#nQ'Rc(R@9V7
+SXuFGTqS6WUo(&gWN*##Xfek3Z*L^C[C3QS\[oDc]Y;.q^qmn*`5T^8a2l?Db0.uPc-FV\d/MDn
+daS3F!nGlQrmq5(g"H>Xs4dS/rS@M1s53b4s5Et:r8[e;s5j.?s6'CFr9=4Gs6KULs6]gRr9s[T
+s7-$Xrq$0^r:U'_rqH<brqZQiq>:-gqu-'aJcFF'J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapo]<E8lpgd^9lk!AB6_asbuqaC9LqaUKRqc32dh+drGlV@CZr`B)$qcWo%rEK2)ra#M0
+qd9>1s'b\-s'>@tfMqijrH%gWr,qp\nTX;Dm<A>Kol];:hf[UorH8'^r-/0cs*=Qhs*F`nrdFfq
+?%7BTJUrE*K7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F20S"#t?StMdNUSO]_Vl6SpX/rG+YHY:;
+Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS5VcHjl:d/h\ErmV#"f%0iP!nc2ZrS%;+s4mS/
+s5*e5r8@V6ro3k9roF+@qr[qAroj:Erp'OLr9XINrpK^Qs7$'Yr:9jYs7H6^rq??cqtU0drqcHf
+rVZQknc"+>g&HR~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhEWhY!Z6U>MaDU?+]>jne-8k5a`0[H=jgZhm/f7JfRN7f_TIj8e6:j9=T)jQ#:]qoA]W
+rQ"`TqoJiZr5nrZs2k5\r5\KMs&T,#r`K#"r`];*qcs,+s'GS0ra>_6s'bufq;D>5p<E6Rm)oCO
+r6#(\rc@mWrH8$]o695>ms"SNp3#87icWssrH8'^r-/0crd"Khs*Ocnrd=frJ,Xs!JV*lR=bMK`
+L51SAM2I4MN/`mZOHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^V@V%_Sa=2`Q-'@ai_fMbg"GYcd0tcdF-MCe,n1Of)F8&f\+sWgAfq-h#6(/hZ)L2i;_d8ir%j9
+jT"?=k5XWDkks]ElMp2Jm/HDPmelPQnGi%Vo)A7\o_\=]pAXg`q#:*fqYL*er;?N_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhE\U\pk[I.M^UHKKM762dY\Vt-_TL\?JWL\jL:7JfRN7f]C`V?!IgVZ!CmW;)VPPP:79
+PPCC6PQ+\_=8l=u=oMV(>Ph\)?2n7.?iFI4@K0d<Wi;uoWpH/QR/<<LR.m!KR/E?PErL.UFT$@[
+G4Tq<GjfkPG4p(9FQ.GsFT$@\G5QRaGlE!fHN/?lI/\NpIXh?I!J,k%K3<k]L5(J>M2@+JN/WaW
+O-#KeP*D5sQC!u,R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%G!_SX4/`Pom=
+aN;TJbKS5VcHjh`dF$CkrmV#"f%0iP!nc2Zrn@D,s4mS/s5*e5r8@V6ro3k9roF+@qr[qAroj:E
+rp'OLr9XFMs6fgRrp]sXr:9jYs7H3]s7ZHdqtU0drVHBfr;?KknG\"=g&HR~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhE\<W#hL7cm/$61.\P<P_3+8c(pQ7JfRN8,H<X<8C=G:[q3[<rQ2"=Sc2">5hb'>lJ%/
+?Me+/@/aU7@ej70?!d/%iD]eUr)<Z:rc@mWrH8$]o695>ms"SNp3#87icWssrH8'^r-/0crd"Kh
+s*Ocnrd=frJ,Xs!JV*lR=bMK`L51SAM2I4MN/`mZOHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6Sp
+X/rG+YHY:;Za@-K\%&u[]=bhk^V@V%_Sa=2`Q-'@ai_fMbg"GYcd0tcdF-MCe,n1Of)F8&f\+sW
+gAfq-h#6(/hZ)L2i;_d8ir%j9jT"?=k5XWDkks]ElMp2Jm/HDPmelPQnGi%Vo)A7\o_\=]pAXg`
+q#:*fqYL*er;?N_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqK[hYl?WU\U_]UZ=]BjQ5Lrk5OQ*[HFpoZhq'+7/KFM7eoRNjo4?>jT+HAjT4MbrQ"`T
+rQ5#ZqT8WWqT8WUqT&NRrE&u#qcWo%r`f8)ra#M0r*TG2raGb7s5Nn6!93[rn]^UJq8rc^F*%/!
+rH8$]olp"PqK_XVn9=\OpN>85j`TC$qfVm]qfi'brd"Khs*OcnrdAL0It*!!JUrE*K7nr5L51S@
+M2I4MN/`jYO-#KePE_>tQ^F/.S"#q>StD[LU84T]Vl-JnWiN8(Y->.9Za7'J[^WfX]"G\h^;%J"
+_SX71`Q#s>aN;TJbfn>WcHjkbdF-LmeC<%"f)F8&f\+sWgAfn-h#6(/hZ)L2i;_d8ir%j9jT"?=
+k5OQDkkjWElMg,Im/HDPmelPQnGi%Vo)A7[o_eC]pAamaq#1$fqYC$er;6H^rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqKWU[EO&HhD^\H1?4A5m!m[VYR.eV?!O_LXCkS7/KFM7eoRKVZNfpVu3LnWVht\Q26aB
+PPC=:POFb6PPnS^=Sl8#>5hb'>lJ%.?Mn10@/aU5@fEA'WpZ;MR/WNLR/WNLQi`[sF89qVFo6FU
+GOp(UH1H4LGPQFVFkh*#Fkq0:FoHR]GQ2peH2`-iHiJKmI;+.[It3'#JV&N,KS>/8LPUbCMMmFP
+NK0'\OHG]iPa.N#R$a;2S"-(AT:hmPUnjibVl6VqX0&M,YctF>ZaI6M\%0&\]Y(ql^VI\&_SjF4
+`lH0Aai_fNbg"GYcd:(edaQ[peCE.$rmq5(g"HAYs4[P/rS@M1s53b4s5Et:r8[e;s5j.?roa=F
+qs".Grp0LKrpBaRr9sXSs7-$Xrq$-]r:U'_s7cEcrV?Hhq>:-gqu-$`JcFF'J,~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqKW<V]/b7f>j<7eoLG7f>d:5lt%c<;onk;ufq58GkmQ7JfRM8+0FW<TR!P:B4/d:\RTa
+:]*ud=8l>!=oMV(>Ph\)?2e1.?iFI4@Js[4>lJ"/?LUnW<;BGo<-*-VFT$@[G4g(NGku^VGjoqQ
+G5$.7FQIZ$FSg4[G5HL`GlE!fHN/?lI/\P.IXcitJ:W9'K7ei2L5(J>Ll%"IN/WaVO,oBbP*;,q
+Q'[l*R@B\9St;RITq\?YV5L5iWiE,%Xfen4ZEpmF[^NZU\[oGd]tV7s_8=(-`Poj;aN2KGbKS2T
+cHab_dF$Cke'umtf%0iP!nc2Zrn@D,!8RP/s5*e5r8@V6ro3k9roF+@qr[n@s60@Es6BULr9XFM
+s6fgRrp]sXr:9jYrq--]rq?BdqtU-crqcHfrVZQknG\"=g&HR~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`ptte@h4sP:r1i:<ro=%>roO"=roa0elF#c]qm6:-r'^BMqaUBOrT3q=s5sXLkND'l
+kNM.-a8j?YaSO$Vb5TNZb4<[OaSs6[=8l>!=oMV(>Ph\)?2e1.?iFI4@JjU7@fYNciW%p0c0rmO
+bP'*TFSp:[G4p.TGj9SKGk-(SG5$.3FR"#*FSg4ZG5HL`GlE!eH3/G@I/\QoIK4lsJ,t4Qre"O1
+Knb>;Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6SXuFGTqS6WUo(&fWN)u"Xf\e2Z*L^C[C3QS\[f>b
+]Y;.q^r!t+`5T^9aN2KGbKJ,ScHab_dF$Cje'umtf%0iP!SH*(g&g$ah#6(/hZ)L3i;_d8ir%j9
+jT"?=k5OQDkkjWDlMp2Im/QJPmelPQnGi%Vo)A7[o_eC]pAXg`q#:*gqYC$dr;?N_rdk+%s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`pnR/&o6]JCj$E[@r20Ikr20LlqhXj!e;!lhqF19Nq+(C]r2BRnqPsCWpltQ;rfZi9
+nWa&Tr`K&#r`];*qcs,+ra,M0ra>_6r*o\9!3,donX8s8!1E8BqK2XXrH@mYpiu(LpNZ7Qq0)LT
+fQ?D$hK8X;rHA'^s*4NgrH\NlI!kpAs*artrdY$#K)UC/KS>/8LPUeDMMmFPNK0']OcklkPa.Q$
+R$a>3S"6.BTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K/^]Y(tn^VI_'_o0O5a2l?Db0.uPc-FV\
+d*^7hdaQ^qe^i=Nf)aOWrRq>-gt_kas5*e5rS[_7ro3k9roF+@qr[n@s60@Erp'OLqs=@MrpK^Q
+rp]sXr:9jYrq--]rq??cqtU0drqcHfr;?KknG\"=f`-I~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`pf75_oLI:u!(Gp6r`/ksqGdSr<E8ofcUdh$r'^BMqaUBOnPoHej\GVImS<^Vs&]2%
+qcWo%r`f8)ra#M0r*TG2raG_6s'u%5rE]G0m8NCOp/Cg0r,qs]p36:Vl?W,KnosnQpN>,1l?1s*
+qfVj\qfi'brd"Hg!df<BrdFfq!.Xuu!J,k%K3j4bL5(J>M2@+JN/WaVO-#KeP*;,qQC!u+R[]e;
+St;UKTqeEZVPg>kWiE/&Xfnt6ZEppG[^WcW\\#Me^;%Fu_SX4/`Pom=aN;TJbKS5VcHjkbdF-Il
+eC<%"f)F8%f\-5W!o)McrS@M1s53e5s5Et:r8[e;s5j.?roa=Fqs"+Fs6KRKs6]gRr9sXSs7-$X
+rq$-]r:U'_rqH<brqZQiq>:*fr;H-aJcFC&J,~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd9&AG$ht3`.UZ\HQU]3[A62]^Bj8J';jo+?;[d(9t[-Y-qZM[,f7JfRK8,VQJkQgA9
+l07Kul08)dq8iWZqoSBNo?%$TqoJiZr`K#"r`]>+qcs,+ra,J/s'Yh7qdTS8s((rao?HXGr6+fV
+qfMdZrH@mYq0:tGpiuCSq0)OUf6$8"j)k-?rHA$]s*4NgrH\NlI!kpAs*artrd\.&JqAW-KS>/8
+LPL\BM2I4MNK0'\OHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^VI\&_Sa@3`lH0Aai_fNc-FV\d/MDsdaQ^qe^`7Mf)aOWrn@D,s4mV0s5*e5rS[\6s5Nt:roF+@
+qr[n@roj:Erp'LKr9XFMrpK^Qrp]sXqssdYrq--]rq??cqtU0drVHBfr;?HjnG\"=f`-I~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd8tr'VU[W[%HN8BhHgZ4UHiHFn62[SOVYQ&>LXq4X7/KFM7e]FOW;W^mWr9!hQ2?g2
+PPUODQ26aE=Sc2">5qh(>lJ%.?Me+0@/aU3@fKs<AGN7tRG4,+FT$@\G4p.UGiX/FGk6.TG5-43
+FQmr.FS^.YG5?F_GlE!eH3/G@I/\QoIK4lsJ6@GTJqJ]/Knb>;LPUeDMMmFQNfT6_OckllQ'IZ%
+R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn)_o9U7a2l?Db0/#RcHab_
+rm:que'umte^j`O!SH*)gAfq-h#?.0hZ)L3i;V^8ir%j9jT"?=k5OQCkks]ElMg,Im/HDOmelPQ
+nGi%Uo)J=\o_eC]pAXg`q#:*fqYL*er;6H^rdk+%s*t~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd8lSdd<Vf8\8'ja*6KCH1<V0>f8^Bs)7fZ$V7/KFM7e]FE<;fh`:Amo^:B+,W:Amuf
+=Sc2">5qh(>lJ%.?Me+0@/aU3@fKs<AGKNq;tO&\;u:\8Fo?LWGPQLEH2)XUGPQFWFk:a"FlRT?
+Fo?L[GQ2peH2W$jH[L5?IK+`rJ,Xt$JV&K+K7nr5L51P?M2@+JN/`jYO-#KeP*D5sQC!u,R[]h<
+StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_SX40`Q#s>aN;TJbg"GYcd;[=#1CuM
+eCE+#rmq2'g&B_*g]-(.h>c@3hu2L4iW%p8j8S->jnn3>kPj]Cl2KuIlhp,KmJcPOn,DhVnb_nW
+oD\C[p&=[ap\Xabq>L0dqu$BhrUBf;s4I@%~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq;:_<m%aKSm\TfVr^,^4r8@V6s5F%=roF"=l*gApqm?=.m'?OWqaLBOpI>3SrTO1D
+qW\+IlM\j)aSEsBb4NgOb5PN?=oMV(>Ph\*?2e1-?iFI5@JaO5A,g'?A`E^J!T;u:iUkCZbl#Z[
+b5HG\Fo?LXGPZR@H22^WGPQFWFjtO!Fm!lBFo6FZGQ2peH2W'hHN8HlI:I_UIt3'#JV&N,KS5&6
+L51SAM2I4MN/`jYO-#KePE_>tQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h
+^;%J"_Sa=2`Q$!?ai_fMbg"GYcd:(edaS3F!S,d#f)aOWrn@D,!8RP/s5*e5rS[_7s5Nt:roF+@
+qr[n@roj:Erp'LKqs==Ls6fdQs7$$Xr:9jYrq--]rq??cqtU-crqcHfr;?KknG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq4mM.m<ekZj*Ublj[&g>rhTIgr20"?q1mXXr'^ENqaU<M!(d'fql9Oo!N`@#QLL1>
+PjFV1PkgUD=Sl8#>5hb'>lS+/?Me+/@/j[4@fBm;A-$8Ar2Tn!X/kfZhO+7`rH8'^pNQIYhKepA
+oQU+SpiY).lZMB4q/uUYqKMsard"Hgs*F`nrI&1)It*!!JUrE*K7no3L5(J>M2@+JN/WaVO,oBb
+P*;,qQ'[l*R@B\9SXuIHTq\<XV5C/hWN*##Xfen4Z*UdD[^NZU\[oGd]tV7s_8=+.`Poj<aN;TJ
+bKS5VcHjkbdF-MCe,e+Nrmq2'g&B_*gAp%-h>c@3hu2L5iW%p8j8S->jnn3>kPj]Cl2KuIlhg&J
+mJlVOn,MnVnbhtWoD\C[p&=[ap\Xaaq>U6dqu$BirUBf;s4@:$~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq,QiQd74+%j[&oHr)EYqq,Z`OhFRQ7r'^ENqaU<M!(d&frD`hsqGmPrrCucVohGE\
+qb?QTr`K&#r`];*qcs/,ra,J/ra>b7qdTP7s'u+@rETG/?2e*l;ta2_;uLh:Fo?LXGPZR@H22^W
+GPQFWFjtO!Fm!lBFo6FZGQ2peH2W'hHN8HlI:I_UIt3'#JV&N,KS5&6L51SAM2I4MN/`jYO-#Ke
+PE_>tQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h^;%J"_Sa=2`Q$!?ai_fM
+bg"GYcd:(edaS3F!S,d#f)aOWrn@D,!8RP/s5*e5rS[_7s5Nt:roF+@qr[n@roj:Erp'LKqs==L
+s6fdQs7$$Xr:9jYrq--]rq??cqtU-crqcHfr;?KknG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9DRK6V#-qWV!=fUV#3RA62f[?hu;R5iVha9j5[TE[JdK1ZgP-t7/KFM7eT=R8EoC5
+lMKoEb506Cb4WmPaoGQ@=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*<AHLiKi;MU7iq(Fbbl#``bkoT^
+b5ZS_Fo6FXGPZRYH1$"PH2;dXGPZLXFjkHpFn9_KFo-@YGQ)jeH2N!gHN8HlI0+kIJ,Xs!JV*lR
+?%dodL51S@M2@+JN/WaWO-#KeP*;,qQC!u+R[]e:St;RJTq\?YV5L5iWiE,%Xfen4ZEpmF[^N]V
+\\#Me^;%Fu_SX4/`Q#s>aN;TJbg"GYcd:(edaHUoeCE.Lf)aOWrn@D,!8RP/!oDhlrS[_7s5Nt:
+roF+@qr[n@roj:Erp'LKqs==LrpK^Qrp]pWr:9jYrq--]rq??cqY:'crqcHfr;?HjnG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9DP@OI-u@\HKTYQ6KUT6UApqbUAUedU]@7ZLt.:\LAaO;7JfRJ7fl5]Wr&jsWr9!s
+XSeCSQ1gI8PPUO>PlOq`=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*<AbiCpRI-@AQhQmIFT-F\G5-:X
+GkZLOHM2X\Gk?4VG5-4/FQR`;FS9kSG5?F^GlN'eHN/<lI/SHpIXckHJ,t4Qre"L0Knb>;LkpnE
+MMmFPNK9-^OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl6VqX0&M,YctF>ZaI6M\@K/^]Y(tn^VI_'
+_o0O6a2l?Db0/#RcHab_dF$Cje'umtf)F8%f\-8Xs4[P/rS7P3hr"Cjs5F";r8[e;s5j.?roa:E
+r9=4Grp0IJrpB^Qr9sXSrpfpWrq$-]r:U'_rqH9arqZQiq>:*fqu-$`JcF@%J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9)qrg<<-(i8*NMB8*WSA6KUT6<VKJk<<-(T8`rYE8,YjQ7JfRJ7fl4]<Vohr<Vfbh
+:&%KD:&.Na=Sl8#>5hb'>lJ%.?Mn10@/aU4@fBm;AGp'@?!LV4>QA'j;ta2b;u^t=Fo6FXGPZRY
+H1$"PH2;dXGPZLXFjkHpFn9_KFo-@YGQ)jeH2N!gHN8HlI0+kIJ,Xs!JV*lR?%dodL51S@M2@+J
+N/WaWO-#KeP*;,qQC!u+R[]e:St;RJTq\?YV5L5iWiE,%Xfen4ZEpmF[^N]V\\#Me^;%Fu_SX4/
+`Q#s>aN;TJbg"GYcd:(edaHUoeCE.Lf)aOWrn@D,!8RP/!oDhlrS[_7s5Nt:roF+@qr[n@roj:E
+rp'LKqs==LrpK^Qrp]pWr:9jYrq--]rq??cqY:'crqcHfr;?HjnG\"=fDg@~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/aqVV1GpSHuIr2'%]rM9LiqEjC3rnIG-s5!V0!8me6iO8TjppBn(pp0idqF1<Op.,*Q
+q<S(GqWe.*qodp?p<!-QqcWr&r`f8)ra#M0qd9A2raG\5s'u%=r+5lcs5Et:o$-gNpW`TZr6#)_
+rH8'^pilU[q0D+Kpj)^\oQU1Uq/su)drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;
+Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o
+^qmn)`5T^8a2lBFbKJ,ScHab_dF$CkeC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>
+kPj]Bl2KuIlhg&JmJlVOn,DhUnbhtWoD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/aqP3q8q0i'dmsG"Zl?i@okX#*=q4[h_!2Jq;eVF)kqF1<Op.,*QrN#murN#jtqj-f<
+mZd[6qNUf@qcWr&r`f8)ra#M0qd9A2raG\5s'u%=r+5])l^@4/rKmDKrH8'^pilU[q0D+Kpj)^\
+oQU1Uq/su)drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;Ll$tGMi<USNfT6_Ockll
+Q'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn)`5T^8a2lBFbKJ,S
+cHab_dF$CkeC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>kPj]Bl2KuIlhg&JmJlVO
+n,DhUnbhtWoD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/ar`&hrm76D1s$uEFqEjC3o2P]hg.CL!rC$KNr'pBMr^cugrE&bpoM,-Vj%]>EqcWr&
+r`f8)ra#M0qd9A2raG\5s'u%=r+5k3s',V2?=)Pgp/LofrH8'^pilU[q0D+Kpj)^\oQU1Uq/su)
+drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4
+S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn)`5T^8a2lBFbKJ,ScHab_dF$Ck
+eC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>kPj]Bl2KuIlhg&JmJlVOn,DhUnbhtW
+oD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9`!Z8V:).>V>*CA62oR:gA'G&gu,X.[JdK3Zi.3.7/KFM7e]FO8GqiIlhJ]ubQ#`]
+bO`mOana*X=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBBhuMa7ipk:abkB<Zbl>ifb&qk*G5-:Z
+GklXDHMMj_GkH:XG56:*FOt[3G56@]GlE!dHN/?lI/\QoIK4lsJH(0,JqJ]/KS>/8LPYqd:Pt'h
+N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2
+`Q-'@ai_fMc-FV\d*^7he,Ii)e^i@(f\+s3g=tB;rn[V2s53h6s5F";r8[h<s5j.?roa=Fqs"+F
+rTj@IrpB^QqsXRSrpfmVrq$-]qt9s^rqH<brqZNhq>:*fqu-$`JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9_tORIJJ9gHi8?OHN8Hg6Kpf*T^.EcL]'X<7JfRK8,Z!TXSo3sXSA+LQ0OV0Q2Okb
+>5hb'>lJ%.?Mn10@/aU4@fBm;AG]s<B)8RlRIQ[AQiEESQZ[HLG5-:ZGklXDHMMj_GkH:XG56:*
+FOt[3G56@]GlE!dHN/?lI/\QoIK4lsJH(0,JqJ]/KS>/8LPYqd:Pt'hN/`jYOHG]hPE_>tQ^F/.
+R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@ai_fMc-FV\d*^7h
+e,Ii)e^i@(f\+s3g=tB;rn[V2s53h6s5F";r8[h<s5j.?roa=Fqs"+FrTj@IrpB^QqsXRSrpfmV
+rq$-]qt9s^rqH<brqZNhq>:*fqu-$`JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9`%ch<U**C7f#XD7ef=762=FZ<;TVo<74A88GYjT8GtsR7JfRK8,Z!R=8>nh:%D'E
+:&.Q_=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBB>6J2:?=.(=<8^^K<;ohrFo?LYGPl^]H/X)F
+H2;dYGPcRZFj5$[Fo$:WGQ)jdH2N!gHiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reXF.Mi<USNfT9a
+P*2#nQ'I]'R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5T^9aN2KG
+bKJ/UcHjkbdF-MCe-jgXf@S[.g"P07gYDeas5*e5ro!h8s5Nt:s5a4Aqr[n@s60@Erp'IJqs==L
+rpK[Ps7$$XqssaXrq-*\rq??cqtU0drVH?er;?HjnG\"=f)L7~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R/bqqq%Bs/,[ie"l_)ks>7"rRq&$hR;j[r3ZC.r^?WPqaU<Mr($fZrTs4CnBC:Cqo\`V
+q9&\>r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ral.Cro*h8nBLIHp<<T]r6,(_pilX\qK^nCq0Dj^
+olp:VqK9u'gi`F9pil[]s*=Ngs*OcnrI+]p!.Xuus+(0%rdt6)L&Qg4LPUeDMMmFPNK0'\OHG]h
+PEhE!Q^F//S"#q>StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h^V@S$_Sa=2`lH0AaihlO
+c-FV\d*^7he'umtf%8O+f\-8X!ScE/h>c=3hu2L5iW%p9j8\3>jo"9?kPscCl2BoHlhg&JmJcPN
+n,DhUnb_nVoD\CZp&=[ap\Xaaq>U6cqu-HirU9`:s474#~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R/bqkNe3s*jinnU0ePomHL#ks=j4lA4)Jr^?WPqaU<Mr($fZpoF7m!135Am?R:-q3Cq^
+r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ral.CqQ&\FoU,E?rc\'\r-8'`h0SmBqfqdXqf_gYbB2N^
+q0)OWrHS?fr-JBis*Xcns*artrdb$"!.t3&!JH1+L0]RjM2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6
+S=Z=ETV8*TUnsrdW2ZetXKAY0Yd(O@['mEP\[f;a]Y2(p^r!t+`5Ta:aN2KHbKS5VcHjkbdF-Ln
+eCE.%f@\a/rn7D-h#?.0h>lI3i;_d9ir.p;jSn9=k5OQDkkjWClMg,Hm/HDOmecJPnG_tTo)A7[
+o_\=\pAXg`q#1$fqY9sdr;6H]rdk+#s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R5d<E8usnjh_0qa^0GpHn+1rD`Ggd7O4+pIG3NqaLBOpIG-P!(lreqH!5_kt^hEq+gol
+r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ralCJ>[:WA?=.+:<8^^P<;]\oG5-:ZGku^AHMMj`GkH:X
+G5?@)FPM$7G5-:[GlN'eHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[?&+5mM2I4MN/`jYO-#KeP*;/r
+QC!u+R[]e:St;RITq\<XV5C/hWN*##Xfen4Z*UdD[^NZU\[oGd]t_=t_SX4/`Q#s>aN;WKbg"GY
+cd:(edaQ^qe^i@(f\"mVg&]s`rn[V2!8mb5s5F";rT!q=roO(?roa=Fqs"(Erp0IJrpB^QqsXOR
+rpfmVrq$-]qt9s^rqH<brV?Hhq"t$fqu-!_JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:Amoei;MR&VYd4@V"@">5lfL6fDXA$g&Kd][edE([K*`4[/NJj7JfRK8,PpX8HA/Vm.TcC
+bQ,oUbk'$Tb59<Wb5YWD>5hb'>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZEFB]7t1ro<Lmm*,CPr65/`
+!-\-]r-8'`fm<O@qfqdXqf_gYb&lWcpNH:TrHS<er-JBis*Xcns*artrdb$"!.t3&!JH1+L'<?g
+M2@+Jresg9NfT9aP*2#nQ'IZ&R$jD4S=Q7CTV8'RUnjibVl6VqX0&M-YctF>ZaI6M\@K/^]Y(tn
+^VRe(_o9U7a2lBFbKJ,ScHjkbdF-LneCE.$f@S[.rn7D-h#?.0h>lI3i;_a9ir.p:jT"?>k5OQD
+kkjWDlM^&Gm/HDOmeZDOnG_tTo)A7[o_\=\pAXg_q#:*fqYC$dr;6H^rdk+"s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:AmoeV#@(WIe8'FI.Tbk62RANT]_."L\$?!L]0^=7JfRK8,PpX8boF_XT+XPQL0t7Pkp[F
+=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBAB)lWEX8]3ZRJ3*DQN24(GPl^^H.dN@H2DjZGPcR[
+FingcFn^(RGPudcH2N!gHiJKlIK+`rJ,XuuJH1<$K)pXZre:T3Ll$tGMuJZ7NK0']OcklkPa.N"
+R$a;1S"-%@StMdNU84T]Vl-JnWiN8(YHY7:Za7'J[^`lY]=bej^V@V%_Sa@3`lH0Bb0.uPc-FY^
+dF$CkeC<%"f%8O+g&B\+gYDeas5!b5rS[_7!93t;roF+@r9""As60@Erp'IJqs==LrpKXOrp]pW
+qssaXrq-*\rq??cqY:'crVH?er;?HjnG\"=ec1.~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:Amoe<rZ2"<:rfZ8+&kE7JfRP8+]:C6L-r5<;KP=8c)'T8,bpR7JfRK8,PpX8HDppr`K)"
+r)Nf!oM,0Wr(lcVq+^]\s&o>)r`f8)ra#M0r*TG2raG_6raYt=qdoe>rau4Era,V3!+>P#fM_cn
+pilX\qK^b?qg&'`olp:VqK9r&icY!=pNQR\rd"Efs*OcnrI+]p!.Xuus+(0%rdt6)L&Qf1LPUeD
+MMqIm</lp!OHG]hPE_>tQC+&-R[]h<St;UKTq\?YV5L5iWiE,%Xfnt5ZEpmF[^N]V\\#Me^;%G!
+_SX40`Q#s>ai_fMbg"GZd*^7he'umtf%/I)f\-8X!ScE/h>c=3hu2L5i;hm9j8S->jo"9?kPscC
+l2KuHlhg&JmJcPMn,DhUnb_nVoD\CZp&=[ap\O[aq>L0cqu$BhrUBf;s4.."~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!SuW3huM[6V=CGYV;%gG6hE_362B+2fDX>%[f*Vk[edE([f!Q57/B@M7eT@N8H)0\
+mJQ>Flho!%c0`aPbO<RR=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuTEir%g:cLK0;bkZJ\
+Gl)d:HM`!bGkQ@YG5?@(FQ[f>G4p.YGlE!cHN/?lI/SKnIK4lsJH(0#K)UC>KS>,7L51S@M2@+J
+N/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn*
+`5T^9aN2KGbKS5VcHjkbdF-LneCE.%f@\d0g=k<:gtgfChV\:i!o`.urT!q=s5j1@roa=Fqs"+F
+rp0FIrpB^QqX=FQrpfmVrq$-]qXsj]rqH9arqZNhq>:*fqu-!_JcF:#J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!MQ7eU]@1hIHl:XIH,_TIK)\,6L7#;T_5#@M!g&kL]E;0M#Tm>7JoXK8,Z!X8c#L_
+X8nODQKaY7=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuT@X8n^IRJE6GQhbk'Gl)d:HM`!b
+GkQ@YG5?@(FQ[f>G4p.YGlE!cHN/?lI/SKnIK4lsJH(0#K)UC>KS>,7L51S@M2@+JN/WaVO,oBb
+P*2#nQ'Rc(R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn*`5T^9aN2KG
+bKS5VcHjkbdF-LneCE.%f@\d0g=k<:gtgfChV\:i!o`.urT!q=s5j1@roa=Fqs"+Frp0FIrpB^Q
+qX=FQrpfmVrq$-]qXsj]rqH9arqZNhq>:*fqu-!_JcF:#J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!E2ts<WH/!8+fFM8,GdE7JfRQ8,#LQ6hE_362":V;p@o18Gl!X7/B@M7eT@N8H)3W
+=Sc,!=T(qh:&.QU:\[]Z:&I`d=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuTB?iOO,<81@I
+GPl^_H.@6<H2Dj[GPcR[FinghFnKqOGPudcH2DpfHiJKlIK+`rJ,XuuJH1<$K5H9qKnb>;LkpnE
+MMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>kWiE/&Xfnt6ZEppG[^WcW]">Vg^;%J"
+_Sa=2`Q-'@ai_fNc-FV\d*^7he'umtf%8O+g"G*5gYCT?h;7#GrSRb9io9pss5a4Ar9""As60@E
+rp'LKqX"4KrpKXOrp]pWqssaXrq-'[rq??cqY:'crVH?er;?Hjn,@n<ec1.~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/o:"n@Wh;7&dV=CGXV;A$H6hNe562&n.fDi;1[K!W6[J%'.[JiSk7JfRK8,Z!V8HA,R
+li68Jli#&rc1B0VbONaS>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@BE7&ij8@3pc/QqIbPQM]
+Gl)d7HM`!cGkQ@ZG5?@&FR=5BG4g(XGlE!cHN/?kI/SHpIXckHJH(0#K)UE&KNs4cL51P?M2@+J
+N/WaVNfT9aP*2#nQ'IZ%R$jD4S"-(AT:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk^VI\&
+_o0O6a2l?DbKJ,ScHab`dF-LneCE.Lf*9m\g=k<9h#?+1hV\:i!o`.urT!q=s5j4Aroa=Fqs"+F
+rp0FIrpB^QqX=FQrUKdUrq$-]qt9p]rqH9arqZNhq>:*fqu-!_JcF7"J,~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/o9qS)OTq\=ZIHl:XIH>kVIJlP+6L@)4T`(SFM!p,hM#Kg>7JfRK8,Z!V8c5XgXT,@!
+XSnF\Q2m31QLU7>>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@B`"n/Rc0\3R/30HGPl^_H.%$9
+H2Mp\GPlX\Fi\[lFn9eLGPudcH2DpfHiAEkI0+kIJ,XuuJH1<$KE$U0Knb>;LPUeDMMmFPNK0$[
+OHG]hPE_>tQC!u,R[]e:St;RITq\<XV5C/hWN*##Xfek3Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>
+aN;WKbg"GYcdC.ge'umtf)F8*f\,!4gY:N_h#ZBirSRb9io9pss5a4ArT=+Bs60@Erp'LKqX"4K
+rpKXOrp]mVqssaXrq-*\rV$6bqY:'crVH?er;?Hjn,@n<eGk%~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/i:&\#n;cHad7f>jL8GbpS7dieC7fGpR7f>^I6L@)=<;onp<;fbm8``M18c)'X8,bpR
+7JfRK8,Z!V8buQg=8Z2!9_hEY:@_3V:@_-Y>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@B`2<<
+@.dLR;u:e:Gl)d7HM`!cGkQ@ZG5?@&FR=5BG4g(XGlE!cHN/?kI/SHpIXckHJH(0#K)UE&KNs4c
+L51P?M2@+JN/WaVNfT9aP*2#nQ'IZ%R$jD4S"-(AT:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[
+]=bhk^VI\&_o0O6a2l?DbKJ,ScHab`dF-LneCE.Lf*9m\g=k<9h#?+1hV\:i!o`.urT!q=s5j4A
+roa=Fqs"+Frp0FIrpB^QqX=FQrUKdUrq$-]qt9p]rqH9arqZNhq>:*fqu-!_JcF7"J,~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYi"k_M]g=tE^V<k)RV;e<J6hE_661WV*[dLQh[/[Q6[.C^*7/KFM7e]FN8Gu*[9(qQM
+li6;Oc2PrMc2,ZVbPB9\>5hb'>lJ%/?Me+/@/j[4@fKs;AGg$<B)ZH@BE;i,rSmn=q9B#ccM5ZD
+bku\_Gl2jOH2r<VHM`!cGkQ@ZG5HF&FRXGFG4^"VGlE!cHN&9kI/SKnIfFosJH(0#K)UE&KE-`*
+L0]RjM2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@StD^MU84T]VPgAlWiN5'Y-5(7ZEppH[^WfX
+]"G\h^V@S$_Sa=2`lH0Bb0.uPc-FY^dF$CkeC<%"f@S[.rn7D-h#?+2hV[5ihu_lsir8!<jT"?>
+k5XWDkks]ElMg,Gm/HDNmecJOnG_tSo)A7[o_\=[pAXg_q#1$fqY9scr;6H]rdk+!s*t~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYirgj1`TV2:4k'm,Sm<nbYqa:!Bmm6N;pPAHuqM=QpqhY')s$Z`QqaU<Mr(-cX!(usc
+rN$!brg!;Fpm'p+q3:q`r`f8)ra#P1qd9>1s'be6s'u%=r+5k>rb).B!,;A4!3Q'c!L]D=RJN<J
+Qi)(*Gl2jOH2r<VHM`!cGkQ@ZG5HF&FRXGFG4^"VGlE!cHN&9kI/SKnIfFosJH(0#K)UE&KE-`*
+L0]RjM2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@StD^MU84T]VPgAlWiN5'Y-5(7ZEppH[^WfX
+]"G\h^V@S$_Sa=2`lH0Bb0.uPc-FY^dF$CkeC<%"f@S[.rn7D-h#?+2hV[5ihu_lsir8!<jT"?>
+k5XWDkks]ElMg,Gm/HDNmecJOnG_tSo)A7[o_\=[pAXg_q#1$fqY9scr;6H]rdk+!s*t~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYiqbdJa7Rm8FoLSsOpdY0MoLAXHr'pQNoKr"4o2Pciq+9[=mRd4Fs$Z`QqaU<Mr(-cX
+!D6Jg=8c5$:&[iW:&Ic[:\dcV9`SAr>Ph\)?2n7.?iFI5@JaO6A,^$:Ac?<@BDcECC&VK>?iXX0
+<7t4JGPl^`H0KVTHg,kRH2Mp\GPlX]FiSUnFnBkLGPl^bH2DpeHiJKlIK+crJ,XuuJH1<$KE$T)
+L&Qg4LPUeDMMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuFFTqS3VUnsrdW2ZetXKAY/Yd(L?['mEP
+\[f;a]Y2(p^r!t+`5Ta:aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X!ScE/h#cHjhu;O8iSrkrj8\3?
+jo"9@kPj]Cl2KuIlh]uImJZJMn,;bTnbVhUoD\CZp&4U`p\O[`q>U6cqu$BhrU9`:s4%(!~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:B&oGf`7lHVY[4^VY6kJV#!IN6L[;>eb@Yl[dLQWZiEMj7JoXL8,PpV8cMEYlMp2M
+m/HG2c2>fQbPk`D>lJ%.?Mn10@/aU4@fBm:AGg$=B)ZH@B`;]HC?,9RqTe`Xj37LHr-8-bn9XPM
+n9Y"Xr-7pZr-%s[`cUfpolfqNr-83dqKi0grd=Zms*jutrdb$"!.t3&s+CB+re:H/M#N61MMmFP
+NK0'\OHG]hPE_>tQC!u+R[]e:SXuIHTqS6WUo(&fW2ckuXf\b1Yd(O@[C3NR\[f>b]Y;.q_8=(-
+`Poj<aN;TJbg"GYcd:(ee'umtf)F8)f\,!4gYDea!oDhlrnmk:io9sts5a4ArT=.Croj:Erp'LK
+qX"4KrpKXOrUBgVqXXXWrq-'[rq?<bqY:'crVH<dr;?Hjn,@n<e,Op~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:Ag[`IJeQjJ*h^\IJA3_IJnWk6hE_762dGMT_+*=MY`2!M"lc%M#3#/7/B@M7e]FN
+8Gu-[9)YgiWr/psXRqhKQ/n81>Pqb*?2e1.?iFI4@JjU6A,^$:AcHBABDcHBB`VtMrN5pbigKY1
+r0RD,r-8-bn9XPMn9Y"Xr-7pZr-%s[`cUfpolfqNr-83dqKi0grd=Zms*jutrdb$"!.t3&s+CB+
+re:H/M#N61MMmFPNK0'\OHG]hPE_>tQC!u+R[]e:SXuIHTqS6WUo(&fW2ckuXf\b1Yd(O@[C3NR
+\[f>b]Y;.q_8=(-`Poj<aN;TJbg"GYcd:(ee'umtf)F8)f\,!4gYDea!oDhlrnmk:io9sts5a4A
+rT=.Croj:Erp'LKqX"4KrpKXOrUBgVqXXXWrq-'[rq?<bqY:'crVH<dr;?Hjn,@n<e,Op~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:Adui7JoXC8,GaU8,Gd;8,>UF6L[;4<VK)H8F9"G8,u'S7JoXL8,PpV8cMEU<ruK*
+=6E<T:B"&c:@V'X>Pqb*?2e1.?iFI4@JjU6A,^$:AcHBABDcHBBa/<Z?smDP<VobH;uV"=Gl2jV
+HLH4MHMi'dGkQ@ZG5HF%FRsYJG4TqUGlE!bHN/?kI/SKnIfFosJH(0#K)UE&KE-`*L&m'creXU3
+Mi<USNfT6_OcklkPa.N"Q^F//S"#q=StD[LTqeEZVPg>jWiE,%Xfen4Z*UdE[^N]V\\#Me^;%G!
+_SX71`Q$!?ai_fNc-FV\d*^7ieC<%"rmq>+g"P07h#?+2hV[5ihu_lsir8!<jT"??k5XWDkks]E
+lMg,Gm/HDOmeZDNnG_tSo)A7[o_S7[pAOa^q#:*fqY9scr;6H]rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!SQ-)g&7f@Vt?kNV=gVa7/94B6LdA=eG[qrec<2U[dLQZZiEMj7JoXL8,PpV8c;6]
+lMTrJm/68Nmbc:ebjN[S>Pqb*?2e1.?iFI4@JjU6A,g*:AcHBABDcHBC&_rJjSn3<cLK0>bl;nc
+Gl)dWHKokJHM`!cGkZF[G5HFIFT-@?FS0eMG4KkTGl;paHN/?kI/SKnIfForJH(0#K)UE&KE-`*
+L&m'creXd8Mi<USNK0'\OHG]hPE_>tQ^F/.R[]e;St;RITq\<XV5C/hWN)u"Xf\e2Yd1UB[C3QS
+\[oDc]tV7s_8=+.`Pom=aN;WKbg"GYd*^7he'umtf%8O+g&B\0gYCW@hVR/hhu_lsir8!<jT"??
+k5XWEkkjWElMg,Gm/HDOmeQ>NnGVnSo)81Zo_S7[pAOa^q#1$eqYC$dr;6H\rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!M>t_TDa63J*qdGI/l\26hE_862mJPTDbGSM>N2,M<B]hM#]s?7JoXL8,PpV8c;9X
+WrB(!XT,EuQi!*9Q0FV7>Pqb*?2e1.?iFI4@JjU6A,g*:AcHBABDcHBC&_rGXo4^FRJ<0LQiD:.
+Gl)dWHKokJHM`!cGkZF[G5HFIFT-@?FS0eMG4KkTGl;paHN/?kI/SKnIfForJH(0#K)UE&KE-`*
+L&m'creXd8Mi<USNK0'\OHG]hPE_>tQ^F/.R[]e;St;RITq\<XV5C/hWN)u"Xf\e2Yd1UB[C3QS
+\[oDc]tV7s_8=+.`Pom=aN;WKbg"GYd*^7he'umtf%8O+g&B\0gYCW@hVR/hhu_lsir8!<jT"??
+k5XWEkkjWElMg,Gm/HDOmeQ>NnGVnSo)81Zo_S7[pAOa^q#1$eqYC$dr;6H\rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!)rhorC6HMmmc;,!(?WMoKr(6o2Pc_p.=@:mRd@J!(?ZPr'pENr(-cXrCZofr)iu#
+q+g*Ip.k6Ss',D+ra#M0r*TG2raG_6raYt=qdoe>rb).Brb;CIs'Yk8!+Pn,r)D<Is*+Edqg%aY
+l?i)Jqg&*apNQOYqfV1Grc@%?ol]tOnot"VrH\6cs*O`mrI+]ps*suts+(0%re(6(!/:E,!JcL1
+M-5^oN/WaUNfT6_OcklkPa.N#R$a;1S"#t?StD[LU8+N\VPgAlWiE/&Xfnt5ZEppG[^WcW]">Vg
+^;%J"_Sa=2`Q-'@aihlOc-FV]dF$CkeC<%"f@S[.rn7S2gtgfChV\=j!o`.uro=%>s5j4As6'FG
+qs".Grp0FIrpB^Qq="=PrUKdUrU^$\qXsj]rV-0`rV?Egq>:*fqu,s^JcF4!J,~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]8uBVY-k[VWalOU]<gX6hNe862]72ec")!\,*Pr[H4aq7/KFM7efLO8Gu-X9)\)U
+m/HDOmf2b3c1oNUbPtfE>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCB&)JirIBlc/d+HGl2jY
+HKKSFHMi'dGkZF[G5QLMFS9e;FSBqPG4BeSGl;paHN&9kI/JEmIfForJH(0#K)UE&KE-`*L1?!p
+Ll$tGMi3OQNK0'\OHG]hPE_>tQC!u+R@9V8SXuFGTqS3UUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_
+]Y2%o^qmn*`5Ta:aN2NIbKS5Vcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<jT"?@k5OQD
+kks]FlMg,Hm/?>NmeZDNnGVnRo)A7Zo_S7[pAOa^q#1$eqY9scr;6H]rdk*ts*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]6p]IeA3ZIcYtX7/0.B6L[;9TDbGRM>N2%M=-2pM#]s@7JfRL8,PpV8c23ZWr8t%
+XKAV-Y-7VeqNgN6m$@ZUr*95,ra,M0ra>b7qdTS8rabq<rau.Br+Q+ErbDIKs/c@*Xd[t3pR(l'
+r-@m[k'QZFr-A3bpNQOYr,qCKp2f>;pN?4RnTXnUrH\6crd4Zmr-eTos*suts+(0%re(6(!/:E,
+@u#krM2@+JMi<USNfT6_OcklkPa.N"Q^F/.R[]h<St;UKTq\<XV5C/hWN*##Xfek3Z*L^C[C3QS
+\[oDc]tV7s_8=+.`Q#s>aND]Lbg"GZd*^7he'umtf%8O+g"P07h#?+1hV\=j!o`.uro=%>s5j7B
+roa=Fr9=7Hrp0IJrU'UPqX=CPrUKaTrq$*\qXsj]rV-0`rV?Egq"t!equ-!_JcF0uJ,~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]45f7eK:?7cd,?7/0.B6L[;5<W>\b8``M18cM<]7/KFM7efLO8Gu-X9)2Ng=Su7j
+:@1dO:@q9\>Pqb*?2e1.?iFI5@JaO6A,^$:Ac?<@BDcHCC&VlIC]7`C@TE)#h,=;Qr-8-bo6TPG
+np:4Zr-7s[r-&!\m<&&Cj`L6>pNH(Nr-80cqKi-fs*X`ms*jutrIFp!!.t3&s+CB+re=p<LkpnE
+MMmCON/`jYO-#KeP*;,qQ'Rc(R$jD4S=Q7CTV8'RUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^VI\&_o0O6a2l?EbKJ,ScHjkbdF-LneCE.%f@\d1g=tE^h#ZBirnmk:io9sts5a4AroX4Cs60CF
+s6BULqs=:KrpKXOrUBdUqXXXWrUfsZrq?<bqY:$brVH<dr;?Hjn,@n<df4g~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>jfDsY!VY-k\VWXfRV#<^W6hE_962f=.ea^-2[e@-(ZiEMk7JoXL8,PpV8c23\m/HDP
+mf2bUn,i.No'aj#cLfBSbk]E^>Pqb*?2e1.?iFI5@JaO6A,^$:Ac?<@BDcHCC&VlHC]*5fblH&_
+c/m1JGl2jYHK9GEHMi'dGkcL\G5HFOFRO;9FSBqQG4KkTGl2j`HN&9jI/JEmIfForJ-(:RK)UE&
+KE-`*L'rcmLl$tGMMmFPNK4"!?]^D5P*;,qQ'Rf)R@9V7S=Q7DTV8'SUnjibVl6VqX0&M,YctC=
+Za@0L\%0&\]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@(f\,!4gYCT?h;7&Hi8ESQir8!<
+j8e<?k5XWEkks]FlMg,Hm/HDNmeZDNnG_tRo)A7Zo_S7ZpAXg^q#1$eqY9scr;6H]rdk*ss*t~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>jT)bPXIeA3ZId):Z7/94B6LmG;TDbGPM>N1`M#]s@7JoXL8,PpV8c23\X8]4#Xo5F&
+Y5kg+R/30@QLL10Q2k.e>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCAr#HXn\:aRcBh2R/M:-
+H1Q@CHh2R]H2Mp^GPlX]FmsMAF6[lAFng.NGPl^`H2;jdHiAEjIK+crJ,Om!JV&LQKE$T)L&Qf7
+LPUbCM2I1KN/WaVrf:EJOcklkPa.N"R$a;1S"#q=StD[LTqeEZV5L5iWiE,%Xfen4Z*UdD[^NZU
+\[oGd]t_=t_SX4/`Q#s>ai_fMc-FV\d*^:jeC<%"f@S[.g=k<:gtgfChr!AMiSieqj8\0?jo+?A
+kPscDl2U&Jlhg&JmJZJLn,;bTnbMbToDS=Xp&4U`p\FU_q>L0bqu$BhrU9`:s3^js~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>j;ZKej7eK:B7cm5>7/94B6LmG7<W,P`8aK"88btsX7/KFN7e]FN8Gu-X9))Nd=6WK<
+9`SDq>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCAr#J@K0g3;ufqr<9$pU<;h(>H1Q@CHh2R]
+H2Mp^GPlX]FmsMAF6[lAFng.NGPl^`H2;jdHiAEjIK+crJ,Om!JV&LQKE$T)L&Qf7LPUbCM2I1K
+N/WaVrf:EJOcklkPa.N"R$a;1S"#q=StD[LTqeEZV5L5iWiE,%Xfen4Z*UdD[^NZU\[oGd]t_=t
+_SX4/`Q#s>ai_fMc-FV\d*^:jeC<%"f@S[.g=k<:gtgfChr!AMiSieqj8\0?jo+?AkPscDl2U&J
+lhg&JmJZJLn,;bTnbMbToDS=Xp&4U`p\FU_q>L0bqu$BhrU9`:s3^js~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls4IA)oVV8YpSR)Ls.oQ\q*Xd@o0NE,s4$kpqmYk#n[JD(qR-7.!(?ZPr'pENrCHiX
+qapkWrp]sXs7-<ao_%nNn'1[Rp!**Pr6,"Cra#P1qd9>1s'be6s'u%=r+5k>s(D7Crb;@Hr+l8k
+lcnS9s*4EdoQoJCoQpF\r-8!\r-&!\noX,;m<&,Gq0)@Rr-8-bq0N$erd=Wls*jutrIFp!s+:6&
+s+CB+re=s=LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[VPg>kWiE,%Xfen4
+Z*UdD[^NZU\[oGd]t_=t_SX40`Q$!?ai_fNc-FV\dF$CkeC<%"f@S[.g=k<:rnRV3hu;O7iSsjs
+s5a4AroX7Ds60CFs6BULr9XCLrpKXOrUBdUqXXUVrUfsZrq?<bq=sparVH<dr;?Hjmf%e;dJn^~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls.B=aoR?.VpO;IWr'^?JoKr.8qOd\YqhaTqhh_>$qF1<OpIG0Qr(6cX!3Q7'ric@+
+rilI/rg<MJns8j3q3M#Hr0I7cra#P1qd9>1s'be6s'u%=r+5k>s(D7Crb;@Hr+l85fU;Q&s*4Ed
+oQoJCoQpF\r-8!\r-&!\noX,;m<&,Gq0)@Rr-8-bq0N$erd=Wls*jutrIFp!s+:6&s+CB+re=s=
+LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[VPg>kWiE,%Xfen4Z*UdD[^NZU
+\[oGd]t_=t_SX40`Q$!?ai_fNc-FV\dF$CkeC<%"f@S[.g=k<:rnRV3hu;O7iSsjss5a4AroX7D
+s60CFs6BULr9XCLrpKXOrUBdUqXXUVrUfsZrq?<bq=sparVH<dr;?Hjmf%e;dJn^~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls&8qsoL@(qr'^?JoKr.8oi:WVnO`IGqap6I!(?ZPr'pENrCHiXqb$K_k>(;:r_EAc
+r*95,s'GS0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@Hs'bq:mo8OMqGdK>qg%g[iHt3Cr-A3bpilXZ
+r,qRPl#Z66piZCUo6:+Wr-A*ard4Wlr-eTos*suts+13%re(6(!/:E,A;>tsM2@+IMi<USNK0'\
+OHG]hPE_>tQC!u+R@9V8SXuFFTV8*TUnjlcVl?\rX0&M,YctC=Za@0L\%0&\]Y(qm^VI_'_o9U7
+aN2KGbKS5VcHjncdaQ^qe^i@(f\,!4gYDea!T)`5huVfrro=%>s5j7Bs6'FGr9=7Hrp0LKrU'UP
+qX=CPrUKaTrU^![qXsj]rV--_rV?Egq"t!equ,s^JcF-tJ,~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:tO=Or2/\Upnm5NqF(-Ho0W+9p!roJhRNHlr3l@-!(?]QqaU?Nr(-cXqF^eYs76Bc
+p%A%QrqHKhn'1[RoZcjKrETA.ra,J/s'Yh7r*oY8rabq<rau1Cqe6"DrbD@H!,VVolHSJ8r-@p\
+o6^=]oR$4Vr-A3bpil[[r,qUQj`Bm4q/uOWo6:+Wr-A*ard4Wlr-eTordXlss+(0%rIY0)Kn]M\
+@#'PoM2@+IMi<USNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J
+[^`lY]=bej^V@V%_SjF4a2l?DbKJ,ScHjkbdF-LneCE1&f\-8X"l%hgh;7&ghu_lsir7s>jQ5M&
+k5XWEkl'cFlMp2Im/HDOmeZDNnG_tRo)81Yo_S7ZpAOa]q#:*eqY9scr;6H\rdk*rs*t~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:nF8Ngjf$Hn9t.$q*Xa?og/JIqk3eBg5>``pP8f;qaLBOpdb6QrCQiXril@+s0D[2
+s0VfnpQtK;ns0$:q3V%bs'>V1qd9A2raG_6raYq<r+5k>s(D4Bs(VIIr+c:KrN4_?pmCu)oQp+U
+qL%p^oQpF\r-8!\rHA*]o5s)8mr\AJqKDISr-8-bq0N$erd=Wls*jrsrIFp!!.t0%!ec8]re=g9
+LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=StD[LTq\?YV5C/hWN*##Xf\e2Yd1UA[C3NR
+\[f>b]Y;.q_8=(-`Pom=aN;WKbg"GZd*^7he'umtf@S[.rn7P1gtgfChu;O8iSrkrir\<'jo4EB
+kPscEl2KuJlhg&JmJcPMn,;bTnbMbSoDS=Xp&4U_p\FU`q>C*aqu$BhrU0Z9s3Udr~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:f:1ir'nXqqF(-Ho0W+9oi:TUiCWl:pI>3OqaLBOpdb6QrCQiXqH3`"r`J>Yl:q(L
+rETA.ra,J/s'Yh7r*oY8rabq<rau1Cqe6"DrbD@H"DhLT@Uek,l;RCUr-@p\o6^=]oR$4Vr-A3b
+pil[[r,qUQj`Bm4q/uOWo6:+Wr-A*ard4Wlr-eTordXlss+(0%rIY0)Kn]M\@#'PoM2@+IMi<US
+NK0'\OHG]hPE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J[^`lY]=bej^V@V%
+_SjF4a2l?DbKJ,ScHjkbdF-LneCE1&f\-8X"l%hgh;7&ghu_lsir7s>jQ5M&k5XWEkl'cFlMp2I
+m/HDOmeZDNnG_tRo)81Yo_S7ZpAOa]q#:*eqY9scr;6H\rdk*rs*t~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&tsf%/I)qPN\YnttZJq*b!FoKr7;qpbMne[YOdr3lF/!(?]QqaU?Nr(-cXq+:\[p&=Xh
+p\=R[qYL*Xc1TBUc1&sV>lJ%/?Me+0@/aU4@fBm:AGg$<B)cNAB`;`FCA_lHD#WDobj3O9bl)hZ
+HM)XXI._jZHMi'eGkcL\G5QLTFQ7H3FS^.VG4g(WGl2j_HMr3iI/JEmIf=iqJH(3#K)UE&K`?c*
+L'NKiLl$tGMMqImA;uV1O-#KdP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[V5L5iWN*##Xfek3Z*L^C
+[C3QS\[oDc]tV7s_8=+.`Q#s>aND]Lbg+M[d*^7ieC<%"f@S[.g=k<:h;-rEhr*GOiSsjs!p&J)
+roX7Ds60FGs6BXMqs=@MrU0ONrp]mVq==LUrUfpYrV$3aq=sparVH<dqu$?imf%e;d/SU~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&horLW8'q1/*eqgS-bq*b!FoKr7;qk*bYd>IgXq1o#=qaLBOpdb6QrCQfWrNcI0rj;^5
+!4Mlop6Y<8op,B>pm:tbra#P1qd9A2raG_6raYq<r+5k>s(D7Crb;@Hr+l:Js/c=)R+Ri&R/M=&
+HM)XXI._jZHMi'eGkcL\G5QLTFQ7H3FS^.VG4g(WGl2j_HMr3iI/JEmIf=iqJH(3#K)UE&K`?c*
+L'NKiLl$tGMMqImA;uV1O-#KdP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[V5L5iWN*##Xfek3Z*L^C
+[C3QS\[oDc]tV7s_8=+.`Q#s>aND]Lbg+M[d*^7ieC<%"f@S[.g=k<:h;-rEhr*GOiSsjs!p&J)
+roX7Ds60FGs6BXMqs=@MrU0ONrp]mVq==LUrUfpYrV$3aq=sparVH<dqu$?imf%e;d/SU~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&horDNJ]a%,qnpd=[?p-J@Ope'73qagNQ!(?]QqaU?Nr(-cXq+C<_s%h`OmS3IOr`oG.
+s'GS0s'Yh7r*oY8rabq<rau1Cr+Q(DrbD@HrbVRBn5SgSo2P[6oQp1WomHFZom6O]rHS*]r-&!\
+oQ9,7n9"MLqKDOUr-8-bq0N!drd=Wls*jrsrIFp!s+:6&s+LE+re:Z5LkpnEMMd>kN+@p.O,oBb
+OcklkPa.N"Q^F/.R[]h<St;RITq\<XUnsueW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5Ta:
+aN2NIbKS8Wcd:(ee'umtf%8O+g"P07gtgfChV[8LiSieqir\<'jo4EBkPscEl2U&Klhg&KmJZJL
+n,DhTnbMbSoDS=Wp&4U_p\FU_q>L0bqtp<grU0Z9s3Udr~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;u]bpf(c-/Vt6eTV>[:b7/94@6MWq?eC;#*\,<]3[JNDi7e]FO8Gu-U9)hNcpA"F^q>U6l
+r;H*/n]psTn]_#<ra#P1qd9A2raG_6raYq<r+5n?rb).Brb;@Hr+l:J!,__prlj`RkKNpNoQp4X
+nU1(Xom6O]rHS*]r-&$]oQ9)6nT=VMqf_XVr-8-bq0N$erd=TkrdOlsrIFp!s+:3%s+CB+rItQ4
+LkpnEMMd>kMueourf:6EOcklkPa.N"Q^F/.R[]e:SXuFGTqS3UUnsrdVl?\rX0&M,YctC<Za@-K
+\%&u[]=bhk^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@(f\,!4gYCW@hV\=j!TE&;j8\0?jo4EB
+kPscEl2U&Klhp,KmJcPMn,DhTnbMbSoDS=Wp&4U_p\FU_q>C*aqtp<grU0Z9s3L^q~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;u]bpT':auJFe9\IeH2*6h3S>61pl+MY)btM#0X<7e]FO8Gu-U9)hNaZM_*/[f<i9R.Zg2
+QN!0FQM?gH>lJ%/?Me+0@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHC]J>OY5XgARJN<MH1ZFVHguLX
+HhD^_H2W!_GPlX_FnBe8F7FAKFo-@TGPl^`H22dcHiAEiIK"]qJ,OotJcC?#KE$T)L&H`2LPUbC
+M2I1Krepl;NrG)COHG]hPE_>tQC!u+R@9V7S=Q7CTV8'RUSO``Vl-MoWiN8(Y->.8ZEppG[^WcW
+]">Vg^;%J"_Sa=2`lH0Bb0.uQcHab_dF-LneCE.%f@\d1g=tE=h;7&ghuVfrro=%>!9O4Bs6'FG
+rTX@Is6KULrpB^QqX=FQrUK^SrU^![q=X^[rV--_rV?Bfq"ssdqu,s^JcF'rJ,~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;uBPg7`e0o7/94@6MWqG<;BP@8bu!T8,GaP7e]FO8Gu-U9)hQZ=oV\);#O2L:A.EW:B+Su
+?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8,MD>mu4<:NoW<;q18HM2^UI.r!\HMi'eGkcL\
+G5ZRUFQ.B3FS^.WG4g(WGl2j_HN&9jI/A?kIfForJH(3#K)L?%KE-`)L'NKiLl$tGMMqIm!KE-=
+O'7X-P*2#nQ'IZ%R$a;1S"#q=St;UKTq\<XV5C/gWN)u!Xf\b1Yd(L?['d?O\@K2_]Y2%o^qmn*
+`5Ta:aN;TJbK\>Xcd:(fe'umtf%8O+g"P07gtgfChu;O7iSsjss5X1AroX7Ds60FGs6BXMr9XFM
+rpKXOrp]mVq==LUrUfpYrV$3aq=spar;-3cqu$?imf%e;ci8L~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;ZK_pf(Z'-Vt6eSV#[Cc7/0.<6N0:EeBtf(\+d?.7JfRL8,PpV8bl!Y9E"\cqu-HmcK`[M
+cM,TTbl:rI?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQir70hc0*=NH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;ZK_pT'1\"JG+KZIe?,(6gmA@62$rGMrT]eM=uc&7JfRL8,PpV8bl!Y9Du6s[f*]8RJrTI
+Qf+2*QiC=i?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQY5XgARJWBOH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;uKSq7R]cB7d<M@7d!;77/0.<6N0:E<6\#38Gl!T7JfRL8,PpV8bl!Y9DVfi>5qJ!;"mcF
+:B!u`:B+Su?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQ@I@+e;t*cdH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDWaIoqq#Po;;A\pnn'[oL/IAmR$Wsk.'igrj_[2s0henqaU<MrCHlYq+CWZ!;ZTirqcir
+qtn[af?Ns3!*oM/ra,M0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVUOs).kr!9="$m`jt>!."6`
+pNu1Qpj;^\rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'
+!/:B+!f)SfreU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+
+YHY:;Za7'J[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;
+ir\<'jo4BDkNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDN`hT&tP%JFJ'WIfDk/7/0.;6M@&7Mu&=uM>2o(7JfRK8,Z!W8bl!X9)u?t[0O.J[C3KN
+R@3l<qNp3-pm1tcra#M0r*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Js)%dRriZ0dgR7r+!."6`
+pNu1Qpj;^\rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'
+!/:B+!f)SfreU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+
+YHY:;Za7'J[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;
+ir\<'jo4BDkNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!r)3Snr'gHOmmm%?l::kCoL/IAmR$VHk"4K%s$urTqaU<MrCHlYq+CWZpf[W!s&&JdpJ9[A
+!*oM/ra,M0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVUOs).jF!+P=pp/CEZ!."6`pNu1Qpj;^\
+rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'!/:B+!f)Sf
+reU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+YHY:;Za7'J
+[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;ir\<'jo4BD
+kNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(us&/sLfCPm*VrafS7J'"B6h!G>ebmqY\F$d)\G!E/7JoXL8,PpV8bl!X9DSDdq>0p4e]md2
+ra#M0r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_XPs5X"#n'1(?!."6`pj;4Pq0Vg]rH\<c
+q02d\rH7gUq/bnCpiH+Mr,qp\pNQR\rH\3brd4TkqgJKnrdXirs+13%rIb-'s+UH,s+gW1reU]6
+Mi7Rn!KE-=Nrb?)rfU]RPa.N"Q^F/.R[]e:SXuFFTV8'RUSO``Vl-MoWiN8(Y-5(7ZEppG[^WcW
+]">Vg^;%J"_SX71`Q-'@aihlOc-FY^dF$FmeCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4]jo4BDkNM./
+l2U&Klhp,LmJcPNn,DhUnbMbSoDJ7Up&4U_p\=O^q>C*`qu$BgrU0Z9s31Ln~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(us&8rik'mA]m=4YTrC-?HpI"F:qk3kZ!/frtq24Tsq2"o:r'pENr(-cXq+CWZq6^1.!OA-f
+R.ls8QN*<KQM?gG?2e1.?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>nGQY5=U@RJ`EPH1cLY
+Hg#kQHhMdaH2Mp_GPu^`FnTqQF6mrBF7jYQFo6FWGPudbH22dcHi8?hIK+cqJ,FisJcC?#KE$W)
+L&Qi,L]<20M#rQmMuJY9NK4"!!K`HCP$sQ=Q'IZ%R$a;1S"#q=St;RITqS3UUnsrdVl?\rX0&M,
+YHY:;Za@-K\%&u[]=bhk^VI\&_SjF4a2l?DbKJ,ScHjkbdF6Upe^i@(f\,!4gYCW@hV[8LiSrkW
+j5f:_roO:Fkii$1s6BXMr9XINrpK[Prp]pWq==LUr:KdWrV$3aq"Xg`r;-0br;?Eimf%e;bl<1~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(urDWS^q*ssGnj_t9rC-?HpI"F:s&8\lj[n?#qaLEPpIG-PrCQfWr_*2ms&f2#!)`,[p.smI
+ra#M0r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_XPs'k=opf$T[!."6`pj;4Pq0Vg]rH\<c
+q02d\rH7gUq/bnCpiH+Mr,qp\pNQR\rH\3brd4TkqgJKnrdXirs+13%rIb-'s+UH,s+gW1reU]6
+Mi7Rn!KE-=Nrb?)rfU]RPa.N"Q^F/.R[]e:SXuFFTV8'RUSO``Vl-MoWiN8(Y-5(7ZEppG[^WcW
+]">Vg^;%J"_SX71`Q-'@aihlOc-FY^dF$FmeCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4]jo4BDkNM./
+l2U&Klhp,LmJcPNn,DhUnbMbSoDJ7Up&4U_p\=O^q>C*`qu$BgrU0Z9s31Ln~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(u!`Rb(oqprNk,/&Fo0i=?nO!6+qUP,HoXO:trj_s:!4_p8r'gKPpIG0QrCQfWrC[,aqYC0d
+!;H96gs,Q:s'>V1r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_UOs5a""n]g:Ap3QL\k'ZuO
+p3Q[_rHS-^r-&$]pN67Ql#QT@olU+SrH@s[rHS9dq0N$erd=TkrdOirr.+fus+:3%s+LE+rJ(?-
+!/UW2s,$f7rf$l:!07&>!K`HCOp.&6Q'IZ%rg6WPR[]e:SXuIHTqS3UUnjibVl6SpX/rG*YHY79
+Za7$H[^WcW]">Vg^;%J"_Sa=2`lH0Bb0.uQcHab_dF-LneCE.%f\,!4gYCW@hV[5Ki8N\pirS6&
+roX7D!9jCGs69UMr9XINrpK^Qrp]mVq==LUrUfmXr:^*`q"Xd_rVH9cqu$?imJ_\:bl<1~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(u!`P_`l@8Y\mXOeVr'g3FpI"I;pRqPDo8E!nm>:^rr'gKPpIG0QrCQfWrC[,arj2X1s02[1
+Z*9YiR.-I9QLL7@?2e1.?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>eAPY5+I@RJ`HGHMDjL
+I//-_HMr-fGklR]G5ZRXFS^(CEqseLFSp:[G5-:[Gl;p`HN&9jI/A?kIf=ipJH(3#K)L?%K`?c)
+LB!#/M#N82M?&S6N;nk;NrG(?OHKO*"d>19Q'Rd9QrBEAS"#q=StD[LTq\<XUnsueW2ZetXKAV.
+YctC=Za@-K\%&u[]=bhk^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@)g"P07gtgfChr!AMiSsjs
+!T`AAk5XTEkl'cGl2^/Jm/QJPmelPQnGVnQo)81Yo_A+WpAOa\q#'sdqY0mar;6H[rdk*ns*t~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(ur_rY^r'p-Fo1&+;r'g3FpI"I;peq/lj@SN*!(m&Yr'gKPpIG0QrCQfWrC[,aqcNi!!*8kl
+m83LPn4s!hra,M0ra>b7qdTS8rabq<rau1Cqe6"DrbD@HrbVRNrGMXEl;[XZm8We*pj;.Nq0Vg]
+rH\?dq02a[rH7jVqK(nAq/c4Nr,qs]pil[]rH\3brd4WlqgJHmrdXirs+13%rIb-'s+UE+s+^T1
+re^Z4!/pi8s,@#=rf7)AOoCLIPE_>tQC%T<;jj)DS"-%@T:hmOU8+N[V5L5iWN*##Xf\e2Yd(O@
+['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbK\>Xcd:(fe'umtf%8R-g=k<:h;-rFhr*GOir7s=jQ6C'
+s5sCGrTX@I!:0RLs6]gRr9sXSrUK^SrU^![q"=RYrV-*^r;$<fp\Xjcqu,p]JcEsoJ,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`[h)pnm)LrhfXln#$(Rr'g6Gp-\F<rn7;'rn$VLm'u_trj_p9rODboqaU<MrCHiXqF^]Z
+s%Eanq"XUXp@\(MoC1&mblGu_c2>f`bPtlJ?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;L
+DZAbtbPBBPc0<IGHMMpKI/83`HMr-fGklR^G5ZRXFS^(AEqseNFSp:ZG56@\Gl;paHN&9jI/A?k
+If=ipJH(3#K)C9$K`?c*LB!&/M#N82M?&S6N;nk;NrG(?OHKO*@[!%AQ'R`&R$a;1S"#q=St;RI
+TqS3UUnsrdVl6VqX/rG+YHY7:Za7'J[^WfX]"G\h^V@S#_Sa=2`lH0Bb0/#RcHab`dF-LneCN7'
+f\,!4gYCW@hV[8LiSrkWj5f=`roO:Fkii$1s69UMrTsONs6fgRrp]mVqXXUVr:KdWrV$0`q"Xd_
+rVH6br;?EimJ_\:bQ!(~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`YeapjW9opODjdmsjqXr^QfSoL/C?o0W5Fg5>0Pr'gKPpIG0Qr(6`WrCd/a$F-h>YHY46
+Y-"goopFs0s-E/@s'>Y2qd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_RN!NrR"R,+2/R.bk%
+HfTSNHhMdaH2W!`GPu^`Fn^"SF6@T>F8'eSFo6FYGPudbH2;jdHiAEiIK"]pJ,FisJcC?"KE$W)
+L&Qi,L]<20M>rG5MuJ\8N<#"<Nrb?)rfU`SPa.N"QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWiE,$
+Xfek3Yd1UA[C3NQ\[f;a]Y2(p^qmn*`5Ta:aN;TJbg"GYcdC.ge'umuf@S[.g=k<:h;-rFi8ESR
+ioB([jlQL(!pAe2rosIJ!:0UMrpBaRr9sXSrUKaTrU]sZq"=UZr:g!]r;$<fpA=dcqYfg\JcEpn
+J,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`W)sqaLHQlppS8n43IIr'g6Gp-\F<!*/qrr_rhhj@SK)rCQoUqaU<MrCHiXqF^]Zs%NDo
+rE&u!nPSUKpJ:QZs'>Y2qd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_RN!FfL%<;fb^<;(Y6
+HfTSNHhMdaH2W!`GPu^`Fn^"SF6@T>F8'eSFo6FYGPudbH2;jdHiAEiIK"]pJ,FisJcC?"KE$W)
+L&Qi,L]<20M>rG5MuJ\8N<#"<Nrb?)rfU`SPa.N"QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWiE,$
+Xfek3Yd1UA[C3NQ\[f;a]Y2(p^qmn*`5Ta:aN;TJbg"GYcdC.ge'umuf@S[.g=k<:h;-rFi8ESR
+ioB([jlQL(!pAe2rosIJ!:0UMrpBaRr9sXSrUKaTrU]sZq"=UZr:g!]r;$<fpA=dcqYfg\JcEpn
+J,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!`dn*qki&En#$%Qr'g6Gp-\I=rnI>(rjh+"!4hC)rjVm:r'gKPpIG0QrCQfWrCd/a$2*r^
+oCDJBnaQ#Fc0imLc1oK_c25``b5tsU?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KD?4\:
+rlb/^o$-CBpNlX^ja?lNpNla_rHS-^rHA-^piQ@Rj`:3=pN6=UrHA!\rcnBeqKi-frd=TkrdOir
+r.+fus+:0$s+LE+rItB/Lku"d!fDnorepo<NfO+"!K`HCOo^c2rfpTOQ^F/.R[]e:SXuFFTV8'R
+USO]^VPgAlWiE,%Xfek3Z*L^C[C3NR\[f>b]Y2(p^r!t+`Poj;aN;TJbg"GYd*^7he'uq!f@S[.
+g=k<:h;-rFi8ESRro4%?jo4BDkNM./l2U&Kli-8MmJlVPn,DhUnbVhToDS=Up&4U^p\4I]q>C*_
+qu$BgrU'T8s2t@l~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!`bkbqg\Noqg\-dmsjtYrC6]RoL/C?oKr>H!/fcmq24Kpr'gKPpIG0QrCQfWrCd/a$*UM6
+XfSV)X/`2kR+@T*?!^k7?iOO5@JjU6A,g*:AcHBABDcHBC&_rFC]A5MD>S2ODlrc$hO4;/pNlX^
+ja?lNpNla_rHS-^rHA-^piQ@Rj`:3=pN6=UrHA!\rcnBeqKi-frd=TkrdOirr.+fus+:0$s+LE+
+rItB/Lku"d!fDnorepo<NfO+"!K`HCOo^c2rfpTOQ^F/.R[]e:SXuFFTV8'RUSO]^VPgAlWiE,%
+Xfek3Z*L^C[C3NR\[f>b]Y2(p^r!t+`Poj;aN;TJbg"GYd*^7he'uq!f@S[.g=k<:h;-rFi8ESR
+ro4%?jo4BDkNM./l2U&Kli-8MmJlVPn,DhUnbVhToDS=Up&4U^p\4I]q>C*_qu$BgrU'T8s2t@l~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!``/tr^H]Rmml_6ogf!N!(ZuWr'g6Gp-\I=pf.;diCW3'r^m#VqaU<MrCHlYq+CTYs%EDo
+r)Wbrr)!)aj&#JG"&<-.?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KD?4Zak>VF[l;[M(
+q0V4Nq0Vj^r-A6cq02d\rH7mWqK(b=qK)CQr,qs]q02g_rH\6crd4WlqgJHmrdXirs+13%r.G$&
+s+UE+!f)SfrJ:T5Mi7Rn!f`5#rf7)AOoCLEPEc'3=I,;@R$jD4S"-%@StD[LTq\<XUnsrdW2Zes
+X0&M,YHY:;Za@-K[^`lY]=bei^V@S$_Sa@3`lH0Bb0/#RcHaeadF-Lne^i@(f\,!4gYCW@hV[8L
+iSsjs!T`AAjoX`0kl0iHlMp2Lm/HDPmelPQnG_tSo)81Yo_8%WpAF[Zq#1$dqY'gar;-BZrdk*l
+s*t~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#f`%btVt$Ya8,YpS7J'"@6h`nIh>H(-g\eVC\F7!&\GSen7e]FN8Gu-V9)VE^9F=M_nF,f5
+mHs9,cMGfVcM>`bbl5labl>lcbkK<[?Mn10@/j[5@fBm:AGg$=B)ZH@B`;`FCA_lHD#\ALDZ=YT
+j8R6tbk'*DbkQMZHf]YNHhVjbH2W!`GPu^`Fng(UF8'_KEVFMMF80kUFo?LZGQ)jcH2DpeHiAEi
+IK"]pJ,FisJcC?"KE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O8k:AOoCLEPEc'3<0il<R$jD3S"#q=
+St;RITqS3VUnsrdVl6SpX/rG*YHY79Za7$H[^WcW]">Vg^;%G!_SX71`Q-'@aihlOc-FY^dF$Fm
+eCE.%f@\g2gYCW@hV\=j$fU+*j5f=`k2tjikl0iHlMp2Lm/HDPmelPRnG_tSo)81Yo_A+WpAF[Z
+q#'scqY0mar;-BZrdk*ks*t~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#TDj?7J,k)cJFA!]IfDq:7f,XH7.iqA6MR8RMW0KhMX62t7JoXL8,PpV8bu'X9E%Tc9rn8n
+ri#psWUcG.Qi:=h?iFI5@JjU6A,^$:AcHBABDcHBC&VlFC]8/MD>S5NDZQrAp6ad+r0[8*pj;+M
+q0Vj^rH\?dq02d\rH7mWqfDLPp2ThIqK)FRrH8'^q02g_rH\9drd4WlqgJHmrdXirs+13%r.G$&
+s+UE+s+gW1re^Z4!/pi8s,@#=rf@)@!0R8D!L&cIPuO'9R$a;1R[]e:SXuFFTV8'RUnjiaVl-Jm
+WiN5'Xfnt5Z*UdD[C3QS\[oDc]tV7r_8=(-`Pom=aN;WKbg"GZd*^7ieC<%"f@S[/g=tE=h;7&g
+i!\N'j5]4^jlY^gkNMp0s6BXMrp9XOs6fgRs7$$XqXXUVrUfmXr:^'_p\=[^r;-0bqu$<hmJ_\:
+ao?k~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#;uT5a7dik27f#XO7fQ!W7f,XH7.iqA6MOR[9&iJC8EEG@7JoXL8,PpV8bu'X9E%Tc9i_!g
+oMGQbg/.cEra,M0ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVUOqelFPs'X2Qpj2^^ja?lNpNld`
+rHS-^rHA-^piQCSpN#tIpN$+OpiQIWrHA!\rcnBeqg/6grd=TkrdOirr.+fus+:0$s+LE+rJ(?-
+s+pZ2s,$f7rf$l:!07&>s,[5CrfR;GPl?qIQC!u+R@9S6S"-%@StD[LTq\?YV5C/gW2ZetXKAV.
+YctC=Za@-K\%&u[]=bhk^V@V%_SjF4a2l?DbKJ,ScHjkbdF6Upe^i@(f\5'6gtgfChu;OAiSrnX
+jQ5Lck3(pkrosIJs6K[NrpBaRr9s[TrpfjUrU^![q"=RYr:fs\r;$9ep\XjcqYfg\JcEjlJ,~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WLauVu*@iV>R4i8,PjS7Irq@6hj"Ch#P%a\`C9h\bWc57JfRK8,Z!W8bl!X9DqNa:&XDX
+lMg&JcMYrWcM>`\bjWaT?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE9$l>qTSTV
+l-/pKpj;+Mq0Vj^rH\?dq02g]rH7mWqfDRRn8\8EqfDOSrH8'^qKMp`rd"BerHnQlqgJHmrdXir
+s+13%r.G$&s+UE+s+gW1re^Z4s,6l8s,@#=rf@)@!0R8D!L&cIQ!'E>R$a;0R[]e:SXuFFTV8'R
+USO]^VPgAlWiE,$Xfek3Yd1UA['mEP\@K2_]Y2%o^qmn*`5T^9aN2NIbKS8Wcd:(fe'umtf%8R-
+g=k<:h;-rFi8ESRro4%?jo4BDkNM./klU/9li$/MmJcPPn,DhUnb_nUoDS=Vp&+O]p\4I\q>C*_
+qtp<frTsN7s2k:k~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WJcJJFA!^If;k87f5^H7.s"C6N3_ZU&C_aMW0KgMXQE"7JfRK8,Z!W8bl!X9DqNa:&([W
+R+Rc*?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE3/`"i0jP2pj2^^ja?lNpNld`
+rHS-^rc\6_piQCSq/YtEq/Z@RpiQIWrHA$]rcnEfqg/3fs*X]lrdOirr.+fus+:0$s+LE+rJ(?-
+s+pZ2s,-i7rf$l:!07&>s,[5CrfR;GPl?qNQC!u+R@0M5S"-%@StD[LTq\<XUnsrdW2ZesX/rG+
+YHY7:Za7$I[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uPcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSsjs
+!T`AAjoX`0kl0fJlKdd7li?GPmeuVRnG_tTo)81Yo_A+WpAF[Zq#'scqY'g`r;-BYrdk*ks*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WH(p7e9.17fQ!P7fGpU7f5^H7.s"C6N1$_<W,P28c2$S7e]FO8Gu-U9)_K^9E7f^<6.o9
+?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE*pskpj2^^ja?lNpNld`rHS-^rc\6_
+piQCSq/YtEq/Z@RpiQIWrHA$]rcnEfqg/3fs*X]lrdOirr.+fus+:0$s+LE+rJ(?-s+pZ2s,-i7
+rf$l:!07&>s,[5CrfR;GPl?qNQC!u+R@0M5S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY7:Za7$I
+[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uPcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSsjs!T`AAjoX`0
+kl0fJlKdd7li?GPmeuVRnG_tTo)81Yo_A+WpAF[Zq#'scqY'g`r;-BYrdk*ks*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!ERdtVu*@iV>d@i8,PjS7Irq?6i'+MhVJ(crOV^5laZAnqmcPmr'pENr(-cXqF^]Zr_3>d
+r941Fs60I-rQY2a!71Meq9A`Zq9/`Zqof"Gqd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_OM
+rbhgVj87$qbk96GbkQMZHff_OHhVjaH2W!aGPu^`Fnp.WF8BqCEVa_RF80kVFo?L[GQ)jdH2Dpe
+HiAEjIK"]pJ,FisJcC?"KE$W)L&Hc+L]<2/M#rQmMuJ\8NW5%<NsCc/OcklkPEc'3!LB)OQsZ8M
+S"#q=St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^C[C3NR\[f;a]Y2%o^qmn*`5Ta:aN;TJbK\>X
+cd:(fe'umuf@S[.g=k<:h;-rFi8ESRj5]4]jlY^gkNMp0s69UMrTsROs6fjSrp]sXqss^WrUfmX
+r:^'_pA"R]r;--aqY^3gmJ_\:aT$b~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!EPiIJFS-aIf)_67f5^H7.iqD63*hZU]7%gMt;hlM><%uM>Tg?7e]FN8Gu-V9)VE^9`Iid
+Vu*F^R,jV4QM[$K?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KDZ4PTE3/YuigKb4pj2^^
+k'ZuOpNla_rHS0_rHA-^q/lOUqJtnAqJuLTpiQLXrHA$]rcnEfqg/6grd=WlrdOirr.+fus+:0$
+s+LE+rJ(?-s+pW1!fDnorf$l:s,R)>#EY(1P*2#mPl?pKQC%T<?^[@PS"-%@StD[LTq\<XUnsrd
+Vl6SpX/rG*Y-5(7ZEppG[^N]V\[oGd]tV7s_8=+.`Q#s>ai_fMc-FV\d*^:jeC<($f@\d1g=tE=
+h;7&Ii8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnGi%Uo)81Yo_A+WpAF[Yq#'scqY'g_r;-BZ
+rdk*js*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!EN.p7efL&7f5dS7f5^H7.iqD6MX[W9&</.8GkpS7e]FN8Gu-V9)VE^9`Iib<<#tu<rZ%i
+:]OAP;#O2e;#al!?iOO5@JjU6A,g*:AcHBABDcHBC&_rFC]A5MD>S5MDZOfacrBddpj;.Nq0Vj^
+r-A6cqKMm]rH7pXr,_^TlZ)cAr,_XTrcS0_qKMp`rd"Berd4Wlr-eQnrdXirs+13%r.G$&s+UE+
+s+gW1rJ:T5Mi7Rns,I&=rf7;GOcbfiPEV71Pl[2;rg7&\R[]e:SXuFFTV8'RUSO]^VPg>jWN*##
+Xf\b0Yd(L?['d?N\@K/]]Y(ql^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qf%8O+g"P07gtgfChr*GO
+ioB([jQ5OdkND(.l2U#Kli$2MmJlVQn,DhVnb_nUoDS=Vp&+O]p\+C[q>C*_qtg6erU'T8s2b4j~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&d\lf9rMBOkqa^QRr'g0EnjEFDq;1kWo""D&m^`;+r'gKPpIG0Qr(6`WrCd,`r_<CT!9jCE
+rQbGfq9Juar6G,_q98ZXpWEMBr*TG2s'bh7raYq<r+5n?rb).Brb;@Hr+l:Js)%XNrbqdTq9/WY
+p<E*Nrlb;bpj2^^k'ZuOpNld`rHS-^rHA0_piQFTqJtnAqJuLTq/lRXrc\-^rcnEfqg/9hrd=Wl
+rdOirr.+fus+:0$s+LE+rJ(?-s+pW1s,$f7rJ^c9!07&>s,[5Crf[;F!0mJJ!LB)OQr09?S"#q=
+SXuFFTV8'RUSO]^VPgAlWiE,$Xfek3Yd(O@['d?O\@K2_]Y(tn^VI_'_o9U7a2lBFbKS5VcHstd
+daQ^rf%8O+g"P07h;-rFrnmt=ioB([jo4BJkNM-ol0@R"li-8NmJlVQn,MnVnb_nVoDS=Vp&+O]
+p\4I[q>C*^qtp<frTsN7s2Y.i~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&fmrUBq0r32r'pTQnjN%9s$HOWpP\-j!/p0#r'gKPpIG0Qr(6`WrCd,`r_3BjqPa"Qrg*VP
+jd5_-s'GV1ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVUOqelCOrc%FqigKe5pj2^^k'ZuOpNld`
+rHS-^rHA0_piQFTqJtnAqJuLTq/lRXrc\-^rcnEfqg/9hrd=WlrdOirr.+fus+:0$s+LE+rJ(?-
+s+pW1s,$f7rJ^c9!07&>s,[5Crf[;F!0mJJ!LB)OQr09?S"#q=SXuFFTV8'RUSO]^VPgAlWiE,$
+Xfek3Yd(O@['d?O\@K2_]Y(tn^VI_'_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P07h;-rFrnmt=
+ioB([jo4BJkNM-ol0@R"li-8NmJlVQn,MnVnb_nVoDS=Vp&+O]p\4I[q>C*^qtp<frTsN7s2Y.i~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&pI>'Ncpmn&r'pTQnjN%9s$HN^pIa:6nOWRHqaU<MrCHiXqF^]Zr_3;cs&B"urDrnqqGH'F
+pJ:fqr*TG2s'bh7raYq<r+5n?rb).Brb;@Hr+l:Js)%XNrbqdTcrBddpj;.Nq0Vj^rH\?dq02d\
+rcS!Xr,_^TlZ)cAr,_[UrH8*_qKMp`rd"Bes*O`mr-eQnrdXirs+13%r.G$&s+UE+s+gW1rJCQ3
+!/pf7s,@#=rf@)@!0R8Ds-!GIrfmMMQi<@LR@9V7S=Q4BStD[LTq\<XUnsrdW2ZesX/rG+YHY79
+Za7$H[^WcW]">Vf^;%Fu_SX40`Q#s>ai_fNc-FV]dF$CkeCE.%f@\d1g=tH>hV\=j"l\J$j5f>$
+jp:/6kiq?slKdd8m/QJQmeuVSnG_tTo)A7Zo_A+WpAF[Zq"smbqXsa_r;-BYrdk*is*t~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVUTVt-__V#[Cg8,YpS7Iik;6i#R=]BHia\c92<7JfRK8,PpV8bl!X9DqQ`:&jAUjo=KCjo!C(
+c2#ZUc2#TZbP''Y?Me+0@/aU4@fBm;AGg$<B)ZH@B`;`GCAVfHD#S;KDZ4SRDue&VbPBBVc19*V
+bQ#f]HM;dMI//-_HMr-fGkuX_G5ZRZFSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iq
+JGt-"K)C9$K`?c)LB!&/M#E21MZ8V6N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RI
+TqS3UUnjiaVl-JmWiE/&Xfek3Z*L^B['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^r
+f%8O+g"P39h;-rFi8ESRro4%?jo4BCkNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]
+qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVUVJFS-cIecM47f,XF7.N_@UrSDmMZ$!@7e]FN8Gu-U9)_K^9`@c`W;ideR,XJ+Q2k7g?iOO5
+@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO\UQgpI(RJrTKHM;dMI//-_HMr-fGkuX_G5ZRZ
+FSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iqJGt-"K)C9$K`?c)LB!&/M#E21MZ8V6
+N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RITqS3UUnjiaVl-JmWiE/&Xfek3Z*L^B
+['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRro4%?jo4BC
+kNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVU?7eoRQ7f,XF7.N_@<rGVc8cVHT9'o4@8Gu!S7e]FN8Gu-U9)_K^9`@`d<Vfbp;u0Dk;;tFG
+:B4_u?iOO5@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO\U<RFe@HM;dMI//-_HMr-fGkuX_
+G5ZRZFSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iqJGt-"K)C9$K`?c)LB!&/M#E21
+MZ8V6N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RITqS3UUnjiaVl-JmWiE/&Xfek3
+Z*L^B['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRro4%?
+jo4BCkNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$go'Y=rMBNbq+(?Pr'g-DoL&N4s53gfl+5f`!4_trqaU<MrCHiXqF^]Zr_38brT!t=
+ro=(*p!3*Pq98ZXp<!AAr*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdTqf)UVrQG#\
+ps&ESqTAl_pNlU]k^<2Qp3Q[_rHS0_rHA0_q/lOUqf:h=qf;UUqK2^Zrc\0_rcnEfr-J?hs*X`m
+rdOlsr.+fus+:0$s+LE+rJ(?-s+pW1s,-i7rf$l:s,R)>s,[5Crf[;F!0mJJs-<YOrg7;cR[]e:
+S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*YHY79ZEppG[^NZU\[oDc]tV7s_8=+.`Pom=aN;WKbg"GZ
+d*^7ieC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=`k2tjjkiq?slKeE8!q#FDrU9dUrpfpWrq$*\q=X^[
+r:fmZr;$6dp&"U`qYfd[JcE^hJ,~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$gjnpErdOlss%)rUr'pTQnO3":rM0=e`/FR_qaU<MrCHiXqF^]Zr_38brMTUkoU,6:
+qj-oAp6G\br*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdTqf)UVopFg.s-WP,pj;4P
+q0Vg]rH\?dqKMm]rcS$Yr,_aUk&L9=r,_^VrcS3`qfi$ard"Efrd4Zmr-eQns*srss+13%r.G$&
+s+UE+s+gW1rJCQ3s,6l8s,I&=rf@)@!0R8Ds-!GIrg!ML!13\PAso*WS"-">St;RITqS3UUnjia
+Vl-JmWiE,$Xf\e2Yd(L?['d?N\%0&\]=bhk^VI\&_o0O5a2l?DbKJ,ScHjkbdF6Upe^i@)g"P07
+gtgfChr*GOioB([jlPXekNM-ol0@R"rTjUQmdC&Bs7$$Xr:9jYrUfpYrV$0`p%\I\qtg!_qY^3g
+m/DS9`W(G~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$a%$)"q+(?Pr'g-DoL&IU!*B"gqapi[oLeLBo18gKqaU<MrCHiXqF^]Zr_38bq,[/e
+!)iPglVR:N!+,S1ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aS!-6XipNlU]k^<2Q
+p3Q[_rHS0_rHA0_q/lOUqf:h=qf;UUqK2^Zrc\0_rcnEfr-J?hs*X`mrdOlsr.+fus+:0$s+LE+
+rJ(?-s+pW1s,-i7rf$l:s,R)>s,[5Crf[;F!0mJJs-<YOrg7;cR[]e:S=Q7CT:hmOU8+N[V5C/g
+W2ZesX/rG*YHY79ZEppG[^NZU\[oDc]tV7s_8=+.`Pom=aN;WKbg"GZd*^7ieC<%"f@\d1g=tE=
+h;7&Ii8N\Uj5f=`k2tjjkiq?slKeE8!q#FDrU9dUrpfpWrq$*\q=X^[r:fmZr;$6dp&"U`qYfd[
+JcE^hJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#n[VspS_V>a$\8,YpS7I`e>6i,[;]@a^c\c"to7eT@N8Gu-U9)_K^9`.W^
+ir\;fch>ZTc2#TZbOs$T?iOO5@JjU6A,g*;Ac?<@BDcHCC&VlFC]8/LD>S5MDuXeQEW1"XF8^4Z
+bkTHUbkK<UHM;dOI/&'_HMi'fGklR_G5ZRZFT$:YEoV0:ErC(UFT-F^G5HL`GlE!dHN/?kI/JEm
+IfFoqJH(3#K)C9$K`?c)LB!&/M#E21MZ8V5Muo!!Nr>"?OHG\)P5g^GPl?pZQC!r*R$jA2S"#q<
+SXuFFT`1W[U8+N[V5C/gW2ZetXKAV-YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg+M[
+d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f>$joOZ/rojLLlg+Q:s6]jSrpTmVrpfpWrq$-]q=X^[
+r:fp[qt^-co_\O`q>K[ZJcE[gJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#n[JF.jc8GG^R7f,XE7.s"EUYUh.N9Q9!7JfRJ8,Z!W8bl!X9DqQ^:&:aZ
+R.?U9QN!6DQMY%h@/aU4@fBm;AGg$<B)ZH@B`DfGCA_lHD#S;KDZ4SSE;FSRErL.YFT%TgRJrTK
+HM;dOI/&'_HMi'fGklR_G5ZRZFT$:YEoV0:ErC(UFT-F^G5HL`GlE!dHN/?kI/JEmIfFoqJH(3#
+K)C9$K`?c)LB!&/M#E21MZ8V5Muo!!Nr>"?OHG\)P5g^GPl?pZQC!r*R$jA2S"#q<SXuFFT`1W[
+U8+N[V5C/gW2ZetXKAV-YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg+M[d*^:jeC<%"
+f@\d1g=tE=h;7&Ii8N\Uj5f>$joOZ/rojLLlg+Q:s6]jSrpTmVrpfpWrq$-]q=X^[r:fp[qt^-c
+o_\O`q>K[ZJcE[gJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#nG7fGsR8,YpS7I`e>6i'jY8c)-@8cM?[8bP^R7JfRJ8,Z!W8bl!X9DqQ^
+:&e5k<qK>e;YEu[;"[W]?iOO5@JjU6A,g*;Ac?<@BDcHCC&VlFC]8/LD>S5MDuXeQEW1"XF8^4;
+<;:e6Hg6"RHhVjaH2`'aGQ)daFnp.XF8U(=EVjeTF8C"XFoHR]GQ2peH2N!gHiAEjIK+crJ,Fis
+JcC?"KE$W)L&Hc+L]<2/M>rJ5MuAS9NK0%tNrkE*OoCODP5pjHPn97JQ^F/.R@9V7S=H.AStD\T
+Th_>WUnjiaVl-JmWiN5'Xfek3Yd1UA['d?O\@K/^]Y(qm^VI\&_o0O6a2l?EbKJ,TcHjkbdaQ^q
+e^i@)g"P07gtgfChr*GOioB([jo4BCkNMp0!p]+;rp9[Ps6fmTs7$$Xr:9jYrq-$ZrV$0`pA"O\
+qtfs^qu$9gm/DS9`;b>~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYlnYboS!i8I[r^cfSrC6ZQn3m%=!oDhlrSIF`be!hbrC-TQpIG-P
+rCQiXrCd,`qb?qH!6t5_n]gmRq9/HRr*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdT
+qf2RTrc@pXrH8*_rlt/\p<35WpNu1Qq0Vg]rH\?dqKMm]rH7sYrH%jVic4m:rH%jXrH8-`qfi'b
+rd"Efs*O`mrI+]prdXlss+10$rIb-'s+UE+s+gW1rJCQ3s,6i7s,@#=rK$u?!0R8Ds-*JIrfmMM
+Qi<BPR:2PRS"-">St;RITV8'RUSO]^VPg>jWN)u!XKAV-YctC<Za7'J[^WcW]">Vf^;%Fu_SX4/
+`Q#s>ai_fMc-FV\d*^:jeC<($f@\d1g=tE=hV[8LiSrkWj5f=ak3(pkrojIKli-8NmJlVRn,MnV
+nbhtXoD\CXp&4U^p\+CZq>:$\qtg6drTjH6s2=qf~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYlnUU+Ys%32\pdb9PqaL!Bpd5%UqkMr)s,?9%rC-TQpIG-PrCQiX
+rCd,`qb?paopG68k*GpPra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aSrGqmYqK2[Y
+rc[Rps-WS-pNu1Qq0Vg]rH\?dqKMm]rH7sYrH%jVic4m:rH%jXrH8-`qfi'brd"Efs*O`mrI+]p
+rdXlss+10$rIb-'s+UE+s+gW1rJCQ3s,6i7s,@#=rK$u?!0R8Ds-*JIrfmMMQi<BPR:2PRS"-">
+St;RITV8'RUSO]^VPg>jWN)u!XKAV-YctC<Za7'J[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fMc-FV\
+d*^:jeC<($f@\d1g=tE=hV[8LiSrkWj5f=ak3(pkrojIKli-8NmJlVRn,MnVnbhtXoD\CXp&4U^
+p\+CZq>:$\qtg6drTjH6s2=qf~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYli(!`<r^cfSrC6ZQn3m%=!*/nspIY3Rj[nu5rC-TQpIG-PrCQiX
+rCd,`qb7&jqc<MjrDW5ap/1`aohYKmra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aS
+rGqmYqK2[Yrc[L)pj2[]l?rDSp3Q[_rHS0_rHA-^qK2[Wqf:\9r,VaWqfMdZs*"9`s*4Ngr-JBi
+rd=Zms*jrsrIFp!rdt*$s+LE+rJ(?-s+pW1s,-i7rJ^c9!07#=s,[5Crf[;Fs-3MJ!LB)OR/`R_
+R[]e:S=Q7CT:hjNTq\<XUnsrdVl6SpWiN5'Xfen4Z*L^B[C3NQ\@K2_]Y(tn^VI_'_o0O6a2lBF
+bKJ/UcHjkbdaQ^qf%8O+g"P07gtgiEi8ESRioB([jlY^gkNMp0!UB"Mm/QJQmf)\TnG_tUo)J=\
+o_J1YpAF[Yq"smaqXj[]r;$<Wrdk*fs*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:Aq*\VZ'0c8GPdR7f5^C7/K@JhVl'I]"@.:!4i(tqaU9L
+rCHlYq+CTYr_32`qVqP!p!*N\p!*?Wq9/EQr*TJ3raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_OM
+rbqdTqf2UUrH%gWrH8'^q02e]oum)Uom?.Tpj;^\r-A6cqKMp^rH7sYr,_gWi,S[8rH%jXrcS3`
+r-/-bs*=Ngs*Ocnr-eTos*sutrdk*$rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D!gAk5
+rg!ML!13\PA!rdSS"#q<SXuFFTV/!PU8+N[V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NR\[f;`]Y2%o
+^qmn)_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4]jlY^gkl0fJlKdd8m/QGQ
+meuVSnGi%Vo)J=\o_S7ZpAF[Yq"smaqXaU\r;-BXrdk*ds*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:Ao_AIfP#mJ,W%<8GPdR7f5^C7/K=OUAL_aMrfluMi@Um
+s,?f4o8<N9qaU9LrCHlYq+CTYr_32`qPNqQn!E4'r*TJ3raG_6raYt=qdoe>rb).Brb;CIqeQ4J
+rb_OMrbqdTqf2UUrH%gWrH8'^q02Fus-WP,om?.Tpj;^\r-A6cqKMp^rH7sYr,_gWi,S[8rH%jX
+rcS3`r-/-bs*=Ngs*Ocnr-eTos*sutrdk*$rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+!gAk5rg!ML!13\PA!rdSS"#q<SXuFFTV/!PU8+N[V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NR\[f;`
+]Y2%o^qmn)_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4]jlY^gkl0fJlKdd8
+m/QGQmeuVSnGi%Vo)J=\o_S7ZpAF[Yq"smaqXaU\r;-BXrdk*ds*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:@1OM8c;3U8,PjS7IES@6iL'`<W,M\9&rS88H)'T7eT@N
+8Gu-U9)VE^9`%Q\<npUL;>X2e:]+T"@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KDZ4SRE;OYS
+ErC(UFT$@\G56@P<;1_3Hgc@WHhMd`H2W!aGQ)daFo$4XF8^.;EVskUF8L(YFoHR^GQ)jeH2N!g
+HiJKkIK+crJ,OosJcC?#KE$W)L&Hc+L]<2/M>rJ5MuAV7NW5%<O8k=AOoCLFPE_=2Q2d-MQi<@^
+R@9S6S"-">St;RITV8'RUSO]^VPg>jWN)u!XKAV-YHY79Za7$H[^N]V\[oDc]tV7s_8=(,`Poj;
+aN;TJbg"GYd*^7he'uq!f@S[.g=tE=h;7&Ii8N\Uj5f:_k2tjjrojLLlg+Q:s6TgSrU9dUs7-$X
+s7?6^qXsg\r:fp[qt^-coDAC^qYfaZJcEUeJ,~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqPO9brCQuZq+(?PqaKm?rBpJ=i4J-_rC-TQ
+pIG-PrCQfWr_*2`qb@%Jro3q#qTJrarlbAeprr`^q98TVpWED@ra>b7qdTS8rabq<rau1Cqe6"D
+rbD@HrbVRNqelCOrc%aSrc7sYqK2[YrH@pZr-86eqTJSYom?4VpNuU[rH\?dq02g]rcS$YrH%pX
+hJrL7rH%jXrcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=
+rf@)@s,m;Ds-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B
+['mEP\@K/^]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BC
+kNMp0#jUaAm-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqLAN;rCQuZq+(?PqaKm?rBgRZr1j1Jjc&_f
+p58f;qaU<Mr(-cXq+CWZrCm)_qPNtRm?dL3s-NJGr*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:J
+rb_OMrbqdTqf2UUrH%gWrH8'^pNQO[s*=L0!1<J+om?4VpNuU[rH\?dq02g]rcS$YrH%pXhJrL7
+rH%jXrcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@
+s,m;Ds-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B['mEP
+\@K/^]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BCkNMp0
+#jUaAm-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqF:KWrCQuZq+(?PqaKm?rBpQ`r`/kfnk/"8
+ogo$MqaU<Mr(-cXq+CWZrCm)_qH!Smf2DHBr_WN"ra>b7qdTS8rabq<rau1Cqe6"DrbD@HrbVRN
+qelCOrc%aSrc7sYqK2[YrH@pZr-86eqGd07om?4VpNuU[rH\?dq02g]rcS$YrH%pXhJrL7rH%jX
+rcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+s-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B['mEP\@K/^
+]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BCkNMp0#jUaA
+m-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=qqh7`jLaTdr^H]R
+p.,'Pr(6`WrCd,`qFq#diSjdq!9<drprrc]r65)^s30oSs2t7Hs'Yh7r*oY8s()"<s(;7Cr+Q(D
+rbD@HrbVRNr,2LPrc%^Rrc7sYqK2[YrH@pZr-8*anp9qTomHFZp3Q[_rHS0_rHA0_qK2[Wr,UY6
+rGqjXqfMj\rc\3`s*4Qhr-JBis*Xcns*jutrIFp!s+:3%s+LE+rJ(?-s+pW1s,-i7rJ^c9s,R)>
+s,d8Crf[;Fs-3MJs-<YOrg<_R!1NnV$_3cYSt;RITV8'RU].&iV5C/gW2ZesX/rG*Y-5(6Z*UdD
+[C3NQ\[f;`]Y(tn^VI_'_o0O6a2l?EbKJ,ScHjkbdF6Upe^i@)g"P07gtgfChr*GOioB([jlY^g
+kNM0plK[^7liQSBmeuSUnF?&Ho)J=\o_\=[pAOaZq"sm`qXaU\r;$<Wrdk*bs*t~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=!2BCdhi.)`pPSr=
+qaU9LrCHiXqF^]Zr_3/_!)EHh!2og`jHoV,p6YfFr*TJ3raG_6raYt=qdoe>rb).Brb;@Hr+l:J
+rb_RNrbqdTqJlLTrH%gWrH8'^pNQO[qg%aYoR$7Yom?CYrH\?dqKMm]rcS'ZrH%mWhJrL7rH%jX
+s)n<ar-/0cs*=Ngs*OcnrI+]ps*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+s-*JIrg!ML!13\Ps-WkUrgO:cSXl@DT:hjNTq\=]UfO=hVl-JmWiE,$Xf\b0YctC=Za@-K[^WfX
+]">Vf^;%Fu_SX4/`Q#s>aND]Lbg"GZd*^7ieC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07Ku
+li-5PmI'E@mfN"KnbhtXoD\CZp&4U_p\+CZq>0sZqtg6drTjH6s1nYb~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=rD`eslq6>1pIP9P
+qaU9LrCHiXqF^]Zr_3/_!)EJns&T1spJKR@r_`T#s'Yh7r*oY8s()"<s(;7Cr+Q(DrbD@HrbVRN
+r,2LPrc%^Rrc7sYqK2[YrH@pZr-8*anp9qTomHFZp3Q[_rHS0_rHA0_qK2[Wr,UY6rGqjXqfMj\
+rc\3`s*4Qhr-JBis*Xcns*jutrIFp!s+:3%s+LE+rJ(?-s+pW1s,-i7rJ^c9s,R)>s,d8Crf[;F
+s-3MJs-<YOrg<_R!1NnV$_3cYSt;RITV8'RU].&iV5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NQ\[f;`
+]Y(tn^VI_'_o0O6a2l?EbKJ,ScHjkbdF6Upe^i@)g"P07gtgfChr*GOioB([jlY^gkNM0plK[^7
+liQSBmeuSUnF?&Ho)J=\o_\=[pAOaZq"sm`qXaU\r;$<Wrdk*bs*t~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?hYFhG]BHj+7J]LJ
+8,PpV8bl!X9DqQ]:&ducipP"hbi$\C?iFI4@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO_P
+EW1"XF89qVFo?LXGPcX^H1H:=HhD^`H2W!`GQ)dbFnp.YF8U(MEVOMFEW'qVF8U.ZFoHR_GQ2pe
+H2W'hHiJKlIK+crJ,OotJcC?#KE$W)L&Qi,L]<2/M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=2Q2d0M
+Qi<?RR@9TDRfT%Mrgm>dTV/!PU8+KZUnsrdVl6SpWiN5'Xfek3Yd(L?Za@-K\%&uZ]"G\h^;%G!
+_SX40`Q#s>ai_fMc-FV\d*^:jeC<%#f@\d1g=tE=h;7)JiSrkWj5f=ak3(t-klU/9li-5PmI'EA
+n,MnWnbr%YoD\CZp&4U_p\4I[q>:$Zqtg6crTjH6s1eSa~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?UYUmuMtr817J]LJ
+8,PpV8bl!X9DqQ]:&ducVuN.DQhZm=Qi1:j@/aU4@fBm;AGg$<B)ZH@B`;`GCAVfHD#S;KDZ4SR
+E;FSRErL.UFT$@\G5$4XGl)dWHJa)BHMr-fGklR_G5cX[FT-@ZEq=;GE:e/KErC(WFT-F^G5ZXb
+GlE!eHN/?lI/SKnIfForJH(3#K)L?%K`?c*LB!&/M#E21MZ8V5N;nn;NrG+>OT1IAOogi3Pl?sJ
+QN*<NQi`\ERf8cWS=TYN>G%R]TqS3UUSO]^VPg>jWN)u!XKAV-YHY79ZEpmE[C3QS\[f;a]Y2%o
+^VRe(_o9U7a2lBFbKJ/UcHjkbdaQ^qe^rF*g"P07gtgfCi8ESRioB([jlY^gkl0fJlKdd8liQSB
+mf)\TnGi%Wo)J=\o_\=[pAOa[q"smaqXXO[r:p6Vrdk*as*t~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?<9d*:8bbjV7J]LJ
+8,PpV8bl!X9DqQ]:&dug<rH+p;"miE;ZBVm?iFI4@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5M
+DuO_PEW1"XF89qVFo?LXGPcX^H1H:=HhD^`H2W!`GQ)dbFnp.YF8U(MEVOMFEW'qVF8U.ZFoHR_
+GQ2peH2W'hHiJKlIK+crJ,OotJcC?#KE$W)L&Qi,L]<2/M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=2
+Q2d0MQi<?RR@9TDRfT%Mrgm>dTV/!PU8+KZUnsrdVl6SpWiN5'Xfek3Yd(L?Za@-K\%&uZ]"G\h
+^;%G!_SX40`Q#s>ai_fMc-FV\d*^:jeC<%#f@\d1g=tE=h;7)JiSrkWj5f=ak3(t-klU/9li-5P
+mI'EAn,MnWnbr%YoD\CZp&4U_p\4I[q>:$Zqtg6crTjH6s1eSa~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB6ic-ChY=bF]BQp,
+7J]LJ8,PpV8bl!X9DqQ]:&ducil]IC?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>S5MDuO_Q
+EW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(YFoQX_GQ2pf
+H2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=1Pld8<
+Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT\[oDc]Y2(p
+^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fIlKeH9s6TgS
+rpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB7/Wk9N:;c%MZ6-A
+7e]FN8Gu-U9)_K^9`%Qa:A^pgR-L%<R/30GQLgIA?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/L
+D>S5MDuO_QEW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(Y
+FoQX_GQ2pfH2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FE
+PE_=1Pld8<Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT
+\[oDc]Y2(p^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fI
+lKeH9s6TgSrpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB6i^6c<8:+98bkpW
+7J]LJ8,PpV8bl!X9DqQ]:&drg<r?%o;"7ED;?0Sm?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/L
+D>S5MDuO_QEW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(Y
+FoQX_GQ2pfH2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FE
+PE_=1Pld8<Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT
+\[oDc]Y2(p^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fI
+lKeH9s6TgSrpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m33pUnncs185!
+qF:0KrCHiXqF^]Zr_3/_s%`UR!9=(<b00`jra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rc%aSrGqmYq/lRXr-%gYqfr!`ms=,Co6U@\rHS-^rc\9`qK2[WrGqRNnSn2Arc7sYr,hs]rc\6a
+s*4QhrHeKjs*Xcns*jutrdb$"s+:3%!ec8]rJ(?-s+pZ2s,-i7rJ^c9!07#=s,d8CrK75GPa)-3
+!g]1>rg<_Rs-iqV!h>gPrgj._T`1VcU8.^`!Mu[mVb*hdWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc
+]tV7r^qmn*`5T^9aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^roOFJkiq?slKeH9
+!q#FDrpTmV!:g$Yrq$0^qt9s^rqH3_qt^*bo)&7\q>KRWJcEF`J,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m2Md>[gXs,-hF
+qF:0KrCHiXqF^]Zr_3/_s%`QjrhTU^l'MC:q3V#Fo9]D_ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@H
+rbVRNqelCOrc%aSrGqmYq/lRXr-%gYqfr!`ms=,Co6U@\rHS-^rc\9`qK2[WrGqRNnSn2Arc7sY
+r,hs]rc\6as*4QhrHeKjs*Xcns*jutrdb$"s+:3%!ec8]rJ(?-s+pZ2s,-i7rJ^c9!07#=s,d8C
+rK75GPa)-3!g]1>rg<_Rs-iqV!h>gPrgj._T`1VcU8.^`!Mu[mVb*hdWiE,$Xf\b0YctC<Za7$H
+[^WcW\[oDc]tV7r^qmn*`5T^9aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^roOFJ
+kiq?slKeH9!q#FDrpTmV!:g$Yrq$0^qt9s^rqH3_qt^*bo)&7\q>KRWJcEF`J,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m1Skt:P?qF^BO
+s%*/YqF:0KrCHiXqF^]Zr_3/_s%`Sp!*B/#r)*DhnPS=ErEoP3s'bh7raYq<r+5n?rb).Brb;@H
+r+l:Jrb_OMrbqdTqf2RTrc@mWrH8$]pNQLZqg%XVk'Q]GrH\?dq02g]rcS'ZrH%pXol9M@p2U(P
+rH%mYs)n<arHJ9ds*=Qhs*OcnrI+]ps*t#us+13%rIY0)Kn]J[s+gW1re^Z4s,6i7s,@#=rK$u?
+s,m8C!gAk5rKRGMQ^@]=s-`nUrgNtZSXobO!M?%aT`Lm_rhKRkVZ*JbW2ZesX/rG*Y-5(6Z*L^B
+['d?O\@K/]]=bhk^V@S#_Sa=2`Q-'@ai_fNc-FV]dF$CkeCE.%f@\d1gYCW@hV[8LiSrnXjQ6C'
+#3Y47l0@R"rp0^RmdC)Cs6p$YrUTsZs7H3]rq??cq"Xa^qYKd[q>C'el2H86^&NT~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/Ys8][=@k7J]LI
+8,Z!W8bl!W9E%W]:&[ocir@6gb5fcHbPbfJ@/aU4@fBm;AG]s<B)ZH@B`;`FCA_lHD#S;LDZ+MQ
+E;OYRErL.UFSp:[G4p.WGl)dSHKfeJHMi'eGkuX`G5ZR[FT-@[EqXM@E;+AOErL.WFT6L`G5QRa
+GlN'gHN/?lI/SKnIK4lrJH(0#K)L?%K`?c*LB!&/M#N82MZ8V5N;nk;Nr>%=OT1IBP5gaGPl6jK
+QC!s:Qi`\ERf8fVS,f,ZT)YD_T`1VcU8.^`!Mu[mVcfstWiE,$Xf\b0YctC<Za7$H[^NZT\[f>b
+]Y2%o^qmn)_o0O6a2l?EbKJ,ScHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jlY^gkih9qlKdd&
+m-X3.rpTmVs7-'Ys7?9_r:U'_rV--_qt^-co)&4[q#0IVJcEC_J,~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/`n]V9k1pMuQ6B
+7eT@N8Gu-U9)VE^9_qK_:AgsgR-U+:R-0h7?iOO5@JjU6A,g*:AcHBABDcHBC&VlFC]8/LD>\;M
+DuO_QEW'qWF89qUFo?LWGPcX^H1$"CHh2R]H2W!aGQ)daFo$4ZF8^.QEUIf?EW1"XF8L(ZFoQX_
+GQ2pfH2`-iHiJKlIK+`rJ,OotJH1<#KE$W)L&Qi,L]<20M>rJ5MuAV7N<#";O8k=AOoCODPQ-mG
+Pld8<Qi39QR@9TDS,\uYSc55\T)bP`T`Lm_rhKRkVZ*JrW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ
+]=bei^;%J"_SX4/`Q#s>aND]Lbg"GZd*^7heC<%"f@S[/g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!
+lg4!*mI'uBs7$'YrUU![s7H6^rq?<bq=sj_qtfm\q#'pcl2H86]`3K~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/U'K9(P^P9(PXS
+7J]LI8,Z!W8bl!W9E%W]:&[oc<rZ(`;;tLP?iOO5@JjU6A,g*:AcHBABDcHBC&VlFC]8/LD>\;M
+DuO_QEW'qWF89qUFo?LWGPcX^H1$"CHh2R]H2W!aGQ)daFo$4ZF8^.QEUIf?EW1"XF8L(ZFoQX_
+GQ2pfH2`-iHiJKlIK+`rJ,OotJH1<#KE$W)L&Qi,L]<20M>rJ5MuAV7N<#";O8k=AOoCODPQ-mG
+Pld8<Qi39QR@9TDS,\uYSc55\T)bP`T`Lm_rhKRkVZ*JrW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ
+]=bei^;%J"_SX4/`Q#s>aND]Lbg"GZd*^7heC<%"f@S[/g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!
+lg4!*mI'uBs7$'YrUU![s7H6^rq?<bq=sj_qtfm\q#'pcl2H86]`3K~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogJc9pq?U<oXj_-
+mCN?eqF:0Kr(-cXq+CWZrCm)_r_<Ghr8RIpo?70XjNIL/s'Yh7r*oY8s()%=rau.Br+Q(Ds(_FH
+rbVUOqelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Z
+r,hp\s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8C
+rf[;Fs-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B
+['mEP\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=a
+k3(t-klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogAeUrh[kupko,@
+qF:0Kr(-cXq+CWZrCm)_r_<Ghr2'.To9]?Aka26Ts'Yh7r*oY8s()%=rau.Br+Q(Ds(_FHrbVUO
+qelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Zr,hp\
+s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8Crf[;F
+s-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B['mEP
+\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogJaXk">5<qF^BO
+!(H`Rp.,$OrCQfWr_*2`qb@&b!)NMopJUT[i_o_^s'Yh7r*oY8s()%=rau.Br+Q(Ds(_FHrbVUO
+qelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Zr,hp\
+s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8Crf[;F
+s-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B['mEP
+\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI,#=!T1Th^A#>'
+]^NH47J]LH8,Z!V8bu'X9E%W]:&[lf:]05?bl,``biR%I?iFI4@JjU7A,^$:Ac?<@BDcHCC&VlE
+C]A5MD>S5MDuFYPEW'qVF89qVFo6FVGPZR\H0]eKHgc:ZH2Mp`GQ)daFo$4ZF8^.REU.T=EW1"X
+F8U.[FoHR_GQ2mfH2W'hHiJKmIK+crJ,XuuJH1<#K*$^[L&Qi,L]<20M>rJ5MuJ\8NW5%<O8k=A
+Oo:FEPE_=1Q2d-MQi3<OR/i]SRf]+NSc55\T)bP`U&UheU].%iV5F6i8#WDeWiN2%Xf\b0YctC<
+Za7$H[^NZT\[f>b]Y2%o^VI_'_o0O5a2l?Db0/#RcHab_dF-LneCE1&f\,!4gYCW@hV[8Mir7sA
+jQ5OdkNMp0!UB"MliQSBmf)YVnF?&Io)J=]o_eC]pAXg^q#'scqXXOYr:g0Rrdk*\s*t~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI+tVnr;C_qMP>B
+qF:-JrCHiXqF^]Zr_3/_r_<Ghr2&hKrKm>Il'MBVra>_6r*o\9rabq<rau.Br+Q+ErbD=Gs(q[O
+qelCOrG_XRrGqjXq/lRXr-%dXqKVj^l[&2Mms=qXr-8'^rc\6_qK2^XrGqXPlYuW=rc8!Zr,hs]
+rc\6as*+NhrHeKjs*Xfos*jutrdb$"!.t0%!ec8]reCH.s+pZ2s,-i7rf$l:s,R)>s,d8CrK75G
+Pa)-3s-<YOrL!VQ!1NkU!h>gPrgs.^!20=bs.TLgrhKRkVZ*J`W2ZesX/i>(Xfek3Yd(L?Za@-K
+[^WcW\\#Me]tV7r^r!t+`5T^9aN2KGbKS5VcHjkbdaQ^qe^rF*g"P07gtgfChr*JQro41CjlY^g
+kl0fIlKeH9!q#FDrpKpXnaZSKs7?9_r:U'_rqH6`r;$9eo)&4[p\j=TJcE=]J,~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI+sZr_(d6oLT$O
+qF:-JrCHiXqF^]Zr_3/_r_<Ji=8c7h;Z0JO;Z:&&@/aU4@fKs;AGg$<B)ZH@B`DfGCAVfHD#S;K
+DZ4SQE;OYRErC(TFT$@[G4p.VGku^OHLuRQHMr-eGkuX`G5ZR[FT-@[EqaS>E;4GPErL.XFT6L_
+G5ZXbGQ<$fHN/?lI/\QoIfFosJH(0#K)L<'KS>-ZLB!&/M#N82MZ8V6N;nn;NrG+>OT1IAOogi3
+Pl6mIQ2m9MR/`QSRf/]WS=Q5MT)YD_T`1YbU&^tfU]I<hrhi8bWN)u!X/rG*Y-5(6Z*L^B['d?N
+\%&uZ]=bei^;%Fu_SX4/`Pom=aN;TJbg"GYcd:(fe'umtf@S[.g=k<:h;-rFi8N\pis"N*k2tjj
+rojIKli-5PmI'EAmfN"Knbr%YoDeI\p&=[ap\FU^q>C*[qtU*`rTO63s185\~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sI!9*q8qS):/
+o=XS)q*t'Jr(-cXq+CWZrCm)_rD*Ags5F"9qp"HNk0*a2ra>b7qdTS8rabq<rau1Cqe6"DrbD=G
+s(q[OqelCOrG_XRrGqjXq/lOWr-%dXqKVg]d!GV8r-8'^rHA0_qK2^XrGqXPpi-+Kpi-%Krc8!Z
+r,hs]s*"?bs*4Qhrd+Tks*Xfos*artrI=s#JqEuSs+CB+rItB/Lku%es,-i7rf$l:s,R)>s,d8C
+rf[;Fs-3JI!g]1>rL!VQ!1NkUs-s([rgs.^s.K@b!MZ@gV#R7kVZ*JeW2ZesX/i>(Xfek3Yd(L?
+Za@-K[^WcW\[oDc]Y2(p^qmn)_o0O6a2l?DbKJ,ScHaeadF-Lne^i@(f\,!4gYL]Bhr*GOioB([
+jo4BMkNM0plK[^%m-X3.rpTmVs7-*Zs7?9_r:U'_rqH9ar;$9eo)&4[p\j=TJcE7[J,~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sIrMAS7kD]=s
+q*t'Jr(-cXq+CWZrCm)_rD*AgrM9=YkEtP$ra5Y4s'be6s'u%=r+5k>s(D4Bs(VIIqeQ4Jrb_OM
+rbqaSqf2RTrH%dVr,qp\p36@Xq0C>5r-A3bqKMm]rcS'ZrcA$YpMotIqeu7Kq/QCSrcA!Zs)n?b
+rHJ9ds*=Tis*OcnrdFfq!.Xrt!eGrTre(6(!/:B+!f)Sfre^Z4s,6l8s,I&=rf@)@s,m;Ds-*JI
+rKRGMQ^@Z<s-WkUrL<hW!1j+\s.B=arh0@eU].(hV#[ClVbF%gWiE,#XKAV-YHY79ZEpmE[C3NQ
+\@K/]]=bei^V@S#_SX4/`Q#s>aN;WKbg"GYd*^7he'uq!f@S[.g=k<;h;7&Ii8N\Uj5f>$jpUA9
+l07Kulg4!*mI'uBs7$'Yrpp*\s7H6^rq??cqY:!ar;-!]q#'mbkl-/5\Gq'~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sI!*0"trCc3D
+k"5A<p.,$OrCQfWr_*2`qb@#as%iSqqbtj>ra5Y4s'be6s'u%=r+5k>s(D4Bs(VIIqeQ4Jrb_OM
+rbqaSqf2RTrH%dVr,qp\p36@Xq0C>5r-A3bqKMm]rcS'ZrcA$YpMotIqeu7Kq/QCSrcA!Zs)n?b
+rHJ9ds*=Tis*OcnrdFfq!.Xrt!eGrTre(6(!/:B+!f)Sfre^Z4s,6l8s,I&=rf@)@s,m;Ds-*JI
+rKRGMQ^@Z<s-WkUrL<hW!1j+\s.B=arh0@eU].(hV#[ClVbF%gWiE,#XKAV-YHY79ZEpmE[C3NQ
+\@K/]]=bei^V@S#_SX4/`Q#s>aN;WKbg"GYd*^7he'uq!f@S[.g=k<;h;7&Ii8N\Uj5f>$jpUA9
+l07Kulg4!*mI'uBs7$'Yrpp*\s7H6^rq??cqY:!ar;-!]q#'mbkl-/5\Gq'~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dSiVC4R^%8o,
+]D>"i8,Z!V8bu'X9E%W]:&[oe:]92Bc19*AbPklJ@/j[5@fBm:AGg$<B)cNAB`;`FCA_lHD#S;K
+DZ4SQE;OYRErC(SFSp:ZG4g(VGklX5HMi'dGklR_G5cX\FT$:[EqjYME:n/GE;FSRErL.XFT6L`
+G5ZUdG^4T5H3/G@I/\QoIfFosJ-(:RK)UE&KE-`*LB!&/M#N54MMmDlN;nn;NrG+>OT1IBP5gaG
+Pl?sJQN*<MQi`\ERf/`US,f,YScYOWT`1YbU&^tfUg0anVPg>jW2ZesX/i>(Xfek3Yd(L>Za7$H
+[^NZT\[oDc]Y2%o^VI\&_o0O5`lH0Bb0.uPcHab_dF$CleCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liQSBmf)YVnF?&Inc8:\o_nI^pAXg_q#1$cqXaUZr:g0Rrdk*Xs*t~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dSV;mQuN;\\2
+7eK:M8Gl'U9)VE^9_qK_:B"&fV":#BR-U+<?iFI5@JjU6A,^$:Ac?<ABDcHBC&VlFC]8/LD>S5M
+DuFYPEW'qVF80kTFo6FUGPcX\H.%$:H2Mp_GQ)dbFo$4YF8g4TEVXSHDu+GLEW1"XF8U.[FoQX`
+G63#7H2W$jH[L5?IK+crJ,Xs"JV&LQKE$T)L&Qi,L]<20M#rQmMuJ\8NW5%<O8k=AOoCODPQ-mH
+Q2d0MQi39QR@9TCS,\uYSc,,]T:hkVU&UheU].&oV5C,fVl6PnWiE,#XKAV-YHY79ZEggC['d?N
+\%&u[]=bei^;%Fu_8=+.`Poj;aN;TJbKS8Wcd:(edaZdsf%8O+g"P39h;-rFi8ESRj5]4^k2tjj
+kiq?sli-5PmI'EAmfN"Knbr"YoD\C\p&=[ap\O[`q>:$[qtU*`rTO63s0hrX~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dS<W#MN9'8eB
+7eK:M8Gl'U9)VE^9_qK_:B"&f=S#JD;Z:&&@/j[5@fBm:AGg$<B)cNAB`;`FCA_lHD#S;KDZ4SQ
+E;OYRErC(SFSp:ZG4g(VGklX5HMi'dGklR_G5cX\FT$:[EqjYME:n/GE;FSRErL.XFT6L`G5ZUd
+G^4T5H3/G@I/\QoIfFosJ-(:RK)UE&KE-`*LB!&/M#N54MMmDlN;nn;NrG+>OT1IBP5gaGPl?sJ
+QN*<MQi`\ERf/`US,f,YScYOWT`1YbU&^tfUg0anVPg>jW2ZesX/i>(Xfek3Yd(L>Za7$H[^NZT
+\[oDc]Y2%o^VI\&_o0O5`lH0Bb0.uPcHab_dF$CleCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNM-o
+l0@U6liQSBmf)YVnF?&Inc8:\o_nI^pAXg_q#1$cqXaUZr:g0Rrdk*Xs*t~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:LiVC4Q^%8o.
+]D>"i8,PpV8bl!X9DqQ\:&[oe:]9/9c2#TJbPbfJ@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;K
+DZ4SQE;FSRErC(SFSp:YG4g(UGkcR8HM`!dGklR^G5cX\FT-@[EqjYOE:\#EE;FSRErL.YFT6L`
+G5ZXbGlN'gHN/<lI/SHpIXckHJ-(:RK)UB(KS>-ZLB!#/M#N82M?&S5Muo!!NrG+>OT1IBP5gaG
+Pl?sJQN*<MQi`\ERf/`US,f,YT)YD_T`1YbUAq"fU]I<hrhg.&WMuntX/i>(Xfel,YXGb%Za7$H
+[^NZT\[f;`]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^:jeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=a
+k3(t-klL)8rp0[Qmf)\TnGi%Xo)J=]o_nI^pAXg_q#1$dqXaUZr:g0Qrdk*Ws*t~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:LV;dKtN;nh4
+7eK:L8Gu-U9)_K^9_qK_:B"&fV!FHAR-g7=?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8/LD>S5M
+DuFYOEW1"WF80kTFo-@TGPZRZH.I<=H2W!`GPu^aFo$4ZF8^.SEVj_HDu+GLEW1"XF8^4\FoQX`
+GQ2pfH2`-iHN8HlI0+kIJ,Xs"JV&LQK*$^[L&Qi,LB*/0M>rG5MuAS9NK0%uO8k=AOoCODPQ-mH
+Q2d0MQi39QR@9TCS,\uYSc,/[T)bP`U&UkeU].%iV5F6i$`L&(WiE,#XKAV-YPtaoZ*L^B['d?N
+\%&uZ]">Vf]tV7s_8=(,`5Ta:aN2KGbKS5VcHjkbdaQ^qe^i@(g"P07gtgfChr*GOioB([jlY^g
+kl0fIlKeH9!U]=Sn,MnWnc&+ZoDeI]p&=[ap\O[`q>C*\qtU*`rTF02s0_lW~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:L<VoGM9'JqD
+7eK:L8Gu-U9)_K^9_qK_:B"&f=R/oE;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ4SQ
+E;FSRErC(SFSp:YG4g(UGkcR8HM`!dGklR^G5cX\FT-@[EqjYOE:\#EE;FSRErL.YFT6L`G5ZXb
+GlN'gHN/<lI/SHpIXckHJ-(:RK)UB(KS>-ZLB!#/M#N82M?&S5Muo!!NrG+>OT1IBP5gaGPl?sJ
+QN*<MQi`\ERf/`US,f,YT)YD_T`1YbUAq"fU]I<hrhg.&WMuntX/i>(Xfel,YXGb%Za7$H[^NZT
+\[f;`]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^:jeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0[Qmf)\TnGi%Xo)J=]o_nI^pAXg_q#1$dqXaUZr:g0Qrdk*Ws*t~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k;ApV,FroXt&j
+oLJjNr(6]Vr_*2`qb@#ar_NRNs4un`qon?KrEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OM
+rbqaSqJlISrH%aUr,qm[oQU+Upj(S>qg&*aqKMm]rcS'ZrH%sYpi61MnSe;DqJlLTs)\*[s)n?b
+rHA<fH$TC8s*Ocnrd=isIt.HJ!eGrTrdt9*Kn]M\!f)SfreU]6Mi7Rns,@#=rJq#AOcfX+s-*JI
+rg!MLs-N\O!h#LGrL<hW!1j([s.9:arLj:eUSIgas.o^mrhg.&WMuntX/rD)Xfel,YXPh&Za7$H
+[^NZT\[f;`]Y(ql^V@S#_Sa=2`Q#s>aND]Lbg"GYcdC.ge'umtf@S[.g=k<:h;-rFi8ESRj5]4^
+k2tjjrojIKli-5OmI'uBs6p$YrUU![s7H9_s7ZHdqY:$brVH0`q#'jak5Kr3[/YX~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k:Zb`2IXqaU3J
+rCHiXq+CWZrCm)_rD*>frM8PCqO$];rEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OMrbqaS
+qJlISrH%aUr,qm[oQU+Upj(S>qg&*aqKMm]rcS'ZrH%sYpi61MnSe;DqJlLTs)\*[s)n?brHA<f
+H$TC8s*Ocnrd=isIt.HJ!eGrTrdt9*Kn]M\!f)SfreU]6Mi7Rns,@#=rJq#AOcfX+s-*JIrg!ML
+s-N\O!h#LGrL<hW!1j([s.9:arLj:eUSIgas.o^mrhg.&WMuntX/rD)Xfel,YXPh&Za7$H[^NZT
+\[f;`]Y(ql^V@S#_Sa=2`Q#s>aND]Lbg"GYcdC.ge'umtf@S[.g=k<:h;-rFi8ESRj5]4^k2tjj
+rojIKli-5OmI'uBs6p$YrUU![s7H9_s7ZHdqY:$brVH0`q#'jak5Kr3[/YX~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k9_qFf%)qaU3J
+rCHiXq+CWZrCm)_rD*>frE//[k>M7cs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCOrG_UQ
+rGqjXpiQFVqf_UUq0;[[g3WXAr-8'^rHA0_qK2[Wrc7dRqf)(Dqf)COrc8$[r,hs]s*"?b!dK!9
+rd+Tks*Xfo!e,WKrdY'$JqEuS!ec8]re:K0Lku%e!fDnorf$l:!07#=!g&P,rf[;Fs-3MJs-E\O
+rKmYSR[X2Es-s([rLX%]!20:a!huHbrhTRj!2fan$`L&(WiE,$XKAV-YPtapZ*L^B['d?N\%&uZ
+]">Vf]tV7r^qmn*`5T^8a2l?EbKJ,ScHab`dF-LneCE1&f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0
+!UB"MliHMArpTmV!:g$Ys7?9_rUp3arqH9arV?Ego_\F]pAO.QJcE+WJ,~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gVDp:f=qot:2l
+oLJgMrCQfWrCd,`qG$rar_NPjs4uh^qTS<LrEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OM
+rbqaSqJlISrH%^Tr,qm[oQU+UpNbS@qg&*aq02d\rcS'ZrcA$Yq/Q:Nn8J2CqJlLTs)\*[s)n?b
+rceBes*=Ti!df<BrdFfq!.Xuu!eGrTrdt9*Kn]M\#D\+kM2@+IMuAS9NK0%uNrkE*OoCODPQ-mH
+Q2d0MQi<BPRK&`SS,\uYSc,/[T)bP_U&UheU].(hV#[ClVuN[qWW&n%X/rD)Xfel,YQ_;;Za7$H
+rjG>+\@K/]]=bej^V@S#_SX4/`Poj<aN;TJbKS5Vcd:(edaQ^rf%8O+g"P07gtgiEi8ESRj5]4^
+jlY^gkiq?slg*p(mHs?@mfN"Knc&+ZoDeI]p&=[bp\O[`q>L0^qt^0`rT4$0s0M`U~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gU]bDlCXr'p<K
+r(-cXq+CTYr_3/_r_EGgs%r`kj-fb2n!Eu[s'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rG_UQrGqjXpN6=Uqf_UUq0;XZh0SsDr-8$]rHA0_qK2^XrGq^Rqf)%Cqf)COrc8$[r,hs]s*"Bc
+s*4Qhrd"WmI!kpAs*artrdY'$JqEuS!ec8]re:Z5LkpnEMMd>jMuo!!NrG(@OHG\)P5gaGPl?sJ
+QN*<NR/`TSRf/`US,f,YT)YD_T`(SaU&^tfV#R7kVZ*LnVuWgrWWoN*XKAV-YPta0Z*L^B['fnA
+8%6"=\[oDc]Y;.q^qmn)_o0O5`lQ6Cb0.uPc-FY^dF$CkeCE.%f@\d1g=tE=hV[8LiSrnXjQ5Lc
+k3(sml0@U#m-O-,mf)YVnF?&Jo)J=]o_nI^pAam`q#1$eqXj[\r:^*Nrdk*Us*t~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gTbq+K(,r_*/Y
+oLJgMrCQfWrCd,`qG$rar_NPjs&e/Wlr*dhs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rG_UQrGqjXpN6=Uqf_UUq0;XZh0SsDr-8$]rHA0_qK2^XrGq^Rqf)%Cqf)COrc8$[r,hs]s*"Bc
+s*4Qhrd"WmI!kpAs*artrdY'$JqEuS!ec8]re:Z5LkpnEMMd>jMuo!!NrG(@OHG\)P5gaGPl?sJ
+QN*<NR/`TSRf/`US,f,YT)YD_T`(SaU&^tfV#R7kVZ*LnVuWgrWWoN*XKAV-YPta0Z*L^B['fnA
+8%6"=\[oDc]Y;.q^qmn)_o0O5`lQ6Cb0.uPc-FY^dF$CkeCE.%f@\d1g=tE=hV[8LiSrnXjQ5Lc
+k3(sml0@U#m-O-,mf)YVnF?&Jo)J=]o_nI^pAam`q#1$eqXj[\r:^*Nrdk*Us*t~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fMB?^>-Eq]_b1j
+8,PpV8bl!W9E%W]:&[oe:]F8kguclSbjimT?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8/LD>S5L
+DuO_PEW'qUF80kSFo-@RGPHFWH/a/HH2Mp^GQ)daFo-:ZF8g4TEVj_DDu=SNEW:(YF8^4\FoQX`
+G63#7H2`-iHN8HmIK+`rJ,XuuJH1<$K*R'`Knb>;LPYqds,$f7rf$l:!07&>s,[5CrK75GPa)04
+s-E\Org<_Rs-inU!h>gPrLX%]!20:as.TLgrM0LkVPa?j!iW)tri-""XT#=&Y-7i/9<ke/Za@*I
+[^NZT\[f;`]Y(ql^V@S#_SX71`Q#s>aN;TJbg"GYcd:(ee'umtf%8O+g"P39h;-rFi8ESRj5]4^
+k2tjikiq?sli-5VmI'E2n*oi:nc&+ZoDeI]p&Fabp\Xabq>C*^qt^0`rT4$0s0;TS~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fK7,NW"h57eB4K
+8Gu-U9)VE^9_qK_:B"&h;#d?ORJ<0>Qi1:k@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ+MQ
+E;FSQEr:"RFSg4XG4TqQGkZLCHMVpbGkcL^G5ZR\FT$:[EqjYOE:7`CE;FSSErL.YFT6L`G5ZUd
+G^4T6HN/<lI/\QoIK4lsJH(0#K)UB-KS>,7L51P?re^Z4!/pi8s,@#=rf@)@!0R5C!gAk5rg!ML
+s-N_Ps-`nUrL3kYSXo_Ns.9:arLs7c!2KLg!i;ckrhfgrWN#ls!NW=$XT>T.rif&#ZEpmE['d?N
+\%&uZ]">Vf]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U6lj3"HmdKW6nF?&Jo)J=]o_nI_pAXg`q#:*eqXsa]r:^*Nrdk*Ss*t~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fHE`9@$319D_3N
+8,PpV8bl!W9E%W]:&[oe:]F8k=PHdD;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ+MQ
+E;FSQEr:"RFSg4XG4TqQGkZLCHMVpbGkcL^G5ZR\FT$:[EqjYOE:7`CE;FSSErL.YFT6L`G5ZUd
+G^4T6HN/<lI/\QoIK4lsJH(0#K)UB-KS>,7L51P?re^Z4!/pi8s,@#=rf@)@!0R5C!gAk5rg!ML
+s-N_Ps-`nUrL3kYSXo_Ns.9:arLs7c!2KLg!i;ckrhfgrWN#ls!NW=$XT>T.rif&#ZEpmE['d?N
+\%&uZ]">Vf]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U6lj3"HmdKW6nF?&Jo)J=]o_nI_pAXg`q#:*eqXsa]r:^*Nrdk*Ss*t~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fM?=^>-Er]_t=k
+8,PpU8bl!X9DqQ\:&[oe:]F8kgZ?]MbkB6Y?iOO5@JjU6A,^$:AcHBABDcHBC&VlEC]A5MD>J/L
+DuO_OEW'qVF8'eRFo$:PGPHFVH0KYMH2Mp^GPu^aFo$4ZF8^.TEVj_CDu=SOEW1"YF8U.[FoQXa
+GQ2mfH2W$oH[L3hI=?Wprdb$"!.t3&!JH1+LB!#/M#N54MMmDlMueourf@)@s,m;D!gAk5rg!ML
+s-N_Ps-`nUrgWqXs.0+[!hZ-YrLs7c!2KLgs.o^mrhodp!3,sts/Q.$riH4(YPta,Z*OA88$o\4
+[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aND]Lbg"GYcd:(fe'umtf%8O+g=k<:h;-rFi8ESRj5]4^
+k2tjjkiq?sli-5OmI'uBs6p$YrUL$]o^r+Trq?BdqtU0dr;--aq>BsbjSj`1YlB4~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fK41NVAD17e9.J
+8Gl'T9)_K^9_qK_:B"&h;#d?NRIlm?Qi1:k@/aU4@fBm:AGg$=B)ZH@B`;`FCAVfHD#S;JDZ4SR
+E;=MPErC(RFSg4WG4KkPGkQFIHMDd`GkcL]G5cX\FT-@[Eqs_PE:.ZBE;OYSErU4YFT6L`G5c^c
+GQ<$fH3\eEI!pElIXh?Is+(0%rdt6)L&Qi,LB*/0M#rQmMuJY9NK4"!s,d8CrfR>HPa)04s-E\O
+rg<_Rs-iqVs.'+[rLO(_TV27Ws.TLgrM9Ii!2fans/5psri6"!!3H1%!NrX*YQ;#7rj,,%[C3NQ
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?EbKJ,ScHab_dF-LneCE.%f@\g2gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liHMArpTmV!:g$Y!qZ'VrUp0`s7cEcrqZKgpA=[`pAO(OJcDtSJ,~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fHE_9@-929Dq?O
+8,PpU8bl!X9DqQ\:&[oe:]F8k=PHdD;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCAVfHD#S;JDZ4SR
+E;=MPErC(RFSg4WG4KkPGkQFIHMDd`GkcL]G5cX\FT-@[Eqs_PE:.ZBE;OYSErU4YFT6L`G5c^c
+GQ<$fH3\eEI!pElIXh?Is+(0%rdt6)L&Qi,LB*/0M#rQmMuJY9NK4"!s,d8CrfR>HPa)04s-E\O
+rg<_Rs-iqVs.'+[rLO(_TV27Ws.TLgrM9Ii!2fans/5psri6"!!3H1%!NrX*YQ;#7rj,,%[C3NQ
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?EbKJ,ScHab_dF-LneCE.%f@\g2gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liHMArpTmV!:g$Y!qZ'VrUp0`s7cEcrqZKgpA=[`pAO(OJcDtSJ,~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUVDoY0+opUpJp
+njiUKr(6]Vr_*2`qb@#ar_NPjs4ZSZm*,@MrEoS4raG_6raYq<r+5n?rb).Brb;@HqeQ1Irb_OM
+rbqaSqJlFRrH%[SqfVdZnTXbQoQfqPpNcX\pil[[rcS'ZrH%sYpi64Nm;MoAqf2UUs)\-\s)n?b
+rHA<fH$TC8s*F`nrd>$#It*!!JUrFPK*R'`Knb>;LPYqd!K)g7N;nk;NrG(@OHG\)P5g^GPl?sJ
+QN*<NR/`QSRf/`USH#/ZT)YG_T`(SaU&^teV#R7kVZ!CoW2ZcqWX#T+XKAV-Y-7i/!O8s0ZU;+-
+[^NZT\[f;_]=bei^;%Fu_8=(-`Poj;aN2KGbKJ,ScHjkbdF-LneCE1&f\,!4gYCW@hV[8LiSrnX
+jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs7?9_rUp3as7cEcrV?HhpA=[`pAO%NJcDqRJ,~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUU]c].[Xr^QHK
+r(-`Wq+CWZrCm)_rD*>fs%r`kigK8&qj77gs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD=GrbVRNqelCO
+rG_UQr,VaWp2p1Sqf_LRpiuFVn9XhSqfqm[rHA0_qK2[Wrc7dRr,D%Ar,DOQrc8$[rH/'^s*"?b
+!dK!9rd+Tk!.=co#C_/PJ:N3%K)UB-KS>,7L51P?reUZ5MuJ\8N<#"<NrkE*OoCODP5pjHQ2d0M
+Qi<BPR/i]SS,]#YSc55\TDtS_U&UheU]%"gV#[CkVZNfrWW&n&X/rD)Xfeh1ricF.ZMq0t['d?N
+\%&uZ]"5Md]Y2%o^VI\&_SjF4`lH0Aai_fMbg"GZd*^7he'umtf@S[.g=k<:h;-rFi8ESRj5]4^
+k2tjjrojIKli-5OmI'uB!q>aMrpp*\s7H9_s7ZKeqtU-crqc?cq>Bsbj8OW0YQ'+~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUTcp.Nb)r^QHK
+r(-`Wq+CWZrCm)_rD*>fs%r_tgJdT>rEoS4raG_6raYq<r+5n?rb).Brb;@HqeQ1Irb_OMrbqaS
+qJlFRrH%[SqfVdZnTXbQoQfqPpNcX\pil[[rcS'ZrH%sYpi64Nm;MoAqf2UUs)\-\s)n?brHA<f
+H$TC8s*F`nrd>$#It*!!JUrFPK*R'`Knb>;LPYqd!K)g7N;nk;NrG(@OHG\)P5g^GPl?sJQN*<N
+R/`QSRf/`USH#/ZT)YG_T`(SaU&^teV#R7kVZ!CoW2ZcqWX#T+XKAV-Y-7i/!O8s0ZU;+-[^NZT
+\[f;_]=bei^;%Fu_8=(-`Poj;aN2KGbKJ,ScHjkbdF-LneCE1&f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNMp0!UB"MliHMArpKpXnaZVLs7?9_rUp3as7cEcrV?HhpA=[`pAO%NJcDqRJ,~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_2,+o=j%opUpMq
+njiUKr(6]VrCd,`qG$rar_NMi!SQ,dc0*=L?iOO5@JjU6A,^$:Ac?<ABDZBBC&VlEC]8/LD>S5M
+DuFYNEW'qUF7s_QFo$:NGP?@>H2;d\GPu^`Fo$4ZF8^.TEVseBDuFYOEW:(YF8^4\FoQXaGQ2mf
+H2`-iHN8HmIK+`rJ,Xs!JV*lR#D@ebL5(J=M#N53MMqIm!f`5#rf7)AOoCODP5pjGPld8<Qi<BP
+RK&`TS,]#YSc55\TDtS_U&UheU]%"gV>mFlVuN[qWW&ptWrT7#XoGO(YPta,Z*OA8::.F;[^WcV
+\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plK[^%m-X3.rpKpXnaZVLs766_rUp0`s7cHdrV?Egp\Xgbp\j+NJcDkPJ,~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_/u]c].[Xs$lQL
+r(-`Wq+CTYr_3/_r_EGgr_WWiiL/turEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrbqaS
+q/Q@Rr,_RRqfVaYn9=VOhg,'Cpil[[rH7sYrcA$Yq/Q=Olu2iAqJlOUrcA$[s)n?brceBe!."Qi
+s*F`nrdFfq!.Xuu!J,k%K*R'`Knb>;LPYqd!K)g7Muo!!NrG(?OHKO*s-!GIrKRGMQ^@]=s-`nU
+rgWqXs.0.\s.B=arLs7c!2KLgs/#amrhodp!3,sts/Q.$riQ4'!3cC+!O8s0ZVIm8[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(sm
+l0@R"m-O-,mf)YVnF?&Jo)J:]o_nI^pAambq#1$eqY0m`r:g0Lrdk*Os*t~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_-0ip.Nb)s$lQL
+r(-`Wq+CTYr_3/_r_EGgr_WVrg/IN>rEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrbqaS
+q/Q@Rr,_RRqfVaYn9=VOhg,'Cpil[[rH7sYrcA$Yq/Q=Olu2iAqJlOUrcA$[s)n?brceBe!."Qi
+s*F`nrdFfq!.Xuu!J,k%K*R'`Knb>;LPYqd!K)g7Muo!!NrG(?OHKO*s-!GIrKRGMQ^@]=s-`nU
+rgWqXs.0.\s.B=arLs7c!2KLgs/#amrhodp!3,sts/Q.$riQ4'!3cC+!O8s0ZVIm8[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(sm
+l0@R"m-O-,mf)YVnF?&Jo)J:]o_nI^pAambq#1$eqY0m`r:g0Lrdk*Os*t~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,qN=^>-Et]DtFk
+8,GjU8bbpW9DqQ\:&[oe:]4)ifAt3>bl1uK@/aU4@fBm:AGg$<B)cN@B`DfGCAVfGD#S;KDZ+MQ
+E;=MOEr:"PFS^.UG49_MGiX/HGkZF\G5ZR[FT-@[Eqs_QE9hH?E;OYTErL.YFT6I`G5ZUdG^4T6
+H3\eEI!pElIXh?I!J,k%K+*EeKnb>;LkpnEMMd>kMueourf7,BOcfX+!gAk5rfmPNQ^@]=s-WkU
+rL3kYSXo_Ns.B=arh9@ds.fOgs.o^mrMT[o!3,ps!irE(riHF.YHP17Z*CV6ZVRs9[^NZS\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\dF$CkeC<%"f@S[.g=k<;h;7&Ii8N\Uj5f=`k2tjj
+l07L!lg4!*mdC)C!V#XXncJFTo_nI_pAXgaq#:*fqY0m`r:g0Lrdk*Ns*t~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,oC1NV\S7Mam5,
+qagZWpe(NYrCm&^r_EGgrD3KhiL/tura5Y4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrGV[S
+q/Q=Qr,_RRqK;UWn9=VOjE^THpNQRZrH7sYrcA$Yq/Q=OlYl]?qf2XVrcA$[s)e<brHA<fH$TC8
+#CCiGI=6QnJ,Xs!JV*lR%"s=gL5(J>Ll$tGMMqIm!KE-=NrkE*OoCLFPE_=2Pld8<Qi<BPR/i]S
+Rf]+NSc,/[TDtS`U&UkeU]%"gV#[CkVuN[qWVrguX/rE%XTu#4YHY79Z*OA8:UIO<[^W`U\[f;`
+]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ,ScHab`dF-LneCE.%f@\d1g=tH>hV[8LiSrnXjQ5Lck3(sm
+l0@U#m-O--mf)YUnF?JJ!qZ'VrUp3arqH?crqZNhp\Xgbp\j+NJcDhOJ,~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,lT^9@?E47e'"G
+8Gu-T9)_K^9_qK_:B"&f:]OSN;t3cb?iFI4@JjU6A,^$:Ac?<ABDZBBC&VlEC]8/LD>S5LDuO_O
+EVskTF7s_PFnp4MGP?@CH2;d[GPu^`Fo$4ZF8^.TEVseADu=SOEW:(YF8^4\FT?U`G63#7H2`*p
+H[L3hI=?WprdY$#K)UB2KS>,7L51S@M2@+IMuJY9NK4"!!g&P,rfR>HPa)04!g]1>rg<_R!1NkU
+!h>gPrLX%]s.K@bs.]OgrM9Ii!2f^ms/5psrMfq"XK;E'#Hk86YctC;ZMq1+['d?N\$rlX\[oDc
+]Y2%o^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjncdaQ^qe^i@(f\,!4gYL]Bhr*GOioB([jlPXekNM0p
+lKdd&m-X6/rpKmWnbr"[oCV\Rp&Fabp\agcq>L0aqtg6brSmg-s/c6N~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!9!F^h7`WsnONII
+r(6]VrCd,`qG$rarD3Ag!7g,Skfj!4s'Yh7r*oY8rabq<rau1Cqe6"DrbD=GrbVRNqJQ:NrG_RP
+rGqdVolU%Qq0)4Nom#eJq0;UWrHA-^qK2^XrGq^Rr,D@J!,hOLrG_XRrc8$[rH/'^s*"Bcs*+Nh
+rd+Tk!.=co(4La_J:N3&JqJ]/KS>/8LPL\BM2I1Krepl;NrG(EOHGZgP*;)org!ML!13\Ps-WkU
+rL<hW!1j([s.9:arLs7cs.fOgs.o^mrMT[os/H!ts/Q.$riQ4'!3cC+8$TA*Za7$G[C3NQ\%&uZ
+]">Vf]tM.p^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(g"P07gtgfChr*GOioB([jo4BG
+kNM0plKeH9!U]=Sn,MkWnc&+ZoDeI]p&Facp\agcq>L0bqtg6crT!m.s/>sJ~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!2Ro"qMYE4nONII
+r(6]VrCd,`qG$rarD3Ag!2JJ?l^7WXs'Yh7r*oY8rabq<rau1Cqe6"DrbD=GrbVRNqJQ:NrG_RP
+rGqdVolU%Qq0)4Nom#eJq0;UWrHA-^qK2^XrGq^Rr,D@J!,hOLrG_XRrc8$[rH/'^s*"Bcs*+Nh
+rd+Tk!.=co(4La_J:N3&JqJ]/KS>/8LPL\BM2I1Krepl;NrG(EOHGZgP*;)org!ML!13\Ps-WkU
+rL<hW!1j([s.9:arLs7cs.fOgs.o^mrMT[os/H!ts/Q.$riQ4'!3cC+8$TA*Za7$G[C3NQ\%&uZ
+]">Vf]tM.p^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(g"P07gtgfChr*GOioB([jo4BG
+kNM0plKeH9!U]=Sn,MkWnc&+ZoDeI]p&Facp\agcq>L0bqtg6crT!m.s/>sJ~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!*/\bdRs%"qagWV
+q+CTYr_3/_r_EDfrD3Jqfi.H>rEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_LLrbqaSq/Q@R
+qfDFPqK;UWms"GLlZr;Np36IYrH7sYrcA$Yq/Q=Op29qKpM^"Lqf2UUs)\-\s)n?brceBe!."Qi
+s*F`nrd>Q2It*!!JV&K+K7no3L5(J=Ll$tGMMqIm!KE-=NsCc/OcklkPEc'3s-<YOrg<_R!1NkU
+s-s([rLX%]!20:as.]OgrM9Ii!2f^ms/>ssri6"!!3H1%s/l@*rientZEggC['[6L[^W`U\[f;`
+]Y(qk^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f>$josr3
+l07L!rp0[Qmf)\Tn,W"Xo)J=]o_nI_pAambq#:*fqY9sar:p6Nrdk*Js*t~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!9!F^h7`WsnONII
+rCQcVrCd,`qG$rar_NGg!7^&Rkfj!4s'Yh7r*oY8rabq<rau1Cqe5tCs(_FHrbVRNqJQ:NrG_OO
+rGqdVoQ9qPpic(LnTakToQ^(RrHA-^qK2[Wrc7gSqf(k>rG_XRrc8$[rH/'^!-\<b!dK!9rd"Tl
+I/\QoIMmWcJ:W9'K7ei1Knb>;LPUeDMMd=NN/`gWrf7)AOoCLKPE_;sQ'R`&rg<_Rs-iqV!h>gP
+rLO(_TV27Ws.]OgrhTRjs/,ams/>ssri6"!!3H.$!j8`1ricF.ZMq0<['d<M[^W`U\[f;`rk(D-
+^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjkiq?s
+li-5OmI'uB!q>aMrpp*\s7H<`s7ZHdr:p9erqcEequ$6fiVnE.W;hA~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!2Ro"q2Fi6qagZW
+pe(KXr_3/_r_EGgr(mBfi0inurEoS4raG_6raYq<r+5k>s(D4Brb;CIqeQ1Irb_LLrbqaSpi67Q
+qfDCOqK;RVmW\2Gq0DUWp36IYrH7sYrH%sYq/Q:NlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4n
+IK+a6It3'#JV&N,KS5&6L51P?M2@+IMi<USNK4"!!K`HCOp@28Pa.N"QC%T<s-`nUrgNtZSXo_N
+!hZ-YrLs7cs.fRhs/#amrMT[os/H!ts/Q.$rN-.(YHRr0!O8s0ZO=.J[C3NQ\%&uZ]"@sS4h\SE
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6
+liHMArpKpXnaZVLs7?9_rq6<brqH?crqZQiq"ssdq#01NJcD\KJ,~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!*/Yadn9.#qagZW
+pe(KXr_3/_r_EGgr(mApfi.H>rEoS4raG_6raYq<r+5k>s(D4Brb;CIqeQ1Irb_LLrbqaSpi67Q
+qfDCOqK;RVmW\2Gq0DUWp36IYrH7sYrH%sYq/Q:NlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4n
+IK+a6It3'#JV&N,KS5&6L51P?M2@+IMi<USNK4"!!K`HCOp@28Pa.N"QC%T<s-`nUrgNtZSXo_N
+!hZ-YrLs7cs.fRhs/#amrMT[os/H!ts/Q.$rN-.(YHRr0!O8s0ZO=.J[C3NQ\%&uZ]"@sS4h\SE
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6
+liHMArpKpXnaZVLs7?9_rq6<brqH?crqZQiq"ssdq#01NJcD\KJ,~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+'qgh7`ZtnjiRJ
+r(6]VrCd)_qG$rar_NGg!7TuQkfj!4s'Yh7r*oY8rabq<rau.Br+Q(DrbD@HrbVOMqel@NrG_RP
+qf;UUo5seNpic%Kict-?rHA-^q/lUWrGq^Rqf(n?rG_UQs)S-\rH/'^s*"Bcs*+Nhrd"WmI!kpA
+!IfOtJ,t4Qrdu,BKnb>;LPUeDMMd=NN/`jXO,oBbOcklkPEc'3!g]1>rg3bTR[X5F!h>gPrgs.^
+s.K=a!huHbrM9Iis/,ams/5psrMomus/c4%!j8`1rilF-!4)U1'XY9U[^NZT\@K/]]=Y_g]tV7r
+^qp#e0Z1iJ`Q#s>aN;TJbKS5Vcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0#3tO@
+m-X3.rpKpXnaZVL!qZ'VrUp3as7cHdrqZQiq"ssdq>K=PJcDSHJ,~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+&YgqMau8qagWV
+q+CTYrCm&^r_EGgr(mBehjNhurEoS4raG_6raYq<r+5k>rb).Brb;@Hr+l:JrGDFLrGVXRq/Q:P
+r,_IOq/uIUm<@Q7olp@XrH7pXrcA$Yq/Q:Nlu2iAqJlOUs)\-\s)n?brceBe!."Qi!df<Brd=fr
+J,Xs!JV*lR)MEg!L51P?M2@+IMi<USNfK0]OHGZgP*;)orfmPNQ^@]=!h#LGrgNtZSXobOs.B=a
+rLj:eUSId`s/#amrMT[o!3,pss/Z1$riH7)YHRr0s02R0rj*<G[C*HO\%&rY\[oDb]Y(ql^V@S#
+rk^A,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojXPlg4!*
+mI'uB!q>aMrpg-^o^r+Ts7ZKer:p9erqcEequ$9gir4N/V>l&~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+($Ldn91$qagWV
+q+CTYrCm&^r_EGgr(mApfMhB>rEoS4raG_6raYq<r+5k>rb).Brb;@Hr+l:JrGDFLrGVXRq/Q:P
+r,_IOq/uIUm<@Q7olp@XrH7pXrcA$Yq/Q:Nlu2iAqJlOUs)\-\s)n?brceBe!."Qi!df<Brd=fr
+J,Xs!JV*lR)MEg!L51P?M2@+IMi<USNfK0]OHGZgP*;)orfmPNQ^@]=!h#LGrgNtZSXobOs.B=a
+rLj:eUSId`s/#amrMT[o!3,pss/Z1$riH7)YHRr0s02R0rj*<G[C*HO\%&rY\[oDb]Y(ql^V@S#
+rk^A,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojXPlg4!*
+mI'uB!q>aMrpg-^o^r+Ts7ZKer:p9erqcEequ$9gir4N/V>l&~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC?@kh7`]unjiRJ
+r(6ZUrCd,`qG$rarD3;eim$`3rEoP3s'be6raYt=qdoe>rb).Brb;@HqeQ1Irb_LLrbqaSpi61O
+r,_FNpiZ@TlZ_Z>not%Ur,qjXrH%pXq/Q=OlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4nI0"eH
+rdY$#K)UB'KSBD[)Ma-*M2I1KN/WaVNfT6_OcbfiPE_;sQ'R`&rg<_R!1NnVs-s([rLO(_TV2:X
+s.]OgrM9Iis/,am!iW)trMomus/c4%s/l@*rNH@.ZEjJ9!OT96[QCt.\@K/]]=Y_g]tV7r^qde'
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\g2gYCW@hV[8LiSsjs&*2j7k3(sml0@R"m-O-,
+mf)YUnF?JJ!qZ'VrUp3as7cHdrqZQiq>:'eq>K@QJcDMFJ,~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC>(kqi()9qagWV
+pe(KXr_3/_r_EDfqb[<[iL0&"rEoP3s'be6raYt=qdoe>rb).Brb;@HqeQ1Irb_LLrbqaSpi61O
+r,_FNpiZ@TlZ_Z>not%Ur,qjXrH%pXq/Q=OlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4nI0"eH
+rdY$#K)UB'KSBD[)Ma-*M2I1KN/WaVNfT6_OcbfiPE_;sQ'R`&rg<_R!1NnVs-s([rLO(_TV2:X
+s.]OgrM9Iis/,am!iW)trMomus/c4%s/l@*rNH@.ZEjJ9!OT96[QCt.\@K/]]=Y_g]tV7r^qde'
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\g2gYCW@hV[8LiSsjs&*2j7k3(sml0@R"m-O-,
+mf)YUnF?JJ!qZ'VrUp3as7cHdrqZQiq>:'eq>K@QJcDMFJ,~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC?EOeOoC&qagWV
+pe(KXr_3/_r_EDfqbYpDo2>Nora>b7qdTP7s()"<s(;7Cr+Q(DrbD=GrbVRNqJQ:NrG_OOqf;UU
+noXYLpibtIlZhuErHA*]qK2[WrGq^Rr,Ct?rG_XRrc8$[rH/'^!-\<b!dK!9rd"TlI/\NpIXh?I
+!J,k%K)pXZre;>HLl$tGMMmFPNK0$[O-#KdP*2#nPa.N"QC%T<s-WkUrgWqX!1j([!hZ-Yrh9@d
+s.fOgs/#amrMK^qWN#irs/Z1$riQ4'!3c@*!jT&:rj)X4[JmTr\%&rY\[oDb]Y(ql^V@S"_8=(,
+`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+g=k<:h;-rFi8ESRro4OMjlY^gkiq?slKdg'mHs?@
+mfDqJrUL$]o^r+Ts7ZKer:p9erqcHfqu$9gj8OW0U]5i~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYdE^A#>?]^*9.]^nYi
+8Gl'S9)_K^9_qK_:B"&c:u]aabl(oJ@/aU4@fBm:AGg$<B)cN@B`;`GCAVfGD#S;JDZ+MPE;4GM
+Er0qKFSL"QG3O5BGjoqTG5ZRZFT-@[EqjYPE9qN@E;OYTErL.ZFT6L`G5c^cGQ<$gH4YFNI!pEl
+IXcluJUrE*K7nsXL(B&qM2@+IMi<USNfK0]OHKO*!L&cIPm<VAQ^F/.R@=,Es-s([rgs.^s.K@b
+s.]OgrhTRjs/,ams/>ssrMomus/c4%s/uC*rilF-!4)U1s0Md6rjE3D\@B)[]">Se]Y2&Y^Bq]l
+_SX4/`Poj;rl?A,b0.uPc-FV\d*^:jeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^roOdTkiq?slg*p(
+mI'E2n*oi:rpp*\s7H<`s7ZKer:p9erqcHfqu$9gj8OW0UAo`~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYd"NVe\+8,>dS8bbpW
+9DqQ\:&[oe:\moaR-'h'R/LCk@/aU4@fBm:AGg$<B)cN@B`;`GCAVfGD#S;JDZ+MPE;4GMEr0qK
+FSL"QG3O5BGjoqTG5ZRZFT-@[EqjYPE9qN@E;OYTErL.ZFT6L`G5c^cGQ<$gH4YFNI!pElIXclu
+JUrE*K7nsXL(B&qM2@+IMi<USNfK0]OHKO*!L&cIPm<VAQ^F/.R@=,Es-s([rgs.^s.K@bs.]Og
+rhTRjs/,ams/>ssrMomus/c4%s/uC*rilF-!4)U1s0Md6rjE3D\@B)[]">Se]Y2&Y^Bq]l_SX4/
+`Poj;rl?A,b0.uPc-FV\d*^:jeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^roOdTkiq?slg*p(mI'E2
+n*oi:rpp*\s7H<`s7ZKer:p9erqcHfqu$9gj8OW0UAo`~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYdH9@ZZ+8,>dS8bbpW
+9DqQ\:&[oe:\mo>;tNud?iFI4@JjU6A,^$:Ac?<ABDZBAC&_rFC]8/LD>J/KDuFYMEVjeRF7OGJ
+Fn^(DGOp(KGPlX_Fnp.YF8^.SEVseBDu=SOEW:(YF8g:]FoQXaGQ2mfH2`+$H[L3hI=?WpJ:N3%
+JqJ]/L&Qf;LPUeDMMd=NN/`jXO,oBbrfR;GPl?pQQC!r*R$jA2rgWqX!1j+\s.B=arh9@ds.fRh
+s/#amrMT[os/Gsss/Z1$riQ4's0)F+s02R0rj2X3!4Dg7$b*XU\[f;`]=bei^AbkR^qmn)_o0O5
+`lJ)",g"3PbKS5VcHjkbdaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ6C'&Ei9Al0@U#m-O--mdKW6
+nF?MKs7?9_rq6<bs7cHdrqZQiq>:'eq>K@QJcDJEJ,~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8FaFi^%o>,^&5P8
+8,>dS8bbpV9DqQ\:&[oe:]!rg;;odbbl(oJ@/aU4@fBm:AGg$<B)cN@B`;`FCA_lGD#S;JDZ+MP
+E;4GMEr'kHFSBqPG0tO2G5ZRZFT$:ZEqs_PE9qNAE;OYSErU4ZFT6I`G5ZUiG^4R\H@(!drd=fr
+J,Xs*JV&N,KS5&6L51TaM$8cpN/WaVrf7)AOoCLEPEc'3!LB)OQj9%JR[]e:S=TYNs.B=arh9@d
+s.fRhs/#amrMT[os/Gsss/Q.$rN6+&s0)F+s0;U0rj)[5[C-"B!OoT<\H]XW]=bei^Abl/^qmn)
+_o0L4`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Q
+mf)YVnF?&Jo)J:]o_nI_pAambq#C0hqYC$dr;-BOrdk*Bs*t~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8B["jN:]X:8Gl'S
+9)VE]9_qK_:B"&d:]OAcR-L+,R/LCk@/aU4@fBm:AGg$<B)cN@B`;`FCA_lGD#S;JDZ+MPE;4GM
+Er'kHFSBqPG0tO2G5ZRZFT$:ZEqs_PE9qNAE;OYSErU4ZFT6I`G5ZUiG^4R\H@(!drd=frJ,Xs*
+JV&N,KS5&6L51TaM$8cpN/WaVrf7)AOoCLEPEc'3!LB)OQj9%JR[]e:S=TYNs.B=arh9@ds.fRh
+s/#amrMT[os/Gsss/Q.$rN6+&s0)F+s0;U0rj)[5[C-"B!OoT<\H]XW]=bei^Abl/^qmn)_o0L4
+`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)YV
+nF?&Jo)J:]o_nI_pAambq#C0hqYC$dr;-BOrdk*Bs*t~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8F]@(9(YXM8Gl'S
+9)VE]9_qK_:B"&d:]OAE;tNud?iFI4@JjU6A,^$:Ac?<ABDZBAC&VlFC]/)KD>J/KDuFYMEVjeQ
+F7=;GFn^(,GPcR^Fnp.XF8^.TEVj_ADuFYPEW1"YF8^4\FT?U`G6`A<H$Xd`H[Pg@!IfOtJ-pjZ
+K7ei1Knb>;M#N57MMmFPNK4"!!K`HCOo^c2rfmMMQi<?WR@9S6S"-">rgs.^s.K@bs.]OgrhTRj
+s/,ams/>ssrMomu!3H.$s/uC*rilF-s0DX1!joACrjDj:\Gj#C]">Se]Y2&Y^H96I_SX4/`5T^8
+a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkNM0plKeH9!U]=SmfN"K
+nc&+Zo)SF]p&Facp\agdq>U6dqu$BgrSmg-s.KCB~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3Nn\+b2lb35/p.+pL
+r(6WTrCd,`qG$rarD3;er___#lcf96ra>_6r*oY8rabq<rau.Br+Q(DrbD=GrbVRNqJQ7Mr,DCM
+qf;OSmr\;HpNG)2qf_p\piQLVrGq[Qr,D"@r,DOQs)S*[rcJ0_s*"Bcs*+Nhrd"s!I!g?jIXcit
+J:W=OK*?p^L5(J>reUf9Mi<USNrG(NOHG]hPEV5rQ'R`&R$a;0Rf8cXS=Q5MScYOWT`1YbU&^te
+V#R:kVZ!CoW2ZcpWrK."XSo:$Y5b^)YlD!.ZMq31ZiIN5[f<f:\Gj#>]"@sS!PQ5H^B)-drk^G.
+`5T^8a2l?Db0.uPc-=PZcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMA
+rpKpXnaZVL!qZ'VrUp3as7cKerqZQiqYU0fqu,RSJcD>AJ,~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3NduF9ap.+pLr(6WT
+rCd,`qG$rarD3;er_`6Rn!WU2r*TG2raG_6raYq<r+5k>rb).Brb;@HqeQ1Irb_LLrGVUQpMp(N
+qK)+IpN?4ReT^n6rH7mWrcA$Ypi64Nlu2f@qf2XVrcA'\s)n?brceBe!."Qi$[[8KI=6QoIt3'#
+K)UB+KS>/8LPYqd"cA4sN/`ksNt@D8P*2#mPa.N"QC!u+R@0NCRf]+NSc52^T:hkVU&UheU]%"g
+V>mFkVZNfrWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@B4[JmW7[fEr;\H0:Rrk&9F^AbkJ^qp#e1;h&L
+`Q#s>aN;TJbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+Ts7ZKerV6BfrqcKgqu$?ij8OW0T)X<~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3Nc:[e#q+1ETpIbBW
+r_3/_r_EDfqb[8hfi.QAr*TG2raG_6raYq<r+5k>rb).Brb;@HqeQ1Irb_LLrGVUQpMp(NqK)+I
+pN?4ReT^n6rH7mWrcA$Ypi64Nlu2f@qf2XVrcA'\s)n?brceBe!."Qi$[[8KI=6QoIt3'#K)UB+
+KS>/8LPYqd"cA4sN/`ksNt@D8P*2#mPa.N"QC!u+R@0NCRf]+NSc52^T:hkVU&UheU]%"gV>mFk
+VZNfrWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@B4[JmW7[fEr;\H0:Rrk&9F^AbkJ^qp#e1;h&L`Q#s>
+aN;TJbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojIKli-5OmI'uB!q>aM
+rpg-^o^r+Ts7ZKerV6BfrqcKgqu$?ij8OW0T)X<~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UCs1S9Alb380p.+pL
+qapQTrCd)_qG$rarD3;er_`Ymqc!Jns&JR5m*,B7ra>_6qdTS8rabq<rau.Br+Q(DrbD=GrbVOM
+qJQ7MrG_IMqJuCQmWA2Gp3,58qKDdZq/lRVrGq[Qr,D"@rG_XRrc8$[rH/'^!-\<b!I/nhHN/=K
+I!pElIXcluJV&K+K7nr5L51P?M2@+JN/WaVNfT6_OcklkPE_>tQC!r*R$jD3S"#q<Sc52^T:hkV
+U&UheU]%"gV#[CkVuN^qWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@E4[JmT9\%&sI\H0:Rrk&HK^:q@s
+^qp#e1W./M`Q#s=aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRioB([jlY^gkl0fN
+lKdg'mHs?@mfN"Knc&(\oCV\Sp&Facp\agcq>U6equ$BgrT4$0s.'+>~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UCif3nqp.+pLqapQT
+rCd)_qG$rarD3;er_`Ymqc!Jns&Jr`o9o'7r*TG2raG\5s'u%=r+5k>rb).Brb;@HqeQ1IrGDCK
+rGVXRp2TqLq/btGpN?1QgirU<r,qgWrH%pXpi64Nlu2iAqf2UUs)\-\s)e<brHA9eH2`-iHSg+u
+I=?WpJ:N3&JqJ]/Knb>;LPUeDMMmFPNK0$[O-#KeP*;)oQ'IZ%Q^F/.R[T_8S=H/LScYOWT`1Yb
+U&^teV#R7kVZ!FmW;ijqWrK."XSo:$Y5b^)YlD!.ZMq31[/[Q5[K<qJ\Gj#>]"@sS#/.ab^V@S#
+rk^J/`5T^8a2c9Bai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrkWj5f=ak3(t-km$G=
+m-O-,mf)YVnF?&JncJFTo`"O`pAambq#:*gqYL*er;-BRrdk*>s*t~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UChFdK3q+1BSpe(KX
+rCm&^r_EDfqb[8hr_iVlr`&nts&8kolr3UUr*TG2raG\5s'u%=r+5k>rb).Brb;@HqeQ1IrGDCK
+rGVXRp2TqLq/btGpN?1QgirU<r,qgWrH%pXpi64Nlu2iAqf2UUs)\-\s)e<brHA9eH2`-iHSg+u
+I=?WpJ:N3&JqJ]/Knb>;LPUeDMMmFPNK0$[O-#KeP*;)oQ'IZ%Q^F/.R[T_8S=H/LScYOWT`1Yb
+U&^teV#R7kVZ!FmW;ijqWrK."XSo:$Y5b^)YlD!.ZMq31[/[Q5[K<qJ\Gj#>]"@sS#/.ab^V@S#
+rk^J/`5T^8a2c9Bai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrkWj5f=ak3(t-km$G=
+m-O-,mf)YVnF?&JncJFTo`"O`pAambq#:*gqYL*er;-BRrdk*>s*t~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-K]`>_E^%b+m
+8Gc!Q9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=T-M2bkkcI@/aU3@fBm;AG]s<B)ZH?B`DfG
+CAVfFD#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^c
+GQ<$gH3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[
+T)YD_T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA
+]E,^[rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^
+jlY^gkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-KN<"q:NVH$=
+8Gc!Q9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=SeHSR/:7j@/aU3@fBm;AG]s<B)ZH?B`DfG
+CAVfFD#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^c
+GQ<$gH3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[
+T)YD_T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA
+]E,^[rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^
+jlY^gkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-G9)(pO8Gc!Q
+9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=S#Jb;Ysi$@/aU3@fBm;AG]s<B)ZH?B`DfGCAVfF
+D#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^cGQ<$g
+H3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[T)YD_
+T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA]E,^[
+rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^jlY^g
+kiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?rkABFqFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`f'>qd9>1raG_6raYq<r+5k>rb).B
+rb;@HqeQ1IrGDCKrGVUQol9eJpN,YBpN?1Ql$)oGr,qdVr,_gWpi61Mmr/,Cqf2UUs)\-\s)e<b
+rHA9eH2`-iHO5(JI=?WpJ:N3&rdtN1Knb>;Ll$tGMuJYFNK0'\OHG]hPE_;sQ'Rd9Qj/tIS"#q<
+Sc52cT:hjNTq\9VrM0LkVPa<i!iW)trMomus/c1$s/uC*rNQ=,s0DU0!joACrjMj9s1&'=!kQ"U
+rk&9F^AbkJ^qp#e!Q2kT`<F9%aN2KGrl[4Dc-FV\d*^7he'umtf%8O+g"P07gYCW@hV[8LiSrnX
+jQ5OdkND'nl0@U#m-O--mdKW6nF?MKs766_rUp3as7cKerqZQiqYU3gqu,^WJcD,;J,~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?rf6u;qFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`f&_qd9>1raG_6raYq<r+5k>rb).B
+rb;@HqeQ1IrGDCKrGVUQol9eJpN,YBpN?1Ql$)oGr,qdVr,_gWpi61Mmr/,Cqf2UUs)\-\s)e<b
+rHA9eH2`-iHO5(JI=?WpJ:N3&rdtN1Knb>;Ll$tGMuJYFNK0'\OHG]hPE_;sQ'Rd9Qj/tIS"#q<
+Sc52cT:hjNTq\9VrM0LkVPa<i!iW)trMomus/c1$s/uC*rNQ=,s0DU0!joACrjMj9s1&'=!kQ"U
+rk&9F^AbkJ^qp#e!Q2kT`<F9%aN2KGrl[4Dc-FV\d*^7he'umtf%8O+g"P07gYCW@hV[8LiSrnX
+jQ5OdkND'nl0@U#m-O--mdKW6nF?MKs766_rUp3as7cKerqZQiqYU3gqu,^WJcD,;J,~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?r_*5_qFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`fD$pJUlqra>_6r*oY8rabq<rau.B
+r+Q(DrbD=GrbVOMqJQ7Mr,D=Kq/Z4NlZDlDp3,\EpicRXpiQFTrGq[Qqf)"Br,DOQrc8$[rH/'^
+!-\<b!I/nhHN/<uI!pElIXcluJV*lR$&""eL51SAM2I5jN"1i-O,oBbP*2#nPa.N"Qi<?VR@9V7
+S=H/LSd1m\TV8'RU8.[_!i;ckrMK^qWN#irs/Z1$rN6+&s0)C*s0;U0rNcR4[C-"Bs0r$<rj`*A
+]=\'T!PQ5H^B)-drk\]R`;[^Z`lH0AaiaV+2U'FkcHjkbdF-LneCE.%f@\d1g=tB;h;-rFi8ESR
+j5]4^k2tjikiq?slg*p(mI'E2n*oi:rpp*\!;-6_s7ZKerV6BfrqcKgr;?HjkPg&4R/_[~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/doc/img/ecore_big.png b/doc/img/ecore_big.png
new file mode 100644 (file)
index 0000000..cd818f7
Binary files /dev/null and b/doc/img/ecore_big.png differ
diff --git a/doc/img/ecore_mini.png b/doc/img/ecore_mini.png
new file mode 100644 (file)
index 0000000..f4f99f0
Binary files /dev/null and b/doc/img/ecore_mini.png differ
diff --git a/doc/img/ecore_small.png b/doc/img/ecore_small.png
new file mode 100644 (file)
index 0000000..8bea367
Binary files /dev/null and b/doc/img/ecore_small.png differ
diff --git a/doc/img/hilite.png b/doc/img/hilite.png
new file mode 100644 (file)
index 0000000..88a4381
Binary files /dev/null and b/doc/img/hilite.png differ
diff --git a/doc/img/n.gif b/doc/img/n.gif
new file mode 100644 (file)
index 0000000..28608c4
Binary files /dev/null and b/doc/img/n.gif differ
diff --git a/doc/img/n.png b/doc/img/n.png
new file mode 100644 (file)
index 0000000..2bb256f
Binary files /dev/null and b/doc/img/n.png differ
diff --git a/doc/img/prog_flow.png b/doc/img/prog_flow.png
new file mode 100644 (file)
index 0000000..06c89c1
Binary files /dev/null and b/doc/img/prog_flow.png differ
diff --git a/doc/img/t.gif b/doc/img/t.gif
new file mode 100644 (file)
index 0000000..cff3068
Binary files /dev/null and b/doc/img/t.gif differ
diff --git a/doc/img/t.png b/doc/img/t.png
new file mode 100644 (file)
index 0000000..06b6079
Binary files /dev/null and b/doc/img/t.png differ
diff --git a/doc/img/tl.gif b/doc/img/tl.gif
new file mode 100644 (file)
index 0000000..4455dbc
Binary files /dev/null and b/doc/img/tl.gif differ
diff --git a/doc/img/tl.png b/doc/img/tl.png
new file mode 100644 (file)
index 0000000..95ae5b6
Binary files /dev/null and b/doc/img/tl.png differ
diff --git a/ecore-con.pc.in b/ecore-con.pc.in
new file mode 100644 (file)
index 0000000..c0ad576
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-con
+Description: E core library, Con module
+Requires: ecore @requirements_ecore_con@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_con
+Cflags: -I${includedir}
diff --git a/ecore-config.pc.in b/ecore-config.pc.in
new file mode 100644 (file)
index 0000000..2d11077
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-config
+Description: E core library, Config module
+Requires: ecore @requirements_ecore_config@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_config
+Cflags: -I${includedir}
diff --git a/ecore-dbus.pc.in b/ecore-dbus.pc.in
new file mode 100644 (file)
index 0000000..d6c5c29
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-dbus
+Description: E core library, DBus module
+Requires: ecore-con @requirements_ecore_dbus@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_dbus
+Cflags: -I${includedir}
diff --git a/ecore-desktop.pc.in b/ecore-desktop.pc.in
new file mode 100644 (file)
index 0000000..48b7bf9
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-desktop
+Description: E core library, Desktop module
+Requires: ecore @requirements_ecore_desktop@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_desktop
+Cflags: -I${includedir}
diff --git a/ecore-directfb.pc.in b/ecore-directfb.pc.in
new file mode 100644 (file)
index 0000000..4262972
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-directfb
+Description: E core library, DirectFB module
+Requires: ecore @requirements_ecore_directfb@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_directfb
+Cflags: -I${includedir}
diff --git a/ecore-evas.pc.in b/ecore-evas.pc.in
new file mode 100644 (file)
index 0000000..164b863
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-evas
+Description: E core library, Evas module
+Requires: ecore @requirements_ecore_evas@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_evas @ecore_evas_libs@
+Cflags: -I${includedir}
diff --git a/ecore-fb.pc.in b/ecore-fb.pc.in
new file mode 100644 (file)
index 0000000..6402ce4
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-fb
+Description: E core library, FB module
+Requires: ecore @requirements_ecore_fb@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_fb
+Cflags: -I${includedir}
diff --git a/ecore-file.pc.in b/ecore-file.pc.in
new file mode 100644 (file)
index 0000000..2dde219
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-file
+Description: E core library, File module
+Requires: ecore @requirements_ecore_file@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_file
+Cflags: -I${includedir}
diff --git a/ecore-imf-evas.pc.in b/ecore-imf-evas.pc.in
new file mode 100644 (file)
index 0000000..0ce11d5
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-imf-evas
+Description: E core library, IMF Evas module
+Requires: ecore-imf evas
+Version: @VERSION@
+Libs: -L${libdir} -lecore_imf_evas
+Cflags: -I${includedir}
diff --git a/ecore-imf.pc.in b/ecore-imf.pc.in
new file mode 100644 (file)
index 0000000..7a98b8c
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-imf
+Description: E core library, IMF module
+Requires: ecore
+Version: @VERSION@
+Libs: -L${libdir} -lecore_imf
+Cflags: -I${includedir}
diff --git a/ecore-ipc.pc.in b/ecore-ipc.pc.in
new file mode 100644 (file)
index 0000000..2dc4beb
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-ipc
+Description: E core library, IPC module
+Requires: ecore-con @requirements_ecore_ipc@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_ipc
+Cflags: -I${includedir}
diff --git a/ecore-job.pc.in b/ecore-job.pc.in
new file mode 100644 (file)
index 0000000..fc914a0
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-job
+Description: E core library, Job module
+Requires: ecore @requirements_ecore_job@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_job
+Cflags: -I${includedir}
diff --git a/ecore-sdl.pc.in b/ecore-sdl.pc.in
new file mode 100644 (file)
index 0000000..bba6f88
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-sdl
+Description: E core library, SDL module
+Requires: ecore @requirements_ecore_sdl@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_sdl
+Cflags: -I${includedir}
diff --git a/ecore-txt.pc.in b/ecore-txt.pc.in
new file mode 100644 (file)
index 0000000..1cedb76
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-txt
+Description: E core library, Text module
+Requires: ecore @requirements_ecore_txt@
+Version: @VERSION@
+Libs: -L${libdir} @ecore_txt_libs@
+Cflags: -I${includedir}
diff --git a/ecore-win32.pc.in b/ecore-win32.pc.in
new file mode 100644 (file)
index 0000000..9d403ff
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-win32
+Description: E core library, Win32 module
+Version: @VERSION@
+Libs: -L${libdir} -lecore_win32
+Libs.private: @ddraw_libs@ @direct3d_libs@
+Cflags: -I${includedir}
diff --git a/ecore-wince.pc.in b/ecore-wince.pc.in
new file mode 100644 (file)
index 0000000..a8275f8
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-wince
+Description: E core library, WinCE module
+Version: @VERSION@
+Libs: -L${libdir} -lecore_wince
+Libs.private: @WIN32_LIBS@
+Cflags: -I${includedir}
diff --git a/ecore-x.pc.in b/ecore-x.pc.in
new file mode 100644 (file)
index 0000000..e134720
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore-x
+Description: E core library, X module
+Requires: @requirements_ecore_x@
+Version: @VERSION@
+Libs: -L${libdir} -lecore_x
+Libs.private: @x_libs@ @Xcursor_libs@ @XRENDER_LIBS@ @XPRINT_LIBS@ @XINERAMA_LIBS@ @XRANDR_LIBS@ @XFIXES_LIBS@ @XDAMAGE_LIBS@ @XSS_LIBS@ @ecore_txt_libs@
+Cflags: -I${includedir} @have_ecore_x_xcb_define@
diff --git a/ecore.c.in b/ecore.c.in
new file mode 100644 (file)
index 0000000..3780e28
--- /dev/null
@@ -0,0 +1,378 @@
+/** 
+@brief Ecore Library Public API Calls
+These routines are used for Ecore Library interaction
+*/
+
+/**
+
+@mainpage Ecore
+
+@image latex ecore_big.eps width=5cm
+@image html  ecore.png
+
+@version 1.0.0
+@author Carsten Haitzler <raster\@rasterman.com>
+@author Tom Gilbert <tom\@linuxbrit.co.uk>
+@author Burra <burra\@colorado.edu>
+@author Chris Ross <chris\@darkrock.co.uk>
+@author Term <term\@twistedpath.org>
+@author Tilman Sauerbeck <tilman\@code-monkey.de>
+@author Nathan Ingersoll <rbdpngn\@users.sourceforge.net>
+@date 2000-2004
+
+@section intro Introduction
+
+Ecore is a library of convenience functions.
+
+The Ecore library provides the following modules:
+@li @link Ecore.h        Ecore - Main Loop Functions. @endlink
+@li @link Ecore_Con.h    Ecore_Con - Connection functions. @endlink
+@li @link Ecore_Config.h Ecore_Config - Configuration functions. @endlink
+@li @link Ecore_Evas.h   Ecore_Evas - Evas convenience functions. @endlink
+@li @link Ecore_Fb.h     Ecore_FB - Frame buffer convenience functions. @endlink
+@li @link Ecore_Ipc.h    Ecore_IPC - Inter Process Communication functions. @endlink
+@li @link Ecore_Job.h    Ecore_Job - Job functions, to be used in the Ecore main loop. @endlink
+@li @link Ecore_Txt.h    Ecore_Txt - Text encoding conversion. @endlink
+@li @link Ecore_X.h      Ecore_X - X Windows System wrapper. @endlink
+
+@section compiling How to compile using Ecore?
+
+This section has to be documented. Below is just a quick line to handle all
+Ecore modules at once.
+
+@verbatim
+gcc *.c \
+-I/usr/local/include -I/usr/X11R6/include \
+-L/usr/local/lib -L/usr/X11R6/lib \
+-lecore -lecore_evas -lecore_x -lecore_fb -lecore_job \
+`evas-config --cflags --libs`
+@endverbatim
+
+@section install How is it installed?
+
+Suggested configure options for evas for a Linux desktop X display:
+
+@verbatim
+./configure \
+--enable-ecore-x \
+--enable-ecore-fb \
+--enable-ecore-evas \
+--enable-ecore-evas-gl \
+--enable-ecore-job \
+--enable-ecore-con \
+--enable-ecore-ipc \
+--enable-ecore-txt
+make CFLAGS="-O9 -mpentiumpro -march=pentiumpro -mcpu=pentiumpro"
+@endverbatim
+
+@todo (1.0) Document API
+
+*/
+
+/*
+@page Ecore_Main_Loop_Page The Ecore Main Loop
+
+@section intro What is Ecore?
+
+Ecore is a clean and tiny event loop library with many modules to do lots of
+convenient things for a programmer, to save time and effort.
+
+It's small and lean, designed to work on embedded systems all the way to
+large and powerful multi-cpu workstations. It serialises all system signals,
+events etc. into a single event queue, that is easily processed without
+needing to worry about concurrency. A properly written, event-driven program
+using this kind of programming doesn't need threads, nor has to worry about
+concurrency. It turns a program into a state machine, and makes it very
+robust and easy to follow.
+
+Ecore gives you other handy primitives, such as timers to tick over for you
+and call specified functions at particular times so the programmer can use
+this to do things, like animate, or time out on connections or tasks that take
+too long etc.
+
+Idle handlers are provided too, as well as calls on entering an idle state
+(often a very good time to update the state of the program). All events that
+enter the system are passed to specific callback functions that the program
+sets up to handle those events. Handling them is simple and other Ecore
+modules produce more events on the queue, coming from other sources such as
+file descriptors etc.
+
+Ecore also lets you have functions called when file descriptors become active
+for reading or writing, allowing for streamlined, non-blocking IO.
+
+Here is an exmaple of a simple program and its basic event loop flow:
+
+@image html  prog_flow.png
+
+
+
+@section work How does Ecore work?
+
+Ecore is very easy to learn and use. All the function calls are designed to
+be easy to remember, explicit in describing what they do, and heavily
+name-spaced. Ecore programs can start and be very simple.
+
+For example:
+
+@code
+#include <Ecore.h>
+
+int main(int argc, const char **argv)
+{
+  ecore_init();
+  ecore_app_args_set(argc, argv);
+  ecore_main_loop_begin();
+  ecore_shutdown();
+  return 0;
+}
+@endcode
+
+This program is very simple and does't check for errors, but it does start up
+and begin a main loop waiting for events or timers to tick off. This program
+doesn't set up any, but now we can expand on this simple program a little
+more by adding some event handlers and timers.
+
+@code
+#include <Ecore.h>
+
+Ecore_Timer         *timer1     = NULL;
+Ecore_Event_Handler *handler1   = NULL;
+double               start_time = 0.0;
+
+int timer_func(void *data)
+{
+  printf("Tick timer. Sec: %3.2f\n", ecore_time_get() - start_time);
+  return 1;
+}
+
+int exit_func(void *data, int ev_type, void *ev)
+{
+  Ecore_Event_Signal_Exit *e;
+
+  e = (Ecore_Event_Signal_Exit *)ev;
+  if (e->interrupt)      printf("Exit: interrupt\n");
+  else if (e->quit)      printf("Exit: quit\n");
+  else if (e->terminate) printf("Exit: terminate\n");
+  ecore_main_loop_quit();
+  return 1;
+}
+
+int main(int argc, const char **argv)
+{
+  ecore_init();
+  ecore_app_args_set(argc, argv);  
+  start_time = ecore_time_get();
+  handler1 = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, exit_func, NULL);
+  timer1 = ecore_timer_add(0.5, timer_func, NULL);  
+  ecore_main_loop_begin();
+  ecore_shutdown();
+  return 0;
+}
+@endcode
+
+In the previous example, we initialize our application and get the time at
+which our program has started so we can calculate an offset. We set
+up a timer to tick off in 0.5 seconds, and since it returns 1, will
+keep ticking off every 0.5 seconds until it returns 0, or is deleted
+by hand. An event handler is set up to call a function - exit_func(),
+whenever an event of type ECORE_EVENT_SIGNAL_EXIT is received (CTRL-C
+on the command line will cause such an event to happen). If this event
+occurs it tells you what kind of exit signal was received, and asks
+the main loop to quit when it is finished by calling
+ecore_main_loop_quit().
+
+The handles returned by ecore_timer_add() and ecore_event_handler_add() are 
+only stored here as an example. If you don't need to address the timer or 
+event handler again you don't need to store the result, so just call the 
+function, and don't assign the result to any variable.
+
+This program looks slightly more complex than needed to do these simple
+things, but in principle, programs don't get any more complex. You add more
+event handlers, for more events, will have more timers and such, BUT it all
+follows the same principles as shown in this example.
+
+*/
+
+/**
+@page Ecore_Config_Page The Enlightened Property Library
+
+The Enlightened Property Library (Ecore_Config) is an adbstraction
+from the complexities of writing your own configuration. It provides
+many features using the Enlightenment 17 development libraries.
+
+To use the library, you:
+@li Set the default values of your properties.
+@li Load the configuration from a file.  You must set the default values
+    first, so that the library knows the correct type of each argument.
+
+The following examples show how to use the Enlightened Property Library:
+@li @link config_basic_example.c config_basic_example.c @endlink
+@li @link config_listener_example.c config_listener_example.c @endlink
+
+*/
+
+/**
+@page Ecore_ADT_Page Ecore Abstract Data Types
+
+This page briefly describes the different abstract data types
+that are provided by the Ecore library for general usage.  You need to
+include the @link Ecore_Data.h Ecore_Data.h @endlink to use them.
+
+@section Ecore_ADT_List List
+
+A list is a simple data type where one each piece of data points to
+another piece of data.
+
+Associated modules that describe the List ADT include:
+@li @ref Ecore_Data_List_Creation_Group
+@li @ref Ecore_Data_List_Add_Item_Group
+@li @ref Ecore_Data_List_Remove_Item_Group
+@li @ref Ecore_Data_List_Traverse_Group
+@li @ref Ecore_Data_List_Node_Group
+
+Examples involving lists include:
+@li @link list_example.c list_example.c @endlink
+
+@section Ecore_ADT_DList Doubly Linked List
+
+A doubly linked list is like a linked list, only each piece of data
+can also point to the piece before it.  In other words, you can traverse
+a doubly linked list in both directions.
+
+Associated modules that describe the DList ADT include:
+@li @ref Ecore_Data_DList_Creation_Group
+@li @ref Ecore_Data_DList_Add_Item_Group
+@li @ref Ecore_Data_DList_Remove_Item_Group
+
+@section Ecore_ADT_Hash Hash
+
+A hash is an abstract data type where one value is associated with another
+value.  Instead of each element of the group being accessible using a
+number, each element is accessed using another object.
+
+Associated modules that describe the Hash ADT include:
+@li @ref Ecore_Data_Hash_ADT_Creation_Group
+@li @ref Ecore_Data_Hash_ADT_Destruction_Group
+@li @ref Ecore_Data_Hash_ADT_Data_Group
+
+@todo Finish this.
+*/
+
+/**
+@page X_Window_System_Page X Window System
+
+The Ecore library includes a wrapper for handling the X window system.
+This page briefly explains what the X window system is and various terms
+that are used.
+*/
+
+// GROUP DEFINITIONS
+
+/**
+@defgroup Ecore_Timer_Group Ecore Timer
+
+The timer allows callbacks to be called at specific intervals.
+ */
+
+/**
+@defgroup Ecore_Job_Group Ecore Jobs
+
+You can queue jobs that are to be done by the main loop when the current
+event is dealt with.
+*/
+
+/**
+@defgroup Idle_Group Idle Handlers
+
+Callbacks that are called when the program enters or exits an idle state.
+
+The ecore main loop enters an idle state when it is waiting for timers
+to time out, data to come in on a file descriptor or any other event
+to occur.  You can set callbacks to be called when the main loop
+enters an idle state, during an idle state or just after the program
+wakes up.
+
+Enterer callbacks are good for updating your program's state, if it
+has a state engine.  Once all of the enterer handlers are called, the
+program will enter a "sleeping" state.
+
+Idler callbacks are called when the main loop has called all enterer
+handlers.  They are useful for interfaces that require polling and
+timers would be too slow to use.
+
+If no idler callbacks are specified, then the process literally goes
+to sleep.  Otherwise, the idler callbacks are called continuously
+while the loop is "idle", using as much CPU as is available to the
+process.
+
+Exiter callbacks are called when the main loop wakes up from an idle
+state.
+
+*/
+
+/**
+@defgroup Ecore_Config_Create_Group Ecore Config Create Functions
+
+Convenience functions that set default values, bounds, option values and
+descriptions in one call.
+*/
+
+/**
+@defgroup Ecore_Config_File_Group Ecore Config File Functions
+
+Functions that are used to load and save properties from and to files.
+*/
+
+// EXAMPLES
+
+/**
+@example args_example.c
+Shows how to set and retrieve the program arguments.
+*/
+
+/**
+@example con_server_example.c
+Shows how to write a simple server using the Ecore_Con library.
+*/
+
+/**
+@example con_client_example.c
+Shows how to write a simple client, that connects to the example server.
+*/
+
+/**
+@example event_handler_example.c
+Shows how to use event handlers.
+*/
+
+/**
+@example timer_example.c
+Demonstrates use of the ecore_timer.
+*/
+
+/**
+@example config_basic_example.c
+Provides an example of how to use the basic configuration functions.
+See the file Ecore_Config.h for the full list of available functions.
+*/
+
+/**
+@example config_listener_example.c
+Shows how to set up a listener to listen for configuration changes.
+*/
+
+/**
+@example list_example.c
+Provides a basic example of how to append to and traverse a list.
+*/
+
+/**
+@example list_destroy_example.c
+Shows how to set and use a destructor for an Ecore_List.
+*/
+
+/**
+@example x_window_example.c
+Shows the basics of using the X Windows system through Ecore functions.
+*/
diff --git a/ecore.pc.in b/ecore.pc.in
new file mode 100644 (file)
index 0000000..cd68143
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: ecore
+Description: Ecore event abstraction library
+Requires:
+Version: @VERSION@
+Libs: -L${libdir} -lecore
+Libs.private: -lm
+Cflags: -I${includedir}
diff --git a/ecore.spec.in b/ecore.spec.in
new file mode 100644 (file)
index 0000000..78a0ce9
--- /dev/null
@@ -0,0 +1,264 @@
+# Conditional build stuff; from rpm 4.4 /usr/lib/rpm/macros.
+# bcond_without defaults to WITH, and vice versa.  Yes, it's
+# ass-backward.  Blame PLD.
+# from KainX's changes to evas... 
+%if %{!?with:1}0
+%define with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
+%endif
+%if %{!?without:1}0
+%define without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}}
+%endif
+%if %{!?bcond_with:1}0
+%define bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
+%endif
+%if %{!?bcond_without:1}0
+%define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}
+%endif
+
+## disabled features
+%bcond_with lib_ecore_directfb
+%bcond_with lib_ecore_sdl
+
+## enabled features
+##%bcond_without module_engine_software_x11
+%bcond_without lib_ecore_fb
+%bcond_without lib_ecore_imf
+
+# This just keeps a missing doxygen from killing the build.
+%define _missing_doc_files_terminate_build 0
+
+%define breq_lib_ecore_directfb     %{?with_lib_ecore_directfb:DirectFB}
+%define breq_lib_ecore_sdl          %{?with_lib_ecore_sdl:SDL-devel}
+
+%define ac_with_lib_ecore_directfb  --%{?with_lib_ecore_directfb:en}%{!?with_lib_ecore_directfb:dis}able-ecore-directfb
+%define ac_with_lib_ecore_fb        --%{?with_lib_ecore_fb:en}%{!?with_lib_ecore_fb:dis}able-ecore-fb
+%define ac_with_lib_ecore_imf       --%{?with_lib_ecore_imf:en}%{!?with_lib_ecore_imf:dis}able-ecore-imf
+%define ac_with_lib_ecore_sdl       --%{?with_lib_ecore_sdl:en}%{!?with_lib_ecore_sdl:dis}able-ecore-sdl
+
+Summary: Enlightened Core X interface library
+Name: @PACKAGE@
+Version: @VERSION@
+Release: 0.%(date '+%Y%m%d')
+License: BSD
+Group: User Interface/X
+Source: %{name}-%{version}.tar.gz
+URL: http://www.enlightenment.org
+Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings <mej@eterm.org>}
+Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)}
+Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
+#BuildSuggests: xorg-x11-devel, XFree86-devel, libX11-devel
+BuildRequires: libjpeg-devel, openssl-devel %{?breq_lib_ecore_directfb}
+BuildRequires: curl-devel, evas-devel, eet-devel %{?breq_lib_ecore_sdl}
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+Ecore is the event/X abstraction layer that makes doing selections,
+Xdnd, general X stuff, event loops, timeouts and idle handlers fast,
+optimized, and convenient. It's a separate library so anyone can make
+use of the work put into Ecore to make this job easy for applications.
+
+%package devel
+Summary: Ecore headers and development libraries.
+Group: Development/Libraries
+Requires: %{name} = %{version}
+Requires: curl-devel, openssl-devel, evas-devel, eet-devel
+Requires: ecore-bin, ecore-con, ecore-config, ecore-evas, ecore-file, ecore-ipc, ecore-job, ecore-txt
+Requires: ecore-x %{?with_lib_ecore_fb:ecore-fb} %{?with_lib_ecore_directfb:ecore-directfb}
+
+%description devel
+Ecore development files
+
+%package bin
+Summary: Tools that support Ecore
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description bin
+Tools that support Ecore
+
+%package con
+Summary: Ecore Connection Library
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description con
+Ecore Connection Library
+
+%package config
+Summary: Ecore Enlightened Property Library
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description config
+Ecore Enlightened Property Library
+
+%if %{with lib_ecore_directfb}
+%package directfb
+Summary: Ecore DirectFB system functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+%description directfb
+Ecore DirectFB system functions
+%endif
+
+%package evas
+Summary: Ecore Evas Wrapper Library
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description evas
+Ecore Evas Wrapper Library
+
+%if %{with lib_ecore_fb}
+%package fb
+Summary: Ecore frame buffer system functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+%description fb
+Ecore frame buffer system functions
+%endif
+
+%package file
+Summary: Ecore File Library
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description file
+Ecore File Library
+
+%if %{with lib_ecore_imf}
+%package imf
+Summary: Ecore IMF functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+%description imf
+Ecore IMF functions
+%endif
+
+%package ipc
+Summary: Ecore inter-process communication functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description ipc
+Ecore inter-process communication functions
+
+%package job
+Summary: Ecore job dealing functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description job
+Ecore job dealing functions
+
+%package txt
+Summary: Ecore text encoding conversion functions
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description txt
+Ecore text encoding conversion functions
+
+%package x
+Summary: Ecore functions for dealing with the X Windows System
+Group: Development/Libraries
+Requires: %{name} = %{version}
+
+%description x
+Ecore functions for dealing with the X Windows System
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+CFLAGS="-I/usr/kerberos/include -I/usr/X11R6/include/X11/extensions"
+LDFLAGS="-L/usr/kerberos/lib -L/usr/X11R6/%{_lib}"
+export CFLAGS LDFLAGS
+%{configure} --prefix=%{_prefix} \
+    %{?ac_with_lib_ecore_directfb} \
+    %{?ac_with_lib_ecore_fb} \
+    %{?ac_with_lib_ecore_imf} \
+    %{?ac_with_lib_ecore_sdl}
+
+%{__make} %{?_smp_mflags} %{?mflags}
+
+%install
+%{__make} %{?mflags_install} DESTDIR=$RPM_BUILD_ROOT install
+
+%post
+/sbin/ldconfig || :
+
+%postun
+/sbin/ldconfig || :
+
+%clean
+test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-, root, root)
+%doc AUTHORS COPYING* README*
+%{_libdir}/libecore.so.*
+
+%files devel
+%defattr(-, root, root)
+%doc doc/html
+%{_libdir}/*.so
+%{_libdir}/*.la
+%{_libdir}/*.a
+%{_libdir}/pkgconfig/*
+#%{_datadir}/aclocal/*
+%{_includedir}/*.h
+
+%files bin
+%defattr(-, root, root)
+%{_bindir}/ecore_config
+
+%files con
+%defattr(-, root, root)
+%{_libdir}/libecore_con.so.*
+
+%files config
+%defattr(-, root, root)
+%{_libdir}/libecore_config.so.*
+
+%if %{with lib_ecore_directfb}
+%files directfb
+%defattr(-, root, root)
+%{_libdir}/libecore_directfb.so.*
+%endif
+
+%files evas
+%defattr(-, root, root)
+%{_libdir}/libecore_evas.so.*
+
+%if %{with lib_ecore_fb}
+%files fb
+%defattr(-, root, root)
+%{_libdir}/libecore_fb.so.*
+%endif
+
+%files file
+%defattr(-, root, root)
+%{_libdir}/libecore_file.so.*
+
+%if %{with lib_ecore_imf}
+%files imf
+%defattr(-, root, root)
+%{_libdir}/libecore_imf*.so.*
+%endif
+
+%files ipc
+%defattr(-, root, root)
+%{_libdir}/libecore_ipc.so.*
+
+%files job
+%defattr(-, root, root)
+%{_libdir}/libecore_job.so.*
+
+%files txt
+%defattr(-, root, root)
+%{_libdir}/libecore_txt.so.*
+
+%files x
+%defattr(-, root, root)
+%{_libdir}/libecore_x.so.*
diff --git a/ecore.supp b/ecore.supp
new file mode 100644 (file)
index 0000000..ff7bb0a
--- /dev/null
@@ -0,0 +1,46 @@
+# $Id$
+# valgrind suppression file for Ecore
+#
+{
+   BogusLeakError
+   Memcheck:Leak
+   fun:malloc
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   fun:_XmbTextPropertyToTextList
+   fun:XmbTextPropertyToTextList
+}
+{
+   bogus2
+   Memcheck:Param
+   write(buf)
+   obj:/lib/ld-2.3.3.so
+   fun:_X11TransWrite
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   fun:_XReply
+}
+{
+   bogus3
+   Memcheck:Cond
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   fun:_XlcCreateLocaleDataBase
+}
+{
+   bogus4
+   Memcheck:Param
+   write(buf)
+   obj:/lib/ld-2.3.3.so
+   fun:_X11TransWrite
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   fun:_XFlush
+}
+{
+   blah, blah, xlib sucks
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib/ld-2.3.3.so
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   fun:_X11TransWritev
+   fun:_XSend
+}
diff --git a/gendoc b/gendoc
new file mode 100755 (executable)
index 0000000..e3293c1
--- /dev/null
+++ b/gendoc
@@ -0,0 +1,10 @@
+#!/bin/sh
+rm -rf ./doc/html ./doc/latex ./doc/man
+mkdir -p ./doc/html ./doc/latex ./doc/man 2>/dev/null
+doxygen
+cp doc/img/*.png doc/html/
+cp doc/img/*.gif doc/html/
+rm -f ecore_docs.tar ecore_docs.tar.gz
+tar -cvf ecore_docs.tar doc/html doc/man doc/latex
+gzip -9 ecore_docs.tar
+exit 0
diff --git a/m4/ac_abstract_socket.m4 b/m4/ac_abstract_socket.m4
new file mode 100644 (file)
index 0000000..c4f0b74
--- /dev/null
@@ -0,0 +1,41 @@
+dnl AC_ABSTRACT_SOCKET_TEST(ACTION_IF_FOUND, ACTION_IF_NOT_FOUND)
+dnl test if a system supports the abstract socket namespace
+dnl by rephorm
+AC_DEFUN([AC_ABSTRACT_SOCKET_TEST], [
+AC_MSG_CHECKING(abstract sockets)
+AC_LANG_PUSH(C)
+AC_RUN_IFELSE([AC_LANG_PROGRAM(
+[[
+// headers
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/un.h>
+]],
+[[
+// main fn
+#define ABS_SUN_LEN(s, path) (strlen(path) + 1 + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
+  int fd;
+  struct sockaddr_un sock;
+  char *tmp;
+  char *name = "/ecore/dbus/abstract/test";
+
+  sock.sun_family = AF_UNIX;
+  snprintf(sock.sun_path, sizeof(sock.sun_path), ".%s", name);
+  sock.sun_path[0] = '\0';
+       fd = socket(PF_UNIX, SOCK_STREAM, 0);
+  if (bind(fd, (struct sockaddr *)&sock, ABS_SUN_LEN(&sock, name)) < 0)
+  {
+    printf("Failed to bind to abstract socket.\n");
+    exit(1);
+  }
+
+  printf ("connected\n");
+  exit(0);
+]])],
+[$1],
+[$2])
+])
+
diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4
new file mode 100644 (file)
index 0000000..46c1a42
--- /dev/null
@@ -0,0 +1,14 @@
+
+AC_DEFUN([AC_C___ATTRIBUTE__],
+[
+  AC_MSG_CHECKING(for __attribute__)
+  AC_CACHE_VAL(ac_cv___attribute__, [
+  AC_TRY_COMPILE([#include <stdlib.h>],
+  [int func(int x); int foo(int x __attribute__ ((unused))) { exit(1); }],
+  ac_cv___attribute__=yes, ac_cv___attribute__=no)])
+  if test "$ac_cv___attribute__" = "yes"; then
+    AC_DEFINE(HAVE___ATTRIBUTE__, 1, [Define to 1 if your compiler has __attribute__])
+  fi
+  AC_MSG_RESULT($ac_cv___attribute__)
+])
+
diff --git a/m4/check_x_extension.m4 b/m4/check_x_extension.m4
new file mode 100644 (file)
index 0000000..41fb8c1
--- /dev/null
@@ -0,0 +1,35 @@
+dnl use: ECORE_CHECK_X_EXTENSION(Foo, header, lib, func)
+AC_DEFUN([ECORE_CHECK_X_EXTENSION],
+[
+pushdef([UP], translit([$1], [a-z], [A-Z]))dnl
+pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
+
+UP[]_CFLAGS=""
+UP[]_LIBS=""
+use_[]DOWN="no"
+
+SAVE_CFLAGS=$CFLAGS
+CFLAGS="$x_cflags $x_includes"
+AC_CHECK_HEADER(X11/extensions/$2,
+  [
+   AC_CHECK_LIB($3, $4,
+     [
+      AC_DEFINE(ECORE_[]UP, 1, [Build support for $1])
+      UP[]_LIBS="-l$3"
+      use_[]DOWN="yes"
+     ],
+     [ use_[]DOWN="no" ],
+     [ $x_libs ]
+   )
+  ],
+  [ use_[]DOWN="no" ],
+  [ #include <X11/Xlib.h> ]
+)
+CFLAGS=$SAVE_CFLAGS
+
+AC_SUBST(UP[]_CFLAGS)
+AC_SUBST(UP[]_LIBS)
+
+popdef([UP])
+popdef([DOWN])
+])
diff --git a/m4/ecore_check_module.m4 b/m4/ecore_check_module.m4
new file mode 100644 (file)
index 0000000..8859c52
--- /dev/null
@@ -0,0 +1,99 @@
+dnl use: ECORE_CHECK_MODULE(Foo, default-enabled[, dependancy[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
+AC_DEFUN([ECORE_CHECK_MODULE],
+[
+pushdef([UP], translit([$1], [a-z], [A-Z]))dnl
+pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
+
+have_ecore_[]DOWN="no"
+ecore_[]DOWN[]_cflags=""
+ecore_[]DOWN[]_libs=""
+
+ifelse("x$2", "xno",
+[
+  AC_ARG_ENABLE(ecore-[]DOWN,
+    AC_HELP_STRING(
+      [--enable-ecore-[]DOWN],
+      [enable the ecore_[]DOWN module. [[default=disabled]]]
+    ),
+    [ want_ecore_[]DOWN=$enableval ],
+    [ want_ecore_[]DOWN=no ])
+],
+[
+  AC_ARG_ENABLE(ecore-[]DOWN,
+    AC_HELP_STRING(
+      [--disable-ecore-[]DOWN],
+      [disable the ecore_[]DOWN module. [[default=enabled]]]
+    ),
+    [ want_ecore_[]DOWN=$enableval ],
+    [ want_ecore_[]DOWN=yes ])
+])
+
+AC_MSG_CHECKING(whether ecore_[]DOWN module is to be built)
+
+if test "x$want_ecore_[]DOWN" = "xyes" ; then
+  if test "x$3" = "x" -o "x$3" = "xyes" ; then
+    AC_DEFINE(BUILD_ECORE_[]UP, 1, [Build Ecore_$1 Module])
+    have_ecore_[]DOWN="yes"
+    ecore_[]DOWN[]_libs="-lecore_[]DOWN"
+    AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no (dependancy failed)])
+  fi
+else
+  AC_MSG_RESULT([no])
+fi
+
+AM_CONDITIONAL(BUILD_ECORE_[]UP, test "x$have_ecore_[]DOWN" = "xyes")
+
+if test "x$have_ecore_[]DOWN" = "xyes" ; then
+  ifelse([$4], , :, [$4])
+else
+  ifelse([$5], , :, [$5])
+fi
+
+AC_SUBST(ecore_[]DOWN[]_cflags)
+AC_SUBST(ecore_[]DOWN[]_libs)
+
+popdef([UP])
+popdef([DOWN])
+])
+
+dnl use: ECORE_EVAS_CHECK_MODULE(foo-bar, want, description, backend[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([ECORE_EVAS_CHECK_MODULE],
+[
+pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
+pushdef([DOWN], translit([$1], [-A-Z], [_a-z]))dnl
+
+have_ecore_evas_[]DOWN="no"
+want_module="$2"
+
+AC_ARG_ENABLE(ecore-$1,
+  AC_HELP_STRING(
+    [--enable-ecore-evas-$1],
+    [enable $3 support in the ecore_evas module.]
+  ),
+  [ want_module=$enableval ]
+)
+AC_MSG_CHECKING(whether ecore_evas $3 support is to be built)
+AC_MSG_RESULT($want_module)
+
+if test "x$4" = "xyes" -a \
+        "x$have_ecore_evas" = "xyes" -a \
+        "x$want_module" = "xyes" ; then
+  PKG_CHECK_MODULES(EVAS_[]UP, evas-$1,
+    [
+     AC_DEFINE(BUILD_ECORE_EVAS_[]UP, 1, [Support for $3 Engine in Ecore_Evas])
+     have_ecore_evas_[]DOWN="yes";
+    ]
+  )
+fi
+
+if test "x$have_ecore_evas_[]DOWN" = "xyes" ; then
+  ifelse([$5], , :, [$5])
+else
+  ifelse([$6], , :, [$6])
+fi
+
+popdef([UP])
+popdef([DOWN])
+])
diff --git a/src/.cvsignore b/src/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..a8590b2
--- /dev/null
@@ -0,0 +1,3 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = lib bin
diff --git a/src/bin/.cvsignore b/src/bin/.cvsignore
new file mode 100644 (file)
index 0000000..79fccac
--- /dev/null
@@ -0,0 +1,10 @@
+.deps
+.libs
+Makefile
+Makefile.in
+ecore_config
+ecore_evas_test
+ecore_test
+ecore_dbus_test
+ecore_dbus_hal_test
+ecore_dbus_receiver_test
diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
new file mode 100644 (file)
index 0000000..bc2c0dd
--- /dev/null
@@ -0,0 +1,36 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_CONFIG
+ECORE_CONFIG_PROG = ecore_config
+ECORE_CONFIG_LIB = $(top_builddir)/src/lib/ecore_config/libecore_config.la
+else
+ECORE_CONFIG_PROG =
+ECORE_CONFIG_LIB =
+endif
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_config \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_config \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+@EET_CFLAGS@
+
+bin_PROGRAMS = $(ECORE_CONFIG_PROG)
+
+ecore_config_SOURCES = \
+ecore_config.c
+
+ecore_config_LDADD = \
+$(ECORE_CONFIG_LIB) \
+$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la \
+$(top_builddir)/src/lib/ecore_con/libecore_con.la \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+ecore_config_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la \
+$(top_builddir)/src/lib/ecore_con/libecore_con.la \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(ECORE_CONFIG_LIB)
diff --git a/src/bin/ecore_config.c b/src/bin/ecore_config.c
new file mode 100644 (file)
index 0000000..e3ef78c
--- /dev/null
@@ -0,0 +1,336 @@
+#include "config.h"
+#include "Ecore.h"
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#ifdef BUILD_ECORE_CONFIG
+#include <unistd.h>
+#include <getopt.h>
+#include <Eet.h>
+#include "Ecore_Config.h"
+#include "Ecore_Data.h"
+#include "ecore_config_private.h"
+
+// strcmp for paths - for sorting folders before files
+static int
+pathcmp(const char *s1, const char *s2)
+{
+   char *s1d, *s2d;
+
+   // strip common part of paths
+   while(*s1 && *s2 && *s1 == *s2)
+     {
+       s1++;
+       s2++;
+     }
+
+   // handle /foo/bar/baz <> /foo/bar_baz properly
+   if (*s1 == '/' && *s2 != '/') return -1;
+   if (*s1 != '/' && *s2 == '/') return  1;
+
+   // skip leading /
+   if (*s1 == '/') s1++;
+   if (*s2 == '/') s2++;
+
+   // order folders before files
+   s1d = strchr(s1, '/');
+   s2d = strchr(s2, '/');
+   if (s1d != NULL && s2d == NULL) return -1;
+   if (s1d == NULL && s2d != NULL) return  1;
+
+   return strcmp(s1, s2);
+}
+
+static int
+del(const char *key)
+{
+   Ecore_Config_Prop *e;
+   e = ecore_config_get(key);
+   if(e == NULL) return -1;
+
+   ecore_config_dst(e);
+   return 0;
+}
+
+static int
+get(const char *key)
+{
+   Ecore_Config_Prop *e;
+   char *temp = NULL;
+
+   if (!(e = ecore_config_get(key)))
+     {
+       fprintf(stderr, "No such property\n");
+       return -1;
+     }
+     
+   printf("%-10s", ecore_config_type_get(e));
+
+   switch (e->type)
+     {
+       case ECORE_CONFIG_NIL:
+          printf("\n");
+          break;
+       case ECORE_CONFIG_INT:
+          printf("%ld\n", ecore_config_int_get(key));
+          break;
+       case ECORE_CONFIG_BLN:
+          printf("%d\n",  ecore_config_boolean_get(key));
+          break;
+       case ECORE_CONFIG_FLT:
+          printf("%lf\n", ecore_config_float_get(key));
+          break;
+       case ECORE_CONFIG_STR:
+          temp = ecore_config_string_get(key);
+          break;
+       case ECORE_CONFIG_RGB:
+          temp = ecore_config_argbstr_get(key);
+          break;
+       case ECORE_CONFIG_THM:
+          temp = ecore_config_theme_get(key);
+          break;
+       default:
+          fprintf(stderr, "Property has unrecognized type");
+          return -1;
+     }
+   if(temp)
+     {
+       printf("\"%s\"\n", temp);
+       free(temp);
+     }
+   return 0;
+}
+
+static int
+list(const char *file)
+{
+   char *key;
+
+   Eet_File *ef;
+   Ecore_Config_Prop *e;
+   Ecore_Sheap *keys;
+
+   // Get number of keys and create heap for sort
+   ef = eet_open(file, EET_FILE_MODE_READ);
+   if (!ef) return -1;
+
+   keys = ecore_sheap_new(ECORE_COMPARE_CB(pathcmp), eet_num_entries(ef));
+
+   eet_close(ef);
+
+   e = __ecore_config_bundle_local->data;
+
+   do
+     {
+       // don't show system settings
+       if( !(e->flags & ECORE_CONFIG_FLAG_SYSTEM) )
+          ecore_sheap_insert(keys, e->key);
+     }
+   while((e = e->next));
+
+   while((key = ecore_sheap_extract(keys)))
+     {
+       printf("%-28s\t", key);
+       get(key);
+     }
+
+   ecore_sheap_destroy(keys);
+
+   return 0;
+}
+
+static void
+usage_and_exit(const char *prog, int ret, const char *msg)
+{
+   if (msg) fprintf(stderr, "%s\n\n", msg);
+   fprintf(stderr, "Usage: %s <options> <command>\n", prog);
+   fprintf(stderr, "Modify ecore_config files\n\n");
+   fprintf(stderr, "Options:\n");
+   fprintf(stderr, "  -c, --file=FILE config file\n");
+   fprintf(stderr, "  -k, --key=KEY   must be given for all commands except -a\n\n");
+   fprintf(stderr, "Commands:\n");
+   fprintf(stderr, "  -a, --list         get all keys\n");
+   fprintf(stderr, "  -g, --get          get key\n");
+   fprintf(stderr, "  -d, --del          delete key\n");
+   fprintf(stderr, "  -b, --bool=VALUE   set boolean\n");
+   fprintf(stderr, "  -f, --float=VALUE  set float\n");
+   fprintf(stderr, "  -i, --int=VALUE    set integer\n");
+   fprintf(stderr, "  -r, --rgb=VALUE    set RGBA\n");
+   fprintf(stderr, "  -s, --string=VALUE set string\n");
+   fprintf(stderr, "  -t, --theme=VALUE  set theme\n\n");
+   exit(ret);
+}
+
+int
+main(int argc, char * const argv[])
+{
+   char *prog, *file, *key;
+   void *value = (void *)NULL;
+   char cmd = 's';
+   int type = -1;
+   int ret = 0;
+   long i;
+   float f;
+   
+   file = key = prog = NULL;
+
+   prog = strdup(argv[0]);
+
+   if(argc < 4)
+     usage_and_exit(prog, 2, NULL);
+
+   while(1)
+     {
+       static struct option long_options[] = {
+          {"file",   1, 0, 'c'},
+          {"list",   0, 0, 'a'},
+          {"get",    0, 0, 'g'},
+          {"del",    0, 0, 'd'},
+          {"bool",   1, 0, 'b'},
+          {"float",  1, 0, 'f'},
+          {"int",    1, 0, 'i'},
+          {"rgb",    1, 0, 'r'},
+          {"string", 1, 0, 's'},
+          {"theme",  1, 0, 't'},
+          {"key",    1, 0, 'k'},
+          {0, 0, 0, 0}
+       };
+
+       ret = getopt_long(argc, argv, "c:agdb:f:i:r:s:t:k:", long_options, NULL);
+       if(ret == -1)
+          break;
+
+       switch(ret)
+          {
+            case 'k':
+               key = strdup(optarg);
+               break;
+            case 'n':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_NIL;
+               value = NULL;
+               break;
+            case 'b':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_BLN;
+               i = atoi(optarg);
+               value = &i;
+               break;
+            case 'i':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_INT;
+               i = atoi(optarg);
+               value = &i;
+               break;
+            case 'f':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_FLT;
+               f = atof(optarg);
+               value = &f;
+               break;
+            case 'r':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_RGB;
+               i = (long) strtoul( (*optarg == '#') ? (optarg + 1) : optarg, NULL, 16 );
+               value = &i;
+               break;
+            case 's':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_STR;
+               value = strdup(optarg);
+               break;
+            case 't':
+               if(value)
+                  usage_and_exit(prog, 2, "too many commands");
+               type = ECORE_CONFIG_THM;
+               value = strdup(optarg);
+               break;
+            case 'c':
+               if(file)
+                  free(file);
+               file = strdup(optarg);
+               break;
+            case '?':
+            case ':':
+               return 1;
+            default:
+               cmd = ret;
+               break;
+          }
+     }
+
+   if(cmd == 's' && type == -1)
+     usage_and_exit(prog, 2, "You need to specify a command!");
+
+   if(cmd != 'a' && key == NULL)
+     usage_and_exit(prog, 2, "You need to specify key!");
+   
+   if(ecore_config_init("econfig") != ECORE_CONFIG_ERR_SUCC)
+     {
+       fprintf(stderr, "Couldn't init ecore_config!");
+       return 1;
+     }
+
+   // Load configuration from file
+   ecore_config_file_load(file);
+
+   ret = 0;
+
+   // Execute command
+   switch (cmd)
+     {
+       case 's':
+          if (ecore_config_typed_set(key, value, type) != ECORE_CONFIG_ERR_SUCC)
+            {
+               fprintf(stderr, "Set failed for %s", key);
+               ret = 1;
+            } else {
+               ecore_config_file_save(file);
+            }
+            get(key); // display value after setting it
+          break;
+       case 'd':
+          if(del(key))
+            {
+               fprintf(stderr, "Delete failed for %s", key);
+               ret = 1;
+            } else {
+               ecore_config_file_save(file);
+            }
+          break;
+       case 'g':
+          if (get(key)) ret = 1;
+          break;
+       case 'a':
+          if (list(file)) ret = 1;
+          break;
+       default:
+          printf("Unhandled command '%c'\n", cmd);
+     }
+
+   ecore_config_shutdown();
+
+   if(type == ECORE_CONFIG_STR || type == ECORE_CONFIG_THM)
+     free(value);
+
+   if(file)
+     free(file);
+
+   return ret;
+}
+#else
+int
+main(int argc, const char **argv)
+{
+   printf("Ecore_config module not compiled. This program is empty.\n");
+   return -1;
+}
+#endif
diff --git a/src/lib/.cvsignore b/src/lib/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
new file mode 100644 (file)
index 0000000..67efd6c
--- /dev/null
@@ -0,0 +1,19 @@
+## Process this file with automake to produce Makefile.in
+SUBDIRS = \
+ecore \
+ecore_job \
+ecore_txt \
+ecore_fb \
+ecore_directfb \
+ecore_con \
+ecore_x \
+ecore_win32 \
+ecore_wince \
+ecore_sdl \
+ecore_ipc \
+ecore_evas \
+ecore_config \
+ecore_file \
+ecore_desktop \
+ecore_imf \
+ecore_imf_evas
diff --git a/src/lib/ecore/.cvsignore b/src/lib/ecore/.cvsignore
new file mode 100644 (file)
index 0000000..78de274
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore.la
diff --git a/src/lib/ecore/Ecore.h b/src/lib/ecore/Ecore.h
new file mode 100644 (file)
index 0000000..b79a9cd
--- /dev/null
@@ -0,0 +1,307 @@
+#ifndef _ECORE_H
+#define _ECORE_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file Ecore.h
+ * @brief The file that provides the program utility, main loop and timer
+ *        functions.
+ *
+ * This header provides the Ecore event handling loop.  For more
+ * details, see @ref Ecore_Main_Loop_Group.
+ *
+ * For the main loop to be of any use, you need to be able to add events
+ * and event handlers.  Events for file descriptor events are covered in
+ * @ref Ecore_FD_Handler_Group.
+ *
+ * Time functions are covered in @ref Ecore_Time_Group.
+ *
+ * There is also provision for callbacks for when the loop enters or
+ * exits an idle state. See @ref Idle_Group for more information.
+ *
+ * Functions are also provided for spawning child processes using fork.
+ * See @ref Ecore_Exe_Basic_Group and @ref Ecore_Exe_Signal_Group for
+ * more details.
+ */
+
+#ifndef _ECORE_PRIVATE_H
+#include <sys/types.h>
+#include <signal.h>
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ECORE_CALLBACK_CANCEL 0 /**< Return value to remove a callback */
+#define ECORE_CALLBACK_RENEW 1  /**< Return value to keep a callback */
+
+#define ECORE_EVENT_NONE            0
+#define ECORE_EVENT_SIGNAL_USER     1 /**< User signal event */
+#define ECORE_EVENT_SIGNAL_HUP      2 /**< Hup signal event */
+#define ECORE_EVENT_SIGNAL_EXIT     3 /**< Exit signal event */
+#define ECORE_EVENT_SIGNAL_POWER    4 /**< Power signal event */
+#define ECORE_EVENT_SIGNAL_REALTIME 5 /**< Realtime signal event */
+#define ECORE_EVENT_COUNT           6
+
+   EAPI extern int ECORE_EXE_EVENT_ADD; /**< A child process has been added */
+   EAPI extern int ECORE_EXE_EVENT_DEL; /**< A child process has been deleted (it exited, naming consistant with the rest of ecore). */
+   EAPI extern int ECORE_EXE_EVENT_DATA; /**< Data from a child process. */
+   EAPI extern int ECORE_EXE_EVENT_ERROR; /**< Errors from a child process. */
+
+#ifndef _ECORE_PRIVATE_H
+   enum _Ecore_Fd_Handler_Flags
+     {
+       ECORE_FD_READ = 1, /**< Fd Read mask */
+       ECORE_FD_WRITE = 2, /**< Fd Write mask */
+       ECORE_FD_ERROR = 4 /**< Fd Error mask */
+     };
+   typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags;
+
+   enum _Ecore_Exe_Flags /* flags for executing a child with its stdin and/or stdout piped back */
+     {
+       ECORE_EXE_PIPE_READ = 1, /**< Exe Pipe Read mask */
+       ECORE_EXE_PIPE_WRITE = 2, /**< Exe Pipe Write mask */
+       ECORE_EXE_PIPE_ERROR = 4, /**< Exe Pipe error mask */
+       ECORE_EXE_PIPE_READ_LINE_BUFFERED = 8, /**< Reads are buffered until a newline and delivered 1 event per line */
+       ECORE_EXE_PIPE_ERROR_LINE_BUFFERED = 16, /**< Errors are buffered until a newline and delivered 1 event per line */
+       ECORE_EXE_PIPE_AUTO = 32, /**< stdout and stderr are buffered automatically */
+       ECORE_EXE_RESPAWN = 64, /**< FIXME: Exe is restarted if it dies */
+       ECORE_EXE_USE_SH = 128, /**< Use /bin/sh to run the command. */
+       ECORE_EXE_NOT_LEADER = 256 /**< Do not use setsid() to have the executed process be its own session leader */
+     };
+   typedef enum _Ecore_Exe_Flags Ecore_Exe_Flags;
+
+   enum _Ecore_Poller_Type /* Poller types */
+     {
+       ECORE_POLLER_CORE = 0 /**< The core poller interval */
+     };
+   typedef enum _Ecore_Poller_Type Ecore_Poller_Type;
+
+#ifndef _WIN32
+   typedef void Ecore_Exe; /**< A handle for spawned processes */
+#endif
+   typedef void Ecore_Timer; /**< A handle for timers */
+   typedef void Ecore_Idler; /**< A handle for idlers */
+   typedef void Ecore_Idle_Enterer; /**< A handle for idle enterers */
+   typedef void Ecore_Idle_Exiter; /**< A handle for idle exiters */
+   typedef void Ecore_Fd_Handler; /**< A handle for Fd hanlders */
+   typedef void Ecore_Event_Handler; /**< A handle for an event handler */
+   typedef void Ecore_Event_Filter; /**< A handle for an event filter */
+   typedef void Ecore_Event; /**< A handle for an event */
+   typedef void Ecore_Animator; /**< A handle for animators */
+   typedef void Ecore_Poller; /**< A handle for pollers */
+#endif
+   typedef struct _Ecore_Event_Signal_User     Ecore_Event_Signal_User; /**< User signal event */
+   typedef struct _Ecore_Event_Signal_Hup      Ecore_Event_Signal_Hup; /**< Hup signal event */
+   typedef struct _Ecore_Event_Signal_Exit     Ecore_Event_Signal_Exit; /**< Exit signal event */
+   typedef struct _Ecore_Event_Signal_Power    Ecore_Event_Signal_Power; /**< Power signal event */
+   typedef struct _Ecore_Event_Signal_Realtime Ecore_Event_Signal_Realtime; /**< Realtime signal event */
+   typedef struct _Ecore_Exe_Event_Add         Ecore_Exe_Event_Add; /**< Spawned Exe add event */
+   typedef struct _Ecore_Exe_Event_Del         Ecore_Exe_Event_Del; /**< Spawned Exe exit event */
+   typedef struct _Ecore_Exe_Event_Data_Line   Ecore_Exe_Event_Data_Line; /**< Lines from a child process */
+   typedef struct _Ecore_Exe_Event_Data        Ecore_Exe_Event_Data; /**< Data from a child process */
+
+   struct _Ecore_Event_Signal_User /** User signal event */
+     {
+       int   number; /**< The signal number. Either 1 or 2 */
+       void *ext_data; /**< Extension data - not used */
+
+#ifndef _WIN32
+       siginfo_t data; /**< Signal info */
+#endif
+     };
+
+   struct _Ecore_Event_Signal_Hup /** Hup signal event */
+     {
+       void *ext_data; /**< Extension data - not used */
+
+#ifndef _WIN32
+       siginfo_t data; /**< Signal info */
+#endif
+     };
+
+   struct _Ecore_Event_Signal_Exit /** Exit request event */
+     {
+       unsigned int   interrupt : 1; /**< Set if the exit request was an interrupt  signal*/
+       unsigned int   quit      : 1; /**< set if the exit request was a quit signal */
+       unsigned int   terminate : 1; /**< Set if the exit request was a terminate singal */
+       void          *ext_data;        /**< Extension data - not used */
+
+#ifndef _WIN32
+       siginfo_t data; /**< Signal info */
+#endif
+     };
+
+   struct _Ecore_Event_Signal_Power /** Power event */
+     {
+       void *ext_data; /**< Extension data - not used */
+
+#ifndef _WIN32
+       siginfo_t data; /**< Signal info */
+#endif
+     };
+
+   struct _Ecore_Event_Signal_Realtime /** Realtime event */
+     {
+       int num; /**< The realtime signal's number */
+
+#ifndef _WIN32
+       siginfo_t data; /**< Signal info */
+#endif
+     };
+
+#ifndef _WIN32
+   struct _Ecore_Exe_Event_Add /** Process add event */
+     {
+       Ecore_Exe *exe; /**< The handle to the added process */
+       void      *ext_data; /**< Extension data - not used */
+     };
+
+   struct _Ecore_Exe_Event_Del /** Process exit event */
+     {
+       pid_t         pid; /**< The process ID of the process that exited */
+       int           exit_code; /**< The exit code of the process */
+       Ecore_Exe    *exe; /**< The handle to the exited process, or NULL if not found */
+       int           exit_signal; /** < The signal that caused the process to exit */
+       unsigned int  exited    : 1; /** < set to 1 if the process exited of its own accord */
+       unsigned int  signalled : 1; /** < set to 1 id the process exited due to uncaught signal */
+       void         *ext_data; /**< Extension data - not used */
+       siginfo_t     data; /**< Signal info */
+     };
+
+   struct _Ecore_Exe_Event_Data_Line /**< Lines from a child process */
+      {
+         char *line;
+        int   size;
+      };
+
+   struct _Ecore_Exe_Event_Data /** Data from a child process event */
+     {
+       Ecore_Exe *exe; /**< The handle to the process */
+       void *data; /**< the raw binary data from the child process that was recieved */
+       int   size; /**< the size of this data in bytes */
+       Ecore_Exe_Event_Data_Line *lines; /**< an array of line data if line buffered, the last one has it's line member set to NULL */
+     };
+#endif
+
+   EAPI int  ecore_init(void);
+   EAPI int  ecore_shutdown(void);
+
+   EAPI void ecore_app_args_set(int argc, const char **argv);
+   EAPI void ecore_app_args_get(int *argc, char ***argv);
+   EAPI void ecore_app_restart(void);
+
+   EAPI Ecore_Event_Handler *ecore_event_handler_add(int type, int (*func) (void *data, int type, void *event), const void *data);
+   EAPI void                *ecore_event_handler_del(Ecore_Event_Handler *event_handler);
+   EAPI Ecore_Event         *ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), void *data);
+   EAPI void                *ecore_event_del(Ecore_Event *event);
+   EAPI int                  ecore_event_type_new(void);
+   EAPI Ecore_Event_Filter  *ecore_event_filter_add(void * (*func_start) (void *data), int (*func_filter) (void *data, void *loop_data, int type, void *event), void (*func_end) (void *data, void *loop_data), const void *data);
+   EAPI void                *ecore_event_filter_del(Ecore_Event_Filter *ef);
+   EAPI int                  ecore_event_current_type_get(void);
+   EAPI void                *ecore_event_current_event_get(void);
+
+
+#ifndef _WIN32
+   EAPI Ecore_Exe  *ecore_exe_run(const char *exe_cmd, const void *data);
+   EAPI Ecore_Exe  *ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags flags, const void *data);
+   EAPI int         ecore_exe_send(Ecore_Exe *exe, void *data, int size);
+   EAPI void        ecore_exe_close_stdin(Ecore_Exe *exe);
+   EAPI void        ecore_exe_auto_limits_set(Ecore_Exe *exe, int start_bytes, int end_bytes, int start_lines, int end_lines);
+   EAPI Ecore_Exe_Event_Data *ecore_exe_event_data_get(Ecore_Exe *exe, Ecore_Exe_Flags flags);
+   EAPI void        ecore_exe_event_data_free(Ecore_Exe_Event_Data *data);
+   EAPI void       *ecore_exe_free(Ecore_Exe *exe);
+   EAPI pid_t       ecore_exe_pid_get(Ecore_Exe *exe);
+   EAPI void        ecore_exe_tag_set(Ecore_Exe *exe, const char *tag);
+   EAPI char       *ecore_exe_tag_get(Ecore_Exe *exe);
+   EAPI char       *ecore_exe_cmd_get(Ecore_Exe *exe);
+   EAPI void       *ecore_exe_data_get(Ecore_Exe *exe);
+   EAPI void        ecore_exe_pause(Ecore_Exe *exe);
+   EAPI void        ecore_exe_continue(Ecore_Exe *exe);
+   EAPI void        ecore_exe_interrupt(Ecore_Exe *exe);
+   EAPI void        ecore_exe_quit(Ecore_Exe *exe);
+   EAPI void        ecore_exe_terminate(Ecore_Exe *exe);
+   EAPI void        ecore_exe_kill(Ecore_Exe *exe);
+   EAPI void        ecore_exe_signal(Ecore_Exe *exe, int num);
+   EAPI void        ecore_exe_hup(Ecore_Exe *exe);
+#endif
+
+   EAPI Ecore_Idler *ecore_idler_add(int (*func) (void *data), const void *data);
+   EAPI void        *ecore_idler_del(Ecore_Idler *idler);
+
+   EAPI Ecore_Idle_Enterer *ecore_idle_enterer_add(int (*func) (void *data), const void *data);
+   EAPI Ecore_Idle_Enterer *ecore_idle_enterer_before_add(int (*func) (void *data), const void *data);
+   EAPI void               *ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer);
+
+   EAPI Ecore_Idle_Exiter *ecore_idle_exiter_add(int (*func) (void *data), const void *data);
+   EAPI void              *ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_exiter);
+
+   EAPI void              ecore_main_loop_iterate(void);
+   EAPI void              ecore_main_loop_begin(void);
+   EAPI void              ecore_main_loop_quit(void);
+   EAPI Ecore_Fd_Handler *ecore_main_fd_handler_add(int fd, Ecore_Fd_Handler_Flags flags, int (*func) (void *data, Ecore_Fd_Handler *fd_handler), const void *data, int (*buf_func) (void *buf_data, Ecore_Fd_Handler *fd_handler), const void *buf_data);
+   EAPI void              ecore_main_fd_handler_prepare_callback_set(Ecore_Fd_Handler *fd_handler, void (*func) (void *data, Ecore_Fd_Handler *fd_handler), const void *data);
+   EAPI void             *ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_handler);
+   EAPI int               ecore_main_fd_handler_fd_get(Ecore_Fd_Handler *fd_handler);
+   EAPI int               ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags);
+   EAPI void              ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags);
+
+   EAPI double ecore_time_get(void);
+
+   EAPI Ecore_Timer *ecore_timer_add(double in, int (*func) (void *data), const void *data);
+   EAPI void        *ecore_timer_del(Ecore_Timer *timer);
+   EAPI void         ecore_timer_interval_set(Ecore_Timer *timer, double in);
+   EAPI void         ecore_timer_freeze(Ecore_Timer *timer);
+   EAPI void         ecore_timer_thaw(Ecore_Timer *timer);
+   EAPI void         ecore_timer_delay(Ecore_Timer *timer, double add);
+   EAPI double       ecore_timer_pending_get(Ecore_Timer *timer);
+
+   EAPI Ecore_Animator *ecore_animator_add(int (*func) (void *data), const void *data);
+   EAPI void           *ecore_animator_del(Ecore_Animator *animator);
+   EAPI void            ecore_animator_frametime_set(double frametime);
+   EAPI double          ecore_animator_frametime_get(void);
+
+   EAPI void          ecore_poller_poll_interval_set(Ecore_Poller_Type type, double poll_time);
+   EAPI double        ecore_poller_poll_interval_get(Ecore_Poller_Type type);
+   EAPI Ecore_Poller *ecore_poller_add(Ecore_Poller_Type type, int interval, int (*func) (void *data), const void *data);
+   EAPI void         *ecore_poller_del(Ecore_Poller *poller);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lib/ecore/Ecore_Data.h b/src/lib/ecore/Ecore_Data.h
new file mode 100644 (file)
index 0000000..c159172
--- /dev/null
@@ -0,0 +1,520 @@
+#ifndef _ECORE_DATA_H
+# define _ECORE_DATA_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/* we need this for size_t */
+#include <stddef.h>
+
+/**
+ * @file Ecore_Data.h
+ * @brief Contains threading, list, hash, debugging and tree functions.
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# ifdef __sgi
+#  define __FUNCTION__ "unknown"
+#  ifndef __cplusplus
+#   define inline
+#  endif
+# endif
+   
+   EAPI extern const unsigned int ecore_prime_table[];
+   
+# define ECORE_SORT_MIN 0
+# define ECORE_SORT_MAX 1
+
+   typedef void (*Ecore_For_Each) (void *value, void *user_data);
+# define ECORE_FOR_EACH(function) ((Ecore_For_Each)function)
+   
+   typedef void (*Ecore_Free_Cb) (void *data);
+# define ECORE_FREE_CB(func) ((Ecore_Free_Cb)func)
+   
+   typedef unsigned int (*Ecore_Hash_Cb) (const void *key);
+# define ECORE_HASH_CB(function) ((Ecore_Hash_Cb)function)
+   
+   typedef int (*Ecore_Compare_Cb) (const void *data1, const void *data2);
+# define ECORE_COMPARE_CB(function) ((Ecore_Compare_Cb)function)
+   
+   typedef struct _ecore_list Ecore_List;
+# define ECORE_LIST(list) ((Ecore_List *)list)
+   
+   typedef struct _ecore_list_node Ecore_List_Node;
+# define ECORE_LIST_NODE(node) ((Ecore_List_Node *)node)
+
+   typedef struct _ecore_strbuf Ecore_Strbuf;
+# define ECORE_STRBUF(buf) ((Ecore_Strbuf *)buf)
+   
+   struct _ecore_list_node {
+      void *data;
+      struct _ecore_list_node *next;
+   };
+   
+   struct _ecore_list {
+      Ecore_List_Node *first;  /* The first node in the list */
+      Ecore_List_Node *last;   /* The last node in the list */
+      Ecore_List_Node *current;        /* The current node in the list */
+      
+      Ecore_Free_Cb free_func;  /* The callback to free data in nodes */
+      
+      int nodes;               /* The number of nodes in the list */
+      int index;               /* The position from the front of the
+                                list of current node */
+   };
+   
+   EAPI int ecore_direct_compare(const void *key1, const void *key2);
+   EAPI int ecore_str_compare(const void *key1, const void *key2);
+   
+   EAPI unsigned int ecore_direct_hash(const void *key);
+   EAPI unsigned int ecore_str_hash(const void *key);
+   
+   /* Creating and initializing new list structures */
+   EAPI Ecore_List *ecore_list_new(void);
+   EAPI int ecore_list_init(Ecore_List *list);
+   
+   /* Adding items to the list */
+   EAPI int ecore_list_append(Ecore_List * list, void *_data);
+   EAPI int ecore_list_prepend(Ecore_List * list, void *_data);
+   EAPI int ecore_list_insert(Ecore_List * list, void *_data);
+   EAPI int ecore_list_append_list(Ecore_List * list, Ecore_List * append);
+   EAPI int ecore_list_prepend_list(Ecore_List * list, Ecore_List * prepend);
+   
+   /* Removing items from the list */
+   EAPI int ecore_list_remove_destroy(Ecore_List *list);
+   EAPI void *ecore_list_remove(Ecore_List * list);
+   EAPI void *ecore_list_first_remove(Ecore_List * list);
+   EAPI void *ecore_list_last_remove(Ecore_List * list);
+   
+   /* Retrieve the current position in the list */
+   EAPI void *ecore_list_current(Ecore_List * list);
+   EAPI void *ecore_list_first(Ecore_List * list);
+   EAPI void *ecore_list_last(Ecore_List * list);
+   EAPI int ecore_list_index(Ecore_List * list);
+   EAPI int ecore_list_count(Ecore_List * list);
+   
+   /* Traversing the list */
+   EAPI int ecore_list_for_each(Ecore_List *list, Ecore_For_Each function,
+                               void *user_data);
+   EAPI void *ecore_list_first_goto(Ecore_List * list);
+   EAPI void *ecore_list_last_goto(Ecore_List * list);
+   EAPI void *ecore_list_index_goto(Ecore_List * list, int index);
+   EAPI void *ecore_list_goto(Ecore_List * list, const void *_data);
+   
+   /* Traversing the list and returning data */
+   EAPI void *ecore_list_next(Ecore_List * list);
+   EAPI void *ecore_list_find(Ecore_List *list, Ecore_Compare_Cb function,
+        const void *user_data);
+
+   /* Sorting the list */
+   EAPI int ecore_list_sort(Ecore_List *list, Ecore_Compare_Cb compare,
+                                  char order);
+   EAPI int ecore_list_mergesort(Ecore_List *list, Ecore_Compare_Cb compare,
+                                  char order);
+   EAPI int ecore_list_heapsort(Ecore_List *list, Ecore_Compare_Cb compare,
+                                  char order);
+   EAPI void ecore_list_merge(Ecore_List *list, Ecore_List *l2, 
+                                  Ecore_Compare_Cb, char order);
+   
+   /* Check to see if there is any data in the list */
+   EAPI int ecore_list_empty_is(Ecore_List * list);
+   
+   /* Remove every node in the list without freeing the list itself */
+   EAPI int ecore_list_clear(Ecore_List * list);
+   /* Free the list and it's contents */
+   EAPI void ecore_list_destroy(Ecore_List *list);
+   
+   /* Creating and initializing list nodes */
+   EAPI Ecore_List_Node *ecore_list_node_new(void);
+   EAPI int ecore_list_node_init(Ecore_List_Node *newNode);
+   
+   /* Destroying nodes */
+   EAPI int ecore_list_node_destroy(Ecore_List_Node * _e_node, Ecore_Free_Cb free_func);
+   
+   EAPI int ecore_list_free_cb_set(Ecore_List * list, Ecore_Free_Cb free_func);
+   
+   typedef Ecore_List Ecore_DList;
+# define ECORE_DLIST(dlist) ((Ecore_DList *)dlist)
+   
+   typedef struct _ecore_dlist_node Ecore_DList_Node;
+# define ECORE_DLIST_NODE(dlist) ((Ecore_DList_Node *)dlist)
+   
+   struct _ecore_dlist_node {
+      Ecore_List_Node single;
+      Ecore_DList_Node *previous;
+   };
+   
+   /* Creating and initializing new list structures */
+   EAPI Ecore_DList *ecore_dlist_new(void);
+   EAPI int ecore_dlist_init(Ecore_DList *list);
+   EAPI void ecore_dlist_destroy(Ecore_DList *list);
+   
+   /* Adding items to the list */
+   EAPI int ecore_dlist_append(Ecore_DList * _e_dlist, void *_data);
+   EAPI int ecore_dlist_prepend(Ecore_DList * _e_dlist, void *_data);
+   EAPI int ecore_dlist_insert(Ecore_DList * _e_dlist, void *_data);
+   EAPI int ecore_dlist_append_list(Ecore_DList * _e_dlist, Ecore_DList * append);
+   EAPI int ecore_dlist_prepend_list(Ecore_DList * _e_dlist, Ecore_DList * prepend);
+   
+   /* Info about list's state */
+# define ecore_dlist_first(list) ecore_list_first(list)
+# define ecore_dlist_last(list) ecore_list_last(list)
+   EAPI void *ecore_dlist_current(Ecore_DList *list);
+   EAPI int ecore_dlist_index(Ecore_DList *list);
+# define ecore_dlist_count(list) ecore_list_count(list)
+   
+   /* Removing items from the list */
+   EAPI void *ecore_dlist_remove(Ecore_DList * _e_dlist);
+   EAPI void *ecore_dlist_first_remove(Ecore_DList * _e_dlist);
+   EAPI int ecore_dlist_remove_destroy(Ecore_DList *list);
+   EAPI void *ecore_dlist_last_remove(Ecore_DList * _e_dlist);
+   
+   /* Traversing the list */
+# define ecore_dlist_for_each(list, function, user_data) \
+   ecore_list_for_each(list, function, user_data)
+   EAPI void *ecore_dlist_first_goto(Ecore_DList * _e_dlist);
+   EAPI void *ecore_dlist_last_goto(Ecore_DList * _e_dlist);
+   EAPI void *ecore_dlist_index_goto(Ecore_DList * _e_dlist, int index);
+   EAPI void *ecore_dlist_goto(Ecore_DList * _e_dlist, void *_data);
+   
+   /* Traversing the list and returning data */
+   EAPI void *ecore_dlist_next(Ecore_DList * list);
+   EAPI void *ecore_dlist_previous(Ecore_DList * list);
+   
+   /* Sorting the list */
+   EAPI int ecore_dlist_sort(Ecore_DList *list, Ecore_Compare_Cb compare,
+                                  char order);
+   EAPI int ecore_dlist_mergesort(Ecore_DList *list, Ecore_Compare_Cb compare,
+                                  char order);
+# define ecore_dlist_heapsort(list, compare, order) \
+   ecore_list_heapsort(list, compare, order)
+   EAPI void ecore_dlist_merge(Ecore_DList *list, Ecore_DList *l2, 
+                                  Ecore_Compare_Cb, char order);
+   
+   /* Check to see if there is any data in the list */
+   EAPI int ecore_dlist_empty_is(Ecore_DList * _e_dlist);
+   
+   /* Remove every node in the list without free'ing it */
+   EAPI int ecore_dlist_clear(Ecore_DList * _e_dlist);
+   
+   /* Creating and initializing list nodes */
+   EAPI int ecore_dlist_node_init(Ecore_DList_Node * node);
+   EAPI Ecore_DList_Node *ecore_dlist_node_new(void);
+   
+   /* Destroying nodes */
+   EAPI int ecore_dlist_node_destroy(Ecore_DList_Node * node, Ecore_Free_Cb free_func);
+   
+   EAPI int ecore_dlist_free_cb_set(Ecore_DList * dlist, Ecore_Free_Cb free_func);
+   
+   
+   
+   /*
+    * Hash Table Implementation:
+    * 
+    * Traditional hash table implementation. I had tried a list of tables
+    * approach to save on the realloc's but it ended up being much slower than
+    * the traditional approach.
+    */
+   
+   typedef struct _ecore_hash_node Ecore_Hash_Node;
+# define ECORE_HASH_NODE(hash) ((Ecore_Hash_Node *)hash)
+   
+   struct _ecore_hash_node {
+      Ecore_Hash_Node *next; /* Pointer to the next node in the bucket list */
+      void *key;            /* The key for the data node */
+      void *value;          /* The value associated with this node */
+   };
+   
+   typedef struct _ecore_hash Ecore_Hash;
+# define ECORE_HASH(hash) ((Ecore_Hash *)hash)
+   
+   struct _ecore_hash {
+      Ecore_Hash_Node **buckets;
+      int size;                /* An index into the table of primes to
+                        determine size */
+      int nodes;               /* The number of nodes currently in the hash */
+
+      int index;    /* The current index into the bucket table */
+      
+      Ecore_Compare_Cb compare;        /* The function used to compare node values */
+      Ecore_Hash_Cb hash_func; /* The callback function to determine hash */
+      
+      Ecore_Free_Cb free_key;  /* The callback function to free key */
+      Ecore_Free_Cb free_value;        /* The callback function to free value */
+   };
+   
+   /* Create and initialize a hash */
+   EAPI Ecore_Hash *ecore_hash_new(Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare);
+   EAPI int ecore_hash_init(Ecore_Hash *hash, Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare);
+   
+   /* Functions related to freeing the data in the hash table */
+   EAPI int ecore_hash_free_key_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function);
+   EAPI int ecore_hash_free_value_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function);
+   EAPI void ecore_hash_destroy(Ecore_Hash *hash);
+
+   EAPI int ecore_hash_count(Ecore_Hash *hash);
+   EAPI int ecore_hash_for_each_node(Ecore_Hash *hash, Ecore_For_Each for_each_func,
+                                    void *user_data);
+   EAPI Ecore_List *ecore_hash_keys(Ecore_Hash *hash);
+   
+   /* Retrieve and store data into the hash */
+   EAPI void *ecore_hash_get(Ecore_Hash *hash, const void *key);
+   EAPI int ecore_hash_set(Ecore_Hash *hash, void *key, void *value);
+   EAPI int ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set);
+   EAPI void *ecore_hash_remove(Ecore_Hash *hash, const void *key);
+   EAPI void *ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value);
+   EAPI void ecore_hash_dump_graph(Ecore_Hash *hash);
+   EAPI void ecore_hash_dump_stats(Ecore_Hash *hash);
+
+
+   typedef struct _ecore_path_group Ecore_Path_Group;
+# define ECORE_PATH_GROUP(group) ((Ecore_Path_Group *)(group))
+
+   struct _ecore_path_group
+     {
+       Ecore_List *paths;
+     };
+   
+   /*
+    * Create a new path group
+    */
+   EAPI Ecore_Path_Group *ecore_path_group_new(void);
+   
+   /*
+    * Destroy a previous path group
+    */
+   EAPI void ecore_path_group_del(Ecore_Path_Group *group);
+   
+   /*
+    * Add a directory to be searched for files
+    */
+   EAPI void ecore_path_group_add(Ecore_Path_Group *group, const char *path);
+   
+   /*
+    * Remove a directory to be searched for files
+    */
+   EAPI void ecore_path_group_remove(Ecore_Path_Group *group, const char *path);
+   
+   /*
+    * Find the absolute path if it exists in the group of paths
+    */
+   EAPI char * ecore_path_group_find(Ecore_Path_Group *group, const char *name);
+   
+   /*
+    * Get a list of all the available files in a path set
+    */
+   EAPI Ecore_List * ecore_path_group_available(Ecore_Path_Group *group);
+   
+   
+   typedef struct _ecore_plugin Ecore_Plugin;
+   struct _ecore_plugin
+     {
+       void *handle;
+     };
+   
+   /*
+    * Load the specified plugin
+    */
+   EAPI Ecore_Plugin *ecore_plugin_load(Ecore_Path_Group *group, const char *plugin, const char *version);
+   
+   /*
+    * Unload the specified plugin
+    */
+   EAPI void ecore_plugin_unload(Ecore_Plugin * plugin);
+   
+   /*
+    * Lookup the specified symbol for the plugin
+    */
+   EAPI void *ecore_plugin_symbol_get(Ecore_Plugin * plugin, const char *symbol_name);
+
+   EAPI Ecore_List *ecore_plugin_available_get(Ecore_Path_Group *group);
+
+
+   typedef struct _ecore_heap Ecore_Sheap;
+# define ECORE_HEAP(heap) ((Ecore_Sheap *)heap)
+   
+   struct _ecore_heap {
+      void **data;
+      int size;
+      int space;
+      
+      char order, sorted;
+      
+      /* Callback for comparing node values, default is direct comparison */
+      Ecore_Compare_Cb compare;
+
+      /* Callback for freeing node data, default is NULL */
+      Ecore_Free_Cb free_func;
+   };
+   
+   EAPI Ecore_Sheap *ecore_sheap_new(Ecore_Compare_Cb compare, int size);
+   EAPI void ecore_sheap_destroy(Ecore_Sheap *heap);
+   EAPI int ecore_sheap_init(Ecore_Sheap *heap, Ecore_Compare_Cb compare, int size);
+   EAPI int ecore_sheap_free_cb_set(Ecore_Sheap *heap, Ecore_Free_Cb free_func);
+   EAPI int ecore_sheap_insert(Ecore_Sheap *heap, void *data);
+   EAPI void *ecore_sheap_extract(Ecore_Sheap *heap);
+   EAPI void *ecore_sheap_extreme(Ecore_Sheap *heap);
+   EAPI int ecore_sheap_change(Ecore_Sheap *heap, void *item, void *newval);
+   EAPI int ecore_sheap_compare_set(Ecore_Sheap *heap, Ecore_Compare_Cb compare);
+   EAPI void ecore_sheap_order_set(Ecore_Sheap *heap, char order);
+   EAPI void ecore_sheap_sort(Ecore_Sheap *heap);
+   
+   EAPI void *ecore_sheap_item(Ecore_Sheap *heap, int i);
+   
+   
+   typedef struct _ecore_string Ecore_String;
+   struct _ecore_string {
+      char *string;
+      int references;
+   };
+   
+   EAPI int ecore_string_init(void);
+   EAPI void ecore_string_shutdown(void);
+   EAPI const char *ecore_string_instance(const char *string);
+   EAPI void ecore_string_release(const char *string);
+   EAPI void ecore_string_hash_dump_graph(void);
+   EAPI void ecore_string_hash_dump_stats(void);
+   
+   
+   typedef struct _Ecore_Tree_Node Ecore_Tree_Node;
+# define ECORE_TREE_NODE(object) ((Ecore_Tree_Node *)object)
+   struct _Ecore_Tree_Node {
+      
+      /* The actual data for each node */
+      void *key;
+      void *value;
+      
+      /* Pointers to surrounding nodes */
+      Ecore_Tree_Node *parent;
+      Ecore_Tree_Node *left_child;
+      Ecore_Tree_Node *right_child;
+      
+      /* Book keeping information for quicker balancing of the tree */
+      int max_right;
+      int max_left;
+   };
+   
+   typedef struct _Ecore_Tree Ecore_Tree;
+# define ECORE_TREE(object) ((Ecore_Tree *)object)
+   struct _Ecore_Tree {
+      /* Nodes of the tree */
+      Ecore_Tree_Node *tree;
+      
+      /* Callback for comparing node values, default is direct comparison */
+      Ecore_Compare_Cb compare_func;
+      
+      /* Callback for freeing node data, default is NULL */
+      Ecore_Free_Cb free_value;
+      /* Callback for freeing node key, default is NULL */
+      Ecore_Free_Cb free_key;
+   };
+   
+   /* Some basic tree functions */
+   /* Allocate and initialize a new tree */
+   EAPI Ecore_Tree *ecore_tree_new(Ecore_Compare_Cb compare_func);
+   /* Initialize a new tree */
+   EAPI int ecore_tree_init(Ecore_Tree * tree, Ecore_Compare_Cb compare_func);
+   
+   /* Free the tree */
+   EAPI int ecore_tree_destroy(Ecore_Tree * tree);
+   /* Check to see if the tree has any nodes in it */
+   EAPI int ecore_tree_empty_is(Ecore_Tree * tree);
+   
+   /* Retrieve the value associated with key */
+   EAPI void *ecore_tree_get(Ecore_Tree * tree, const void *key);
+   EAPI Ecore_Tree_Node *ecore_tree_get_node(Ecore_Tree * tree, const void *key);
+   /* Retrieve the value of node with key greater than or equal to key */
+   EAPI void *ecore_tree_closest_larger_get(Ecore_Tree * tree, const void *key);
+   /* Retrieve the value of node with key less than or equal to key */
+   EAPI void *ecore_tree_closest_smaller_get(Ecore_Tree * tree, const void *key);
+   
+   /* Set the value associated with key to value */
+   EAPI int ecore_tree_set(Ecore_Tree * tree, void *key, void *value);
+   /* Remove the key from the tree */
+   EAPI int ecore_tree_remove(Ecore_Tree * tree, const void *key);
+   
+   /* Add a node to the tree */
+   EAPI int ecore_tree_node_add(Ecore_Tree * tree, Ecore_Tree_Node * node);
+   /* Remove a node from the tree */
+   EAPI int ecore_tree_node_remove(Ecore_Tree * tree, Ecore_Tree_Node * node);
+   
+   /* For each node in the tree perform the for_each_func function */
+   /* For this one pass in the node */
+   EAPI int ecore_tree_for_each_node(Ecore_Tree * tree, Ecore_For_Each for_each_func,
+                                    void *user_data);
+   /* And here pass in the node's value */
+   EAPI int ecore_tree_for_each_node_value(Ecore_Tree * tree,
+                                          Ecore_For_Each for_each_func,
+                                          void *user_data);
+   
+   /* Some basic node functions */
+   /* Initialize a node */
+   EAPI int ecore_tree_node_init(Ecore_Tree_Node * new_node);
+   /* Allocate and initialize a new node */
+   EAPI Ecore_Tree_Node *ecore_tree_node_new(void);
+   /* Free the desired node */
+   EAPI int ecore_tree_node_destroy(Ecore_Tree_Node * node, 
+                  Ecore_Free_Cb free_value, Ecore_Free_Cb free_key);
+   
+   /* Set the node's key to key */
+   EAPI int ecore_tree_node_key_set(Ecore_Tree_Node * node, void *key);
+   /* Retrieve the key in node */
+   EAPI void *ecore_tree_node_key_get(Ecore_Tree_Node * node);
+   
+   /* Set the node's value to value */
+   EAPI int ecore_tree_node_value_set(Ecore_Tree_Node * node, void *value);
+   /* Retrieve the value in node */
+   EAPI void *ecore_tree_node_value_get(Ecore_Tree_Node * node);
+   
+   /* Add a function to free the data stored in nodes */
+   EAPI int ecore_tree_free_value_cb_set(Ecore_Tree * tree, Ecore_Free_Cb free_value);
+   /* Add a function to free the keys stored in nodes */
+   EAPI int ecore_tree_free_key_cb_set(Ecore_Tree * tree, Ecore_Free_Cb free_key);
+
+
+   EAPI Ecore_Strbuf * ecore_strbuf_new(void);
+   EAPI void ecore_strbuf_free(Ecore_Strbuf *buf);
+   EAPI void ecore_strbuf_append(Ecore_Strbuf *buf, const char *str);
+   EAPI void ecore_strbuf_append_char(Ecore_Strbuf *buf, char c);
+   EAPI void ecore_strbuf_insert(Ecore_Strbuf *buf, const char *str, 
+                                 size_t pos);
+# define ecore_strbuf_prepend(buf, str) ecore_strbuf_insert(buf, str, 0)
+   EAPI const char * ecore_strbuf_string_get(Ecore_Strbuf *buf);
+   EAPI size_t ecore_strbuf_length_get(Ecore_Strbuf *buf);
+   EAPI int ecore_strbuf_replace(Ecore_Strbuf *buf, const char *str, 
+                                 const char *with, unsigned int n);
+# define ecore_strbuf_replace_first(buf, str, with) \
+       ecore_strbuf_replace(buf, str, with, 1)
+   EAPI int ecore_strbuf_replace_all(Ecore_Strbuf *buf, const char *str,
+                                     const char *with);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                         /* _ECORE_DATA_H */
diff --git a/src/lib/ecore/Ecore_Str.h b/src/lib/ecore/Ecore_Str.h
new file mode 100644 (file)
index 0000000..3a6476e
--- /dev/null
@@ -0,0 +1,63 @@
+#ifndef _ECORE_STR_H
+# define _ECORE_STR_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file Ecore_Str.h
+ * @brief Contains useful C string functions.
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+# ifdef __sgi
+#  define __FUNCTION__ "unknown"
+#  ifndef __cplusplus
+#   define inline
+#  endif
+# endif
+
+
+/* strlcpy implementation for libc's lacking it */
+EAPI size_t ecore_strlcpy(char *dst, const char *src, size_t siz);
+EAPI size_t ecore_strlcat(char *dst, const char *src, size_t siz);
+
+EAPI int ecore_str_has_prefix(const char *str, const char *prefix);
+
+EAPI int ecore_str_has_suffix(const char *str, const char *suffix);
+EAPI int ecore_str_has_extension(const char *str, const char *ext);
+
+EAPI char **ecore_str_split(const char *string, const char *delimiter, 
+                            int max_tokens);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif                         /* _ECORE_STR_H */
diff --git a/src/lib/ecore/Makefile.am b/src/lib/ecore/Makefile.am
new file mode 100644 (file)
index 0000000..4c692bb
--- /dev/null
@@ -0,0 +1,38 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+lib_LTLIBRARIES = libecore.la
+include_HEADERS = \
+Ecore.h \
+Ecore_Data.h \
+Ecore_Str.h
+
+libecore_la_SOURCES = \
+ecore.c \
+ecore_app.c \
+ecore_anim.c \
+ecore_events.c \
+ecore_exe.c \
+ecore_hash.c \
+ecore_idle_enterer.c \
+ecore_idle_exiter.c \
+ecore_idler.c \
+ecore_list.c \
+ecore_main.c \
+ecore_path.c \
+ecore_plugin.c \
+ecore_sheap.c \
+ecore_signal.c \
+ecore_str.c \
+ecore_strbuf.c \
+ecore_strings.c \
+ecore_time.c \
+ecore_timer.c \
+ecore_tree.c \
+ecore_value.c \
+ecore_poll.c \
+ecore_private.h
+
+libecore_la_LIBADD = @dlopen_libs@ @EVIL_LIBS@ @WIN32_LIBS@ -lm
+libecore_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
new file mode 100644 (file)
index 0000000..7ac32fa
--- /dev/null
@@ -0,0 +1,264 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
+#ifdef HAVE_LANGINFO_H
+# include <langinfo.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+static const char *_ecore_magic_string_get(Ecore_Magic m);
+static int _ecore_init_count = 0;
+
+int _ecore_fps_debug = 0;
+
+/** OpenBSD does not define CODESET
+ * FIXME ??
+ */
+
+#ifndef CODESET
+# define CODESET "INVALID"
+#endif
+
+/**
+ * Set up connections, signal handlers, sockets etc.
+ * @return 1 or greater on success, 0 otherwise
+ *
+ * This function sets up all singal handlers and the basic event loop. If it
+ * succeeds, 1 will be returned, otherwise 0 will be returned.
+ *
+ * @code
+ * #include <Ecore.h>
+ *
+ * int main(int argc, char **argv)
+ * {
+ *   if (!ecore_init())
+ *   {
+ *     printf("ERROR: Cannot init Ecore!\n");
+ *     return -1;
+ *   }
+ *   ecore_main_loop_begin();
+ *   ecore_shutdown();
+ * }
+ * @endcode
+ */
+EAPI int
+ecore_init(void)
+{
+   if (++_ecore_init_count == 1)
+     {
+#ifdef HAVE_LOCALE_H
+       setlocale(LC_CTYPE, "");
+#endif
+       /*
+       if (strcmp(nl_langinfo(CODESET), "UTF-8"))
+         {
+            printf("WARNING: not a utf8 locale!\n");
+         }
+        */
+       if (getenv("ECORE_FPS_DEBUG")) _ecore_fps_debug = 1;
+       if (_ecore_fps_debug) _ecore_fps_debug_init();
+       _ecore_signal_init();
+       _ecore_exe_init();
+     }
+
+   return _ecore_init_count;
+}
+
+/**
+ * Shut down connections, signal handlers sockets etc.
+ *
+ * This function shuts down all things set up in ecore_init() and cleans up all
+ * event queues, handlers, filters, timers, idlers, idle enterers/exiters
+ * etc. set up after ecore_init() was called.
+ *
+ * Do not call this function from any callback that may be called from the main
+ * loop, as the main loop will then fall over and not function properly.
+ */
+EAPI int
+ecore_shutdown(void)
+{
+   if (--_ecore_init_count)
+      return _ecore_init_count;
+
+   if (_ecore_fps_debug) _ecore_fps_debug_shutdown();
+   _ecore_poller_shutdown();
+   _ecore_animator_shutdown();
+   _ecore_exe_shutdown();
+   _ecore_idle_enterer_shutdown();
+   _ecore_idle_exiter_shutdown();
+   _ecore_idler_shutdown();
+   _ecore_timer_shutdown();
+   _ecore_event_shutdown();
+   _ecore_main_shutdown();
+   _ecore_signal_shutdown();
+
+   return _ecore_init_count;
+}
+
+EAPI void
+_ecore_magic_fail(void *d, Ecore_Magic m, Ecore_Magic req_m, const char *fname)
+{
+   fprintf(stderr,
+          "\n"
+          "*** ECORE ERROR: Ecore Magic Check Failed!!!\n"
+          "*** IN FUNCTION: %s()\n", fname);
+   if (!d)
+     fprintf(stderr, "  Input handle pointer is NULL!\n");
+   else if (m == ECORE_MAGIC_NONE)
+     fprintf(stderr, "  Input handle has already been freed!\n");
+   else if (m != req_m)
+     fprintf(stderr, "  Input handle is wrong type\n"
+                    "    Expected: %08x - %s\n"
+                    "    Supplied: %08x - %s\n",
+            (unsigned int)req_m, _ecore_magic_string_get(req_m),
+            (unsigned int)m, _ecore_magic_string_get(m));
+   fprintf(stderr,
+          "*** NAUGHTY PROGRAMMER!!!\n"
+          "*** SPANK SPANK SPANK!!!\n"
+          "*** Now go fix your code. Tut tut tut!\n"
+          "\n");
+   if (getenv("ECORE_ERROR_ABORT")) abort();
+}
+
+static const char *
+_ecore_magic_string_get(Ecore_Magic m)
+{
+   switch (m)
+     {
+      case ECORE_MAGIC_NONE:
+       return "None (Freed Object)";
+       break;
+      case ECORE_MAGIC_EXE:
+       return "Ecore_Exe (Executable)";
+       break;
+      case ECORE_MAGIC_TIMER:
+       return "Ecore_Timer (Timer)";
+       break;
+      case ECORE_MAGIC_IDLER:
+       return "Ecore_Idler (Idler)";
+       break;
+      case ECORE_MAGIC_IDLE_ENTERER:
+       return "Ecore_Idle_Enterer (Idler Enterer)";
+       break;
+      case ECORE_MAGIC_IDLE_EXITER:
+       return "Ecore_Idle_Exiter (Idler Exiter)";
+       break;
+      case ECORE_MAGIC_FD_HANDLER:
+       return "Ecore_Fd_Handler (Fd Handler)";
+       break;
+      case ECORE_MAGIC_EVENT_HANDLER:
+       return "Ecore_Event_Handler (Event Handler)";
+       break;
+      case ECORE_MAGIC_EVENT:
+       return "Ecore_Event (Event)";
+       break;
+      default:
+       return "<UNKNOWN>";
+     };
+   return "<UNKNOWN>";
+}
+
+/* fps debug calls - for debugging how much time your app actually spends */
+/* "running" (and the inverse being time spent running)... this does not */
+/* account for other apps and multitasking... */
+
+static int _ecore_fps_debug_init_count = 0;
+static int _ecore_fps_debug_fd = -1;
+unsigned int *_ecore_fps_runtime_mmap = NULL;
+
+void
+_ecore_fps_debug_init(void)
+{
+   char  buf[4096];
+   char *tmp;
+   int   pid;
+
+   _ecore_fps_debug_init_count++;
+   if (_ecore_fps_debug_init_count > 1) return;
+
+#ifndef HAVE_EVIL
+   tmp = "/tmp";
+#else
+   tmp = (char *)evil_tmpdir_get ();
+#endif /* HAVE_EVIL */
+   pid = (int)getpid();
+   snprintf(buf, sizeof(buf), "%s/.ecore_fps_debug-%i", tmp, pid);
+   _ecore_fps_debug_fd = open(buf, O_CREAT | O_TRUNC | O_RDWR, 0644);
+   if (_ecore_fps_debug_fd < 0)
+     {
+       unlink(buf);
+       _ecore_fps_debug_fd = open(buf, O_CREAT | O_TRUNC | O_RDWR, 0644);
+     }
+   if (_ecore_fps_debug_fd >= 0)
+     {
+       unsigned int zero = 0;
+
+       write(_ecore_fps_debug_fd, &zero, sizeof(unsigned int));
+       _ecore_fps_runtime_mmap = mmap(NULL, sizeof(unsigned int),
+                                      PROT_READ | PROT_WRITE,
+                                      MAP_SHARED,
+                                      _ecore_fps_debug_fd, 0);
+       if (_ecore_fps_runtime_mmap == MAP_FAILED)
+         _ecore_fps_runtime_mmap = NULL;
+     }
+}
+
+void
+_ecore_fps_debug_shutdown(void)
+{
+   _ecore_fps_debug_init_count--;
+   if (_ecore_fps_debug_init_count > 0) return;
+   if (_ecore_fps_debug_fd >= 0)
+     {
+       char buf[4096];
+        char *tmp;
+        int   pid;
+
+#ifndef HAVE_EVIL
+   tmp = "/tmp";
+#else
+   tmp = (char *)evil_tmpdir_get ();
+#endif /* HAVE_EVIL */
+   pid = (int)getpid();
+       snprintf(buf, sizeof(buf), "%s/.ecore_fps_debug-%i", tmp, pid);
+       unlink(buf);
+       if (_ecore_fps_runtime_mmap)
+         {
+            munmap(_ecore_fps_runtime_mmap, sizeof(int));
+            _ecore_fps_runtime_mmap = NULL;
+         }
+       close(_ecore_fps_debug_fd);
+       _ecore_fps_debug_fd = -1;
+     }
+}
+
+void
+_ecore_fps_debug_runtime_add(double t)
+{
+   if ((_ecore_fps_debug_fd >= 0) &&
+       (_ecore_fps_runtime_mmap))
+     {
+       unsigned int tm;
+
+       tm = (unsigned int)(t * 1000000.0);
+       /* i know its not 100% theoretically guaranteed, but i'd say a write */
+       /* of an int could be considered atomic for all practical purposes */
+       /* oh and since this is cumulative, 1 second = 1,000,000 ticks, so */
+       /* this can run for about 4294 seconds becore looping. if you are */
+       /* doing performance testing in one run for over an hour... well */
+       /* time to restart or handle a loop condition :) */
+       *(_ecore_fps_runtime_mmap) += tm;
+     }
+}
diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c
new file mode 100644 (file)
index 0000000..7c24813
--- /dev/null
@@ -0,0 +1,168 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static int _ecore_animator(void *data);
+
+static Ecore_Timer    *timer = NULL;
+static int             animators_delete_me = 0;
+static Ecore_Animator *animators = NULL;
+static double          animators_frametime = 1.0 / 30.0;
+
+/**
+ * Add a animator to tick off at every animaton tick during main loop execution.
+ * @param func The function to call when it ticks off
+ * @param data The data to pass to the function
+ * @return A handle to the new animator
+ * @ingroup Ecore_Animator_Group
+ * 
+ * This function adds a animator and returns its handle on success and NULL on
+ * failure. The function @p func will be called every N seconds where N is the
+ * frametime interval set by ecore_animator_frametime_set(). The function will
+ * be passed the @p data pointer as its parameter.
+ * 
+ * When the animator @p func is called, it must return a value of either 1 or 0. 
+ * If it returns 1 (or ECORE_CALLBACK_RENEW), it will be called again at the 
+ * next tick, or if it returns 0 (or ECORE_CALLBACK_CANCEL) it will be deleted 
+ * automatically making any references/handles for it invalid.
+ */
+EAPI Ecore_Animator *
+ecore_animator_add(int (*func) (void *data), const void *data)
+{
+   Ecore_Animator *animator;
+   
+   if (!func) return NULL;
+   animator = calloc(1, sizeof(Ecore_Animator));
+   if (!animator) return NULL;
+   ECORE_MAGIC_SET(animator, ECORE_MAGIC_ANIMATOR);
+   animator->func = func;
+   animator->data = (void *)data;
+   animators = _ecore_list2_append(animators, animator);
+   if (!timer)
+     timer = ecore_timer_add(animators_frametime, _ecore_animator, NULL);
+   return animator;
+}
+
+/**
+ * Delete the specified animator from the animator list.
+ * @param animator The animator to delete
+ * @return The data pointer set for the animator
+ * @ingroup Ecore_Animator_Group
+ * 
+ * Delete the specified @p aqnimator from the set of animators that are executed
+ * during main loop execution. This function returns the data parameter that
+ * was being passed to the callback on success, or NULL on failure. After this
+ * call returns the specified animator object @p animator is invalid and should not
+ * be used again. It will not get called again after deletion.
+ */
+EAPI void *
+ecore_animator_del(Ecore_Animator *animator)
+{
+   if (!ECORE_MAGIC_CHECK(animator, ECORE_MAGIC_ANIMATOR))
+     {
+       ECORE_MAGIC_FAIL(animator, ECORE_MAGIC_ANIMATOR,
+                        "ecore_animator_del");
+       return NULL;
+     }
+   if (animator->delete_me) return animator->data;
+   animator->delete_me = 1;
+   animators_delete_me++;
+   return animator->data;
+}
+
+/**
+ * Set the animator call interval in seconds.
+ * @param frametime The time in seconds in between animator ticks.
+ * 
+ * This function sets the time interval (in seconds) inbetween animator ticks.
+ */
+EAPI void
+ecore_animator_frametime_set(double frametime)
+{
+   if (frametime < 0.0) frametime = 0.0;
+   if (animators_frametime == frametime) return;
+   animators_frametime = frametime;
+   if (timer)
+     {
+       ecore_timer_del(timer);
+       timer = NULL;
+     }
+   if (animators)
+     timer = ecore_timer_add(animators_frametime, _ecore_animator, NULL);
+}
+
+/**
+ * Get the animator call interval in seconds.
+ * @return The time in second in between animator ticks.
+ * 
+ * this function retrieves the time inbetween animator ticks, in seconds.
+ */
+EAPI double
+ecore_animator_frametime_get(void)
+{
+   return animators_frametime;
+}
+
+void
+_ecore_animator_shutdown(void)
+{
+   if (timer)
+     {
+       ecore_timer_del(timer);
+       timer = NULL;
+     } 
+   while (animators)
+     {
+       Ecore_Animator *animator;
+       
+       animator = animators;
+       animators = _ecore_list2_remove(animators, animator);
+       ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
+       free(animator);
+     }
+}
+
+static int
+_ecore_animator(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+
+   for (l = (Ecore_List2 *)animators; l;)
+     {
+       Ecore_Animator *animator;
+       
+       animator = (Ecore_Animator *)l;
+       l = l->next;
+       if (!animator->delete_me)
+         {
+            if (!animator->func(animator->data))
+              {
+                 animator->delete_me = 1;
+                 animators_delete_me++;
+              }
+         }
+     }
+   if (animators_delete_me)
+     {
+       for (l = (Ecore_List2 *)animators; l;)
+         {
+            Ecore_Animator *animator;
+            
+            animator = (Ecore_Animator *)l;
+            l = l->next;
+            if (animator->delete_me)
+              {
+                 animators = _ecore_list2_remove(animators, animator);
+                 ECORE_MAGIC_SET(animator, ECORE_MAGIC_NONE);
+                 free(animator);
+                 animators_delete_me--;
+                 if (animators_delete_me == 0) break;
+              }
+         }
+     }
+   if (!animators)
+     {
+       timer = NULL;
+       return 0;
+     }
+   return 1;
+}
diff --git a/src/lib/ecore/ecore_app.c b/src/lib/ecore/ecore_app.c
new file mode 100644 (file)
index 0000000..5f11809
--- /dev/null
@@ -0,0 +1,61 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static int app_argc = 0;
+static char **app_argv = NULL;
+
+/**
+ * Set up the programs command-line arguments.
+ * @param argc The same as passed as argc to the programs main() function
+ * @param argv The same as passed as argv to the programs main() function
+ * 
+ * A call to this function will store the programs command-line arguments
+ * for later use by ecore_app_restart() or ecore_app_args_get().
+ */
+EAPI void
+ecore_app_args_set(int argc, const char **argv)
+{
+   if ((argc < 1) ||
+       (!argv)) return;
+   app_argc = argc;
+   app_argv = (char **)argv;
+}
+
+/**
+ * Return the programs stored command-line arguments.
+ * @param argc A pointer to the return value to hold argc
+ * @param argv A pointer to the return value to hold argv
+ * 
+ * When called, this funciton returns the arguments for the program stored by
+ * ecore_app_args_set(). The integer pointed to by @p argc will be filled, if
+ * the pointer is not NULL, and the string array pointer @p argv will be filled
+ * also if the pointer is not NULL. The values they are filled with will be the
+ * same set by ecore_app_args_set().
+ */
+EAPI void
+ecore_app_args_get(int *argc, char ***argv)
+{
+   if (argc) *argc = app_argc;
+   if (argv) *argv = app_argv;
+}
+
+/**
+ * Restart the program executable with the command-line arguments stored.
+ * 
+ * This function will restart & re-execute this program in place of itself
+ * using the command-line arguments stored by ecore_app_args_set(). This is
+ * an easy way for a program to restart itself for cleanup purposes,
+ * configuration reasons or in the event of a crash.
+ */
+EAPI void
+ecore_app_restart(void)
+{
+   char *args[4096];
+   int i;
+   
+   if ((app_argc < 1) || (!app_argv)) return;
+   if (app_argc >= 4096) return;
+   for (i = 0; i < app_argc; i++) args[i] = app_argv[i];
+   args[i] = NULL;
+   execvp(app_argv[0], args);
+}
diff --git a/src/lib/ecore/ecore_events.c b/src/lib/ecore/ecore_events.c
new file mode 100644 (file)
index 0000000..c33b244
--- /dev/null
@@ -0,0 +1,497 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static int                  events_num = 0;
+static Ecore_Event         *events = NULL;
+
+static Ecore_Event_Handler **event_handlers = NULL;
+static int                   event_handlers_num = 0;
+static int                   event_handlers_alloc_num = 0;
+static Ecore_List2_Data     *event_handlers_delete_list = NULL;
+
+static Ecore_Event_Filter  *event_filters = NULL;
+static int                  event_filters_delete_me = 0;
+
+static int                  event_id_max = ECORE_EVENT_COUNT;
+
+static int                  ecore_raw_event_type = ECORE_EVENT_NONE;
+static void                *ecore_raw_event_event =  NULL;
+
+
+/**
+ * Add an event handler.
+ * @param type The type of the event this handler will get called for
+ * @param func The function to call when the event is found in the queue
+ * @param data A data pointer to pass to the called function @p func
+ * @return A new Event handler, or NULL on failure
+ * 
+ * Add an event handler to the list of handlers. This will, on success, return
+ * a handle to the event handler object that was created, that can be used
+ * later to remove the handler using ecore_event_handler_del(). The @p type 
+ * parameter is the iteger of the event type that will trigger this callback
+ * to be called. The callback @p func is called when this event is processed
+ * and will be passed the event type, a pointer to the private event
+ * structure that is specific to that event type, and a data pointer that is 
+ * provided in this call as the @p data parameter.
+ * 
+ * When the callback @p func is called, it must return 1 or 0. If it returns 
+ * 1 (or ECORE_CALLBACK_RENEW), It will keep being called as per normal, for 
+ * each handler set up for that event type. If it returns 0 (or 
+ * ECORE_CALLBACK_CANCEL), it will cease processing handlers for that particular
+ * event, so all handler set to handle that event type that have not already 
+ * been called, will not be.
+ */
+EAPI Ecore_Event_Handler *
+ecore_event_handler_add(int type, int (*func) (void *data, int type, void *event), const void *data)
+{
+   Ecore_Event_Handler *eh;
+
+   if (!func) return NULL;
+   if ((type <= ECORE_EVENT_NONE) || (type >= event_id_max)) return NULL;
+   eh = calloc(1, sizeof(Ecore_Event_Handler));
+   if (!eh) return NULL;
+   ECORE_MAGIC_SET(eh, ECORE_MAGIC_EVENT_HANDLER);
+   eh->type = type;
+   eh->func = func;
+   eh->data = (void *)data;
+   if (type >= (event_handlers_num - 1))
+     {
+       int p_alloc_num;
+       
+       p_alloc_num = event_handlers_alloc_num;
+       event_handlers_num = type + 1;
+       if (event_handlers_num > event_handlers_alloc_num)
+         {
+            Ecore_Event_Handler **new_handlers;
+            int i;
+            
+            event_handlers_alloc_num = ((event_handlers_num + 16) / 16) * 16;
+            new_handlers = realloc(event_handlers, event_handlers_alloc_num * sizeof(Ecore_Event_Handler *));
+            if (!new_handlers)
+              {
+                 free(eh);
+                 return NULL;
+              }
+            event_handlers = new_handlers;
+            for (i = p_alloc_num; i < event_handlers_alloc_num; i++)
+              event_handlers[i] = NULL;
+         }
+     }
+   event_handlers[type] = _ecore_list2_append(event_handlers[type], eh);
+   return eh;
+}
+
+/**
+ * Delete an event handler.
+ * @param event_handler Event handler handle to delete
+ * @return Data passed to handler
+ * 
+ * Delete a specified event handler from the handler list. On success this will
+ * delete the event handler and return the pointer passed as @p data when the
+ * handler was added by ecore_event_handler_add(). On failure NULL will be
+ * returned. Once a handler is deleted it will no longer be called.
+ */
+EAPI void *
+ecore_event_handler_del(Ecore_Event_Handler *event_handler)
+{
+   Ecore_List2_Data *node;
+   
+   if (!ECORE_MAGIC_CHECK(event_handler, ECORE_MAGIC_EVENT_HANDLER)) 
+     {
+       ECORE_MAGIC_FAIL(event_handler, ECORE_MAGIC_EVENT_HANDLER,
+                        "ecore_event_handler_del");
+       return NULL;
+     }
+   event_handler->delete_me = 1;
+   node = calloc(1, sizeof(Ecore_List2_Data));
+   node->data = event_handler;
+   event_handlers_delete_list = _ecore_list2_append(event_handlers_delete_list, node);
+   return event_handler->data;
+}
+
+static void 
+_ecore_event_generic_free (void *data __UNUSED__, void *event)
+{
+   free (event);
+}
+
+/**
+ * Add an event to the event queue.
+ * @param type The event type to add to the end of the event queue
+ * @param ev The private data structure for this event type
+ * @param func_free The function to be called to free this private structure
+ * @param data The data pointer to be passed to the free function
+ * @return A Handle for that event
+ * 
+ * On success this function returns a handle to an event on the event queue, or
+ * NULL if it fails. If it succeeds, an event of type @p type will be added
+ * to the queue for processing by event handlers added by 
+ * ecore_event_handler_add(). The @p ev parameter will be a pointer to the event
+ * private data that is specific to that event type. When the event is no
+ * longer needed, @p func_free will be called and passed the private structure
+ * pointer for cleaning up. If @p func_free is NULL, free() will be called
+ * with the private structure pointer.
+ * func_free is passed @p data as its data parameter.
+ */
+EAPI Ecore_Event *
+ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), void *data)
+{
+/*   if (!ev) return NULL;*/
+   if (type <= ECORE_EVENT_NONE) return NULL;
+   if (type >= event_id_max) return NULL;
+   if ((ev) && (!func_free)) func_free = _ecore_event_generic_free;
+   return _ecore_event_add(type, ev, func_free, data);
+}
+
+/**
+ * Delete an event from the queue.
+ * @param event The event handle to delete
+ * @return The data pointer originally set for the event free function
+ * 
+ * This deletes the event @p event from the event queue, and returns the
+ * @p data parameer originally set when adding it with ecore_event_add(). This
+ * does not immediately call the free function, and it may be called later on
+ * cleanup, and so if the free function depends on the data pointer to work,
+ * you should defer cleaning of this till the free function is called later.
+ */
+EAPI void *
+ecore_event_del(Ecore_Event *event)
+{
+   if (!ECORE_MAGIC_CHECK(event, ECORE_MAGIC_EVENT)) 
+     {
+       ECORE_MAGIC_FAIL(event, ECORE_MAGIC_EVENT, "ecore_event_del");  
+       return NULL;
+     }
+   event->delete_me = 1;
+   return event->data;
+}
+
+/**
+ * Allocate a new event type id sensibly and return the new id.
+ * @return A new event type id.
+ * 
+ * This function allocates a new event type id and returns it. Once an event 
+ * type has been allocated it can never be de-allocated during the life of
+ * the program. There is no guarantee of the contents of this event ID, or how
+ * it is calculated, except that the ID will be unique to the current instance
+ * of the process.
+ */
+EAPI int
+ecore_event_type_new(void)
+{
+   event_id_max++;
+   return event_id_max - 1;
+}
+
+/**
+ * Add a filter the current event queue.
+ * @param func_start Function to call just before filtering and return data
+ * @param func_filter Function to call on each event
+ * @param func_end Function to call after the queu has been filtered
+ * @param data Data to pass to the filter functions
+ * @return A filter handle
+ * 
+ * This adds a filter to call callbacks to loop through the event queue and 
+ * filter events out of the queue. On failure NULL is returned. On success a
+ * Filter handle is returned. Filters are called on the queue just before
+ * Event handler processing to try and remove redundant events. Just as
+ * processing starts @p func_start is called and passed the @p data pointer.
+ * This function returns a pointer that is used as loop_data that is now passed to
+ * @p func_filter as loop_data. @p func_filter is also passed @p data and the
+ * event type and private event structure. If this callback returns 0, the
+ * event is removed from the queue. If it returns 1, the event is kept. When
+ * processing is finished @p func_end is called and is passed the loop_data
+ * and @p data pointer to clean up.
+ */
+EAPI Ecore_Event_Filter *
+ecore_event_filter_add(void * (*func_start) (void *data), int (*func_filter) (void *data, void *loop_data, int type, void *event), void (*func_end) (void *data, void *loop_data), const void *data)
+{
+   Ecore_Event_Filter *ef;
+   
+   if (!func_filter) return NULL;
+   ef = calloc(1, sizeof(Ecore_Event_Filter));
+   if (!ef) return NULL;
+   ECORE_MAGIC_SET(ef, ECORE_MAGIC_EVENT_FILTER);
+   ef->func_start = func_start;
+   ef->func_filter = func_filter;
+   ef->func_end = func_end;
+   ef->data = (void *)data;
+   event_filters = _ecore_list2_append(event_filters, ef);
+   return ef;
+}
+
+/**
+ * Delete an event filter.
+ * @param ef The event filter handle
+ * @return The data set for the filter
+ * 
+ * Delete a filter that has been added by its @p ef handle. On success this
+ * will return the data pointer set when this filter was added. On failure
+ * NULL is returned.
+ */
+EAPI void *
+ecore_event_filter_del(Ecore_Event_Filter *ef)
+{   
+   if (!ECORE_MAGIC_CHECK(ef, ECORE_MAGIC_EVENT_FILTER))
+     {
+       ECORE_MAGIC_FAIL(ef, ECORE_MAGIC_EVENT_FILTER, "ecore_event_filter_del");
+       return NULL;
+     }
+   ef->delete_me = 1;
+   event_filters_delete_me = 1;
+   return ef->data;
+}
+
+/**
+ * Return the current event type being handled.
+ * @return The current event type being handled if inside a handler callback
+ * 
+ * If the program is currently inside an Ecore event handler callback this
+ * will return the type of the current event being processed. If Ecore is
+ * not inside an event handler, ECORE_EVENT_NONE is returned.
+ * 
+ * This is useful when certain Ecore modules such as Ecore_Evas "swallow"
+ * events and not all the original information is passed on. In special cases
+ * this extra information may be useful or needed and using this call can let
+ * the program know if the event type being handled is one it wants to get more
+ * information about.
+ */
+EAPI int
+ecore_event_current_type_get(void)
+{
+   return ecore_raw_event_type;
+}
+
+/**
+ * Return the current event type pointer handled.
+ * @return The current event pointer being handled if inside a handler callback
+ * 
+ * If the program is currently inside an Ecore event handler callback this
+ * will return the pointer of the current event being processed. If Ecore is
+ * not inside an event handler, NULL will be returned.
+ * 
+ * This is useful when certain Ecore modules such as Ecore_Evas "swallow"
+ * events and not all the original information is passed on. In special cases
+ * this extra information may be useful or needed and using this call can let
+ * the program access the event data if the type of the event is handled by
+ * the program.
+ */
+EAPI void *
+ecore_event_current_event_get(void)
+{
+   return ecore_raw_event_event;
+}
+
+void
+_ecore_event_shutdown(void)
+{
+   int i;
+   
+   while (events) _ecore_event_del(events);
+   for (i = 0; i < event_handlers_num; i++)
+     {
+       while (event_handlers[i])
+         {
+            Ecore_Event_Handler *eh;
+            
+            eh = event_handlers[i];
+            event_handlers[i] = _ecore_list2_remove(event_handlers[i], eh);
+            ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
+            free(eh);
+         }
+     }
+   while (event_handlers_delete_list)
+     {
+       Ecore_List2_Data *ehd;
+       
+       ehd = event_handlers_delete_list;
+       event_handlers_delete_list = _ecore_list2_remove(event_handlers_delete_list, ehd);
+       free(ehd);
+     }
+   if (event_handlers) free(event_handlers);
+   event_handlers = NULL;
+   event_handlers_num = 0;
+   event_handlers_alloc_num = 0;
+   while (event_filters)
+     {
+       Ecore_Event_Filter *ef;
+       
+       ef = event_filters;
+       event_filters = _ecore_list2_remove(event_filters, ef);   
+       ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
+       free(ef);
+     }
+   event_filters_delete_me = 0;
+}
+
+int
+_ecore_event_exist(void)
+{
+   if (events) return 1;
+   return 0;
+}
+
+Ecore_Event *
+_ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), void *data)
+{
+   Ecore_Event *e;
+   
+   e = calloc(1, sizeof(Ecore_Event));
+   if (!e) return NULL;
+   ECORE_MAGIC_SET(e, ECORE_MAGIC_EVENT);
+   e->type = type;
+   e->event = ev;
+   e->func_free = func_free;
+   e->data = data;
+   events = _ecore_list2_append(events, e);
+   events_num++;
+   return e;
+}
+
+void *
+_ecore_event_del(Ecore_Event *event)
+{
+   void *data;
+   
+   data = event->data;
+   if (event->func_free) event->func_free(event->data, event->event);
+   events = _ecore_list2_remove(events, event);
+   ECORE_MAGIC_SET(event, ECORE_MAGIC_NONE);
+   free(event);
+   events_num--;
+   return data;
+}
+
+void
+_ecore_event_call(void)
+{
+   Ecore_List2 *l, *ll;
+   Ecore_Event *e;
+   Ecore_Event_Filter *ef;
+   Ecore_Event_Handler *eh;
+   Ecore_List2_Data *ehd;
+   int handle_count;
+
+   for (l = (Ecore_List2 *)event_filters; l; l = l->next)
+     {
+       ef = (Ecore_Event_Filter *)l;
+       if (!ef->delete_me)
+         {
+            if (ef->func_start)
+              ef->loop_data = ef->func_start(ef->data);
+            for (ll = (Ecore_List2 *)events; ll; ll = ll->next)
+              {
+                 e = (Ecore_Event *)ll;
+                 if (!ef->func_filter(ef->loop_data, ef->data,
+                                      e->type, e->event))
+                   {
+//                    printf("FILTER SAID TO DEL ev %p\n", e->event);
+                      ecore_event_del(e);
+                   }
+              }
+            if (ef->func_end)
+              ef->func_end(ef->data, ef->loop_data);
+         }
+     }
+   if (event_filters_delete_me)
+     {
+       for (l = (Ecore_List2 *)event_filters; l;)
+         {
+            ef = (Ecore_Event_Filter *)l;
+            l = l->next;
+            if (ef->delete_me)
+              {
+                 event_filters = _ecore_list2_remove(event_filters, ef);
+                 ECORE_MAGIC_SET(ef, ECORE_MAGIC_NONE);
+                 free(ef);
+              }
+         }
+       event_filters_delete_me = 0;
+     }
+//   printf("EVENT BATCH...\n");
+   for (l = (Ecore_List2 *)events; l; l = l->next)
+     {
+       e = (Ecore_Event *)l;
+       if (!e->delete_me)
+         {
+            handle_count = 0;
+            ecore_raw_event_type = e->type;
+            ecore_raw_event_event = e->event;
+//          printf("HANDLE ev type %i, %p\n", e->type, e->event);
+            if ((e->type >= 0) && (e->type < event_handlers_num))
+              {
+                 for (ll = (Ecore_List2 *)event_handlers[e->type]; ll; ll = ll->next)
+                   {
+                      eh = (Ecore_Event_Handler *)ll;
+                      if (!eh->delete_me)
+                        {
+                           handle_count++;
+                           if (!eh->func(eh->data, e->type, e->event))
+                             break;  /* 0 == "call no further handlers" */
+                        }
+                   }
+              }
+            /* if no handlers were set for EXIT signal - then default is */
+            /* to quit the main loop */
+            if ((e->type == ECORE_EVENT_SIGNAL_EXIT) && (handle_count == 0))
+              ecore_main_loop_quit();
+         }
+     }
+//   printf("EVENT BATCH DONE\n");
+   ecore_raw_event_type = ECORE_EVENT_NONE;
+   ecore_raw_event_event = NULL;
+   
+   while (events) _ecore_event_del(events);
+   while (event_handlers_delete_list)
+     {
+       ehd = event_handlers_delete_list;
+       eh = ehd->data;
+       event_handlers[eh->type] = _ecore_list2_remove(event_handlers[eh->type], eh);
+       event_handlers_delete_list = _ecore_list2_remove(event_handlers_delete_list, ehd);
+       ECORE_MAGIC_SET(eh, ECORE_MAGIC_NONE);
+       free(eh);
+       free(ehd);
+     }
+}
+
+EAPI void *
+_ecore_event_signal_user_new(void)
+{
+   Ecore_Event_Signal_User *e;
+   
+   e = calloc(1, sizeof(Ecore_Event_Signal_User));
+   return e;
+}
+
+void *
+_ecore_event_signal_hup_new(void)
+{
+   Ecore_Event_Signal_Hup *e;
+   
+   e = calloc(1, sizeof(Ecore_Event_Signal_Hup));
+   return e;
+}
+
+void *
+_ecore_event_signal_exit_new(void)
+{
+   Ecore_Event_Signal_Exit *e;
+   
+   e = calloc(1, sizeof(Ecore_Event_Signal_Exit));
+   return e;
+}
+
+void *
+_ecore_event_signal_power_new(void)
+{
+   Ecore_Event_Signal_Power *e;
+   
+   e = calloc(1, sizeof(Ecore_Event_Signal_Power));
+   return e;
+}
+
+void *
+_ecore_event_signal_realtime_new(void)
+{
+   return calloc(1, sizeof(Ecore_Event_Signal_Realtime));
+}
diff --git a/src/lib/ecore/ecore_exe.c b/src/lib/ecore/ecore_exe.c
new file mode 100644 (file)
index 0000000..ed32bce
--- /dev/null
@@ -0,0 +1,1634 @@
+#include <errno.h>
+#ifdef HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif /* HAVE_SYS_WAIT_H */
+#include "ecore_private.h"
+#include "Ecore.h"
+
+#ifndef _WIN32
+
+/* TODO: Something to let people build a command line and does auto escaping -
+ *
+ * ecore_exe_snprintf()
+ *
+ *   OR
+ *
+ * cmd = ecore_exe_comand_parameter_append(cmd, "firefox");
+ * cmd = ecore_exe_comand_parameter_append(cmd, "http://www.foo.com/bar.html?baz=yes");
+ * each parameter appended is one argument, and it gets escaped, quoted, and
+ * appended with a preceeding space.  The first is the command off course.
+ */
+
+struct _ecore_exe_dead_exe
+{
+   pid_t               pid;
+   char               *cmd;
+};
+
+static inline void  _ecore_exe_exec_it(const char *exe_cmd, Ecore_Exe_Flags flags);
+
+static int          _ecore_exe_data_generic_handler(void *data,
+                                                   Ecore_Fd_Handler *
+                                                   fd_handler,
+                                                   Ecore_Exe_Flags flags);
+static int          _ecore_exe_data_error_handler(void *data,
+                                                 Ecore_Fd_Handler *
+                                                 fd_handler);
+static int          _ecore_exe_data_read_handler(void *data,
+                                                Ecore_Fd_Handler * fd_handler);
+static int          _ecore_exe_data_write_handler(void *data,
+                                                 Ecore_Fd_Handler *
+                                                 fd_handler);
+static void         _ecore_exe_flush(Ecore_Exe * exe);
+static void         _ecore_exe_event_exe_data_free(void *data __UNUSED__,
+                                                  void *ev);
+static Ecore_Exe   *_ecore_exe_is_it_alive(pid_t pid);
+static int          _ecore_exe_make_sure_its_dead(void *data);
+static int          _ecore_exe_make_sure_its_really_dead(void *data);
+static Ecore_Exe_Event_Add *_ecore_exe_event_add_new(void);
+static void         _ecore_exe_event_add_free(void *data, void *ev);
+static void         _ecore_exe_dead_attach(Ecore_Exe *exe);
+
+EAPI int            ECORE_EXE_EVENT_ADD = 0;
+EAPI int            ECORE_EXE_EVENT_DEL = 0;
+EAPI int            ECORE_EXE_EVENT_DATA = 0;
+EAPI int            ECORE_EXE_EVENT_ERROR = 0;
+
+static Ecore_Exe   *exes = NULL;
+static const char  *shell = NULL;
+
+/* FIXME: This errno checking stuff should be put elsewhere for everybody to use.
+ * For now it lives here though, just to make testing easier.
+ */
+static int          _ecore_exe_check_errno(int result, const char *file, int line);
+
+#define E_IF_NO_ERRNO(result, foo, ok) \
+  while (((ok) = _ecore_exe_check_errno( (result) = (foo), __FILE__, __LINE__)) == -1)   sleep(1); \
+  if (ok)
+
+#define E_NO_ERRNO(result, foo, ok) \
+  while (((ok) = _ecore_exe_check_errno( (result) = (foo), __FILE__, __LINE__)) == -1)   sleep(1)
+
+#define E_IF_NO_ERRNO_NOLOOP(result, foo, ok) \
+  if (((ok) = _ecore_exe_check_errno( (result) = (foo), __FILE__, __LINE__)))
+
+static int
+_ecore_exe_check_errno(int result, const char *file, int line)
+{
+   int                 saved_errno = errno;
+
+   if (result == -1)
+     {
+       perror("*** errno reports ");
+/* What is currently supported -
+ *
+ *   pipe
+ *     EFAULT  Argument is not valid.
+ *     EMFILE  Too many file descriptors used by process.
+ *     ENFILE  Too many open files by system.
+ *   read
+ *     EAGAIN  No data now, try again.
+ *     EBADF   This is not an fd that can be read.
+ *     EFAULT  This is not a valid buffer.
+ *     EINTR   Interupted by signal, try again.
+ *     EINVAL  This is not an fd that can be read.
+ *     EIO     I/O error.
+ *     EISDIR  This is a directory, and cannot be read.
+ *     others  Depending on what sort of thing we are reading from.
+ *   close
+ *     EBADF   This is not an fd that can be closed.
+ *     EINTR   Interupted by signal, try again.
+ *     EIO     I/O error.
+ *   dup2
+ *     EBADF   This is not an fd that can be dup2'ed.
+ *     EBUSY   Race condition between open() and dup()
+ *     EINTR   Interupted by signal, try again.
+ *     EMFILE  Too many file descriptors used by process.
+ *   fcntl
+ *     EACCES, EAGAIN  Locked or mapped by something else, try again later.
+ *     EBADF   This is not an fd that can be fcntl'ed.
+ *     EDEADLK This will cause a deadlock.
+ *     EFAULT  This is not a valid lock.
+ *     EINTR   Interupted by signal, try again.
+ *     EINVAL  This is not a valid arg.
+ *     EMFILE  Too many file descriptors used by process.
+ *     ENOLCK  Problem getting a lock.
+ *     EPERM   Not allowed to do that.
+ *   fsync
+ *     EBADF   This is not an fd that is open for writing.
+ *     EINVAL, EROFS  This is not an fd that can be fsynced.
+ *     EIO     I/O error.
+ *
+ * How to use it -
+ *    int ok = 0;
+ *    int result;
+ *
+ *    E_IF_NO_ERRNO(result, foo(bar), ok)
+ *      {
+ *         E_IF_NO_ERRNO_NOLOOP(result, foo(bar), ok)
+ *            {
+ *            }
+ *      }
+ *
+ *   if (!ok)
+ *     {
+ *        // Something failed, cleanup.
+ *     }
+ */
+       switch (saved_errno)
+         {
+         case EACCES:
+         case EAGAIN:
+         case EINTR:
+            {                  /* Not now, try later. */
+               fprintf(stderr, "*** Must try again in %s @%u.\n", file, line);
+               result = -1;
+               break;
+            }
+
+         case EMFILE:
+         case ENFILE:
+         case ENOLCK:
+            {                  /* Low on resources. */
+               fprintf(stderr, "*** Low on resources in %s @%u.\n", file,
+                       line);
+               result = 0;
+               break;
+            }
+
+         case EIO:
+            {                  /* I/O error. */
+               fprintf(stderr, "*** I/O error in %s @%u.\n", file, line);
+               result = 0;
+               break;
+            }
+
+         case EFAULT:
+         case EBADF:
+         case EINVAL:
+         case EROFS:
+         case EISDIR:
+         case EDEADLK:
+         case EPERM:
+         case EBUSY:
+            {                  /* Programmer fucked up. */
+               fprintf(stderr,
+                       "*** NAUGHTY PROGRAMMER!!!\n"
+                       "*** SPANK SPANK SPANK!!!\n"
+                       "*** Now go fix your code in %s @%u. Tut tut tut!\n"
+                       "\n", file, line);
+               result = 0;
+               break;
+            }
+
+         default:
+            {                  /* Unsupported errno code, please add this one. */
+               fprintf(stderr,
+                       "*** NAUGHTY PROGRAMMER!!!\n"
+                       "*** SPANK SPANK SPANK!!!\n"
+                       "*** Unsupported errno code %d, please add this one.\n"
+                       "*** Now go fix your code in %s @%u, from %s @%u. Tut tut tut!\n"
+                       "\n", saved_errno, __FILE__, __LINE__, file, line);
+               result = 0;
+               break;
+            }
+         }
+     }
+   else                                /* Everything is fine. */
+      result = 1;
+
+   errno = saved_errno;
+   return result;
+}
+
+/**
+ * @defgroup Ecore_Exe_Basic_Group Process Spawning Functions
+ *
+ * Functions that deal with spawned processes.
+ */
+
+/**
+ * Spawns a child process.
+ *
+ * This is now just a thin wrapper around ecore_exe_pipe_run()
+ *
+ * @param   exe_cmd The command to run with @c /bin/sh.
+ * @param   data    Data to attach to the returned process handle.
+ * @return  A process handle to the spawned process.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI Ecore_Exe     *
+ecore_exe_run(const char *exe_cmd, const void *data)
+{
+/* I'm just being paranoid again, leaving in the original code in case there is a problem. */
+#if 0
+   Ecore_Exe          *exe;
+   pid_t               pid;
+
+   if (!exe_cmd)
+      return NULL;
+   pid = fork();
+   if (pid)
+     {
+       exe = calloc(1, sizeof(Ecore_Exe));
+       if (!exe)
+         {
+            kill(pid, SIGKILL);
+            return NULL;
+         }
+       ECORE_MAGIC_SET(exe, ECORE_MAGIC_EXE);
+       exe->pid = pid;
+       exe->data = (void *)data;
+       exe->cmd = strdup(exe_cmd);
+       exes = _ecore_list2_append(exes, exe);
+       return exe;
+     }
+   _ecore_exe_exec_it(exe_cmd, 0);
+   exit(127);
+   return NULL;
+#else
+   return ecore_exe_pipe_run(exe_cmd, 0, data);
+#endif
+}
+
+/**
+ * Spawns a child process with its stdin/out available for communication.
+ *
+ * This function forks and runs the given command using @c /bin/sh.
+ *
+ * Note that the process handle is only valid until a child process
+ * terminated event is received.  After all handlers for the child process
+ * terminated event have been called, the handle will be freed by Ecore.
+ *
+ * This function does the same thing as ecore_exe_run(), but also makes the
+ * standard in and/or out as well as stderr from the child process available
+ * for reading or writing.  To write use ecore_exe_send().  To read listen to
+ * ECORE_EXE_EVENT_DATA or ECORE_EXE_EVENT_ERROR events (set up handlers).
+ * Ecore may buffer read and error data until a newline character if asked
+ * for with the @p flags.  All data will be included in the events (newlines
+ * will be replaced with NULLS if line buffered).  ECORE_EXE_EVENT_DATA events
+ * will only happen if the process is run with ECORE_EXE_PIPE_READ enabled
+ * in the flags.  The same with the error version.  Writing will only be
+ * allowed with ECORE_EXE_PIPE_WRITE enabled in the flags.
+ *
+ * @param   exe_cmd The command to run with @c /bin/sh.
+ * @param   flags   The flag parameters for how to deal with inter-process I/O
+ * @param   data    Data to attach to the returned process handle.
+ * @return  A process handle to the spawned process.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI Ecore_Exe     *
+ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags flags, const void *data)
+{
+   Ecore_Exe          *exe = NULL;
+   int                 statusPipe[2] = { -1, -1 };
+   int                 errorPipe[2] = { -1, -1 };
+   int                 readPipe[2] = { -1, -1 };
+   int                 writePipe[2] = { -1, -1 };
+   int                 n = 0;
+   int                 ok = 1;
+   int                 result;
+
+   if (!exe_cmd) return NULL;
+   exe = calloc(1, sizeof(Ecore_Exe));
+   if (exe == NULL) return NULL;
+
+   if ((flags & ECORE_EXE_PIPE_AUTO) && (!(flags & ECORE_EXE_PIPE_ERROR))
+       && (!(flags & ECORE_EXE_PIPE_READ)))
+     /* We need something to auto pipe. */
+     flags |= ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_ERROR; 
+
+   exe->child_fd_error = -1;
+   exe->child_fd_read = -1;
+   exe->child_fd_write = -1;
+   exe->child_fd_error_x = -1;
+   exe->child_fd_read_x = -1;
+   exe->child_fd_write_x = -1;
+
+   /*  Create some pipes. */
+   if (ok)
+     {
+       E_IF_NO_ERRNO_NOLOOP(result, pipe(statusPipe), ok)
+         {
+         }
+     }
+   if (ok && (flags & ECORE_EXE_PIPE_ERROR))
+     {
+       E_IF_NO_ERRNO_NOLOOP(result, pipe(errorPipe), ok)
+         {
+            exe->child_fd_error = errorPipe[0];
+            exe->child_fd_error_x = errorPipe[1];
+         }
+     }
+   if (ok && (flags & ECORE_EXE_PIPE_READ))
+     {
+       E_IF_NO_ERRNO_NOLOOP(result, pipe(readPipe), ok)
+         {
+            exe->child_fd_read = readPipe[0];
+            exe->child_fd_read_x = readPipe[1];
+         }
+     }
+   if (ok && (flags & ECORE_EXE_PIPE_WRITE))
+     {
+       E_IF_NO_ERRNO_NOLOOP(result, pipe(writePipe), ok)
+         {
+            exe->child_fd_write = writePipe[1];
+            exe->child_fd_write_x = writePipe[0];
+         }
+     }
+   if (ok)
+     {
+       pid_t               pid = 0;
+       volatile int        vfork_exec_errno = 0;
+       
+       /* FIXME: I should double check this.  After a quick look around, this is already done, but via a more modern method. */
+       /* signal(SIGPIPE, SIG_IGN);    We only want EPIPE on errors */
+       pid = fork();
+       
+       if (pid == -1)
+         {
+            fprintf(stderr, "Failed to fork process\n");
+            pid = 0;
+         }
+       else if (pid == 0)      /* child */
+         {
+            /* dup2 STDERR, STDIN, and STDOUT.  dup2() allegedly closes the
+             * second pipe if it's open. On the other hand, there was the
+             * Great FD Leak Scare of '06, so let's be paranoid. */
+            if (ok && (flags & ECORE_EXE_PIPE_ERROR))
+              {
+                 E_NO_ERRNO(result, close(STDERR_FILENO), ok);
+                 E_NO_ERRNO(result, dup2(errorPipe[1], STDERR_FILENO), ok);
+              }
+            if (ok && (flags & ECORE_EXE_PIPE_READ))
+              {
+                 E_NO_ERRNO(result, close(STDOUT_FILENO), ok);
+                 E_NO_ERRNO(result, dup2(readPipe[1], STDOUT_FILENO), ok);
+              }
+            if (ok && (flags & ECORE_EXE_PIPE_WRITE))
+              {
+                 E_NO_ERRNO(result, close(STDIN_FILENO), ok);
+                 E_NO_ERRNO(result, dup2(writePipe[0], STDIN_FILENO), ok);
+              }
+
+            if (ok)
+              {
+                 /* Setup the status pipe. */
+                 E_NO_ERRNO(result, close(statusPipe[0]), ok);
+                 E_IF_NO_ERRNO(result, fcntl(statusPipe[1], F_SETFD, FD_CLOEXEC), ok)  /* close on exec shows sucess */
+                   {
+                      /* Run the actual command. */
+                      _ecore_exe_exec_it(exe_cmd, flags); /* no return */
+                   }
+              }
+
+            /* Something went 'orribly wrong. */
+            vfork_exec_errno = errno;
+
+            /* Close the pipes. */
+            if (flags & ECORE_EXE_PIPE_ERROR)
+              E_NO_ERRNO(result, close(errorPipe[1]), ok);
+            if (flags & ECORE_EXE_PIPE_READ)
+              E_NO_ERRNO(result, close(readPipe[1]), ok);
+            if (flags & ECORE_EXE_PIPE_WRITE)
+              E_NO_ERRNO(result, close(writePipe[0]), ok);
+            E_NO_ERRNO(result, close(statusPipe[1]), ok);
+            
+            _exit(-1);
+         }
+       else                    /* parent */
+         {
+            /* Close the unused pipes. */
+            E_NO_ERRNO(result, close(statusPipe[1]), ok);
+
+            /* FIXME: after having a good look at the current e fd 
+             * handling, investigate fcntl(dataPipe[x], F_SETSIG, ...) */
+            /* FIXME: above F_SETSIG etc. - this is async SIGIO based IO
+             * which is also linux specific so we probably don't want to
+             * do this as long as select() is working fine. the only time
+             * we really want to think of SIGIO async IO is when it all
+             * actually works basically everywhere and we can turn all 
+             * IO into DMA async activities (i.e. you do a read() then
+             * the read is complete not on return but when you get a
+             * SIGIO - the read() just starts the transfer and it is
+             * completed in the background by DMA (or whatever mechanism
+             * the kernel choses)) */
+
+            /* Wait for it to start executing. */
+            /* FIXME: this doesn't seem very nice - we sit and block
+             * waiting on a child process... even though it's just
+             * the segment between the fork() and the exec) it just feels
+             * wrong */
+            for (;;)
+              {
+                 char                buf;
+                 
+                 E_NO_ERRNO(result, read(statusPipe[0], &buf, 1), ok);
+                 if (result == 0)
+                   {
+                      if (vfork_exec_errno != 0)
+                        {
+                           n = vfork_exec_errno;
+                           fprintf(stderr, "Could not start \"%s\"\n",
+                                   exe_cmd);
+                           pid = 0;
+                        }
+                      break;
+                   }
+              }
+
+            /* Close the status pipe. */
+            E_NO_ERRNO(result, close(statusPipe[0]), ok);
+         }
+
+       if (pid)
+         {
+            /* Setup the exe structure. */
+            ECORE_MAGIC_SET(exe, ECORE_MAGIC_EXE);
+            exe->start_bytes = -1;
+            exe->end_bytes = -1;
+            exe->start_lines = -1;
+            exe->end_lines = -1;
+            exe->pid = pid;
+            exe->flags = flags;
+            exe->data = (void *)data;
+            if ((exe->cmd = strdup(exe_cmd)))
+              {
+                 if (flags & ECORE_EXE_PIPE_ERROR)
+                   { /* Setup the error stuff. */
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_error, F_SETFL,
+                                          O_NONBLOCK), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_error, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_error_x, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      {
+                         exe->error_fd_handler =
+                            ecore_main_fd_handler_add(exe->child_fd_error,
+                                                      ECORE_FD_READ,
+                                                      _ecore_exe_data_error_handler,
+                                                      exe, NULL, NULL);
+                         if (exe->error_fd_handler == NULL)
+                            ok = 0;
+                      }
+                   }
+                 if (ok && (flags & ECORE_EXE_PIPE_READ))
+                   { /* Setup the read stuff. */
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_read, F_SETFL,
+                                          O_NONBLOCK), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_read, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_read_x, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      {
+                         exe->read_fd_handler =
+                            ecore_main_fd_handler_add(exe->child_fd_read,
+                                                      ECORE_FD_READ,
+                                                      _ecore_exe_data_read_handler,
+                                                      exe, NULL, NULL);
+                         if (exe->read_fd_handler == NULL)
+                            ok = 0;
+                      }
+                   }
+                 if (ok && (flags & ECORE_EXE_PIPE_WRITE))
+                   {           /* Setup the write stuff. */
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_write, F_SETFL,
+                                          O_NONBLOCK), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_write, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      E_IF_NO_ERRNO(result,
+                                    fcntl(exe->child_fd_write_x, F_SETFD,
+                                          FD_CLOEXEC), ok) {}
+                      {
+                         exe->write_fd_handler =
+                            ecore_main_fd_handler_add(exe->child_fd_write,
+                                                      ECORE_FD_WRITE,
+                                                      _ecore_exe_data_write_handler,
+                                                      exe, NULL, NULL);
+                         if (exe->write_fd_handler)
+                            ecore_main_fd_handler_active_set(exe->write_fd_handler, 0);        /* Nothing to write to start with. */
+                         else
+                            ok = 0;
+                      }
+                   }
+                 
+                 exes = _ecore_list2_append(exes, exe);
+                 n = 0;
+              }
+            else
+              ok = 0;
+         }
+       else
+         ok = 0;
+     }
+
+   if (!ok)
+     { /* Something went wrong, so pull down everything. */
+       if (exe->pid) ecore_exe_terminate(exe);
+       IF_FN_DEL(ecore_exe_free, exe);
+     }
+   else
+     {
+       Ecore_Exe_Event_Add *e;
+       
+       e = _ecore_exe_event_add_new();
+       e->exe = exe;
+       if (e) /* Send the event. */
+         ecore_event_add(ECORE_EXE_EVENT_ADD, e,
+                         _ecore_exe_event_add_free, NULL);
+       /* printf("Running as %d for %s.\n", exe->pid, exe->cmd); */
+     }
+   
+   errno = n;
+   return exe;
+}
+
+/**
+ * Sends data to the given child process which it recieves on stdin.
+ *
+ * This function writes to a child processes standard in, with unlimited
+ * buffering. This call will never block. It may fail if the system runs out
+ * of memory.
+ *
+ * @param exe  The child process to send to
+ * @param data The data to send
+ * @param size The size of the data to send, in bytes
+ * @return 1 if successful, 0 on failure.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI int
+ecore_exe_send(Ecore_Exe * exe, void *data, int size)
+{
+   void               *buf;
+
+   buf = realloc(exe->write_data_buf, exe->write_data_size + size);
+   if (buf == NULL) return 0;
+
+   exe->write_data_buf = buf;
+   memcpy((char *)exe->write_data_buf + exe->write_data_size, data, size);
+   exe->write_data_size += size;
+
+   if (exe->write_fd_handler)
+      ecore_main_fd_handler_active_set(exe->write_fd_handler, ECORE_FD_WRITE);
+
+   return 1;
+}
+
+/**
+ * The stdin of the given child process will close when the write buffer is empty.
+ *
+ * @param exe  The child process
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void
+ecore_exe_close_stdin(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_close_stdin");
+       return;
+     }
+   exe->close_stdin = 1;
+}
+
+/**
+ * Sets the auto pipe limits for the given process handle
+ *
+ * @param   exe The given process handle.
+ * @param   start_bytes limit of bytes at start of output to buffer.
+ * @param   end_bytes limit of bytes at end of output to buffer.
+ * @param   start_lines limit of lines at start of output to buffer.
+ * @param   end_lines limit of lines at end of output to buffer.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void
+ecore_exe_auto_limits_set(Ecore_Exe * exe, int start_bytes, int end_bytes,
+                         int start_lines, int end_lines)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_auto_limits_set");
+       return;
+     }
+   /* FIXME: sanitize the input. */
+   exe->start_bytes = start_bytes;
+   exe->end_bytes = end_bytes;
+   exe->start_lines = start_lines;
+   exe->end_lines = end_lines;
+
+   /* FIXME: get this can of worms working.
+    *
+    * capture stderr & stdout internally
+    *
+    * raster and onefang keep moving the goal posts on this one.  It started out as
+    * "show users the error output if an exe fails" and is rapidly approaching
+    * "alternative method of getting the data, poll vs event driven".  Some serious
+    * thinking needs to be applied to this.  Do we really want to go that far?  If
+    * so, we should change the names.  The basic design will probably remain the
+    * same which ever way we go.  The constant goal post moving is probably due to
+    * generic design methods leading to feature creep as we inspired each other to
+    * more generic designs.  It does seem like the closer we get to poll driven,
+    * the more issues and corner cases there are.
+    *
+    * Instead of doing the usual register an event handler thing, we are ecore_exe,
+    * we can take some short cuts.  Don't send the events, just leave the exe buffers
+    * as is until the user asks for them, then return the event.
+    *
+    * start = 0,  end = 0;   clogged arteries get flushed, everything is ignored.
+    * start = -1, end = -1;  clogged arteries get transferred to internal buffers.  Actually, either == -1 means buffer everything.
+    * start = X,  end = 0;   buffer first X out of clogged arteries, flush and ignore rest.
+    * start = 0,  end = X;   circular buffer X
+    * start = X,  end = Y;   buffer first X out of clogged arteries, circular buffer Y from beginning.
+    *
+    * bytes vs lines, which ever one reaches the limit first.
+    * Before we go beyond the start+end limit, leave the end buffer empty, and store both in the start buffer, coz they overlap.
+    * After we pass the the start+end limit, insert "\n...\n" at the end of the start buffer, copy the rest to the end buffer, then store in the end buffer.
+    *
+    * Other issues -
+    * Spank programmer for polling data if polling is not turned on.
+    * Spank programmer for setting up event callbacks if polling is turned on.
+    * Spank programmer for freeing the event data if it came from the event system, as that autofrees.
+    * Spank the programmer if they try to set the limits bigger than what has been gathered & ignored already, coz they just lost data.
+    * Spank onefang and raster for opening this can of worms.
+    * Should we have seperate out/err limits?
+    * Should we remove from the internal buffer the data that was delivered already?
+    * If so, what to do about limits, start, and end?  They could loose their meaning.
+    */
+}
+
+/**
+ * Gets the auto pipe data for the given process handle
+ *
+ * @param   exe The given process handle.
+ * @param   flags   Is this a ECORE_EXE_PIPE_READ or ECORE_EXE_PIPE_ERROR?
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI Ecore_Exe_Event_Data *
+ecore_exe_event_data_get(Ecore_Exe * exe, Ecore_Exe_Flags flags)
+{
+   Ecore_Exe_Event_Data *e = NULL;
+   int                 is_buffered = 0;
+   unsigned char      *inbuf;
+   int                 inbuf_num;
+
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_event_data_get");
+       return NULL;
+     }
+
+   /* Sort out what sort of event we are. */
+   if (flags & ECORE_EXE_PIPE_READ)
+     {
+       flags = ECORE_EXE_PIPE_READ;
+       if (exe->flags & ECORE_EXE_PIPE_READ_LINE_BUFFERED)
+          is_buffered = 1;
+     }
+   else
+     {
+       flags = ECORE_EXE_PIPE_ERROR;
+       if (exe->flags & ECORE_EXE_PIPE_ERROR_LINE_BUFFERED)
+          is_buffered = 1;
+     }
+
+   /* Get the data. */
+   if (flags & ECORE_EXE_PIPE_READ)
+     {
+       inbuf = exe->read_data_buf;
+       inbuf_num = exe->read_data_size;
+       exe->read_data_buf = NULL;
+       exe->read_data_size = 0;
+     }
+   else
+     {
+       inbuf = exe->error_data_buf;
+       inbuf_num = exe->error_data_size;
+       exe->error_data_buf = NULL;
+       exe->error_data_size = 0;
+     }
+
+   e = calloc(1, sizeof(Ecore_Exe_Event_Data));
+   if (e)
+     {
+       e->exe = exe;
+       e->data = inbuf;
+       e->size = inbuf_num;
+
+       if (is_buffered)
+         {                     /* Deal with line buffering. */
+            int                 max = 0;
+            int                 count = 0;
+            int                 i;
+            int                 last = 0;
+            char               *c;
+
+            c = (char *)inbuf;
+            for (i = 0; i < inbuf_num; i++)    /* Find the lines. */
+              {
+                 if (inbuf[i] == '\n')
+                   {
+                      if (count >= max)
+                        {
+                           /* In testing, the lines seem to arrive in batches of 500 to 1000 lines at most, roughly speaking. */
+                           max += 10;  /* FIXME: Maybe keep track of the largest number of lines ever sent, and add half that many instead of 10. */
+                           e->lines = realloc(e->lines, sizeof(Ecore_Exe_Event_Data_Line) * (max + 1));        /* Allow room for the NULL termination. */
+                        }
+                      /* raster said to leave the line endings as line endings, however -
+                       * This is line buffered mode, we are not dealing with binary here, but lines.
+                       * If we are not dealing with binary, we must be dealing with ASCII, unicode, or some other text format.
+                       * Thus the user is most likely gonna deal with this text as strings.
+                       * Thus the user is most likely gonna pass this data to str functions.
+                       * rasters way - the endings are always gonna be '\n';  onefangs way - they will always be '\0'
+                       * We are handing them the string length as a convenience.
+                       * Thus if they really want it in raw format, they can e->lines[i].line[e->lines[i].size - 1] = '\n'; easily enough.
+                       * In the default case, we can do this conversion quicker than the user can, as we already have the index and pointer.
+                       * Let's make it easy on them to use these as standard C strings.
+                       *
+                       * onefang is proud to announce that he has just set a new personal record for the
+                       * most over documentation of a simple assignment statement.  B-)
+                       */
+                      inbuf[i] = '\0';
+                      e->lines[count].line = c;
+                      e->lines[count].size = i - last;
+                      last = i + 1;
+                      c = (char *)&inbuf[last];
+                      count++;
+                   }
+              }
+            if (count == 0)    /* No lines to send, cancel the event. */
+              {
+                 _ecore_exe_event_exe_data_free(NULL, e);
+                 e = NULL;
+              }
+            else               /* NULL terminate the array, so that people know where the end is. */
+              {
+                 e->lines[count].line = NULL;
+                 e->lines[count].size = 0;
+              }
+            if (i > last)      /* Partial line left over, save it for next time. */
+              {
+                 if (e)
+                    e->size = last;
+                 if (flags & ECORE_EXE_PIPE_READ)
+                   {
+                      exe->read_data_size = i - last;
+                      exe->read_data_buf = malloc(exe->read_data_size);
+                      memcpy(exe->read_data_buf, c, exe->read_data_size);
+                   }
+                 else
+                   {
+                      exe->error_data_size = i - last;
+                      exe->error_data_buf = malloc(exe->error_data_size);
+                      memcpy(exe->error_data_buf, c, exe->error_data_size);
+                   }
+              }
+         }
+     }
+
+   return e;
+}
+
+/**
+ * Sets the string tag for the given process handle
+ *
+ * @param   exe The given process handle.
+ * @param   tag The string tag to set on the process handle.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void
+ecore_exe_tag_set(Ecore_Exe * exe, const char *tag)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_tag_set");
+       return;
+     }
+   IF_FREE(exe->tag);
+   if (tag)
+      exe->tag = strdup(tag);
+}
+
+/**
+ * Retrieves the tag attached to the given process handle. There is no need to
+ * free it as it just returns the internal pointer value. This value is only
+ * valid as long as the @p exe is valid or until the tag is set to something
+ * else on this @p exe.
+ *
+ * @param   exe The given process handle.
+ * @return  The string attached to @p exe.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI char          *
+ecore_exe_tag_get(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_tag_get");
+       return NULL;
+     }
+   return exe->tag;
+}
+
+/**
+ * Frees the given process handle.
+ *
+ * Note that the process that the handle represents is unaffected by this
+ * function.
+ *
+ * @param   exe The given process handle.
+ * @return  The data attached to the handle when @ref ecore_exe_run was
+ *          called.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void          *
+ecore_exe_free(Ecore_Exe * exe)
+{
+   void               *data;
+   int                 ok = 0;
+   int                 result;
+
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_free");
+       return NULL;
+     }
+
+   data = exe->data;
+
+   if (exe->doomsday_clock)
+     {
+       struct _ecore_exe_dead_exe *dead;
+
+       ecore_timer_del(exe->doomsday_clock);
+       exe->doomsday_clock = NULL;
+       dead = exe->doomsday_clock_dead;
+       if (dead)
+         {
+            IF_FREE(dead->cmd);
+            free(dead);
+            exe->doomsday_clock_dead = NULL;
+         }
+     }
+   IF_FN_DEL(ecore_main_fd_handler_del, exe->write_fd_handler);
+   IF_FN_DEL(ecore_main_fd_handler_del, exe->read_fd_handler);
+   IF_FN_DEL(ecore_main_fd_handler_del, exe->error_fd_handler);
+   if (exe->child_fd_write_x != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_write_x), ok);
+   if (exe->child_fd_read_x != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_read_x), ok);
+   if (exe->child_fd_error_x != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_error_x), ok);
+   if (exe->child_fd_write != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_write), ok);
+   if (exe->child_fd_read != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_read), ok);
+   if (exe->child_fd_error != -1)
+      E_NO_ERRNO(result, close(exe->child_fd_error), ok);
+   IF_FREE(exe->write_data_buf);
+   IF_FREE(exe->read_data_buf);
+   IF_FREE(exe->error_data_buf);
+   IF_FREE(exe->cmd);
+
+   exes = _ecore_list2_remove(exes, exe);
+   ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE);
+   IF_FREE(exe->tag);
+   free(exe);
+   return data;
+}
+
+/**
+ * Frees the given event data.
+ *
+ * @param   e The given event data.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void
+ecore_exe_event_data_free(Ecore_Exe_Event_Data * e)
+{
+   IF_FREE(e->lines);
+   IF_FREE(e->data);
+   free(e);
+}
+
+/**
+ * Retrieves the process ID of the given spawned process.
+ * @param   exe Handle to the given spawned process.
+ * @return  The process ID on success.  @c -1 otherwise.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI                pid_t
+ecore_exe_pid_get(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_pid_get");
+       return -1;
+     }
+   return exe->pid;
+}
+
+/**
+ * Retrieves the command of the given spawned process.
+ * @param   exe Handle to the given spawned process.
+ * @return  The command on success.  NULL otherwise.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI char          *
+ecore_exe_cmd_get(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_cmd_get");
+       return NULL;
+     }
+   return exe->cmd;
+}
+
+/**
+ * Retrieves the data attached to the given process handle.
+ * @param   exe The given process handle.
+ * @return  The data pointer attached to @p exe.
+ * @ingroup Ecore_Exe_Basic_Group
+ */
+EAPI void          *
+ecore_exe_data_get(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_data_get");
+       return NULL;
+     }
+   return exe->data;
+}
+
+/**
+ * @defgroup Ecore_Exe_Signal_Group Spawned Process Signal Functions
+ *
+ * Functions that send signals to spawned processes.
+ */
+
+/**
+ * Pauses the given process by sending it a @c SIGSTOP signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_pause(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_pause");
+       return;
+     }
+   kill(exe->pid, SIGSTOP);
+}
+
+/**
+ * Continues the given paused process by sending it a @c SIGCONT signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_continue(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_continue");
+       return;
+     }
+   kill(exe->pid, SIGCONT);
+}
+
+/**
+ * Sends the given spawned process a interrupt (@c SIGINT) signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_interrupt(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_interrupt");
+       return;
+     }
+   _ecore_exe_dead_attach(exe);
+   kill(exe->pid, SIGINT);
+}
+
+/**
+ * Sends the given spawned process a quit (@c SIGQUIT) signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_quit(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_quit");
+       return;
+     }
+   _ecore_exe_dead_attach(exe);
+   kill(exe->pid, SIGQUIT);
+}
+
+/**
+ * Sends the given spawned process a terminate (@c SIGTERM) signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_terminate(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_terminate");
+       return;
+     }
+   _ecore_exe_dead_attach(exe);
+   printf("Sending TERM signal to %s (%d).\n", exe->cmd, exe->pid);
+   kill(exe->pid, SIGTERM);
+}
+
+/**
+ * Kills the given spawned process by sending it a @c SIGKILL signal.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_kill(Ecore_Exe * exe)
+{
+   struct _ecore_exe_dead_exe *dead;
+
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_kill");
+       return;
+     }
+
+   dead = calloc(1, sizeof(struct _ecore_exe_dead_exe));
+   if (dead)
+     {
+       dead->pid = exe->pid;
+       dead->cmd = strdup(exe->cmd);
+       IF_FN_DEL(ecore_timer_del, exe->doomsday_clock);
+       exe->doomsday_clock =
+          ecore_timer_add(10.0, _ecore_exe_make_sure_its_really_dead, dead);
+     }
+
+   printf("Sending KILL signal to %s (%d).\n", exe->cmd, exe->pid);
+   kill(exe->pid, SIGKILL);
+}
+
+/**
+ * Sends a @c SIGUSR signal to the given spawned process.
+ * @param   exe Process handle to the given process.
+ * @param   num The number user signal to send.  Must be either 1 or 2, or
+ *              the signal will be ignored.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_signal(Ecore_Exe * exe, int num)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_signal");
+       return;
+     }
+   if (num == 1)
+      kill(exe->pid, SIGUSR1);
+   else if (num == 2)
+      kill(exe->pid, SIGUSR2);
+}
+
+/**
+ * Sends a @c SIGHUP signal to the given spawned process.
+ * @param   exe Process handle to the given process.
+ * @ingroup Ecore_Exe_Signal_Group
+ */
+EAPI void
+ecore_exe_hup(Ecore_Exe * exe)
+{
+   if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+     {
+       ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_hup");
+       return;
+     }
+   kill(exe->pid, SIGHUP);
+}
+
+static Ecore_Exe   *
+_ecore_exe_is_it_alive(pid_t pid)
+{
+   Ecore_Exe          *exe = NULL;
+
+   /* FIXME: There is no nice, safe, OS independant way to tell if a
+    * particular PID is still alive.  I have written code to do so
+    * for my urunlevel busybox applet (http://urunlevel.sourceforge.net/),
+    * but it's for linux only, and still not guaranteed.
+    *
+    * So for now, we just check that a valid Ecore_Exe structure
+    * exists for it.  Even that is not a guarantee, as the structure
+    * can be freed without killing the process.
+    *
+    * I think we can safely put exe's into two categories, those users
+    * that care about the life of the exe, and the run and forget type.
+    * The run and forget type starts up the exe, then free's the
+    * Ecore_Exe structure straight away.  They can never call any of
+    * the functions that can call this, so we don't worry about them.
+    *
+    * Those user's that care about the life of exe's will keep the
+    * Ecore_Exe structure around, terminate them eventually, or
+    * register for exit events.  For these ones the assumption
+    * that valid Ecore_Exe struct == live exe is almost valid.
+    *
+    * I will probably copy my urunlevel code into here someday.
+    */
+   exe = _ecore_exe_find(pid);
+   if (exe)
+     {
+       if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
+          exe = NULL;
+     }
+
+   return exe;
+}
+
+static int
+_ecore_exe_make_sure_its_dead(void *data)
+{
+   struct _ecore_exe_dead_exe *dead;
+
+   dead = data;
+   if (dead)
+     {
+       Ecore_Exe          *exe = NULL;
+
+       if ((exe = _ecore_exe_is_it_alive(dead->pid)) != NULL)
+         {
+            if (dead->cmd)
+               printf("Sending KILL signal to alledgedly dead %s (%d).\n",
+                      dead->cmd, dead->pid);
+            else
+               printf("Sending KILL signal to alledgedly dead PID %d.\n",
+                      dead->pid);
+            exe->doomsday_clock =
+               ecore_timer_add(10.0, _ecore_exe_make_sure_its_really_dead,
+                               dead);
+            kill(dead->pid, SIGKILL);
+         }
+       else
+         {
+            IF_FREE(dead->cmd);
+            free(dead);
+         }
+     }
+   return 0;
+}
+
+static int
+_ecore_exe_make_sure_its_really_dead(void *data)
+{
+   struct _ecore_exe_dead_exe *dead;
+
+   dead = data;
+   if (dead)
+     {
+       Ecore_Exe          *exe = NULL;
+
+       if ((exe = _ecore_exe_is_it_alive(dead->pid)) != NULL)
+         {
+            printf
+               ("RUN!  The zombie wants to eat your brains!  And your CPU!\n");
+            if (dead->cmd)
+               printf("%s (%d) is not really dead.\n", dead->cmd, dead->pid);
+            else
+               printf("PID %d is not really dead.\n", dead->pid);
+            exe->doomsday_clock = NULL;
+         }
+       IF_FREE(dead->cmd);
+       free(dead);
+     }
+   return 0;
+}
+
+void
+_ecore_exe_init(void)
+{
+   ECORE_EXE_EVENT_ADD = ecore_event_type_new();
+   ECORE_EXE_EVENT_DEL = ecore_event_type_new();
+   ECORE_EXE_EVENT_DATA = ecore_event_type_new();
+   ECORE_EXE_EVENT_ERROR = ecore_event_type_new();
+}
+
+void
+_ecore_exe_shutdown(void)
+{
+   while (exes)
+      ecore_exe_free(exes);
+}
+
+Ecore_Exe          *
+_ecore_exe_find(pid_t pid)
+{
+   Ecore_List2        *l;
+
+   for (l = (Ecore_List2 *) exes; l; l = l->next)
+     {
+       Ecore_Exe          *exe;
+
+       exe = (Ecore_Exe *) l;
+       if (exe->pid == pid)
+          return exe;
+     }
+   return NULL;
+}
+
+static inline void
+_ecore_exe_exec_it(const char *exe_cmd, Ecore_Exe_Flags flags)
+{
+   char                use_sh = 1;
+   char               *buf = NULL;
+   char              **args = NULL;
+   int                 save_errno = 0;
+
+   /* So what is this doing?
+    *
+    * We are trying to avoid wrapping the exe call with /bin/sh -c.
+    * We conservatively search for certain shell meta characters,
+    * If we don't find them, we can call the exe directly.
+    */
+   if (!strpbrk(exe_cmd, "|&;<>()$`\\\"'*?#"))
+     {
+       char               *token;
+       char                pre_command = 1;
+       int                 num_tokens = 0;
+
+       if (!(buf = strdup(exe_cmd)))
+          return;
+
+       token = strtok(buf, " \t\n\v");
+       while (token)
+         {
+            if (token[0] == '~')
+              break;
+            if (pre_command)
+              {
+                 if (token[0] == '[')
+                   break;
+                 if (strchr(token, '='))
+                   break;
+                 else
+                   pre_command = 0;
+              }
+            num_tokens++;
+            token = strtok(NULL, " \t\n\v");
+         }
+       IF_FREE(buf);
+       if ((!token) && (num_tokens))
+         {
+            int                 i = 0;
+
+            if (!(buf = strdup(exe_cmd)))
+              return;
+
+            token = strtok(buf, " \t\n\v");
+            use_sh = 0;
+            if (!(args = (char **)calloc(num_tokens + 1, sizeof(char *))))
+              {
+                 IF_FREE(buf);
+                 return;
+              }
+            for (i = 0; i < num_tokens; i++)
+              {
+                 if (token)
+                   args[i] = token;
+                 token = strtok(NULL, " \t\n\v");
+              }
+            args[num_tokens] = NULL;
+         }
+     }
+
+   if (!(flags & ECORE_EXE_NOT_LEADER)) setsid();
+   if ((flags & ECORE_EXE_USE_SH))
+     {
+       errno = 0;
+       execl("/bin/sh", "/bin/sh", "-c", exe_cmd, (char *)NULL);
+     }
+   else if (use_sh)
+     {                         /* We have to use a shell to run this. */
+       if (shell == NULL)
+         {                     /* Find users preferred shell. */
+            shell = getenv("SHELL");
+            if (shell == 0)
+              shell = "/bin/sh";
+         }
+       errno = 0;
+       execl(shell, shell, "-c", exe_cmd, (char *)NULL);
+     }
+   else
+     {                         /* We can run this directly. */
+       errno = 0;
+       execvp(args[0], args);
+     }
+
+   save_errno = errno;
+   IF_FREE(buf);
+   IF_FREE(args);
+   errno = save_errno;
+   return;
+}
+
+static int
+_ecore_exe_data_generic_handler(void *data, Ecore_Fd_Handler * fd_handler,
+                               Ecore_Exe_Flags flags)
+{
+   Ecore_Exe          *exe;
+   int                 child_fd;
+   int                 is_buffered = 0;
+   int                 event_type;
+
+   exe = data;
+
+   /* Sort out what sort of handler we are. */
+   if (flags & ECORE_EXE_PIPE_READ)
+     {
+       flags = ECORE_EXE_PIPE_READ;
+       event_type = ECORE_EXE_EVENT_DATA;
+       child_fd = exe->child_fd_read;
+       if (exe->flags & ECORE_EXE_PIPE_READ_LINE_BUFFERED)
+          is_buffered = 1;
+     }
+   else
+     {
+       flags = ECORE_EXE_PIPE_ERROR;
+       event_type = ECORE_EXE_EVENT_ERROR;
+       child_fd = exe->child_fd_error;
+       if (exe->flags & ECORE_EXE_PIPE_ERROR_LINE_BUFFERED)
+          is_buffered = 1;
+     }
+
+   if ((fd_handler)
+       && (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ)))
+     {
+       unsigned char      *inbuf;
+       int                 inbuf_num;
+
+       /* Get any left over data from last time. */
+       if (flags & ECORE_EXE_PIPE_READ)
+         {
+            inbuf = exe->read_data_buf;
+            inbuf_num = exe->read_data_size;
+            exe->read_data_buf = NULL;
+            exe->read_data_size = 0;
+         }
+       else
+         {
+            inbuf = exe->error_data_buf;
+            inbuf_num = exe->error_data_size;
+            exe->error_data_buf = NULL;
+            exe->error_data_size = 0;
+         }
+
+       for (;;)
+         {
+            int                 num, lost_exe;
+            char                buf[READBUFSIZ];
+
+            lost_exe = 0;
+            errno = 0;
+            if ((num = read(child_fd, buf, READBUFSIZ)) < 1)
+              /* FIXME: SPEED/SIZE TRADE OFF - add a smaller READBUFSIZE 
+               * (currently 64k) to inbuf, use that instead of buf, and
+               * save ourselves a memcpy(). */
+              {
+                 lost_exe = ((errno == EIO) ||
+                             (errno == EBADF) ||
+                             (errno == EPIPE) ||
+                             (errno == EINVAL) || (errno == ENOSPC));
+                 if ((errno != EAGAIN) && (errno != EINTR))
+                    perror("_ecore_exe_generic_handler() read problem ");
+              }
+            if (num > 0)
+              {                /* data got read. */
+                 inbuf = realloc(inbuf, inbuf_num + num);
+                 memcpy(inbuf + inbuf_num, buf, num);
+                 inbuf_num += num;
+              }
+            else
+              {                /* No more data to read. */
+                 if (inbuf)
+                   {
+                      Ecore_Exe_Event_Data *e;
+
+                      /* Stash the data away for later. */
+                      if (flags & ECORE_EXE_PIPE_READ)
+                        {
+                           exe->read_data_buf = inbuf;
+                           exe->read_data_size = inbuf_num;
+                        }
+                      else
+                        {
+                           exe->error_data_buf = inbuf;
+                           exe->error_data_size = inbuf_num;
+                        }
+
+                      if (!(exe->flags & ECORE_EXE_PIPE_AUTO))
+                        {
+                           e = ecore_exe_event_data_get(exe, flags);
+                           if (e)      /* Send the event. */
+                              ecore_event_add(event_type, e,
+                                              _ecore_exe_event_exe_data_free,
+                                              NULL);
+                        }
+                   }
+                 if (lost_exe)
+                   {
+                      if (flags & ECORE_EXE_PIPE_READ)
+                        {
+                           if (exe->read_data_size)
+                              printf
+                                 ("There are %d bytes left unsent from the dead exe %s.\n",
+                                  exe->read_data_size, exe->cmd);
+                        }
+                      else
+                        {
+                           if (exe->error_data_size)
+                              printf
+                                 ("There are %d bytes left unsent from the dead exe %s.\n",
+                                  exe->error_data_size, exe->cmd);
+                        }
+                      /* Thought about this a bit.  If the exe has actually
+                       * died, this won't do any harm as it must have died
+                       * recently and the pid has not had a chance to recycle.
+                       * It is also a paranoid catchall, coz the usual ecore_signal
+                       * mechenism should kick in.  But let's give it a good
+                       * kick in the head anyway.
+                       */
+                      ecore_exe_terminate(exe);
+                   }
+                 break;
+              }
+         }
+     }
+
+   return 1;
+}
+
+static int
+_ecore_exe_data_error_handler(void *data, Ecore_Fd_Handler * fd_handler)
+{
+   return _ecore_exe_data_generic_handler(data, fd_handler,
+                                         ECORE_EXE_PIPE_ERROR);
+}
+
+static int
+_ecore_exe_data_read_handler(void *data, Ecore_Fd_Handler * fd_handler)
+{
+   return _ecore_exe_data_generic_handler(data, fd_handler,
+                                         ECORE_EXE_PIPE_READ);
+}
+
+static int
+_ecore_exe_data_write_handler(void *data, Ecore_Fd_Handler * fd_handler __UNUSED__)
+{
+   Ecore_Exe          *exe;
+
+   exe = data;
+   if ((exe->write_fd_handler)
+       &&
+       (ecore_main_fd_handler_active_get
+       (exe->write_fd_handler, ECORE_FD_WRITE)))
+      _ecore_exe_flush(exe);
+
+   /* If we have sent all there is to send, and we need to close the pipe, then close it. */
+   if ((exe->close_stdin == 1)
+       && (exe->write_data_size == exe->write_data_offset))
+     {
+       int                 ok = 0;
+       int                 result;
+
+       printf("Closing stdin for %s\n", exe->cmd);
+       /* if (exe->child_fd_write != -1)  E_NO_ERRNO(result, fsync(exe->child_fd_write), ok);   This a) doesn't work, and b) isn't needed. */
+       IF_FN_DEL(ecore_main_fd_handler_del, exe->write_fd_handler);
+       if (exe->child_fd_write != -1)
+          E_NO_ERRNO(result, close(exe->child_fd_write), ok);
+       exe->child_fd_write = -1;
+       IF_FREE(exe->write_data_buf);
+     }
+
+   return 1;
+}
+
+static void
+_ecore_exe_flush(Ecore_Exe * exe)
+{
+   int                 count;
+
+   /* check whether we need to write anything at all. */
+   if ((exe->child_fd_write == -1) || (!exe->write_data_buf))
+      return;
+   if (exe->write_data_size == exe->write_data_offset)
+      return;
+
+   count = write(exe->child_fd_write,
+                (char *)exe->write_data_buf + exe->write_data_offset,
+                exe->write_data_size - exe->write_data_offset);
+   if (count < 1)
+     {
+       if (errno == EIO || errno == EBADF || errno == EPIPE || errno == EINVAL || errno == ENOSPC)     /* we lost our exe! */
+         {
+            ecore_exe_terminate(exe);
+            if (exe->write_fd_handler)
+               ecore_main_fd_handler_active_set(exe->write_fd_handler, 0);
+         }
+     }
+   else
+     {
+       exe->write_data_offset += count;
+       if (exe->write_data_offset >= exe->write_data_size)
+         {                     /* Nothing left to write, clean up. */
+            exe->write_data_size = 0;
+            exe->write_data_offset = 0;
+            IF_FREE(exe->write_data_buf);
+            if (exe->write_fd_handler)
+               ecore_main_fd_handler_active_set(exe->write_fd_handler, 0);
+         }
+     }
+}
+
+static void
+_ecore_exe_event_exe_data_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Exe_Event_Data *e;
+
+   e = ev;
+   ecore_exe_event_data_free(e);
+}
+
+static Ecore_Exe_Event_Add *
+_ecore_exe_event_add_new(void)
+{
+   Ecore_Exe_Event_Add *e;
+
+   e = calloc(1, sizeof(Ecore_Exe_Event_Add));
+   return e;
+}
+
+static void
+_ecore_exe_event_add_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Exe_Event_Add *e;
+
+   e = ev;
+   free(e);
+}
+
+void               *
+_ecore_exe_event_del_new(void)
+{
+   Ecore_Exe_Event_Del *e;
+
+   e = calloc(1, sizeof(Ecore_Exe_Event_Del));
+   return e;
+}
+
+void
+_ecore_exe_event_del_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Exe_Event_Del *e;
+
+   e = ev;
+   if (e->exe)
+      ecore_exe_free(e->exe);
+   free(e);
+}
+
+static void
+_ecore_exe_dead_attach(Ecore_Exe *exe)
+{
+   struct _ecore_exe_dead_exe *dead;
+
+   if (exe->doomsday_clock_dead) return;
+   dead = calloc(1, sizeof(struct _ecore_exe_dead_exe));
+   if (dead)
+     {
+       dead->pid = exe->pid;
+       dead->cmd = strdup(exe->cmd);
+       IF_FN_DEL(ecore_timer_del, exe->doomsday_clock);
+       exe->doomsday_clock =
+          ecore_timer_add(10.0, _ecore_exe_make_sure_its_dead, dead);
+       exe->doomsday_clock_dead = dead;
+     }
+}
+
+#endif
diff --git a/src/lib/ecore/ecore_hash.c b/src/lib/ecore/ecore_hash.c
new file mode 100644 (file)
index 0000000..3fe93b7
--- /dev/null
@@ -0,0 +1,862 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+
+#define PRIME_TABLE_MAX 21
+#define PRIME_MIN 17
+#define PRIME_MAX 16777213
+
+#define ECORE_HASH_CHAIN_MAX 3
+
+#define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \
+                                       ecore_prime_table[hash->size];
+
+#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < PRIME_MAX) ? \
+               (hash->nodes / ecore_prime_table[hash->size]) > \
+               ECORE_HASH_CHAIN_MAX : FALSE)
+#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > PRIME_MIN) ? \
+               (double)hash->nodes / (double)ecore_prime_table[hash->size-1] \
+               < ((double)ECORE_HASH_CHAIN_MAX * 0.375) : FALSE)
+
+/* Private hash manipulation functions */
+static int _ecore_hash_node_add(Ecore_Hash *hash, Ecore_Hash_Node *node);
+static Ecore_Hash_Node * _ecore_hash_node_get(Ecore_Hash *hash, const void *key);
+static int _ecore_hash_increase(Ecore_Hash *hash);
+static int _ecore_hash_decrease(Ecore_Hash *hash);
+inline int _ecore_hash_rehash(Ecore_Hash *hash, Ecore_Hash_Node **old_table, int old_size);
+static int _ecore_hash_bucket_destroy(Ecore_Hash_Node *list, Ecore_Free_Cb keyd,
+                                     Ecore_Free_Cb valued);
+inline Ecore_Hash_Node * _ecore_hash_bucket_get(Ecore_Hash *hash,
+                                               Ecore_Hash_Node *bucket, const void *key);
+
+static Ecore_Hash_Node *_ecore_hash_node_new(void *key, void *value);
+static int _ecore_hash_node_init(Ecore_Hash_Node *node, void *key, void *value);
+static int _ecore_hash_node_destroy(Ecore_Hash_Node *node, Ecore_Free_Cb keyd,
+                                   Ecore_Free_Cb valued);
+
+/**
+ * @defgroup Ecore_Data_Hash_ADT_Creation_Group Hash Creation Functions
+ *
+ * Functions that create hash tables.
+ */
+
+/**
+ * Creates and initializes a new hash
+ * @param hash_func The function for determining hash position.
+ * @param compare   The function for comparing node keys.
+ * @return @c NULL on error, a new hash on success.
+ * @ingroup Ecore_Data_Hash_ADT_Creation_Group
+ */
+EAPI Ecore_Hash *
+ecore_hash_new(Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare)
+{
+   Ecore_Hash *new_hash = (Ecore_Hash *)malloc(sizeof(Ecore_Hash));
+   if (!new_hash)
+     return NULL;
+
+   if (!ecore_hash_init(new_hash, hash_func, compare))
+     {
+       FREE(new_hash);
+       return NULL;
+     }
+
+   return new_hash;
+}
+
+/**
+ * Initializes the given hash.
+ * @param   hash       The given hash.
+ * @param   hash_func  The function used for hashing node keys.
+ * @param   compare    The function used for comparing node keys.
+ * @return  @c TRUE on success, @c FALSE on an error.
+ * @ingroup Ecore_Data_Hash_ADT_Creation_Group
+ */
+EAPI int
+ecore_hash_init(Ecore_Hash *hash, Ecore_Hash_Cb hash_func, Ecore_Compare_Cb compare)
+{
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   memset(hash, 0, sizeof(Ecore_Hash));
+
+   hash->hash_func = hash_func;
+   hash->compare = compare;
+
+   hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[0],
+                                             sizeof(Ecore_Hash_Node *));
+
+   return TRUE;
+}
+
+/**
+ * @defgroup Ecore_Data_Hash_ADT_Destruction_Group Hash Destruction Functions
+ *
+ * Functions that destroy hash tables and their contents.
+ */
+
+/**
+ * Sets the function to destroy the keys of the given hash.
+ * @param   hash     The given hash.
+ * @param   function The function used to free the node keys. NULL is a
+ *          valid value and means that no function will be called.
+ * @return  @c TRUE on success, @c FALSE on error.
+ * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
+ */
+EAPI int
+ecore_hash_free_key_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
+{
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   hash->free_key = function;
+
+   return TRUE;
+}
+
+/**
+ * Sets the function to destroy the values in the given hash.
+ * @param   hash     The given hash.
+ * @param   function The function that will free the node values. NULL is a
+ *          valid value and means that no function will be called.
+ * @return  @c TRUE on success, @c FALSE on error
+ * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
+ */
+EAPI int
+ecore_hash_free_value_cb_set(Ecore_Hash *hash, Ecore_Free_Cb function)
+{
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   hash->free_value = function;
+
+   return TRUE;
+}
+
+/**
+ * @defgroup Ecore_Data_Hash_ADT_Data_Group Hash Data Functions
+ *
+ * Functions that set, access and delete values from the hash tables.
+ */
+
+/**
+ * Sets a key-value pair in the given hash table.
+ * @param   hash    The given hash table.
+ * @param   key     The key.
+ * @param   value   The value.
+ * @return  @c TRUE if successful, @c FALSE if not.
+ * @ingroup Ecore_Data_Hash_ADT_Data_Group
+ */
+EAPI int
+ecore_hash_set(Ecore_Hash *hash, void *key, void *value)
+{
+   int ret = FALSE;
+   Ecore_Hash_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   node = _ecore_hash_node_get(hash, key);
+   if (node)
+     {
+       if (hash->free_key) hash->free_key(key);
+       if (node->value && hash->free_value) hash->free_value(node->value);
+       node->value = value;
+       ret = TRUE;
+     }
+   else
+     {
+       node = _ecore_hash_node_new(key, value);
+       if (node)
+         ret = _ecore_hash_node_add(hash, node);
+     }
+
+   return ret;
+}
+
+/**
+ * Sets all key-value pairs from set in the given hash table.
+ * @param   hash    The given hash table.
+ * @param   set     The hash table to import.
+ * @return  @c TRUE if successful, @c FALSE if not.
+ * @ingroup Ecore_Data_Hash_ADT_Data_Group
+ */
+EAPI int
+ecore_hash_hash_set(Ecore_Hash *hash, Ecore_Hash *set)
+{
+   unsigned int i;
+   Ecore_Hash_Node *node, *old;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+   CHECK_PARAM_POINTER_RETURN("set", set, FALSE);
+
+   for (i = 0; i < ecore_prime_table[set->size]; i++)
+     {
+       /* Hash into a new list to avoid loops of rehashing the same nodes */
+       while ((old = set->buckets[i]))
+         {
+            set->buckets[i] = old->next;
+            old->next = NULL;
+            node = _ecore_hash_node_get(hash, old->key);
+            if (node)
+              {
+                 /* This key already exists. Delete the old and add the new
+                  * value */
+                 if (hash->free_key) hash->free_key(node->key);
+                 if (hash->free_value) hash->free_key(node->value);
+                 node->key = old->key;
+                 node->value = old->value;
+                 free(old);
+              }
+            else
+              _ecore_hash_node_add(hash, old);
+         }
+     }
+   FREE(set->buckets);
+   ecore_hash_init(set, set->hash_func, set->compare);
+   return TRUE;
+}
+
+/**
+ * Frees the hash table and the data contained inside it.
+ * @param   hash The hash table to destroy.
+ * @return  @c TRUE on success, @c FALSE on error.
+ * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
+ */
+EAPI void 
+ecore_hash_destroy(Ecore_Hash *hash)
+{
+   unsigned int i = 0;
+
+   CHECK_PARAM_POINTER("hash", hash);
+
+   if (hash->buckets)
+     {
+       while (i < ecore_prime_table[hash->size])
+         {
+            if (hash->buckets[i])
+              {
+                 Ecore_Hash_Node *bucket;
+
+                               /*
+                                * Remove the bucket list to avoid possible recursion
+                                * on the free callbacks.
+                                */
+                 bucket = hash->buckets[i];
+                 hash->buckets[i] = NULL;
+                 _ecore_hash_bucket_destroy(bucket,
+                                            hash->free_key,
+                                            hash->free_value);
+              }
+            i++;
+         }
+
+       FREE(hash->buckets);
+     }
+   FREE(hash);
+
+   return;
+}
+
+/**
+ * @defgroup Ecore_Data_Hash_ADT_Traverse_Group Hash Traverse Functions
+ *
+ * Functions that iterate through hash tables.
+ */
+
+/**
+ * Counts the number of nodes in a hash table.
+ * @param   hash The hash table to count current nodes.
+ * @return  The number of nodes in the hash.
+ * @ingroup Ecore_Data_Hash_ADT_Destruction_Group
+ */
+EAPI int
+ecore_hash_count(Ecore_Hash *hash)
+{
+   CHECK_PARAM_POINTER_RETURN("hash", hash, 0);
+
+   return hash->nodes;
+}
+
+/**
+ * Runs the @p for_each_func function on each entry in the given hash.
+ * @param   hash          The given hash.
+ * @param   for_each_func The function that each entry is passed to.
+ * @param              user_data                       a pointer passed to calls of for_each_func
+ * @return  TRUE on success, FALSE otherwise.
+ * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
+ */
+EAPI int 
+ecore_hash_for_each_node(Ecore_Hash *hash, Ecore_For_Each for_each_func, void *user_data)
+{
+   unsigned int i = 0;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+   CHECK_PARAM_POINTER_RETURN("for_each_func", for_each_func, FALSE);
+
+   while (i < ecore_prime_table[hash->size])
+     {
+       if (hash->buckets[i])
+         {
+            Ecore_Hash_Node *node;
+
+            for (node = hash->buckets[i]; node; node = node->next)
+              {
+                 for_each_func(node, user_data);
+              }
+         }
+       i++;
+     }
+
+   return TRUE;
+}
+
+/**
+ * Retrieves an ecore_list of all keys in the given hash.
+ * @param   hash          The given hash.
+ * @return  new ecore_list on success, NULL otherwise
+ * @ingroup Ecore_Data_Hash_ADT_Traverse_Group
+ */
+EAPI Ecore_List *
+ecore_hash_keys(Ecore_Hash *hash)
+{
+   unsigned int i = 0;
+   Ecore_List *keys;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
+
+   keys = ecore_list_new();
+   while (i < ecore_prime_table[hash->size])
+     {
+       if (hash->buckets[i])
+         {
+            Ecore_Hash_Node *node;
+
+            for (node = hash->buckets[i]; node; node = node->next)
+              {
+                 ecore_list_append(keys, node->key);
+              }
+         }
+       i++;
+     }
+   ecore_list_first_goto(keys);
+
+   return keys;
+}
+
+/**
+ * Prints the distribution of the given hash table for graphing.
+ * @param hash The given hash table.
+ */
+EAPI void
+ecore_hash_dump_graph(Ecore_Hash *hash)
+{
+   unsigned int i;
+
+   for (i = 0; i < ecore_prime_table[hash->size]; i++)
+     if (hash->buckets[i])
+       {
+         int n = 0;
+         Ecore_Hash_Node *node;
+         for (node = hash->buckets[i]; node; node = node->next)
+           n++;
+         printf("%d\t%u\n", i, n);
+       }
+   else
+     printf("%d\t0\n", i);
+}
+
+/**
+ * Prints the distribution of the given hash table for graphing.
+ * @param hash The given hash table.
+ */
+EAPI void
+ecore_hash_dump_stats(Ecore_Hash *hash)
+{
+   unsigned int i;
+   double variance, sum_n_2 = 0, sum_n = 0;
+
+   for (i = 0; i < ecore_prime_table[hash->size]; i++)
+     {
+       if (hash->buckets[i])
+         {
+            int n = 0;
+            Ecore_Hash_Node *node;
+            for (node = hash->buckets[i]; node; node = node->next)
+              n++;
+            sum_n_2 += ((double)n * (double)n);
+            sum_n += (double)n;
+         }
+     }
+   variance = (sum_n_2 - ((sum_n * sum_n) / (double)i)) / (double)i;
+   printf("Average length: %f\n\tvariance^2: %f\n", (sum_n / (double)i),
+                  variance);
+}
+
+static int
+_ecore_hash_bucket_destroy(Ecore_Hash_Node *list, Ecore_Free_Cb keyd, Ecore_Free_Cb valued)
+{
+   Ecore_Hash_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   for (node = list; node; node = list)
+     {
+       list = list->next;
+       _ecore_hash_node_destroy(node, keyd, valued);
+     }
+
+   return TRUE;
+}
+
+/*
+ * @brief Add the node to the hash table
+ * @param hash: the hash table to add the key
+ * @param node: the node to add to the hash table
+ * @return Returns FALSE on error, TRUE on success
+ */
+static int
+_ecore_hash_node_add(Ecore_Hash *hash, Ecore_Hash_Node *node)
+{
+   unsigned int hash_val;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   /* Check to see if the hash needs to be resized */
+   if (ECORE_HASH_INCREASE(hash))
+     _ecore_hash_increase(hash);
+
+   /* Compute the position in the table */
+   if (!hash->hash_func)
+     hash_val = (unsigned int)node->key % ecore_prime_table[hash->size];
+   else
+     hash_val = ECORE_COMPUTE_HASH(hash, node->key);
+
+   /* Prepend the node to the list at the index position */
+   node->next = hash->buckets[hash_val];
+   hash->buckets[hash_val] = node;
+   hash->nodes++;
+
+   return TRUE;
+}
+
+/**
+ * Retrieves the value associated with the given key from the given hash
+ * table.
+ * @param   hash The given hash table.
+ * @param   key  The key to search for.
+ * @return  The value corresponding to key on success, @c NULL otherwise.
+ * @ingroup Ecore_Data_Hash_ADT_Data_Group
+ */
+EAPI void *
+ecore_hash_get(Ecore_Hash *hash, const void *key)
+{
+   void *data;
+   Ecore_Hash_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
+
+   node = _ecore_hash_node_get(hash, key);
+   if (!node)
+     return NULL;
+
+   data = node->value;
+
+   return data;
+}
+
+/**
+ * Removes the value associated with the given key in the given hash
+ * table.
+ * @param   hash The given hash table.
+ * @param   key  The key to search for.
+ * @return  The value corresponding to the key on success.  @c NULL is
+ *          returned if there is an error.
+ * @ingroup Ecore_Data_Hash_ADT_Data_Group
+ */
+EAPI void *
+ecore_hash_remove(Ecore_Hash *hash, const void *key)
+{
+   Ecore_Hash_Node *node = NULL;
+   Ecore_Hash_Node *list;
+   unsigned int hash_val;
+   void *ret = NULL;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
+
+   /* Compute the position in the table */
+   if (!hash->hash_func)
+     hash_val = (unsigned int )key % ecore_prime_table[hash->size];
+   else
+     hash_val = ECORE_COMPUTE_HASH(hash, key);
+
+   /*
+    * If their is a list that could possibly hold the key/value pair
+    * traverse it and remove the hash node.
+    */
+   if (hash->buckets[hash_val])
+     {
+       list = hash->buckets[hash_val];
+
+       /*
+        * Traverse the list to find the specified key
+        */
+       node = list;
+       if (hash->compare)
+         {
+            while ((node) && (hash->compare(node->key, key) != 0))
+              {
+                 list = node;
+                 node = node->next;
+              }
+         }
+       else
+         {
+            while ((node) && (node->key != key))
+              {
+                 list = node;
+                 node = node->next;
+              }
+         }
+
+       /*
+        * Remove the node with the matching key and free it's memory
+        */
+       if (node)
+         {
+            if (list == node)
+              hash->buckets[hash_val] = node->next;
+            else
+              list->next = node->next;
+            ret = node->value;
+            node->value = NULL;
+            _ecore_hash_node_destroy(node, hash->free_key, NULL);
+            hash->nodes--;
+         }
+     }
+
+   if (ECORE_HASH_REDUCE(hash))
+     _ecore_hash_decrease(hash);
+
+   return ret;
+}
+
+/**
+ * Retrieves the first value that matches
+ * table.
+ * @param   hash The given hash table.
+ * @param   key  The key to search for.
+ * @return  The value corresponding to key on success, @c NULL otherwise.
+ * @ingroup Ecore_Data_Hash_ADT_Data_Group
+ */
+EAPI void *
+ecore_hash_find(Ecore_Hash *hash, Ecore_Compare_Cb compare, const void *value)
+{
+   unsigned int i = 0;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
+   CHECK_PARAM_POINTER_RETURN("compare", compare, NULL);
+   CHECK_PARAM_POINTER_RETURN("value", value, NULL);
+
+   while (i < ecore_prime_table[hash->size])
+     {
+       if (hash->buckets[i])
+         {
+            Ecore_Hash_Node *node;
+
+            for (node = hash->buckets[i]; node; node = node->next)
+              {
+                 if (!compare(node->value, value)) return node->value;
+              }
+         }
+       i++;
+     }
+
+   return NULL;
+}
+
+/*
+ * @brief Retrieve the node associated with key
+ * @param hash: the hash table to search for the key
+ * @param key: the key to search for in the hash table
+ * @return Returns NULL on error, node corresponding to key on success
+ */
+static Ecore_Hash_Node *
+_ecore_hash_node_get(Ecore_Hash *hash, const void *key)
+{
+   unsigned int hash_val;
+   Ecore_Hash_Node *node = NULL;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, NULL);
+
+   if (!hash->buckets)
+     {
+       return NULL;
+     }
+
+   /* Compute the position in the table */
+   if (!hash->hash_func)
+     hash_val = (unsigned int )key % ecore_prime_table[hash->size];
+   else
+     hash_val = ECORE_COMPUTE_HASH(hash, key);
+
+   /* Grab the bucket at the specified position */
+   if (hash->buckets[hash_val])
+     {
+       node = _ecore_hash_bucket_get(hash, hash->buckets[hash_val], key);
+       /*
+        * Move matched node to the front of the list as it's likely
+        * to be searched for again soon.
+        */
+       if (node && node != hash->buckets[hash_val])
+         {
+            node->next = hash->buckets[hash_val];
+            hash->buckets[hash_val] = node;
+         }
+     }
+
+   return node;
+}
+
+/*
+ * @brief Search the hash bucket for a specified key
+ * @param hash: the hash table to retrieve the comparison function
+ * @param bucket: the list to search for the key
+ * @param key: the key to search for in the list
+ * @return Returns NULL on error or not found, the found node on success
+ */
+inline Ecore_Hash_Node *
+_ecore_hash_bucket_get(Ecore_Hash *hash, Ecore_Hash_Node *bucket, const void *key)
+{
+   Ecore_Hash_Node *prev = NULL;
+   Ecore_Hash_Node *node = NULL;
+
+   /*
+    * Traverse the list to find the desired node, if the node is in the
+    * list, then return the node.
+    */
+   if (hash->compare)
+     {
+       for (node = bucket; node; node = node->next)
+         {
+            if (hash->compare(node->key, key) == 0)
+              break;
+            prev = node;
+         }
+     }
+   else
+     {
+       for (node = bucket; node; node = node->next)
+         {
+            if (node->key == key)
+              break;
+            prev = node;
+         }
+     }
+
+   /*
+    * Remove node from the list to replace it at the beginning.
+    */
+   if (node && prev)
+     {
+       prev->next = node->next;
+       node->next = NULL;
+     }
+
+   return node;
+}
+
+/*
+ * @brief Increase the size of the hash table by approx.  2 * current size
+ * @param hash: the hash table to increase the size of
+ * @return Returns TRUE on success, FALSE on error
+ */
+static int
+_ecore_hash_increase(Ecore_Hash *hash)
+{
+   void *old;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   /* Max size reached so return FALSE */
+   if ((ecore_prime_table[hash->size] == PRIME_MAX) || (hash->size == PRIME_TABLE_MAX))
+     return FALSE;
+
+   /*
+    * Increase the size of the hash and save a pointer to the old data
+    */
+   hash->size++;
+   old = hash->buckets;
+
+   /*
+    * Allocate a new bucket area, of the new larger size
+    */
+   hash->buckets = calloc(ecore_prime_table[hash->size], sizeof(Ecore_Hash_Node *));
+
+   /*
+    * Make sure the allocation succeeded, if not replace the old data and
+    * return a failure.
+    */
+   if (!hash->buckets)
+     {
+       hash->buckets = old;
+       hash->size--;
+       return FALSE;
+     }
+   hash->nodes = 0;
+
+   /*
+    * Now move all of the old data into the new bucket area
+    */
+   if (_ecore_hash_rehash(hash, old, hash->size - 1))
+     {
+       FREE(old);
+       return TRUE;
+     }
+
+   /*
+    * Free the old buckets regardless of success.
+    */
+   FREE(old);
+
+   return FALSE;
+}
+
+/*
+ * @brief Decrease the size of the hash table by < 1/2 * current size
+ * @param hash: the hash table to decrease the size of
+ * @return Returns TRUE on success, FALSE on error
+ */
+static int
+_ecore_hash_decrease(Ecore_Hash *hash)
+{
+   Ecore_Hash_Node **old;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+
+   if (ecore_prime_table[hash->size] == PRIME_MIN)
+     return FALSE;
+
+   /*
+    * Decrease the hash size and store a pointer to the old data
+    */
+   hash->size--;
+   old = hash->buckets;
+
+   /*
+    * Allocate a new area to store the data
+    */
+   hash->buckets = (Ecore_Hash_Node **)calloc(ecore_prime_table[hash->size],
+                                             sizeof(Ecore_Hash_Node *));
+
+   /*
+    * Make sure allocation succeeded otherwise rreturn to the previous
+    * state
+    */
+   if (!hash->buckets)
+     {
+       hash->buckets = old;
+       hash->size++;
+       return FALSE;
+     }
+
+   hash->nodes = 0;
+
+   if (_ecore_hash_rehash(hash, old, hash->size + 1))
+     {
+       FREE(old);
+       return TRUE;
+     }
+
+   return FALSE;
+}
+
+/*
+ * @brief Rehash the nodes of a table into the hash table
+ * @param hash: the hash to place the nodes of the table
+ * @param table: the table to remove the nodes from and place in hash
+ * @return Returns TRUE on success, FALSE on error
+ */
+inline int
+_ecore_hash_rehash(Ecore_Hash *hash, Ecore_Hash_Node **old_table, int old_size)
+{
+   unsigned int i;
+   Ecore_Hash_Node *old;
+
+   CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
+   CHECK_PARAM_POINTER_RETURN("old_table", old_table, FALSE);
+
+   for (i = 0; i < ecore_prime_table[old_size]; i++)
+     {
+       /* Hash into a new list to avoid loops of rehashing the same nodes */
+       while ((old = old_table[i]))
+         {
+            old_table[i] = old->next;
+            old->next = NULL;
+            _ecore_hash_node_add(hash, old);
+         }
+     }
+
+   return TRUE;
+}
+
+/*
+ * @brief Create a new hash node for key and value storage
+ * @param key: the key for this node
+ * @param value: the value that the key references
+ * @return Returns NULL on error, a new hash node on success
+ */
+static Ecore_Hash_Node *
+_ecore_hash_node_new(void *key, void *value)
+{
+   Ecore_Hash_Node *node;
+
+   node = (Ecore_Hash_Node *)malloc(sizeof(Ecore_Hash_Node));
+   if (!node)
+     return NULL;
+
+   if (!_ecore_hash_node_init(node, key, value))
+     {
+       FREE(node);
+       return NULL;
+     }
+
+   return node;
+}
+
+/*
+ * @brief Initialize a hash node to some sane default values
+ * @param node: the node to set the values
+ * @param key: the key to reference this node
+ * @param value: the value that key refers to
+ * @return Returns TRUE on success, FALSE on error
+ */
+static int
+_ecore_hash_node_init(Ecore_Hash_Node *node, void *key, void *value)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   node->key = key;
+   node->value = value;
+
+   return TRUE;
+}
+
+/*
+ * @brief Destroy a node and call the specified callbacks to free data
+ * @param node: the node to be destroyed
+ * @param keyd: the function to free the key
+ * @param valued: the function  to free the value
+ * @return Returns TRUE on success, FALSE on error
+ */
+static int
+_ecore_hash_node_destroy(Ecore_Hash_Node *node, Ecore_Free_Cb keyd, Ecore_Free_Cb valued)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   if (keyd)
+     keyd(node->key);
+
+   if (valued)
+     valued(node->value);
+
+   FREE(node);
+
+   return TRUE;
+}
diff --git a/src/lib/ecore/ecore_idle_enterer.c b/src/lib/ecore/ecore_idle_enterer.c
new file mode 100644 (file)
index 0000000..7c9d03f
--- /dev/null
@@ -0,0 +1,128 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static Ecore_Idle_Enterer *idle_enterers = NULL;
+static int                 idle_enterers_delete_me = 0;
+
+/**
+ * Add an idle enterer handler.
+ * @param   func The function to call when entering an idle state.
+ * @param   data The data to be passed to the @p func call
+ * @return  A handle to the idle enterer callback if successful.  Otherwise,
+ *          NULL is returned.
+ * @ingroup Idle_Group
+ */
+EAPI Ecore_Idle_Enterer *
+ecore_idle_enterer_add(int (*func) (void *data), const void *data)
+{
+   Ecore_Idle_Enterer *ie;
+
+   if (!func) return NULL;
+   ie = calloc(1, sizeof(Ecore_Idle_Enterer));
+   if (!ie) return NULL;
+   ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
+   ie->func = func;
+   ie->data = (void *)data;
+   idle_enterers = _ecore_list2_append(idle_enterers, ie);
+   return ie;
+}
+
+/**
+ * Add an idle enterer handler at the start of the list so it gets called earlier than others.
+ * @param   func The function to call when entering an idle state.
+ * @param   data The data to be passed to the @p func call
+ * @return  A handle to the idle enterer callback if successful.  Otherwise,
+ *          NULL is returned.
+ * @ingroup Idle_Group
+ */
+EAPI Ecore_Idle_Enterer *
+ecore_idle_enterer_before_add(int (*func) (void *data), const void *data)
+{
+   Ecore_Idle_Enterer *ie;
+
+   if (!func) return NULL;
+   ie = calloc(1, sizeof(Ecore_Idle_Enterer));
+   if (!ie) return NULL;
+   ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_ENTERER);
+   ie->func = func;
+   ie->data = (void *)data;
+   idle_enterers = _ecore_list2_prepend(idle_enterers, ie);
+   return ie;
+}
+
+/**
+ * Delete an idle enterer callback.
+ * @param   idle_enterer The idle enterer to delete
+ * @return  The data pointer passed to the idler enterer callback on success.
+ *          NULL otherwise.
+ * @ingroup Idle_Group
+ */
+EAPI void *
+ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer)
+{
+   if (!ECORE_MAGIC_CHECK(idle_enterer, ECORE_MAGIC_IDLE_ENTERER))
+     {
+       ECORE_MAGIC_FAIL(idle_enterer, ECORE_MAGIC_IDLE_ENTERER,
+                        "ecore_idle_enterer_del");
+       return NULL;
+     }
+   idle_enterer->delete_me = 1;
+   idle_enterers_delete_me = 1;
+   return idle_enterer->data;
+}
+
+void
+_ecore_idle_enterer_shutdown(void)
+{
+   while (idle_enterers)
+     {
+       Ecore_Idle_Enterer *ie;
+       
+       ie = idle_enterers;
+       idle_enterers = _ecore_list2_remove(idle_enterers, ie);
+       ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+       free(ie);
+     }
+   idle_enterers_delete_me = 0;
+}
+
+void
+_ecore_idle_enterer_call(void)
+{
+   Ecore_List2 *l;
+   
+   for (l = (Ecore_List2 *)idle_enterers; l; l = l->next)
+     {
+       Ecore_Idle_Enterer *ie;
+       
+       ie = (Ecore_Idle_Enterer *)l;
+       if (!ie->delete_me)
+         {
+            if (!ie->func(ie->data)) ecore_idle_enterer_del(ie);
+         }
+     }
+   if (idle_enterers_delete_me)
+     {
+       for (l = (Ecore_List2 *)idle_enterers; l;)
+         {
+            Ecore_Idle_Enterer *ie;
+            
+            ie = (Ecore_Idle_Enterer *)l;
+            l = l->next;
+            if (ie->delete_me)
+              {
+                 idle_enterers = _ecore_list2_remove(idle_enterers, ie);
+                 ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+                 free(ie);
+              }
+         }
+       idle_enterers_delete_me = 0;
+     }
+}
+
+int
+_ecore_idle_enterer_exist(void)
+{
+   if (idle_enterers) return 1;
+   return 0;
+}
diff --git a/src/lib/ecore/ecore_idle_exiter.c b/src/lib/ecore/ecore_idle_exiter.c
new file mode 100644 (file)
index 0000000..b9d4128
--- /dev/null
@@ -0,0 +1,104 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static Ecore_Idle_Exiter *idle_exiters = NULL;
+static int                idle_exiters_delete_me = 0;
+
+/**
+ * Add an idle exiter handler.
+ * @param func The function to call when exiting an idle state.
+ * @param data The data to be passed to the @p func call
+ * @return A handle to the idle exiter callback on success.  NULL otherwise.
+ * @ingroup Idle_Group
+ */
+EAPI Ecore_Idle_Exiter *
+ecore_idle_exiter_add(int (*func) (void *data), const void *data)
+{
+   Ecore_Idle_Exiter *ie;
+
+   if (!func) return NULL;
+   ie = calloc(1, sizeof(Ecore_Idle_Exiter));
+   if (!ie) return NULL;
+   ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLE_EXITER);
+   ie->func = func;
+   ie->data = (void *)data;
+   idle_exiters = _ecore_list2_append(idle_exiters, ie);
+   return ie;
+}
+
+/**
+ * Delete an idle exiter handler from the list to be run on exiting idle state.
+ * @param idle_exiter The idle exiter to delete
+ * @return The data pointer that was being being passed to the handler if
+ *         successful.  NULL otherwise.
+ * @ingroup Idle_Group
+ */
+EAPI void *
+ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_exiter)
+{
+   if (!ECORE_MAGIC_CHECK(idle_exiter, ECORE_MAGIC_IDLE_EXITER))
+     {
+       ECORE_MAGIC_FAIL(idle_exiter, ECORE_MAGIC_IDLE_EXITER,
+                        "ecore_idle_exiter_del");
+       return NULL;
+     }
+   idle_exiter->delete_me = 1;
+   idle_exiters_delete_me = 1;
+   return idle_exiter->data;
+}
+
+void
+_ecore_idle_exiter_shutdown(void)
+{
+   while (idle_exiters)
+     {
+       Ecore_Idle_Exiter *ie;
+       
+       ie = idle_exiters;
+       idle_exiters = _ecore_list2_remove(idle_exiters, ie);
+       ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+       free(ie);
+     }
+   idle_exiters_delete_me = 0;
+}
+
+void
+_ecore_idle_exiter_call(void)
+{
+   Ecore_List2 *l;
+   
+   for (l = (Ecore_List2 *)idle_exiters; l; l = l->next)
+     {
+       Ecore_Idle_Exiter *ie;
+       
+       ie = (Ecore_Idle_Exiter *)l;
+       if (!ie->delete_me)
+         {
+            if (!ie->func(ie->data)) ecore_idle_exiter_del(ie);
+         }
+     }
+   if (idle_exiters_delete_me)
+     {
+       for (l = (Ecore_List2 *)idle_exiters; l;)
+         {
+            Ecore_Idle_Exiter *ie;
+            
+            ie = (Ecore_Idle_Exiter *)l;
+            l = l->next;
+            if (ie->delete_me)
+              {
+                 idle_exiters = _ecore_list2_remove(idle_exiters, ie);
+                 ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+                 free(ie);
+              }
+         }
+       idle_exiters_delete_me = 0;
+     }
+}
+
+int
+_ecore_idle_exiter_exist(void)
+{
+   if (idle_exiters) return 1;
+   return 0;
+}
diff --git a/src/lib/ecore/ecore_idler.c b/src/lib/ecore/ecore_idler.c
new file mode 100644 (file)
index 0000000..ff2dd7e
--- /dev/null
@@ -0,0 +1,114 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static Ecore_Idler *idlers = NULL;
+static int          idlers_delete_me = 0;
+
+/**
+ * Add an idler handler.
+ * @param  func The function to call when idling.
+ * @param  data The data to be passed to this @p func call.
+ * @return A idler handle if successfully added.  NULL otherwise.
+ * @ingroup Idle_Group
+ *
+ * Add an idler handle to the event loop, returning a handle on success and
+ * NULL otherwise.  The function @p func will be called repeatedly while
+ * no other events are ready to be processed, as long as it returns 1 
+ * (or ECORE_CALLBACK_RENEW). A return of 0 (or ECORE_CALLBACK_CANCEL) deletes 
+ * the idler.
+ *
+ * Idlers are useful for progressively prossessing data without blocking.
+ */
+EAPI Ecore_Idler *
+ecore_idler_add(int (*func) (void *data), const void *data)
+{
+   Ecore_Idler *ie;
+
+   if (!func) return NULL;
+   ie = calloc(1, sizeof(Ecore_Idler));
+   if (!ie) return NULL;
+   ECORE_MAGIC_SET(ie, ECORE_MAGIC_IDLER);
+   ie->func = func;
+   ie->data = (void *)data;
+   idlers = _ecore_list2_append(idlers, ie);
+   return ie;
+}
+
+/**
+ * Delete an idler callback from the list to be executed.
+ * @param  idler The handle of the idler callback to delete
+ * @return The data pointer passed to the idler callback on success.  NULL
+ *         otherwise.
+ * @ingroup Idle_Group
+ */
+EAPI void *
+ecore_idler_del(Ecore_Idler *idler)
+{
+   if (!ECORE_MAGIC_CHECK(idler, ECORE_MAGIC_IDLER))
+     {
+       ECORE_MAGIC_FAIL(idler, ECORE_MAGIC_IDLER,
+                        "ecore_idler_del");
+       return NULL;
+     }
+   idler->delete_me = 1;
+   idlers_delete_me = 1;
+   return idler->data;
+}
+
+void
+_ecore_idler_shutdown(void)
+{
+   while (idlers)
+     {
+       Ecore_Idler *ie;
+       
+       ie = idlers;
+       idlers = _ecore_list2_remove(idlers, ie);
+       ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+       free(ie);
+     }
+   idlers_delete_me = 0;
+}
+
+int
+_ecore_idler_call(void)
+{
+   Ecore_List2 *l;
+
+   for (l = (Ecore_List2 *)idlers; l; l = l->next)
+     {
+       Ecore_Idler *ie;
+       
+       ie = (Ecore_Idler *)l;
+       if (!ie->delete_me)
+         {
+            if (!ie->func(ie->data)) ecore_idler_del(ie);
+         }
+     }
+   if (idlers_delete_me)
+     {
+       for (l = (Ecore_List2 *)idlers; l;)
+         {
+            Ecore_Idler *ie;
+            
+            ie = (Ecore_Idler *)l;
+            l = l->next;
+            if (ie->delete_me)
+              {
+                 idlers = _ecore_list2_remove(idlers, ie);
+                 ECORE_MAGIC_SET(ie, ECORE_MAGIC_NONE);
+                 free(ie);
+              }
+         }
+       idlers_delete_me = 0;
+     }
+   if (idlers) return 1;
+   return 0;
+}
+
+int
+_ecore_idler_exist(void)
+{
+   if (idlers) return 1;
+   return 0;
+}
diff --git a/src/lib/ecore/ecore_list.c b/src/lib/ecore/ecore_list.c
new file mode 100644 (file)
index 0000000..9334e35
--- /dev/null
@@ -0,0 +1,2279 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+
+/* Some tests showed that beyond that value heap sort is faster than merge sort
+ * (in this implementation). This value has to be changed or at least review
+ * if someone is changing the implementation. */
+#define ECORE_MERGESORT_LIMIT 40000
+
+/* Return information about the list */
+static void *_ecore_list_current(Ecore_List * list);
+
+/* Adding functions */
+static int _ecore_list_insert(Ecore_List * list, Ecore_List_Node *node);
+static int _ecore_list_append_0(Ecore_List * list, Ecore_List_Node *node);
+static int _ecore_list_prepend_0(Ecore_List * list, Ecore_List_Node *node);
+
+/* Remove functions */
+static void *_ecore_list_remove_0(Ecore_List * list);
+static void *_ecore_list_first_remove(Ecore_List * list);
+static void *_ecore_list_last_remove(Ecore_List * list);
+
+/* Basic traversal functions */
+static void *_ecore_list_next(Ecore_List * list);
+static void *_ecore_list_last_goto(Ecore_List * list);
+static void *_ecore_list_first_goto(Ecore_List * list);
+static void *_ecore_list_goto(Ecore_List * list, const void *data);
+static void *_ecore_list_index_goto(Ecore_List *list, int index);
+
+/* Iterative functions */
+static int _ecore_list_for_each(Ecore_List *list, Ecore_For_Each function,
+                                void *user_data);
+static void *_ecore_list_find(Ecore_List *list, Ecore_Compare_Cb function,
+                              const void *user_data);
+
+/* Sorting functions */
+static Ecore_List_Node *_ecore_list_node_mergesort(Ecore_List_Node *first,
+                                  int n, Ecore_Compare_Cb compare, int order);
+static Ecore_List_Node *_ecore_list_node_merge(Ecore_List_Node *first, 
+                                               Ecore_List_Node *second,
+                                               Ecore_Compare_Cb compare,
+                                               int order);
+static Ecore_List_Node *_ecore_dlist_node_mergesort(Ecore_List_Node *first,
+                                  int n, Ecore_Compare_Cb compare, int order);
+static Ecore_List_Node *_ecore_dlist_node_merge(Ecore_List_Node *first, 
+                                               Ecore_List_Node *second,
+                                               Ecore_Compare_Cb compare,
+                                               int order);
+
+/* Private double linked list functions */
+static void *_ecore_dlist_previous(Ecore_DList * list);
+static void *_ecore_dlist_first_remove(Ecore_DList *list);
+static void *_ecore_dlist_index_goto(Ecore_DList *list, int index);
+
+/* XXX: Begin deprecated code */
+EAPI void *
+_ecore_list2_append(void *in_list, void *in_item)
+{
+   Ecore_List2 *l, *new_l;
+   Ecore_List2 *list, *item;
+
+   list = in_list;
+   item = in_item;
+   new_l = item;
+   new_l->next = NULL;
+   if (!list)
+     {
+       new_l->prev = NULL;
+       new_l->last = new_l;
+       return new_l;
+     }
+   if (list->last) l = list->last;
+   else for (l = list; l; l = l->next);
+   l->next = new_l;
+   new_l->prev = l;
+   list->last = new_l;
+   return list;
+}
+
+EAPI void *
+_ecore_list2_prepend(void *in_list, void *in_item)
+{
+   Ecore_List2 *new_l;
+   Ecore_List2 *list, *item;
+
+   list = in_list;
+   item = in_item;
+   new_l = item;
+   new_l->prev = NULL;
+   if (!list)
+     {
+       new_l->next = NULL;
+       new_l->last = new_l;
+       return new_l;
+     }
+   new_l->next = list;
+   list->prev = new_l;
+   new_l->last = list->last;
+   list->last = NULL;
+   return new_l;
+}
+
+EAPI void *
+_ecore_list2_append_relative(void *in_list, void *in_item, void *in_relative)
+{
+   Ecore_List2 *l;
+   Ecore_List2 *list, *item, *relative;
+
+   list = in_list;
+   item = in_item;
+   relative = in_relative;
+   for (l = list; l; l = l->next)
+     {
+       if (l == relative)
+         {
+            Ecore_List2 *new_l;
+
+            new_l = item;
+            if (l->next)
+              {
+                 new_l->next = l->next;
+                 l->next->prev = new_l;
+              }
+
+            else new_l->next = NULL;
+            l->next = new_l;
+            new_l->prev = l;
+            if (!new_l->next)
+              list->last = new_l;
+            return list;
+         }
+     }
+   return _ecore_list2_append(list, item);
+}
+
+EAPI void *
+_ecore_list2_prepend_relative(void *in_list, void *in_item, void *in_relative)
+{
+   Ecore_List2 *l;
+   Ecore_List2 *list, *item, *relative;
+
+   list = in_list;
+   item = in_item;
+   relative = in_relative;
+   for (l = list; l; l = l->next)
+     {
+       if (l == relative)
+         {
+            Ecore_List2 *new_l;
+
+            new_l = item;
+            new_l->prev = l->prev;
+            new_l->next = l;
+            l->prev = new_l;
+            if (new_l->prev)
+              {
+                 new_l->prev->next = new_l;
+                 if (!new_l->next)
+                   list->last = new_l;
+                 return list;
+              }
+            else
+              {
+                 if (!new_l->next)
+                   new_l->last = new_l;
+                 else
+                   {
+                      new_l->last = list->last;
+                      list->last = NULL;
+                   }
+                 return new_l;
+              }
+         }
+     }
+   return _ecore_list2_prepend(list, item);
+}
+
+EAPI void *
+_ecore_list2_remove(void *in_list, void *in_item)
+{
+   Ecore_List2 *return_l;
+   Ecore_List2 *list, *item;
+
+   /* checkme */
+   if(!in_list)
+     return in_list;
+
+   list = in_list;
+   item = in_item;
+   if (!item) return list;
+   if (item->next)
+     item->next->prev = item->prev;
+   if (item->prev)
+     {
+       item->prev->next = item->next;
+       return_l = list;
+     }
+   else
+     {
+       return_l = item->next;
+       if (return_l)
+         return_l->last = list->last;
+     }
+   if (item == list->last)
+     list->last = item->prev;
+   item->next = NULL;
+   item->prev = NULL;
+   return return_l;
+}
+
+EAPI void *
+_ecore_list2_find(void *in_list, void *in_item)
+{
+   Ecore_List2 *l;
+   Ecore_List2 *list, *item;
+
+   list = in_list;
+   item = in_item;
+   for (l = list; l; l = l->next)
+     {
+       if (l == item) return item;
+     }
+   return NULL;
+}
+/* XXX: End deprecated code */
+
+/**
+@defgroup Ecore_Data_List_Creation_Group List Creation/Destruction Functions
+
+Functions that create, initialize and destroy Ecore_Lists.
+*/
+
+/**
+ * Create and initialize a new list.
+ * @return  A new initialized list on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Creation_Group
+ */
+EAPI Ecore_List *
+ecore_list_new(void)
+{
+   Ecore_List *list;
+
+   list = (Ecore_List *)malloc(sizeof(Ecore_List));
+   if (!list)
+     return NULL;
+
+   if (!ecore_list_init(list))
+     {
+       FREE(list);
+       return NULL;
+     }
+
+   return list;
+}
+
+/**
+ * Initialize a list to some sane starting values.
+ * @param   list The list to initialize.
+ * @return  @c TRUE if successful, @c FALSE if an error occurs.
+ * @ingroup Ecore_Data_List_Creation_Group
+ */
+EAPI int 
+ecore_list_init(Ecore_List *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   memset(list, 0, sizeof(Ecore_List));
+
+   return TRUE;
+}
+
+/**
+ * Free a list and all of it's nodes.
+ * @param   list The list to be freed.
+ * @ingroup Ecore_Data_List_Creation_Group
+ */
+EAPI void 
+ecore_list_destroy(Ecore_List *list)
+{
+   void *data;
+
+   CHECK_PARAM_POINTER("list", list);
+
+   while (list->first)
+     {
+       data = _ecore_list_first_remove(list);
+       if (list->free_func)
+         list->free_func(data);
+     }
+
+   FREE(list);
+}
+
+/**
+ * Set the function for freeing data.
+ * @param  list      The list that will use this function when nodes are
+ *                   destroyed.
+ * @param  free_func The function that will free the key data.
+ * @return @c TRUE on successful set, @c FALSE otherwise.
+ */
+EAPI int 
+ecore_list_free_cb_set(Ecore_List *list, Ecore_Free_Cb free_func)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   list->free_func = free_func;
+
+   return TRUE;
+}
+
+/**
+ * Checks the list for any nodes.
+ * @param  list  The list to check for nodes
+ * @return @c TRUE if no nodes in list, @c FALSE if the list contains nodes
+ */
+EAPI int 
+ecore_list_empty_is(Ecore_List *list)
+{
+   int ret = TRUE;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   if (list->nodes)
+     ret = FALSE;
+
+   return ret;
+}
+
+/**
+ * Returns the number of the current node.
+ * @param  list The list to return the number of the current node.
+ * @return The number of the current node in the list.
+ */
+EAPI int 
+ecore_list_index(Ecore_List *list)
+{
+   int ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   ret = list->index;
+
+   return ret;
+}
+
+/**
+ * Find the number of nodes in the list.
+ * @param  list The list to find the number of nodes
+ * @return The number of nodes in the list.
+ */
+EAPI int 
+ecore_list_count(Ecore_List *list)
+{
+   int ret = 0;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   ret = list->nodes;
+
+   return ret;
+}
+
+/**
+@defgroup Ecore_Data_List_Add_Item_Group List Item Adding Functions
+
+Functions that are used to add nodes to an Ecore_List.
+*/
+
+/**
+ * Append data to the list.
+ * @param   list The list.
+ * @param   data The data to append.
+ * @return  @c FALSE if an error occurs, @c TRUE if appended successfully
+ * @ingroup Ecore_Data_List_Add_Item_Group
+ */
+EAPI inline int 
+ecore_list_append(Ecore_List *list, void *data)
+{
+   int ret;
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   node = ecore_list_node_new();
+   node->data = data;
+
+   ret = _ecore_list_append_0(list, node);
+
+   return ret;
+}
+
+/* For adding items to the end of the list */
+static int 
+_ecore_list_append_0(Ecore_List *list, Ecore_List_Node *end)
+{
+   if (list->last)
+     list->last->next = end;
+
+   list->last = end;
+
+   if (list->first == NULL)
+     {
+       list->first = end;
+       list->index = 0;
+       list->current = NULL;
+     }
+
+   if (list->index >= list->nodes)
+     list->index++;
+
+   list->nodes++;
+
+   return TRUE;
+}
+
+/**
+ * Prepend data to the beginning of the list.
+ * @param  list The list.
+ * @param  data The data to prepend.
+ * @return @c FALSE if an error occurs, @c TRUE if prepended successfully.
+ * @ingroup Ecore_Data_List_Add_Item_Group
+ */
+EAPI inline int 
+ecore_list_prepend(Ecore_List *list, void *data)
+{
+   int ret;
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   node = ecore_list_node_new();
+   node->data = data;
+
+   ret = _ecore_list_prepend_0(list, node);
+
+   return ret;
+}
+
+/* For adding items to the beginning of the list */
+static int 
+_ecore_list_prepend_0(Ecore_List *list, Ecore_List_Node *start)
+{
+   /* Put it at the beginning of the list */
+   start->next = list->first;
+
+   list->first = start;
+
+   /* If no last node, then the first node is the last node */
+   if (list->last == NULL)
+     list->last = list->first;
+
+   list->nodes++;
+   list->index++;
+
+   return TRUE;
+}
+
+/**
+ * Insert data in front of the current point in the list.
+ * @param   list The list to hold the inserted @p data.
+ * @param   data The data to insert into @p list.
+ * @return  @c FALSE if there is an error, @c TRUE on success
+ * @ingroup Ecore_Data_List_Add_Item_Group
+ */
+EAPI inline int 
+ecore_list_insert(Ecore_List *list, void *data)
+{
+   int ret;
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   node = ecore_list_node_new();
+   node->data = data;
+
+   ret = _ecore_list_insert(list, node);
+
+   return ret;
+}
+
+/* For adding items in front of the current position in the list */
+static int 
+_ecore_list_insert(Ecore_List *list, Ecore_List_Node *new_node)
+{
+   /*
+    * If the current point is at the beginning of the list, then it's the
+    * same as prepending it to the list.
+    */
+   if (list->current == list->first)
+     return _ecore_list_prepend_0(list, new_node);
+
+   if (list->current == NULL)
+     {
+       int ret_value;
+
+       ret_value = _ecore_list_append_0(list, new_node);
+       list->current = list->last;
+
+       return ret_value;
+     }
+
+   /* Setup the fields of the new node */
+   new_node->next = list->current;
+
+   /* And hook the node into the list */
+   _ecore_list_index_goto(list, ecore_list_index(list) - 1);
+
+   list->current->next = new_node;
+
+   /* Now move the current item to the inserted item */
+   list->current = new_node;
+   list->nodes++;
+
+   return TRUE;
+}
+/**
+ * Append a list to the list.
+ * @param   list The list.
+ * @param   append The list to append.
+ * @return  @c FALSE if an error occurs, @c TRUE if appended successfully
+ * @ingroup Ecore_Data_List_Add_Item_Group
+ */
+
+EAPI int 
+ecore_list_append_list(Ecore_List *list, Ecore_List *append)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+   CHECK_PARAM_POINTER_RETURN("append", append, FALSE);
+
+   if (ecore_list_empty_is(append)) return TRUE;
+
+   if (ecore_list_empty_is(list))
+     {
+       list->first = append->first;
+       list->current = list->first;
+       list->last = append->last;
+       list->nodes = append->nodes;
+     }
+   else
+     {
+       list->last->next = append->first;
+       list->last = append->last;
+       list->nodes += append->nodes;
+     }
+   ecore_list_init(append);
+   return TRUE;
+}
+
+/**
+ * Prepend a list to the beginning of the list.
+ * @param  list The list.
+ * @param  prepend The list to prepend.
+ * @return @c FALSE if an error occurs, @c TRUE if prepended successfully.
+ * @ingroup Ecore_Data_List_Add_Item_Group
+ */
+EAPI int 
+ecore_list_prepend_list(Ecore_List *list, Ecore_List *prepend)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+   CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE);
+
+   if (ecore_list_empty_is(prepend)) return TRUE;
+
+   if (ecore_list_empty_is(list))
+     {
+       list->first = prepend->first;
+       list->current = NULL;
+       list->last = prepend->last;
+       list->nodes = prepend->nodes;
+     }
+   else
+     {
+       prepend->last->next = list->first;
+       list->first = prepend->first;
+       list->nodes += prepend->nodes;
+       list->index += prepend->nodes;
+     }
+   ecore_list_init(prepend);
+   return TRUE;
+}
+
+/**
+@defgroup Ecore_Data_List_Remove_Item_Group List Item Removing Functions
+
+Functions that remove nodes from an Ecore_List.
+*/
+
+/**
+ * Remove the current item from the list.
+ * @param   list The list to remove the current item
+ * @return  A pointer to the removed data on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Remove_Item_Group
+ */
+EAPI inline void *
+ecore_list_remove(Ecore_List *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_remove_0(list);
+
+   return ret;
+}
+
+/* Remove the current item from the list */
+static void *
+_ecore_list_remove_0(Ecore_List *list)
+{
+   void *ret = NULL;
+   Ecore_List_Node *old;
+
+   if (!list)
+     return NULL;
+
+   if (ecore_list_empty_is(list))
+     return NULL;
+
+   if (!list->current)
+     return NULL;
+
+   if (list->current == list->first)
+     return _ecore_list_first_remove(list);
+
+   if (list->current == list->last)
+     return _ecore_list_last_remove(list);
+
+   old = list->current;
+
+   _ecore_list_index_goto(list, list->index - 1);
+
+   list->current->next = old->next;
+   old->next = NULL;
+   ret = old->data;
+   old->data = NULL;
+
+   _ecore_list_next(list);
+
+   ecore_list_node_destroy(old, NULL);
+   list->nodes--;
+
+   return ret;
+}
+
+/**
+ * Remove and free the data in lists current position.
+ * @param   list The list to remove and free the current item.
+ * @return  @c TRUE on success, @c FALSE on error
+ * @ingroup Ecore_Data_List_Remove_Item_Group
+ */
+EAPI int 
+ecore_list_remove_destroy(Ecore_List *list)
+{
+   void *data;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   data = _ecore_list_remove_0(list);
+   if (list->free_func)
+     list->free_func(data);
+
+   return TRUE;
+}
+
+/**
+ * Remove the first item from the list.
+ * @param   list The list to remove the current item
+ * @return  Returns a pointer to the removed data on success, @c NULL on
+ *          failure.
+ * @ingroup Ecore_Data_List_Remove_Item_Group
+ */
+EAPI inline void *
+ecore_list_first_remove(Ecore_List *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_first_remove(list);
+
+   return ret;
+}
+
+/* Remove the first item from the list */
+static void *
+_ecore_list_first_remove(Ecore_List *list)
+{
+   void *ret = NULL;
+   Ecore_List_Node *old;
+
+   if (!list)
+     return NULL;
+
+   if (ecore_list_empty_is(list))
+     return NULL;
+
+   old = list->first;
+
+   list->first = list->first->next;
+
+   if (list->current == old)
+     list->current = list->first;
+   else
+     (list->index ? list->index-- : 0);
+
+   if (list->last == old)
+     list->last = list->first;
+
+   ret = old->data;
+   old->data = NULL;
+
+   ecore_list_node_destroy(old, NULL);
+   list->nodes--;
+
+   return ret;
+}
+
+/**
+ * Remove the last item from the list.
+ * @param   list The list to remove the last node from
+ * @return  A pointer to the removed data on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Remove_Item_Group
+ */
+EAPI inline void *
+ecore_list_last_remove(Ecore_List *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_last_remove(list);
+
+   return ret;
+}
+
+/* Remove the last item from the list */
+static void *
+_ecore_list_last_remove(Ecore_List *list)
+{
+   void *ret = NULL;
+   Ecore_List_Node *old, *prev;
+
+   if (!list)
+     return NULL;
+
+   if (ecore_list_empty_is(list))
+     return NULL;
+
+   old = list->last;
+   if (list->current == old)
+     list->current = NULL;
+
+   if (list->first == old)
+     list->first = NULL;
+   for (prev = list->first; prev && prev->next != old; prev = prev->next);
+   list->last = prev;
+   if (prev)
+     prev->next = NULL;
+
+   old->next = NULL;
+   ret = old->data;
+   old->data = NULL;
+
+   ecore_list_node_destroy(old, NULL);
+   list->nodes--;
+
+   return ret;
+}
+
+/**
+@defgroup Ecore_Data_List_Traverse_Group List Traversal Functions
+
+Functions that can be used to traverse an Ecore_List.
+*/
+
+/**
+ * Make the current item the item with the given index number.
+ * @param   list  The list.
+ * @param   index The position to move the current item.
+ * @return  A pointer to new current item on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Traverse_Group
+ */
+EAPI inline void *
+ecore_list_index_goto(Ecore_List *list, int index)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_index_goto(list, index);
+
+   return ret;
+}
+
+/* This is the non-threadsafe version, use this inside internal functions that
+ * already lock the list */
+static void *
+_ecore_list_index_goto(Ecore_List *list, int index)
+{
+   int i;
+
+   if (!list)
+     return NULL;
+
+   if (ecore_list_empty_is(list))
+     return NULL;
+
+   if (index > ecore_list_count(list) || index < 0)
+     return NULL;
+
+   if (index < list->index) 
+     {
+       _ecore_list_first_goto(list);
+       i = 0;
+     }
+   else
+     i = list->index;
+
+   for (; i < index && _ecore_list_next(list); i++);
+
+   if (i >= list->nodes)
+     return NULL;
+
+   list->index = i;
+
+   return list->current->data;
+}
+
+/**
+ * Make the current item the node that contains @p data.
+ * @param   list The list.
+ * @param   data The data to find.
+ * @return  A pointer to @p data on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Traverse_Group
+ */
+EAPI inline void *
+ecore_list_goto(Ecore_List *list, const void *data)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_goto(list, data);
+
+   return ret;
+}
+
+/* Set the current position to the node containing data */
+static void *
+_ecore_list_goto(Ecore_List *list, const void *data)
+{
+   int index;
+   Ecore_List_Node *node;
+
+   if (!list)
+     return NULL;
+
+   index = 0;
+
+   node = list->first;
+   while (node && node->data)
+     {
+       Ecore_List_Node *next;
+
+       if (node->data == data)
+         break;
+
+       next = node->next;
+
+       node = next;
+
+       index++;
+     }
+
+   if (!node)
+     return NULL;
+
+   list->current = node;
+   list->index = index;
+
+   return list->current->data;
+}
+
+/**
+ * Make the current item the first item in the list
+ * @param   list The list.
+ * @return  A pointer to the first item on success, @c NULL on failure
+ * @ingroup Ecore_Data_List_Traverse_Group
+ */
+EAPI inline void *
+ecore_list_first_goto(Ecore_List *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_first_goto(list);
+
+   return ret;
+}
+
+/* Set the current position to the start of the list */
+static void *
+_ecore_list_first_goto(Ecore_List *list)
+{
+   if (!list || !list->first)
+     return NULL;
+
+   list->current = list->first;
+   list->index = 0;
+
+   return list->current->data;
+}
+
+/**
+ * Make the current item the last item in the list.
+ * @param   list The list.
+ * @return  A pointer to the last item on success, @c NULL on failure.
+ * @ingroup Ecore_Data_List_Traverse_Group
+ */
+EAPI inline void *
+ecore_list_last_goto(Ecore_List *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_last_goto(list);
+
+   return ret;
+}
+
+/* Set the current position to the end of the list */
+static void *
+_ecore_list_last_goto(Ecore_List *list)
+{
+   if (!list || !list->last)
+     return NULL;
+
+   list->current = list->last;
+   list->index = (list->nodes - 1);
+
+   return list->current->data;
+}
+
+/**
+ * Retrieve the data pointed to by the current item in @p list.
+ * @param  list The list.
+ * @return Returns the data at current position, can be @c NULL.
+ */
+EAPI inline void *
+ecore_list_current(Ecore_List *list)
+{
+   void *ret;
+
+   ret = _ecore_list_current(list);
+
+   return ret;
+}
+
+/**
+ * Retrieve the data pointed to by the first item in @p list.
+ * @param  list The list.
+ * @return Returns the data at current position, can be @c NULL.
+ */
+EAPI inline void *
+ecore_list_first(Ecore_List *list)
+{
+   void *ret;
+
+   if (!list->first)
+     return NULL;
+   ret = list->first->data;
+
+   return ret;
+}
+
+/**
+ * Retrieve the data pointed to by the last item in @p list.
+ * @param  list The list.
+ * @return Returns the data at current position, can be @c NULL.
+ */
+EAPI inline void *
+ecore_list_last(Ecore_List *list)
+{
+   void *ret;
+
+   if (!list->last)
+     return NULL;
+   ret = list->last->data;
+
+   return ret;
+}
+
+/* Return the data of the current node without incrementing */
+static void *
+_ecore_list_current(Ecore_List *list)
+{
+   void *ret;
+
+   if (!list->current)
+     return NULL;
+
+   ret = list->current->data;
+
+   return ret;
+}
+
+/**
+ * Retrieve the data pointed to by the current item, and make the next item
+ * the current item.
+ * @param   list The list to retrieve data from.
+ * @return  The current item in the list on success, @c NULL on failure.
+ */
+EAPI inline void *
+ecore_list_next(Ecore_List *list)
+{
+   void *data;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   data = _ecore_list_next(list);
+
+   return data;
+}
+
+/* Return the data contained in the current node and go to the next node */
+static void *
+_ecore_list_next(Ecore_List *list)
+{
+   void *data;
+   Ecore_List_Node *ret;
+   Ecore_List_Node *next;
+
+   if (!list->current)
+     return NULL;
+
+   ret = list->current;
+   next = list->current->next;
+
+   list->current = next;
+   list->index++;
+
+   data = ret->data;
+
+   return data;
+}
+
+/**
+ * Remove all nodes from @p list.
+ * @param  list The list.
+ * @return Returns @c TRUE on success, @c FALSE on error.
+ * @note The data for each item on the list is not freed by
+ *       @c ecore_list_clear().
+ */
+EAPI int 
+ecore_list_clear(Ecore_List *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   while (!ecore_list_empty_is(list))
+     _ecore_list_first_remove(list);
+
+   return TRUE;
+}
+
+/**
+ * Execute function for each node in @p list.
+ * @param   list     The list.
+ * @param   function The function to pass each node from @p list to.
+ * @return  Returns @c TRUE on success, @c FALSE on failure.
+ * @ingroup Ecore_Data_List_Traverse_Group
+ */
+EAPI int 
+ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data)
+{
+   int ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   ret = _ecore_list_for_each(list, function, user_data);
+
+   return ret;
+}
+
+/* The real meat of executing the function for each data node */
+static int 
+_ecore_list_for_each(Ecore_List *list, Ecore_For_Each function, void *user_data)
+{
+   void *value;
+
+   if (!list || !function)
+     return FALSE;
+
+   _ecore_list_first_goto(list);
+   while ((value = _ecore_list_next(list)) != NULL)
+     function(value, user_data);
+
+   return TRUE;
+}
+
+/**
+ * Find data in @p list using the compare function @p func
+ * @param list      The list.
+ * @param function  The function to test each node of @p list with
+ * @param user_data Data to match against (used by @p function)
+ * @return the first matching data node, or NULL if none match
+ */
+EAPI void *
+ecore_list_find(Ecore_List *list, Ecore_Compare_Cb function, const void *user_data)
+{
+  CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+  return _ecore_list_find(list, function, user_data);
+}
+
+/* The real meat of finding a node via a compare cb */
+static void *
+_ecore_list_find(Ecore_List *list, Ecore_Compare_Cb function, const void *user_data)
+{
+  void *value;
+  if (!list || !function) return NULL;
+
+  _ecore_list_first_goto(list);
+  while ((value = _ecore_list_current(list)) != NULL)
+  {
+    if (!function(value, user_data)) return value;
+    ecore_list_next(list);
+  }
+
+  return NULL;
+}
+
+/**
+ * Sort data in @p list using the compare function @p compare
+ * @param list      The list.
+ * @param compare   The function to compare the data of @p list
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ * @return          true on success
+ *
+ * This is a wrapper function for mergesort and heapsort. It
+ * tries to choose the fastest algorithm depending on the
+ * number of notes. Note: The sort may be unstable.
+ */
+EAPI int
+ecore_list_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, 0);
+   
+   if (list->nodes < 2)
+     return 1;
+   if (list->nodes < ECORE_MERGESORT_LIMIT)
+     return ecore_list_mergesort(list, compare, order);
+   if (!ecore_list_heapsort(list, compare, order))
+     return ecore_list_mergesort(list, compare, order);
+  
+   return 1;
+}
+
+/**
+ * Sort data in @p list using the compare function @p compare
+ * @param list      The list.
+ * @param compare   The function to compare the data of @p list
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ * @return          true on success
+ *
+ * Mergesort is a stable, in-place sorting algorithm 
+ */
+EAPI int
+ecore_list_mergesort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
+{
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, 0);
+   if (list->nodes < 2)
+     return 1;
+
+   if (order == ECORE_SORT_MIN)
+     order = 1;
+   else
+     order = -1;
+
+   node = _ecore_list_node_mergesort(list->first, list->nodes, compare, order);
+   list->first = node;
+
+   /* maybe there is a better way to do that but our last node has changed */
+   while (node->next)
+     node = node->next;
+   list->last = node;
+
+   _ecore_list_first_goto(list);
+
+   return 1;
+}
+
+/**
+ * Merge the @p l2 into the @p list using the compare function @p compare.
+ * Both lists need to be sorted else a corrupt list could be the result.
+ * @param list      The list.
+ * @param l2        The second list, this list will be empty after the merge
+ * @param compare   The function to compare the data of @p list and @p l2
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ */
+EAPI void
+ecore_list_merge(Ecore_List *list, Ecore_List *l2, Ecore_Compare_Cb compare, char order)
+{
+   CHECK_PARAM_POINTER("list", list);
+   CHECK_PARAM_POINTER("l2", l2);
+
+   if (ecore_list_empty_is(l2)) return;
+
+   if (ecore_list_empty_is(list))
+     {
+       ecore_list_append_list(list, l2);
+       return;
+     }
+   
+   if (order == ECORE_SORT_MIN)
+     order = 1;
+   else
+     order = -1;
+
+   list->first = _ecore_list_node_merge(list->first, l2->first, compare, order);
+   
+   if ((order * compare(list->last->data, l2->last->data)) < 0)
+     list->last = l2->last;
+
+   list->nodes += l2->nodes;
+   ecore_list_init(l2);
+}
+
+/* this is the internal recrusive function for the merge sort */
+static Ecore_List_Node *
+_ecore_list_node_mergesort(Ecore_List_Node *first, int n,
+                           Ecore_Compare_Cb compare, int order)
+{
+   Ecore_List_Node *middle;
+   Ecore_List_Node *premid;
+   int mid;
+   int i;
+
+   mid = n / 2;
+
+   if (n < 2)
+     return first;
+   else if (n == 2)
+     {
+       if (compare(first->data, first->next->data) * order > 0)
+          {
+               /* swap the data */
+               void *data;
+               data = first->next->data;
+               first->next->data = first->data;
+               first->data = data;
+         }
+      return first;
+    }
+
+   /* first find the premiddle node*/
+   for (premid = first, i = 0; i < mid - 1; i++)
+     premid = premid->next;
+
+   /* split the list */
+   middle = premid->next;
+   premid->next = NULL;
+
+   /* sort the the partial lists */
+   first = _ecore_list_node_mergesort(first, mid, compare, order);
+   middle = _ecore_list_node_mergesort(middle, n - mid, compare, order);
+
+   return _ecore_list_node_merge(first, middle, compare, order);
+}
+
+/* this function is used to merge the partial sorted lists */
+static Ecore_List_Node *
+_ecore_list_node_merge(Ecore_List_Node *first, Ecore_List_Node *second,
+                       Ecore_Compare_Cb compare, int order)
+{
+   Ecore_List_Node *list;
+   Ecore_List_Node *l;
+
+   /* select the first node outside the loop, because we need to keep
+    * a pointer to it */
+   if (compare(first->data, second->data) * order > 0)
+     {
+       list = l = second;
+       second = second->next;
+     }
+   else
+     {
+       list = l = first;
+       first = first->next;
+     }
+
+   /* and now start the merging */
+   while (first && second)
+     {
+       if (compare(first->data, second->data) * order > 0)
+         {
+               l = l->next = second;
+               second = second->next;
+         }
+       else
+         {
+               l = l->next = first;
+               first = first->next;
+         }
+     }
+
+   /* append the rest or set it to NULL */
+   if (first)
+     l->next = first;
+   else if (second)
+     l->next = second;
+   else
+     l->next = NULL;
+
+   return list;
+}
+
+/**
+ * Sort data in @p list using the compare function @p compare
+ * @param list      The list.
+ * @param compare   The function to compare the data of @p list
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ * @return          true on success
+ *
+ * Heapsort is a unstable sorting algorithm, it needs to allocate extra memomry,
+ * but there for it is for a great number of nodes faster than mergesort
+ */
+EAPI int
+ecore_list_heapsort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
+{
+   Ecore_Sheap *heap;
+   Ecore_List_Node *node;
+   void *data;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, 0);
+   /*
+    * Push the data into a heap.
+    */
+   heap = ecore_sheap_new(compare, list->nodes);
+   if (!heap)
+     return 0;
+
+   ecore_sheap_order_set(heap, order);
+   _ecore_list_first_goto(list);
+   while ((data = _ecore_list_next(list)))
+     {
+       ecore_sheap_insert(heap, data);
+     }
+
+   /*
+    * Extract in sorted order.
+    */
+   node = list->first;
+   while (node)
+     {
+       node->data = ecore_sheap_extract(heap);
+       node = node->next;
+     }
+
+   ecore_sheap_destroy(heap);
+
+   _ecore_list_first_goto(list);
+   return 1;
+}
+
+/* Initialize a node to starting values */
+EAPI int 
+ecore_list_node_init(Ecore_List_Node *node)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   node->next = NULL;
+   node->data = NULL;
+
+   return TRUE;
+}
+
+/**
+@defgroup Ecore_Data_List_Node_Group List Node Functions
+
+Functions that are used in the creation, maintenance and destruction of
+Ecore_List nodes.
+*/
+
+/**
+ * Allocates and initializes a new list node.
+ * @return  A new Ecore_List_Node on success, @c NULL otherwise.
+ * @ingroup Ecore_Data_List_Node_Group
+ */
+EAPI Ecore_List_Node *
+ecore_list_node_new()
+{
+   Ecore_List_Node *new_node;
+
+   new_node = malloc(sizeof(Ecore_List_Node));
+
+   if (!ecore_list_node_init(new_node))
+     {
+       FREE(new_node);
+       return NULL;
+     }
+
+   return new_node;
+}
+
+/**
+ * Calls the function to free the data and the node.
+ * @param   node      Node to destroy.
+ * @param   free_func Function to call if @p node points to data to free.
+ * @return  @c TRUE.
+ * @ingroup Ecore_Data_List_Node_Group
+ */
+EAPI int 
+ecore_list_node_destroy(Ecore_List_Node *node, Ecore_Free_Cb free_func)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   if (free_func && node->data)
+     free_func(node->data);
+
+   FREE(node);
+
+   return TRUE;
+}
+
+/**
+ * @defgroup Ecore_Data_DList_Creation_Group Doubly Linked List Creation/Destruction Functions
+ *
+ * Functions used to create, initialize and destroy @c Ecore_DLists.
+ */
+
+/**
+ * Creates and initialises a new doubly linked list.
+ * @return  A new initialised doubly linked list on success, @c NULL
+ *          on failure.
+ * @ingroup Ecore_Data_DList_Creation_Group
+ */
+EAPI Ecore_DList *
+ecore_dlist_new()
+{
+   Ecore_DList *list = NULL;
+
+   list = (Ecore_DList *)malloc(sizeof(Ecore_DList));
+   if (!list)
+     return NULL;
+
+   if (!ecore_dlist_init(list))
+     {
+       IF_FREE(list);
+       return NULL;
+     }
+
+   return list;
+}
+
+/**
+ * Initialises a list to some sane starting values.
+ * @param   list The doubly linked list to initialise.
+ * @return  @c TRUE if successful, @c FALSE if an error occurs.
+ * @ingroup Ecore_Data_DList_Creation_Group
+ */
+EAPI int 
+ecore_dlist_init(Ecore_DList *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   memset(list, 0, sizeof(Ecore_DList));
+
+   return TRUE;
+}
+
+/**
+ * Frees a doubly linked list and all of its nodes.
+ * @param   list The doubly linked list to be freed.
+ * @ingroup Ecore_Data_DList_Creation_Group
+ */
+EAPI void 
+ecore_dlist_destroy(Ecore_DList *list)
+{
+   void *data;
+   CHECK_PARAM_POINTER("list", list);
+
+   while (list->first)
+     {
+       data = _ecore_dlist_first_remove(list);
+       if (list->free_func)
+         list->free_func(data);
+     }
+
+   FREE(list);
+}
+
+/**
+ * Sets the function used for freeing data stored in a doubly linked list.
+ * @param   list      The doubly linked list that will use this function when
+ *                    nodes are destroyed.
+ * @param   free_func The function that will free the key data
+ * @return  @c TRUE on success, @c FALSE on failure.
+ * @ingroup Ecore_Data_DList_Creation_Group
+ */
+EAPI int 
+ecore_dlist_free_cb_set(Ecore_DList *list, Ecore_Free_Cb free_func)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   return ecore_list_free_cb_set(ECORE_LIST(list), free_func);
+}
+
+/**
+ * Returns whether there is anything in the given doubly linked list.
+ * @param  list The given doubly linked list.
+ * @return @c TRUE if there are nodes, @c FALSE otherwise.
+ */
+EAPI int 
+ecore_dlist_empty_is(Ecore_DList *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   return ecore_list_empty_is(ECORE_LIST(list));
+}
+
+/**
+ * Retrieves the index of the current node of the given doubly linked list.
+ * @param  list The given doubly linked list.
+ * @return The index of the current node.
+ */
+EAPI inline int 
+ecore_dlist_index(Ecore_DList *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   return ecore_list_index(ECORE_LIST(list));
+}
+
+/**
+ * @defgroup Ecore_Data_DList_Add_Item_Group Doubly Linked List Adding Functions
+ *
+ * Functions that are used to add nodes to an Ecore_DList.
+ */
+
+/**
+ * Appends data to the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @param   data The data to append.
+ * @return  @c TRUE if the data is successfully appended, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Add_Item_Group
+ */
+EAPI int 
+ecore_dlist_append(Ecore_DList *list, void *data)
+{
+   int ret;
+   Ecore_DList_Node *prev;
+   Ecore_DList_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   node = ecore_dlist_node_new();
+   ECORE_LIST_NODE(node)->data = data;
+
+   prev = ECORE_DLIST_NODE(ECORE_LIST(list)->last);
+   ret = _ecore_list_append_0(ECORE_LIST(list), ECORE_LIST_NODE(node));
+   if (ret)
+     node->previous = prev;
+
+   return ret;
+}
+
+/**
+ * Adds data to the very beginning of the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @param   data The data to prepend.
+ * @return  @c TRUE if the data is successfully prepended, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Add_Item_Group
+ */
+EAPI int 
+ecore_dlist_prepend(Ecore_DList *list, void *data)
+{
+   int ret;
+   Ecore_DList_Node *prev;
+   Ecore_DList_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   node = ecore_dlist_node_new();
+   ECORE_LIST_NODE(node)->data = data;
+
+   prev = ECORE_DLIST_NODE(ECORE_LIST(list)->first);
+   ret = _ecore_list_prepend_0(ECORE_LIST(list), ECORE_LIST_NODE(node));
+   if (ret && prev)
+     prev->previous = node;
+
+   return ret;
+}
+
+/**
+ * Inserts data at the current point in the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @param   data The data to be inserted.
+ * @return  @c TRUE on success, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Add_Item_Group
+ */
+EAPI int 
+ecore_dlist_insert(Ecore_DList *list, void *data)
+{
+   int ret = TRUE;
+   Ecore_DList_Node *prev;
+   Ecore_DList_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   /*
+    * Identify and shortcut the end cases.
+    */
+   if (!ECORE_LIST(list)->current)
+     return ecore_dlist_append(list, data);
+   if (ECORE_LIST(list)->current == ECORE_LIST(list)->first)
+     return ecore_dlist_prepend(list, data);
+
+   node = ecore_dlist_node_new();
+   ECORE_LIST_NODE(node)->data = data;
+
+   /* Setup the fields of the new node */
+   ECORE_LIST_NODE(node)->next = ECORE_LIST(list)->current;
+
+   /* And hook the node into the list */
+   prev = ECORE_DLIST_NODE(ECORE_LIST(list)->current)->previous;
+   ECORE_LIST_NODE(prev)->next = ECORE_LIST_NODE(node);
+   ECORE_DLIST_NODE(ECORE_LIST(list)->current)->previous = node;
+   node->previous = prev;
+
+   /* Now move the current item to the inserted item */
+   ECORE_LIST(list)->current = ECORE_LIST_NODE(node);
+   ECORE_LIST(list)->nodes++;
+
+   return ret;
+}
+
+/**
+ * Appends a list to the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @param   append The list to append.
+ * @return  @c TRUE if the data is successfully appended, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Add_Item_Group
+ */
+EAPI int 
+ecore_dlist_append_list(Ecore_DList *list, Ecore_DList *append)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+   CHECK_PARAM_POINTER_RETURN("append", append, FALSE);
+
+   if (ecore_dlist_empty_is(append)) return TRUE;
+
+   if (ecore_dlist_empty_is(list))
+     {
+       list->first = append->first;
+       list->current = NULL;
+       list->last = append->last;
+       list->nodes = append->nodes;
+     }
+   else
+     {
+       list->last->next = append->first;
+       ECORE_DLIST_NODE(append->first)->previous = ECORE_DLIST_NODE(list->last);
+       list->last = append->last;
+       list->nodes += append->nodes;
+     }
+   ecore_dlist_init(append);
+   return TRUE;
+}
+
+/**
+ * Adds a list to the very beginning of the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @param   prepend The list to prepend.
+ * @return  @c TRUE if the data is successfully prepended, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Add_Item_Group
+ */
+EAPI int 
+ecore_dlist_prepend_list(Ecore_DList *list, Ecore_DList *prepend)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+   CHECK_PARAM_POINTER_RETURN("prepend", prepend, FALSE);
+
+   if (ecore_dlist_empty_is(prepend)) return TRUE;
+
+   if (ecore_dlist_empty_is(list))
+     {
+       list->first = prepend->first;
+       list->current = NULL;
+       list->last = prepend->last;
+       list->nodes = prepend->nodes;
+     }
+   else
+     {
+       prepend->last->next = list->first;
+       ECORE_DLIST_NODE(list->first)->previous = ECORE_DLIST_NODE(prepend->last);
+       list->first = prepend->first;
+       list->nodes += prepend->nodes;
+       list->index += prepend->nodes;
+     }
+   ecore_dlist_init(prepend);
+   return TRUE;
+}
+
+/**
+ * @defgroup Ecore_Data_DList_Remove_Item_Group Doubly Linked List Removing Functions
+ *
+ * Functions that remove nodes from an @c Ecore_DList.
+ */
+
+/**
+ * Removes the current item from the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @return  A pointer to the removed data on success, @c NULL otherwise.
+ * @ingroup Ecore_Data_DList_Remove_Item_Group
+ */
+EAPI void *
+ecore_dlist_remove(Ecore_DList *list)
+{
+   void *ret;
+   Ecore_List *l2 = ECORE_LIST(list);
+   Ecore_DList_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   if (l2->current)
+     {
+       node = ECORE_DLIST_NODE(list->current->next);
+       if (node)
+         node->previous = ECORE_DLIST_NODE(l2->current)->previous;
+     }
+   ret = _ecore_list_remove_0(list);
+
+   return ret;
+}
+
+/**
+ * Removes the first item from the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @return  A pointer to the removed data on success, @c NULL on failure.
+ * @ingroup Ecore_Data_DList_Remove_Item_Group
+ */
+EAPI void *
+ecore_dlist_first_remove(Ecore_DList *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_dlist_first_remove(list);
+
+   return ret;
+}
+
+/**
+ * Removes and frees the data at the current position in the given doubly
+ * linked list.
+ * @param   list The given doubly linked list.
+ * @return  @c TRUE on success, @c FALSE otherwise.
+ * @ingroup Ecore_Data_DList_Remove_Item_Group
+ */
+EAPI int 
+ecore_dlist_remove_destroy(Ecore_DList *list)
+{
+   void *data;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   data = ecore_dlist_remove(list);
+   if (!data)
+     return FALSE;
+
+   if (list->free_func)
+     list->free_func(data);
+
+   return TRUE;
+}
+
+static void *
+_ecore_dlist_first_remove(Ecore_DList *list)
+{
+   void *ret;
+
+   if (!list)
+     return NULL;
+
+   ret = _ecore_list_first_remove(list);
+   if (ret && ECORE_LIST(list)->first)
+     ECORE_DLIST_NODE(ECORE_LIST(list)->first)->previous = NULL;
+
+   return ret;
+}
+
+/**
+ * Removes the last item from the given doubly linked list.
+ * @param   list The given doubly linked list.
+ * @return  A pointer to the removed data on success, @c NULL otherwise.
+ * @ingroup Ecore_Data_DList_Remove_Item_Group
+ */
+EAPI void *
+ecore_dlist_last_remove(Ecore_DList *list)
+{
+   void *ret;
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   if (ecore_list_empty_is(list))
+     return NULL;
+
+   node = list->last;
+   list->last = ECORE_LIST_NODE(ECORE_DLIST_NODE(node)->previous);
+   if (list->last)
+     list->last->next = NULL;
+   if (list->first == node)
+     list->first = NULL;
+   if (list->current == node)
+     list->current = NULL;
+
+   ret = node->data;
+   ecore_list_node_destroy(node, NULL);
+
+   list->nodes--;
+   if (list->index >= list->nodes)
+     list->index--;
+
+   return ret;
+}
+
+/**
+ * Moves the current item to the index number in the given doubly linked list.
+ * @param  list  The given doubly linked list.
+ * @param  index The position to move the current item
+ * @return The node at specified index on success, @c NULL on error.
+ */
+EAPI void *
+ecore_dlist_index_goto(Ecore_DList *list, int index)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_dlist_index_goto(list, index);
+
+   return ret;
+}
+
+/* This is the non-threadsafe version, use this inside internal functions that
+ * already lock the list */
+static void *
+_ecore_dlist_index_goto(Ecore_DList *list, int index)
+{
+   int i, increment;
+
+   if (!list)
+     return NULL;
+
+   if (ecore_list_empty_is(ECORE_LIST(list)))
+     return NULL;
+
+   if (index > ecore_list_count(ECORE_LIST(list)) || index < 0)
+     return NULL;
+
+   if (ECORE_LIST(list)->index >= ECORE_LIST(list)->nodes)
+     _ecore_list_last_goto(ECORE_LIST(list));
+
+   if (index < ECORE_LIST(list)->index)
+     increment = -1;
+   else
+     increment = 1;
+
+   for (i = ECORE_LIST(list)->index; i != index; i += increment)
+     {
+       if (increment > 0)
+         _ecore_list_next(list);
+       else
+         _ecore_dlist_previous(list);
+     }
+
+   return _ecore_list_current(list);
+}
+
+/**
+ * @brief Move the current item to the node that contains data
+ * @param list: the list to move the current item in
+ * @param data: the data to find and set the current item to
+ *
+ * @return Returns specified data on success, NULL on error
+ */
+EAPI void *
+ecore_dlist_goto(Ecore_DList *list, void *data)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_goto(ECORE_LIST(list), data);
+
+   return ret;
+}
+
+/**
+ * @brief Move the current pointer to the first item in the list
+ * @param list: the list to change the current to the first item
+ *
+ * @return Returns a pointer to the first item on success, NULL on failure.
+ */
+EAPI void *
+ecore_dlist_first_goto(Ecore_DList *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_first_goto(list);
+
+   return ret;
+}
+
+/**
+ * @brief Move the pointer to the current item to the last item
+ * @param list: the list to move the current item pointer to the last
+ * @return Returns a pointer to the last item in the list , NULL if empty.
+ */
+EAPI void *
+ecore_dlist_last_goto(Ecore_DList *list)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, NULL);
+
+   ret = _ecore_list_last_goto(ECORE_LIST(list));
+
+   return ret;
+}
+
+/**
+ * @brief Return the data in the current list item
+ * @param list: the list to the return the current data
+ * @return Returns value of the current data item, NULL if no current item
+ */
+EAPI void *
+ecore_dlist_current(Ecore_DList *list)
+{
+   void *ret;
+
+   ret = _ecore_list_current(ECORE_LIST(list));
+
+   return ret;
+}
+
+/**
+ * @brief Move to the next item in the list and return current item
+ * @param list: the list to move to the next item in.
+ * @return Returns data in the current list node, or NULL on error
+ */
+EAPI void *
+ecore_dlist_next(Ecore_DList *list)
+{
+   void *data;
+
+   data = _ecore_list_next(list);
+
+   return data;
+}
+
+/**
+ * @brief Move to the previous item and return current item
+ * @param list: the list to move to the previous item in.
+ * @return Returns data in the current list node, or NULL on error
+ */
+EAPI void *
+ecore_dlist_previous(Ecore_DList *list)
+{
+   void *data;
+
+   data = _ecore_dlist_previous(list);
+
+   return data;
+}
+
+static void *
+_ecore_dlist_previous(Ecore_DList *list)
+{
+   void *data = NULL;
+
+   if (!list)
+     return NULL;
+
+   if (ECORE_LIST(list)->current)
+     {
+       data = ECORE_LIST(list)->current->data;
+       ECORE_LIST(list)->current = ECORE_LIST_NODE(ECORE_DLIST_NODE(
+                                                                    ECORE_LIST(list)->current)->previous);
+       ECORE_LIST(list)->index--;
+     }
+   else
+     _ecore_list_last_goto(ECORE_LIST(list));
+
+   return data;
+}
+
+/**
+ * @brief Remove all nodes from the list.
+ * @param list: the list to remove all nodes from
+ *
+ * @return Returns TRUE on success, FALSE on errors
+ */
+EAPI int 
+ecore_dlist_clear(Ecore_DList *list)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, FALSE);
+
+   ecore_list_clear(ECORE_LIST(list));
+
+   return TRUE;
+}
+
+/**
+ * Sort data in @p list using the compare function @p compare
+ * @param list      The list.
+ * @param compare   The function to compare the data of @p list
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ * @return          true on success
+ *
+ * This is a wrapper function for mergesort and heapsort. It
+ * tries to choose the fastest algorithm depending on the
+ * number of notes. Note: The sort may be unstable.
+ */
+EAPI int
+ecore_dlist_sort(Ecore_List *list, Ecore_Compare_Cb compare, char order)
+{
+   CHECK_PARAM_POINTER_RETURN("list", list, 0);
+   
+   if (list->nodes < 2)
+     return 1;
+   if (list->nodes < ECORE_MERGESORT_LIMIT)
+     return ecore_dlist_mergesort(list, compare, order);
+   if (!ecore_dlist_heapsort(list, compare, order))
+     return ecore_dlist_mergesort(list, compare, order);
+  
+   return 1;
+}
+
+/**
+ * Sort data in @p list using the compare function @p compare
+ * @param list      The list.
+ * @param compare   The function to compare the data of @p list
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ * @return          true on success
+ *
+ * Mergesort is a stable, in-place sorting algorithm 
+ */
+EAPI int
+ecore_dlist_mergesort(Ecore_DList *list, Ecore_Compare_Cb compare, char order)
+{
+   Ecore_List_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("list", list, 0);
+   if (list->nodes < 2)
+     return 1;
+
+   if (order == ECORE_SORT_MIN)
+     order = 1;
+   else
+     order = -1;
+
+   node = _ecore_dlist_node_mergesort(list->first, list->nodes, compare, order);
+   list->first = node;
+
+   /* maybe there is a better way to do that but our last node has changed */
+   while (node->next)
+     node = node->next;
+   list->last = node;
+
+   _ecore_list_first_goto(list);
+
+   return 1;
+}
+
+/**
+ * Merge the @p l2 into the @p list using the compare function @p compare.
+ * Both lists need to be sorted else a corrupt list could be the result.
+ * @param list      The list.
+ * @param l2        The second list, this list will be empty after the merge
+ * @param compare   The function to compare the data of @p list and @p l2
+ * @param order     The sort direction, possible values are ECORE_SORT_MIN and
+ *                  ECORE_SORT_MAX
+ */
+EAPI void
+ecore_dlist_merge(Ecore_DList *list, Ecore_DList *l2, Ecore_Compare_Cb compare, char order)
+{
+   CHECK_PARAM_POINTER("list", list);
+   CHECK_PARAM_POINTER("l2", l2);
+
+   if (ecore_dlist_empty_is(l2)) return;
+
+   if (ecore_dlist_empty_is(list))
+     {
+       ecore_dlist_append_list(list, l2);
+       return;
+     }
+   
+   if (order == ECORE_SORT_MIN)
+     order = 1;
+   else
+     order = -1;
+
+   list->first = _ecore_dlist_node_merge(list->first, l2->first, compare, order);
+   
+   if ((order * compare(list->last->data, l2->last->data)) < 0)
+     list->last = l2->last;
+
+   list->nodes += l2->nodes;
+   ecore_dlist_init(l2);
+}
+
+/* this is the internal recrusive function for the merge sort */
+static Ecore_List_Node *
+_ecore_dlist_node_mergesort(Ecore_List_Node *first, int n,
+                           Ecore_Compare_Cb compare, int order)
+{
+   Ecore_List_Node *middle;
+   Ecore_List_Node *premid;
+   int mid;
+   int i;
+
+   mid = n/2;
+
+   if (n < 2)
+     return first;
+   else if (n == 2)
+     {
+       if (compare(first->data, first->next->data) * order > 0)
+          {
+               /* swap the data */
+               void *data;
+               data = first->next->data;
+               first->next->data = first->data;
+               first->data = data;
+         }
+      return first;
+    }
+
+   /* first find the premiddle node*/
+   for (premid = first, i = 0; i < mid - 1; i++)
+     premid = premid->next;
+
+   /* split the list */
+   middle = premid->next;
+   premid->next = NULL;
+   ECORE_DLIST_NODE(middle)->previous = NULL;
+
+   /* sort the the partial lists */
+   first = _ecore_dlist_node_mergesort(first, mid, compare, order);
+   middle = _ecore_dlist_node_mergesort(middle, n - mid, compare, order);
+
+   return _ecore_dlist_node_merge(first, middle, compare, order);
+}
+
+/* this function is used to merge the partial sorted lists */
+static Ecore_List_Node *
+_ecore_dlist_node_merge(Ecore_List_Node *first, Ecore_List_Node *second,
+                       Ecore_Compare_Cb compare, int order)
+{
+   Ecore_List_Node *list;
+   Ecore_List_Node *l;
+
+   /* select the first node outside the loop, because we need to keep
+    * a pointer to it */
+   if (compare(first->data, second->data) * order > 0)
+     {
+       list = l = second;
+       second = second->next;
+     }
+   else
+     {
+       list = l = first;
+       first = first->next;
+     }
+
+   /* and now start the merging */
+   while (first && second)
+     {
+       if (compare(first->data, second->data) * order > 0)
+         {
+               ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l);
+               l = l->next = second;
+               second = second->next;
+         }
+       else
+         {
+               ECORE_DLIST_NODE(first)->previous = ECORE_DLIST_NODE(l);
+               l = l->next = first;
+               first = first->next;
+         }
+     }
+
+   /* append the rest or set it to NULL */
+   if (first) 
+     {
+       ECORE_DLIST_NODE(first)->previous = ECORE_DLIST_NODE(l);
+        l->next = first;
+     }
+   else if (second)
+     {
+       ECORE_DLIST_NODE(second)->previous = ECORE_DLIST_NODE(l);
+       l->next = second;
+     }
+   else
+     l->next = NULL;
+
+   return list;
+}
+
+/*
+ * @brief Initialize a node to sane starting values
+ * @param node: the node to initialize
+ * @return Returns TRUE on success, FALSE on errors
+ */
+EAPI int 
+ecore_dlist_node_init(Ecore_DList_Node *node)
+{
+   int ret;
+
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   ret = ecore_list_node_init(ECORE_LIST_NODE(node));
+   if (ret)
+     node->previous = NULL;
+
+   return ret;
+}
+
+/*
+ * @brief Allocate and initialize a new list node
+ * @return Returns NULL on error, new list node on success
+ */
+EAPI Ecore_DList_Node *
+ecore_dlist_node_new()
+{
+   Ecore_DList_Node *new_node;
+
+   new_node = malloc(sizeof(Ecore_DList_Node));
+
+   if (!new_node)
+     return NULL;
+
+   if (!ecore_dlist_node_init(new_node))
+     {
+       FREE(new_node);
+       return NULL;
+     }
+
+   return new_node;
+}
+
+/*
+ * @brief Call the data's free callback function, then free the node
+ * @param node: the node to be freed
+ * @param free_func: the callback function to execute on the data
+ * @return Returns TRUE on success, FALSE on error
+ */
+EAPI int 
+ecore_dlist_node_destroy(Ecore_DList_Node * node, Ecore_Free_Cb free_func)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   return ecore_list_node_destroy(ECORE_LIST_NODE(node), free_func);
+}
diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c
new file mode 100644 (file)
index 0000000..4ba6856
--- /dev/null
@@ -0,0 +1,693 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef _WIN32
+# include <winsock2.h>
+#endif
+
+#include <math.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+
+#define FIX_HZ 1
+
+#ifdef FIX_HZ
+# include <sys/param.h>
+# ifndef HZ
+#  define HZ 100
+# endif
+#endif
+
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static int  _ecore_main_select(double timeout);
+static void _ecore_main_fd_handlers_cleanup(void);
+static void _ecore_main_fd_handlers_call(void);
+static int  _ecore_main_fd_handlers_buf_call(void);
+static void _ecore_main_loop_iterate_internal(int once_only);
+
+static int               in_main_loop = 0;
+static int               do_quit = 0;
+static Ecore_Fd_Handler *fd_handlers = NULL;
+static int               fd_handlers_delete_me = 0;
+
+static double            t1 = 0.0;
+static double            t2 = 0.0;
+
+/**
+ * @defgroup Ecore_Main_Loop_Group Main Loop Functions
+ *
+ * These functions control the Ecore event handling loop.  This loop is
+ * designed to work on embedded systems all the way to large and
+ * powerful mutli-cpu workstations.
+ *
+ * It serialises all system signals and events into a single event
+ * queue, that can be easily processed without needing to worry about
+ * concurrency.  A properly written, event-driven program using this
+ * kind of programming does not need threads.  It makes the program very
+ * robust and easy to follow.
+ *
+ * Here is an example of simple program and its basic event loop flow:
+ * @image html prog_flow.png
+ *
+ * For examples of setting up and using a main loop, see
+ * @ref event_handler_example.c and @ref timer_example.c.
+ */
+
+/**
+ * Runs a single iteration of the main loop to process everything on the
+ * queue.
+ * @ingroup Ecore_Main_Loop_Group
+ */
+EAPI void
+ecore_main_loop_iterate(void)
+{
+   _ecore_main_loop_iterate_internal(1);
+}
+
+/**
+ * Runs the application main loop.
+ *
+ * This function will not return until @ref ecore_main_loop_quit is called.
+ *
+ * @ingroup Ecore_Main_Loop_Group
+ */
+EAPI void
+ecore_main_loop_begin(void)
+{
+   in_main_loop++;
+   for (;do_quit == 0;) _ecore_main_loop_iterate_internal(0);
+   do_quit = 0;
+   in_main_loop--;
+}
+
+/**
+ * Quits the main loop once all the events currently on the queue have
+ * been processed.
+ * @ingroup Ecore_Main_Loop_Group
+ */
+EAPI void
+ecore_main_loop_quit(void)
+{
+   do_quit = 1;
+}
+
+/**
+ * @defgroup Ecore_FD_Handler_Group File Event Handling Functions
+ *
+ * Functions that deal with file descriptor handlers.
+ */
+
+/**
+ * Adds a callback for activity on the given file descriptor.
+ *
+ * @p func will be called during the execution of @ref ecore_main_loop_begin
+ * when the file descriptor is available for reading, or writing, or both.
+ *
+ * Normally the return value from the @p func is "zero means this handler is
+ * finished and can be deleted" as is usual for handler callbacks.  However,
+ * if the @p buf_func is supplied, then the return value from the @p func is 
+ * "non zero means the handler should be called again in a tight loop".
+ *
+ * @p buf_func is called during event loop handling to check if data that has
+ * been read from the file descriptor is in a buffer and is available to
+ * read.  Some systems (notably xlib) handle their own buffering, and would
+ * otherwise not work with select().  These systems should use a @p buf_func.
+ * This is a most annoying hack, only ecore_x uses it, so refer to that for
+ * an example.  NOTE - @p func should probably return "one" always if 
+ * @p buf_func is used, to avoid confusion with the other return value 
+ * semantics.
+ *
+ * @param   fd       The file descriptor to watch.
+ * @param   flags    To watch it for read (@c ECORE_FD_READ) and/or
+ *                   (@c ECORE_FD_WRITE) write ability.  @c ECORE_FD_ERROR
+ *
+ * @param   func     The callback function.
+ * @param   data     The data to pass to the callback.
+ * @param   buf_func The function to call to check if any data has been
+ *                   buffered and already read from the fd.  Can be @c NULL.
+ * @param   buf_data The data to pass to the @p buf_func function.
+ * @return  A fd handler handle if successful.  @c NULL otherwise.
+ * @ingroup Ecore_FD_Handler_Group
+ */
+EAPI Ecore_Fd_Handler *
+ecore_main_fd_handler_add(int fd, Ecore_Fd_Handler_Flags flags, int (*func) (void *data, Ecore_Fd_Handler *fd_handler), const void *data, int (*buf_func) (void *buf_data, Ecore_Fd_Handler *fd_handler), const void *buf_data)
+{
+   Ecore_Fd_Handler *fdh;
+
+   if ((fd < 0) ||
+       (flags == 0) ||
+       (!func)) return NULL;
+   fdh = calloc(1, sizeof(Ecore_Fd_Handler));
+   if (!fdh) return NULL;
+   ECORE_MAGIC_SET(fdh, ECORE_MAGIC_FD_HANDLER);
+   fdh->fd = fd;
+   fdh->flags = flags;
+   fdh->read_active = 0;
+   fdh->write_active = 0;
+   fdh->error_active = 0;
+   fdh->delete_me = 0;
+   fdh->func = func;
+   fdh->data = (void *)data;
+   fdh->buf_func = buf_func;
+   fdh->buf_data = (void *)buf_data;
+   fd_handlers = _ecore_list2_append(fd_handlers, fdh);
+   return fdh;
+}
+
+/**
+ * Deletes the given FD handler.
+ * @param   fd_handler The given FD handler.
+ * @return  The data pointer set using @ref ecore_main_fd_handler_add,
+ *          for @p fd_handler on success.  @c NULL otherwise.
+ * @ingroup Ecore_FD_Handler_Group
+ */
+EAPI void *
+ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_handler)
+{
+   if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER))
+     {
+       ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER,
+                        "ecore_main_fd_handler_del");
+       return NULL;
+     }
+   fd_handler->delete_me = 1;
+   fd_handlers_delete_me = 1;
+   return fd_handler->data;
+}
+
+EAPI void
+ecore_main_fd_handler_prepare_callback_set(Ecore_Fd_Handler *fd_handler, void (*func) (void *data, Ecore_Fd_Handler *fd_handler), const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER))
+     {
+       ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER,
+                        "ecore_main_fd_handler_prepare_callback_set");
+       return;
+     }
+   fd_handler->prep_func = func;
+   fd_handler->prep_data = (void *) data;
+}
+
+/**
+ * Retrieves the file descriptor that the given handler is handling.
+ * @param   fd_handler The given FD handler.
+ * @return  The file descriptor the handler is watching.
+ * @ingroup Ecore_FD_Handler_Group
+ */
+EAPI int
+ecore_main_fd_handler_fd_get(Ecore_Fd_Handler *fd_handler)
+{
+   if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER))
+     {
+       ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER,
+                        "ecore_main_fd_handler_fd_get");
+       return -1;
+     }
+   return fd_handler->fd;
+}
+
+/**
+ * Return if read, write or error, or a combination thereof, is active on the
+ * file descriptor of the given FD handler.
+ * @param   fd_handler The given FD handler.
+ * @param   flags      The flags, @c ECORE_FD_READ, @c ECORE_FD_WRITE or
+ *                     @c ECORE_FD_ERROR to query.
+ * @return  @c 1 if any of the given flags are active. @c 0 otherwise.
+ * @ingroup Ecore_FD_Handler_Group
+ */
+EAPI int
+ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags)
+{
+   int ret;
+
+   if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER))
+     {
+       ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER,
+                        "ecore_main_fd_handler_active_get");
+       return 0;
+     }
+   ret = 0;
+   if ((flags & ECORE_FD_READ) && (fd_handler->read_active)) ret = 1;
+   if ((flags & ECORE_FD_WRITE) && (fd_handler->write_active)) ret = 1;
+   if ((flags & ECORE_FD_ERROR) && (fd_handler->error_active)) ret = 1;
+   return ret;
+}
+
+/**
+ * Set what active streams the given FD handler should be monitoring.
+ * @param   fd_handler The given FD handler.
+ * @param   flags      The flags to be watching.
+ * @ingroup Ecore_FD_Handler_Group
+ */
+EAPI void
+ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler, Ecore_Fd_Handler_Flags flags)
+{
+   if (!ECORE_MAGIC_CHECK(fd_handler, ECORE_MAGIC_FD_HANDLER))
+     {
+       ECORE_MAGIC_FAIL(fd_handler, ECORE_MAGIC_FD_HANDLER,
+                        "ecore_main_fd_handler_active_set");
+       return;
+     }
+   fd_handler->flags = flags;
+}
+
+void
+_ecore_main_shutdown(void)
+{
+   if (in_main_loop)
+     {
+       fprintf(stderr,
+               "\n"
+               "*** ECORE WARINING: Calling ecore_shutdown() while still in the main loop.\n"
+               "***                 Program may crash or behave strangely now.\n");
+       return;
+     }
+   while (fd_handlers)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = fd_handlers;
+       fd_handlers = _ecore_list2_remove(fd_handlers, fdh);
+       ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE);
+       free(fdh);
+     }
+   fd_handlers_delete_me = 0;
+}
+
+static int
+_ecore_main_select(double timeout)
+{
+   struct timeval tv, *t;
+   fd_set         rfds, wfds, exfds;
+   int            max_fd;
+   int            ret;
+   Ecore_List2    *l;
+
+   t = NULL;
+   if ((!finite(timeout)) || (timeout == 0.0))  /* finite() tests for NaN, too big, too small, and infinity.  */
+     {
+       tv.tv_sec = 0;
+       tv.tv_usec = 0;
+       t = &tv;
+     }
+   else if (timeout > 0.0)
+     {
+       int sec, usec;
+
+#ifdef FIX_HZ
+       timeout += (0.5 / HZ);
+       sec = (int)timeout;
+       usec = (int)((timeout - (double)sec) * 1000000);
+#else
+       sec = (int)timeout;
+       usec = (int)((timeout - (double)sec) * 1000000);
+#endif
+       tv.tv_sec = sec;
+       tv.tv_usec = usec;
+       t = &tv;
+     }
+   max_fd = 0;
+   FD_ZERO(&rfds);
+   FD_ZERO(&wfds);
+   FD_ZERO(&exfds);
+
+   /* call the prepare callback for all handlers */
+   for (l = (Ecore_List2 *)fd_handlers; l; l = l->next)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = (Ecore_Fd_Handler *)l;
+
+       if (!fdh->delete_me && fdh->prep_func)
+               fdh->prep_func (fdh->prep_data, fdh);
+     }
+   for (l = (Ecore_List2 *)fd_handlers; l; l = l->next)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = (Ecore_Fd_Handler *)l;
+       if (fdh->flags & ECORE_FD_READ)
+         {
+            FD_SET(fdh->fd, &rfds);
+            if (fdh->fd > max_fd) max_fd = fdh->fd;
+         }
+       if (fdh->flags & ECORE_FD_WRITE)
+         {
+            FD_SET(fdh->fd, &wfds);
+            if (fdh->fd > max_fd) max_fd = fdh->fd;
+         }
+       if (fdh->flags & ECORE_FD_ERROR)
+         {
+            FD_SET(fdh->fd, &exfds);
+            if (fdh->fd > max_fd) max_fd = fdh->fd;
+         }
+     }
+   if (_ecore_signal_count_get()) return -1;
+   ret = select(max_fd + 1, &rfds, &wfds, &exfds, t);
+   if (ret < 0)
+     {
+       if (errno == EINTR) return -1;
+     }
+   if (ret > 0)
+     {
+       for (l = (Ecore_List2 *)fd_handlers; l; l = l->next)
+         {
+            Ecore_Fd_Handler *fdh;
+
+            fdh = (Ecore_Fd_Handler *)l;
+            if (!fdh->delete_me)
+              {
+                 if (FD_ISSET(fdh->fd, &rfds))
+                   fdh->read_active = 1;
+                 if (FD_ISSET(fdh->fd, &wfds))
+                   fdh->write_active = 1;
+                 if (FD_ISSET(fdh->fd, &exfds))
+                   fdh->error_active = 1;
+              }
+         }
+       _ecore_main_fd_handlers_cleanup();
+       return 1;
+     }
+   return 0;
+}
+
+static void
+_ecore_main_fd_handlers_cleanup(void)
+{
+   Ecore_List2 *l;
+
+   if (!fd_handlers_delete_me) return;
+   for (l = (Ecore_List2 *)fd_handlers; l;)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = (Ecore_Fd_Handler *)l;
+       l = l->next;
+       if (fdh->delete_me)
+         {
+            fd_handlers = _ecore_list2_remove(fd_handlers, fdh);
+            ECORE_MAGIC_SET(fdh, ECORE_MAGIC_NONE);
+            free(fdh);
+         }
+     }
+   fd_handlers_delete_me = 0;
+}
+
+static void
+_ecore_main_fd_handlers_call(void)
+{
+   Ecore_List2    *l;
+
+   for (l = (Ecore_List2 *)fd_handlers; l; l = l->next)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = (Ecore_Fd_Handler *)l;
+       if (!fdh->delete_me)
+         {
+            if ((fdh->read_active) ||
+                (fdh->write_active) ||
+                (fdh->error_active))
+              {
+                 if (!fdh->func(fdh->data, fdh))
+                   {
+                      fdh->delete_me = 1;
+                      fd_handlers_delete_me = 1;
+                   }
+                 fdh->read_active = 0;
+                 fdh->write_active = 0;
+                 fdh->error_active = 0;
+              }
+         }
+     }
+}
+
+static int
+_ecore_main_fd_handlers_buf_call(void)
+{
+   Ecore_List2    *l;
+   int ret;
+
+   ret = 0;
+   for (l = (Ecore_List2 *)fd_handlers; l; l = l->next)
+     {
+       Ecore_Fd_Handler *fdh;
+
+       fdh = (Ecore_Fd_Handler *)l;
+       if (!fdh->delete_me)
+         {
+            if (fdh->buf_func)
+              {
+                 if (fdh->buf_func(fdh->buf_data, fdh))
+                   {
+                      ret |= fdh->func(fdh->data, fdh);
+                      fdh->read_active = 1;
+                   }
+              }
+         }
+     }
+   return ret;
+}
+
+static int
+_ecore_main_win32_message(double timeout)
+{
+#ifdef _WIN32
+   MSG msg;
+
+   if (!finite(timeout))
+     timeout = 0.0;
+
+   if (timeout < 0.0)
+     {
+       for (;;)
+         {
+            if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
+              return 1;
+         }
+     }
+   else
+     {
+        double start;
+        double t;
+
+        start = ecore_time_get();
+        while ((t = ecore_time_get()) < (start + timeout))
+          {
+             if (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
+               return 1;
+          }
+     }
+#endif /* _WIN32 */
+
+   return 0;
+}
+
+static int
+_ecore_main_win32_message_buf_call(void)
+{
+#ifdef _WIN32
+   MSG msg;
+   int ret;
+
+   ret = 0;
+   if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
+     {
+        if ((msg.message & 0xffff) < 0xC000)
+          {
+             TranslateMessage(&msg);
+             DispatchMessage(&msg);
+          }
+        ret = 1;
+     }
+
+   return ret;
+#else
+   return 0;
+#endif /* _WIN32 */
+}
+
+static void
+_ecore_main_loop_iterate_internal(int once_only)
+{
+   double next_time;
+   int    have_event = 0;
+   int    have_signal;
+   int    have_msg = 0;
+
+   in_main_loop++;
+   /* expire any timers */
+     {
+       double now;
+
+       now = ecore_time_get();
+       while (_ecore_timer_call(now));
+       _ecore_timer_cleanup();
+     }
+   /* any timers re-added as a result of these are allowed to go */
+   _ecore_timer_enable_new();
+   /* process signals into events .... */
+   while (_ecore_signal_count_get()) _ecore_signal_call();
+   if (_ecore_event_exist())
+     {
+       have_event = 1;
+       have_signal = 1;
+       have_msg = 1;
+       _ecore_main_select(0.0);
+       _ecore_main_win32_message(0.0);
+       goto process_events;
+     }
+   /* call idle enterers ... */
+   if (!once_only)
+     _ecore_idle_enterer_call();
+   else
+     {
+       have_event = have_signal = have_msg = 0;
+
+       if (_ecore_main_select(0.0) > 0) have_event = 1;
+
+       if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
+       if (_ecore_signal_count_get() > 0) have_signal = 1;
+
+       if (have_signal || have_event || have_msg)
+         goto process_events;
+     }
+
+   /* if these calls caused any buffered events to appear - deal with them */
+   while (_ecore_main_fd_handlers_buf_call());
+   while (_ecore_main_win32_message_buf_call());
+
+   /* if ther are any - jump to processing them */
+   if (_ecore_event_exist())
+     {
+       have_event = 1;
+       have_signal = 1;
+       have_msg = 1;
+       _ecore_main_select(0.0);
+       _ecore_main_win32_message(0.0);
+       goto process_events;
+     }
+   if (once_only)
+     {
+       _ecore_idle_enterer_call();
+       in_main_loop--;
+       return;
+     }
+
+   if (_ecore_fps_debug)
+     {
+       t2 = ecore_time_get();
+       if ((t1 > 0.0) && (t2 > 0.0))
+         _ecore_fps_debug_runtime_add(t2 - t1);
+     }
+   start_loop:
+   if (do_quit)
+     {
+       in_main_loop--;
+       return;
+     }
+   if (!_ecore_event_exist())
+     {
+       /* init flags */
+       have_event = have_signal = have_msg = 0;
+       next_time = _ecore_timer_next_get();
+       /* no timers */
+       if (next_time < 0)
+         {
+            /* no idlers */
+            if (!_ecore_idler_exist())
+              {
+                 if (_ecore_main_select(-1.0) > 0) have_event = 1;
+                 if (_ecore_main_win32_message(-1.0) > 0) have_msg = 1;
+                 if (_ecore_signal_count_get() > 0) have_signal = 1;
+              }
+            /* idlers */
+            else
+              {
+                 for (;;)
+                   {
+                      if (!_ecore_idler_call()) goto start_loop;
+                      if (_ecore_event_exist()) break;
+                      if (_ecore_main_select(0.0) > 0) have_event = 1;
+                      if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
+                      if (_ecore_signal_count_get() > 0) have_signal = 1;
+                      if (have_event || have_signal || have_msg) break;
+                      next_time = _ecore_timer_next_get();
+                      if (next_time >= 0) goto start_loop;
+                      if (do_quit) break;
+                   }
+              }
+         }
+       /* timers */
+       else
+         {
+            /* no idlers */
+            if (!_ecore_idler_exist())
+              {
+                 if (_ecore_main_select(next_time) > 0) have_event = 1;
+                 if (_ecore_main_win32_message(next_time) > 0) have_msg = 1;
+                 if (_ecore_signal_count_get() > 0) have_signal = 1;
+              }
+            /* idlers */
+            else
+              {
+                 for (;;)
+                   {
+                      double cur_time, t;
+
+                      if (!_ecore_idler_call()) goto start_loop;
+                      if (_ecore_event_exist()) break;
+                      if (_ecore_main_select(0.0) > 0) have_event = 1;
+                      if (_ecore_main_win32_message(0.0) > 0) have_msg = 1;
+                      if (_ecore_signal_count_get() > 0) have_signal = 1;
+                      if (have_event || have_signal || have_msg) break;
+                      cur_time = ecore_time_get();
+                      t = ecore_time_get() - cur_time;
+                      if (t >= next_time) break;
+                      next_time = _ecore_timer_next_get();
+                      if (next_time < 0) goto start_loop;
+                      if (do_quit) break;
+                   }
+              }
+         }
+     }
+   if (_ecore_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   /* we came out of our "wait state" so idle has exited */
+   if (!once_only)
+     _ecore_idle_exiter_call();
+   /* call the fd handler per fd that became alive... */
+   /* this should read or write any data to the monitored fd and then */
+   /* post events onto the ecore event pipe if necessary */
+   process_events:
+   if (have_event) _ecore_main_fd_handlers_call();
+   do
+     {
+       /* process signals into events .... */
+       while (_ecore_signal_count_get()) _ecore_signal_call();
+       /* handle events ... */
+       _ecore_event_call();
+       _ecore_main_fd_handlers_cleanup();
+     }
+   while (_ecore_main_fd_handlers_buf_call());
+   if (have_msg) _ecore_main_win32_message_buf_call();
+   while (_ecore_main_win32_message_buf_call());
+/* ok - too much optimising. let's call idle enterers more often. if we
+ * have events that place more events or jobs etc. on the event queue
+ * we may never get to call an idle enterer
+   if (once_only)
+ */
+     _ecore_idle_enterer_call();
+   in_main_loop--;
+}
diff --git a/src/lib/ecore/ecore_path.c b/src/lib/ecore/ecore_path.c
new file mode 100644 (file)
index 0000000..5eb80b2
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "ecore_private.h"
+#include "Ecore_Data.h"
+#include "Ecore_Str.h"
+
+/**
+ * @defgroup Ecore_Path_Group Path Group Functions
+ *
+ * Functions that make it easier to find a file in a set of search paths.
+ *
+ * @todo Give this a better description.
+ */
+
+/**
+ * Creates a new path group.
+ * @param   group_name The name of the new group.
+ * @return  @c NULL on error, the handle of the new group on success.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI Ecore_Path_Group *
+ecore_path_group_new(void)
+{
+   return calloc(1, sizeof(Ecore_Path_Group));
+}
+
+/**
+ * Destroys a previously created path group
+ * @param   group The group to delete.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI void
+ecore_path_group_del(Ecore_Path_Group *group)
+{
+   CHECK_PARAM_POINTER("group", group);
+
+   if (group->paths)
+     ecore_list_destroy(group->paths);
+
+   free(group);
+}
+
+/**
+ * Adds a directory to be searched for files.
+ * @param   group    The group to add the path.
+ * @param   path     The new path to be added to the group.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI void
+ecore_path_group_add(Ecore_Path_Group *group, const char *path)
+{
+   CHECK_PARAM_POINTER("group", group);
+   CHECK_PARAM_POINTER("path", path);
+
+   if (!group->paths)
+     { 
+       group->paths = ecore_list_new();
+       ecore_list_free_cb_set(group->paths, free);
+     }
+
+   ecore_list_append(group->paths, strdup(path));
+}
+
+/**
+ * Removes the given directory from the given group.
+ * @param   group    The group to remove the path from.
+ * @param   path     The path of the directory to be removed.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI void
+ecore_path_group_remove(Ecore_Path_Group *group, const char *path)
+{
+   char *found;
+
+   CHECK_PARAM_POINTER("group", group);
+   CHECK_PARAM_POINTER("path", path);
+
+   if (!group->paths)
+     return;
+
+   /*
+    * Find the path in the list of available paths
+    */
+   ecore_list_first_goto(group->paths);
+
+   while ((found = ecore_list_current(group->paths)) && strcmp(found, path))
+     ecore_list_next(group->paths);
+
+   /*
+    * If the path is found, remove and free it
+    */
+   if (found)
+     ecore_list_remove_destroy(group->paths);
+}
+
+/**
+ * Finds a file in a group of paths.
+ * @param   group    The group to search.
+ * @param   name     The name of the file to find.
+ * @return  A pointer to a newly allocated path location of the found file
+ *          on success.  @c NULL on failure.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI char *
+ecore_path_group_find(Ecore_Path_Group *group, const char *name)
+{
+   int r;
+   char *p;
+   struct stat st;
+   char path[PATH_MAX];
+
+   CHECK_PARAM_POINTER_RETURN("group", group, NULL);
+   CHECK_PARAM_POINTER_RETURN("name", name, NULL);
+
+   if (!group->paths)
+     return NULL;
+
+   /*
+    * Search the paths of the path group for the specified file name
+    */
+   ecore_list_first_goto(group->paths);
+   p = ecore_list_next(group->paths);
+   do
+     {
+       snprintf(path, PATH_MAX, "%s/%s", p, name);
+       r = stat(path, &st);
+     }
+   while (((r < 0) || !S_ISREG(st.st_mode)) &&
+         (p = ecore_list_next(group->paths)));
+
+   if (p)
+     p = strdup(path);
+
+   return p;
+}
+
+/**
+ * Retrieves a list of all available files in the given path.
+ * @param   group_id The identifier for the given path.
+ * @return  A pointer to a newly allocated list of all files found in the paths
+ *          identified by @p group_id.  @c NULL otherwise.
+ * @ingroup Ecore_Path_Group
+ */
+EAPI Ecore_List *
+ecore_path_group_available(Ecore_Path_Group *group)
+{
+   Ecore_List *avail = NULL;
+   char *path;
+
+   CHECK_PARAM_POINTER_RETURN("group", group, NULL);
+
+   if (!group->paths || ecore_list_empty_is(group->paths))
+     return NULL;
+
+   ecore_list_first_goto(group->paths);
+
+   while ((path = ecore_list_next(group->paths)) != NULL)
+     {
+       DIR *dir;
+       struct stat st;
+       struct dirent *d;
+
+       stat(path, &st);
+
+       if (!S_ISDIR(st.st_mode))
+         continue;
+
+       dir = opendir(path);
+
+       if (!dir)
+         continue;
+
+       while ((d = readdir(dir)) != NULL)
+         {
+            char ppath[PATH_MAX];
+            char *ext;
+/*          char n[PATH_MAX];
+            int l;
+*/
+            if (!strncmp(d->d_name, ".", 1))
+              continue;
+
+            ext = strrchr(d->d_name, '.');
+
+            if (!ext || strncmp(ext, SHARED_LIB_SUFFIX, sizeof(SHARED_LIB_SUFFIX)))
+              continue;
+
+            snprintf(ppath, PATH_MAX, "%s/%s", path, d->d_name);
+
+            stat(ppath, &st);
+
+            if (!S_ISREG(st.st_mode))
+              continue;
+/*
+            l = strlen(d->d_name);
+
+            strncpy(n, d->d_name, l - 2);
+*/
+            if (!avail)
+              avail = ecore_list_new();
+
+/*          ecore_list_append(avail, strdup(n));*/
+            ecore_list_append(avail, strdup(d->d_name));
+         }
+     }
+
+   return avail;
+}
+
diff --git a/src/lib/ecore/ecore_plugin.c b/src/lib/ecore/ecore_plugin.c
new file mode 100644 (file)
index 0000000..ae63b9a
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#ifdef HAVE_DLFCN_H
+# include <dlfcn.h>
+#endif
+
+#ifdef HAVE_EVIL_H
+# include <evil.h>
+#endif
+
+#include "Ecore_Data.h"
+#include "Ecore_Str.h"
+#include "ecore_private.h"
+
+
+static Ecore_List *loaded_plugins = NULL;
+
+/**
+ * @defgroup Ecore_Plugin Plugin Functions
+ *
+ * Functions that load modules of compiled code into memory.
+ */
+
+/**
+ * Loads the specified plugin from the specified path group.
+ * @param   group       The path group to search for the plugin to load
+ * @param   plugin_name The name of the plugin to load.
+ * @param   version     The interface version of the plugin. With version
+ *                      equal to NULL the default will be loaded.
+ * @return  A pointer to the newly loaded plugin on success, @c NULL on
+ *          failure.
+ * @ingroup Ecore_Plugin
+ */
+EAPI Ecore_Plugin *
+ecore_plugin_load(Ecore_Path_Group *group, const char *plugin_name, const char *version)
+{
+   char *path;
+   char temp[PATH_MAX];
+
+   Ecore_Plugin *plugin;
+   void *handle = NULL;
+
+   CHECK_PARAM_POINTER_RETURN("plugin_name", plugin_name, NULL);
+
+   if (!version || *version == '\0')
+     snprintf(temp, sizeof(temp), "%s" SHARED_LIB_SUFFIX, plugin_name);
+   else
+     snprintf(temp, sizeof(temp), "%s" SHARED_LIB_SUFFIX ".%s", plugin_name, version);
+
+   path = ecore_path_group_find(group, temp);
+
+   if (!path && version)
+     {
+       /* if this file doesn't exist try a different order */
+       snprintf(temp, sizeof(temp), "%s.%s" SHARED_LIB_SUFFIX, plugin_name, version);
+       path = ecore_path_group_find(group, temp);
+     }
+
+   if (!path)
+     return NULL;
+
+   handle = dlopen(path, RTLD_LAZY);
+   if (!handle)
+     {
+       FREE(path);
+       return NULL;
+     }
+
+   /*
+    * Allocate the new plugin and initialize it's fields
+    */
+   plugin = malloc(sizeof(Ecore_Plugin));
+   if (!plugin)
+     {
+       dlclose(handle);
+       FREE(path);
+       return NULL;
+     }
+   memset(plugin, 0, sizeof(Ecore_Plugin));
+
+   plugin->handle = handle;
+
+   /*
+    * Now add it to the list of the groups loaded plugins
+    */
+   if (!loaded_plugins)
+     loaded_plugins = ecore_list_new();
+
+   ecore_list_append(loaded_plugins, plugin);
+
+   FREE(path);
+
+   return plugin;
+}
+
+/**
+ * Unloads the given plugin from memory.
+ * @param   plugin The given plugin.
+ * @ingroup Ecore_Plugin
+ */
+EAPI void
+ecore_plugin_unload(Ecore_Plugin *plugin)
+{
+   CHECK_PARAM_POINTER("plugin", plugin);
+
+   if (!plugin->handle)
+     return;
+
+   if (ecore_list_goto(loaded_plugins, plugin))
+     ecore_list_remove(loaded_plugins);
+
+   if (ecore_list_empty_is(loaded_plugins))
+     {
+       ecore_list_destroy(loaded_plugins);
+       loaded_plugins = NULL;
+     }
+
+   dlclose(plugin->handle);
+
+   FREE(plugin);
+}
+
+/*
+ * Searches for the specified symbol in the given plugin.
+ * @param   plugin      The given plugin.
+ * @param   symbol_name The symbol to search for.
+ * @return  Address of the given symbol if successful.  Otherwise, @c NULL.
+ * @ingroup Ecore_Plugin
+ */
+EAPI void *
+ecore_plugin_symbol_get(Ecore_Plugin *plugin, const char *symbol_name)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("plugin", plugin, NULL);
+   CHECK_PARAM_POINTER_RETURN("symbol_name", symbol_name, NULL);
+
+   if (!plugin->handle)
+     return NULL;
+
+   ret = dlsym(plugin->handle, symbol_name);
+
+   return ret;
+}
+
+/**
+ * Retrieves a list of all available plugins in the given path.
+ * @param   group_id The identifier for the given path.
+ * @return  A pointer to a newly allocated list of all plugins found in the
+ *          paths identified by @p group_id.  @c NULL otherwise.
+ * @ingroup Ecore_Plugin
+ */
+EAPI Ecore_List *
+ecore_plugin_available_get(Ecore_Path_Group *group)
+{
+   Ecore_List *avail = NULL;
+   Ecore_Hash *plugins = NULL;
+   char *path;
+
+   CHECK_PARAM_POINTER_RETURN("group", group, NULL);
+
+   if (!group->paths || ecore_list_empty_is(group->paths))
+     return NULL;
+
+   ecore_list_first_goto(group->paths);
+   plugins = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   ecore_hash_free_key_cb_set(plugins, free);
+
+   while ((path = ecore_list_next(group->paths)) != NULL)
+     {
+       DIR *dir;
+       struct stat st;
+       struct dirent *d;
+
+       if (stat(path, &st) < 0)
+         continue;
+
+       if (!S_ISDIR(st.st_mode))
+         continue;
+
+       dir = opendir(path);
+
+       if (!dir)
+         continue;
+
+       while ((d = readdir(dir)) != NULL)
+         {
+            char ppath[PATH_MAX];
+            char *ext;
+
+            if (*d->d_name == '.')
+              continue;
+
+            if (!ecore_str_has_suffix(d->d_name, SHARED_LIB_SUFFIX))
+              continue;
+
+            snprintf(ppath, PATH_MAX, "%s/%s", path, d->d_name);
+
+            stat(ppath, &st);
+
+            if (!S_ISREG(st.st_mode))
+              continue;
+
+            ecore_strlcpy(ppath, d->d_name, sizeof(ppath));
+            ext = strrchr(ppath, '.');
+            *ext = '\0';
+
+            if (!ecore_hash_get(plugins, ppath))
+              {
+                 char *key;
+
+                 key = strdup(ppath);
+                 ecore_hash_set(plugins, key, key);
+              }
+         }
+       closedir(dir);
+     }
+
+   ecore_hash_free_key_cb_set(plugins, NULL);
+   avail = ecore_hash_keys(plugins);
+   ecore_list_free_cb_set(avail, free);
+   ecore_hash_destroy(plugins);
+
+   return avail;
+}
diff --git a/src/lib/ecore/ecore_poll.c b/src/lib/ecore/ecore_poll.c
new file mode 100644 (file)
index 0000000..74eee7f
--- /dev/null
@@ -0,0 +1,353 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static Ecore_Timer    *timer = NULL;
+static int             min_interval = -1;
+static int             interval_incr = 0;
+static int             at_tick = 0;
+static int             just_added_poller = 0;
+static int             poller_delete_count = 0;
+static int             poller_walking = 0;
+static double          poll_interval = 0.125;
+static double          poll_cur_interval = 0.0;
+static double          last_tick = 0.0;
+static Ecore_Poller   *pollers[16] = 
+{
+   NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
+   NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
+};
+static unsigned short  poller_counters[16] = 
+{
+   0,0,0,0,0,0,0,0,
+   0,0,0,0,0,0,0,0
+};
+
+static void _ecore_poller_next_tick_eval(void);
+static int _ecore_poller_cb_timer(void *data);
+
+static void
+_ecore_poller_next_tick_eval(void)
+{
+   int i;
+   double interval;
+   
+   min_interval = -1;
+   for (i = 0; i < 15; i++)
+     {
+       if (pollers[i])
+         {
+            min_interval = i;
+            break;
+         }
+     }
+   if (min_interval < 0)
+     {
+       /* no pollers */
+       if (timer)
+         {
+            ecore_timer_del(timer);
+            timer = NULL;
+         }
+       return;
+     }
+   interval_incr = (1 << min_interval);
+   interval = interval_incr * poll_interval;
+   /* we are at the tick callback - so no need to do inter-tick adjustments
+    * so we can fasttrack this as t -= last_tick in theory is 0.0 (though
+    * in practice it will be a very very very small value. also the tick
+    * callback will adjust the timer interval at the end anyway */
+   if (at_tick)
+     {
+       if (!timer)
+         timer = ecore_timer_add(interval, _ecore_poller_cb_timer, NULL);
+     }
+   else
+     {
+       double t;
+       
+       if (!timer)
+         timer = ecore_timer_add(interval, _ecore_poller_cb_timer, NULL);
+       else
+         {
+            t = ecore_time_get();
+            if (interval != poll_cur_interval)
+              {
+                 t -= last_tick; /* time since we last ticked */
+                 /* delete the timer and reset it to tick off in the new
+                  * time interval. at the tick this will be adjusted */
+                 ecore_timer_del(timer);
+                 timer = ecore_timer_add(interval - t, 
+                                         _ecore_poller_cb_timer, NULL);
+              }
+         }
+     }
+   poll_cur_interval = interval;
+}
+
+static int
+_ecore_poller_cb_timer(void *data)
+{
+   int i;
+   Ecore_List2 *l;
+   Ecore_Poller *poller;
+   int changes = 0;
+
+   at_tick++;
+   last_tick = ecore_time_get();
+   /* we have 16 counters - each incriments every time the poller counter
+    * "ticks". it incriments by the minimum interval (which can be 1, 2, 4,
+    * 7, 16 etc. up to 32768) */
+   for (i = 0; i < 15; i++)
+     {
+       poller_counters[i] += interval_incr;
+       /* wrap back to 0 if we exceed out loop count for the counter */
+       if (poller_counters[i] >= (1 << i)) poller_counters[i] = 0;
+     }
+   
+   just_added_poller = 0;
+   /* walk the pollers now */
+   poller_walking++;
+   for (i = 0; i < 15; i++)
+     {
+       /* if the counter is @ 0 - this means that counter "went off" this
+        * tick interval, so run all pollers hooked to that counter */
+       if (poller_counters[i] == 0)
+         {
+            for (l = (Ecore_List2 *)pollers[i]; l; l = l->next)
+              {
+                 poller = (Ecore_Poller *)l;
+                 if (!poller->delete_me)
+                   {
+                      if (!poller->func(poller->data))
+                        {
+                           if (!poller->delete_me)
+                             {
+                                poller->delete_me = 1;
+                                poller_delete_count++;
+                             }
+                        }
+                   }
+              }
+         }
+     }
+   poller_walking--;
+       
+   /* handle deletes afterwards */
+   if (poller_delete_count > 0)
+     {
+       /* FIXME: walk all pollers and remove deleted ones */
+       for (i = 0; i < 15; i++)
+         {
+             for (l = (Ecore_List2 *)pollers[i]; l;)
+              {
+                  poller = (Ecore_Poller *)l;
+                 l = l->next;
+                 if (poller->delete_me)
+                   {
+                      pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+                      free(poller);
+                      poller_delete_count--;
+                      changes++;
+                      if (poller_delete_count <= 0) break;
+                   }
+              }
+            if (poller_delete_count <= 0) break;
+         }
+     }
+   /* if we deleted or added any pollers, then we need to re-evaluate our
+    * minimum poll interval */
+   if ((changes > 0) || (just_added_poller > 0))
+     _ecore_poller_next_tick_eval();
+
+   just_added_poller = 0;
+   poller_delete_count = 0;
+   
+   at_tick--;
+   
+   /* if the timer was deleted then there is no point returning 1 - ambiguous
+    * if we do as it im plies "keep running me" but we have been deleted 
+    * anyway */
+   if (!timer) return 0;
+
+   /* adjust interval */
+   ecore_timer_interval_set(timer, poll_cur_interval);
+   return 1;
+}
+
+/**
+ * @defgroup Ecore_Poll_Group Ecore Poll Functions
+ *
+ * These functions are for the need to poll information, but provide a shared
+ * abstracted API to pool such polling to minimise wakeup and ensure all the
+ * polling happens in as few spots as possible areound a core poll interval.
+ * For now only 1 core poller type is supprted: ECORE_POLLER_CORE
+ */
+
+
+/**
+ * Sets the time between ticks (in seconds) for the given ticker clock.
+ * @param   type The ticker type to adjust
+ * @param   poll_time The time (in seconds) between ticks of the clock
+ * @ingroup Ecore_Poller_Group
+ * 
+ * This will adjust the time between ticks of the given ticker type defined
+ * by @p type to the time period defined by @p poll_time.
+ */
+EAPI void
+ecore_poller_poll_interval_set(Ecore_Poller_Type type, double poll_time)
+{
+   poll_interval = poll_time;
+   _ecore_poller_next_tick_eval();
+}
+
+/**
+ * Gets the time between ticks (in seconds) for the fiven ticker clock.
+ * @param   type The ticker type to query
+ * @return  The time in seconds between ticks of the ticker clock
+ * @ingroup Ecore_Poller_Group
+ * 
+ * This will get the time between ticks of the specifider ticker clock.
+ */
+EAPI double
+ecore_poller_poll_interval_get(Ecore_Poller_Type type)
+{
+   return poll_interval;
+}
+
+/**
+ * Creates a poller to call the given function at a particular tick interval.
+ * @param   type The ticker type to attach the poller to
+ * @param   interval The poll interval
+ * @param   func The given function.  If @p func returns 1, the poller is
+ *               rescheduled for the next tick interval.
+ * @param   data Data to pass to @p func when it is called.
+ * @return  A poller object on success.  @c NULL on failure.
+ * @ingroup Ecore_Poller_Group
+ *
+ * This function adds a poller callback that is to be called regularly
+ * along with all other poller callbacks so the pollers are synchronized with
+ * all other pollers running off the same poller type and at the same tick
+ * interval. This should be used for polling things when polling is desired
+ * or required, and you do not have specific requirements on the exact times
+ * to poll and want to avoid extra process wakeups for polling. This will
+ * save power as the CPU has more of a chance to go into a low power state
+ * the longer it is asleep for, so this should be used if you are at all
+ * power conscious.
+ * 
+ * The @p type parameter defines the poller tick type (there is a virtual
+ * clock ticking all the time - though ecore avoids making it tick when
+ * there will not be any work to do at that tick point). There is only one
+ * ticker at the moment - that is ECORE_POLLER_CORE. This is here for future
+ * expansion if multiple clocks with different frequencies are really required.
+ * The default time between ticks for the ECORE_POLLER_CORE ticker is 0.125
+ * seconds.
+ * 
+ * The @p interval is the number of ticker ticks that will pass by in between
+ * invocations of the @p func callback. This must be between 1 and 32768
+ * inclusive, and must be a power of 2 (i.e. 1, 2, 4, 8, 16, ... 16384, 32768).
+ * If it is 1, then the function will be called every tick. if it is 2, then it
+ * will be called every 2nd tick, if it is 8, then every 8th tick etc. Exactly
+ * which tick is undefined, as only the interval between calls can be defined.
+ * Ecore will endeavour to keep pollers synchronised and to call as many in
+ * 1 wakeup event as possible.
+ * 
+ * This function adds a poller and returns its handle on success and NULL on
+ * failure. The function @p func will be called at tick intervals described
+ * above. The function will be passed the @p data pointer as its parameter.
+ * 
+ * When the poller @p func is called, it must return a value of either 
+ * 1 (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). If it 
+ * returns 1, it will be called again at the next tick, or if it returns
+ * 0 it will be deleted automatically making any references/handles for it
+ * invalid.
+ */
+EAPI Ecore_Poller *
+ecore_poller_add(Ecore_Poller_Type type, int interval, int (*func) (void *data), const void *data)
+{
+   Ecore_Poller *poller;
+   int ibit;
+   
+   if (!func) return NULL;
+   if (interval < 1) interval = 1;
+   
+   poller = calloc(1, sizeof(Ecore_Poller));
+   if (!poller) return NULL;
+   ECORE_MAGIC_SET(poller, ECORE_MAGIC_POLLER);
+   /* interval MUST be a power of 2, so enforce it */
+   if (interval < 1) interval = 1;
+   ibit = -1;
+   while (interval != 0)
+     {
+       ibit++;
+       interval >>= 1;
+     }
+   /* only allow up to 32768 - i.e. ibit == 15, so limit it */
+   if (ibit > 15) ibit = 15;
+   
+   poller->ibit = ibit;
+   poller->func = func;
+   poller->data = (void *)data;
+   pollers[poller->ibit] = _ecore_list2_prepend(pollers[poller->ibit], poller);
+   if (poller_walking)
+     just_added_poller++;
+   else
+     _ecore_poller_next_tick_eval();
+   return poller;
+}
+
+/**
+ * Delete the specified poller from the timer list.
+ * @param   poller The poller to delete.
+ * @return  The data pointer set for the timer when @ref ecore_poller_add was
+ *          called.  @c NULL is returned if the function is unsuccessful.
+ * @ingroup Ecore_Poller_Group
+ *
+ * Note: @p poller must be a valid handle. If the poller function has already
+ * returned 0, the handle is no longer valid (and does not need to be delete).
+ */
+EAPI void *
+ecore_poller_del(Ecore_Poller *poller)
+{
+   void *data;
+   
+   if (!ECORE_MAGIC_CHECK(poller, ECORE_MAGIC_POLLER))
+     {
+       ECORE_MAGIC_FAIL(poller, ECORE_MAGIC_POLLER,
+                        "ecore_poller_del");
+       return NULL;
+     }
+   /* we are walking the poller list - a bad idea to remove from it while
+    * walking it, so just flag it as delete_me and come back to it after
+    * the loop has finished */
+   if (poller_walking > 0)
+     {
+       poller_delete_count++;
+       poller->delete_me = 1;
+       return poller->data;
+     }
+   /* not in loop so safe - delete immediately */
+   data = poller->data;
+   pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+   free(poller);
+   _ecore_poller_next_tick_eval();
+   return data;
+}
+
+void
+_ecore_poller_shutdown(void)
+{
+   int i;
+   Ecore_List2 *l;
+   Ecore_Poller *poller;
+   
+   for (i = 0; i < 15; i++)
+     {
+       for (l = (Ecore_List2 *)pollers[i]; l;)
+         {
+            poller = (Ecore_Poller *)l;
+            l = l->next;
+            pollers[poller->ibit] = _ecore_list2_remove(pollers[poller->ibit], poller);
+            free(poller);
+         }
+     }
+}
diff --git a/src/lib/ecore/ecore_private.h b/src/lib/ecore/ecore_private.h
new file mode 100644 (file)
index 0000000..50ae9b9
--- /dev/null
@@ -0,0 +1,477 @@
+#ifndef _ECORE_PRIVATE_H
+#define _ECORE_PRIVATE_H
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <dirent.h>
+
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#endif
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#ifdef __GNUC__
+# if __GNUC__ >= 4
+// BROKEN in gcc 4 on amd64
+//#  pragma GCC visibility push(hidden)
+# endif
+#endif
+
+#if HAVE___ATTRIBUTE__
+# define __UNUSED__ __attribute__((unused))
+#else
+# define __UNUSED__
+#endif
+
+#ifndef PATH_MAX
+# define PATH_MAX 4096
+#endif
+
+#ifndef MIN
+# define MIN(x, y) (((x) > (y)) ? (y) : (x))
+#endif
+
+#ifndef MAX
+# define MAX(x, y) (((x) > (y)) ? (x) : (y))
+#endif
+
+#ifndef ABS
+# define ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+
+#ifndef CLAMP
+# define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x)))
+#endif
+
+#define READBUFSIZ 65536
+
+#define ECORE_MAGIC_NONE            0x1234fedc
+#define ECORE_MAGIC_EXE             0xf7e812f5
+#define ECORE_MAGIC_TIMER           0xf7d713f4
+#define ECORE_MAGIC_IDLER           0xf7c614f3
+#define ECORE_MAGIC_IDLE_ENTERER    0xf7b515f2
+#define ECORE_MAGIC_IDLE_EXITER     0xf7601afd
+#define ECORE_MAGIC_FD_HANDLER      0xf7a416f1
+#define ECORE_MAGIC_EVENT_HANDLER   0xf79317f0
+#define ECORE_MAGIC_EVENT_FILTER    0xf78218ff
+#define ECORE_MAGIC_EVENT           0xf77119fe
+#define ECORE_MAGIC_ANIMATOR        0xf7643ea5
+#define ECORE_MAGIC_POLLER          0xf7568127
+
+#define ECORE_MAGIC                 Ecore_Magic  __magic
+
+#define ECORE_MAGIC_SET(d, m)       (d)->__magic = (m)
+#define ECORE_MAGIC_CHECK(d, m)     ((d) && ((d)->__magic == (m)))
+#define ECORE_MAGIC_FAIL(d, m, fn)  _ecore_magic_fail((d), (d) ? (d)->__magic : 0, (m), (fn));
+
+/* undef the following, we want our version */
+#undef FREE
+#define FREE(ptr) free(ptr); ptr = NULL;
+
+#undef IF_FREE
+#define IF_FREE(ptr) if (ptr) free(ptr); ptr = NULL;
+
+#undef IF_FN_DEL
+#define IF_FN_DEL(_fn, ptr) if (ptr) { _fn(ptr); ptr = NULL; }
+
+inline void ecore_print_warning(const char *function, const char *sparam);
+
+/* convenience macros for checking pointer parameters for non-NULL */
+#undef CHECK_PARAM_POINTER_RETURN
+#define CHECK_PARAM_POINTER_RETURN(sparam, param, ret) \
+     if (!(param)) \
+        { \
+           ecore_print_warning(__FUNCTION__, sparam); \
+           return ret; \
+        }
+
+#undef CHECK_PARAM_POINTER
+#define CHECK_PARAM_POINTER(sparam, param) \
+     if (!(param)) \
+        { \
+           ecore_print_warning(__FUNCTION__, sparam); \
+           return; \
+        }
+
+typedef unsigned int              Ecore_Magic;
+
+typedef struct _Ecore_List2       Ecore_List2;
+typedef struct _Ecore_List2_Data  Ecore_List2_Data;
+
+struct _Ecore_List2
+{
+   Ecore_List2  *next, *prev;
+   Ecore_List2  *last;
+};
+
+struct _Ecore_List2_Data
+{
+   Ecore_List2   __list_data;
+   void *data;
+};
+
+#ifndef _ECORE_H
+enum _Ecore_Fd_Handler_Flags
+{
+   ECORE_FD_READ = 1,
+   ECORE_FD_WRITE = 2,
+   ECORE_FD_ERROR = 4
+};
+typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags;
+enum _Ecore_Exe_Flags
+{
+   ECORE_EXE_PIPE_READ = 1,
+   ECORE_EXE_PIPE_WRITE = 2,
+   ECORE_EXE_PIPE_ERROR = 4,
+   ECORE_EXE_PIPE_READ_LINE_BUFFERED = 8,
+   ECORE_EXE_PIPE_ERROR_LINE_BUFFERED = 16,
+   ECORE_EXE_PIPE_AUTO = 32,
+   ECORE_EXE_RESPAWN = 64,
+   ECORE_EXE_USE_SH = 128,
+   ECORE_EXE_NOT_LEADER = 256
+   /* FIXME: Getting respawn to work
+    *
+    * There is no way that we can do anything about the internal state info of
+    * an external exe.  The same can be said about the state of user code.  User
+    * code in this context means the code that is using ecore_exe to manage exe's
+    * for it.
+    *
+    * Document that the exe must be respawnable, in other words, there is no
+    * state that it cannot regenerate by just killing it and starting it again.
+    * This includes state that the user code knows about, as the respawn is
+    * transparent to that code.  On the other hand, maybe a respawn event might
+    * be useful, or maybe resend the currently non existant add event.  For
+    * consistancy with ecore_con, an add event is good anyway.
+    *
+    * The Ecore_exe structure is reused for respawning, so that the (opaque)
+    * pointer held by the user remains valid.  This means that the Ecore_Exe
+    * init and del functions may need to be split into two parts each to avoid
+    * duplicating code - common code part, and the rest.  This implies that
+    * the unchanging members mentioned next should NEVER change.
+    *
+    * These structure members don't need to change -
+    *   __list_data       - we stay on the list
+    *   ECORE_MAGIC       - this is a constant
+    *   data              - passed in originally
+    *   cmd               - passed in originally
+    *   flags             - passed in originally
+    *
+    * These structure members need to change -
+    *   tag               - state that must be regenerated, zap it
+    *   pid               - it will be different
+    *   child_fd_write    - it will be different
+    *   child_fd_read     - it will be different
+    *   child_fd_error    - it will be different
+    *   write_fd_handler  - we cannot change the fd used by a handler, this changes coz the fd changes.
+    *   read_fd_handler   - we cannot change the fd used by a handler, this changes coz the fd changes.
+    *   error_fd_handler  - we cannot change the fd used by a handler, this changes coz the fd changes.
+    *
+    * Hmm, the read, write, and error buffers could be tricky.
+    * They are not atomic, and could be in a semi complete state.
+    * They fall into the "state must be regenerated" mentioned above.
+    * A respawn/add event should take care of it.
+    *
+    * These structure members need to change -
+    *   write_data_buf    - state that must be regenerated, zap it
+    *   write_data_size   - state that must be regenerated, zap it
+    *   write_data_offset - state that must be regenerated, zap it
+    *   read_data_buf     - state that must be regenerated, zap it
+    *   read_data_size    - state that must be regenerated, zap it
+    *   error_data_buf    - state that must be regenerated, zap it
+    *   error_data_size   - state that must be regenerated, zap it
+    *   close_write       - state that must be regenerated, zap it
+    *
+    * There is the problem that an exe that fell over and needs respawning
+    * might keep falling over, keep needing to be respawned, and tie up system
+    * resources with the constant respawning.  An exponentially increasing
+    * timeout (with maximum timeout) between respawns should take care of that.
+    * Although this is not a "contention for a resource" problem, the exe falling
+    * over may be, so a random element added to the timeout may help, and won't
+    * hurt.  The user code may need to be informed that a timeout is in progress.
+    */
+};
+typedef enum _Ecore_Exe_Flags Ecore_Exe_Flags;
+enum _Ecore_Poller_Type
+{
+   ECORE_POLLER_CORE = 0
+};
+typedef enum _Ecore_Poller_Type Ecore_Poller_Type;
+
+#ifndef _WIN32
+typedef struct _Ecore_Exe           Ecore_Exe;
+#endif
+typedef struct _Ecore_Timer         Ecore_Timer;
+typedef struct _Ecore_Idler         Ecore_Idler;
+typedef struct _Ecore_Idle_Enterer  Ecore_Idle_Enterer;
+typedef struct _Ecore_Idle_Exiter   Ecore_Idle_Exiter;
+typedef struct _Ecore_Fd_Handler    Ecore_Fd_Handler;
+typedef struct _Ecore_Event_Handler Ecore_Event_Handler;
+typedef struct _Ecore_Event_Filter  Ecore_Event_Filter;
+typedef struct _Ecore_Event         Ecore_Event;
+typedef struct _Ecore_Animator      Ecore_Animator;
+typedef struct _Ecore_Poller        Ecore_Poller;
+
+#ifndef _WIN32
+struct _Ecore_Exe
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   pid_t        pid;
+   void        *data;
+   char        *tag;
+   char        *cmd;
+   Ecore_Exe_Flags  flags;
+   Ecore_Fd_Handler *write_fd_handler; /* the fd_handler to handle write to child - if this was used, or NULL if not */
+   Ecore_Fd_Handler *read_fd_handler; /* the fd_handler to handle read from child - if this was used, or NULL if not */
+   Ecore_Fd_Handler *error_fd_handler; /* the fd_handler to handle errors from child - if this was used, or NULL if not */
+   void        *write_data_buf; /* a data buffer for data to write to the child -
+                                 * realloced as needed for more data and flushed when the fd handler says writes are possible
+                                */
+   int          write_data_size; /* the size in bytes of the data buffer */
+   int          write_data_offset; /* the offset in bytes in the data buffer */
+   void        *read_data_buf; /* data read from the child awating delivery to an event */
+   int          read_data_size; /* data read from child in bytes */
+   void        *error_data_buf; /* errors read from the child awating delivery to an event */
+   int          error_data_size; /* errors read from child in bytes */
+   int          child_fd_write;        /* fd to write TO to send data to the child */
+   int          child_fd_read; /* fd to read FROM when child has sent us (the parent) data */
+   int          child_fd_error;        /* fd to read FROM when child has sent us (the parent) errors */
+   int          child_fd_write_x;      /* fd to write TO to send data to the child */
+   int          child_fd_read_x;       /* fd to read FROM when child has sent us (the parent) data */
+   int          child_fd_error_x;      /* fd to read FROM when child has sent us (the parent) errors */
+   int          close_stdin;
+
+   int start_bytes, end_bytes, start_lines, end_lines; /* Number of bytes/lines to auto pipe at start/end of stdout/stderr. */
+
+   Ecore_Timer *doomsday_clock; /* The Timer of Death.  Muahahahaha. */
+   void        *doomsday_clock_dead; /* data for the doomsday clock */
+};
+#endif
+
+struct _Ecore_Timer
+{
+   Ecore_List2     __list_data;
+   ECORE_MAGIC;
+   double          in;
+   double          at;
+   double          pending;
+   unsigned char   delete_me : 1;
+   unsigned char   just_added : 1;
+   unsigned char   frozen : 1;
+   int           (*func) (void *data);
+   void           *data;
+};
+
+struct _Ecore_Idler
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          delete_me : 1;
+   int        (*func) (void *data);
+   void        *data;
+};
+
+struct _Ecore_Idle_Enterer
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          delete_me : 1;
+   int        (*func) (void *data);
+   void        *data;
+};
+
+struct _Ecore_Idle_Exiter
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          delete_me : 1;
+   int        (*func) (void *data);
+   void        *data;
+};
+
+struct _Ecore_Fd_Handler
+{
+   Ecore_List2               __list_data;
+   ECORE_MAGIC;
+   int                      fd;
+   Ecore_Fd_Handler_Flags   flags;
+   int                      read_active : 1;
+   int                      write_active : 1;
+   int                      error_active : 1;
+   int                      delete_me : 1;
+   int                    (*func) (void *data, Ecore_Fd_Handler *fd_handler);
+   void                    *data;
+   int                    (*buf_func) (void *data, Ecore_Fd_Handler *fd_handler);
+   void                    *buf_data;
+   void                   (*prep_func) (void *data, Ecore_Fd_Handler *fd_handler);
+   void                    *prep_data;
+};
+
+struct _Ecore_Event_Handler
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          type;
+   int          delete_me : 1;
+   int        (*func) (void *data, int type, void *event);
+   void        *data;
+};
+
+struct _Ecore_Event_Filter
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          delete_me : 1;
+   void *     (*func_start) (void *data);
+   int        (*func_filter) (void *data, void *loop_data, int type, void *event);
+   void       (*func_end) (void *data, void *loop_data);
+   void        *loop_data;
+   void        *data;
+};
+
+struct _Ecore_Event
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          type;
+   void        *event;
+   int          delete_me : 1;
+   void       (*func_free) (void *data, void *ev);
+   void        *data;
+};
+
+struct _Ecore_Animator
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   signed char  delete_me : 1;
+   int        (*func) (void *data);
+   void        *data;
+};
+
+struct _Ecore_Poller
+{
+   Ecore_List2   __list_data;
+   ECORE_MAGIC;
+   int          ibit;
+   signed char  delete_me : 1;
+   int        (*func) (void *data);
+   void        *data;
+};
+
+#endif
+
+EAPI void          _ecore_magic_fail(void *d, Ecore_Magic m, Ecore_Magic req_m, const char *fname);
+
+void          _ecore_timer_shutdown(void);
+void          _ecore_timer_cleanup(void);
+void          _ecore_timer_enable_new(void);
+double        _ecore_timer_next_get(void);
+int           _ecore_timer_call(double when);
+
+void          _ecore_idler_shutdown(void);
+int           _ecore_idler_call(void);
+int           _ecore_idler_exist(void);
+
+void          _ecore_idle_enterer_shutdown(void);
+void          _ecore_idle_enterer_call(void);
+int           _ecore_idle_enterer_exist(void);
+
+void          _ecore_idle_exiter_shutdown(void);
+void          _ecore_idle_exiter_call(void);
+int           _ecore_idle_exiter_exist(void);
+
+void          _ecore_event_shutdown(void);
+int           _ecore_event_exist(void);
+Ecore_Event  *_ecore_event_add(int type, void *ev, void (*func_free) (void *data, void *ev), void *data);
+void         *_ecore_event_del(Ecore_Event *event);
+void          _ecore_event_call(void);
+
+EAPI void         *_ecore_event_signal_user_new(void);
+void         *_ecore_event_signal_hup_new(void);
+void         *_ecore_event_signal_exit_new(void);
+void         *_ecore_event_signal_power_new(void);
+void         *_ecore_event_signal_realtime_new(void);
+
+void          _ecore_main_shutdown(void);
+
+#ifdef _WIN32
+static inline void _ecore_signal_shutdown(void) { }
+static inline void _ecore_signal_init(void) { }
+static inline int  _ecore_signal_count_get(void) { return 0; }
+static inline void _ecore_signal_call(void) { }
+#else
+void          _ecore_signal_shutdown(void);
+void          _ecore_signal_init(void);
+int           _ecore_signal_count_get(void);
+void          _ecore_signal_call(void);
+#endif
+
+#ifdef _WIN32
+static inline void _ecore_exe_init(void) { }
+static inline void _ecore_exe_shutdown(void) { }
+#else
+void          _ecore_exe_init(void);
+void          _ecore_exe_shutdown(void);
+Ecore_Exe    *_ecore_exe_find(pid_t pid);
+void         *_ecore_exe_event_del_new(void);
+void          _ecore_exe_event_del_free(void *data, void *ev);
+#endif
+
+void          _ecore_animator_shutdown(void);
+
+void          _ecore_poller_shutdown(void);
+
+EAPI void         *_ecore_list2_append           (void *in_list, void *in_item);
+EAPI void         *_ecore_list2_prepend          (void *in_list, void *in_item);
+EAPI void         *_ecore_list2_append_relative  (void *in_list, void *in_item, void *in_relative);
+EAPI void         *_ecore_list2_prepend_relative (void *in_list, void *in_item, void *in_relative);
+EAPI void         *_ecore_list2_remove           (void *in_list, void *in_item);
+EAPI void         *_ecore_list2_find             (void *in_list, void *in_item);
+
+void          _ecore_fps_debug_init(void);
+void          _ecore_fps_debug_shutdown(void);
+void          _ecore_fps_debug_runtime_add(double t);
+
+
+
+extern int    _ecore_fps_debug;
+
+#endif
diff --git a/src/lib/ecore/ecore_sheap.c b/src/lib/ecore/ecore_sheap.c
new file mode 100644 (file)
index 0000000..e6697dc
--- /dev/null
@@ -0,0 +1,446 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+
+#define HEAP_INCREMENT 4096
+
+#define PARENT(i) (i / 2)
+#define LEFT(i) (2 * i)
+#define RIGHT(i) (2 * i + 1)
+
+static void _ecore_sheap_heapify(Ecore_Sheap *heap, int i);
+static void _ecore_sheap_update_data(Ecore_Sheap *heap);
+
+/**
+ * Allocate and initialize a new binary heap
+ * @param compare The function for comparing keys, NULL for direct comparison
+ * @param size    The number of elements to allow in the heap
+ * @return A pointer to the newly allocated binary heap on success, NULL on
+ * failure.
+ */
+EAPI Ecore_Sheap *
+ecore_sheap_new(Ecore_Compare_Cb compare, int size)
+{
+   Ecore_Sheap *heap = NULL;
+
+   heap = (Ecore_Sheap *)malloc(sizeof(Ecore_Sheap));
+   if (!heap)
+     return NULL;
+   memset(heap, 0, sizeof(Ecore_Sheap));
+
+   if (!ecore_sheap_init(heap, compare, size))
+     {
+       FREE(heap);
+       return NULL;
+     }
+
+   return heap;
+}
+
+/**
+ * Initialize a binary heap to default values
+ * @param heap    The heap to initialize
+ * @param compare The function for comparing keys, NULL for direct comparison
+ * @param size    The number of elements to allow in the heap
+ * @return        TRUE on success, FALSE on failure
+ */
+EAPI int 
+ecore_sheap_init(Ecore_Sheap *heap, Ecore_Compare_Cb compare, int size)
+{
+   CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
+
+   heap->space = size;
+   if (!compare)
+     heap->compare = ecore_direct_compare;
+   else
+     heap->compare = compare;
+   heap->order = ECORE_SORT_MIN;
+
+   heap->data = (void **)malloc(heap->space * sizeof(void *));
+   if (!heap->data)
+     return FALSE;
+   memset(heap->data, 0, heap->space * sizeof(void *));
+
+   return TRUE;
+}
+
+/**
+ * Free up the memory used by the heap
+ *
+ * Frees the memory used by @a heap, calls the destroy function on each data
+ * item if necessary.
+ *
+ * @param  heap The heap to be freed
+ */
+EAPI void 
+ecore_sheap_destroy(Ecore_Sheap *heap)
+{
+   int i;
+
+   CHECK_PARAM_POINTER("heap", heap);
+
+   /*
+    * Free data in heap
+    */
+   if (heap->free_func)
+     for (i = 0; i < heap->size; i++)
+       heap->free_func(heap->data[i]);
+
+   FREE(heap->data);
+
+   FREE(heap);
+}
+
+/**
+ * Set the function for freeing data.
+ * @param  heap      The heap that will use this function when nodes are
+ *                   destroyed.
+ * @param  free_func The function that will free the key data.
+ * @return @c TRUE on successful set, @c FALSE otherwise.
+ */
+EAPI int 
+ecore_sheap_free_cb_set(Ecore_Sheap *heap, Ecore_Free_Cb free_func)
+{
+   CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
+
+   heap->free_func = free_func;
+
+   return TRUE;
+}
+
+/**
+ * Insert new data into the heap.
+ * @param  heap The heap to insert @a data.
+ * @param  data The data to add to @a heap.
+ * @return TRUE on success, NULL on failure. Increases the size of the heap if
+ *         it becomes larger than available space.
+ */
+EAPI int 
+ecore_sheap_insert(Ecore_Sheap *heap, void *data)
+{
+   int i;
+   void *temp;
+   int parent;
+   int position;
+
+   CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
+
+   /*
+    * Increase the size of the allocated data area if there isn't enough
+    * space available to add this data
+    */
+   if (heap->size >= heap->space)
+     return FALSE;
+
+   heap->sorted = FALSE;
+
+   /*
+    * Place the data at the end of the heap initially. Then determine the
+    * parent and position in the array of it's parent.
+    */
+   heap->data[heap->size] = data;
+   position = heap->size;
+   heap->size++;
+   i = heap->size;
+   parent = PARENT(i) - 1;
+
+   /*
+    * Check the order of the heap to decide where to place the inserted
+    * data. The loop is placed inside the if statement to reduce the
+    * number of branching decisions that must be predicted.
+    */
+   if (heap->order == ECORE_SORT_MIN)
+     {
+       while ((position > 0) && heap->compare(heap->data[parent],
+                                              heap->data[position]) > 0)
+         {
+
+            /*
+             * Swap the data with it's parents to move it up in
+             * the heap.
+             */
+            temp = heap->data[position];
+            heap->data[position] = heap->data[parent];
+            heap->data[parent] = temp;
+
+            /*
+             * Now determine the new position for the next
+             * iteration of the loop, as well as it's parents
+             * position.
+             */
+            i = PARENT(i);
+            position = i - 1;
+            parent = PARENT(i) - 1;
+         }
+     }
+   else
+     {
+       while ((position > 0) && heap->compare(heap->data[parent],
+                                              heap->data[position]) < 0)
+         {
+
+            /*
+             * Swap the data with it's parents to move it up in
+             * the heap.
+             */
+            temp = heap->data[position];
+            heap->data[position] = heap->data[PARENT(i) - 1];
+            heap->data[PARENT(i) - 1] = temp;
+
+            /*
+             * Now determine the new position for the next
+             * iteration of the loop, as well as it's parents
+             * position.
+             */
+            i = PARENT(i);
+            position = i - 1;
+            parent = PARENT(i) - 1;
+         }
+     }
+
+   return TRUE;
+}
+
+/**
+ * Extract the item at the top of the heap
+ * @param  heap The heap to remove the top item
+ * @return The top item of the heap on success, NULL on failure.
+ * @note   The extract function maintains the heap properties after the
+ *         extract.
+ */
+EAPI void *
+ecore_sheap_extract(Ecore_Sheap *heap)
+{
+   void *extreme;
+
+   if (heap->size < 1)
+     return NULL;
+
+   heap->sorted = FALSE;
+
+   extreme = heap->data[0];
+   heap->size--;
+   heap->data[0] = heap->data[heap->size];
+
+   _ecore_sheap_heapify(heap, 1);
+
+   return extreme;
+}
+
+/**
+ * Examine the item at the top of the heap
+ * @param  heap The heap to examine the top item
+ * @return The top item of the heap on success, NULL on failure.
+ * @note   The function does not alter the heap.
+ */
+EAPI void *
+ecore_sheap_extreme(Ecore_Sheap *heap)
+{
+   if (heap->size < 1)
+     return NULL;
+
+   return heap->data[0];
+}
+
+/**
+ * Change the value of the specified item in the heap
+ * @param heap   The heap to search for the item to change
+ * @param item   The item in the heap to change
+ * @param newval The new value assigned to the item in the heap
+ * @return       TRUE on success, FALSE on failure.
+ * @note         The heap does not free the old data since it must be passed
+ *               in, so the caller can perform the free if desired.
+ */
+EAPI int 
+ecore_sheap_change(Ecore_Sheap *heap, void *item, void *newval)
+{
+   int i;
+
+   CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
+
+   for (i = 0; i < heap->size && heap->compare(heap->data[i], item); i++);
+
+   if (i < heap->size)
+     heap->data[i] = newval;
+   else
+     return FALSE;
+
+   /*
+    * FIXME: This is not the correct procedure when a change occurs.
+    */
+   _ecore_sheap_heapify(heap, 1);
+
+   return TRUE;
+}
+
+/**
+ * Change the comparison function for the heap
+ * @param  heap    The heap to change comparison function
+ * @param  compare The new function for comparing nodes
+ * @return TRUE on success, FALSE on failure.
+ *
+ * The comparison function is changed to @compare and the heap is heapified
+ * by the new comparison.
+ */
+EAPI int 
+ecore_sheap_compare_set(Ecore_Sheap *heap, Ecore_Compare_Cb compare)
+{
+   CHECK_PARAM_POINTER_RETURN("heap", heap, FALSE);
+
+   if (!compare)
+     heap->compare = ecore_direct_compare;
+   else
+     heap->compare = compare;
+
+   _ecore_sheap_update_data(heap);
+
+   return TRUE;
+}
+
+/**
+ * Change the order of the heap
+ * @param  heap  The heap to change the order
+ * @param  order The new order of the heap
+ *
+ * Changes the heap order of @heap and re-heapifies the data to this new
+ * order. The default order is a min heap.
+ */
+EAPI void 
+ecore_sheap_order_set(Ecore_Sheap *heap, char order)
+{
+   CHECK_PARAM_POINTER("heap", heap);
+
+   heap->order = order;
+
+   _ecore_sheap_update_data(heap);
+}
+
+/**
+ * Sort the data in the heap
+ * @param  heap The heap to be sorted
+ *
+ * Sorts the data in the heap into the order that is used for the heap's
+ * data.
+ */
+EAPI void 
+ecore_sheap_sort(Ecore_Sheap *heap)
+{
+   int i = 0;
+   void **new_data;
+
+   CHECK_PARAM_POINTER("heap", heap);
+
+   new_data = (void **)malloc(heap->size * sizeof(void *));
+
+   /*
+    * Extract the heap and insert into the new data array in order.
+    */
+   while (heap->size > 0)
+     new_data[i++] = ecore_sheap_extract(heap);
+
+   /*
+    * Free the old data array and update the heap with the new data, also
+    * mark as sorted.
+    */
+   FREE(heap->data);
+   heap->data = new_data;
+   heap->size = i;
+   heap->sorted = TRUE;
+}
+
+/*
+ * Access the item at the ith position in the heap
+ * @param  heap The heap to access the internal data
+ * @param  i    The index of the data within the heap
+ * @return The data located at the ith position within @heap on success,
+ *         NULL on failure.
+ * @note   The data is guaranteed to be in sorted order.
+ */
+EAPI inline void *
+ecore_sheap_item(Ecore_Sheap *heap, int i)
+{
+   if (i >= heap->size)
+     return NULL;
+
+   /*
+    * Make sure the data is sorted so we return the correct value.
+    */
+   if (!heap->sorted)
+     ecore_sheap_sort(heap);
+
+   return heap->data[i];
+}
+
+/*
+ * Regain the heap properties starting at position i
+ * @param  heap The heap to regain heap properties
+ * @param  i    The position to start heapifying
+ */
+static void 
+_ecore_sheap_heapify(Ecore_Sheap *heap, int i)
+{
+   int extreme;
+   int left = LEFT(i);
+   int right = RIGHT(i);
+
+   if (heap->order == ECORE_SORT_MIN)
+     {
+       if (left <= heap->size && heap->compare(heap->data[left - 1],
+                                               heap->data[i - 1]) < 0)
+         extreme = left;
+       else
+         extreme = i;
+
+       if (right <= heap->size && heap->compare(heap->data[right - 1],
+                                                heap->data[extreme - 1]) < 0)
+         extreme = right;
+     }
+   else
+     {
+       if (left <= heap->size && heap->compare(heap->data[left - 1],
+                                               heap->data[i - 1]) > 0)
+         extreme = left;
+       else
+         extreme = i;
+
+       if (right <= heap->size && heap->compare(heap->data[right - 1],
+                                                heap->data[extreme - 1]) > 0)
+         extreme = right;
+     }
+
+   /*
+    * If the data needs to be swapped down the heap, recurse on
+    * heapifying it's new placement.
+    */
+   if (extreme != i)
+     {
+       void *temp;
+
+       temp = heap->data[extreme - 1];
+       heap->data[extreme - 1] = heap->data[i - 1];
+       heap->data[i - 1] = temp;
+
+       _ecore_sheap_heapify(heap, extreme);
+     }
+}
+
+static void 
+_ecore_sheap_update_data(Ecore_Sheap *heap)
+{
+   int i, old_size;
+   void **data;
+
+   /*
+    * Track the old values from the heap
+    */
+   old_size = heap->size;
+   data = heap->data;
+
+   heap->size = 0;
+   heap->data = malloc(heap->space * sizeof(void *));
+
+   for (i = 0; i < old_size; i++)
+     ecore_sheap_insert(heap, data[i]);
+
+   FREE(data);
+}
diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c
new file mode 100644 (file)
index 0000000..4c555c6
--- /dev/null
@@ -0,0 +1,613 @@
+#ifndef _WIN32
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include <unistd.h>
+#include <assert.h>
+#include "ecore_private.h"
+#include "Ecore.h"
+
+/* make mono happy - this is evil though... */
+#undef SIGPWR
+/* valgrind in some versions/setups uses SIGRT's... hmmm */
+#undef SIGRTMIN
+
+typedef void (*Signal_Handler)(int sig, siginfo_t *si, void *foo);
+
+static void _ecore_signal_callback_set(int sig, Signal_Handler func);
+static void _ecore_signal_callback_ignore(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigchld(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigusr1(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigusr2(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sighup(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigquit(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigint(int sig, siginfo_t *si, void *foo);
+static void _ecore_signal_callback_sigterm(int sig, siginfo_t *si, void *foo);
+#ifdef SIGPWR
+static void _ecore_signal_callback_sigpwr(int sig, siginfo_t *si, void *foo);
+#endif
+
+#ifdef SIGRTMIN
+static void _ecore_signal_callback_sigrt(int sig, siginfo_t *si, void *foo);
+#endif
+
+static int _ecore_signal_exe_exit_delay(void *data);
+
+//#define MAXSIGQ 256 // 32k
+#define MAXSIGQ 64 // 8k
+
+static volatile sig_atomic_t sig_count = 0;
+static volatile sig_atomic_t sigchld_count = 0;
+static volatile sig_atomic_t sigusr1_count = 0;
+static volatile sig_atomic_t sigusr2_count = 0;
+static volatile sig_atomic_t sighup_count = 0;
+static volatile sig_atomic_t sigquit_count = 0;
+static volatile sig_atomic_t sigint_count = 0;
+static volatile sig_atomic_t sigterm_count = 0;
+#ifdef SIGPWR
+static volatile sig_atomic_t sigpwr_count = 0;
+#endif
+#ifdef SIGRTMIN
+static volatile sig_atomic_t *sigrt_count = NULL;
+#endif
+
+static volatile siginfo_t sigchld_info[MAXSIGQ];
+static volatile siginfo_t sigusr1_info[MAXSIGQ];
+static volatile siginfo_t sigusr2_info[MAXSIGQ];
+static volatile siginfo_t sighup_info[MAXSIGQ];
+static volatile siginfo_t sigquit_info[MAXSIGQ];
+static volatile siginfo_t sigint_info[MAXSIGQ];
+static volatile siginfo_t sigterm_info[MAXSIGQ];
+#ifdef SIGPWR
+static volatile siginfo_t sigpwr_info[MAXSIGQ];
+#endif
+#ifdef SIGRTMIN
+static volatile siginfo_t *sigrt_info[MAXSIGQ];
+#endif
+
+void
+_ecore_signal_shutdown(void)
+{
+#ifdef SIGRTMIN
+   int i, num = SIGRTMAX - SIGRTMIN;
+#endif
+
+   _ecore_signal_callback_set(SIGPIPE, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGALRM, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGCHLD, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGUSR1, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGUSR2, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGHUP,  (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGQUIT, (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGINT,  (Signal_Handler) SIG_DFL);
+   _ecore_signal_callback_set(SIGTERM, (Signal_Handler) SIG_DFL);
+#ifdef SIGPWR
+   _ecore_signal_callback_set(SIGPWR, (Signal_Handler) SIG_DFL);
+   sigpwr_count = 0;
+#endif
+   sigchld_count = 0;
+   sigusr1_count = 0;
+   sigusr2_count = 0;
+   sighup_count = 0;
+   sigquit_count = 0;
+   sigint_count = 0;
+   sigterm_count = 0;
+   sig_count = 0;
+
+#ifdef SIGRTMIN
+   for (i = 0; i < num; i++)
+     {
+       _ecore_signal_callback_set(SIGRTMIN + i, (Signal_Handler) SIG_DFL);
+       sigrt_count[i] = 0;
+     }
+
+   if (sigrt_count)
+     {
+       free((sig_atomic_t *) sigrt_count);
+       sigrt_count = NULL;
+     }
+
+   for (i = 0; i < MAXSIGQ; i++)
+     {
+       if (sigrt_info[i])
+         {
+            free((siginfo_t *) sigrt_info[i]);
+            sigrt_info[i] = NULL;
+         }
+     }
+#endif
+}
+
+void
+_ecore_signal_init(void)
+{
+#ifdef SIGRTMIN
+   int i, num = SIGRTMAX - SIGRTMIN;
+#endif
+
+   _ecore_signal_callback_set(SIGPIPE, _ecore_signal_callback_ignore);
+   _ecore_signal_callback_set(SIGALRM, _ecore_signal_callback_ignore);
+   _ecore_signal_callback_set(SIGCHLD, _ecore_signal_callback_sigchld);
+   _ecore_signal_callback_set(SIGUSR1, _ecore_signal_callback_sigusr1);
+   _ecore_signal_callback_set(SIGUSR2, _ecore_signal_callback_sigusr2);
+   _ecore_signal_callback_set(SIGHUP,  _ecore_signal_callback_sighup);
+   _ecore_signal_callback_set(SIGQUIT, _ecore_signal_callback_sigquit);
+   _ecore_signal_callback_set(SIGINT,  _ecore_signal_callback_sigint);
+   _ecore_signal_callback_set(SIGTERM, _ecore_signal_callback_sigterm);
+#ifdef SIGPWR
+   _ecore_signal_callback_set(SIGPWR,  _ecore_signal_callback_sigpwr);
+#endif
+
+#ifdef SIGRTMIN
+   sigrt_count = calloc(1, sizeof(sig_atomic_t) * num);
+   assert(sigrt_count);
+
+   for (i = 0; i < MAXSIGQ; i++)
+     {
+       sigrt_info[i] = calloc(1, sizeof(siginfo_t) * num);
+       assert(sigrt_info[i]);
+     }
+
+   for (i = 0; i < num; i++)
+      _ecore_signal_callback_set(SIGRTMIN + i, _ecore_signal_callback_sigrt);
+#endif
+}
+
+int
+_ecore_signal_count_get(void)
+{
+   return sig_count;
+}
+
+void
+_ecore_signal_call(void)
+{
+#ifdef SIGRTMIN
+   int i, num = SIGRTMAX - SIGRTMIN;
+#endif
+   volatile sig_atomic_t n;
+   sigset_t oldset, newset;
+   
+   if (sig_count == 0) return;
+   sigemptyset(&newset);
+   sigaddset(&newset, SIGPIPE);
+   sigaddset(&newset, SIGALRM);
+   sigaddset(&newset, SIGCHLD);
+   sigaddset(&newset, SIGUSR1);
+   sigaddset(&newset, SIGUSR2);
+   sigaddset(&newset, SIGHUP);
+   sigaddset(&newset, SIGQUIT);
+   sigaddset(&newset, SIGINT);
+   sigaddset(&newset, SIGTERM);
+#ifdef SIGPWR
+   sigaddset(&newset, SIGPWR);
+#endif
+#ifdef SIGRTMIN
+   for (i = 0; i < num; i++)
+     sigaddset(&newset, SIGRTMIN + i);
+#endif   
+   sigprocmask(SIG_BLOCK, &newset, &oldset);
+   if (sigchld_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGCHLD in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigchld_count, MAXSIGQ);
+   for (n = 0; n < sigchld_count; n++)
+     {
+       pid_t pid;
+       int status;
+
+       while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
+         {
+            Ecore_Exe_Event_Del *e;
+
+            /* FIXME: If this process is set respawn, respawn with a suitable backoff
+             * period for those that need too much respawning.
+             */
+            e = _ecore_exe_event_del_new();
+            if (e)
+              {
+                 if (WIFEXITED(status))
+                   {
+                      e->exit_code = WEXITSTATUS(status);
+                      e->exited = 1;
+                   }
+                 else if (WIFSIGNALED(status))
+                   {
+                      e->exit_signal = WTERMSIG(status);
+                      e->signalled = 1;
+                   }
+                 e->pid = pid;
+                 e->exe = _ecore_exe_find(pid);
+
+                 if ((n < MAXSIGQ) && (sigchld_info[n].si_signo))
+                   e->data = sigchld_info[n]; /* No need to clone this. */
+
+                  if ((e->exe) && (e->exe->flags & (ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_ERROR)))
+                     {
+                       /* We want to report the Last Words of the exe, so delay this event.
+                        * This is twice as relevant for stderr.
+                        * There are three possibilities here -
+                        *  1 There are no Last Words.
+                        *  2 There are Last Words, they are not ready to be read.
+                        *  3 There are Last Words, they are ready to be read.
+                        *
+                        * For 1 we don't want to delay, for 3 we want to delay.
+                        * 2 is the problem.  If we check for data now and there
+                        * is none, then there is no way to differentiate 1 and 2.
+                        * If we don't delay, we may loose data, but if we do delay,
+                        * there may not be data and the exit event never gets sent.
+                        *
+                        * Any way you look at it, there has to be some time passed
+                        * before the exit event gets sent.  So the strategy here is
+                        * to setup a timer event that will send the exit event after
+                        * an arbitrary, but brief, time.
+                        *
+                        * This is probably paranoid, for the less paraniod, we could
+                        * check to see for Last Words, and only delay if there are any.
+                        * This has it's own set of problems.
+                        */
+                        IF_FN_DEL(ecore_timer_del, e->exe->doomsday_clock);
+                        e->exe->doomsday_clock = ecore_timer_add(0.1, _ecore_signal_exe_exit_delay, e);
+                     }
+                 else
+                   {
+                      _ecore_event_add(ECORE_EXE_EVENT_DEL, e,
+                                  _ecore_exe_event_del_free, NULL);
+                   }
+              }
+         }
+       sig_count--;
+     }
+   sigchld_count = 0;
+   
+   if (sigusr1_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGUSR1 in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigusr1_count, MAXSIGQ);
+   for (n = 0; n < sigusr1_count; n++)
+     {
+       Ecore_Event_Signal_User *e;
+
+       e = _ecore_event_signal_user_new();
+       if (e)
+         {
+            e->number = 1;
+
+            if ((n < MAXSIGQ) && (sigusr1_info[n].si_signo))
+              e->data = sigusr1_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_USER, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigusr1_count = 0;
+   
+   if (sigusr2_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGUSR2 in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigusr2_count, MAXSIGQ);
+   for (n = 0; n < sigusr2_count; n++)
+     {
+       Ecore_Event_Signal_User *e;
+
+       e = _ecore_event_signal_user_new();
+       if (e)
+         {
+            e->number = 2;
+
+            if ((n < MAXSIGQ) && (sigusr2_info[n].si_signo))
+              e->data = sigusr2_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_USER, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigusr2_count = 0;
+   
+   if (sighup_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGHUP in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sighup_count, MAXSIGQ);
+   for (n = 0; n < sighup_count; n++)
+     {
+       Ecore_Event_Signal_Hup *e;
+
+       e = _ecore_event_signal_hup_new();
+       if (e)
+         {
+            if ((n < MAXSIGQ) && (sighup_info[n].si_signo))
+              e->data = sighup_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sighup_count = 0;
+   
+   if (sigquit_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGQUIT in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigquit_count, MAXSIGQ);
+   for (n = 0; n < sigquit_count; n++)
+     {
+       Ecore_Event_Signal_Exit *e;
+
+       e = _ecore_event_signal_exit_new();
+       if (e)
+         {
+            e->quit = 1;
+
+            if ((n < MAXSIGQ) && (sigquit_info[n].si_signo))
+              e->data = sigquit_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigquit_count = 0;
+
+   if (sigint_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGINT in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigint_count, MAXSIGQ);
+   for (n = 0; n < sigint_count; n++)
+     {
+       Ecore_Event_Signal_Exit *e;
+
+       e = _ecore_event_signal_exit_new();
+       if (e)
+         {
+            e->interrupt = 1;
+
+            if ((n < MAXSIGQ) && (sigint_info[n].si_signo))
+              e->data = sigint_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigint_count = 0;
+   
+   if (sigterm_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGTERM in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigterm_count, MAXSIGQ);
+   for (n = 0; n < sigterm_count; n++)
+     {
+       Ecore_Event_Signal_Exit *e;
+
+       e = _ecore_event_signal_exit_new();
+       if (e)
+         {
+            e->terminate = 1;
+
+            if ((n < MAXSIGQ) && (sigterm_info[n].si_signo))
+              e->data = sigterm_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigterm_count = 0;
+   
+#ifdef SIGPWR
+   if (sigpwr_count > MAXSIGQ)
+     printf("ECORE WARNING. %i SIGPWR in queue. max queue size %i. losing "
+           "siginfo for extra signals.\n", sigpwr_count, MAXSIGQ);
+   for (n = 0; n < sigpwr_count; n++)
+     {
+       Ecore_Event_Signal_Power *e;
+
+       e = _ecore_event_signal_power_new();
+       if (e)
+         {
+            if ((n < MAXSIGQ) && (sigpwr_info[n].si_signo))
+              e->data = sigpwr_info[n];
+
+            ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e, NULL, NULL);
+         }
+       sig_count--;
+     }
+   sigpwr_count = 0;
+#endif
+
+#ifdef SIGRTMIN
+   for (i = 0; i < num; i++)
+     {
+       if (sigrt_count[i] > MAXSIGQ)
+         printf("ECORE WARNING. %i SIGRT%i in queue. max queue size %i. losing "
+                "siginfo for extra signals.\n", i + 1, sigrt_count[i], MAXSIGQ);
+       for (n = 0; n < sigrt_count[i]; n++)
+         {
+            Ecore_Event_Signal_Realtime *e;
+
+            if ((e = _ecore_event_signal_realtime_new()))
+              {
+                 e->num = i;
+
+                 if ((n < MAXSIGQ) && (sigrt_info[n][i].si_signo))
+                   e->data = sigrt_info[n][i];
+
+                 ecore_event_add(ECORE_EVENT_SIGNAL_REALTIME, e, NULL, NULL);
+              }
+            sig_count--;
+         }
+       sigrt_count[i] = 0;
+     }
+#endif
+   sigprocmask(SIG_SETMASK, &oldset, NULL);
+}
+
+static void
+_ecore_signal_callback_set(int sig, Signal_Handler func)
+{
+   struct sigaction  sa;
+
+   sa.sa_sigaction = func;
+   sa.sa_flags = SA_RESTART | SA_SIGINFO;
+   sigemptyset(&sa.sa_mask);
+   sigaction(sig, &sa, NULL);
+}
+
+static void
+_ecore_signal_callback_ignore(int sig __UNUSED__, siginfo_t *si __UNUSED__, void *foo __UNUSED__)
+{
+}
+
+static void
+_ecore_signal_callback_sigchld(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigchld_info[n] = *si;
+       else
+         sigchld_info[n].si_signo = 0;
+     }
+
+   sigchld_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sigusr1(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigusr1_info[n] = *si;
+       else
+         sigusr1_info[n].si_signo = 0;
+     }
+   sigusr1_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sigusr2(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigusr2_info[n] = *si;
+       else
+         sigusr2_info[n].si_signo = 0;
+     }
+   sigusr2_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sighup(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sighup_info[n] = *si;
+       else
+         sighup_info[n].si_signo = 0;
+     }
+   sighup_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sigquit(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigquit_info[n] = *si;
+       else
+         sigquit_info[n].si_signo = 0;
+     }
+   sigquit_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sigint(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigint_info[n] = *si;
+       else
+         sigint_info[n].si_signo = 0;
+     }
+   sigint_count++;
+   sig_count++;
+}
+
+static void
+_ecore_signal_callback_sigterm(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigterm_info[n] = *si;
+       else
+         sigterm_info[n].si_signo = 0;
+     }
+   sigterm_count++;
+   sig_count++;
+}
+
+#ifdef SIGPWR
+static void
+_ecore_signal_callback_sigpwr(int sig __UNUSED__, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigpwr_info[n] = *si;
+       else
+         sigpwr_info[n].si_signo = 0;
+     }
+   sigpwr_count++;
+   sig_count++;
+}
+#endif
+
+#ifdef SIGRTMIN
+static void
+_ecore_signal_callback_sigrt(int sig, siginfo_t *si, void *foo __UNUSED__)
+{
+   volatile sig_atomic_t n;
+   n = sigchld_count;
+   if (n < MAXSIGQ)
+     {
+       if (si)
+         sigrt_info[n][sig - SIGRTMIN] = *si;
+       else
+         sigrt_info[n][sig - SIGRTMIN].si_signo = 0;
+     }
+   sigrt_count[sig - SIGRTMIN]++;
+   sig_count++;
+}
+#endif
+
+static int
+_ecore_signal_exe_exit_delay(void *data)
+{
+   Ecore_Exe_Event_Del *e;
+
+   e = data;
+   if (e)
+     {
+       e->exe->doomsday_clock = NULL;
+       _ecore_event_add(ECORE_EXE_EVENT_DEL, e,
+                        _ecore_exe_event_del_free, NULL);
+     }
+   return 0;
+}
+#endif
diff --git a/src/lib/ecore/ecore_str.c b/src/lib/ecore/ecore_str.c
new file mode 100644 (file)
index 0000000..cb5c2cc
--- /dev/null
@@ -0,0 +1,234 @@
+/* Leave the OpenBSD version below so we can track upstream fixes */
+/*      $OpenBSD: strlcpy.c,v 1.11 2006/05/05 15:27:38 millert Exp $        */
+
+/*
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+
+#include "ecore_private.h"
+#include "Ecore_Str.h"
+
+static int ecore_str_has_suffix_helper(const char *str, const char *suffix, 
+               int (*cmp)(const char *, const char *));
+/**
+ * @param dst the destination
+ * @param src the source
+ * @param siz the size of the destination
+ * @return the length of the source string
+ * @brief copy a c-string
+ *
+ * Copy src to string dst of size siz.  At most siz-1 characters
+ * will be copied.  Always NUL terminates (unless siz == 0).
+ * Returns strlen(src); if retval >= siz, truncation occurred.
+ */
+size_t
+ecore_strlcpy(char *dst, const char *src, size_t siz)
+{
+#ifdef HAVE_STRLCPY
+   return strlcpy(dst, src, siz);
+#else
+   char *d = dst;
+   const char *s = src;
+   size_t n = siz;
+
+   /* Copy as many bytes as will fit */
+   if (n != 0)
+     {
+        while (--n != 0)
+          {
+             if ((*d++ = *s++) == '\0')
+               break;
+          }
+     }
+
+   /* Not enough room in dst, add NUL and traverse rest of src */
+   if (n == 0)
+     {
+        if (siz != 0)
+          *d = '\0';                /* NUL-terminate dst */
+        while (*s++)
+          ;
+     }
+
+   return(s - src - 1);        /* count does not include NUL */
+#endif
+}
+
+/**
+ * @param dst the destination
+ * @param src the source
+ * @param siz the size of the destination
+ * @return the length of the source string plus MIN(siz, strlen(initial dst)) 
+ * @brief append a c-string
+ *
+ * Appends src to string dst of size siz (unlike strncat, siz is the
+ * full size of dst, not space left).  At most siz-1 characters
+ * will be copied.  Always NUL terminates (unless siz <= strlen(dst)).
+ * Returns strlen(src) + MIN(siz, strlen(initial dst)).
+ * If retval >= siz, truncation occurred.
+ */
+size_t
+ecore_strlcat(char *dst, const char *src, size_t siz)
+{
+        char *d = dst;
+        const char *s = src;
+        size_t n = siz;
+        size_t dlen;
+
+        /* Find the end of dst and adjust bytes left but don't go past end */
+        while (n-- != 0 && *d != '\0')
+                d++;
+        dlen = d - dst;
+        n = siz - dlen;
+
+        if (n == 0)
+                return(dlen + strlen(s));
+        while (*s != '\0') {
+                if (n != 1) {
+                        *d++ = *s;
+                        n--;
+                }
+                s++;
+        }
+        *d = '\0';
+
+        return(dlen + (s - src));        /* count does not include NUL */
+}
+
+/**
+ * @param str the string to work with
+ * @param prefix the prefix to check for
+ * @return true if str has the given prefix
+ * @brief checks if the string has the given prefix
+ */
+int
+ecore_str_has_prefix(const char *str, const char *prefix)
+{
+   size_t str_len;
+   size_t prefix_len;
+
+   CHECK_PARAM_POINTER_RETURN("str", str, 0);
+   CHECK_PARAM_POINTER_RETURN("prefix", prefix, 0);
+
+   str_len = strlen(str);
+   prefix_len = strlen(prefix);
+   if (prefix_len > str_len)
+     return 0;
+
+   return (strncmp(str, prefix, prefix_len) == 0);
+}
+
+/**
+ * @param str the string to work with
+ * @param suffix the suffix to check for
+ * @return true if str has the given suffix
+ * @brief checks if the string has the given suffix
+ */
+int
+ecore_str_has_suffix(const char *str, const char *suffix)
+{
+   CHECK_PARAM_POINTER_RETURN("str", str, 0);
+   CHECK_PARAM_POINTER_RETURN("suffix", suffix, 0);
+   
+   return ecore_str_has_suffix_helper(str, suffix, strcmp);
+}
+
+/**
+ * This function does the same like ecore_str_has_suffix(), but with a
+ * case insensitive compare.
+ *
+ * @param str the string to work with
+ * @param ext the  extension to check for
+ * @return true if str has the given extension
+ * @brief checks if the string has the given extension
+ */
+int
+ecore_str_has_extension(const char *str, const char *ext)
+{
+   CHECK_PARAM_POINTER_RETURN("str", str, 0);
+   CHECK_PARAM_POINTER_RETURN("ext", ext, 0);
+   
+   return ecore_str_has_suffix_helper(str, ext, strcasecmp);
+}
+
+/*
+ * Internal helper function used by ecore_str_has_suffix() and 
+ * ecore_str_has_extension()
+ */
+static int
+ecore_str_has_suffix_helper(const char *str, const char *suffix, 
+               int (*cmp)(const char *, const char *))
+{
+   size_t str_len;
+   size_t suffix_len;
+
+   str_len = strlen(str);
+   suffix_len = strlen(suffix);
+   if (suffix_len > str_len)
+     return 0;
+
+   return cmp(str + str_len - suffix_len, suffix) == 0;
+}
+
+/**
+ * Splits a string into a maximum of max_tokens pieces, using the given
+ * delimiter. If max_tokens is reached, the final string in the returned
+ * string array contains the remainder of string.
+ *
+ * @param str         A string to split.
+ * @param delim       A string which specifies the places at which to split the 
+ *                    string. The delimiter is not included in any of the 
+ *                    resulting strings, unless max_tokens is reached.
+ * @param max_tokens  The maximum number of strings to split string into. 
+ *                    If this is less than 1, the string is split completely.
+ * @return            A newly-allocated NULL-terminated array of strings.
+ *                    To free it: free the first element of the array
+ *                    and the array itself.
+ */
+char **
+ecore_str_split(const char *str, const char *delim, int max_tokens)
+{
+   char *s, *sep, **str_array;
+   size_t len, dlen;
+   int i;
+
+   CHECK_PARAM_POINTER_RETURN("str", str, NULL);
+   CHECK_PARAM_POINTER_RETURN("delim", delim, NULL);
+
+   if (*delim == '\0')
+      return NULL;
+
+   max_tokens = ((max_tokens <= 0) ? (INT_MAX) : (max_tokens - 1));
+   len = strlen(str);
+   dlen = strlen(delim);
+   s = strdup(str);
+   str_array = malloc(sizeof(char *) * (len + 1));
+   for (i = 0; (i < max_tokens) && (sep = strstr(s, delim)); i++) 
+      {
+          str_array[i] = s;
+          s = sep + dlen;
+          *sep = 0;
+      }
+
+   str_array[i++] = s;
+   str_array = realloc(str_array, sizeof(char *) * (i + 1));
+   str_array[i] = NULL;
+   return str_array;
+}
+
diff --git a/src/lib/ecore/ecore_strbuf.c b/src/lib/ecore/ecore_strbuf.c
new file mode 100644 (file)
index 0000000..d57bf19
--- /dev/null
@@ -0,0 +1,360 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+#include "Ecore_Str.h"
+
+#define ECORE_STRBUF_INIT_SIZE 32
+#define ECORE_STRBUF_INIT_STEP 32
+#define ECORE_STRBUF_MAX_STEP 4096
+
+struct _ecore_strbuf
+{
+  char *buf;
+  size_t len;
+  size_t size;
+  size_t step;
+};
+
+static int _ecore_strbuf_resize(Ecore_Strbuf *buf, size_t size);
+
+/**
+ * Create a new string buffer
+ */
+EAPI Ecore_Strbuf *
+ecore_strbuf_new(void)
+{
+  Ecore_Strbuf *buf;
+
+  buf = malloc(sizeof(Ecore_Strbuf));
+  if (!buf) return NULL;
+
+  buf->len = 0;
+  buf->size = ECORE_STRBUF_INIT_SIZE;
+  buf->step = ECORE_STRBUF_INIT_STEP;
+
+  buf->buf = malloc(buf->size);
+  buf->buf[0] = '\0';
+
+  return buf;
+}
+
+/**
+ * Free a string buffer
+ * @param buf the buffer to free
+ */
+EAPI void
+ecore_strbuf_free(Ecore_Strbuf *buf)
+{
+  CHECK_PARAM_POINTER("buf", buf); 
+  free(buf->buf);
+  free(buf);
+}
+
+/**
+ * Append a string to a buffer, reallocating as necessary.
+ * @param buf the Ecore_Strbuf to append to
+ * @param str the string to append
+ */
+EAPI void
+ecore_strbuf_append(Ecore_Strbuf *buf, const char *str)
+{
+  size_t l;
+  size_t off = 0;
+
+  CHECK_PARAM_POINTER("buf", buf); 
+  CHECK_PARAM_POINTER("str", str); 
+
+  l = ecore_strlcpy(buf->buf + buf->len, str, buf->size - buf->len);
+
+  while (l > buf->size - buf->len) 
+    {
+        /* we successfully appended this much */
+        off += buf->size - buf->len - 1;
+        buf->len = buf->size - 1;
+        buf->size += buf->step;
+        if (buf->step < ECORE_STRBUF_MAX_STEP)
+          buf->step *= 2;
+        buf->buf = realloc(buf->buf, buf->size);
+        *(buf->buf + buf->len) = '\0';
+
+        l = ecore_strlcpy(buf->buf + buf->len, str + off, buf->size - buf->len);
+    }
+  buf->len += l;
+}
+
+/**
+ * Insert a string to a buffer, reallocating as necessary.
+ * @param buf the Ecore_Strbuf to insert
+ * @param str the string to insert
+ * @param pos the position to insert the string
+ */
+EAPI void
+ecore_strbuf_insert(Ecore_Strbuf *buf, const char *str, size_t pos)
+{
+  size_t len;
+
+  CHECK_PARAM_POINTER("buf", buf); 
+  CHECK_PARAM_POINTER("str", str);
+
+  if (pos >= buf->len)
+    {
+       ecore_strbuf_append(buf, str);
+       return;
+    }
+
+  /*
+   * resize the buffer if necessary
+   */
+  len = strlen(str);
+  if (!_ecore_strbuf_resize(buf, buf->len + len))
+    return;
+  /* move the existing text */
+  memmove(buf->buf + len + pos, buf->buf + pos, buf->len - pos);
+  /* and now insert the given string */
+  memcpy(buf->buf + pos, str, len);
+  buf->len += len;
+  buf->buf[buf->len] = 0;
+}
+
+/**
+ * Append a character to a string buffer, reallocating as necessary.
+ * @param buf the Ecore_Strbuf to append to
+ * @param c the char to append
+ */
+EAPI void
+ecore_strbuf_append_char(Ecore_Strbuf *buf, char c)
+{
+  CHECK_PARAM_POINTER("buf", buf); 
+  if (buf->len >= buf->size - 1)
+  {
+      buf->size += buf->step;
+      if (buf->step < ECORE_STRBUF_MAX_STEP)
+        buf->step *= 2;
+      buf->buf = realloc(buf->buf, buf->size);
+  }
+
+  buf->buf[(buf->len)++] = c;
+  buf->buf[buf->len] = '\0';
+}
+
+/**
+ * Retrieve a pointer to the contents of a string buffer
+ * @param buf the buffer
+ *
+ * This pointer must not be modified, and will no longer be valid if
+ * the Ecore_Strbuf is modified.
+ */
+EAPI const char *
+ecore_strbuf_string_get(Ecore_Strbuf *buf)
+{
+  CHECK_PARAM_POINTER_RETURN("buf", buf, NULL); 
+  return buf->buf;
+}
+
+/**
+ * Retrieve the length of the string buffer content
+ * @param buf the buffer
+ */
+EAPI size_t
+ecore_strbuf_length_get(Ecore_Strbuf *buf)
+{
+  CHECK_PARAM_POINTER_RETURN("buf", buf, 0); 
+  return buf->len;
+}
+
+/**
+ * Replace the n-th string with an other string.
+ * @param buf the Ecore_Strbuf to work with
+ * @param str the string to replace
+ * @param with the replaceing string
+ * @param n the number of the fitting string 
+ *
+ * @return true on success
+ */
+EAPI int
+ecore_strbuf_replace(Ecore_Strbuf *buf, const char *str, const char *with,
+                     unsigned int n)
+{
+  size_t len1, len2;
+  char *spos;
+  size_t pos;
+
+  CHECK_PARAM_POINTER_RETURN("buf", buf, 0); 
+  CHECK_PARAM_POINTER_RETURN("str", str, 0);
+  CHECK_PARAM_POINTER_RETURN("with", with, 0);
+
+  if (n == 0)
+     return 0;
+
+  spos = buf->buf;
+  while (n--)
+    {
+       spos = strstr(spos, str);
+       if (!spos || *spos == '\0')
+          return 0;
+       if (n) spos++;
+    }
+
+  pos = spos - buf->buf;
+  len1 = strlen(str); 
+  len2 = strlen(with);
+  if (len1 != len2)
+    {
+       /* resize the buffer if necessary */
+       if (!_ecore_strbuf_resize(buf, buf->len - len1 + len2))
+          return 0;
+       /* move the existing text */
+       memmove(buf->buf + pos + len2, buf->buf + pos + len1, 
+                       buf->len - pos - len1);
+    }
+  /* and now insert the given string */
+  memcpy(buf->buf + pos, with, len2);
+  buf->len += len2 - len1;
+  buf->buf[buf->len] = 0;
+
+  return 1;
+}
+
+/**
+ * Replace all strings with an other string.
+ * @param buf the Ecore_Strbuf to work with
+ * @param str the string to replace
+ * @param with the replaceing string
+ *
+ * @return how often the string was replaced
+ */
+EAPI int
+ecore_strbuf_replace_all(Ecore_Strbuf *buf, const char *str, const char *with)
+{
+  size_t len1, len2, len;
+  char *tmp_buf = NULL;
+  char *spos;
+  size_t pos, start;
+  size_t pos_tmp, start_tmp;
+  int n = 0;
+
+  CHECK_PARAM_POINTER_RETURN("buf", buf, 0); 
+  CHECK_PARAM_POINTER_RETURN("str", str, 0);
+  CHECK_PARAM_POINTER_RETURN("with", with, 0);
+
+  spos = strstr(buf->buf, str);
+  if (!spos || *spos == '\0')
+     return 0;
+
+  len1 = strlen(str); 
+  len2 = strlen(with);
+
+  /* if the size of the two string is equal, it is fairly easy to replace them
+   * we don't need to resize the buffer or doing other calculations */
+  if (len1 == len2)
+    {
+       while (spos)
+          {
+              memcpy(spos, with, len2);
+              spos = strstr(spos + len2, str);
+              n++;
+          }
+       return n;
+    }
+  
+  pos = pos_tmp = spos - buf->buf;
+  tmp_buf = buf->buf;
+  buf->buf = malloc(buf->size);
+  if (!buf->buf)
+     {
+        buf->buf = tmp_buf;
+        return 0;
+     }
+  start = start_tmp = 0;
+  len = buf->len;
+
+  while (spos)
+     {
+       n++;
+       len = (len + len2) - len1;
+       /* resize the buffer if necessary */
+       if (!_ecore_strbuf_resize(buf, len))
+          {
+              /* we have to stop replacing here, because we haven't enough
+               * memory to go on */
+              len = (len + len1) - len2;
+              break;
+          }
+       
+       /* copy the untouched text */
+       memcpy(buf->buf + start, tmp_buf + start_tmp, pos - start);
+       /* copy the new string */
+       memcpy(buf->buf + pos, with, len2);
+
+       /* calculate the next positions */
+       start_tmp = pos_tmp + len1;
+       start = pos + len2;
+       spos = strstr(tmp_buf + start_tmp, str);
+       /* this calculations don't make sense if spos == NULL, but the
+        * calculated values won't be used, because the loop will stop
+        * then */
+       pos_tmp = spos - tmp_buf;
+       pos = start + pos_tmp - start_tmp;
+    }
+  /* and now copy the rest of the text */
+  memcpy(buf->buf + start, tmp_buf + start_tmp, len - start);
+  buf->len = len;
+  buf->buf[buf->len] = 0;
+
+  free(tmp_buf);
+
+  return n;
+}
+
+
+/**
+ * resize the buffer
+ * @param buf the buffer to resize
+ * @param size the minimum size of the buffer
+ */
+static int 
+_ecore_strbuf_resize(Ecore_Strbuf *buf, size_t size)
+{
+  char *buffer;
+  size_t new_size;
+  size_t new_step;
+
+  new_size = buf->size;
+  new_step = buf->step;
+
+  /*
+   * first we have to determine the new buffer size
+   */
+  if (size == buf->size)
+    /* nothing to do */
+    return 1;
+  else if (size > buf->size)
+    {
+       /* enlarge the buffer */
+        while (size > new_size)
+           {
+               new_size += new_step;
+               if (new_step < ECORE_STRBUF_MAX_STEP)
+                  new_step *= 2;
+          }
+    }
+  else 
+    {
+        /* shrink the buffer */
+       /*
+        * to be done
+        */
+       return 1;
+    }
+
+  /* reallocate the buffer to the new size */
+  buffer = realloc(buf->buf, new_size);
+  if (!buffer)
+    return 0;
+  
+  buf->buf = buffer;
+  buf->size = new_size;
+  buf->step = new_step;
+  return 1;
+}
+
diff --git a/src/lib/ecore/ecore_strings.c b/src/lib/ecore/ecore_strings.c
new file mode 100644 (file)
index 0000000..79fd939
--- /dev/null
@@ -0,0 +1,155 @@
+#include "ecore_private.h"
+#include "Ecore_Data.h"
+
+static void ecore_string_free_cb(void *data);
+
+static Ecore_Hash *ecore_strings = NULL;
+static int ecore_string_init_count = 0;
+
+/**
+ * @defgroup Ecore_String_Group String Instance Functions
+ *
+ * These functions allow you to store one copy of a string, and use it
+ * throughout your program.
+ *
+ * This is a method to reduce the number of duplicated strings kept in
+ * memory. It's pretty common for the same strings to be dynamically
+ * allocated repeatedly between applications and libraries, especially in
+ * circumstances where you could have multiple copies of a structure that
+ * allocates the string. So rather than duplicating and freeing these
+ * strings, you request a read-only pointer to an existing string and
+ * only incur the overhead of a hash lookup.
+ *
+ * It sounds like micro-optimizing, but profiling has shown this can have
+ * a significant impact as you scale the number of copies up. It improves
+ * string creation/destruction speed, reduces memory use and decreases
+ * memory fragmentation, so a win all-around.
+ */
+
+/**
+ * Initialize the ecore string internal structure.
+ * @return  Zero on failure, non-zero on successful initialization.
+ */
+EAPI int 
+ecore_string_init()
+{
+   /*
+    * No strings have been loaded at this point, so create the hash
+    * table for storing string info for later.
+    */
+   if (!ecore_string_init_count)
+     {
+       ecore_strings = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+       if (!ecore_strings)
+         return 0;
+       ecore_hash_free_value_cb_set(ecore_strings, ecore_string_free_cb);
+     }
+   ecore_string_init_count++;
+
+   return 1;
+}
+
+/**
+ * Retrieves an instance of a string for use in an ecore program.
+ * @param   string The string to retrieve an instance of.
+ * @return  A pointer to an instance of the string on success.
+ *          @c NULL on failure.
+ * @ingroup Ecore_String_Group
+ */
+EAPI const char *
+ecore_string_instance(const char *string)
+{
+   Ecore_String *str;
+
+   CHECK_PARAM_POINTER_RETURN("string", string, NULL);
+
+   /*
+    * Check for a previous instance of the string, if not found, create
+    * it.
+    */
+   str = ecore_hash_get(ecore_strings, string);
+   if (!str)
+     {
+       int length;
+
+       /*
+        * Allocate and initialize a new string reference.
+        */
+       length = strlen(string) + 1;
+
+       str = (Ecore_String *)malloc(sizeof(Ecore_String) + length * sizeof(char));
+
+       str->string = (char*)(str + 1);
+       str->references = 0;
+
+       memcpy(str->string, string, length);
+
+       ecore_hash_set(ecore_strings, str->string, str);
+     }
+
+   str->references++;
+
+   return str->string;
+}
+
+/**
+ * Notes that the given string has lost an instance.
+ *
+ * It will free the string if no other instances are left.
+ *
+ * @param   string The given string.
+ * @ingroup Ecore_String_Group
+ */
+EAPI void 
+ecore_string_release(const char *string)
+{
+   Ecore_String *str;
+
+   CHECK_PARAM_POINTER("string", string);
+
+   str = ecore_hash_get(ecore_strings, (char *)string);
+   if (!str)
+     return;
+
+   str->references--;
+   if (str->references < 1)
+     {
+       ecore_hash_remove(ecore_strings, (char *)string);
+       FREE(str);
+     }
+}
+
+EAPI void
+ecore_string_hash_dump_graph(void)
+{
+       ecore_hash_dump_graph(ecore_strings);
+}
+
+EAPI void
+ecore_string_hash_dump_stats(void)
+{
+       ecore_hash_dump_stats(ecore_strings);
+}
+
+/**
+ * Shutdown the ecore string internal structures
+ */
+EAPI void 
+ecore_string_shutdown()
+{
+   --ecore_string_init_count;
+   if (!ecore_string_init_count)
+     {
+       ecore_hash_destroy(ecore_strings);
+       ecore_strings = NULL;
+     }
+}
+
+static void 
+ecore_string_free_cb(void *data)
+{
+   Ecore_String *str;
+
+   str = data;
+   FREE(str);
+}
diff --git a/src/lib/ecore/ecore_time.c b/src/lib/ecore/ecore_time.c
new file mode 100644 (file)
index 0000000..ca7db2c
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+
+/* FIXME: clock_gettime() is an option... */
+
+/**
+ * Retrieves the current system time as a floating point value in seconds.
+ * @return  The number of seconds since 12.00AM 1st January 1970.
+ * @ingroup Ecore_Time_Group
+ */
+EAPI double
+ecore_time_get(void)
+{
+#ifdef HAVE_GETTIMEOFDAY
+   struct timeval      timev;
+
+   gettimeofday(&timev, NULL);
+   return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
+#else
+# error "Your platform isn't supported yet"
+#endif
+}
diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
new file mode 100644 (file)
index 0000000..93fce30
--- /dev/null
@@ -0,0 +1,385 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+
+static void _ecore_timer_set(Ecore_Timer *timer, double at, double in, int (*func) (void *data), void *data);
+
+static int          timers_added = 0;
+static int          timers_delete_me = 0;
+static Ecore_Timer *timers = NULL;
+static Ecore_Timer *suspended = NULL;
+static double       last_check = 0.0;
+
+/**
+ * @defgroup Ecore_Time_Group Ecore Time Functions
+ *
+ * Functions that deal with time.  These functions include those that simply
+ * retrieve it in a given format, and those that create events based on it.
+ */
+
+/**
+ * Creates a timer to call the given function in the given period of time.
+ * @param   in   The interval in seconds.
+ * @param   func The given function.  If @p func returns 1, the timer is
+ *               rescheduled for the next interval @p in.
+ * @param   data Data to pass to @p func when it is called.
+ * @return  A timer object on success.  @c NULL on failure.
+ * @ingroup Ecore_Time_Group
+ *
+ * This function adds a timer and returns its handle on success and NULL on
+ * failure. The function @p func will be called every @in@ seconds. The
+ * function will be passed the @p data pointer as its parameter.
+ * 
+ * When the timer @p func is called, it must return a value of either 1 
+ * (or ECORE_CALLBACK_RENEW) or 0 (or ECORE_CALLBACK_CANCEL). 
+ * If it returns 1, it will be called again at the next tick, or if it returns
+ * 0 it will be deleted automatically making any references/handles for it
+ * invalid.
+ */
+EAPI Ecore_Timer *
+ecore_timer_add(double in, int (*func) (void *data), const void *data)
+{
+   double now;
+   Ecore_Timer *timer;
+
+   if (!func) return NULL;
+   if (in < 0.0) in = 0.0;
+   timer = calloc(1, sizeof(Ecore_Timer));
+   if (!timer) return NULL;
+   ECORE_MAGIC_SET(timer, ECORE_MAGIC_TIMER);
+   now = ecore_time_get();
+   _ecore_timer_set(timer, now + in, in, func, (void *)data);
+   return timer;
+}
+
+/**
+ * Delete the specified timer from the timer list.
+ * @param   timer The timer to delete.
+ * @return  The data pointer set for the timer when @ref ecore_timer_add was
+ *          called.  @c NULL is returned if the function is unsuccessful.
+ * @ingroup Ecore_Time_Group
+ *
+ * Note: @p timer must be a valid handle. If the timer function has already
+ * returned 0, the handle is no longer valid (and does not need to be delete).
+ */
+EAPI void *
+ecore_timer_del(Ecore_Timer *timer)
+{
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                        "ecore_timer_del");
+       return NULL;
+     }
+   if (timer->delete_me) return timer->data;
+   timers_delete_me++;
+   timer->delete_me = 1;
+   return timer->data;
+}
+
+/**
+ * Change the interval the timer ticks of. If set during
+ * a timer call, this will affect the next interval.
+ *
+ * @param   timer The timer to change.
+ * @param   in    The interval in seconds.
+ * @ingroup Ecore_Time_Group
+ */
+EAPI void
+ecore_timer_interval_set(Ecore_Timer *timer, double in)
+{
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                        "ecore_timer_interval_set");
+       return;
+     }
+   timer->in = in;
+}
+
+/**
+ * Add some delay for the next occurence of a timer.
+ * This doesn't affect the interval of a timer.
+ *
+ * @param   timer The timer to change.
+ * @param   add   The dalay to add to the next iteration.
+ * @ingroup Ecore_Time_Group
+ */
+EAPI void
+ecore_timer_delay(Ecore_Timer *timer, double add)
+{
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                        "ecore_timer_delay");
+       return;
+     }
+
+   if (timer->frozen)
+     {
+       timer->pending += add;
+     }
+   else
+     {
+       timers = _ecore_list2_remove(timers, timer);
+       _ecore_timer_set(timer, timer->at + add, timer->in, timer->func, timer->data);
+     }
+}
+
+/**
+ * Get the pending time regarding a timer.
+ *
+ * @param      timer The timer to learn from.
+ * @ingroup    Ecore_Time_Group
+ */
+EAPI double
+ecore_timer_pending_get(Ecore_Timer *timer)
+{
+   double      now;
+
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                        "ecore_timer_pending_get");
+       return 0;
+     }
+
+   now = ecore_time_get();
+
+   if (timer->frozen)
+     return timer->pending;
+   return timer->at - now;
+}
+
+/**
+ *
+ *
+ */
+EAPI void
+ecore_timer_freeze(Ecore_Timer *timer)
+{
+   double now;
+
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                         "ecore_timer_freeze");
+        return ;
+     }
+
+   /* Timer already frozen */
+   if (timer->frozen)
+     return ;
+
+   timers = _ecore_list2_remove(timers, timer);
+   suspended = _ecore_list2_prepend(suspended, timer);
+
+   now = ecore_time_get();
+
+   timer->pending = timer->at - now;
+   timer->at = 0.0;
+   timer->frozen = 1;
+}
+
+EAPI void
+ecore_timer_thaw(Ecore_Timer *timer)
+{
+   double now;
+
+   if (!ECORE_MAGIC_CHECK(timer, ECORE_MAGIC_TIMER))
+     {
+       ECORE_MAGIC_FAIL(timer, ECORE_MAGIC_TIMER,
+                         "ecore_timer_thaw");
+        return ;
+     }
+
+   /* Timer not frozen */
+   if (!timer->frozen)
+     return ;
+
+   suspended = _ecore_list2_remove(suspended, timer);
+   now = ecore_time_get();
+
+   _ecore_timer_set(timer, timer->pending + now, timer->in, timer->func, timer->data);
+}
+
+void
+_ecore_timer_shutdown(void)
+{
+   while (timers)
+     {
+       Ecore_Timer *timer;
+       
+       timer = timers;
+       timers = _ecore_list2_remove(timers, timer);
+       ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
+       free(timer);
+     }
+
+   while (suspended)
+     {
+        Ecore_Timer *timer;
+
+        timer = suspended;
+        suspended = _ecore_list2_remove(suspended, timer);
+        ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
+        free(timer);
+     }
+}
+
+void
+_ecore_timer_cleanup(void)
+{
+   Ecore_List2 *l;
+
+   if (!timers_delete_me) return;
+   for (l = (Ecore_List2 *)timers; l;)
+     {
+       Ecore_Timer *timer;
+       
+       timer = (Ecore_Timer *)l;
+       l = l->next;
+       if (timer->delete_me)
+         {
+            timers = _ecore_list2_remove(timers, timer);
+            ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
+            free(timer);
+            timers_delete_me--;
+            if (timers_delete_me == 0) return;
+         }
+     }
+   for (l = (Ecore_List2 *)suspended; l;)
+     {
+       Ecore_Timer *timer;
+       
+       timer = (Ecore_Timer *)l;
+       l = l->next;
+       if (timer->delete_me)
+         {
+            suspended = _ecore_list2_remove(suspended, timer);
+            ECORE_MAGIC_SET(timer, ECORE_MAGIC_NONE);
+            free(timer);
+            timers_delete_me--;
+            if (timers_delete_me == 0) return;
+         }
+     }
+   timers_delete_me = 0;
+}
+
+void
+_ecore_timer_enable_new(void)
+{
+   Ecore_List2 *l;   
+
+   if (!timers_added) return;
+   timers_added = 0;
+   for (l = (Ecore_List2 *)timers; l; l = l->next)
+     {
+       Ecore_Timer *timer;
+       
+       timer = (Ecore_Timer *)l;
+       timer->just_added = 0;
+     }
+}
+
+double
+_ecore_timer_next_get(void)
+{
+   double now;
+   double in;
+   Ecore_Timer *timer;
+   
+   if (!timers) return -1;
+   now = ecore_time_get();
+   timer = (Ecore_Timer *)timers;
+   while ((timer) && ((timer->delete_me) || (timer->just_added)))
+     timer = (Ecore_Timer *)((Ecore_List2 *)timer)->next;
+   if (!timer) return -1;
+   in = timer->at - now;
+   if (in < 0) in = 0;
+   return in;
+}  
+
+int
+_ecore_timer_call(double when)
+{
+   Ecore_List2 *l;   
+   Ecore_Timer *timer;
+
+   if (!timers) return 0;
+   if (last_check > when)
+     {
+       /* User set time backwards */
+       for (l = (Ecore_List2 *)timers; l; l = l->next)
+         {
+            timer = (Ecore_Timer *)l;
+            timer->at -= (last_check - when);
+         }
+     }
+   last_check = when;
+   for (l = (Ecore_List2 *)timers; l; l = l->next)
+     {
+       timer = (Ecore_Timer *)l;
+       if ((timer->at <= when) &&
+           (timer->just_added == 0) &&
+           (timer->delete_me == 0))
+         {
+            timers = _ecore_list2_remove(timers, timer);
+            _ecore_timer_call(when);
+            if ((!timer->delete_me) && (timer->func(timer->data)))
+              {
+                 /* if the timer would have gone off more than 15 seconds ago,
+                  * assume that the system hung and set the timer to go off
+                  * timer->in from now. this handles system hangs, suspends
+                  * and more, so ecore will only "replay" the timers while
+                  * the system is suspended if it is suspended for less than
+                  * 15 seconds (basically). this also handles if the process
+                  * is stopped in a debugger or IO and other handling gets
+                  * really slow within the main loop.
+                  */
+                 if (!timer->delete_me)
+                   {
+                      if ((timer->at + timer->in) < (when - 15.0))
+                        _ecore_timer_set(timer, when + timer->in, timer->in, timer->func, timer->data);
+                      else
+                        _ecore_timer_set(timer, timer->at + timer->in, timer->in, timer->func, timer->data);
+                   }
+                 else
+                   free(timer);
+              }
+            else
+              free(timer);
+            return 1;
+         }
+     }
+   return 0;
+}  
+
+static void
+_ecore_timer_set(Ecore_Timer *timer, double at, double in, int (*func) (void *data), void *data)
+{
+   Ecore_List2 *l;
+   
+   timers_added = 1;
+   timer->at = at;
+   timer->in = in;
+   timer->func = func;
+   timer->data = data;
+   timer->just_added = 1;
+   timer->frozen = 0;
+   timer->pending = 0.0;
+   if (timers)
+     {
+       for (l = ((Ecore_List2 *)(timers))->last; l; l = l->prev)
+         {
+            Ecore_Timer *t2;
+            
+            t2 = (Ecore_Timer *)l;
+            if (timer->at > t2->at)
+              {
+                 timers = _ecore_list2_append_relative(timers, timer, t2);
+                 return;
+              }
+         }
+     }
+   timers = _ecore_list2_prepend(timers, timer);
+}
diff --git a/src/lib/ecore/ecore_tree.c b/src/lib/ecore/ecore_tree.c
new file mode 100644 (file)
index 0000000..c8e9c7c
--- /dev/null
@@ -0,0 +1,843 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+
+/* A macro for determining the highest node at given branch */
+#define MAX_HEIGHT(node) (node ? MAX(node->max_left, node->max_right) : 0)
+
+/* Utility functions for searching the tree and returning a node, or its
+ * parent */
+static Ecore_Tree_Node *tree_node_find(Ecore_Tree * tree, const void *key);
+static Ecore_Tree_Node *tree_node_find_parent(Ecore_Tree * tree, const void *key);
+
+/* Balancing functions, keep the tree balanced within a one node height
+ * difference */
+static int tree_node_balance(Ecore_Tree * Tree, Ecore_Tree_Node * top_node);
+static int tree_node_rotate_right(Ecore_Tree * tree, Ecore_Tree_Node * top_node);
+static int tree_node_rotate_left(Ecore_Tree * tree, Ecore_Tree_Node * top_node);
+
+/* Fucntions for executing a specified function on each node of a tree */
+static int tree_for_each_node(Ecore_Tree_Node * node, Ecore_For_Each for_each_func,
+                             void *user_data);
+static int tree_for_each_node_value(Ecore_Tree_Node * node,
+                                   Ecore_For_Each for_each_func, void *user_data);
+
+/**
+ * @brief Allocate a new tree structure.
+ * @param compare_func: function used to compare the two values
+ * @return Returns NULL if the operation fails, otherwise the new tree
+ */
+EAPI Ecore_Tree *
+ecore_tree_new(Ecore_Compare_Cb compare_func)
+{
+   Ecore_Tree *new_tree;
+
+   new_tree = ECORE_TREE(malloc(sizeof(Ecore_Tree)));
+   if (!new_tree)
+     return NULL;
+
+   if (!ecore_tree_init(new_tree, compare_func))
+     {
+       IF_FREE(new_tree);
+       return NULL;
+     }
+
+   return new_tree;
+}
+
+/**
+ * @brief Initialize a tree structure to some sane initial values
+ * @param new_tree: the new tree structure to be initialized
+ * @param compare_func: the function used to compare node keys
+ * @return Returns TRUE on successful initialization, FALSE on an error
+ */
+EAPI int 
+ecore_tree_init(Ecore_Tree *new_tree, Ecore_Compare_Cb compare_func)
+{
+   CHECK_PARAM_POINTER_RETURN("new_tree", new_tree, FALSE);
+
+   memset(new_tree, 0, sizeof(Ecore_Tree));
+
+   if (!compare_func)
+     new_tree->compare_func = ecore_direct_compare;
+   else
+     new_tree->compare_func = compare_func;
+
+   return TRUE;
+}
+
+/*
+ * @brief Add a function to be called at node destroy time
+ * @param tree: the tree that will use this function when nodes are destroyed
+ * @param free_func: the function that will be passed the node being freed
+ * @return Returns TRUE on successful set, FALSE otherwise.
+ */
+EAPI int 
+ecore_tree_free_value_cb_set(Ecore_Tree *tree, Ecore_Free_Cb free_value)
+{
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+
+   tree->free_value = free_value;
+
+   return TRUE;
+}
+
+/*
+ * @brief Add a function to be called at node destroy time
+ * @param tree: the tree that will use this function when nodes are destroyed
+ * @param free_key: the function that will be passed the node being freed
+ * @return Returns TRUE on successful set, FALSE otherwise.
+ */
+EAPI int 
+ecore_tree_free_key_cb_set(Ecore_Tree *tree, Ecore_Free_Cb free_key)
+{
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+
+   tree->free_key = free_key;
+
+   return TRUE;
+}
+
+/*
+ * @brief Initialize a new tree node
+ * @return Returns FALSE if the operation fails, otherwise TRUE
+ */
+EAPI int 
+ecore_tree_node_init(Ecore_Tree_Node *new_node)
+{
+   CHECK_PARAM_POINTER_RETURN("new_node", new_node, FALSE);
+
+   new_node->key = NULL;
+   new_node->value = NULL;
+
+   new_node->parent = NULL;
+   new_node->right_child = NULL;
+   new_node->left_child = NULL;
+
+   new_node->max_left = new_node->max_right = 0;
+
+   return TRUE;
+}
+
+/*
+ * @brief Allocate a new tree node
+ * @return Returns NULL if the operation fails, otherwise the new node.
+ */
+EAPI Ecore_Tree_Node *
+ecore_tree_node_new()
+{
+   Ecore_Tree_Node *new_node;
+
+   new_node = ECORE_TREE_NODE(malloc(sizeof(Ecore_Tree_Node)));
+   if (!new_node)
+     return NULL;
+
+   if (!ecore_tree_node_init(new_node))
+     {
+       IF_FREE(new_node);
+       return NULL;
+     }
+
+   return new_node;
+}
+
+/*
+ * @brief Free a tree node and it's children.
+ * @param node: tree node to be free()'d
+ * @param data_free: callback for destroying the data held in node
+ * @return Returns TRUE if the node is destroyed successfully, FALSE if not.
+ *
+ * If you don't want the children free'd then you need to remove the node first.
+ */
+EAPI int 
+ecore_tree_node_destroy(Ecore_Tree_Node *node, Ecore_Free_Cb value_free, Ecore_Free_Cb key_free)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   if (key_free)
+     key_free(node->key);
+   if (value_free)
+     value_free(node->value);
+
+   FREE(node);
+
+   return TRUE;
+}
+
+/*
+ * @brief Set the value of the node to value
+ * @param node: the node to be set
+ * @param value: the value to set the node to.
+ * @return Returns TRUE if the node is set successfully, FALSE if not.
+ */
+EAPI int 
+ecore_tree_node_value_set(Ecore_Tree_Node *node, void *value)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   node->value = value;
+
+   return TRUE;
+}
+
+/*
+ * @brief Get the value of the node
+ * @param node: the node that contains the desired value
+ * @return Returns NULL if an error, otherwise the value associated with node
+ */
+EAPI void *
+ecore_tree_node_value_get(Ecore_Tree_Node *node)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("node", node, NULL);
+   ret = node->value;
+
+   return ret;
+}
+
+/*
+ * @brief Set the value of the node's key  to key
+ * @param node: the node to be set
+ * @param key: the value to set it's key to.
+ * @return Returns TRUE if the node is set successfully, FALSE if not.
+ */
+EAPI int 
+ecore_tree_node_key_set(Ecore_Tree_Node *node, void *key)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   node->key = key;
+
+   return TRUE;
+}
+
+/*
+ * @brief Get the value of the node's key
+ * @param node: the node that contains the desired key
+ *
+ * @return Returns NULL if an error occurs, otherwise the key is returned
+ */
+EAPI void *
+ecore_tree_node_key_get(Ecore_Tree_Node *node)
+{
+   void *ret;
+
+   CHECK_PARAM_POINTER_RETURN("node", node, NULL);
+   ret = node->key;
+
+   return ret;
+}
+
+/**
+ * @brief Free the tree and it's stored data
+ * @param tree: the tree to destroy
+ *
+ * @return Returns TRUE if tree destroyed successfully, FALSE if not.
+ */
+EAPI int 
+ecore_tree_destroy(Ecore_Tree *tree)
+{
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+
+   while ((node = tree->tree))
+     {
+       ecore_tree_node_remove(tree, node);
+       ecore_tree_node_destroy(node, tree->free_value, tree->free_key);
+     }
+
+   FREE(tree);
+
+   return TRUE;
+}
+
+/**
+ * @brief Return the node corresponding to key
+ * @param tree: the tree to search
+ * @param key: the key to search for in the tree
+ *
+ * @return Returns the node corresponding to the key if found, otherwise NULL.
+ */
+EAPI Ecore_Tree_Node *
+ecore_tree_get_node(Ecore_Tree *tree, const void *key)
+{
+   Ecore_Tree_Node *ret;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   ret = tree_node_find(tree, key);
+
+   return ret;
+}
+
+/**
+ * @brief Return the value corresponding to key
+ * @param tree: the tree to search
+ * @param key: the key to search for in @a tree
+ * @return Returns the value corresponding to the key if found, otherwise NULL.
+ */
+EAPI void *
+ecore_tree_get(Ecore_Tree *tree, const void *key)
+{
+   void *ret;
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   node = tree_node_find(tree, key);
+   ret = (node ? node->value : NULL);
+
+   return ret;
+}
+
+/**
+ * @brief Find the closest value greater than or equal to the key.
+ * @param  tree The tree to search.
+ * @param  key  The key to search for in @a tree.
+ * @return NULL if no valid nodes, otherwise the node greater than or
+ *         equal to the key
+ */
+EAPI void *
+ecore_tree_closest_larger_get(Ecore_Tree *tree, const void *key)
+{
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   node = tree_node_find(tree, key);
+   if (node)
+     return node;
+
+   node = tree_node_find_parent(tree, key);
+   if (!node)
+     return NULL;
+
+   if (tree->compare_func(node->key, key) < 0)
+     return NULL;
+
+   return node;
+}
+
+/**
+ * @brief Find the closest value <= key
+ * @param tree the tree to search
+ * @param key  the key to search for in tree
+ * @return Returns NULL if no valid nodes, otherwise the node <= key
+ */
+EAPI void *
+ecore_tree_closest_smaller_get(Ecore_Tree *tree, const void *key)
+{
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   node = tree_node_find(tree, key);
+   if (node)
+     return node;
+
+   node = tree_node_find_parent(tree, key);
+   if (node)
+     node = node->right_child;
+
+   return node;
+}
+
+/**
+ * Set the value associated with key to @a value.
+ * @param  tree  The tree that contains the key/value pair.
+ * @param  key   The key to identify which node to set a value.
+ * @param  value Value to set the found node.
+ * @return TRUE if successful, FALSE if not.
+ */
+EAPI int 
+ecore_tree_set(Ecore_Tree *tree, void *key, void *value)
+{
+   Ecore_Tree_Node *node = NULL;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+
+   node = tree_node_find(tree, key);
+   if (!node)
+     {
+       node = ecore_tree_node_new();
+       ecore_tree_node_key_set(node, key);
+       if (!ecore_tree_node_add(tree, node))
+         return FALSE;
+     }
+   else 
+     {
+        if (tree->free_key) 
+         tree->free_key(key);
+        if (node->value && tree->free_value)
+         tree->free_value(node->value);
+     }
+
+   ecore_tree_node_value_set(node, value);
+
+   for (; node; node = node->parent)
+     tree_node_balance(tree, node);
+
+   return TRUE;
+}
+
+/**
+ * Place a node in the tree.
+ * @param tree The tree to add @a node.
+ * @param node The node to add to @a tree.
+ * @return TRUE on a successful add, FALSE otherwise.
+ */
+EAPI int 
+ecore_tree_node_add(Ecore_Tree *tree, Ecore_Tree_Node *node)
+{
+   Ecore_Tree_Node *travel = NULL;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   /* Find where to put this new node. */
+   if (!tree->tree)
+     tree->tree = node;
+   else
+     {
+       travel = tree_node_find_parent(tree, node->key);
+       node->parent = travel;
+
+       /* The node is less than travel */
+       if (tree->compare_func(node->key, travel->key) < 0)
+         {
+            travel->right_child = node;
+            travel->max_left = 1;
+            /* The node is greater than travel */
+         }
+       else
+         {
+            travel->left_child = node;
+            travel->max_right = 1;
+         }
+     }
+
+   return TRUE;
+}
+
+/**
+ * Remove the node from the tree.
+ * @param  tree The tree to remove @a node from.
+ * @param  node The node to remove from @a tree.
+ * @return TRUE on a successful remove, FALSE otherwise.
+ */
+EAPI int 
+ecore_tree_node_remove(Ecore_Tree *tree, Ecore_Tree_Node *node)
+{
+   Ecore_Tree_Node *traverse;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   /*
+    * Find the nearest value to the balanced one.
+    */
+   if (node->left_child)
+     {
+       traverse = node->left_child;
+
+       /* Now work our way down right side of the traverse node.
+        * This will give us the node with the next closest value
+        * to the current node. If traverse had no right node, then
+        * this will stop at node's left node. */
+       while (traverse->right_child)
+         {
+            traverse = traverse->right_child;
+         }
+
+       /*
+        * Hook any dropped leaves into the moved nodes spot
+        */
+       if (traverse->parent)
+         traverse->parent->left_child = traverse->left_child;
+     }
+   else if (node->right_child)
+     {
+       traverse = node->right_child;
+
+       /* Now work our way down left side of the traverse node.
+        * This will give us the node with the next closest value
+        * to the current node. If traverse had no left node, then
+        * this will stop at node's right node. */
+       while (traverse->left_child)
+         {
+            traverse = traverse->left_child;
+         }
+
+       /*
+        * Hook any dropped leaves into the moved nodes spot
+        */
+       if (traverse->right_child)
+         traverse->right_child->parent = traverse->parent;
+
+       if (traverse->parent)
+         traverse->parent->right_child = traverse->right_child;
+       else
+         tree->tree = traverse->right_child;
+     }
+   else
+     traverse = NULL;
+
+   if (traverse)
+     {
+
+       /*
+        * Ensure that we don't get a recursive reference.
+        */
+       if (node->right_child && node->right_child != traverse)
+         {
+            node->right_child->parent = traverse;
+            traverse->right_child = node->right_child;
+         }
+
+       if (node->left_child && node->left_child != traverse)
+         {
+            node->left_child->parent = traverse;
+            traverse->left_child = node->left_child;
+         }
+
+       /*
+        * Unlink the node to be moved from it's parent.
+        */
+       if (traverse->parent)
+         {
+            if (traverse->parent->left_child == traverse)
+              traverse->parent->left_child = NULL;
+            else
+              traverse->parent->right_child = NULL;
+         }
+       traverse->parent = node->parent;
+     }
+
+   if (node->parent)
+     {
+       if (node == node->parent->left_child)
+         node->parent->left_child = traverse;
+       else
+         node->parent->right_child = traverse;
+     }
+
+   if (tree->tree == node)
+     tree->tree = traverse;
+
+   node->parent = node->left_child = node->right_child = NULL;
+
+   /*
+    * Rebalance the tree to ensure short search paths.
+    */
+   while (traverse)
+     {
+       tree_node_balance(tree, traverse);
+       traverse = traverse->parent;
+     }
+
+   return TRUE;
+}
+
+/**
+ * Remove the key from the tree.
+ * @param  tree The tree to remove @a key.
+ * @param  key  The key to remove from @a tree.
+ * @return TRUE on a successful remove, FALSE otherwise.
+ */
+EAPI int 
+ecore_tree_remove(Ecore_Tree *tree, const void *key)
+{
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+   if (!tree->tree)
+     return FALSE;
+
+   /* Find the node we need to remove */
+   node = tree_node_find(tree, key);
+   if (!node)
+     return FALSE;
+
+   if (!ecore_tree_node_remove(tree, node))
+     return FALSE;
+
+   ecore_tree_node_destroy(node, tree->free_value, tree->free_key);
+
+   return TRUE;
+}
+
+/**
+ * @brief Test to see if the tree has any nodes
+ * @param tree: the tree to check for nodes
+ * @return Returns TRUE if no nodes exist, FALSE otherwise
+ */
+EAPI int 
+ecore_tree_empty_is(Ecore_Tree *tree)
+{
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+
+   if (!tree->tree)
+     return TRUE;
+
+   return FALSE;
+}
+
+/**
+ * @brief Execute function for each value in the tree
+ * @param tree: the tree to traverse
+ * @param for_each_func: the function to execute for each value in the tree
+ * @param user_data: data passed to each for_each_func call
+ * @return Returns TRUE on success, FALSE on failure.
+ */
+EAPI int 
+ecore_tree_for_each_node_value(Ecore_Tree *tree, Ecore_For_Each for_each_func, void *user_data)
+{
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+   CHECK_PARAM_POINTER_RETURN("for_each_func", for_each_func, FALSE);
+
+   if (!tree->tree)
+     return FALSE;
+
+   return tree_for_each_node_value(tree->tree, for_each_func, user_data);
+}
+
+/**
+ * @brief Execute the function for each node in the tree
+ * @param tree: the tree to traverse
+ * @param for_each_func: the function to execute for each node
+ * @param user_data: data passed to each for_each_func call
+ * @return Returns TRUE on success, FALSE on failure.
+ */
+EAPI int 
+ecore_tree_for_each_node(Ecore_Tree *tree, Ecore_For_Each for_each_func, void *user_data)
+{
+   CHECK_PARAM_POINTER_RETURN("tree", tree, FALSE);
+   CHECK_PARAM_POINTER_RETURN("for_each_func", for_each_func, FALSE);
+
+   if (!tree->tree)
+     return FALSE;
+
+   return tree_for_each_node(tree->tree, for_each_func, user_data);
+}
+
+/* Find the parent for the key */
+static Ecore_Tree_Node *
+tree_node_find_parent(Ecore_Tree *tree, const void *key)
+{
+   Ecore_Tree_Node *parent, *travel;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   parent = tree_node_find(tree, key);
+   if (parent)
+     parent = parent->parent;
+
+   travel = tree->tree;
+   if (!travel)
+     return NULL;
+
+   while (!parent)
+     {
+       int compare;
+
+       if ((compare = tree->compare_func(key, travel->key)) < 0)
+         {
+            if (!travel->right_child)
+              parent = travel;
+            travel = travel->right_child;
+         }
+       else
+         {
+            if (!travel->left_child)
+              parent = travel;
+            travel = travel->left_child;
+         }
+     }
+
+   return parent;
+}
+
+/* Search for the node with a specified key */
+static Ecore_Tree_Node *
+tree_node_find(Ecore_Tree *tree, const void *key)
+{
+   int compare;
+   Ecore_Tree_Node *node;
+
+   CHECK_PARAM_POINTER_RETURN("tree", tree, NULL);
+
+   node = tree->tree;
+   while (node && (compare = tree->compare_func(key, node->key)) != 0)
+     {
+
+       if (compare < 0)
+         {
+            if (!node->right_child)
+              return NULL;
+
+            node = node->right_child;
+         }
+       else
+         {
+            if (!node->left_child)
+              return NULL;
+
+            node = node->left_child;
+         }
+     }
+
+   return node;
+}
+
+/* Balance the tree with respect to node */
+static int 
+tree_node_balance(Ecore_Tree *tree, Ecore_Tree_Node *top_node)
+{
+   int balance;
+
+   CHECK_PARAM_POINTER_RETURN("top_node", top_node, FALSE);
+
+   /* Get the height of the left branch. */
+   if (top_node->right_child)
+     top_node->max_left = MAX_HEIGHT(top_node->right_child) + 1;
+   else
+     top_node->max_left = 0;
+
+   /* Get the height of the right branch. */
+   if (top_node->left_child)
+     top_node->max_right = MAX_HEIGHT(top_node->left_child) + 1;
+   else
+     top_node->max_right = 0;
+
+   /* Determine which side has a larger height. */
+   balance = top_node->max_right - top_node->max_left;
+
+   /* if the left side has a height advantage >1 rotate right */
+   if (balance < -1)
+     tree_node_rotate_right(tree, top_node);
+   /* else if the left side has a height advantage >1 rotate left */
+   else if (balance > 1)
+     tree_node_rotate_left(tree, top_node);
+
+   return TRUE;
+}
+
+/* Tree is overbalanced to the left, so rotate nodes to the right. */
+static int 
+tree_node_rotate_right(Ecore_Tree *tree, Ecore_Tree_Node *top_node)
+{
+   Ecore_Tree_Node *temp;
+
+   CHECK_PARAM_POINTER_RETURN("top_node", top_node, FALSE);
+
+   /* The left branch's right branch becomes the nodes left branch,
+    * the left branch becomes the top node, and the node becomes the
+    * right branch. */
+   temp = top_node->right_child;
+   top_node->right_child = temp->left_child;
+   temp->left_child = top_node;
+
+   /* Make sure the nodes know who their new parents are and the tree
+    * structure knows the start of the tree. */
+   temp->parent = top_node->parent;
+   if (temp->parent == NULL)
+     tree->tree = temp;
+   else
+     {
+       if (temp->parent->left_child == top_node)
+         temp->parent->left_child = temp;
+       else
+         temp->parent->right_child = temp;
+     }
+   top_node->parent = temp;
+
+   /* And recalculate node heights */
+   tree_node_balance(tree, top_node);
+   tree_node_balance(tree, temp);
+
+   return TRUE;
+}
+
+/* The tree is overbalanced to the right, so we rotate nodes to the left */
+static int 
+tree_node_rotate_left(Ecore_Tree *tree, Ecore_Tree_Node *top_node)
+{
+   Ecore_Tree_Node *temp;
+
+   CHECK_PARAM_POINTER_RETURN("top_node", top_node, FALSE);
+
+   /*
+    * The right branch's left branch becomes the nodes right branch,
+    * the right branch becomes the top node, and the node becomes the
+    * left branch.
+    */
+   temp = top_node->left_child;
+   top_node->left_child = temp->right_child;
+   temp->right_child = top_node;
+
+   /* Make sure the nodes know who their new parents are. */
+   temp->parent = top_node->parent;
+   if (temp->parent == NULL)
+     tree->tree = temp;
+   else
+     {
+       if (temp->parent->left_child == top_node)
+         temp->parent->left_child = temp;
+       else
+         temp->parent->right_child = temp;
+     }
+   top_node->parent = temp;
+
+   /* And recalculate node heights */
+   tree_node_balance(tree, top_node);
+   tree_node_balance(tree, temp);
+
+   return TRUE;
+}
+
+/*
+ * @brief Execute a function for each node below this point in the tree.
+ * @param node: the highest node in the tree the function will be executed for
+ * @param for_each_func: the function to pass the nodes as data into
+ * @param user_data: data passed to each for_each_func call
+ * @return Returns FALSE if an error condition occurs, otherwise TRUE
+ */
+static int 
+tree_for_each_node(Ecore_Tree_Node * node, Ecore_For_Each for_each_func, void *user_data)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   if (node->right_child)
+     tree_for_each_node(node->right_child, for_each_func, user_data);
+
+   if (node->left_child)
+     tree_for_each_node(node->left_child, for_each_func, user_data);
+
+   for_each_func(node, user_data);
+
+   return TRUE;
+}
+
+/*
+ * @brief Execute a function for each node below this point in the tree.
+ * @param node: the highest node in the tree the function will be executed for
+ * @param for_each_func: the function to pass the nodes values as data
+ * @return Returns FALSE if an error condition occurs, otherwise TRUE
+ */
+static int 
+tree_for_each_node_value(Ecore_Tree_Node *node, Ecore_For_Each for_each_func, void *user_data)
+{
+   CHECK_PARAM_POINTER_RETURN("node", node, FALSE);
+
+   if (node->right_child)
+     tree_for_each_node_value(node->right_child, for_each_func, user_data);
+
+   if (node->left_child)
+     tree_for_each_node_value(node->left_child, for_each_func, user_data);
+
+   for_each_func(node->value, user_data);
+
+   return TRUE;
+}
diff --git a/src/lib/ecore/ecore_value.c b/src/lib/ecore/ecore_value.c
new file mode 100644 (file)
index 0000000..19fcdd4
--- /dev/null
@@ -0,0 +1,137 @@
+/* ecore_value.c
+
+Copyright (C) 2001 Christopher Rosendahl    <smugg@fatelabs.com>
+                   Nathan Ingersoll         <ningerso@d.umn.edu>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies of the Software and its documentation and acknowledgment shall be
+given in the documentation and software packages that this Software was
+used.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+*/
+
+#include "Ecore.h"
+#include "Ecore_Data.h"
+#include "ecore_private.h"
+
+EAPI const unsigned int ecore_prime_table[] =
+{
+   17, 31, 61, 127, 257, 509, 1021,
+     2053, 4093, 8191, 16381, 32771, 65537, 131071, 262147, 524287, 1048573,
+     2097143, 4194301, 8388617, 16777213
+};
+
+inline void 
+ecore_print_warning(const char *function, const char *sparam)
+{
+   fprintf(stderr, "***** Developer Warning ***** :\n"
+          "\tThis program is calling:\n\n"
+          "\t%s();\n\n"
+          "\tWith the parameter:\n\n"
+          "\t%s\n\n"
+          "\tbeing NULL. Please fix your program.\n", function, sparam);
+   fflush(stderr);
+   if (getenv("ECORE_ERROR_ABORT")) abort();
+}
+
+/**
+ * Just casts the key to an unsigned int
+ * @param  key The key to return compute a hash value
+ * @return The key cast to an unsigned int.
+ */
+EAPI unsigned int 
+ecore_direct_hash(const void *key)
+{
+#ifdef __LP64__
+   unsigned long int val = (unsigned long int)key;
+
+   return (unsigned int) ((val >> 32) ^ val);
+#else
+   return (unsigned int) key;
+#endif
+}
+
+/**
+ * Compute the hash value of a string
+ * @param  key A pointer to the string to compute a hash value
+ * @return A computed hash value for @a key.
+ */
+EAPI unsigned int 
+ecore_str_hash(const void *key)
+{
+   int i;
+   unsigned int mask;
+   unsigned int value = 0;
+   const char *k = key;
+
+   if (!k)
+     return 0;
+
+   mask = (sizeof(unsigned int) * 8) - 1;
+
+   for (i = 0; k[i] != '\0'; i++)
+     {
+       value ^= ((unsigned int) k[i] << ((i * 5) & mask));
+     }
+
+   return value;
+}
+
+/**
+ * Perform a direct comparison of two keys' values
+ * @param  key1 The first key to compare
+ * @param  key2 The second key to compare
+ * @return A strcmp style value to indicate the larger key
+ */
+EAPI int 
+ecore_direct_compare(const void *key1, const void *key2)
+{
+   unsigned int k1, k2;
+
+   k1 = (unsigned int) key1;
+   k2 = (unsigned int) key2;
+
+   if (k1 > k2)
+     return 1;
+
+   if (k1 < k2)
+     return -1;
+
+   return 0;
+}
+
+/**
+ * Perform a string comparison of two keys values
+ * @param  key1 The first key to compare
+ * @param  key2 The second key to compare
+ * @return A strcmp style value to indicate the larger key
+ */
+EAPI int 
+ecore_str_compare(const void *key1, const void *key2)
+{
+   const char *k1, *k2;
+
+   if (!key1 || !key2)
+     return ecore_direct_compare(key1, key2);
+   else if (key1 == key2)
+     return 0;
+
+   k1 = key1;
+   k2 = key2;
+
+   return strcmp(k1, k2);
+}
diff --git a/src/lib/ecore_con/.cvsignore b/src/lib/ecore_con/.cvsignore
new file mode 100644 (file)
index 0000000..310b663
--- /dev/null
@@ -0,0 +1,7 @@
+.deps
+.libs
+Ecore_Con.h
+Makefile
+Makefile.in
+*.lo
+libecore_con.la
diff --git a/src/lib/ecore_con/Ecore_Con.h b/src/lib/ecore_con/Ecore_Con.h
new file mode 100644 (file)
index 0000000..35c2de7
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef _ECORE_CON_H
+#define _ECORE_CON_H
+
+#ifdef EAPI
+#undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+#include <time.h>
+#include <libgen.h>
+#ifdef HAVE_NETDB_H
+# include <netdb.h>
+#endif
+#include <Ecore_Data.h>
+
+/**
+ * @file Ecore_Con.h
+ * @brief Sockets functions.
+ *
+ * The Ecore Connection Library ( @c Ecore_Con ) provides simple mechanisms
+ * for communications between programs using reliable sockets.  It saves
+ * the programmer from having to worry about file descripters and waiting
+ * for incoming connections.
+ *
+ * There are two main objects in the @c Ecore_Con library: the @c
+ * Ecore_Con_Server and the @c Ecore_Con_Client.
+ *
+ * The @c Ecore_Con_Server represents a server that can be connected to.  
+ * It is used regardless of whether the program is acting as a server or 
+ * client itself.
+ *
+ * To create a listening server, call @c ecore_con_server_add().
+ *
+ * To connect to a server, call @c ecore_con_server_connect().  Data can
+ * then be sent to the server using the @c ecore_con_server_send().
+ * 
+ * Whenever a client connection is made to an @c Ecore_Con_Server, a
+ * @c ECORE_CON_CLIENT_ADD event is emitted.  Any event callbacks that are
+ * called receive a @c Ecore_Con_Client object, which represents a
+ * connection that that particular client.
+ *
+ * Functions are described in the following groupings:
+ * @li @ref Ecore_Con_Lib_Group
+ * @li @ref Ecore_Con_Server_Group
+ * @li @ref Ecore_Con_Client_Group
+ * @li @ref Ecore_Con_Url_Group
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+   
+   typedef struct _Ecore_Con_Server Ecore_Con_Server; /**< A connection handle */
+   typedef struct _Ecore_Con_Client Ecore_Con_Client; /**< A connection handle */
+   typedef struct _Ecore_Con_Url    Ecore_Con_Url;
+   
+   typedef enum _Ecore_Con_Type
+     {
+       ECORE_CON_LOCAL_USER,
+       ECORE_CON_LOCAL_SYSTEM,
+       ECORE_CON_LOCAL_ABSTRACT,
+       ECORE_CON_REMOTE_SYSTEM,
+       ECORE_CON_USE_SSL2 = (1 << 4),
+       ECORE_CON_USE_SSL3 = (1 << 5),
+       ECORE_CON_USE_TLS  = (1 << 6)
+     } Ecore_Con_Type;
+#define ECORE_CON_USE_SSL ECORE_CON_USE_SSL2
+
+   typedef enum _Ecore_Con_Url_Time
+     {
+       ECORE_CON_URL_TIME_NONE = 0,
+       ECORE_CON_URL_TIME_IFMODSINCE,
+       ECORE_CON_URL_TIME_IFUNMODSINCE,
+       ECORE_CON_URL_TIME_LASTMOD
+     } Ecore_Con_Url_Time;
+
+   typedef struct _Ecore_Con_Event_Client_Add  Ecore_Con_Event_Client_Add;
+   typedef struct _Ecore_Con_Event_Client_Del  Ecore_Con_Event_Client_Del;
+   typedef struct _Ecore_Con_Event_Server_Add  Ecore_Con_Event_Server_Add;
+   typedef struct _Ecore_Con_Event_Server_Del  Ecore_Con_Event_Server_Del;
+   typedef struct _Ecore_Con_Event_Client_Data Ecore_Con_Event_Client_Data;
+   typedef struct _Ecore_Con_Event_Server_Data Ecore_Con_Event_Server_Data;
+   typedef struct _Ecore_Con_Event_Url_Data Ecore_Con_Event_Url_Data;
+   typedef struct _Ecore_Con_Event_Url_Complete Ecore_Con_Event_Url_Complete;
+   typedef struct _Ecore_Con_Event_Url_Progress Ecore_Con_Event_Url_Progress;
+
+   struct _Ecore_Con_Event_Client_Add
+     {
+       Ecore_Con_Client *client;
+     };
+
+   struct _Ecore_Con_Event_Client_Del
+     {
+       Ecore_Con_Client *client;
+     };
+
+   struct _Ecore_Con_Event_Server_Add
+     {
+       Ecore_Con_Server *server;
+     };
+
+   struct _Ecore_Con_Event_Server_Del
+     {
+       Ecore_Con_Server *server;
+     };
+   
+   struct _Ecore_Con_Event_Client_Data
+     {
+       Ecore_Con_Client *client;
+       void             *data;
+       int               size;
+     };
+   
+   struct _Ecore_Con_Event_Server_Data
+     {
+       Ecore_Con_Server *server;
+       void             *data;
+       int               size;
+     };
+   
+   struct _Ecore_Con_Event_Url_Data
+     {
+       Ecore_Con_Url    *url_con;
+       int               size;
+       unsigned char     data[1];
+     };
+        
+   struct _Ecore_Con_Event_Url_Complete
+     {
+       Ecore_Con_Url    *url_con;
+       int               status;
+     };
+
+   struct _Ecore_Con_Event_Url_Progress
+     {
+       Ecore_Con_Url    *url_con;
+       struct {
+          double         total;
+          double         now;
+       } down;
+       struct {
+          double         total;
+          double         now;
+       } up;
+     };
+
+   EAPI extern int ECORE_CON_EVENT_CLIENT_ADD;
+   EAPI extern int ECORE_CON_EVENT_CLIENT_DEL;
+   EAPI extern int ECORE_CON_EVENT_SERVER_ADD;
+   EAPI extern int ECORE_CON_EVENT_SERVER_DEL;
+   EAPI extern int ECORE_CON_EVENT_CLIENT_DATA;
+   EAPI extern int ECORE_CON_EVENT_SERVER_DATA;
+   EAPI extern int ECORE_CON_EVENT_URL_DATA;
+   EAPI extern int ECORE_CON_EVENT_URL_COMPLETE;
+   EAPI extern int ECORE_CON_EVENT_URL_PROGRESS;
+   
+   EAPI int               ecore_con_init(void);
+   EAPI int               ecore_con_shutdown(void);
+   
+   EAPI Ecore_Con_Server *ecore_con_server_add(Ecore_Con_Type type, const char *name, int port, const void *data);
+   
+   EAPI Ecore_Con_Server *ecore_con_server_connect(Ecore_Con_Type type, const char *name, int port, const void *data);
+   EAPI void             *ecore_con_server_del(Ecore_Con_Server *svr);
+   EAPI void             *ecore_con_server_data_get(Ecore_Con_Server *svr);
+   EAPI int               ecore_con_server_connected_get(Ecore_Con_Server *svr);
+   EAPI Ecore_List       *ecore_con_server_clients_get(Ecore_Con_Server *svr);
+   EAPI int               ecore_con_server_send(Ecore_Con_Server *svr, const void *data, int size);
+   EAPI void              ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients);
+   EAPI char             *ecore_con_server_ip_get(Ecore_Con_Server *svr);
+   EAPI void              ecore_con_server_flush(Ecore_Con_Server *svr);
+   
+   EAPI int               ecore_con_client_send(Ecore_Con_Client *cl, const void *data, int size);
+   EAPI Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl);
+   EAPI void             *ecore_con_client_del(Ecore_Con_Client *cl);
+   EAPI void              ecore_con_client_data_set(Ecore_Con_Client *cl, const void *data);
+   EAPI void             *ecore_con_client_data_get(Ecore_Con_Client *cl);
+   EAPI char             *ecore_con_client_ip_get(Ecore_Con_Client *cl);
+   EAPI void              ecore_con_client_flush(Ecore_Con_Client *cl);
+   
+   EAPI int               ecore_con_ssl_available_get(void);
+
+   EAPI int               ecore_con_url_init(void);
+   EAPI int               ecore_con_url_shutdown(void);
+   EAPI Ecore_Con_Url    *ecore_con_url_new(const char *url);
+   EAPI void              ecore_con_url_destroy(Ecore_Con_Url *url_con);
+   EAPI void              ecore_con_url_data_set(Ecore_Con_Url *url_con, void *data);
+   EAPI void             *ecore_con_url_data_get(Ecore_Con_Url *url_con);
+   EAPI int               ecore_con_url_url_set(Ecore_Con_Url *url_con, const char *url);
+   EAPI void             ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd);
+   EAPI int              ecore_con_url_received_bytes_get(Ecore_Con_Url *url_con);
+   EAPI int               ecore_con_url_send(Ecore_Con_Url *url_con, void *data, size_t length, char *content_type);
+   EAPI void              ecore_con_url_time(Ecore_Con_Url *url_con, Ecore_Con_Url_Time condition, time_t tm);
+
+#ifdef HAVE_NETDB_H
+   EAPI int               ecore_con_dns_lookup(const char *name,
+                                              void (*done_cb)(void *data, struct hostent *hostent),
+                                              void *data);
+#endif
+                                              
+   EAPI int              ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, char *filename, char *user, char *pass, char *upload_dir);
+   EAPI void             ecore_con_url_verbose_set(Ecore_Con_Url *url_con, int verbose);
+   EAPI void             ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_con, int use_epsv);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_con/Makefile.am b/src/lib/ecore_con/Makefile.am
new file mode 100644 (file)
index 0000000..aa2e9b8
--- /dev/null
@@ -0,0 +1,37 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_con \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_con \
+@SSL_CFLAGS@ @CURL_CFLAGS@
+
+if BUILD_ECORE_CON
+
+lib_LTLIBRARIES = libecore_con.la
+include_HEADERS = \
+Ecore_Con.h
+
+libecore_con_la_SOURCES = \
+ecore_con.c \
+ecore_con_dns.c \
+ecore_con_url.c \
+ecore_con_private.h
+
+libecore_con_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@SSL_LIBS@ @CURL_LIBS@
+
+libecore_con_la_LDFLAGS = -version-info @version_info@
+
+libecore_con_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+ecore_con.c \
+ecore_con_dns.c \
+ecore_con_url.c \
+ecore_con_private.h
diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
new file mode 100644 (file)
index 0000000..8bebde0
--- /dev/null
@@ -0,0 +1,1686 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <sys/stat.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <errno.h>
+
+#include <config.h>
+
+#if USE_OPENSSL
+#include <time.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "Ecore_Con.h"
+#include "ecore_con_private.h"
+
+#ifdef HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+# include <winsock2.h>
+#endif
+
+static void _ecore_con_cb_dns_lookup(void *data, struct hostent *he);
+static void _ecore_con_server_free(Ecore_Con_Server *svr);
+static void _ecore_con_client_free(Ecore_Con_Client *cl);
+static int _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static void _ecore_con_server_flush(Ecore_Con_Server *svr);
+static void _ecore_con_client_flush(Ecore_Con_Client *cl);
+static void _ecore_con_event_client_add_free(void *data, void *ev);
+static void _ecore_con_event_client_del_free(void *data, void *ev);
+static void _ecore_con_event_client_data_free(void *data, void *ev);
+static void _ecore_con_event_server_add_free(void *data, void *ev);
+static void _ecore_con_event_server_del_free(void *data, void *ev);
+static void _ecore_con_event_server_data_free(void *data, void *ev);
+
+EAPI int ECORE_CON_EVENT_CLIENT_ADD = 0;
+EAPI int ECORE_CON_EVENT_CLIENT_DEL = 0;
+EAPI int ECORE_CON_EVENT_SERVER_ADD = 0;
+EAPI int ECORE_CON_EVENT_SERVER_DEL = 0;
+EAPI int ECORE_CON_EVENT_CLIENT_DATA = 0;
+EAPI int ECORE_CON_EVENT_SERVER_DATA = 0;
+
+static Ecore_List *servers = NULL;
+static int init_count = 0;
+#if USE_OPENSSL
+static int ssl_init_count = 0;
+#endif
+
+#define LENGTH_OF_SOCKADDR_UN(s) (strlen((s)->sun_path) + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
+#define LENGTH_OF_ABSTRACT_SOCKADDR_UN(s, path) (strlen(path) + 1 + (size_t)(((struct sockaddr_un *)NULL)->sun_path))
+
+/**
+ * @defgroup Ecore_Con_Lib_Group Ecore Connection Library Functions
+ *
+ * Utility functions that set up and shut down the Ecore Connection
+ * library.
+ */
+
+/**
+ * Initialises the Ecore_Con library.
+ * @return  Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_Con_Lib_Group
+ */
+EAPI int
+ecore_con_init(void)
+{
+   if (++init_count != 1) return init_count;
+
+   ecore_init();
+   ECORE_CON_EVENT_CLIENT_ADD = ecore_event_type_new();
+   ECORE_CON_EVENT_CLIENT_DEL = ecore_event_type_new();
+   ECORE_CON_EVENT_SERVER_ADD = ecore_event_type_new();
+   ECORE_CON_EVENT_SERVER_DEL = ecore_event_type_new();
+   ECORE_CON_EVENT_CLIENT_DATA = ecore_event_type_new();
+   ECORE_CON_EVENT_SERVER_DATA = ecore_event_type_new();
+
+   /* TODO Remember return value, if it fails, use gethostbyname() */
+   ecore_con_dns_init();
+
+   servers = ecore_list_new();
+
+   return init_count;
+}
+
+/**
+ * Shuts down the Ecore_Con library.
+ * @return  Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_Con_Lib_Group
+ */
+EAPI int
+ecore_con_shutdown(void)
+{
+   if (--init_count != 0) return init_count;
+
+   while (!ecore_list_empty_is(servers))
+     _ecore_con_server_free(ecore_list_first_remove(servers));
+   ecore_list_destroy(servers);
+   servers = NULL;
+
+   ecore_con_dns_shutdown();
+
+   ecore_shutdown();
+
+   return init_count;
+}
+
+/**
+ * @defgroup Ecore_Con_Server_Group Ecore Connection Server Functions
+ *
+ * Functions that operate on Ecore server objects.
+ */
+
+/**
+ * Creates a server to listen for connections.
+ *
+ * The socket on which the server listens depends on the connection
+ * type:
+ * @li If @a compl_type is @c ECORE_CON_LOCAL_USER, the server will listen on
+ *     the Unix socket "~/.ecore/[name]/[port]".
+ * @li If @a compl_type is @c ECORE_CON_LOCAL_SYSTEM, the server will listen
+ *     on Unix socket "/tmp/.ecore_service|[name]|[port]".
+ * @li If @a compl_type is @c ECORE_CON_REMOTE_SYSTEM, the server will listen
+ *     on TCP port @c port.
+ *
+ * @param  compl_type The connection type.
+ * @param  name       Name to associate with the socket.  It is used when
+ *                    generating the socket name of a Unix socket.  Though
+ *                    it is not used for the TCP socket, it still needs to
+ *                    be a valid character array.  @c NULL will not be
+ *                    accepted.
+ * @param  port       Number to identify socket.  When a Unix socket is used,
+ *                    it becomes part of the socket name.  When a TCP socket
+ *                    is used, it is used as the TCP port.
+ * @param  data       Data to associate with the created Ecore_Con_Server
+ *                    object.
+ * @return A new Ecore_Con_Server.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI Ecore_Con_Server *
+ecore_con_server_add(Ecore_Con_Type compl_type, const char *name, int port,
+                    const void *data)
+{
+   Ecore_Con_Server   *svr;
+   Ecore_Con_Type      type;
+   struct sockaddr_in  socket_addr;
+   struct sockaddr_un  socket_unix;
+   struct linger       lin;
+   char                buf[4096];
+
+   if (port < 0) return NULL;
+   /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
+   /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
+   /* remote system socket: TCP/IP: [name]:[port] */
+   svr = calloc(1, sizeof(Ecore_Con_Server));
+   if (!svr) return NULL;
+
+   type = compl_type;
+#if USE_OPENSSL
+   /* unset the SSL flag for the following checks */
+   type &= ECORE_CON_TYPE;
+#endif
+
+   if ((type == ECORE_CON_LOCAL_USER) || (type == ECORE_CON_LOCAL_SYSTEM) ||
+       (type == ECORE_CON_LOCAL_ABSTRACT))
+     {
+       const char *homedir;
+       struct stat st;
+       mode_t pmode, mask;
+       int socket_unix_len;
+
+       if (!name) goto error;
+       mask = S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH;
+
+       if (type == ECORE_CON_LOCAL_USER)
+         {
+            homedir = getenv("HOME");
+            if (!homedir) homedir = getenv("TMP");
+            if (!homedir) homedir = "/tmp";
+            mask = S_IRUSR | S_IWUSR | S_IXUSR;
+            snprintf(buf, sizeof(buf), "%s/.ecore", homedir);
+            if (stat(buf, &st) < 0) mkdir(buf, mask);
+            snprintf(buf, sizeof(buf), "%s/.ecore/%s", homedir, name);
+            if (stat(buf, &st) < 0) mkdir(buf, mask);
+            snprintf(buf, sizeof(buf), "%s/.ecore/%s/%i", homedir, name, port);
+            mask = S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH;
+         }
+       else if (type == ECORE_CON_LOCAL_SYSTEM)
+         {
+            mask = 0;
+            if (name[0] == '/')
+              {
+                 if (port >= 0)
+                   snprintf(buf, sizeof(buf), "%s|%i", name, port);
+                 else
+                   snprintf(buf, sizeof(buf), "%s", name);
+              }
+            else
+              snprintf(buf, sizeof(buf), "/tmp/.ecore_service|%s|%i", name, port);
+         }
+       else if (type == ECORE_CON_LOCAL_ABSTRACT)
+         strncpy(buf, name, sizeof(buf));
+       pmode = umask(mask);
+       start:
+       svr->fd = socket(AF_UNIX, SOCK_STREAM, 0);
+       if (svr->fd < 0)
+         {
+            umask(pmode);
+            goto error;
+         }
+       if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0)
+         {
+            umask(pmode);
+            goto error;
+         }
+       if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0)
+         {
+            umask(pmode);
+            goto error;
+         }
+       lin.l_onoff = 1;
+       lin.l_linger = 0;
+       if (setsockopt(svr->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) < 0)
+         {
+            umask(pmode);
+            goto error;
+         }
+       socket_unix.sun_family = AF_UNIX;
+       if (type == ECORE_CON_LOCAL_ABSTRACT)
+         {
+#ifdef HAVE_ABSTRACT_SOCKET
+            /* . is a placeholder */
+            snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name);
+            /* first char null indicates abstract namespace */
+            socket_unix.sun_path[0] = '\0';
+            socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name);
+#else
+            fprintf(stderr, "Your system does not support abstract sockets!\n");
+            umask(pmode);
+            goto error;
+#endif
+         }
+       else
+         {
+            strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
+            socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
+         }
+       if (bind(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
+         {
+            if (connect(svr->fd, (struct sockaddr *)&socket_unix,
+                        socket_unix_len) < 0)
+              {
+                 if ((type == ECORE_CON_LOCAL_USER) || 
+                     (type == ECORE_CON_LOCAL_SYSTEM))
+                   {
+                      if (unlink(buf) < 0)
+                        {
+                           umask(pmode);
+                           goto error;
+                        }
+                      else
+                        goto start;
+                   }
+                 else
+                   {
+                      umask(pmode);
+                      goto error;
+                   }
+              }
+            else
+              {
+                 umask(pmode);
+                 goto error;
+              }
+         }
+       if (listen(svr->fd, 4096) < 0)
+         {
+            umask(pmode);
+            goto error;
+         }
+       svr->path = strdup(buf);
+       if (!svr->path)
+         {
+            umask(pmode);
+            goto error;
+         }
+       svr->fd_handler = 
+         ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ,
+                                   _ecore_con_svr_handler, svr, NULL, NULL);
+       umask(pmode);
+       if (!svr->fd_handler) goto error;
+     }
+   else if (type == ECORE_CON_REMOTE_SYSTEM)
+     {
+       svr->fd = socket(AF_INET, SOCK_STREAM, 0);
+       if (svr->fd < 0) goto error;
+       if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
+       if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+       lin.l_onoff = 1;
+       lin.l_linger = 0;
+       if (setsockopt(svr->fd, SOL_SOCKET, SO_LINGER, &lin, sizeof(struct linger)) < 0) goto error;
+       socket_addr.sin_family = AF_INET;
+       socket_addr.sin_port = htons(port);
+       socket_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+       if (bind(svr->fd, (struct sockaddr *)&socket_addr, sizeof(struct sockaddr_in)) < 0) goto error;
+       if (listen(svr->fd, 4096) < 0) goto error;
+       svr->fd_handler = 
+         ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ,
+                                   _ecore_con_svr_handler, svr, NULL, NULL);
+       if (!svr->fd_handler) goto error;
+     }
+
+#if USE_OPENSSL
+   if (compl_type & ECORE_CON_SSL)
+     {
+       if (!ssl_init_count)
+         {
+            SSL_library_init();
+            SSL_load_error_strings();
+         }
+       ssl_init_count++;
+
+       switch (compl_type & ECORE_CON_SSL)
+         {
+          case ECORE_CON_USE_SSL2:
+             if (!(svr->ssl_ctx = SSL_CTX_new(SSLv2_client_method())))
+               goto error;
+             break;
+          case ECORE_CON_USE_SSL3:
+             if (!(svr->ssl_ctx = SSL_CTX_new(SSLv3_client_method())))
+               goto error;
+             break;
+          case ECORE_CON_USE_TLS:
+             if (!(svr->ssl_ctx = SSL_CTX_new(TLSv1_client_method())))
+               goto error;
+             break;
+         }
+
+       if (!(svr->ssl = SSL_new(svr->ssl_ctx)))
+         goto error;
+
+       SSL_set_fd(svr->ssl, svr->fd);
+     }
+#endif
+
+   svr->name = strdup(name);
+   if (!svr->name) goto error;
+   svr->type = type;
+   svr->port = port;
+   svr->data = (void *)data;
+   svr->created = 1;
+   svr->reject_excess_clients = 0;
+   svr->client_limit = -1;
+   svr->clients = ecore_list_new();
+   svr->ppid = getpid();
+   ecore_list_append(servers, svr);
+   ECORE_MAGIC_SET(svr, ECORE_MAGIC_CON_SERVER);
+   return svr;
+
+   error:
+   if (svr->name) free(svr->name);
+   if (svr->path) free(svr->path);
+   if (svr->fd >= 0) close(svr->fd);
+   if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+   if (svr->write_buf) free(svr->write_buf);
+   if (svr->ip) free(svr->ip);
+#if USE_OPENSSL
+   if (svr->ssl) SSL_free(svr->ssl);
+   if (svr->ssl_ctx) SSL_CTX_free(svr->ssl_ctx);
+#endif
+   free(svr);
+   return NULL;
+}
+
+/**
+ * Creates a server object to represent the server listening at the
+ * given port.
+ *
+ * The socket to which the server connects depends on the connection type:
+ * @li If @a compl_type is @c ECORE_CON_LOCAL_USER, the function will
+ *     connect to the server listening on the Unix socket
+ *     "~/.ecore/[name]/[port]".
+ * @li If @a compl_type is @c ECORE_CON_LOCAL_SYSTEM, the function will
+ *     connect to the server listening on the Unix socket
+ *     "/tmp/.ecore_service|[name]|[port]".
+ * @li If @a compl_type is @c ECORE_CON_REMOTE_SYSTEM, the function will
+ *     connect to the server listening on the TCP port "[name]:[port]".
+ *
+ * @param  compl_type The connection type.
+ * @param  name       Name used when determining what socket to connect to.
+ *                    It is used to generate the socket name when the socket
+ *                    is a Unix socket.  It is used as the hostname when
+ *                    connecting with a TCP socket.
+ * @param  port       Number to identify the socket to connect to.  Used when
+ *                    generating the socket name for a Unix socket, or as the
+ *                    TCP port when connecting to a TCP socket.
+ * @param  data       Data to associate with the created Ecore_Con_Server
+ *                    object.
+ * @return A new Ecore_Con_Server.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI Ecore_Con_Server *
+ecore_con_server_connect(Ecore_Con_Type compl_type, const char *name, int port,
+                        const void *data)
+{
+   Ecore_Con_Server   *svr;
+   Ecore_Con_Type      type;
+   struct sockaddr_un  socket_unix;
+   int                 curstate = 0;
+   char                buf[4096];
+
+   if (!name) return NULL;
+   /* local  user   socket: FILE:   ~/.ecore/[name]/[port] */
+   /* local  system socket: FILE:   /tmp/.ecore_service|[name]|[port] */
+   /* remote system socket: TCP/IP: [name]:[port] */
+   svr = calloc(1, sizeof(Ecore_Con_Server));
+   if (!svr) return NULL;
+
+   type = compl_type;
+#if USE_OPENSSL
+   /* unset the SSL flag for the following checks */
+   type &= ECORE_CON_TYPE;
+#endif
+   if ((type == ECORE_CON_REMOTE_SYSTEM) && (port < 0)) return NULL;
+
+   if ((type == ECORE_CON_LOCAL_USER) || (type == ECORE_CON_LOCAL_SYSTEM) ||
+       (type == ECORE_CON_LOCAL_ABSTRACT))
+     {
+       const char *homedir;
+       int socket_unix_len;
+
+       if (type == ECORE_CON_LOCAL_USER)
+         {
+            homedir = getenv("HOME");
+            if (!homedir) homedir = getenv("TMP");
+            if (!homedir) homedir = "/tmp";
+            snprintf(buf, sizeof(buf), "%s/.ecore/%s/%i", homedir, name, port);
+         }
+       else if (type == ECORE_CON_LOCAL_SYSTEM)
+         {
+            if (port < 0)
+              {
+                 if (name[0] == '/')
+                   strncpy(buf, name, sizeof(buf));
+                 else
+                   snprintf(buf, sizeof(buf), "/tmp/.ecore_service|%s", name);
+              }
+            else
+              {
+                 if (name[0] == '/')
+                   snprintf(buf, sizeof(buf), "%s|%i", name, port);
+                 else
+                   snprintf(buf, sizeof(buf), "/tmp/.ecore_service|%s|%i", name, port);
+              }
+         }
+       else if (type == ECORE_CON_LOCAL_ABSTRACT)
+         strncpy(buf, name, sizeof(buf));
+
+       svr->fd = socket(AF_UNIX, SOCK_STREAM, 0);
+       if (svr->fd < 0) goto error;
+       if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
+       if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+       if (setsockopt(svr->fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0) goto error;
+       socket_unix.sun_family = AF_UNIX;
+
+       if (type == ECORE_CON_LOCAL_ABSTRACT)
+         {
+#ifdef HAVE_ABSTRACT_SOCKETS
+            /* copy name insto sun_path, prefixed by null to indicate abstract namespace */
+            snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name);
+            socket_unix.sun_path[0] = '\0';
+            socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name);
+#else
+            fprintf(stderr, "Your system does not support abstract sockets!\n");
+            goto error;
+#endif
+         }
+       else
+         {
+            strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
+            socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
+         }
+
+       if (connect(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error;
+       svr->path = strdup(buf);
+       if (!svr->path) goto error;
+       svr->fd_handler = 
+         ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ,
+                                   _ecore_con_cl_handler, svr, NULL, NULL);
+       if (!svr->fd_handler) goto error;
+
+       if (!svr->delete_me)
+         {
+            /* we got our server! */
+            Ecore_Con_Event_Server_Add *e;
+
+            e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
+            if (e)
+              {
+                 svr->event_count++;
+                 e->server = svr;
+                 ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
+                                 _ecore_con_event_server_add_free, NULL);
+              }
+         }
+     }
+
+   svr->name = strdup(name);
+   if (!svr->name) goto error;
+   svr->type = compl_type;
+   svr->port = port;
+   svr->data = (void *)data;
+   svr->created = 0;
+   svr->reject_excess_clients = 0;
+   svr->client_limit = -1;
+   svr->clients = ecore_list_new();
+   ecore_list_append(servers, svr);
+   ECORE_MAGIC_SET(svr, ECORE_MAGIC_CON_SERVER);
+
+   if (type == ECORE_CON_REMOTE_SYSTEM)
+     {
+       if (!ecore_con_dns_lookup(svr->name, _ecore_con_cb_dns_lookup, svr))
+         goto error;
+     }
+
+   return svr;
+
+   error:
+   if (svr->name) free(svr->name);
+   if (svr->path) free(svr->path);
+   if (svr->fd >= 0) close(svr->fd);
+   if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+#if USE_OPENSSL
+   if (svr->ssl) SSL_free(svr->ssl);
+   if (svr->ssl_ctx) SSL_CTX_free(svr->ssl_ctx);
+#endif
+   free(svr);
+   return NULL;
+}
+
+/**
+ * Closes the connection and frees the given server.
+ * @param   svr The given server.
+ * @return  Data associated with the server when it was created.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI void *
+ecore_con_server_del(Ecore_Con_Server *svr)
+{
+   void *data;
+
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_del");
+       return NULL;
+     }
+   data = svr->data;
+   svr->data = NULL;
+   svr->delete_me = 1;
+   if (svr->event_count > 0)
+     {
+       if (svr->fd_handler)
+         {
+            ecore_main_fd_handler_del(svr->fd_handler);
+            svr->fd_handler = NULL;
+         }
+     }
+   else
+     {
+       _ecore_con_server_free(svr);
+       if (ecore_list_goto(servers, svr)) ecore_list_remove(servers);
+     }
+   return data;
+}
+
+/**
+ * Retrieves the data associated with the given server.
+ * @param   svr The given server.
+ * @return  The associated data.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI void *
+ecore_con_server_data_get(Ecore_Con_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_data_get");
+       return NULL;
+     }
+   return svr->data;
+}
+
+/**
+ * Retrieves whether the given server is currently connected.
+ * @todo Check that this function does what the documenter believes it does.
+ * @param   svr The given server.
+ * @return  @c 1 if the server is connected.  @c 0 otherwise.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI int
+ecore_con_server_connected_get(Ecore_Con_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_connected_get");
+       return 0;
+     }
+   if (svr->connecting) return 0;
+   return 1;
+}
+
+/**
+ * Retrieves the current list of clients.
+ * @param   svr The given server.
+ * @return  The list of clients on this server.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI Ecore_List *
+ecore_con_server_clients_get(Ecore_Con_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_clients_get");
+       return NULL;
+     }
+   return svr->clients;
+}
+
+/**
+ * Sends the given data to the given server.
+ * @param   svr  The given server.
+ * @param   data The given data.
+ * @param   size Length of the data, in bytes, to send.
+ * @return  The number of bytes sent.  @c 0 will be returned if there is an
+ *          error.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI int
+ecore_con_server_send(Ecore_Con_Server *svr, const void *data, int size)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_send");
+       return 0;
+     }
+   if (svr->dead) return 0;
+   if (!data) return 0;
+   if (size < 1) return 0;
+   if (svr->fd_handler)
+     ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ | ECORE_FD_WRITE);
+   if (svr->write_buf)
+     {
+       unsigned char *newbuf;
+
+       newbuf = realloc(svr->write_buf, svr->write_buf_size + size);
+       if (newbuf) svr->write_buf = newbuf;
+       else return 0;
+       memcpy(svr->write_buf + svr->write_buf_size, data, size);
+       svr->write_buf_size += size;
+     }
+   else
+     {
+       svr->write_buf = malloc(size);
+       if (!svr->write_buf) return 0;
+       svr->write_buf_size = size;
+       memcpy(svr->write_buf, data, size);
+     }
+   return size;
+}
+
+/**
+ * Sets a limit on the number of clients that can be handled concurrently
+ * by the given server, and a policy on what to do if excess clients try to
+ * connect.
+ * Beware that if you set this once ecore is already running, you may
+ * already have pending CLIENT_ADD events in your event queue.  Those
+ * clients have already connected and will not be affected by this call.
+ * Only clients subsequently trying to connect will be affected.
+ * @param   svr           The given server.
+ * @param   client_limit  The maximum number of clients to handle
+ *                        concurrently.  -1 means unlimited (default).  0
+ *                        effectively disables the server.
+ * @param   reject_excess_clients  Set to 1 to automatically disconnect
+ *                        excess clients as soon as they connect if you are
+ *                        already handling client_limit clients.  Set to 0
+ *                        (default) to just hold off on the "accept()"
+ *                        system call until the number of active clients
+ *                        drops. This causes the kernel to queue up to 4096
+ *                        connections (or your kernel's limit, whichever is
+ *                        lower).
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI void
+ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_client_limit_set");
+       return;
+     }
+   svr->client_limit = client_limit;
+   svr->reject_excess_clients = reject_excess_clients;
+}
+
+/**
+ * Gets the IP address of a server that has been connected to.
+ *
+ * @param   svr           The given server.
+ * @return  A pointer to an internal string that contains the IP address of
+ *          the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
+ *          This string should not be modified or trusted to stay valid after
+ *          deletion for the @p svr object. If no IP is known NULL is returned.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI char *
+ecore_con_server_ip_get(Ecore_Con_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_ip_get");
+       return NULL;
+     }
+   return svr->ip;
+}
+
+/**
+ * Flushes all pending data to the given server. Will return when done.
+ *
+ * @param   svr           The given server.
+ * @ingroup Ecore_Con_Server_Group
+ */
+EAPI void
+ecore_con_server_flush(Ecore_Con_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_CON_SERVER, "ecore_con_server_flush");
+       return;
+     }
+   _ecore_con_server_flush(svr);
+}
+
+/**
+ * @defgroup Ecore_Con_Client_Group Ecore Connection Client Functions
+ *
+ * Functions that operate on Ecore connection client objects.
+ */
+
+/**
+ * Sends the given data to the given client.
+ * @param   cl   The given client.
+ * @param   data The given data.
+ * @param   size Length of the data, in bytes, to send.
+ * @return  The number of bytes sent.  @c 0 will be returned if there is an
+ *          error.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI int
+ecore_con_client_send(Ecore_Con_Client *cl, const void *data, int size)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_send");
+       return 0;
+     }
+   if (cl->dead) return 0;
+   if (!data) return 0;
+   if (size < 1) return 0;
+   if (cl->fd_handler)
+     ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ | ECORE_FD_WRITE);
+   if (cl->buf)
+     {
+       unsigned char *newbuf;
+
+       newbuf = realloc(cl->buf, cl->buf_size + size);
+       if (newbuf) cl->buf = newbuf;
+       else return 0;
+       memcpy(cl->buf + cl->buf_size, data, size);
+       cl->buf_size += size;
+     }
+   else
+     {
+       cl->buf = malloc(size);
+       if (!cl->buf) return 0;
+       cl->buf_size = size;
+       memcpy(cl->buf, data, size);
+     }
+   return size;
+}
+
+/**
+ * Retrieves the server representing the socket the client has
+ * connected to.
+ * @param   cl The given client.
+ * @return  The server that the client connected to.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI Ecore_Con_Server *
+ecore_con_client_server_get(Ecore_Con_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_server_get");
+       return NULL;
+     }
+   return cl->server;
+}
+
+/**
+ * Closes the connection and frees memory allocated to the given client.
+ * @param   cl The given client.
+ * @return  Data associated with the client.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI void *
+ecore_con_client_del(Ecore_Con_Client *cl)
+{
+   void *data;
+
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_del");
+       return NULL;
+     }
+   data = cl->data;
+   cl->data = NULL;
+   cl->delete_me = 1;
+   if (cl->event_count > 0)
+     {
+       if (cl->fd_handler)
+         {
+            ecore_main_fd_handler_del(cl->fd_handler);
+            cl->fd_handler = NULL;
+         }
+     }
+   else
+     {
+       if (ecore_list_goto(cl->server->clients, cl))
+         ecore_list_remove(cl->server->clients);
+       _ecore_con_client_free(cl);
+     }
+   return data;
+}
+
+/**
+ * Sets the data associated with the given client to @p data.
+ * @param   cl   The given client.
+ * @param   data What to set the data to.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI void
+ecore_con_client_data_set(Ecore_Con_Client *cl, const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_data_set");
+       return;
+     }
+   cl->data = (void *)data;
+}
+
+/**
+ * Retrieves the data associated with the given client.
+ * @param   cl The given client.
+ * @return  The data associated with @p cl.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI void *
+ecore_con_client_data_get(Ecore_Con_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_data_get");
+       return NULL;
+     }
+   return cl->data;
+}
+
+/**
+ * Gets the IP address of a cleint that has connected.
+ *
+ * @param   cl            The given client.
+ * @return  A pointer to an internal string that contains the IP address of
+ *          the connected client in the form "XXX.YYY.ZZZ.AAA" IP notation.
+ *          This string should not be modified or trusted to stay valid after
+ *          deletion for the @p cl object. If no IP is known NULL is returned.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI char *
+ecore_con_client_ip_get(Ecore_Con_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_ip_get");
+       return NULL;
+     }
+   return cl->ip;
+}
+
+/**
+ * Flushes all pending data to the given client. Will return when done.
+ *
+ * @param   cl            The given client.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI void
+ecore_con_client_flush(Ecore_Con_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_CON_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_CON_CLIENT, "ecore_con_client_flush");
+       return;
+     }
+   _ecore_con_client_flush(cl);
+}
+
+/**
+ * Returns if SSL support is available
+ * @return  1 if SSL is available, 0 if it is not.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI int
+ecore_con_ssl_available_get(void)
+{
+#if USE_OPENSSL
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+static void
+_ecore_con_server_free(Ecore_Con_Server *svr)
+{
+   double t_start, t;
+
+   ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
+   t_start = ecore_time_get();
+   while ((svr->write_buf) && (!svr->dead))
+     {
+       _ecore_con_server_flush(svr);
+       t = ecore_time_get();
+       if ((t - t_start) > 0.5)
+         {
+            printf("ECORE_CON: EEK - stuck in _ecore_con_server_free() trying\n"
+                   "  to flush data out from the server, and have been for\n"
+                   "  %1.1f seconds. This is taking too long. Aborting flush.\n",
+                   (t - t_start));
+            break;
+         }
+     }
+   if (svr->write_buf) free(svr->write_buf);
+   while (!ecore_list_empty_is(svr->clients))
+     _ecore_con_client_free(ecore_list_first_remove(svr->clients));
+   ecore_list_destroy(svr->clients);
+   if ((svr->created) && (svr->path) && (svr->ppid == getpid())) 
+     unlink(svr->path);
+   if (svr->fd >= 0) close(svr->fd);
+#if USE_OPENSSL
+   if (svr->ssl)
+     {
+       SSL_shutdown(svr->ssl);
+       SSL_free(svr->ssl);
+     }
+   if (svr->ssl_ctx) SSL_CTX_free(svr->ssl_ctx);
+#endif
+   if (svr->name) free(svr->name);
+   if (svr->path) free(svr->path);
+   if (svr->ip) free(svr->ip);
+   if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+   free(svr);
+}
+
+static void
+_ecore_con_client_free(Ecore_Con_Client *cl)
+{
+   double t_start, t;
+
+   ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
+   t_start = ecore_time_get();
+   while ((cl->buf) && (!cl->dead))
+     {
+       _ecore_con_client_flush(cl);
+       t = ecore_time_get();
+       if ((t - t_start) > 0.5)
+         {
+            printf("ECORE_CON: EEK - stuck in _ecore_con_client_free() trying\n"
+                   "  to flush data out from the client, and have been for\n"
+                   "  %1.1f seconds. This is taking too long. Aborting flush.\n",
+                   (t - t_start));
+            break;
+         }
+     }
+   if (cl->buf) free(cl->buf);
+   if (cl->fd >= 0) close(cl->fd);
+   if (cl->fd_handler) ecore_main_fd_handler_del(cl->fd_handler);
+   if (cl->ip) free(cl->ip);
+   free(cl);
+}
+
+static int
+_ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   Ecore_Con_Server   *svr;
+   int                 new_fd;
+   struct sockaddr_in  incoming;
+   size_t              size_in;
+
+   svr = data;
+   if (svr->dead) return 1;
+   if (svr->delete_me) return 1;
+   if ((svr->client_limit >= 0) && (!svr->reject_excess_clients))
+     {
+       if (ecore_list_count(svr->clients) >= svr->client_limit) return 1;
+     }
+   /* a new client */
+   size_in = sizeof(struct sockaddr_in);
+   new_fd = accept(svr->fd, (struct sockaddr *)&incoming, (socklen_t *)&size_in);
+   if (new_fd >= 0)
+     {
+       Ecore_Con_Client *cl;
+       char buf[64];
+       uint32_t ip;
+
+       if ((svr->client_limit >= 0) && (svr->reject_excess_clients))
+         {
+            close(new_fd);
+            return 1;
+         }
+
+       cl = calloc(1, sizeof(Ecore_Con_Client));
+       if (!cl)
+         {
+            close(new_fd);
+            return 1;
+         }
+       fcntl(new_fd, F_SETFL, O_NONBLOCK);
+       fcntl(new_fd, F_SETFD, FD_CLOEXEC);
+       cl->fd = new_fd;
+       cl->server = svr;
+       cl->fd_handler = 
+         ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
+                                   _ecore_con_svr_cl_handler, cl, NULL, NULL);
+       ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
+       ecore_list_append(svr->clients, cl);
+       if (!svr->path)
+         {
+            ip = incoming.sin_addr.s_addr;
+            snprintf(buf, sizeof(buf),
+                     "%i.%i.%i.%i",
+                     (ip      ) & 0xff,
+                     (ip >> 8 ) & 0xff,
+                     (ip >> 16) & 0xff,
+                     (ip >> 24) & 0xff);
+            cl->ip = strdup(buf);
+         }
+       if (!cl->delete_me)
+         {
+            Ecore_Con_Event_Client_Add *e;
+
+            e = calloc(1, sizeof(Ecore_Con_Event_Client_Add));
+            if (e)
+              {
+                 cl->event_count++;
+                 e->client = cl;
+                 ecore_event_add(ECORE_CON_EVENT_CLIENT_ADD, e,
+                                 _ecore_con_event_client_add_free, NULL);
+              }
+         }
+     }
+   return 1;
+}
+
+#if USE_OPENSSL
+/* Tries to connect an Ecore_Con_Server to an SSL host.
+ * Returns 1 on success, -1 on fatal errors and 0 if the caller
+ * should try again later.
+ */
+static int
+svr_try_connect_ssl(Ecore_Con_Server *svr)
+{
+   int res, ssl_err, flag = 0;
+
+   if (!ssl_init_count)
+     {
+       SSL_library_init();
+       SSL_load_error_strings();
+     }
+   ssl_init_count++;
+
+   res = SSL_connect(svr->ssl);
+   if (res == 1) return 1;
+   ssl_err = SSL_get_error(svr->ssl, res);
+
+   if (ssl_err == SSL_ERROR_NONE) return 1;
+   if (ssl_err == SSL_ERROR_WANT_READ)       flag = ECORE_FD_READ;
+   else if (ssl_err == SSL_ERROR_WANT_WRITE) flag = ECORE_FD_WRITE;
+   else return -1;
+   if (svr->fd_handler)
+     {
+       if (flag) ecore_main_fd_handler_active_set(svr->fd_handler, flag);
+     }
+   return 0;
+}
+#endif
+
+static void
+kill_server(Ecore_Con_Server *svr)
+{
+   if (!svr->delete_me)
+     {
+       Ecore_Con_Event_Server_Del *e;
+
+       e = calloc(1, sizeof(Ecore_Con_Event_Server_Del));
+       if (e)
+         {
+            svr->event_count++;
+            e->server = svr;
+            ecore_event_add(ECORE_CON_EVENT_SERVER_DEL, e,
+                            _ecore_con_event_server_del_free, NULL);
+         }
+     }
+
+   svr->dead = 1;
+   if (svr->fd_handler) ecore_main_fd_handler_del(svr->fd_handler);
+   svr->fd_handler = NULL;
+}
+
+static void
+_ecore_con_cb_dns_lookup(void *data, struct hostent *he)
+{
+   Ecore_Con_Server   *svr;
+   struct sockaddr_in  socket_addr;
+   int                 curstate = 0;
+   char                buf[64];
+   uint32_t            ip;
+
+   svr = data;
+
+   if (!he) goto error;
+   svr->fd = socket(AF_INET, SOCK_STREAM, 0);
+   if (svr->fd < 0) goto error;
+   if (fcntl(svr->fd, F_SETFL, O_NONBLOCK) < 0) goto error;
+   if (fcntl(svr->fd, F_SETFD, FD_CLOEXEC) < 0) goto error;
+   if (setsockopt(svr->fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0) 
+     goto error;
+   socket_addr.sin_family = AF_INET;
+   socket_addr.sin_port = htons(svr->port);
+   memcpy((struct in_addr *)&socket_addr.sin_addr,
+         he->h_addr, sizeof(struct in_addr));
+   if (connect(svr->fd, (struct sockaddr *)&socket_addr, sizeof(struct sockaddr_in)) < 0)
+     {
+       if (errno != EINPROGRESS)
+         goto error;
+       svr->connecting = 1;
+       svr->fd_handler = 
+         ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ | ECORE_FD_WRITE,
+                                   _ecore_con_cl_handler, svr, NULL, NULL);
+     }
+   else
+     svr->fd_handler = 
+     ecore_main_fd_handler_add(svr->fd, ECORE_FD_READ,
+                              _ecore_con_cl_handler, svr, NULL, NULL);
+
+   if (!svr->fd_handler) goto error;
+   ip = socket_addr.sin_addr.s_addr;
+   snprintf(buf, sizeof(buf),
+           "%i.%i.%i.%i",
+           (ip      ) & 0xff,
+           (ip >> 8 ) & 0xff,
+           (ip >> 16) & 0xff,
+           (ip >> 24) & 0xff);
+   svr->ip = strdup(buf);
+
+#if USE_OPENSSL
+   if (svr->type & ECORE_CON_SSL)
+     {
+       if (!ssl_init_count)
+         {
+            SSL_library_init();
+            SSL_load_error_strings();
+         }
+       ssl_init_count++;
+
+       switch (svr->type & ECORE_CON_SSL)
+         {
+          case ECORE_CON_USE_SSL2:
+             if (!(svr->ssl_ctx = SSL_CTX_new(SSLv2_client_method())))
+               goto error;
+             break;
+          case ECORE_CON_USE_SSL3:
+             if (!(svr->ssl_ctx = SSL_CTX_new(SSLv3_client_method())))
+               goto error;
+             break;
+          case ECORE_CON_USE_TLS:
+             if (!(svr->ssl_ctx = SSL_CTX_new(TLSv1_client_method())))
+               goto error;
+             break;
+         }
+
+       if (!(svr->ssl = SSL_new(svr->ssl_ctx)))
+         goto error;
+
+       SSL_set_fd(svr->ssl, svr->fd);
+     }
+#endif
+
+   return;
+
+   error:
+   kill_server(svr);
+}
+
+static int
+svr_try_connect_plain(Ecore_Con_Server *svr)
+{
+   int so_err = 0;
+   unsigned int size = sizeof(int);
+
+   if (getsockopt(svr->fd, SOL_SOCKET, SO_ERROR, &so_err, &size) < 0)
+     so_err = -1;
+
+   if (so_err != 0)
+     {
+       /* we lost our server! */
+       kill_server(svr);
+     }
+   else
+     {
+       if (!svr->delete_me)
+         {
+            /* we got our server! */
+            Ecore_Con_Event_Server_Add *e;
+
+            svr->connecting = 0;
+            e = calloc(1, sizeof(Ecore_Con_Event_Server_Add));
+            if (e)
+              {
+                 svr->event_count++;
+                 e->server = svr;
+                 ecore_event_add(ECORE_CON_EVENT_SERVER_ADD, e,
+                                 _ecore_con_event_server_add_free, NULL);
+              }
+         }
+       if (svr->fd_handler)
+         {
+            if (!svr->write_buf)
+              ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
+         }
+     }
+   return (!svr->dead);
+}
+
+/* returns 1 on success, 0 on failure */
+static int svr_try_connect(Ecore_Con_Server *svr)
+{
+#if USE_OPENSSL
+   if (!svr->ssl)
+     {
+#endif
+       return svr_try_connect_plain(svr);
+#if USE_OPENSSL
+     }
+   else
+     switch (svr_try_connect_ssl(svr)) {
+      case 1:
+       return svr_try_connect_plain(svr);
+      case -1:
+       kill_server(svr);
+       return 0;
+      default:
+       return 0;
+     }
+#endif
+}
+
+
+static int
+_ecore_con_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
+{
+   Ecore_Con_Server   *svr;
+#if USE_OPENSSL
+   int ssl_err = SSL_ERROR_NONE;
+#endif
+
+   svr = data;
+   if (svr->dead) return 1;
+   if (svr->delete_me) return 1;
+   if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+     {
+       unsigned char *inbuf = NULL;
+       int            inbuf_num = 0;
+
+       if (svr->connecting && !svr_try_connect(svr))
+          return 1;
+
+       for (;;)
+         {
+            int num, lost_server;
+            char buf[READBUFSIZ];
+
+            lost_server = 0;
+#if USE_OPENSSL
+            if (!svr->ssl)
+              {
+#endif
+                 if ((num = read(svr->fd, buf, READBUFSIZ)) < 1)
+                   {
+                      lost_server = ((errno == EIO) ||
+                                     (errno == EBADF) ||
+                                     (errno == EPIPE) ||
+                                     (errno == EINVAL) ||
+                                     (errno == ENOSPC) ||
+                                     (num == 0));
+                      /* is num == 0 is right - when the server closes us
+                       * off we will get this (as this is called when select
+                       * tells us there is data to read!)
+                       */
+                   }
+#if USE_OPENSSL
+              }
+            else
+              {
+                 num = SSL_read(svr->ssl, buf, READBUFSIZ);
+                 if (num < 1)
+                   {
+                      ssl_err = SSL_get_error(svr->ssl, num);
+                      lost_server = (ssl_err == SSL_ERROR_ZERO_RETURN);
+                      if (ssl_err == SSL_ERROR_SYSCALL)
+                        {
+                           if (num == 0) lost_server = 1;
+                           else
+                             {
+                                lost_server = ((errno == EIO) ||
+                                               (errno == EBADF) ||
+                                               (errno == EPIPE) ||
+                                               (errno == EINVAL) ||
+                                               (errno == ENOSPC) ||
+                                               (errno == ECONNRESET));
+                             }
+                        }
+                   }
+                 else
+                   ssl_err = SSL_ERROR_NONE;
+              }
+#endif
+            if (num < 1)
+              {
+                 if (inbuf)
+                   {
+                      if (!svr->delete_me)
+                        {
+                           Ecore_Con_Event_Server_Data *e;
+
+                           e = calloc(1, sizeof(Ecore_Con_Event_Server_Data));
+                           if (e)
+                             {
+                                svr->event_count++;
+                                e->server = svr;
+                                e->data = inbuf;
+                                e->size = inbuf_num;
+                                ecore_event_add(ECORE_CON_EVENT_SERVER_DATA, e,
+                                                _ecore_con_event_server_data_free,
+                                                NULL);
+                             }
+                        }
+                   }
+                 if (lost_server)
+                   {
+                      /* we lost our server! */
+                      kill_server(svr);
+                      return 1;
+                   }
+                 break;
+              }
+            else
+              {
+                 inbuf = realloc(inbuf, inbuf_num + num);
+                 memcpy(inbuf + inbuf_num, buf, num);
+                 inbuf_num += num;
+              }
+         }
+
+#if USE_OPENSSL
+       if (svr->fd_handler)
+         {
+            if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
+              ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
+            else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
+              ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_WRITE);
+         }
+#endif
+     }
+   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
+     {
+       if (svr->connecting && !svr_try_connect (svr))
+          return 1;
+       _ecore_con_server_flush(svr);
+     }
+
+   return 1;
+}
+
+static int
+_ecore_con_svr_cl_handler(void *data, Ecore_Fd_Handler *fd_handler)
+{
+   Ecore_Con_Client   *cl;
+
+   cl = data;
+   if (cl->dead) return 1;
+   if (cl->delete_me) return 1;
+   if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+     {
+       unsigned char *inbuf = NULL;
+       int            inbuf_num = 0;
+
+       for (;;)
+         {
+            char buf[65536];
+            int num;
+
+            errno = 0;
+            num = read(cl->fd, buf, 65536);
+            if (num < 1)
+              {
+                 if (inbuf)
+                   {
+                      if (!cl->delete_me)
+                        {
+                           Ecore_Con_Event_Client_Data *e;
+
+                           e = calloc(1, sizeof(Ecore_Con_Event_Client_Data));
+                           if (e)
+                             {
+                                cl->event_count++;
+                                e->client = cl;
+                                e->data = inbuf;
+                                e->size = inbuf_num;
+                                ecore_event_add(ECORE_CON_EVENT_CLIENT_DATA, e,
+                                                _ecore_con_event_client_data_free,
+                                                NULL);
+                             }
+                        }
+                   }
+                 if ((errno == EIO) ||  (errno == EBADF) ||
+                     (errno == EPIPE) || (errno == EINVAL) ||
+                     (errno == ENOSPC) || (num == 0)/* is num == 0 right? */)
+                   {
+                      if (!cl->delete_me)
+                        {
+                           /* we lost our client! */
+                           Ecore_Con_Event_Client_Del *e;
+
+                           e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
+                           if (e)
+                             {
+                                cl->event_count++;
+                                e->client = cl;
+                                ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
+                                                _ecore_con_event_client_del_free,
+                                                NULL);
+                             }
+                        }
+                      cl->dead = 1;
+                      if (cl->fd_handler)
+                        ecore_main_fd_handler_del(cl->fd_handler);
+                      cl->fd_handler = NULL;
+                   }
+                 break;
+              }
+            else
+              {
+                 inbuf = realloc(inbuf, inbuf_num + num);
+                 memcpy(inbuf + inbuf_num, buf, num);
+                 inbuf_num += num;
+              }
+         }
+     }
+   else if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_WRITE))
+     _ecore_con_client_flush(cl);
+   return 1;
+}
+
+static void
+_ecore_con_server_flush(Ecore_Con_Server *svr)
+{
+   int count, num, lost_server = 0;
+#if USE_OPENSSL
+   int ssl_err = SSL_ERROR_NONE;
+#endif
+
+   if (!svr->write_buf) return;
+
+   /* check whether we need to write anything at all.
+       * we must not write zero bytes with SSL_write() since it
+       * causes undefined behaviour
+       */
+   if (svr->write_buf_size == svr->write_buf_offset)
+      return;
+
+   num = svr->write_buf_size - svr->write_buf_offset;
+#if USE_OPENSSL
+   if (!svr->ssl)
+     {
+#endif
+       count = write(svr->fd, svr->write_buf + svr->write_buf_offset, num);
+       if (count < 1)
+         lost_server = (errno == EIO || errno == EBADF ||
+                        errno == EPIPE || errno == EINVAL || errno == ENOSPC);
+#if USE_OPENSSL
+     }
+   else
+     {
+       count = SSL_write(svr->ssl, svr->write_buf + svr->write_buf_offset, num);
+
+       if (count < 1)
+         {
+            ssl_err = SSL_get_error(svr->ssl, count);
+            lost_server = (ssl_err == SSL_ERROR_ZERO_RETURN);
+         }
+     }
+#endif
+
+   if (lost_server)
+     {
+       /* we lost our server! */
+       kill_server(svr);
+       return;
+     }
+
+   if (count < 1)
+     {
+#if USE_OPENSSL
+       if (svr->fd_handler)
+         {
+            if (svr->ssl && ssl_err == SSL_ERROR_WANT_READ)
+              ecore_main_fd_handler_active_set(svr->fd_handler,
+                                               ECORE_FD_READ);
+            else if (svr->ssl && ssl_err == SSL_ERROR_WANT_WRITE)
+              ecore_main_fd_handler_active_set(svr->fd_handler,
+                                               ECORE_FD_WRITE);
+         }
+#endif
+       return;
+     }
+
+   svr->write_buf_offset += count;
+   if (svr->write_buf_offset >= svr->write_buf_size)
+     {
+       svr->write_buf_size = 0;
+       svr->write_buf_offset = 0;
+       free(svr->write_buf);
+       svr->write_buf = NULL;
+       if (svr->fd_handler)
+         ecore_main_fd_handler_active_set(svr->fd_handler, ECORE_FD_READ);
+     }
+}
+
+static void
+_ecore_con_client_flush(Ecore_Con_Client *cl)
+{
+   int count, num;
+
+   if (!cl->buf) return;
+   num = cl->buf_size - cl->buf_offset;
+   count = write(cl->fd, cl->buf + cl->buf_offset, num);
+   if (count < 1)
+     {
+       if ((errno == EIO) || (errno == EBADF) || (errno == EPIPE) ||
+           (errno == EINVAL) || (errno == ENOSPC))
+         {
+            if (!cl->delete_me)
+              {
+                 /* we lost our client! */
+                 Ecore_Con_Event_Client_Del *e;
+
+                 e = calloc(1, sizeof(Ecore_Con_Event_Client_Del));
+                 if (e)
+                   {
+                      cl->event_count++;
+                      e->client = cl;
+                      ecore_event_add(ECORE_CON_EVENT_CLIENT_DEL, e,
+                                      _ecore_con_event_client_del_free, NULL);
+                   }
+                 cl->dead = 1;
+                 if (cl->fd_handler)
+                   ecore_main_fd_handler_del(cl->fd_handler);
+                 cl->fd_handler = NULL;
+              }
+         }
+       return;
+     }
+   cl->buf_offset += count;
+   if (cl->buf_offset >= cl->buf_size)
+     {
+       cl->buf_size = 0;
+       cl->buf_offset = 0;
+       free(cl->buf);
+       cl->buf = NULL;
+       if (cl->fd_handler)
+         ecore_main_fd_handler_active_set(cl->fd_handler, ECORE_FD_READ);
+     }
+}
+
+static void
+_ecore_con_event_client_add_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Add *e;
+
+   e = ev;
+   e->client->event_count--;
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_con_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_con_event_client_del_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Del *e;
+
+   e = ev;
+   e->client->event_count--;
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_con_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_con_event_client_data_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Data *e;
+
+   e = ev;
+   e->client->event_count--;
+   if (e->data) free(e->data);
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_con_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_con_event_server_add_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Add *e;
+
+   e = ev;
+   e->server->event_count--;
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_con_server_del(e->server);
+   free(e);
+}
+
+static void
+_ecore_con_event_server_del_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Del *e;
+
+   e = ev;
+   e->server->event_count--;
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_con_server_del(e->server);
+   free(e);
+}
+
+static void
+_ecore_con_event_server_data_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Data *e;
+
+   e = ev;
+   e->server->event_count--;
+   if (e->data) free(e->data);
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_con_server_del(e->server);
+   free(e);
+}
diff --git a/src/lib/ecore_con/ecore_con_dns.c b/src/lib/ecore_con/ecore_con_dns.c
new file mode 100644 (file)
index 0000000..e9c64de
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/* 
+ * Simple dns lookup
+ *
+ * http://www.faqs.org/rfcs/rfc1035.html
+ * man resolv.conf
+ *
+ * And a sneakpeek at ares, ftp://athena-dist.mit.edu/pub/ATHENA/ares/
+ */
+/*
+ * TODO
+ * * Check env LOCALDOMAIN to override search
+ * * Check env RES_OPTIONS to override options
+ *
+ * * Read /etc/host.conf
+ * * host.conf env
+ *   RESOLV_HOST_CONF, RESOLV_SERV_ORDER
+ * * Check /etc/hosts
+ *
+ * * Caching
+ *   We should store all names returned when CNAME, might have different ttl.
+ *   Check against search and hostname when querying cache?
+ * * Remember all querys and delete them on shutdown
+ *
+ * * Need more buffer overflow checks.
+ */
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "ecore_con_private.h"
+
+#include <ctype.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+#include <netdb.h>
+
+typedef struct _CB_Data CB_Data;
+
+struct _CB_Data
+{
+   Ecore_List2 __list_data;
+   void (*cb_done) (void *data, struct hostent *hostent);
+   void *data;
+   Ecore_Fd_Handler *fdh;
+   pid_t pid;
+   Ecore_Event_Handler *handler;
+   int fd2;
+};
+
+static void _ecore_con_dns_readdata(CB_Data *cbdata);
+static void _ecore_con_dns_slave_free(CB_Data *cbdata);
+static int _ecore_con_dns_data_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_con_dns_exit_handler(void *data, int type __UNUSED__, void *event);
+
+static int dns_init = 0;
+static Ecore_List2 *dns_slaves = NULL;
+  
+int
+ecore_con_dns_init(void)
+{
+   dns_init++;
+   return dns_init;
+}
+
+int
+ecore_con_dns_shutdown(void)
+{
+   dns_init--;
+   if (dns_init == 0)
+     {
+       while (dns_slaves) _ecore_con_dns_slave_free((CB_Data *)dns_slaves);
+     }
+   return dns_init;
+}
+
+int
+ecore_con_dns_lookup(const char *name,
+                    void (*done_cb) (void *data, struct hostent *hostent),
+                    void *data)
+{
+   CB_Data *cbdata;
+   int fd[2];
+   
+   if (pipe(fd) < 0) return 0;
+   cbdata = calloc(1, sizeof(CB_Data));
+   if (!cbdata)
+     {
+       close(fd[0]);
+       close(fd[1]);
+       return 0;
+     }
+   cbdata->cb_done = done_cb;
+   cbdata->data = data;
+   cbdata->fd2 = fd[1];
+   if (!(cbdata->fdh = ecore_main_fd_handler_add(fd[0], ECORE_FD_READ, 
+                                                _ecore_con_dns_data_handler,
+                                                cbdata,
+                                                NULL, NULL)))
+     {
+       free(cbdata);
+       close(fd[0]);
+       close(fd[1]);
+       return 0;
+     }
+                            
+   if ((cbdata->pid = fork()) == 0)
+     {
+       struct hostent *he;
+       
+       /* CHILD */
+       he = gethostbyname(name);
+       if (he)
+         {
+            struct in_addr addr;
+            
+            memcpy((struct in_addr *)&addr, he->h_addr,
+                   sizeof(struct in_addr));
+            write(fd[1], &(addr.s_addr), sizeof(in_addr_t));
+         }
+       close(fd[1]);
+# ifdef __USE_ISOC99
+       _Exit(0);
+# else 
+       _exit(0);
+# endif        
+     }
+   /* PARENT */
+   cbdata->handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _ecore_con_dns_exit_handler, cbdata);
+   if (!cbdata->handler)
+     {
+       ecore_main_fd_handler_del(cbdata->fdh);
+       free(cbdata);
+       close(fd[0]);
+       close(fd[1]);
+       return 0;
+     }
+   dns_slaves = _ecore_list2_append(dns_slaves, cbdata);
+   return 1;
+}
+
+static void
+_ecore_con_dns_readdata(CB_Data *cbdata)
+{
+   struct hostent he;
+   struct in_addr addr;
+   char *addr2;
+   ssize_t size;
+
+   size = read(ecore_main_fd_handler_fd_get(cbdata->fdh), &(addr.s_addr),
+              sizeof(in_addr_t));
+   if (size == sizeof(in_addr_t))
+     {
+       addr2 = (char *)&addr;
+       he.h_addrtype = AF_INET;
+       he.h_length = sizeof(in_addr_t);
+       he.h_addr_list = &addr2;
+       cbdata->cb_done(cbdata->data, &he);
+     }
+   else
+     cbdata->cb_done(cbdata->data, NULL);
+   cbdata->cb_done = NULL;
+}
+
+static void
+_ecore_con_dns_slave_free(CB_Data *cbdata)
+{
+   dns_slaves = _ecore_list2_remove(dns_slaves, cbdata);
+   close(ecore_main_fd_handler_fd_get(cbdata->fdh));
+   close(cbdata->fd2);
+   ecore_main_fd_handler_del(cbdata->fdh);
+   ecore_event_handler_del(cbdata->handler);
+   free(cbdata);
+}
+
+static int
+_ecore_con_dns_data_handler(void *data, Ecore_Fd_Handler *fd_handler)
+{
+   CB_Data *cbdata;
+
+   cbdata = data;
+   if (cbdata->cb_done)
+     {
+       if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ))
+         _ecore_con_dns_readdata(cbdata);
+       else
+         {
+            cbdata->cb_done(cbdata->data, NULL);
+            cbdata->cb_done = NULL;
+         }
+     }
+   _ecore_con_dns_slave_free(cbdata);
+   return 0;
+}
+
+static int
+_ecore_con_dns_exit_handler(void *data, int type __UNUSED__, void *event)
+{
+   CB_Data *cbdata;
+   Ecore_Exe_Event_Del *ev;
+   
+   ev = event;
+   cbdata = data;
+   if (cbdata->pid != ev->pid) return 1;
+   return 0;
+   _ecore_con_dns_slave_free(cbdata);
+   return 0;
+}
diff --git a/src/lib/ecore_con/ecore_con_private.h b/src/lib/ecore_con/ecore_con_private.h
new file mode 100644 (file)
index 0000000..d5d9258
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef _ECORE_CON_PRIVATE_H
+#define _ECORE_CON_PRIVATE_H
+
+#include "Ecore_Con.h"
+#include "Ecore_Data.h"
+
+#define ECORE_MAGIC_CON_SERVER             0x77665544
+#define ECORE_MAGIC_CON_CLIENT             0x77556677
+#define ECORE_MAGIC_CON_URL                0x77074255
+
+#define ECORE_CON_TYPE 0x0f
+#define ECORE_CON_SSL  0xf0
+
+#if USE_OPENSSL
+#include <openssl/ssl.h>
+#endif
+#ifdef HAVE_CURL
+#include <curl/curl.h>
+#endif
+
+#define READBUFSIZ 65536
+
+struct _Ecore_Con_Client
+{
+   ECORE_MAGIC;
+   int               fd;
+   Ecore_Con_Server *server;
+   void             *data;
+   Ecore_Fd_Handler *fd_handler;
+   int               buf_size;
+   int               buf_offset;
+   unsigned char    *buf;
+   char             *ip;
+   int               event_count;
+   char              dead : 1;
+   char              delete_me : 1;
+};
+
+struct _Ecore_Con_Server
+{
+   ECORE_MAGIC;
+   int               fd;
+   Ecore_Con_Type    type;
+   char             *name;
+   int               port;
+   char             *path;
+   void             *data;
+   Ecore_Fd_Handler *fd_handler;
+   Ecore_List       *clients;
+   int               write_buf_size;
+   int               write_buf_offset;
+   unsigned char    *write_buf;
+   int               event_count;
+   int               client_limit;
+   pid_t             ppid;
+#if USE_OPENSSL
+   SSL_CTX          *ssl_ctx;
+   SSL              *ssl;
+#endif
+   char             *ip;
+   char              dead : 1;
+   char              created : 1;
+   char              connecting : 1;
+   char              reject_excess_clients : 1;
+   char              delete_me : 1;
+};
+
+#ifdef HAVE_CURL
+struct _Ecore_Con_Url
+{
+   ECORE_MAGIC;
+   CURL              *curl_easy;
+   struct curl_slist *headers;
+   char              *url;
+
+   Ecore_Con_Url_Time condition;
+   time_t             time;
+   void              *data;
+
+   Ecore_Fd_Handler  *fd_handler;
+   int               fd;
+   int               flags;
+
+   int               received;
+   int               write_fd;
+
+   unsigned char      active : 1;
+};
+#endif
+
+/* from ecore_con_dns.c */
+int ecore_con_dns_init(void);
+int ecore_con_dns_shutdown(void);
+#endif
diff --git a/src/lib/ecore_con/ecore_con_url.c b/src/lib/ecore_con/ecore_con_url.c
new file mode 100644 (file)
index 0000000..7527f58
--- /dev/null
@@ -0,0 +1,929 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+/*
+ * For info on how to use libcurl, see:
+ * http://curl.haxx.se/libcurl/c/libcurl-tutorial.html
+ */
+
+/*
+ * Brief usage:
+ * 1. Create an Ecore_Con_Url object
+ * 2. Register to receive the ECORE_CON_EVENT_URL_COMPLETE event
+ *    (and optionally the ECORE_CON_EVENT_URL_DATA event to receive
+ *    the response, e.g. for HTTP/FTP downloads)
+ * 3. Set the URL with ecore_con_url_url_set(...);
+ * 4. Perform the operation with ecore_con_url_send(...);
+ *
+ * Note that it is good to reuse Ecore_Con_Url objects wherever possible, but
+ * bear in mind that each one can only perform one operation at a time.
+ * You need to wait for the ECORE_CON_EVENT_URL_COMPLETE event before re-using
+ * or destroying the object.
+ * 
+ * Example Usage 1 (HTTP GET):
+ *   ecore_con_url_url_set(url_con, "http://www.google.com");
+ *   ecore_con_url_send(url_con, NULL, 0, NULL);
+ *
+ * Example usage 2 (HTTP POST):
+ *   ecore_con_url_url_set(url_con, "http://www.example.com/post_handler.cgi");
+ *   ecore_con_url_send(url_con, data, data_length, "multipart/form-data");
+ *
+ * Example Usage 3 (FTP download):
+ *   ecore_con_url_url_set(url_con, "ftp://ftp.example.com/pub/myfile");
+ *   ecore_con_url_send(url_con, NULL, 0, NULL);
+ *
+ * Example Usage 4 (FTP upload as ftp://ftp.example.com/file):
+ *   ecore_con_url_url_set(url_con, "ftp://ftp.example.com");
+ *   ecore_con_url_ftp_upload(url_con, "/tmp/file", "user", "pass", NULL);
+ *
+ * Example Usage 5 (FTP upload as ftp://ftp.example.com/dir/file):
+ *   ecore_con_url_url_set(url_con, "ftp://ftp.example.com");
+ *   ecore_con_url_ftp_upload(url_con, "/tmp/file", "user", "pass","dir");
+ *
+ * FIXME: Support more CURL features: Authentication, Progress callbacks and more...
+ */
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "Ecore_Con.h"
+#include "ecore_con_private.h"
+
+#include <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+/**
+ * @defgroup Ecore_Con_Url_Group Ecore URL Connection Functions
+ *
+ * Utility functions that set up, use and shut down the Ecore URL 
+ * Connection library.
+ * FIXME: write detailed description
+ */
+
+int ECORE_CON_EVENT_URL_DATA = 0;
+int ECORE_CON_EVENT_URL_COMPLETE = 0;
+int ECORE_CON_EVENT_URL_PROGRESS = 0;
+
+#ifdef HAVE_CURL
+static int _ecore_con_url_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_con_url_perform(Ecore_Con_Url *url_con);
+static size_t _ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void *userp);
+static int _ecore_con_url_progress_cb(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow);
+static size_t _ecore_con_url_read_cb(void *ptr, size_t size, size_t nitems, void *stream);
+static void _ecore_con_event_url_free(void *data __UNUSED__, void *ev);
+static int _ecore_con_url_process_completed_jobs(Ecore_Con_Url *url_con_to_match);
+
+static Ecore_Idler     *_fd_idler_handler = NULL;
+static Ecore_List      *_url_con_list = NULL;
+static CURLM           *curlm = NULL;
+static fd_set           _current_fd_set;
+static int              init_count = 0;
+
+struct _Ecore_Con_Url_Event
+{
+  int    type;
+  void  *ev;
+};
+typedef struct _Ecore_Con_Url_Event Ecore_Con_Url_Event;
+
+static int
+_url_complete_idler_cb(void *data)
+{
+   Ecore_Con_Url_Event *lev;
+
+   lev = data;
+
+   ecore_event_add(lev->type, lev->ev, _ecore_con_event_url_free, NULL);
+   free(lev);
+
+   return 0;
+}
+
+static void
+_url_complete_push_event(int type, void *ev)
+{
+   Ecore_Con_Url_Event *lev;
+
+   lev = malloc(sizeof(Ecore_Con_Url_Event));
+   lev->type = type;
+   lev->ev = ev;
+
+   ecore_idler_add(_url_complete_idler_cb, lev);
+}
+
+#endif
+
+/**
+ * Initialises the Ecore_Con_Url library.
+ * @return Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int
+ecore_con_url_init(void)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_CON_EVENT_URL_DATA)
+     {
+       ECORE_CON_EVENT_URL_DATA = ecore_event_type_new();
+       ECORE_CON_EVENT_URL_COMPLETE = ecore_event_type_new();
+       ECORE_CON_EVENT_URL_PROGRESS = ecore_event_type_new();
+     }
+
+   if (!_url_con_list)
+     {
+       _url_con_list = ecore_list_new();
+       if (!_url_con_list) return 0;
+     }
+
+   if (!curlm)
+     {
+       FD_ZERO(&_current_fd_set);
+       if (curl_global_init(CURL_GLOBAL_NOTHING))
+         {
+            ecore_list_destroy(_url_con_list);
+            _url_con_list = NULL;
+            return 0;
+         }
+
+       curlm = curl_multi_init();
+       if (!curlm)
+         {
+            ecore_list_destroy(_url_con_list);
+            _url_con_list = NULL;
+            return 0;
+         }
+     }
+   init_count++;
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Shuts down the Ecore_Con_Url library.
+ * @return  Number of calls that still uses Ecore_Con_Url
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int
+ecore_con_url_shutdown(void)
+{
+#ifdef HAVE_CURL
+
+   if (!init_count)
+     return 0;
+
+   init_count--;
+   if (_url_con_list)
+     {
+       if (!ecore_list_empty_is(_url_con_list))
+         {
+            Ecore_Con_Url *url_con;
+            while ((url_con = ecore_list_first(_url_con_list)))
+              {
+                 ecore_con_url_destroy(url_con);
+              }
+         }
+       ecore_list_destroy(_url_con_list);
+       _url_con_list = NULL;
+     }
+
+   if (curlm)
+     {
+       curl_multi_cleanup(curlm);
+       curlm = NULL;
+     }
+
+   curl_global_cleanup();
+#endif
+   return 1;
+}
+
+/**
+ * Creates and initializes a new Ecore_Con_Url.
+ * @return  NULL on error, a new Ecore_Con_Url on success.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI Ecore_Con_Url *
+ecore_con_url_new(const char *url)
+{
+#ifdef HAVE_CURL
+   Ecore_Con_Url *url_con;
+
+   if (!init_count) return NULL;
+
+   url_con = calloc(1, sizeof(Ecore_Con_Url));
+   if (!url_con) return NULL;
+
+   url_con->curl_easy = curl_easy_init();
+   if (!url_con->curl_easy)
+     {
+       free(url_con);
+       return NULL;
+     }
+
+   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_CON_URL);
+
+   ecore_con_url_url_set(url_con, url);
+
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEFUNCTION, _ecore_con_url_data_cb);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_WRITEDATA, url_con);
+
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSFUNCTION, _ecore_con_url_progress_cb);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSDATA, url_con);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_NOPROGRESS, FALSE);
+
+   /*
+    * FIXME: Check that these timeouts are sensible defaults
+    * FIXME: Provide a means to change these timeouts
+    */
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_CONNECTTIMEOUT, 30);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMEOUT, 300);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_FOLLOWLOCATION, 1);
+
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_ENCODING, "gzip,deflate");
+
+   url_con->fd = -1;
+   url_con->write_fd = -1;
+
+   return url_con;
+#else
+   return NULL;
+   url = NULL;
+#endif
+}
+
+/**
+ * Frees the Ecore_Con_Url.
+ * @return  FIXME: To be documented. 
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_destroy(Ecore_Con_Url *url_con)
+{
+#ifdef HAVE_CURL
+   if (!url_con) return;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_destroy");
+       return;
+     }
+
+   ECORE_MAGIC_SET(url_con, ECORE_MAGIC_NONE);
+   if (url_con->fd_handler)
+     {
+       ecore_main_fd_handler_del(url_con->fd_handler);
+       url_con->fd = -1;
+     }
+   if (url_con->curl_easy)
+     {
+       if (url_con->active)
+         {
+            if (ecore_list_find(_url_con_list, ecore_direct_compare, url_con) == url_con)
+              ecore_list_remove(_url_con_list);
+            url_con->active = 0;
+
+            curl_multi_remove_handle(curlm, url_con->curl_easy);
+         }
+       curl_easy_cleanup(url_con->curl_easy);
+     }
+   curl_slist_free_all(url_con->headers);
+   free(url_con->url);
+   free(url_con);
+#else
+   return;
+   url_con = NULL;
+#endif
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int
+ecore_con_url_url_set(Ecore_Con_Url *url_con, const char *url)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_url_set");
+       return 0;
+     }
+
+   if (url_con->active) return 0;
+
+   free(url_con->url);
+   url_con->url = NULL;
+   if (url)
+     url_con->url = strdup(url);
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_URL, url_con->url);
+   return 1;
+#else
+   return 0;
+   url_con = NULL;
+   url = NULL;
+#endif
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_data_set(Ecore_Con_Url *url_con, void *data)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_data_set");
+       return;
+     }
+
+   url_con->data = data;
+#else
+   return;
+   url_con = NULL;
+   data = NULL;
+#endif
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void *
+ecore_con_url_data_get(Ecore_Con_Url *url_con)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_data_get");
+       return NULL;
+     }
+
+   return url_con->data;
+#else
+   return NULL;
+   url_con = NULL;
+#endif
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_time(Ecore_Con_Url *url_con, Ecore_Con_Url_Time condition, time_t tm)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_time");
+       return;
+     }
+
+   url_con->condition = condition;
+   url_con->time = tm;
+#else
+   return;
+   url_con = NULL;
+   condition = 0;
+   tm = 0;
+#endif
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_set");
+       return ;
+     }
+   url_con->write_fd = fd;
+#endif   
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int
+ecore_con_url_received_bytes_get(Ecore_Con_Url *url_con)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_received_bytes_get");
+       return -1;
+     }
+
+   return url_con->received;
+#endif   
+   return 0;
+}
+
+/**
+ * FIXME: To be documented.
+ * @return  FIXME: To be documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int
+ecore_con_url_send(Ecore_Con_Url *url_con, void *data, size_t length, char *content_type)
+{
+#ifdef HAVE_CURL
+   char tmp[256];
+
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_send");
+       return 0;
+     }
+
+   if (url_con->active) return 0;
+   if (!url_con->url) return 0;
+
+   curl_slist_free_all(url_con->headers);
+   url_con->headers = NULL;
+
+   if (data)
+     {
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_POSTFIELDS, data);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_POSTFIELDSIZE, length);
+
+       if (content_type && (strlen(content_type) < 200))
+         {
+            sprintf(tmp, "Content-type: %s", content_type);
+            url_con->headers = curl_slist_append(url_con->headers, tmp);
+         }
+       sprintf(tmp, "Content-length: %d", length);
+       url_con->headers = curl_slist_append(url_con->headers, tmp);
+     }
+
+   switch (url_con->condition)
+     {
+      case ECORE_CON_URL_TIME_NONE:
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMECONDITION, CURL_TIMECOND_NONE);
+        break;
+      case ECORE_CON_URL_TIME_IFMODSINCE:
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMEVALUE, url_con->time);
+        break;
+      case ECORE_CON_URL_TIME_IFUNMODSINCE:
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFUNMODSINCE);
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMEVALUE, url_con->time);
+        break;
+      case ECORE_CON_URL_TIME_LASTMOD:
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMECONDITION, CURL_TIMECOND_LASTMOD);
+        curl_easy_setopt(url_con->curl_easy, CURLOPT_TIMEVALUE, url_con->time);
+        break;
+     }
+
+   curl_easy_setopt(url_con->curl_easy, CURLOPT_HTTPHEADER, url_con->headers);
+
+   return _ecore_con_url_perform(url_con);
+#else
+   return 0;
+   url_con = NULL;
+   data = NULL;
+   length = 0;
+   content_type = NULL;
+#endif
+}
+
+/**
+ * Makes a FTP upload
+ * @return  FIXME: To be more documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI int 
+ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, char *filename, char *user, char *pass, char *upload_dir)
+{
+#ifdef HAVE_CURL
+   char url[4096];
+   char userpwd[4096];
+   FILE *fd;
+   struct stat file_info;
+       
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_ftp_upload");
+       return 0;
+     }
+     
+   if (url_con->active) return 0;
+   if (!url_con->url) return 0;
+   if (filename)
+     {
+       if (stat(filename, &file_info)) return 0;
+       fd = fopen(filename, "rb");
+       if (upload_dir)
+          snprintf(url, sizeof(url), "ftp://%s/%s/%s", url_con->url, upload_dir, basename(filename));
+       else
+          snprintf(url, sizeof(url), "ftp://%s/%s", url_con->url, basename(filename));
+       snprintf(userpwd, sizeof(userpwd), "%s:%s", user, pass);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_INFILESIZE_LARGE, (curl_off_t)file_info.st_size);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_USERPWD, userpwd);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_UPLOAD, 1);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_READFUNCTION, _ecore_con_url_read_cb);
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_READDATA, fd);
+       ecore_con_url_url_set(url_con, url);
+
+       return _ecore_con_url_perform(url_con);
+     }
+   else
+       return 0;
+#else
+   return 0;
+   url_con = NULL;
+   filename = NULL;
+   user = NULL;
+   pass = NULL;
+   upload_dir = NULL;
+#endif   
+}
+
+/**
+ * Enable or disable libcurl verbose output, useful for debug
+ * @return  FIXME: To be more documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_verbose_set(Ecore_Con_Url *url_con, int verbose)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_verbose_set");
+       return;
+     }
+     
+   if (url_con->active) return;
+   if (!url_con->url) return;
+   if (verbose == TRUE) 
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_VERBOSE, 1);
+   else 
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_VERBOSE, 0);
+#endif
+}
+
+/**
+ * Enable or disable EPSV extension
+ * @return  FIXME: To be more documented.
+ * @ingroup Ecore_Con_Url_Group
+ */
+EAPI void
+ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_con, int use_epsv)
+{
+#ifdef HAVE_CURL
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_ftp_use_epsv_set");
+       return;
+     }
+     
+   if (url_con->active) return;
+   if (!url_con->url) return;
+   if (use_epsv == TRUE) 
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_FTP_USE_EPSV, 1);
+   else 
+       curl_easy_setopt(url_con->curl_easy, CURLOPT_FTP_USE_EPSV, 0);
+#endif
+}
+
+#ifdef HAVE_CURL
+static int
+_ecore_con_url_suspend_fd_handler(void)
+{
+   Ecore_Con_Url       *url_con;
+   int                  deleted = 0;
+
+   if (!_url_con_list)
+     return 0;
+
+   ecore_list_first_goto(_url_con_list);
+   while ((url_con = ecore_list_current(_url_con_list)))
+     {
+       if (url_con->active && url_con->fd_handler)
+         {
+            ecore_main_fd_handler_del(url_con->fd_handler);
+            url_con->fd_handler = NULL;
+            deleted++;
+         }
+       ecore_list_next(_url_con_list);
+     }
+
+   return deleted;
+}
+
+static int
+_ecore_con_url_restart_fd_handler(void)
+{
+   Ecore_Con_Url       *url_con;
+   int                  activated = 0;
+
+   if (!_url_con_list)
+     return 0;
+
+   ecore_list_first_goto(_url_con_list);
+   while ((url_con = ecore_list_current(_url_con_list)))
+     {
+       if (url_con->fd_handler == NULL
+           && url_con->fd != -1)
+         {
+            url_con->fd_handler = ecore_main_fd_handler_add(url_con->fd,
+                                                            url_con->flags,
+                                                            _ecore_con_url_fd_handler,
+                                                            NULL, NULL, NULL);
+            activated++;
+         }
+       ecore_list_next(_url_con_list);
+     }
+
+   return activated;
+}
+
+static size_t
+_ecore_con_url_data_cb(void *buffer, size_t size, size_t nitems, void *userp)
+{
+   Ecore_Con_Url *url_con;
+   Ecore_Con_Event_Url_Data *e;
+   size_t real_size = size * nitems;
+
+   url_con = (Ecore_Con_Url *)userp;
+
+   if (!url_con) return -1;
+   if (!ECORE_MAGIC_CHECK(url_con, ECORE_MAGIC_CON_URL))
+     {
+       ECORE_MAGIC_FAIL(url_con, ECORE_MAGIC_CON_URL, "ecore_con_url_data_cb");
+       return -1;
+     }
+
+   url_con->received += real_size;
+
+   if (url_con->write_fd < 0)
+     {
+       e = malloc(sizeof(Ecore_Con_Event_Url_Data) + sizeof(unsigned char) * (real_size - 1));
+       if (e)
+         {
+            e->url_con = url_con;
+            e->size = real_size;
+            memcpy(e->data, buffer, real_size);
+            ecore_event_add(ECORE_CON_EVENT_URL_DATA, e,
+                            _ecore_con_event_url_free, NULL);
+         }
+     }
+   else
+     {
+       ssize_t count = 0;
+       size_t  total_size = real_size;
+       size_t  offset = 0;
+
+       while (total_size > 0)
+         {
+            count = write(url_con->write_fd, (char*) buffer + offset, total_size);
+            if (count < 0)
+              {
+                 if (errno != EAGAIN && errno != EINTR)
+                   return -1;
+              }
+            else
+              {
+                 total_size -= count;
+                 offset += count;
+              }
+         }
+     }
+
+   return real_size;
+}
+
+#define ECORE_CON_URL_TRANSMISSION(Transmit, Event, Url_con, Total, Now) \
+{ \
+   Ecore_Con_Event_Url_Progress *e; \
+   if ((Total != 0) || (Now != 0)) \
+     { \
+       e = calloc(1, sizeof(Ecore_Con_Event_Url_Progress)); \
+       if (e) \
+         { \
+            e->url_con = url_con; \
+            e->total = Total; \
+            e->now = Now; \
+            ecore_event_add(Event, e, _ecore_con_event_url_free, NULL); \
+         } \
+     } \
+}
+
+static int
+_ecore_con_url_progress_cb(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow)
+{
+   Ecore_Con_Event_Url_Progress        *e;
+   Ecore_Con_Url               *url_con;
+
+   url_con = clientp;
+
+   e = calloc(1, sizeof(Ecore_Con_Event_Url_Progress));
+   if (e)
+     {
+       e->url_con = url_con;
+       e->down.total = dltotal;
+       e->down.now = dlnow;
+       e->up.total = ultotal;
+       e->up.now = ulnow;
+       ecore_event_add(ECORE_CON_EVENT_URL_PROGRESS, e, _ecore_con_event_url_free, NULL);
+     }
+
+   return 0;
+}
+
+static size_t 
+_ecore_con_url_read_cb(void *ptr, size_t size, size_t nitems, void *stream)
+{
+   size_t retcode = fread(ptr, size, nitems, stream);
+   if (ferror((FILE*)stream)) {
+       fclose(stream);
+       return CURL_READFUNC_ABORT;
+   } else if ((retcode == 0) || (retcode < nitems)) {
+       fclose((FILE*)stream);
+       return 0;
+   }
+   fprintf(stderr, "*** We read %d bytes from file\n", retcode);
+   return retcode;
+}
+
+static int
+_ecore_con_url_perform(Ecore_Con_Url *url_con)
+{
+   fd_set read_set, write_set, exc_set;
+   double start;
+   int fd_max;
+   int fd;
+   int flags;
+   int still_running;
+   int completed_immediately = 0;
+
+   ecore_list_append(_url_con_list, url_con);
+
+   start = ecore_time_get();
+   url_con->active = 1;
+   curl_multi_add_handle(curlm, url_con->curl_easy);
+   /* This one can't be stopped, or the download never start. */
+   while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM);
+
+   completed_immediately =  _ecore_con_url_process_completed_jobs(url_con);
+
+   if (!completed_immediately)
+     {
+       /* url_con still active -- set up an fd_handler */
+       FD_ZERO(&read_set);
+       FD_ZERO(&write_set);
+       FD_ZERO(&exc_set);
+
+       /* Stupid curl, why can't I get the fd to the current added job? */
+       curl_multi_fdset(curlm, &read_set, &write_set, &exc_set, &fd_max);
+       for (fd = 0; fd <= fd_max; fd++)
+         {
+            if (!FD_ISSET(fd, &_current_fd_set))
+              {
+                 flags = 0;
+                 if (FD_ISSET(fd, &read_set)) flags |= ECORE_FD_READ;
+                 if (FD_ISSET(fd, &write_set)) flags |= ECORE_FD_WRITE;
+                 if (FD_ISSET(fd, &exc_set)) flags |= ECORE_FD_ERROR;
+                 if (flags)
+                   {
+                      FD_SET(fd, &_current_fd_set);
+                      url_con->fd = fd;
+                      url_con->flags = flags;
+                      url_con->fd_handler = ecore_main_fd_handler_add(fd, flags,
+                                                                      _ecore_con_url_fd_handler,
+                                                                      NULL, NULL, NULL);
+                      break;
+                   }
+              }
+         }
+       if (!url_con->fd_handler)
+         {
+            /* Failed to set up an fd_handler */
+            curl_multi_remove_handle(curlm, url_con->curl_easy);
+            url_con->active = 0;
+            url_con->fd = -1;
+            return 0;
+         }
+     }
+
+   return 1;
+}
+
+static int
+_ecore_con_url_idler_handler(void *data)
+{
+   double      start;
+   int         done = 1;
+   int         still_running;
+
+   start = ecore_time_get();
+   while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM)
+     /* make this 1/20th of a second to keep interactivity high */
+     if ((ecore_time_get() - start) > 0.2)
+       {
+         done = 0;
+         break;
+       }
+
+   _ecore_con_url_process_completed_jobs(NULL);
+
+   if (done)
+     {
+       _ecore_con_url_restart_fd_handler();
+       _fd_idler_handler = NULL;
+       return 0;
+     }
+
+   return 1;
+}
+
+static int
+_ecore_con_url_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   _ecore_con_url_suspend_fd_handler();
+
+   if (_fd_idler_handler == NULL)
+     _fd_idler_handler = ecore_idler_add(_ecore_con_url_idler_handler, NULL);
+
+   return 1;
+}
+
+static int
+_ecore_con_url_process_completed_jobs(Ecore_Con_Url *url_con_to_match)
+{
+   Ecore_Con_Url *url_con;
+   CURLMsg *curlmsg;
+   int n_remaining;
+   int job_matched = 0;
+
+   /* Loop jobs and check if any are done */
+   while ((curlmsg = curl_multi_info_read(curlm, &n_remaining)) != NULL)
+     {
+       if (curlmsg->msg != CURLMSG_DONE) continue;
+
+       /* find the job which is done */
+       ecore_list_first_goto(_url_con_list);
+       while ((url_con = ecore_list_current(_url_con_list)))
+         {
+            if (curlmsg->easy_handle == url_con->curl_easy)
+              {
+                 /* We have found the completed job in our job list */
+                 if (url_con_to_match && (url_con == url_con_to_match)) {
+                      job_matched = 1;
+                 }
+                 if (url_con->fd != -1)
+                   {
+                      FD_CLR(url_con->fd, &_current_fd_set);
+                      if (url_con->fd_handler)
+                        ecore_main_fd_handler_del(url_con->fd_handler);
+                      url_con->fd = -1;
+                      url_con->fd_handler = NULL;
+                   }
+                 ecore_list_remove(_url_con_list);
+                 url_con->active = 0;
+                   {
+                      Ecore_Con_Event_Url_Complete *e;
+                      e = calloc(1, sizeof(Ecore_Con_Event_Url_Complete));
+                      if (e)
+                        {
+                           e->url_con = url_con;
+
+                           e->status = 0;
+                           curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &e->status);
+
+                           _url_complete_push_event(ECORE_CON_EVENT_URL_COMPLETE, e);
+                        }
+                   }
+                 curl_multi_remove_handle(curlm, url_con->curl_easy);
+                 break;
+              }
+            ecore_list_next(_url_con_list);
+         }
+     }
+   return job_matched;
+}
+
+static void
+_ecore_con_event_url_free(void *data __UNUSED__, void *ev)
+{
+   free(ev);
+}
+
+#endif
diff --git a/src/lib/ecore_config/.cvsignore b/src/lib/ecore_config/.cvsignore
new file mode 100644 (file)
index 0000000..59bc827
--- /dev/null
@@ -0,0 +1,8 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_config.la
+ecore_config_ipc_ecore.la
+system.db
diff --git a/src/lib/ecore_config/Ecore_Config.h b/src/lib/ecore_config/Ecore_Config.h
new file mode 100644 (file)
index 0000000..6733d7b
--- /dev/null
@@ -0,0 +1,312 @@
+#ifndef _ECORE_CONFIG_H
+# define _ECORE_CONFIG_H
+
+#ifdef EAPI
+#undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+/**
+ * @file 
+ * @brief Provides the Enlightened Property Library.
+ *
+ * This file provies all headers and structs for use with Ecore_Config.
+ * Using individual header files should not be necessary.
+ */
+
+# define DIR_DELIMITER      '/'
+# define ECORE_CONFIG_FLOAT_PRECISION 1000
+
+/* FIXME: this should only be included if evas is present */
+# include <Evas.h>
+
+# define ECORE_CONFIG_GLOBAL_ID "_system"
+
+/* structures */
+
+/**
+ * Valid configuration property types.
+ */
+typedef enum Ecore_Config_Type
+{
+   ECORE_CONFIG_NIL = 0,                       /**< Property with no value. */
+   ECORE_CONFIG_INT = 1,                       /**< Integer property type. */
+   ECORE_CONFIG_FLT = 2,                       /**< Float property type. */
+   ECORE_CONFIG_STR = 3,                       /**< String property type. */
+   ECORE_CONFIG_RGB = 4,                       /**< Colour property type. */
+   ECORE_CONFIG_THM = 5,                       /**< Theme property type. */
+   ECORE_CONFIG_BLN = 6,                       /**< Boolean property type. */
+   ECORE_CONFIG_SCT = 7,      /**< Structure property type */
+} Ecore_Config_Type;
+
+typedef enum Ecore_Config_Flag
+{
+   ECORE_CONFIG_FLAG_NONE = 0,
+   ECORE_CONFIG_FLAG_BOUNDS = 1,
+   ECORE_CONFIG_FLAG_MODIFIED = 2,
+   ECORE_CONFIG_FLAG_SYSTEM = 4,
+   ECORE_CONFIG_FLAG_CMDLN = 8
+} Ecore_Config_Flag;
+
+/**
+ * Property change callback function prototype.
+ */
+typedef int         (*Ecore_Config_Listener) (const char *key,
+                                             const Ecore_Config_Type type,
+                                             const int tag, void *data);
+
+typedef struct Ecore_Config_Listener_List
+{
+   Ecore_Config_Listener listener;
+   const char         *name;
+   void               *data;
+   int                 tag;
+   struct Ecore_Config_Listener_List *next;
+} Ecore_Config_Listener_List;
+
+/**
+ * The actual property for storing a key-value pair.
+ */
+typedef struct Ecore_Config_Prop
+{
+   char               *key;    /* Property key. */
+   char               *description;    /* Description set by ecore_config_descibe. */
+   char                short_opt;      /* short identifier on command line (-f) */
+   char               *long_opt;       /* long identifier on command line (--foo) */
+   char               *ptr;    /* Used as the value when the property is a string or theme. */
+   Ecore_Config_Type   type;   /* Property type. */
+   long                val;    /* Used as the value when the property is an integer, float or colour. */
+   long                lo;     /* Lower bound for the value when the property is an integer or float. */
+   long                hi;     /* Higher bound for the value when the property is an integer or float. */
+   long                step;   /* Increment for the value when the property is an integer or float. */
+   Ecore_Config_Flag   flags;  /// < Configuration flags.
+   Ecore_Config_Listener_List *listeners;      /* List of change listeners. */
+   void               *data;   /// < Stores extra data for the property.
+   struct Ecore_Config_Prop *parent; /* if we are in a struct we have a parent to notify of changes etc */
+   struct Ecore_Config_Prop *next;     /* Pointer to the next property in the list. */
+} Ecore_Config_Prop;
+
+/*
+ * A container for a list of properties.  Provided so that an
+ * application can use different set of properties at any time. This
+ * is useful for multiple window support.
+ */
+typedef struct Ecore_Config_Bundle
+{
+   char               *identifier;     /* Identifier for this set of properties (window ID for example) */
+   char               *owner;  /* This is used to store the application name related to the bundle */
+   long                serial; /* Unique identifier to identify bundle */
+   Ecore_Config_Prop  *data;   /* Pointer to root of property list */
+   void               *user_data;      /* App specific pointer to "other data" */
+   struct Ecore_Config_Bundle *next;   /* Pointer to next bundle in this application */
+} Ecore_Config_Bundle;
+
+typedef struct Ecore_Config_Server
+{
+   void               *server;
+   char               *name;
+   Ecore_Config_Bundle *bundles;       /* data anchor */
+   struct Ecore_Config_Server *next;
+} Ecore_Config_Server;
+
+# ifdef __cplusplus
+extern              "C"
+{
+# endif
+
+/* global ptrs to save passing them through the API */
+   EAPI extern Ecore_Config_Server *__ecore_config_server_global;
+   EAPI extern Ecore_Config_Server *__ecore_config_server_local;
+   EAPI extern Ecore_Config_Bundle *__ecore_config_bundle_local;
+   EAPI extern char        *__ecore_config_app_name;
+
+   EAPI Ecore_Config_Prop  *ecore_config_get(const char *key);
+   EAPI const char         *ecore_config_type_get(const Ecore_Config_Prop *e);
+   EAPI int                 ecore_config_boolean_get(const char *key);
+   EAPI char               *ecore_config_string_get(const char *key);
+   EAPI long                ecore_config_int_get(const char *key);
+   EAPI int                 ecore_config_argb_get(const char *key, int *a, int *r,
+                                                 int *g, int *b);
+   EAPI long                ecore_config_argbint_get(const char *key);
+   EAPI char               *ecore_config_argbstr_get(const char *key);
+   EAPI float               ecore_config_float_get(const char *key);
+   EAPI char               *ecore_config_theme_get(const char *key);
+   EAPI char               *ecore_config_as_string_get(const char *key);
+   EAPI int                 ecore_config_bound(Ecore_Config_Prop *e);
+   EAPI int                 ecore_config_describe(const char *key, const char *desc);
+   EAPI int                 ecore_config_short_opt_set(const char *key,
+                                                      char short_opt);
+   EAPI int                 ecore_config_long_opt_set(const char *key,
+                                                     const char *long_opt);
+   EAPI int                 ecore_config_set(const char *key, const char *val);
+   EAPI int                 ecore_config_typed_set(const char *key, const void *val,
+                                                  int type);
+   EAPI int                 ecore_config_boolean_set(const char *key, int val);
+   EAPI int                 ecore_config_string_set(const char *key, const char *val);
+   EAPI int                 ecore_config_int_set(const char *key, int val);
+   EAPI int                 ecore_config_argb_set(const char *key, int a, int r, int g, int b);
+   EAPI int                 ecore_config_argbint_set(const char *key, long argb);
+   EAPI int                 ecore_config_argbstr_set(const char *key, const char *val);
+   EAPI int                 ecore_config_float_set(const char *key, float val);
+   EAPI int                 ecore_config_theme_set(const char *key, const char *val);
+   EAPI int                 ecore_config_theme_preview_group_set(const char *key,
+                                                                const char *group);
+   EAPI int                 ecore_config_as_string_set(const char *key, const char *val);
+
+   EAPI int                 ecore_config_default(const char *key, const char *val,
+                                                float lo, float hi, float step);
+   EAPI int                 ecore_config_typed_default(const char *key, const void *val,
+                                                      int type);
+   EAPI int                 ecore_config_boolean_default(const char *key, int val);
+   EAPI int                 ecore_config_int_default(const char *key, int val);
+   EAPI int                 ecore_config_int_default_bound(const char *key, int val,
+                                                          int lo, int hi, int step);
+   EAPI int                 ecore_config_string_default(const char *key, const char *val);
+   EAPI int                 ecore_config_float_default(const char *key, float val);
+   EAPI int                 ecore_config_float_default_bound(const char *key,
+                                                            float val, float lo,
+                                                            float hi, float step);
+   EAPI int                 ecore_config_argb_default(const char *key, int a, int r, int g, int b);
+   EAPI int                 ecore_config_argbint_default(const char *key, long argb);
+   EAPI int                 ecore_config_argbstr_default(const char *key, const char *val);
+   EAPI int                 ecore_config_theme_default(const char *key, const char *val);
+   EAPI int                 ecore_config_struct_default(const char *key);
+   EAPI int                 ecore_config_struct_int_add(const char *key, const char *name, int val);
+   EAPI int                 ecore_config_struct_float_add(const char *key, const char *name, float val);
+   EAPI int                 ecore_config_struct_create(const char *key);
+   EAPI int                 ecore_config_struct_string_add(const char *key, const char *name, const char* val);
+   EAPI int                 ecore_config_struct_theme_add(const char *key, const char *name, const char* val);
+   EAPI int                 ecore_config_struct_argb_add(const char *key, const char *name, int a, int r, int g, int b);
+   EAPI int                 ecore_config_struct_boolean_add(const char *key, const char *name, int val);
+   EAPI int                 ecore_config_struct_get(const char *key, void *data);
+
+   EAPI int                 ecore_config_listen(const char *name, const char *key,
+                                               Ecore_Config_Listener listener,
+                                               int tag, void *data);
+   EAPI int                 ecore_config_deaf(const char *name, const char *key,
+                                             Ecore_Config_Listener listener);
+   EAPI Ecore_Config_Prop  *ecore_config_dst(Ecore_Config_Prop *e);
+   EAPI int                 ecore_config_type_guess(const char *key, const char *val);
+
+   EAPI Ecore_Config_Bundle *ecore_config_bundle_new(Ecore_Config_Server *srv,
+                                                    const char *id);
+   EAPI Ecore_Config_Bundle *ecore_config_bundle_1st_get(Ecore_Config_Server *srv);
+   EAPI Ecore_Config_Bundle *ecore_config_bundle_next_get(Ecore_Config_Bundle *ns);
+   EAPI Ecore_Config_Bundle *ecore_config_bundle_by_serial_get(Ecore_Config_Server *srv,
+                                                              long serial);
+   EAPI Ecore_Config_Bundle *ecore_config_bundle_by_label_get(Ecore_Config_Server *srv,
+                                                             const char *label);
+   EAPI long                ecore_config_bundle_serial_get(Ecore_Config_Bundle *ns);
+   EAPI char               *ecore_config_bundle_label_get(Ecore_Config_Bundle *ns);
+
+   EAPI int                 ecore_config_init(const char *name);
+   EAPI int                 ecore_config_shutdown(void);
+
+   EAPI int                 ecore_config_system_init(void);
+   EAPI int                 ecore_config_system_shutdown(void);
+
+   EAPI int                 ecore_config_load(void);
+   EAPI int                 ecore_config_file_load(const char *file);
+   EAPI int                 ecore_config_save(void);
+   EAPI int                 ecore_config_file_save(const char *file);
+
+/* error codes */
+# define ECORE_CONFIG_ERR_NOTSUPP     (-16)
+# define ECORE_CONFIG_ERR_NOFILE      (-15)
+# define ECORE_CONFIG_ERR_META_DLFAIL (-14)
+# define ECORE_CONFIG_ERR_META_FILE   (-13)
+# define ECORE_CONFIG_ERR_META_FORMAT (-12)
+# define ECORE_CONFIG_ERR_MONMIS      (-11)
+# define ECORE_CONFIG_ERR_NOEXEC      (-10)
+# define ECORE_CONFIG_ERR_PARTIAL      (-9)
+# define ECORE_CONFIG_ERR_PATHEX       (-8)
+# define ECORE_CONFIG_ERR_TYPEMISMATCH (-7)
+# define ECORE_CONFIG_ERR_MUTEX        (-6)
+# define ECORE_CONFIG_ERR_NOTFOUND     (-5)    /* Error indicating that the item searched for could not be found. */
+# define ECORE_CONFIG_ERR_OOM          (-4)    /* Error given when the program runs out of memory. */
+# define ECORE_CONFIG_ERR_IGNORED      (-3)    /* Error occurred, but was ignored. */
+# define ECORE_CONFIG_ERR_NODATA       (-2)    /* Error given when necessary data is not provided. */
+# define ECORE_CONFIG_ERR_FAIL         (-1)    /* Failure result. */
+# define ECORE_CONFIG_ERR_SUCC          (0)    /* Success result. */
+
+# define ECORE_CONFIG_PARSE_HELP       (-2)    /* Help was displayed */
+# define ECORE_CONFIG_PARSE_EXIT       (-1)    /* An error occurred */
+# define ECORE_CONFIG_PARSE_CONTINUE    (0)    /* Arguments parsed successfully */
+
+/* convenience mathods in convenience.c */
+   /* FIXME: this should only be included if evas is present */
+   EAPI int                 ecore_config_evas_font_path_apply(Evas *evas);
+   EAPI char               *ecore_config_theme_search_path_get(void);
+   EAPI int                 ecore_config_theme_search_path_append(const char *append);
+     
+   EAPI char               *ecore_config_theme_default_path_get(void);
+   EAPI char               *ecore_config_theme_with_path_from_name_get(char *name);
+   EAPI char               *ecore_config_theme_with_path_get(const char *key);
+   EAPI void                ecore_config_args_display(void);
+   EAPI int                 ecore_config_args_parse(void);
+   EAPI void                ecore_config_args_callback_str_add(char short_opt,
+                                                              char *long_opt, char *desc,
+                                                              void (*func)(char *val, void *data),
+                                                              void *data);
+   EAPI void                ecore_config_args_callback_noarg_add(char short_opt,
+                                                                char *long_opt, char *desc,
+                                                                void (*func)(char *val, void *data),
+                                                                void *data);
+   EAPI void                ecore_config_app_describe(char *description);
+
+   EAPI int                 ecore_config_create(const char *key, void *val,
+                                               char short_opt, char *long_opt,
+                                               char *desc);
+   EAPI int                 ecore_config_typed_create(const char *key, void *val,
+                                                     int type, char short_opt,
+                                                     char *long_opt, char *desc);
+   EAPI int                 ecore_config_boolean_create(const char *key, int val,
+                                                       char short_opt, char *long_opt,
+                                                       char *desc);
+   EAPI int                 ecore_config_int_create(const char *key, int val,
+                                                   char short_opt, char *long_opt,
+                                                   char *desc);
+   EAPI int                 ecore_config_int_create_bound(const char *key, int val,
+                                                         int low, int high,
+                                                         int step, char short_opt,
+                                                         char *long_opt,
+                                                         char *desc);
+   EAPI int                 ecore_config_string_create(const char *key, char *val,
+                                                      char short_opt,
+                                                      char *long_opt, char *desc);
+   EAPI int                 ecore_config_float_create(const char *key, float val,
+                                                     char short_opt, char *long_opt,
+                                                     char *desc);
+   EAPI int                 ecore_config_float_create_bound(const char *key,
+                                                           float val, float low,
+                                                           float high, float step,
+                                                           char short_opt,
+                                                           char *long_opt,
+                                                           char *desc);
+   EAPI int                 ecore_config_argb_create(const char *key, char *val,
+                                                    char short_opt, char *long_opt,
+                                                    char *desc);
+   EAPI int                 ecore_config_theme_create(const char *key, char *val,
+                                                     char short_opt, char *long_opt,
+                                                     char *desc);
+
+# ifdef __cplusplus
+}
+# endif
+#endif
diff --git a/src/lib/ecore_config/Makefile.am b/src/lib/ecore_config/Makefile.am
new file mode 100644 (file)
index 0000000..541233d
--- /dev/null
@@ -0,0 +1,88 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_ipc \
+-I$(top_srcdir)/ \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_ipc \
+-I$(top_builddir)/ \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+@EVAS_CFLAGS@ @EET_CFLAGS@
+
+CLEANFILES = $(DB)
+
+if BUILD_ECORE_CONFIG
+
+#DB = system.db
+#$(DB): Makefile
+#      edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /e/theme/name str "winter"
+#      edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /e/font/path str "$(pkgdatadir)/data/fonts"
+#      edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /apps/web/browser str `which firefox 2>/dev/null || which phoenix 2>/dev/null || which mozilla 2>/dev/null || which opera 2>/dev/null || which konqueror 2>/dev/null || which epiphany 2>/dev/null`
+#      edb_ed $(top_builddir)/src/lib/ecore_config/$(DB) add /apps/web/email str `which thunderbird 2>/dev/null || which mozilla 2>/dev/null || which kmail 2>/dev/null || which sylpheed 2>/dev/null || which evolution 2>/dev/null`
+
+lib_LTLIBRARIES = libecore_config.la
+include_HEADERS = \
+Ecore_Config.h
+
+libecore_config_la_LDFLAGS = -version-info @version_info@
+
+#config_DATA = $(DB)
+#configdir = $(pkgdatadir)
+
+if BUILD_ECORE_IPC
+
+libecore_config_la_SOURCES = \
+ecore_config.c \
+ecore_config_ipc_main.c \
+ecore_config_ipc_ecore.c \
+ecore_config_util.c \
+ecore_config_storage.c \
+ecore_config_extra.c \
+ecore_config_db.c \
+ecore_config_private.h
+
+libecore_config_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la \
+@EET_LIBS@ \
+@EVAS_LIBS@
+
+libecore_config_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_ipc/libecore_ipc.la
+
+else
+
+libecore_config_la_SOURCES = \
+ecore_config.c \
+ecore_config_util.c \
+ecore_config_storage.c \
+ecore_config_extra.c \
+ecore_config_db.c \
+ecore_config_private.h
+
+libecore_config_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@EET_LIBS@ \
+@EVAS_LIBS@
+
+libecore_config_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+endif
+
+EXTRA_DIST = \
+Ecore_Config.h \
+ecore_config.c \
+ecore_config_ipc_ecore.c \
+ecore_config_ipc_main.c \
+ecore_config_ipc.h \
+ecore_config_util.c \
+ecore_config_util.h \
+ecore_config_storage.c
+
diff --git a/src/lib/ecore_config/ecore_config.c b/src/lib/ecore_config/ecore_config.c
new file mode 100644 (file)
index 0000000..275eefd
--- /dev/null
@@ -0,0 +1,1866 @@
+#include <string.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <unistd.h>
+
+#include "Ecore_Config.h"
+#include "config.h"
+#include "ecore_config_private.h"
+#include "ecore_config_ipc.h"
+
+#include "ecore_config_util.h"
+
+int                  DEBUG = 0;
+EAPI Ecore_Config_Server *__ecore_config_server_global = NULL;
+EAPI Ecore_Config_Server *__ecore_config_server_local = NULL;
+EAPI Ecore_Config_Bundle *__ecore_config_bundle_local = NULL;
+EAPI char                *__ecore_config_app_name = NULL;
+int                  __ecore_config_system_init = 0;
+
+static int           _ecore_config_system_init_no_load(void);
+static int           _ecore_config_system_load(void);
+
+static inline void  *__ecore_argb_to_long(int a, int r, int g, int b, long *v);
+static inline void  *__ecore_argbstr_to_long(const char *argb, long *v);
+
+static const char  *_ecore_config_type[] =
+   { "undefined", "integer", "float", "string", "colour", "theme", "boolean", "structure" };
+
+/**
+ * @defgroup Ecore_Config_Property_Group Ecore Config Property Functions
+ *
+ * Functions that retrieve or set the attributes relating to a property.
+ */
+
+/**
+ * Removes the given property from the local configuration and destroys it.
+ * @param   e Property to destroy.
+ * @return  @c NULL
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI Ecore_Config_Prop  *
+ecore_config_dst(Ecore_Config_Prop * e)
+{
+   Ecore_Config_Bundle *t;
+   Ecore_Config_Prop  *p, *c;
+   Ecore_Config_Listener_List *l;
+
+   p = NULL;
+   c = e;
+   t = __ecore_config_bundle_local;
+
+   if (!e || !e->key)
+      return NULL;
+   if (t)
+     {
+       if (t->data == e)
+          t->data = e->next;
+       else
+         {
+            do
+              {
+                 p = c;
+                 c = c->next;
+              }
+            while (c && (c != e));
+            if (c)             /* remove from list if even in there */
+               p->next = c->next;
+         }
+     }
+
+   while (e->listeners)
+     {
+       l = e->listeners;
+       e->listeners = e->listeners->next;
+       free(l);
+     }
+
+   if (e->key)
+      free(e->key);
+   if (e->ptr && ((e->type == ECORE_CONFIG_STR) || (e->type == ECORE_CONFIG_THM)))
+      free(e->ptr);
+
+   memset(e, 0, sizeof(Ecore_Config_Prop));
+   free(e);
+
+   return NULL;
+}
+
+/**
+ * @defgroup Ecore_Config_Get_Group Configuration Retrieve Functions
+ *
+ * Functions that retrieve configuration values, based on type.
+ */
+
+/**
+ * Returns the property with the given key.
+ * @param   key The unique name of the wanted property.
+ * @return  The property that corresponds to the given key.  @c NULL if the
+ *          key could not be found.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI Ecore_Config_Prop  *
+ecore_config_get(const char *key)
+{
+   Ecore_Config_Bundle *t;
+   Ecore_Config_Prop  *e;
+
+   t = __ecore_config_bundle_local;
+   if (!t || !key)
+      return NULL;
+   e = t->data;
+   while (e)
+     {
+       if (!strcmp(key, e->key))
+          return e;
+       e = e->next;
+     }
+   return NULL;
+}
+
+/**
+ * Returns the type of the property.
+ * @param   e Property to get the type of.
+ * @returns The type of the property.  If the property is invalid, then the
+ *          string "not found" is returned.
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI const char         *
+ecore_config_type_get(const Ecore_Config_Prop * e)
+{
+   if (e)
+     {
+       return _ecore_config_type[e->type];
+     }
+   return "not found";
+}
+
+/**
+ * Returns the specified property as a string.
+ * @param   key The property key.
+ * @return  The string value of the property.  The function returns @c NULL if
+ *          the property is not a string or is not set.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI char               *
+ecore_config_string_get(const char *key)
+{
+   return _ecore_config_string_get( ecore_config_get(key) );
+}
+
+char               *
+_ecore_config_string_get(Ecore_Config_Prop *e)
+{
+   return (e && (e->type == ECORE_CONFIG_STR) && e->ptr) ? strdup(e->ptr) : NULL;
+}
+
+/**
+ * Returns the specified property as an integer.
+ * @param   key The property key.
+ * @return  The value of the property.  The function returns -1 if the
+ *          property is not an integer or is not set.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI int
+ecore_config_boolean_get(const char *key)
+{
+   return _ecore_config_boolean_get( ecore_config_get(key) );
+}
+
+int
+_ecore_config_boolean_get(Ecore_Config_Prop *e)
+{
+   return (e && ((e->type == ECORE_CONFIG_INT) || (e->type == ECORE_CONFIG_BLN))) ? (e->val != 0) : -1;
+}
+
+/**
+ * Returns the specified property as a long integer.
+ * @param   key The property key.
+ * @return  The integer value of the property.  The function returns 0 if the
+ *          property is not an integer or is not set.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI long
+ecore_config_int_get(const char *key)
+{
+   return _ecore_config_int_get( ecore_config_get(key) );
+}
+
+long
+_ecore_config_int_get(Ecore_Config_Prop *e)
+{
+   return (e && ((e->type == ECORE_CONFIG_INT) || (e->type == ECORE_CONFIG_RGB))) ? e->val : 0L;
+}
+
+/**
+ * Returns the specified property as a float.
+ * @param   key The property key.
+ * @return  The float value of the property.  The function returns 0.0 if the 
+ *          property is not a float or is not set.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI float
+ecore_config_float_get(const char *key)
+{
+   return _ecore_config_float_get( ecore_config_get(key) );
+}
+
+float
+_ecore_config_float_get(Ecore_Config_Prop *e)
+{
+   return (e && (e->type == ECORE_CONFIG_FLT)) ? ((float)e->val / ECORE_CONFIG_FLOAT_PRECISION) : 0.0;
+}
+
+/**
+ * Finds the alpha, red, green and blue values of a color property.
+ * @param   key The property key.
+ * @param   a   A pointer to an integer to store the alpha value into.
+ * @param   r   A pointer to an integer to store the red value into.
+ * @param   g   A pointer to an integer to store the green value into.
+ * @param   b   A pointer to an integer to store the blue value into.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_FAIL
+ *          otherwise.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI int
+ecore_config_argb_get(const char *key, int *a, int *r, int *g, int *b)
+{
+   return _ecore_config_argb_get( ecore_config_get(key), a, r, g, b);
+}
+
+int
+_ecore_config_argb_get(Ecore_Config_Prop *e, int *a, int *r, int *g, int *b)
+{
+   if (e && ((e->type == ECORE_CONFIG_RGB)))
+     {
+       if(a) *a = (e->val >> 24) & 0xff;
+       if(r) *r = (e->val >> 16) & 0xff;
+       if(g) *g = (e->val >>  8) & 0xff;
+       if(b) *b =  e->val        & 0xff;
+       return ECORE_CONFIG_ERR_SUCC;
+     }
+   return ECORE_CONFIG_ERR_FAIL;
+}
+
+/**
+ * Returns a color property as a long
+ * @param   key The property key.
+ * @return  ARGB data as long
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI long
+ecore_config_argbint_get(const char *key)
+{
+   return _ecore_config_argbint_get( ecore_config_get(key) );
+}
+
+long
+_ecore_config_argbint_get(Ecore_Config_Prop *e)
+{
+   if (e && ((e->type == ECORE_CONFIG_RGB)))
+     {
+       return e->val;
+     }
+   return 0L;
+}
+
+/**
+ * Returns a color property as a string of hexadecimal characters.
+ * @param   key The property key.
+ * @return  A string of hexadecimal characters in the format #aarrggbb.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI char               *
+ecore_config_argbstr_get(const char *key)
+{
+   return _ecore_config_argbstr_get( ecore_config_get(key) );
+}
+
+char               *
+_ecore_config_argbstr_get(Ecore_Config_Prop *e)
+{
+   char               *r;
+
+   r = NULL;
+   esprintf(&r, "#%08x", _ecore_config_int_get(e));
+   return r;
+}
+
+/**
+ * Returns a theme property.
+ * @param   key The property key.
+ * @return  The name of the theme the property refers to.  The function returns
+ *          @c NULL if the property is not a theme or is not set.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI char               *
+ecore_config_theme_get(const char *key)
+{
+   return _ecore_config_theme_get( ecore_config_get(key) );
+}
+
+char               *
+_ecore_config_theme_get(Ecore_Config_Prop *e)
+{
+   return (e && (e->type == ECORE_CONFIG_THM)) ? strdup(e->ptr) : NULL;
+}
+
+/**
+ * Retrieves the key as a string.
+ * @param   key The property key.
+ * @return  Returns a character array in the form of 'key:type=value'.  @c NULL
+ *          is returned if the property does not exist.
+ * @ingroup Ecore_Config_Get_Group
+ */
+EAPI char               *
+ecore_config_as_string_get(const char *key)
+{
+   Ecore_Config_Prop  *e;
+   char               *val;
+   char               *r;
+
+   val = NULL;
+   r = NULL;
+   if (!(e = ecore_config_get(key)))
+      E(0, "no such property, \"%s\"...\n", key);
+   else
+     {
+       switch (e->type)
+          {
+            case ECORE_CONFIG_NIL:
+               val = strdup("<nil>");
+               break;
+            case ECORE_CONFIG_INT:
+               esprintf(&val, "%ld",    _ecore_config_int_get(e));
+               break;
+            case ECORE_CONFIG_BLN:
+               esprintf(&val, "%ld",    _ecore_config_boolean_get(e));
+               break;
+            case ECORE_CONFIG_FLT:
+               esprintf(&val, "%lf",    _ecore_config_float_get(e));
+               break;
+            case ECORE_CONFIG_STR:
+               esprintf(&val, "\"%s\"", _ecore_config_string_get(e));
+               break;
+            case ECORE_CONFIG_RGB:
+               esprintf(&val, "#%08x",  _ecore_config_int_get(e));
+               break;
+            case ECORE_CONFIG_THM:
+               esprintf(&val, "\"%s\"", _ecore_config_theme_get(e));
+               break;
+            case ECORE_CONFIG_SCT:
+               break;
+            default:
+               esprintf(&r, "%s:unknown_type", key);
+               break;
+          }
+       if (val)
+          {
+            esprintf(&r, "%s:%s=%s", key, _ecore_config_type[e->type], val);
+            free(val);
+          }
+     }
+   return r;
+}
+
+EAPI int
+ecore_config_bound(Ecore_Config_Prop * e)
+{
+   int                 ret;
+   long                v;
+
+   ret = ECORE_CONFIG_ERR_SUCC;
+
+   if (!e)
+      return ECORE_CONFIG_ERR_FAIL;
+   if (e->flags & ECORE_CONFIG_FLAG_BOUNDS)
+     {
+       if ((e->val < e->lo))
+         {
+            E(0,
+              "ecore_config_bounds(\"%s\",%ld): value out of range; adjusted to %ld...\n",
+              e->key, e->val, e->lo);
+            e->val = e->lo;
+         }
+       else if ((e->val > e->hi))
+         {
+            E(0,
+              "ecore_config_bounds(\"%s\",%ld): value out of range; adjusted to %ld...\n",
+              e->key, e->val, e->hi);
+            e->val = e->hi;
+         }
+       else
+          ret = ECORE_CONFIG_ERR_IGNORED;
+     }
+   else
+      ret = ECORE_CONFIG_ERR_IGNORED;
+
+   if (e->step)
+     {
+       v = ((int)(e->val / e->step)) * e->step;
+       if (v != e->val)
+         {
+            if (e->type == ECORE_CONFIG_FLT)
+               E(0,
+                 "ecore_config_bound(\"%s\"): float value %f not a multiple of %f, adjusted to %f...\n",
+                 e->key, ((double)e->val) / ECORE_CONFIG_FLOAT_PRECISION,
+                 ((double)e->step) / ECORE_CONFIG_FLOAT_PRECISION,
+                 ((double)v) / ECORE_CONFIG_FLOAT_PRECISION);
+            else
+               E(0,
+                 "ecore_config_bound(\"%s\"): integer value %ld not a multiple of %ld, adjusted to %ld...\n",
+                 e->key, e->val, e->step, v);
+            ret = ECORE_CONFIG_ERR_SUCC;
+            e->val = v;
+         }
+     }
+
+   return ret;
+}
+
+/**
+ * Tries to guess the type of a property.
+ *
+ * This function first checks to see if the property exists.  If it does, then
+ * the type of the stored property is returned.  Otherwise, the function tries
+ * to guess the type of the property based on @p val.
+ *
+ * @param  key The property key.
+ * @param  val The value in string form.
+ * @return The type of the property determined by the function.  Note that if
+ *         val is @c NULL, @c ECORE_CONFIG_NIL will be returned.
+ */
+EAPI int
+ecore_config_type_guess(const char *key, const char *val)
+{
+   Ecore_Config_Prop  *p;
+   char               *l;
+   long                v;
+
+   l = NULL;
+
+   if (key && (p = ecore_config_get(key)) && p->type != ECORE_CONFIG_NIL)
+      return p->type;
+
+   if (!val)
+      return ECORE_CONFIG_NIL;
+   if (val[0] == '#')
+      return ECORE_CONFIG_RGB;
+   v = strtol(val, &l, 10);
+   if (*l)
+     {
+       float               f;
+
+       if (sscanf(val, "%f%*s", &f) != 1)
+          return ECORE_CONFIG_STR;
+       return ECORE_CONFIG_FLT;
+     }
+   return ECORE_CONFIG_INT;
+}
+
+static int
+ecore_config_typed_val(Ecore_Config_Prop * e, const void *val, int type)
+{
+
+   if (!e)
+     return ECORE_CONFIG_ERR_NODATA;
+
+   if (!(val) && (type != ECORE_CONFIG_NIL && type != ECORE_CONFIG_SCT))
+      e->ptr = NULL;
+   else
+     {
+       if (type == ECORE_CONFIG_INT || type == ECORE_CONFIG_BLN)
+         {
+            e->val = (long) *((int *)val);
+            e->type = type;
+         }
+       else if (type == ECORE_CONFIG_STR || type == ECORE_CONFIG_THM)
+         {
+            if (!(e->ptr = strdup(val)))
+               return ECORE_CONFIG_ERR_OOM;
+            if (e->type == ECORE_CONFIG_NIL)
+               e->type = type;
+         }
+       else if (type == ECORE_CONFIG_RGB)
+         {
+            __ecore_argbstr_to_long((char *)val, &e->val);
+            e->type = ECORE_CONFIG_RGB;
+         }
+       else if (type == ECORE_CONFIG_FLT)
+         {
+            e->val = (long) ((*((float *)val)) * ECORE_CONFIG_FLOAT_PRECISION);
+            e->type = ECORE_CONFIG_FLT;
+         }
+       else if (type == ECORE_CONFIG_SCT)
+         {
+            e->type = ECORE_CONFIG_SCT;
+         }
+       else
+         {
+          e->type = ECORE_CONFIG_NIL;
+         }
+
+       ecore_config_bound(e);
+       e->flags |= ECORE_CONFIG_FLAG_MODIFIED;
+       e->flags &= ~ECORE_CONFIG_FLAG_CMDLN;
+       return ECORE_CONFIG_ERR_SUCC;
+     }
+   return ECORE_CONFIG_ERR_IGNORED;
+}
+
+static int
+ecore_config_typed_add(const char *key, const void *val, int type)
+{
+   int error = ECORE_CONFIG_ERR_SUCC;
+   Ecore_Config_Prop  *e = NULL;
+   Ecore_Config_Bundle *t;
+
+   t = __ecore_config_bundle_local;
+   if (!key)
+      return ECORE_CONFIG_ERR_NODATA;
+
+   if (!(e = calloc(1, sizeof(Ecore_Config_Prop))))
+     {
+       error = ECORE_CONFIG_ERR_OOM;
+     }
+   else if (!(e->key = strdup(key)))
+     {
+       error = ECORE_CONFIG_ERR_OOM;
+     }
+   else if ((error = ecore_config_typed_val(e, val, type)) == ECORE_CONFIG_ERR_SUCC)
+     {
+       if (t)
+          {
+            e->next = t->data;
+            t->data = e;
+          }
+       return ECORE_CONFIG_ERR_SUCC;
+     }
+
+   if(e->key)
+     free(e->key);
+   if(e)
+     free(e);
+
+   if (error == ECORE_CONFIG_ERR_SUCC)
+      error = ECORE_CONFIG_ERR_FAIL;
+
+   return error;
+}
+
+static int
+ecore_config_add(const char *key, const char *val)
+{
+   int                 type;
+
+   type = ecore_config_type_guess(key, val);
+   return ecore_config_typed_add(key, val, type);
+}
+
+/**
+ * Sets the description field of the indicated property.
+ * @param   key  The property key.
+ * @param   desc Description string.
+ * @note    The description string is copied for the property's use.  You can
+ *          free @p desc once this function is called.
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI int
+ecore_config_describe(const char *key, const char *desc)
+{
+   Ecore_Config_Prop  *e;
+
+   if (!(e = ecore_config_get(key)))
+      return ECORE_CONFIG_ERR_NODATA;
+   e->description = strdup(desc);
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/**
+ * Set the short option character of a property.
+ * @param   key       The property key.
+ * @param   short_opt Character used to indicate the value of a property
+ *                    given on the command line.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_NODATA
+ *          is returned if the property does not exist.
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI int
+ecore_config_short_opt_set(const char *key, char short_opt)
+{
+   Ecore_Config_Prop  *e;
+
+   if (!(e = ecore_config_get(key)))
+      return ECORE_CONFIG_ERR_NODATA;
+   e->short_opt = short_opt;
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/**
+ * Set the long option string of the property.
+ * @param   key      The property key.
+ * @param   long_opt String used to indicate the value of a property given
+ *                   on the command line.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_NODATA
+ *          is returned if the property does not exist.
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI int
+ecore_config_long_opt_set(const char *key, const char *long_opt)
+{
+   Ecore_Config_Prop  *e;
+
+   if (!(e = ecore_config_get(key)))
+      return ECORE_CONFIG_ERR_NODATA;
+   if (e->long_opt)
+      free(e->long_opt);
+   if (long_opt)
+      e->long_opt = strdup(long_opt);
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+static void
+_ecore_config_listener_fire(Ecore_Config_Prop *prop)
+{
+   Ecore_Config_Listener_List *l;
+   for (l = prop->listeners; l; l = l->next)
+     l->listener(prop->key, prop->type, l->tag, l->data);
+
+   /* fire change listeners for the generic struct container etc */
+   if (prop->parent)
+     _ecore_config_listener_fire(prop->parent);
+}
+
+/**
+ * Sets the indicated property to the given value and type.
+ * @param   key  The property key.
+ * @param   val  A pointer to the value to set the property to.
+ * @param   type The type of the property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Property_Group
+ */
+EAPI int
+ecore_config_typed_set(const char *key, const void *val, int type)
+{
+   Ecore_Config_Prop  *e;
+   int                 ret;
+
+   if (!key)
+      return ECORE_CONFIG_ERR_NODATA;
+/*  if (!t) { * global prop *
+    e=ecore_config_get(key);
+    if (e)
+      for(l=e->listeners;l;l=l->next)
+        l->listener(e->key,e->type,l->tag,l->data,t);
+    return ECORE_CONFIG_ERR_SUCC;
+  }
+*/
+   if (!(e = ecore_config_get(key)))
+      return ecore_config_typed_add(key, val, type);
+
+   if ((ret = ecore_config_typed_val(e, val, type)) == ECORE_CONFIG_ERR_SUCC)
+     {
+       _ecore_config_listener_fire(e);
+     }
+   else
+     {
+       E(0,
+         "ecore_config_typed_set(\"%s\"): ecore_config_typed_val() failed: %d\n",
+         key, ret);
+     }
+
+   return ret;
+}
+
+/**
+ * @defgroup Ecore_Config_Set_Group Ecore Config Setters
+ *
+ * Functions that set the value of a property.
+ */
+
+/**
+ * Sets the indicated property to the value indicated by @a val.
+ * @param   key The property key.
+ * @param   val String representation of value to set.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_set(const char *key, const char *val)
+{
+   int                 type;
+   int                 tmpi;
+   float               tmpf;
+   long                tmpl;
+
+   type = ecore_config_type_guess(key, val);
+   if (type == ECORE_CONFIG_INT || type == ECORE_CONFIG_BLN)
+     {
+       tmpi = atoi(val);
+       return ecore_config_typed_set(key, &tmpi, type);
+     }
+   else if (type == ECORE_CONFIG_FLT)
+     {
+       tmpf = atof(val);
+       return ecore_config_typed_set(key, &tmpf, type);
+     }
+   else if (type == ECORE_CONFIG_RGB)
+     {
+       __ecore_argbstr_to_long(val, &tmpl);
+       return ecore_config_typed_set(key, &tmpl, type);
+     }
+   else
+      return ecore_config_typed_set(key, val, type);
+}
+
+/**
+ * Sets the indicated property to the value given in the string.
+ * @param   key The property key.
+ * @param   val String representation of the value.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_as_string_set(const char *key, const char *val)
+{
+   return ecore_config_set(key, val);
+}
+
+/**
+ * Sets the indicated property to the given boolean.
+ * @param   key The property key.
+ * @param   val Boolean integer to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_boolean_set(const char *key, int val)
+{
+   val = val ? 1 : 0;
+   return ecore_config_typed_set(key, &val, ECORE_CONFIG_BLN);
+}
+
+/**
+ * Sets the indicated property to the given integer.
+ * @param   key The property key.
+ * @param   val Integer to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_int_set(const char *key, int val)
+{
+   return ecore_config_typed_set(key, &val, ECORE_CONFIG_INT);
+}
+
+/**
+ * Sets the indicated property to the given string.
+ * @param   key The property key.
+ * @param   val String to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_string_set(const char *key, const char *val)
+{
+   return ecore_config_typed_set(key, val, ECORE_CONFIG_STR);
+}
+
+/**
+ * Sets the indicated property to the given float value.
+ * @param   key The property key.
+ * @param   val Float to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_float_set(const char *key, float val)
+{
+   return ecore_config_typed_set(key, &val, ECORE_CONFIG_FLT);
+}
+
+/**
+ * Sets the indicated property to a color value.
+ * @param   key The property key
+ * @param   a integer 0..255
+ * @param   r integer 0..255
+ * @param   g integer 0..255
+ * @param   b integer 0..255
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_argb_set(const char *key, int a, int r, int g, int b)
+{
+   long v = 0;
+   return ecore_config_typed_set(key, __ecore_argb_to_long(a,r,g,b, &v), ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a color value.
+ * @param   key The property key
+ * @param   argb ARGB data as long
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_argbint_set(const char *key, long argb)
+{
+   return ecore_config_typed_set(key, &argb, ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a color value.
+ * @param   key The property key
+ * @param   val Color value in ARGB format.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_argbstr_set(const char *key, const char *val)
+{
+   long v = 0;
+   return ecore_config_typed_set(key, __ecore_argbstr_to_long(val, &v), ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a theme name.
+ * @param   key The property key.
+ * @param   val String giving the name of the theme.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_theme_set(const char *key, const char *val)
+{
+   return ecore_config_typed_set(key, val, ECORE_CONFIG_THM);
+}
+
+/**
+ * Sets the theme preview group of an indicated property.
+ * @param   key   The property key.
+ * @param   group The group name.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Set_Group
+ */
+EAPI int
+ecore_config_theme_preview_group_set(const char *key, const char *group)
+{
+   int                 ret;
+   Ecore_Config_Prop  *e;
+
+   ret = ECORE_CONFIG_ERR_SUCC;
+   if (!(e = ecore_config_get(key)))
+     {                         /* prop doesn't exist yet */
+       if ((ret = ecore_config_typed_add(key, "", ECORE_CONFIG_THM)) != ECORE_CONFIG_ERR_SUCC) /* try to add it */
+          return ret;          /* ...failed */
+       if (!(e = ecore_config_get(key)))       /* get handle */
+          return ECORE_CONFIG_ERR_FAIL;
+     }
+   if (e->data)
+      free(e->data);
+   e->data = strdup(group);
+
+   return ret;
+}
+
+EAPI int
+ecore_config_typed_default(const char *key, const void *val, int type)
+{
+   int                 ret;
+   Ecore_Config_Prop  *e;
+
+   ret = ECORE_CONFIG_ERR_SUCC;
+
+   if (!(e = ecore_config_get(key)))
+     {                         /* prop doesn't exist yet */
+       if ((ret = ecore_config_typed_add(key, val, type)) != ECORE_CONFIG_ERR_SUCC)    /* try to add it */
+          return ret;          /* ...failed */
+       if (!(e = ecore_config_get(key)))       /* get handle */
+          return ECORE_CONFIG_ERR_FAIL;
+       e->flags = e->flags & ~ECORE_CONFIG_FLAG_MODIFIED;
+     }
+   else if (!(e->flags & ECORE_CONFIG_FLAG_MODIFIED) && !(e->flags & ECORE_CONFIG_FLAG_SYSTEM))
+     {
+       ecore_config_typed_set(key, val, type);
+       if (!(e = ecore_config_get(key)))       /* get handle */
+          return ECORE_CONFIG_ERR_FAIL;
+       e->flags = e->flags & ~ECORE_CONFIG_FLAG_MODIFIED;
+     }
+   return ret;
+}
+
+/**
+ * @defgroup Ecore_Config_Default_Group Ecore Config Defaults
+ *
+ * Functions that are used to set the default values of properties.
+ */
+
+/**
+ * Sets the indicated property if it has not already been set or loaded.
+ * @param   key  The property key.
+ * @param   val  Default value of the key.
+ * @param   lo   Lowest valid value for the key.
+ * @param   hi   Highest valid value for the key.
+ * @param   step Used by integer and float values.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there are no errors.
+ * @note    The @p lo, @p hi and @p step parameters are only used when storing
+ *          integer and float properties.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_default(const char *key, const char *val, float lo, float hi, float step)
+{
+   int                 ret, type;
+   Ecore_Config_Prop  *e;
+
+   type = ecore_config_type_guess(key, val);
+   ret = ecore_config_typed_default(key, val, type);
+   e = ecore_config_get(key);
+   if (e)
+     {
+       if (type == ECORE_CONFIG_INT)
+         {
+            e->step = step;
+            e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+            e->lo = lo;
+            e->hi = hi;
+            ecore_config_bound(e);
+         }
+       else if (type == ECORE_CONFIG_FLT)
+         {
+            e->step = (int)(step * ECORE_CONFIG_FLOAT_PRECISION);
+            e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+            e->lo = (int)(lo * ECORE_CONFIG_FLOAT_PRECISION);
+            e->hi = (int)(hi * ECORE_CONFIG_FLOAT_PRECISION);
+            ecore_config_bound(e);
+         }
+     }
+
+   return ret;
+}
+
+/**
+ * Sets the indicated property to the given boolean if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @param   val Boolean Integer to set the value to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there are no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_boolean_default(const char *key, int val)
+{
+   val = val ? 1 : 0;
+   return ecore_config_typed_default(key, &val, ECORE_CONFIG_BLN);
+}
+
+/**
+ * Sets the indicated property to the given integer if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @param   val Integer to set the value to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there are no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_int_default(const char *key, int val)
+{
+   return ecore_config_typed_default(key, &val, ECORE_CONFIG_INT);
+}
+
+/**
+ * Sets the indicated property to the given integer if the property has not yet
+ * been set.
+ *
+ * The bounds and step values are set regardless.
+ *
+ * @param   key  The property key.
+ * @param   val  Integer to set the property to.
+ * @param   low  Lowest valid integer value for the property.
+ * @param   high Highest valid integer value for the property.
+ * @param   step Increment value for the property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there were no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_int_default_bound(const char *key, int val, int low, int high,
+                              int step)
+{
+   Ecore_Config_Prop  *e;
+   int                 ret;
+
+   ret = ecore_config_typed_default(key, &val, ECORE_CONFIG_INT);
+   e = ecore_config_get(key);
+   if (e)
+     {
+       e->step = step;
+       e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+       e->lo = low;
+       e->hi = high;
+       ecore_config_bound(e);
+     }
+
+   return ret;
+}
+
+/**
+ * Sets the indicated property to the given string if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @param   val String to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there were no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_string_default(const char *key, const char *val)
+{
+   return ecore_config_typed_default(key, val, ECORE_CONFIG_STR);
+}
+
+/**
+ * Sets the indicated property to the given float if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @param   val Float to set the property to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there were no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_float_default(const char *key, float val)
+{
+   return ecore_config_typed_default(key, &val, ECORE_CONFIG_FLT);
+}
+
+/**
+ * Sets the indicated property to the given float if the property has not yet
+ * been set.
+ *
+ * The bounds and step values are set regardless.
+ *
+ * @param   key  The property key.
+ * @param   val  Float to set the property to.
+ * @param   low  Lowest valid integer value for the property.
+ * @param   high Highest valid float value for the property.
+ * @param   step Increment value for the property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if there were no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_float_default_bound(const char *key, float val, float low,
+                                float high, float step)
+{
+   Ecore_Config_Prop  *e;
+   int                 ret;
+
+   ret = ecore_config_typed_default(key, &val, ECORE_CONFIG_FLT);
+   e = ecore_config_get(key);
+   if (e)
+     {
+       e->step = (int)(step * ECORE_CONFIG_FLOAT_PRECISION);
+       e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+       e->lo = (int)(low * ECORE_CONFIG_FLOAT_PRECISION);
+       e->hi = (int)(high * ECORE_CONFIG_FLOAT_PRECISION);
+       ecore_config_bound(e);
+     }
+
+   return ret;
+}
+
+/**
+ * Sets the indicated property to a color value if the property has not yet
+ * been set.
+ * @param  key The property key.
+ * @param  a integer 0..255
+ * @param  r integer 0..255
+ * @param  g integer 0..255
+ * @param  b integer 0..255
+ * @return @c ECORE_CONFIG_ERR_SUCC if there are no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_argb_default(const char *key, int a, int r, int g, int b)
+{
+   long v = 0;
+   return ecore_config_typed_default(key, __ecore_argb_to_long(a,r,g,b, &v), ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a color value if the property has not yet
+ * been set.
+ * @param  key The property key.
+ * @param  argb ARGB data as long
+ * @return @c ECORE_CONFIG_ERR_SUCC if there are no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_argbint_default(const char *key, long argb)
+{
+   return ecore_config_typed_default(key, &argb, ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a color value if the property has not yet
+ * been set.
+ * @param  key The property key.
+ * @param  val Color value in ARGB format.
+ * @return @c ECORE_CONFIG_ERR_SUCC if there are no problems.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_argbstr_default(const char *key, const char *val)
+{
+   long v = 0;
+   return ecore_config_typed_default(key, __ecore_argbstr_to_long(val, &v), ECORE_CONFIG_RGB);
+}
+
+/**
+ * Sets the indicated property to a theme name if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @param   val String giving the name of the theme.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Default_Group
+ */
+EAPI int
+ecore_config_theme_default(const char *key, const char *val)
+{
+   return ecore_config_typed_default(key, val, ECORE_CONFIG_THM);
+}
+
+/**
+ * @defgroup Ecore_Config_Struct_Group Ecore Config Structures
+ *
+ * Functions that are used to create structures of properties.
+ */
+
+/**
+ * Sets the indicated property to a structure if the property has not yet
+ * been set.
+ * @param   key The property key.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_create(const char *key)
+{
+   printf("WARNING: you are using ecore_config structures. These are very young");
+   printf(" and not complete - you have been warned");
+
+   return ecore_config_typed_default(key, NULL, ECORE_CONFIG_SCT);
+}
+
+static int
+_ecore_config_struct_append(Ecore_Config_Prop *sct, Ecore_Config_Prop *add)
+{
+   Evas_List *l;
+
+   if (!sct || !add || sct->type != ECORE_CONFIG_SCT)
+     return ECORE_CONFIG_ERR_IGNORED;
+
+   l = sct->data;
+   sct->data = evas_list_append(l, add);
+   add->parent = sct;
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+static int
+_ecore_config_struct_typed_add(const char *key, const char *name, const void *val,
+    int type)
+{
+   char *subkey;
+   int ret;
+
+   subkey = malloc((strlen(key) + strlen(name) + 2) * sizeof(char));
+   strcpy(subkey, key);
+   strcat(subkey, ".");
+   strcat(subkey, name);
+
+   ecore_config_typed_default(subkey, val, type);
+   ret = _ecore_config_struct_append(ecore_config_get(key),
+                                     ecore_config_get(subkey));
+   free(subkey);
+   return ret;   
+}
+
+/**
+ * Add an int property to the named structure. The property is set if it has not
+ * yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   val the int to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_int_add(const char *key, const char *name, int val)
+{
+   return _ecore_config_struct_typed_add(key, name, &val, ECORE_CONFIG_INT);
+}
+
+/**
+ * Add a float property to the named structure. The property is set if it has
+ * not yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   val The float to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_float_add(const char *key, const char *name, float val)
+{
+   return _ecore_config_struct_typed_add(key, name, &val, ECORE_CONFIG_FLT);
+}
+
+/**
+ * Add a string property to the named structure. The property is set if it has
+ * not yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   val The string to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_string_add(const char *key, const char *name, const char* val)
+{
+   return _ecore_config_struct_typed_add(key, name, val, ECORE_CONFIG_STR);
+}
+
+/**
+ * Add an argb property to the named structure. The property is set if it has
+ * not yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   a The alpha to default to
+ * @param   r The red to default to
+ * @param   g The green to default to
+ * @param   b The blue to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_argb_add(const char *key, const char *name, int a, int r,
+                             int g, int b)
+{
+   long argb;
+  
+   __ecore_argb_to_long(a, r, g, b, &argb);
+   return _ecore_config_struct_typed_add(key, name, &argb, ECORE_CONFIG_RGB);
+}
+
+/**
+ * Add a theme property to the named structure. The property is set if it has
+ * not yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   val The theme name to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_theme_add(const char *key, const char *name, const char* val)
+{
+   return _ecore_config_struct_typed_add(key, name, val, ECORE_CONFIG_THM);
+}
+
+/**
+ * Add a boolean property to the named structure. The property is set if it has
+ * not yet been set.
+ * @param   key The key of the structure to add to.
+ * @param   name The name of the item to add - this will be appended to the key
+ * @param   val The boolean to default to
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the property is set successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_boolean_add(const char *key, const char *name, int val)
+{
+   val = val ? 1 : 0;
+   return _ecore_config_struct_typed_add(key, name, &val, ECORE_CONFIG_BLN);
+}
+
+/**
+ * Get the contents of a defined structure property and load it into the passed
+ * C struct
+ * @param   key The name of the structure property to look up.
+ * @param   data The struct to write into.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if the structure is written successfully.
+ * @ingroup Ecore_Config_Struct_Group
+ */
+EAPI int
+ecore_config_struct_get(const char *key, void *data)
+{
+   Ecore_Config_Prop *e, *f;
+   Evas_List *l;
+   unsigned char *ptr;
+   long argb;
+
+   e = ecore_config_get(key);
+   if (!e)
+     return ECORE_CONFIG_ERR_NODATA;
+
+   l = e->data;
+   ptr = data;
+   while (l)
+     {
+       f = (Ecore_Config_Prop *) l->data;
+       switch (f->type)
+         {
+            case ECORE_CONFIG_INT:
+              *((int *) ptr) = _ecore_config_int_get(f);
+              ptr += sizeof(int);
+            break;
+            case ECORE_CONFIG_BLN:
+              *((int *) ptr) = _ecore_config_boolean_get(f);
+              ptr += sizeof(int);
+            break;
+            case ECORE_CONFIG_FLT:
+              *((float *) ptr) = _ecore_config_float_get(f);
+              ptr += sizeof(float);
+            break;
+            case ECORE_CONFIG_STR:
+            case ECORE_CONFIG_THM:
+              *((char **) ptr) = _ecore_config_string_get(f);
+              ptr += sizeof(char *);
+            break;
+            case ECORE_CONFIG_RGB:
+              argb = _ecore_config_argbint_get(f);
+              *((int *) ptr) = (argb >> 24) & 0xff;
+              ptr += sizeof(int);
+              *((int *) ptr) = (argb >> 16) & 0xff;
+              ptr += sizeof(int);
+              *((int *) ptr) = (argb >> 8) & 0xff;
+              ptr += sizeof(int);
+              *((int *) ptr) = argb & 0xff;
+              ptr += sizeof(int);
+            break;
+            default:
+              printf("ARGH - STRUCT coding not implemented yet\n");
+         }
+       l = evas_list_next(l);
+     }
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/**
+ * @defgroup Ecore_Config_Listeners_Group Ecore Config Listeners
+ *
+ * Functions that set and unset property listener callbacks.
+ */
+
+/**
+ * Adds a callback function to the list of functions called when a property
+ * changes.
+ * @param   name     Name of the callback.
+ * @param   key      The key of the property to listen to.
+ * @param   listener Listener callback function.
+ * @param   tag      Tag to pass to @p listener when it is called.
+ * @param   data     Data to pass to @p listener when it is called.
+ * @return  @c ECORE_CONFIG_ERR_SUCC if successful in setting up the callback.
+ * @ingroup Ecore_Config_Listeners_Group
+ */
+EAPI int
+ecore_config_listen(const char *name, const char *key,
+                   Ecore_Config_Listener listener, int tag, void *data)
+{
+   Ecore_Config_Prop  *e;
+   Ecore_Config_Listener_List *l;
+
+   if (!key)
+      return ECORE_CONFIG_ERR_NODATA;
+
+   if (!(e = ecore_config_get(key)))
+     {
+       int                 ret = ecore_config_add(key, "");
+
+       if (ret != ECORE_CONFIG_ERR_SUCC)
+         {
+            E(0, "ecore_config_listen: ecore_config_add(\"%s\") failed: %d\n",
+              key, ret);
+            return ret;
+         }
+       if (!(e = ecore_config_get(key)))
+         {
+            E(0, "ecore_config_listen: list of properties corrupted!?\n");
+            return ECORE_CONFIG_ERR_FAIL;
+         }
+     }
+
+   for (l = e->listeners; l; l = l->next)
+      if (!strcmp(l->name, name) || (l->listener == listener))
+       {
+          E(1,
+            "ecore_config_listen: %s is already listening for changes of %s...\n",
+            name, key);
+          return ECORE_CONFIG_ERR_IGNORED;
+       }
+
+   if (!(l = malloc(sizeof(Ecore_Config_Listener_List))))
+      return ECORE_CONFIG_ERR_OOM;
+
+   E(1, "registering listener \"%s\" for \"%s\" (%d)...\n", name, key, e->type);
+
+   memset(l, 0, sizeof(Ecore_Config_Listener_List));
+
+   l->listener = listener;
+   l->name = name;
+   l->data = data;
+   l->tag = tag;
+   l->next = e->listeners;
+   e->listeners = l;
+
+   if (e->type != ECORE_CONFIG_NIL)    /* call right on creation if prop exists and has val */
+      listener(key, e->type, tag, data);
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/**
+ * Removes a listener callback.
+ * @param  name     Name of the callback to remove.
+ * @param  key      The property key the callback is listening to.
+ * @param  listener The callback function to remove.
+ * @return @c ECORE_CONFIG_ERR_SUCC if successful in removing the callback.
+ *         If no callback matches the given parameters, then
+ *         @c ECORE_CONFIG_ERR_NOTFOUND is returned.  If @c NULL is passed
+ *         for the key pointer, @c ECORE_CONFIG_ERR_NODATA is returned.
+ * @ingroup Ecore_Config_Listeners_Group
+ */
+EAPI int
+ecore_config_deaf(const char *name, const char *key,
+                 Ecore_Config_Listener listener)
+{
+   Ecore_Config_Prop  *e;
+   Ecore_Config_Listener_List *l, *p;
+   int                 ret;
+
+   ret = ECORE_CONFIG_ERR_NOTFOUND;
+
+   if (!key)
+      return ECORE_CONFIG_ERR_NODATA;
+
+   if (!(e = ecore_config_get(key)))
+      return ECORE_CONFIG_ERR_NOTFOUND;
+
+   for (p = NULL, l = e->listeners; l; p = l)
+     {
+       Ecore_Config_Listener_List *nl;
+       
+       nl = l->next;
+       if ((name && !strcmp(l->name, name)) || (l->listener == listener))
+         {
+            ret = ECORE_CONFIG_ERR_SUCC;
+            if (!p)
+               e->listeners = e->listeners->next;
+            else
+               p->next = l->next;
+            memset(l, 0, sizeof(Ecore_Config_Listener));
+            free(l);
+         }
+       l = nl;
+     }
+
+   return ret;
+}
+
+/**
+ * Locates the first configuration bundle on the given server.
+ * @param  srv The configuration server.
+ * @return Pointer to the first configuration bundle.
+ */
+EAPI Ecore_Config_Bundle *
+ecore_config_bundle_1st_get(Ecore_Config_Server * srv)
+{                              /* anchor: global, but read-only */
+   return srv->bundles;
+}
+
+/**
+ * Locates the configuration bundle after the given one.
+ * @param  ns  The configuration bundle.
+ * @return The next configuration bundle.
+ */
+EAPI Ecore_Config_Bundle *
+ecore_config_bundle_next_get(Ecore_Config_Bundle * ns)
+{
+   return ns ? ns->next : NULL;
+}
+
+/**
+ * Locates a configuration bundle on a configuration server based on its serial
+ * number.
+ * @param  srv    The configuration server.
+ * @param  serial Serial number.
+ * @return The configuration bundle with the given serial number.
+ */
+EAPI Ecore_Config_Bundle *
+ecore_config_bundle_by_serial_get(Ecore_Config_Server * srv, long serial)
+{
+   Ecore_Config_Bundle *eb;
+
+   eb = srv->bundles;
+
+   if (serial < 0)
+      return NULL;
+   else if (serial == 0)
+     {
+       Ecore_Config_Bundle *r = eb;
+
+       return r;
+     }
+
+   while (eb)
+     {
+       if (eb->serial == serial)
+          return eb;
+       eb = eb->next;
+     }
+   return NULL;
+}
+
+/**
+ * Gets the Ecore_Config_Bundle with the given identifier from the given
+ * server.
+ * @param  srv   The configuration server.
+ * @param  label The bundle's identifier string.
+ * @return The bundle with the given identifier string, or @c NULL if it
+ *         could not be found.
+ */
+EAPI Ecore_Config_Bundle *
+ecore_config_bundle_by_label_get(Ecore_Config_Server * srv, const char *label)
+{
+   Ecore_Config_Bundle *ns;
+
+   ns = srv->bundles;
+
+   while (ns)
+     {
+       if (ns->identifier && !strcmp(ns->identifier, label))
+          return ns;
+       ns = ns->next;
+     }
+   return NULL;
+}
+
+/**
+ * Retrieves the bundle's serial number.
+ * @param  ns The configuration bundle.
+ * @return The bundle's identifier string, or -1 if ns is @c NULL.
+ */
+EAPI long
+ecore_config_bundle_serial_get(Ecore_Config_Bundle * ns)
+{
+   return ns ? ns->serial : -1;
+}
+
+/**
+ * Retrieves the bundle's identifier.
+ * @param  ns The configuration bundle.
+ * @return The bundle's identifer string.
+ */
+EAPI char               *
+ecore_config_bundle_label_get(Ecore_Config_Bundle * ns)
+{
+   return ns ? ns->identifier : NULL;
+}
+
+/**
+ * Creates a new Ecore_Config_Bundle.
+ * @param  srv        Config server.
+ * @param  identifier Identifier string for the new bundle.
+ * @return A pointer to a new Ecore_Config_Bundle.  @c NULL is returned if the
+ *         structure couldn't be allocated.
+ */
+EAPI Ecore_Config_Bundle *
+ecore_config_bundle_new(Ecore_Config_Server * srv, const char *identifier)
+{
+   Ecore_Config_Bundle *t;
+   static long         ss;
+
+   ss = 0;                     /* bundle unique serial */
+
+   if ((t = malloc(sizeof(Ecore_Config_Bundle))))
+     {
+       memset(t, 0, sizeof(Ecore_Config_Bundle));
+
+       t->identifier = (char *)identifier;
+       t->serial = ++ss;
+       t->owner = srv->name;
+       t->next = srv->bundles;
+       srv->bundles = t;
+     }
+   return t;
+}
+
+static Ecore_Config_Server *
+do_init(const char *name)
+{
+   return _ecore_config_ipc_init(name);
+}
+
+static Ecore_Config_Server *
+ecore_config_init_local(const char *name)
+{
+   char               *p;
+   char               *buf;
+
+   if ((p = getenv("HOME")))
+     {                         /* debug-only ### FIXME */
+       if (!(buf = malloc(PATH_MAX * sizeof(char))))
+          return NULL;
+       snprintf(buf, PATH_MAX, "%s/.ecore/%s/.global", p, name);
+       unlink(buf);
+
+       free(buf);
+     }
+
+   return do_init(name);
+}
+
+static Ecore_Config_Server *
+ecore_config_init_global(const char *name)
+{
+   char               *p;
+   int global;
+   char               *buf;
+   global = 0;
+
+   if ((p = getenv("HOME")))
+     {                         /* debug-only ### FIXME */
+       if (!(buf = malloc(PATH_MAX * sizeof(char))))
+          return NULL;
+       snprintf(buf, PATH_MAX, "%s/.ecore/%s/.global", p, name);
+       global = creat(buf, S_IRWXU);
+
+       if (global)
+          close(global);
+
+       free(buf);
+     }
+
+   return do_init(name);
+}
+
+/**
+ * @defgroup Ecore_Config_App_Lib_Group Ecore Config App Library Functions
+ *
+ * Functions that are used to start up and shutdown the Enlightened
+ * Property Library when used directly by an application.
+ */
+
+/**
+ * Initializes the Enlightened Property Library.
+ *
+ * Either this function or @ref ecore_config_system_init must be run
+ * before any other function in the Enlightened Property Library, even
+ * if you have run @ref ecore_init .  The name given is used to
+ * determine the default configuration to load.
+ *
+ * @param  name Application name
+ * @return @c ECORE_CONFIG_ERR_SUCC if the library is successfully set up.
+ *         @c ECORE_CONFIG_ERR_FAIL otherwise.
+ * @ingroup Ecore_Config_App_Lib_Group
+ */
+EAPI int
+ecore_config_init(const char *name)
+{
+   char                *path;
+   Ecore_Config_Prop   *list;
+   _ecore_config_system_init_no_load();
+
+   __ecore_config_app_name = strdup(name);
+   __ecore_config_server_local = ecore_config_init_local(name);
+   if (!__ecore_config_server_local)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   list = __ecore_config_bundle_local->data;
+   free( __ecore_config_bundle_local );
+   __ecore_config_bundle_local =
+      ecore_config_bundle_new(__ecore_config_server_local, "config");
+   __ecore_config_bundle_local->data = list;
+
+   path = ecore_config_theme_default_path_get();
+   ecore_config_string_default("/e/themes/search_path", path);
+   if (path)
+      free(path);
+
+   list = ecore_config_get("/e/themes/search_path");
+   if (list)
+     {
+       list->flags |= ECORE_CONFIG_FLAG_SYSTEM;
+       list->flags &= ~ECORE_CONFIG_FLAG_MODIFIED;
+     }
+
+   return _ecore_config_system_load();
+}
+
+/**
+ * Frees memory and shuts down the library for an application.
+ * @return @c ECORE_CONFIG_ERR_IGNORED .
+ * @ingroup Ecore_Config_App_Lib_Group
+ */
+EAPI int
+ecore_config_shutdown(void)
+{
+   return ecore_config_system_shutdown();
+}
+
+/**
+ * @defgroup Ecore_Config_Lib_Lib_Group Ecore Config Library Functions
+ *
+ * Functions that are used to start up and shutdown the Enlightened
+ * Property Library when used directly by an application.
+ */
+
+/**
+ * Initializes the Enlightened Property Library.
+ *
+ * This function is meant to be run from other programming libraries.
+ * It should not be called from applications.
+ *
+ * This function (or @ref ecore_config_init )
+ * must be run before any other function in the
+ * Enlightened Property Library, even if you have run @ref ecore_init .
+ *
+ * @return @c ECORE_CONFIG_ERR_SUCC if the library is successfully set up.
+ *         @c ECORE_CONFIG_ERR_FAIL otherwise.
+ * @ingroup Ecore_Config_Lib_Lib_Group
+ */
+EAPI int
+ecore_config_system_init(void)
+{
+   _ecore_config_system_init_no_load();
+   return _ecore_config_system_load();
+}
+
+static            int
+_ecore_config_system_init_no_load(void)
+{
+   char               *p;
+
+   __ecore_config_system_init++;
+   if (__ecore_config_system_init > 1)
+      return ECORE_CONFIG_ERR_IGNORED;
+
+   DEBUG = -1;
+   if ((p = getenv("ECORE_CONFIG_DEBUG")) && p[0] != 0)
+     {
+       DEBUG = atoi(p);
+     }
+
+   __ecore_config_server_global =
+      ecore_config_init_global(ECORE_CONFIG_GLOBAL_ID);
+   if (!__ecore_config_server_global)
+       return ECORE_CONFIG_ERR_FAIL;
+
+   __ecore_config_bundle_local =
+      ecore_config_bundle_new(__ecore_config_server_global, "system");
+
+   /* set up a simple default path */
+   ecore_config_string_default("/e/themes/search_path", PACKAGE_DATA_DIR "../ewl/themes");
+   
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+
+static             int
+_ecore_config_system_load(void)
+{
+   char               *buf, *p;
+   Ecore_Config_Prop  *sys;
+
+   if (__ecore_config_system_init != 1)
+       return ECORE_CONFIG_ERR_FAIL;
+
+   if ((p = getenv("HOME")))
+     {                          /* debug-only ### FIXME */
+       if ((buf = malloc(PATH_MAX * sizeof(char))))
+         {
+            snprintf(buf, PATH_MAX, "%s/.e/config.eet", p);
+            if (ecore_config_file_load(buf) != 0) {
+               /* even if this file (system.eet) dosen't exist we can 
+                * continue without it as it isn't striclty necessary.
+               */
+               ecore_config_file_load(PACKAGE_DATA_DIR "/system.eet");
+            }
+            sys = __ecore_config_bundle_local->data;
+            while (sys)
+              {
+                 /* unmark it modified - modification will mean it has been overridden */
+                 sys->flags &= ~ECORE_CONFIG_FLAG_MODIFIED;
+                 /* mark as system so that examine can hide them */
+                 sys->flags |= ECORE_CONFIG_FLAG_SYSTEM;
+                 sys = sys->next;
+              }
+         }
+       free(buf);
+     }
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+
+/**
+ * Frees memory and shuts down the library for other programming libraries.
+ * @return @c ECORE_CONFIG_ERR_IGNORED
+ * @ingroup Ecore_Config_Lib_Lib_Group
+ */
+EAPI int
+ecore_config_system_shutdown(void)
+{
+   int                 ret;
+
+   __ecore_config_system_init--;
+   if (__ecore_config_system_init > 0)
+      return ECORE_CONFIG_ERR_IGNORED;
+
+   ret = _ecore_config_ipc_exit();
+   if (__ecore_config_app_name)
+      free(__ecore_config_app_name);
+   while(__ecore_config_bundle_local->data)
+     ecore_config_dst(__ecore_config_bundle_local->data);
+   free(__ecore_config_bundle_local);
+   free(__ecore_config_server_local);
+   free(__ecore_config_server_global);
+   return ret;
+}
+
+static inline void *
+__ecore_argb_to_long(int a, int r, int g, int b, long *v)
+{
+   *v = ((a << 24) & 0xff000000 )
+      | ((r << 16) &   0xff0000 )
+      | ((g <<  8) &     0xff00 )
+      | ( b        &       0xff );
+
+   return v;
+}
+
+static inline void *
+__ecore_argbstr_to_long(const char *argb, long *v)
+{
+   char *l = NULL;
+
+   // convert hexadecimal string #..., #0x..., 0x..., ... to long
+   if(*argb == '#')
+     argb++;
+   *v = (long)strtoul( argb, &l, 16);
+
+   if(*l)
+     {
+       E(0, "ecore_config_val: value \"%s\" not a valid hexadecimal RGB value?\n", argb);
+       return NULL;
+     }
+
+   return v;
+}
+
diff --git a/src/lib/ecore_config/ecore_config_db.c b/src/lib/ecore_config/ecore_config_db.c
new file mode 100644 (file)
index 0000000..712ebbb
--- /dev/null
@@ -0,0 +1,293 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <locale.h>
+
+#include "Ecore_Config.h"
+#include "ecore_config_private.h"
+#include "ecore_config_util.h"
+#include <Eet.h>
+
+struct _Ecore_Config_DB_File
+{
+   Eet_File *ef;
+};
+
+Ecore_Config_DB_File *
+_ecore_config_db_open_read(const char *file)
+{
+   Eet_File *ef;
+   Ecore_Config_DB_File *db;
+   
+   eet_init();
+   db = malloc(sizeof(Ecore_Config_DB_File));
+   if (!db) return NULL;
+   ef = eet_open((char*)file, EET_FILE_MODE_READ);
+   if (!ef)
+     {
+       free(db);
+       return NULL;
+     }
+   db->ef = ef;
+   return db;
+}
+
+Ecore_Config_DB_File *
+_ecore_config_db_open_write(const char *file)
+{
+   Eet_File *ef;
+   Ecore_Config_DB_File *db;
+   
+   eet_init();
+   db = malloc(sizeof(Ecore_Config_DB_File));
+   if (!db) return NULL;
+   ef = eet_open((char*)file, EET_FILE_MODE_WRITE);
+   if (!ef)
+     {
+       free(db);
+       return NULL;
+     }
+   db->ef = ef;
+   return db;
+}
+
+void
+_ecore_config_db_close(Ecore_Config_DB_File *db)
+{
+   eet_close(db->ef);
+   free(db);
+   eet_shutdown();
+}
+
+char **
+_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int *num_ret)
+{
+   char **keys;
+   int key_count;
+   int i;
+   
+   keys = eet_list(db->ef, (char*)"*", &key_count);
+   if (!keys)
+     {
+       *num_ret = 0;
+       return NULL;
+     }
+   /* make keys freeable - this is safe to do */
+   for (i = 0; i < key_count; i++) keys[i] = strdup(keys[i]);
+   *num_ret = key_count;
+   return keys;
+}
+
+Ecore_Config_Type
+_ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key)
+{
+   char *data;
+   int size;
+   
+   data = eet_read(db->ef, (char*)key, &size);
+   if (data)
+     {
+       if (size <= 2)
+         {
+            free(data);
+            return ECORE_CONFIG_NIL;
+         }
+       if (data[size - 1] != 0)
+         {
+            free(data);
+            return ECORE_CONFIG_NIL;
+         }
+       return (Ecore_Config_Type) data[0];
+     }
+   return ECORE_CONFIG_NIL;
+}
+
+int
+_ecore_config_db_read(Ecore_Config_DB_File *db, const char *key)
+{
+   char *data, *value;
+   int size;
+   Ecore_Config_Prop *prop;
+   Ecore_Config_Type type;
+   
+   data = eet_read(db->ef, (char*)key, &size);
+   if (data)
+     {
+       int l;
+       char *prev_locale;
+
+       if (size <= 2)
+         {
+            free(data);
+            return 0;
+         }
+       if (data[size - 1] != 0)
+         {
+            free(data);
+            return 0;
+         }
+       /* "type" NIL 1242 NIL */
+       l = strlen(data);
+       if (l >= (size - 1))
+         {
+            free(data);
+            return 0;
+         }
+   
+       type = data[0];
+       value = data + l + 1;
+       prop = ecore_config_get(key);
+       
+       switch (type) 
+         {
+            case ECORE_CONFIG_INT:
+            case ECORE_CONFIG_BLN:
+              {
+                 int tmp;
+                 prev_locale = setlocale(LC_NUMERIC, "C");
+                 tmp = atoi(value);
+                 if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+
+                 ecore_config_typed_set(key, (void *)&tmp, type);
+                 break;
+              }
+            case ECORE_CONFIG_FLT:
+              {
+                 float tmp;
+                 prev_locale = setlocale(LC_NUMERIC, "C");
+                 tmp = atof(value);
+                 if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+              
+                 ecore_config_typed_set(key, (void *)&tmp, type);
+                 break;
+              }
+            case ECORE_CONFIG_RGB:
+              ecore_config_argbstr_set(key, value);
+              break;
+            case ECORE_CONFIG_STR:
+            case ECORE_CONFIG_THM:
+              ecore_config_typed_set(key, (void *)value, type);
+              break;
+            case ECORE_CONFIG_SCT:
+              printf("loading struct %s\n", key);
+              break;
+            default:
+              E(0, "Type %d not handled\n", type);
+         }
+       free(data);
+       return 1;
+     }
+   return 0;
+}
+
+/*
+void *
+_ecore_config_db_key_data_get(Ecore_Config_DB_File *db, const char *key, int *size_ret)
+{
+   char *data;
+   int size;
+   
+   data = eet_read(db->ef, (char*)key, &size);
+   if (data)
+     {
+       int l;
+       char *dat;
+       
+       if (size <= 2)
+         {
+            free(data);
+            return NULL;
+         }
+       if (data[size - 1] != 0)
+         {
+            free(data);
+            return NULL;
+         }
+       * "type" NIL data_goes_here NIL *
+       l = strlen(data);
+       if (l >= (size - 1))
+         {
+            free(data);
+            return NULL;
+         }
+       dat = malloc(size - (l + 2));
+       memcpy(dat, data + l + 1, size - (l + 2));
+       free(data);
+       *size_ret = size - (l + 2);
+       return dat;
+     }
+   return NULL;
+}*/
+
+void
+_ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e)
+{
+   char *prev_locale= NULL;
+   char *val = NULL;
+   char *r = NULL;
+   int num;
+   
+   prev_locale = setlocale(LC_NUMERIC, "C");
+
+   switch (e->type) 
+     {
+       case ECORE_CONFIG_INT:
+          esprintf(&val, "%i", _ecore_config_int_get(e));
+          break;
+       case ECORE_CONFIG_BLN:
+          esprintf(&val, "%i", _ecore_config_boolean_get(e));
+          break;
+       case ECORE_CONFIG_FLT:
+          esprintf(&val, "%16.16f", _ecore_config_float_get(e));
+          break;
+       case ECORE_CONFIG_STR: 
+          val = _ecore_config_string_get(e);
+          break;
+       case ECORE_CONFIG_THM:
+          val = _ecore_config_theme_get(e);
+          break;
+       case ECORE_CONFIG_RGB:
+          val = _ecore_config_argbstr_get(e);
+          break;
+       default:
+          E(0, "Type %d not handled\n", e->type);
+     }
+
+   if (prev_locale)
+     {
+       setlocale(LC_NUMERIC, prev_locale);
+     }
+   
+   if(val)
+     {
+       num = esprintf(&r, "%c%c%s%c", (char) e->type, 0, val, 0);
+       if(num)
+         eet_write(db->ef, e->key, r, num, 1);
+       free(r);
+     }
+
+   free(val);
+}
+/*
+void
+_ecore_config_db_key_data_set(Ecore_Config_DB_File *db, const char *key, void *data, int data_size)
+{
+   char *buf;
+   int num;
+   
+   num = 1 + 1 + data_size + 1;
+   buf = malloc(num);
+   if (!buf) return;
+   buf[0] = (char) ECORE_CONFIG_BIN;
+   buf[1] = 0;
+   memcpy(buf + 2, data, data_size);
+   buf[num - 1] = 0;
+   eet_write(db->ef, (char*)key, buf, num, 1);
+   free(buf);
+}*/
diff --git a/src/lib/ecore_config/ecore_config_extra.c b/src/lib/ecore_config/ecore_config_extra.c
new file mode 100644 (file)
index 0000000..7981363
--- /dev/null
@@ -0,0 +1,802 @@
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "Ecore_Config.h"
+#include "Ecore.h"
+
+#include "config.h"
+
+typedef struct __Ecore_Config_Arg_Callback _Ecore_Config_Arg_Callback;
+struct __Ecore_Config_Arg_Callback
+{
+   char                  short_opt;
+   char                 *long_opt;
+   char                 *description;
+   void                 *data;
+   void                (*func)(char *val, void *data);
+   Ecore_Config_Type type;
+   _Ecore_Config_Arg_Callback *next;
+};
+
+char               *__ecore_config_app_description;
+_Ecore_Config_Arg_Callback *_ecore_config_arg_callbacks;
+
+/* shorthand prop setup code to make client apps a little smaller ;) */
+
+/**
+ * Creates a new property, if it does not already exist, and sets its
+ * attributes to those given.
+ *
+ * The type of the property is guessed from the key and the value
+ * given.
+ *
+ * @param   key       The property key.
+ * @param   val       Pointer to default value of key.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_create(const char *key, void *val, char short_opt, char *long_opt,
+                   char *desc)
+{
+   int                 type = ecore_config_type_guess(key, val);
+
+   return ecore_config_typed_create(key, val, type, short_opt, long_opt, desc);
+}
+
+/**
+ * Creates a new property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Pointer to default value of key.
+ * @param   type      Type of the property.
+ * @param   short_opt Short option used to set the property from
+ *                    command line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_typed_create(const char *key, void *val, int type, char short_opt,
+                         char *long_opt, char *desc)
+{
+   int                 ret;
+
+   if ((ret =
+       ecore_config_typed_default(key, val, type)) != ECORE_CONFIG_ERR_SUCC)
+      return ret;
+   if ((ret =
+       ecore_config_short_opt_set(key, short_opt)) != ECORE_CONFIG_ERR_SUCC)
+      return ret;
+   if ((ret =
+       ecore_config_long_opt_set(key, long_opt)) != ECORE_CONFIG_ERR_SUCC)
+      return ret;
+   ret = ecore_config_describe(key, desc);
+   return ret;
+}
+
+/**
+ * Creates a new boolean property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default boolean value of key.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_boolean_create(const char *key, int val, char short_opt,
+                       char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_BLN, short_opt, long_opt,
+                               desc);
+}
+
+/**
+ * Creates a new integer property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default integer value of key.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_int_create(const char *key, int val, char short_opt,
+                       char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_INT, short_opt, long_opt,
+                               desc);
+}
+
+/**
+ * Creates a new integer property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default integer value of key.
+ * @param   low       Lowest valid integer value for the property.
+ * @param   high      Highest valid integer value for the property.
+ * @param   step      Increment value for the property.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_int_create_bound(const char *key, int val, int low, int high,
+                             int step, char short_opt, char *long_opt,
+                             char *desc)
+{
+   Ecore_Config_Prop  *e;
+   int                 ret;
+
+   ret =
+      ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_INT, short_opt, long_opt,
+                               desc);
+   if (ret != ECORE_CONFIG_ERR_SUCC)
+      return ret;
+   e = ecore_config_get(key);
+   if (e)
+     {
+       e->step = step;
+       e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+       e->lo = low;
+       e->hi = high;
+       ecore_config_bound(e);
+     }
+   return ret;
+}
+
+/**
+ * Creates a new string property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default value of key.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_string_create(const char *key, char *val, char short_opt,
+                          char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_STR, short_opt, long_opt,
+                               desc);
+}
+
+/**
+ * Creates a new float property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default float value of key.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_float_create(const char *key, float val, char short_opt,
+                         char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_FLT, short_opt, long_opt,
+                               desc);
+}
+
+/**
+ * Creates a new float property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default float value of key.
+ * @param   low       Lowest valid float value for the property.
+ * @param   high      Highest valid float value for the property.
+ * @param   step      Increment value for the property.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_float_create_bound(const char *key, float val, float low,
+                               float high, float step, char short_opt,
+                               char *long_opt, char *desc)
+{
+   Ecore_Config_Prop  *e;
+   int                 ret;
+
+   ret =
+      ecore_config_typed_create(key, (void *)&val, ECORE_CONFIG_FLT, short_opt, long_opt,
+                               desc);
+   e = ecore_config_get(key);
+   if (e)
+     {
+       e->step = (int)(step * ECORE_CONFIG_FLOAT_PRECISION);
+       e->flags |= ECORE_CONFIG_FLAG_BOUNDS;
+       e->lo = (int)(low * ECORE_CONFIG_FLOAT_PRECISION);
+       e->hi = (int)(high * ECORE_CONFIG_FLOAT_PRECISION);
+       ecore_config_bound(e);
+     }
+   return ret;
+}
+
+/**
+ * Creates a new color property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default color value of key, as a hexadecimal string.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_argb_create(const char *key, char *val, char short_opt,
+                       char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_RGB, short_opt, long_opt,
+                               desc);
+}
+
+/**
+ * Creates a new theme property, if it does not already exist, and sets its
+ * attributes to those given.
+ * @param   key       The property key.
+ * @param   val       Default theme name for the property.
+ * @param   short_opt Short option used to set the property from command
+ *                    line.
+ * @param   long_opt  Long option used to set the property from command line.
+ * @param   desc      String description of property.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.
+ * @ingroup Ecore_Config_Create_Group
+ */
+int
+ecore_config_theme_create(const char *key, char *val, char short_opt,
+                         char *long_opt, char *desc)
+{
+   return
+      ecore_config_typed_create(key, (void *)val, ECORE_CONFIG_THM, short_opt, long_opt,
+                               desc);
+}
+
+/* this should only be built if evas is present */
+
+/**
+ * Calls evas_font_path_append on @p evas for each of the font names stored
+ * in the property "/e/font/path".
+ * @param  evas Evas object to append the font names to.
+ * @return @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_NODATA
+ *         is returned if the property has not been set.
+ */
+int
+ecore_config_evas_font_path_apply(Evas * evas)
+{
+   char               *font_path, *font_path_tmp, *ptr, *end;
+
+   font_path = ecore_config_string_get("/e/font/path");
+
+   if (!font_path)
+      return ECORE_CONFIG_ERR_NODATA;
+   ptr = font_path;
+   end = font_path + strlen(font_path);
+   font_path_tmp = font_path;
+   while (ptr && ptr < end)
+     {
+       while (*ptr != '|' && ptr < end)
+          ptr++;
+       if (ptr < end)
+          *ptr = '\0';
+
+       evas_font_path_append(evas, font_path_tmp);
+       ptr++;
+       font_path_tmp = ptr;
+     }
+
+   free(font_path);
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/**
+ * Retrieves the default theme search path.
+ *
+ * @return The default theme search path.
+ */
+char               *
+ecore_config_theme_default_path_get(void)
+{
+   char               *path, *home;
+   int                 len;
+
+   home = getenv("HOME");
+   len = strlen(PACKAGE_DATA_DIR "/../") + strlen(__ecore_config_app_name) +
+            strlen("/themes/") + 1;
+   if (home)
+      len += strlen(home) + strlen("/.e/apps/") +
+               strlen(__ecore_config_app_name) +
+               strlen("/themes/|"); /* no \0, as that is above */
+
+   if (!(path = malloc(len)))
+      return NULL;
+
+   *path = '\0';
+   if (home)
+     {
+        strcat(path, home);
+        strcat(path, "/.e/apps/");
+        strcat(path, __ecore_config_app_name);
+        strcat(path, "/themes/|");
+     }
+   strcat(path, PACKAGE_DATA_DIR "/../");
+   strcat(path, __ecore_config_app_name);
+   strcat(path, "/themes/");
+
+   return path;
+}
+
+/**
+ * Retrieves the search path used to find themes.
+ *
+ * The search path is stored in the property "/e/themes/search_path".  If
+ * the property has not been set, the default path used is
+ * "/usr/local/share/<app_name>/themes|~/.e/apps/<app_name>/themes".
+ * See @ref ecore_config_theme_default_path_get for more information about
+ * the default path.
+ *
+ * @return The search path.  @c NULL is returned if there is no memory left.
+ */
+char               *
+ecore_config_theme_search_path_get(void)
+{
+   char               *search_path;
+   search_path = ecore_config_string_get("/e/themes/search_path");
+
+   /* this should no longer be the case, as it is defaulted in init */
+   if (!search_path)
+     {
+       search_path = ecore_config_theme_default_path_get();
+       if (search_path)
+         {
+            ecore_config_string_default("/e/themes/search_path", search_path);
+            free(search_path);
+         }
+     }
+   return search_path;
+}
+
+/**
+ * Adds the given path to the search path used to find themes.
+ *
+ * If the search path is successfully, the new search path will be saved
+ * into the property "/e/themes/search_path".  Therefore, this function
+ * should be called @b after @ref ecore_config_load to allow a user to
+ * override the default search path.
+ *
+ * @param  path The given 
+ * @return @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_FAIL
+ *         will be returned if @p path already exists in the search path.
+ *         @c ECORE_CONFIG_ERR_FAIL is returned if @p path is @c NULL.
+ */
+int
+ecore_config_theme_search_path_append(const char *path)
+{
+   char               *search_path, *loc, *new_search_path;
+   int                 len, search_len;
+   Ecore_Config_Prop  *prop;
+
+   if (!path)
+     return ECORE_CONFIG_ERR_NODATA;
+   search_path = ecore_config_theme_search_path_get();
+
+   loc = strstr(search_path, path);
+   len = strlen(path);
+   search_len = strlen(search_path);
+   
+   if (loc == NULL || (loc != search_path && *(loc - 1) != '|') || 
+       (loc != (search_path + search_len - len) && *(loc + len - 1) != '|'))
+     {
+       new_search_path = malloc(search_len + len + 2); /* 2 = \0 + | */
+       strcpy(new_search_path, search_path);
+       strncat(new_search_path, "|", 1);
+       strncat(new_search_path, path, len);
+
+       ecore_config_string_set("/e/themes/search_path", new_search_path);
+       prop = ecore_config_get("/e/themes/search_path");
+       if (prop)
+         prop->flags &= ~ECORE_CONFIG_FLAG_MODIFIED;
+
+       free(new_search_path);
+
+       return ECORE_CONFIG_ERR_SUCC;
+     }
+   return ECORE_CONFIG_ERR_FAIL;
+}
+
+/**
+ * Retrieve a theme file's full path.
+ *
+ * The search path for theme files is given by @ref
+ * ecore_config_theme_search_path_get .
+ *
+ * @param  name The name of the theme.
+ * @return A full path to the theme on success.  @c NULL will be returned
+ *         if @p name is @c NULL or no theme matching the given name could
+ *         be found.
+ */
+char               *
+ecore_config_theme_with_path_from_name_get(char *name)
+{
+   char               *search_path, *search_path_tmp, *ptr, *end, *file;
+   struct stat         st;
+
+   if (!name)
+      return NULL; /* no theme specified (nor a default) */
+
+   search_path = ecore_config_theme_search_path_get();
+   ptr = search_path;
+   end = search_path + strlen(search_path);
+   search_path_tmp = search_path;
+   while (ptr && ptr < end)
+     {
+        while (*ptr != '|' && ptr < end)
+           ptr++;
+        if (ptr < end)
+           *ptr = '\0';
+
+        file = malloc(strlen(search_path_tmp) + strlen(name) + 6);
+           /* 6 = / + .edj + \0 */
+
+        snprintf(file, strlen(search_path_tmp) + strlen(name) + 6, 
+                      "%s/%s.edj", search_path_tmp, name);
+       
+        if (stat(file, &st) == 0)
+          {
+              free(search_path);
+              return file;
+          }
+        free(file);
+        ptr++;
+        search_path_tmp = ptr;
+     }
+
+   free(search_path);
+
+   return NULL; /* we could not find the theme with that name in search path */
+}
+
+/**
+ * Retrieves the full path to the theme file of the theme stored in the
+ * given property.
+ *
+ * The search path for themes is given by @ref
+ * ecore_config_theme_search_path_get .
+ *
+ * @param  key The given property.
+ * @return A full path to the theme on success, or @c NULL on failure.
+ *         This function will fail if no key is specified or not theme
+ *         matching that given by the property @p key could be found.
+ */
+char               *
+ecore_config_theme_with_path_get(const char *key)
+{
+   return
+      ecore_config_theme_with_path_from_name_get(ecore_config_theme_get(key));
+}
+
+static const char  *_ecore_config_short_types[] =
+   { "      ", "<int> ", "<flt> ", "<str> ", "<rgb> ", "<str> ", "<bool>" };
+
+/**
+ * Prints the property list of the local configuration bundle to output.
+ */
+void
+ecore_config_args_display(void)
+{
+   Ecore_Config_Prop  *props;
+   _Ecore_Config_Arg_Callback *callbacks;
+
+   if (__ecore_config_app_description)
+      printf("%s\n\n", __ecore_config_app_description);
+   printf("Supported Options:\n");
+   printf(" -h, --help\t       Print this text\n");
+   if (!__ecore_config_bundle_local)
+      return;
+   props = __ecore_config_bundle_local->data;
+   while (props)
+     {
+       /* if it is a system prop, or cannot be set on command line hide it */
+       if (props->flags & ECORE_CONFIG_FLAG_SYSTEM || (!props->short_opt && !props->long_opt))
+         {
+            props = props->next;
+            continue;
+         }
+       printf(" %c%c%c --%s\t%s %s\n", props->short_opt ? '-' : ' ',
+              props->short_opt ? props->short_opt : ' ',
+              props->short_opt ? ',' : ' ',
+              props->long_opt ? props->long_opt : props->key,
+              _ecore_config_short_types[props->type],
+              props->description ? props->description :
+              "(no description available)");
+
+       props = props->next;
+     }
+   callbacks = _ecore_config_arg_callbacks;
+   while (callbacks)
+     {
+        printf(" %c%c%c --%s\t%s %s\n", callbacks->short_opt ? '-' : ' ',
+              callbacks->short_opt ? callbacks->short_opt : ' ',
+              callbacks->short_opt ? ',' : ' ',
+              callbacks->long_opt ? callbacks->long_opt : "",
+               _ecore_config_short_types[callbacks->type],
+              callbacks->description ? callbacks->description :
+              "(no description available)");
+
+       callbacks = callbacks->next;
+     }
+}
+
+static int
+ecore_config_parse_set(Ecore_Config_Prop * prop, char *arg, char *opt,
+                      char opt2)
+{
+   if (!arg)
+     {
+       if (opt)
+          printf("Missing expected argument for option --%s\n", opt);
+       else
+          printf("Missing expected argument for option -%c\n", opt2);
+       return ECORE_CONFIG_PARSE_EXIT;
+     }
+   else
+     {
+       ecore_config_set(prop->key, arg);
+       prop->flags |= ECORE_CONFIG_FLAG_CMDLN;
+     }   
+   return ECORE_CONFIG_PARSE_CONTINUE;
+}
+
+static void
+ecore_config_args_callback_add(char short_opt, char *long_opt, char *desc,
+                              void (*func)(char *val, void *data),
+                              void *data, Ecore_Config_Type type) {
+   _Ecore_Config_Arg_Callback *new_cb;
+
+   new_cb = malloc(sizeof(_Ecore_Config_Arg_Callback));
+   new_cb->short_opt = short_opt;
+   if (long_opt)
+      new_cb->long_opt = strdup(long_opt);
+   if (desc)
+      new_cb->description = strdup(desc);
+   new_cb->data = data;
+   new_cb->func = func;
+   new_cb->type = type;
+
+   new_cb->next = _ecore_config_arg_callbacks;
+   _ecore_config_arg_callbacks = new_cb;
+}
+
+void
+ecore_config_args_callback_str_add(char short_opt, char *long_opt, char *desc,
+                                  void (*func)(char *val, void *data),
+                                  void *data) {
+   ecore_config_args_callback_add(short_opt, long_opt, desc, func, data, ECORE_CONFIG_STR);
+}
+
+void
+ecore_config_args_callback_noarg_add(char short_opt, char *long_opt, char *desc,
+                                    void (*func)(char *val, void *data),
+                                    void *data) {
+   ecore_config_args_callback_add(short_opt, long_opt, desc, func, data, ECORE_CONFIG_NIL);
+}
+
+/**
+ * Parse the arguments set by @ref ecore_app_args_set and set properties
+ * accordingly.
+ *
+ * @return @c ECORE_CONFIG_PARSE_CONTINUE if successful.
+ *         @c ECORE_CONFIG_PARSE_EXIT is returned if an unrecognised option
+ *         is found.  @c ECORE_CONFIG_PARSE_HELP is returned if help was
+ *         displayed.
+ */
+int
+ecore_config_args_parse(void)
+{
+   int                 argc;
+   char              **argv;
+   int                 nextarg, next_short_opt, found, ret;
+   char               *arg;
+   char               *long_opt, short_opt;
+   Ecore_Config_Prop  *prop;
+   _Ecore_Config_Arg_Callback *callback;
+
+   ecore_app_args_get(&argc, &argv);
+   nextarg = 1;
+   while (nextarg < argc)
+     {
+       arg = argv[nextarg];
+
+       if (*arg != '-')
+         {
+            printf("Unexpected attribute \"%s\"\n", arg);
+            nextarg++;
+            continue;
+         }
+
+       next_short_opt = 1;
+       short_opt = *(arg + next_short_opt);
+
+       if (short_opt == '-')
+         {
+            long_opt = arg + 2;
+
+            if (!strcmp(long_opt, "help"))
+              {
+                 ecore_config_args_display();
+                 return ECORE_CONFIG_PARSE_HELP;
+              }
+
+            found = 0;
+            prop = __ecore_config_bundle_local->data;
+            while (prop)
+              {
+                 if ((prop->long_opt && !strcmp(long_opt, prop->long_opt))
+                     || !strcmp(long_opt, prop->key))
+                   {
+                      found = 1;
+                      if ((ret =
+                           ecore_config_parse_set(prop, argv[++nextarg],
+                                                  long_opt,
+                                                  '\0')) !=
+                          ECORE_CONFIG_PARSE_CONTINUE)
+                         return ret;
+                      break;
+                   }
+                 prop = prop->next;
+              }
+            if (!found)
+              {
+                 callback = _ecore_config_arg_callbacks;
+                 while (callback)
+                   {
+                      if ((callback->long_opt && 
+                           !strcmp(long_opt, callback->long_opt)))
+                        {
+                           found = 1;
+                           if (callback->type == ECORE_CONFIG_NIL)
+                             {
+                                callback->func(NULL, callback->data);
+                             }
+                           else 
+                             {
+                                if (!argv[++nextarg])
+                                  {
+                                     printf("Missing expected argument for option --%s\n", long_opt);
+                                     return ECORE_CONFIG_PARSE_EXIT;
+                                  }
+                                  callback->func(argv[nextarg], callback->data);
+                             }
+                           break;
+                        }
+                      callback = callback->next;
+                   }
+              }
+            if (!found)
+              {
+                 printf("Unrecognised option \"%s\"\n", long_opt);
+                 printf("Try using -h or --help for more information.\n\n");
+                 return ECORE_CONFIG_PARSE_EXIT;
+              }
+         }
+       else
+         {
+            while (short_opt)
+              {
+                 if (short_opt == 'h')
+                   {
+                      ecore_config_args_display();
+                      return ECORE_CONFIG_PARSE_HELP;
+                   }
+                 else
+                   {
+                      found = 0;
+                      prop = __ecore_config_bundle_local->data;
+                      while (prop)
+                        {
+                           if (short_opt == prop->short_opt)
+                             {
+                                found = 1;
+                                if ((ret =
+                                     ecore_config_parse_set(prop,
+                                                            argv[++nextarg],
+                                                            NULL,
+                                                            short_opt)) !=
+                                    ECORE_CONFIG_PARSE_CONTINUE)
+                                   return ret;
+                                break;
+                             }
+                           prop = prop->next;
+                        }
+
+                      if (!found)
+                        {
+                           callback = _ecore_config_arg_callbacks;
+                           while (callback)
+                             {
+                                if (short_opt == callback->short_opt)
+                                  {
+                                     found = 1;
+                                     if (callback->type == ECORE_CONFIG_NIL)
+                                       {
+                                          callback->func(NULL, callback->data);
+                                       }
+                                     else
+                                       {
+                                          if (!argv[++nextarg])
+                                            {
+                                               printf("Missing expected argument for option -%c\n", short_opt);
+                                               return ECORE_CONFIG_PARSE_EXIT;
+                                            }
+                                          callback->func(argv[nextarg], callback->data);
+                                       }
+                                     break;
+                                  }
+                                callback = callback->next;
+                             }
+                        }
+                      if (!found)
+                        {
+                           printf("Unrecognised option '%c'\n", short_opt);
+                           printf
+                              ("Try using -h or --help for more information.\n\n");
+                           return ECORE_CONFIG_PARSE_EXIT;
+                        }
+                   }
+                 short_opt = *(arg + ++next_short_opt);
+              }
+         }
+       nextarg++;
+     }
+
+   return ECORE_CONFIG_PARSE_CONTINUE;
+}
+
+/**
+ * Sets the description string used by @ref ecore_config_args_display .
+ * @param description Description of application.
+ */
+void
+ecore_config_app_describe(char *description)
+{
+   if (__ecore_config_app_description)
+      free(__ecore_config_app_description);
+   __ecore_config_app_description = strdup(description);
+}
diff --git a/src/lib/ecore_config/ecore_config_ipc.h b/src/lib/ecore_config/ecore_config_ipc.h
new file mode 100644 (file)
index 0000000..7b3dea1
--- /dev/null
@@ -0,0 +1,50 @@
+#include <Ecore_Ipc.h>
+#include "Ecore_Config.h"
+
+typedef enum
+{
+   IPC_NONE,
+   IPC_PROP_LIST,
+   IPC_PROP_DESC,
+   IPC_PROP_GET,
+   IPC_PROP_SET, /* end of the codes shared by evidence and econf */
+
+   IPC_GLOBAL_PROP_LIST,
+
+   IPC_BUNDLE_LIST,
+   IPC_BUNDLE_NEW,
+   IPC_BUNDLE_LABEL_GET,
+   IPC_BUNDLE_LABEL_SET,
+   IPC_BUNDLE_LABEL_FIND,
+
+   IPC_LAST
+} Ecore_Config_Ipc_Call;
+
+Ecore_Config_Server *_ecore_config_ipc_init(const char *pipe_name);
+int                  _ecore_config_ipc_exit(void);
+
+Ecore_Config_Server *_ecore_config_server_convert(void *srv);
+
+char               *_ecore_config_ipc_prop_list(Ecore_Config_Server * srv,
+                                               const long serial);
+char               *_ecore_config_ipc_prop_desc(Ecore_Config_Server * srv,
+                                               const long serial,
+                                               const char *key);
+char               *_ecore_config_ipc_prop_get(Ecore_Config_Server * srv,
+                                              const long serial,
+                                              const char *key);
+int                 _ecore_config_ipc_prop_set(Ecore_Config_Server * srv,
+                                              const long serial,
+                                              const char *key,
+                                              const char *val);
+
+char               *_ecore_config_ipc_bundle_list(Ecore_Config_Server * srv);
+int                 _ecore_config_ipc_bundle_new(Ecore_Config_Server * srv,
+                                                const char *);
+char               *_ecore_config_ipc_bundle_label_get(Ecore_Config_Server *
+                                                      srv, const long);
+int                 _ecore_config_ipc_bundle_label_set(Ecore_Config_Server *
+                                                      srv, const long,
+                                                      const char *);
+long                _ecore_config_ipc_bundle_label_find(Ecore_Config_Server *
+                                                       srv, const char *);
diff --git a/src/lib/ecore_config/ecore_config_ipc_ecore.c b/src/lib/ecore_config/ecore_config_ipc_ecore.c
new file mode 100644 (file)
index 0000000..44fa9d0
--- /dev/null
@@ -0,0 +1,381 @@
+/* by Azundris, with thanks to Corey Donohoe <atmos@atmos.org> */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <ctype.h>
+
+#include <Ecore.h>
+#include <Ecore_Ipc.h>
+
+#include "ecore_private.h"
+#include "ecore_config_ipc.h"
+#include "ecore_config_util.h"
+#include "ecore_config_private.h"
+
+#include "Ecore_Config.h"
+#include "config.h"
+
+
+/*****************************************************************************/
+
+static int
+_ecore_config_ipc_ecore_string_get(char **m, char **r)
+{
+   char               *q;
+   int                 l = 0;
+
+   if (!m || !*m)
+      return ECORE_CONFIG_ERR_NODATA;
+   if (!r)
+      return ECORE_CONFIG_ERR_FAIL;
+   q = *m;
+   if (*q != 's')
+      return ECORE_CONFIG_ERR_TYPEMISMATCH;
+   q++;
+   l = (*(q++)) << 8;
+   l += *(q++);
+   *r = q;
+   q += l;
+   *m = q;
+   E(1, "IPC/eCore: got string-%d \"%s\"\n", l, *r);
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+static char               *
+_ecore_config_ipc_global_prop_list(Ecore_Config_Server * srv __UNUSED__, long serial __UNUSED__)
+{
+   Ecore_Config_DB_File  *db;
+   char                 **keys;
+   int                    key_count, x;
+   estring               *s;
+   int                    f;
+   char                   buf[PATH_MAX], *p;   
+   // char             *data;                  UNUSED
+   Ecore_Config_Type      type;
+
+   db = NULL;
+   s = estring_new(8192);
+   f = 0;
+   if ((p = getenv("HOME")))
+     {
+       snprintf(buf, sizeof(buf), "%s/.e/config.eet", p);
+       if (!(db = _ecore_config_db_open_read(buf)))
+         {
+            strcpy(buf, PACKAGE_DATA_DIR"/system.eet");
+            if (!(db = _ecore_config_db_open_read(buf)))
+              return NULL;
+         }
+     }
+   if (!db) return NULL;
+   key_count = 0;
+   keys = _ecore_config_db_keys_get(db, &key_count);
+   if (keys)
+     {
+       for (x = 0; x < key_count; x++)
+         {
+            type = _ecore_config_db_key_type_get(db, keys[x]);
+            switch (type)
+              {
+                 case ECORE_CONFIG_INT:
+                   estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_BLN:
+                   estring_appendf(s, "%s%s: boolean", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_FLT:
+                   estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_STR:
+                   estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_RGB:
+                   estring_appendf(s, "%s%s: colour", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_THM:
+                   estring_appendf(s, "%s%s: theme", f ? "\n" : "", keys[x]);
+                   break;
+                 case ECORE_CONFIG_SCT:
+                   estring_appendf(s, "%s%s: structure", f ? "\n" : "", keys[x]);
+                   break;
+                 default:
+                   estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]);
+                   continue;
+              }
+            f = 1;
+         }
+     }
+   _ecore_config_db_close(db);
+   if (keys)
+     {
+       for (x = 0; x < key_count; x++)
+         {
+            free(keys[x]);
+         }
+       free(keys);
+     }
+   
+   return estring_disown(s);
+}
+
+/*****************************************************************************/
+
+static int
+_ecore_config_ipc_ecore_send(Ecore_Ipc_Event_Client_Data * e, int code,
+                            char *reply)
+{
+   static int          our_ref = 0;
+   int                 len = reply ? strlen(reply) + 1 : 0;
+
+   our_ref++;
+   E(1, "IPC/eCore: replying [0,0] %d IRT %d => %d {\"%s\":%d}\n", our_ref,
+     e->ref, code, reply ? reply : "", len);
+   return ecore_ipc_client_send(e->client, 0, 0, our_ref, e->ref, code, reply,
+                               len);
+}
+
+/*****************************************************************************/
+
+static int
+_ecore_config_ipc_ecore_handle_request(Ecore_Ipc_Server * server,
+                                      Ecore_Ipc_Event_Client_Data * e)
+{
+   Ecore_Config_Server *srv;
+   long                serial;
+   int                 ret;
+   char               *r, *k, *v, *m;
+
+   srv = _ecore_config_server_convert(server);
+   serial = e->minor;
+   ret = ECORE_CONFIG_ERR_FAIL;
+   r = NULL;
+   m = (char *)e->data;
+   E(1, "IPC/eCore: client sent: [%d,%d] #%d (%d) @ %p\n", e->major, e->minor,
+     e->ref, e->size, server);
+
+   switch (e->major)
+     {
+     case IPC_PROP_LIST:
+       if (srv == __ecore_config_server_global)
+          r = _ecore_config_ipc_global_prop_list(srv, serial);
+       else
+          r = _ecore_config_ipc_prop_list(srv, serial);
+       break;
+     case IPC_PROP_DESC:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+          r = _ecore_config_ipc_prop_desc(srv, serial, k);
+       break;
+     case IPC_PROP_GET:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+          r = _ecore_config_ipc_prop_get(srv, serial, k);
+       break;
+     case IPC_PROP_SET:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+         {
+            if (_ecore_config_ipc_ecore_string_get(&m, &v) ==
+                ECORE_CONFIG_ERR_SUCC)
+               return _ecore_config_ipc_ecore_send(e,
+                                                   _ecore_config_ipc_prop_set
+                                                   (srv, serial, k, v), NULL);
+         }
+       break;
+
+     case IPC_BUNDLE_LIST:
+       r = _ecore_config_ipc_bundle_list(srv);
+       break;
+     case IPC_BUNDLE_NEW:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+          return _ecore_config_ipc_ecore_send(e,
+                                              k ?
+                                              _ecore_config_ipc_bundle_new(srv,
+                                                                           k) :
+                                              ECORE_CONFIG_ERR_FAIL, NULL);
+       break;
+     case IPC_BUNDLE_LABEL_SET:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+          return _ecore_config_ipc_ecore_send(e,
+                                              k ?
+                                              _ecore_config_ipc_bundle_label_set
+                                              (srv, serial,
+                                               k) : ECORE_CONFIG_ERR_FAIL,
+                                              NULL);
+       break;
+     case IPC_BUNDLE_LABEL_FIND:
+       if (_ecore_config_ipc_ecore_string_get(&m, &k) == ECORE_CONFIG_ERR_SUCC)
+          return _ecore_config_ipc_ecore_send(e,
+                                              _ecore_config_ipc_bundle_label_find
+                                              (srv, k), NULL);
+       break;
+     case IPC_BUNDLE_LABEL_GET:
+       r = _ecore_config_ipc_bundle_label_get(srv, serial);
+       break;
+     }
+
+   ret =
+      _ecore_config_ipc_ecore_send(e,
+                                  r ? ECORE_CONFIG_ERR_SUCC :
+                                  ECORE_CONFIG_ERR_FAIL, r);
+   if (r)
+     {
+       free(r);
+       return ret;
+     }
+   return ECORE_CONFIG_ERR_NOTFOUND;
+}
+
+/*****************************************************************************/
+
+static int
+_ecore_config_ipc_client_add(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Ipc_Server  **server;
+   Ecore_Ipc_Event_Client_Data *e;
+
+   server = (Ecore_Ipc_Server **) data;
+   e = (Ecore_Ipc_Event_Client_Data *) event;
+
+   if (*server != ecore_ipc_client_server_get(e->client))
+      return 1;
+
+   E(1, "IPC/eCore: Client connected. @ %p\n", server);
+   return 1;
+}
+
+static int
+_ecore_config_ipc_client_del(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Ipc_Server  **server;
+   Ecore_Ipc_Event_Client_Data *e;
+
+   server = (Ecore_Ipc_Server **) data;
+   e = (Ecore_Ipc_Event_Client_Data *) event;
+
+   if (*server != ecore_ipc_client_server_get(e->client))
+      return 1;
+
+   E(1, "IPC/eCore: Client disconnected. @ %p\n", server);
+   return 1;
+}
+
+static int
+_ecore_config_ipc_client_sent(void *data, int type __UNUSED__, void *event)
+{
+   Ecore_Ipc_Server  **server;
+   Ecore_Ipc_Event_Client_Data *e;
+
+   server = (Ecore_Ipc_Server **) data;
+   e = (Ecore_Ipc_Event_Client_Data *) event;
+
+   if (*server != ecore_ipc_client_server_get(e->client))
+      return 1;
+
+   _ecore_config_ipc_ecore_handle_request(*server, e);
+   return 1;
+}
+
+/*****************************************************************************/
+
+int
+_ecore_config_ipc_ecore_init(const char *pipe_name, void **data)
+{
+   Ecore_Ipc_Server  **server;
+   struct stat         st;
+   char               *p;
+   int                 port;
+   char                socket[PATH_MAX];
+
+   server = (Ecore_Ipc_Server **) data;
+   port = 0;
+   if (!server)
+      return ECORE_CONFIG_ERR_FAIL;
+
+/*  if(*server)
+      return ECORE_CONFIG_ERR_IGNORED; */
+
+   ecore_init();
+   if (ecore_ipc_init() < 1)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   if ((p = getenv("HOME")))
+     {                         /* debug-only ### FIXME */
+       int                 stale;
+
+       stale = 1;
+       while (stale)
+         {
+            snprintf(socket, PATH_MAX, "%s/.ecore/%s/%d", p, pipe_name, port);
+
+            if (!stat(socket, &st))
+              {
+                 E(0, "IPC/eCore: pipe \"%s\" already exists!?\n", socket);
+/*      if(unlink(buf))
+       E(0,"IPC/eCore: could not remove pipe \"%s\": %d\n",buf,errno); }}*/
+                 port++;
+              }
+            else
+              {
+                 stale = 0;
+              }
+         }
+     }
+   *server = ecore_ipc_server_add(ECORE_IPC_LOCAL_USER, pipe_name, port, NULL);
+   ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD,
+                          _ecore_config_ipc_client_add, server);
+   ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DEL,
+                          _ecore_config_ipc_client_del, server);
+   ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_DATA,
+                          _ecore_config_ipc_client_sent, server);
+
+   if (server)
+     {
+       E(1, "IPC/eCore: Server is listening on %s.\n", pipe_name);
+     }
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+int
+_ecore_config_ipc_ecore_exit(void **data)
+{
+   int                 ret;
+   Ecore_Ipc_Server  **server;
+
+   ret = ECORE_CONFIG_ERR_SUCC;
+   server = (Ecore_Ipc_Server **) data;
+
+   if (!server)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   if (*server)
+     {
+       ecore_ipc_server_del(*server);
+       *server = NULL;
+     }
+
+   ecore_ipc_shutdown();
+
+   return ret;
+}
+
+/*****************************************************************************/
+
+int
+_ecore_config_ipc_ecore_poll(void **data)
+{
+   Ecore_Ipc_Server  **server;
+
+   server = (Ecore_Ipc_Server **) data;
+
+   if (!server)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   ecore_main_loop_iterate();
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+/*****************************************************************************/
diff --git a/src/lib/ecore_config/ecore_config_ipc_main.c b/src/lib/ecore_config/ecore_config_ipc_main.c
new file mode 100644 (file)
index 0000000..5d6a18a
--- /dev/null
@@ -0,0 +1,279 @@
+/* ############## bad */
+#define HAVE_EVAS2
+
+#include <signal.h>
+#include <dlfcn.h>
+#include <stdio.h>
+#include <glob.h>
+#include <sys/param.h>
+#include <limits.h>
+#include <string.h>
+#include <stdlib.h>            /* malloc(), free() */
+
+#include "Ecore.h"
+#include "Ecore_Config.h"
+#include "ecore_config_util.h"
+#include "ecore_config_ipc.h"
+
+#include "config.h"
+#include "ecore_config_private.h"
+
+static Ecore_Config_Server *__ecore_config_servers;
+Ecore_Timer *ipc_timer = NULL;
+
+Ecore_Config_Server *
+_ecore_config_server_convert(void *srv)
+{
+   Ecore_Config_Server *srv_tmp;
+
+   srv_tmp = __ecore_config_servers;
+   while (srv_tmp)
+     {
+       if (srv_tmp->server == srv)
+         return srv_tmp;
+       srv_tmp = srv_tmp->next;
+     }
+
+   return __ecore_config_server_global;
+}
+
+/*****************************************************************************/
+/* INTERFACE FOR IPC MODULES */
+/*****************************/
+
+char               *
+_ecore_config_ipc_prop_list(Ecore_Config_Server * srv, const long serial)
+{
+   Ecore_Config_Bundle *theme;
+   Ecore_Config_Prop  *e;
+   estring            *s;
+   int                 f;
+
+   theme = ecore_config_bundle_by_serial_get(srv, serial);
+   e = theme ? theme->data : NULL;
+   s = estring_new(8192);
+   f = 0;
+   while (e)
+     {
+       /* ignore system properties in listings, unless they have been overridden */
+       if (e->flags & ECORE_CONFIG_FLAG_SYSTEM && !(e->flags & ECORE_CONFIG_FLAG_MODIFIED))
+         {
+            e = e->next;
+            continue;
+         }
+       estring_appendf(s, "%s%s: %s", f ? "\n" : "", e->key,
+                       ecore_config_type_get(e));
+       if (e->flags & ECORE_CONFIG_FLAG_BOUNDS)
+         {
+            if (e->type == ECORE_CONFIG_FLT)
+               estring_appendf(s, ", range %le..%le",
+                               (float)e->lo / ECORE_CONFIG_FLOAT_PRECISION,
+                               (float)e->hi / ECORE_CONFIG_FLOAT_PRECISION);
+            else
+               estring_appendf(s, ", range %d..%d", e->lo, e->hi);
+         }
+       if (e->type == ECORE_CONFIG_THM)
+          estring_appendf(s, ", group %s", e->data ? e->data : "Main");
+       f = 1;
+       e = e->next;
+     }
+
+   return estring_disown(s);
+}
+
+char               *
+_ecore_config_ipc_prop_desc(Ecore_Config_Server * srv, const long serial,
+                           const char *key)
+{
+#ifdef HAVE_EVAS2
+   Ecore_Config_Bundle *theme;
+   Ecore_Config_Prop  *e;
+
+   theme = ecore_config_bundle_by_serial_get(srv, serial);
+   e = ecore_config_get(key);
+
+   if (e)
+     {
+       estring            *s = estring_new(512);
+
+       estring_appendf(s, "%s: %s", e->key, ecore_config_type_get(e));
+       if (e->flags & ECORE_CONFIG_FLAG_BOUNDS)
+          estring_appendf(s, ", range %d..%d", e->lo, e->hi);
+       return estring_disown(s);
+     }
+#endif
+   return strdup("<undefined>");
+}
+
+char               *
+_ecore_config_ipc_prop_get(Ecore_Config_Server * srv, const long serial,
+                          const char *key)
+{
+#ifdef HAVE_EVAS2
+   char               *ret;
+   Ecore_Config_Bundle *theme;
+
+   ret = NULL;
+   theme = ecore_config_bundle_by_serial_get(srv, serial);
+   if ((ret = ecore_config_as_string_get( /*theme, */ key)))
+      return ret;
+#endif
+   return strdup("<undefined>");
+}
+
+int
+_ecore_config_ipc_prop_set(Ecore_Config_Server * srv, const long serial,
+                          const char *key, const char *val)
+{
+#ifdef HAVE_EVAS2
+   int                 ret;
+   Ecore_Config_Bundle *theme;
+
+   theme = ecore_config_bundle_by_serial_get(srv, serial);
+   ret = ecore_config_set(key, (char *)val);
+   E(1, "ipc.prop.set(%s->%s,\"%s\") => %d\n", theme ? theme->identifier : "",
+     key, val, ret);
+   return ret;
+#else
+   return ECORE_CONFIG_ERR_NOTSUPP;
+#endif
+}
+
+/*****************************************************************************/
+
+char               *
+_ecore_config_ipc_bundle_list(Ecore_Config_Server * srv)
+{
+   Ecore_Config_Bundle *ns;
+   estring            *s;
+   int                 f;
+
+   ns = ecore_config_bundle_1st_get(srv);
+   s = estring_new(8192);
+   f = 0;
+   if (!ns)
+      return strdup("<no_bundles_created>");
+
+   while (ns)
+     {
+       estring_appendf(s, "%s%d: %s", f ? "\n" : "",
+                       ecore_config_bundle_serial_get(ns),
+                       ecore_config_bundle_label_get(ns));
+       f = 1;
+       ns = ecore_config_bundle_next_get(ns);
+     }
+
+   return estring_disown(s);
+}
+
+int
+_ecore_config_ipc_bundle_new(Ecore_Config_Server * srv, const char *label)
+{
+   if (ecore_config_bundle_new(srv, label))
+      return ECORE_CONFIG_ERR_SUCC;
+   return ECORE_CONFIG_ERR_FAIL;
+}
+
+char               *
+_ecore_config_ipc_bundle_label_get(Ecore_Config_Server * srv, const long serial)
+{
+   Ecore_Config_Bundle *ns;
+   char               *label;
+
+   ns = ecore_config_bundle_by_serial_get(srv, serial);
+   label = ecore_config_bundle_label_get(ns);
+   return strdup(label ? label : "<no such bundle>");
+}
+
+int
+_ecore_config_ipc_bundle_label_set(Ecore_Config_Server * srv, const long serial,
+                                  const char *label)
+{
+   Ecore_Config_Bundle *ns;
+
+   ns = ecore_config_bundle_by_serial_get(srv, serial);
+   if (!(ns->identifier = malloc(sizeof(label))))
+      return ECORE_CONFIG_ERR_OOM;
+   memcpy(ns->identifier, label, sizeof(label));
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+long
+_ecore_config_ipc_bundle_label_find(Ecore_Config_Server * srv,
+                                   const char *label)
+{
+   Ecore_Config_Bundle *ns;
+
+   ns = ecore_config_bundle_by_label_get(srv, label);
+   return ns ? ecore_config_bundle_serial_get(ns) : -1;
+}
+
+static int
+_ecore_config_ipc_poll(void *data __UNUSED__)
+{
+   Ecore_Config_Server *s;
+
+   s = __ecore_config_servers;
+   while (s)
+     {
+       _ecore_config_ipc_ecore_poll(&s->server);
+        s = s->next;
+     }
+
+   return 1;
+}
+
+int
+_ecore_config_ipc_exit(void)
+{
+   Ecore_Config_Server *l;
+
+   if (ipc_timer)
+      ecore_timer_del(ipc_timer);
+
+   l = __ecore_config_servers;
+   while (l)
+     {
+       _ecore_config_ipc_ecore_exit(&l->server);
+        if (l->name)
+          free(l->name);
+       l = l->next;
+     }
+
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+Ecore_Config_Server *
+_ecore_config_ipc_init(const char *pipe_name)
+{
+   int                 ret;
+   Ecore_Config_Server *list;
+   Ecore_Config_Server *ret_srv;
+
+   list = NULL;
+   ret_srv = NULL;
+   list = NULL;
+
+   list = malloc(sizeof(Ecore_Config_Server));
+   memset(list, 0, sizeof(Ecore_Config_Server));
+   if ((ret = _ecore_config_ipc_ecore_init(pipe_name, &list->server)) != ECORE_CONFIG_ERR_SUCC)
+     {
+       E(2, "_ecore_config_ipc_init: failed to register %s, code %d\n",
+         pipe_name, ret);
+     }
+
+   E(2, "_ecore_config_ipc_init: registered \"%s\"...\n", pipe_name);
+
+   list->name = strdup(pipe_name);
+   list->next = __ecore_config_servers;
+
+   __ecore_config_servers = list;
+   if (!ret_srv)
+     ret_srv = list;
+
+   if (!ipc_timer)
+     ipc_timer = ecore_timer_add(100, _ecore_config_ipc_poll, NULL);
+   
+   return ret_srv;
+}
+/*****************************************************************************/
diff --git a/src/lib/ecore_config/ecore_config_private.h b/src/lib/ecore_config/ecore_config_private.h
new file mode 100644 (file)
index 0000000..3beee54
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ECORE_CONFIG_PRIVATE_H
+# define _ECORE_CONFIG_PRIVATE_H
+
+/* debug */
+extern int               DEBUG;
+#ifdef __sgi
+# define D
+# define E
+#else
+# define D(fmt,args...) do { if(DEBUG>=0) fprintf(stderr,fmt,## args); } while(0);
+# define E(lvl,args...) do { if(DEBUG>=(lvl)) fprintf(stderr,## args); } while(0)
+#endif
+
+typedef struct _Ecore_Config_DB_File Ecore_Config_DB_File;
+
+int                   _ecore_config_mod_init(const char *pipe_name, void **data);
+int                   _ecore_config_mod_exit(void **data);
+int                   _ecore_config_mod_poll(void **data);
+
+Ecore_Config_DB_File *_ecore_config_db_open_read(const char *file);
+Ecore_Config_DB_File *_ecore_config_db_open_write(const char *file);
+void                  _ecore_config_db_close(Ecore_Config_DB_File *db);
+char                **_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int *num_ret);
+Ecore_Config_Type     _ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key);
+int                   _ecore_config_db_read(Ecore_Config_DB_File *db, const char *key);
+void                  _ecore_config_db_write(Ecore_Config_DB_File *db, Ecore_Config_Prop *e);
+
+int                   _ecore_config_boolean_get(Ecore_Config_Prop *e);
+char                 *_ecore_config_string_get(Ecore_Config_Prop *e);
+long                  _ecore_config_int_get(Ecore_Config_Prop *e);
+int                   _ecore_config_argb_get(Ecore_Config_Prop *e, int *a, int *r,
+                                         int *g, int *b);
+char                 *_ecore_config_argbstr_get(Ecore_Config_Prop *e);
+long                  _ecore_config_argbint_get(Ecore_Config_Prop *e);
+float                 _ecore_config_float_get(Ecore_Config_Prop *e);
+char                 *_ecore_config_theme_get(Ecore_Config_Prop *e);
+
+int                   _ecore_config_ipc_ecore_init(const char *pipe_name, void **data);
+int                   _ecore_config_ipc_ecore_exit(void **data);
+int                   _ecore_config_ipc_ecore_poll(void **data);
+
+#include "ecore_private.h"
+
+#endif
diff --git a/src/lib/ecore_config/ecore_config_storage.c b/src/lib/ecore_config/ecore_config_storage.c
new file mode 100644 (file)
index 0000000..104dd18
--- /dev/null
@@ -0,0 +1,172 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "Ecore_Config.h"
+#include "ecore_config_private.h"
+
+/**
+ * Loads the default configuration.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_NODATA
+ *          is returned if the file cannot be loaded.
+ * @ingroup Ecore_Config_File_Group
+ */
+EAPI int
+ecore_config_load(void)
+{
+   char                file[PATH_MAX];
+
+   if (!__ecore_config_app_name)
+     return ECORE_CONFIG_ERR_FAIL;
+
+   snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
+           __ecore_config_app_name);
+   return ecore_config_file_load(file);
+}
+
+/**
+ * Saves the current configuration to the default file.
+ * @return  @c ECORE_CONFIG_ERR_SUCC is returned on success.
+ *          @c ECORE_CONFIG_ERR_FAIL is returned if the data cannot be
+ *          saved.
+ * @ingroup Ecore_Config_File_Group
+ */
+EAPI int
+ecore_config_save(void)
+{
+   char                file[PATH_MAX];
+
+   if (!__ecore_config_app_name)
+     return ECORE_CONFIG_ERR_FAIL;
+
+   snprintf(file, PATH_MAX, "%s/.e/apps/%s/config.eet", getenv("HOME"),
+           __ecore_config_app_name);
+   return ecore_config_file_save(file);
+}
+
+/**
+ * Load the given configuration file to the local configuration.
+ * @param   file Name of the file to load.
+ * @return  @c ECORE_CONFIG_ERR_SUCC on success.  @c ECORE_CONFIG_ERR_NODATA
+ *          is returned if the file cannot be loaded.
+ * @ingroup Ecore_Config_File_Group
+ */
+EAPI int
+ecore_config_file_load(const char *file)
+{
+   Ecore_Config_DB_File  *db;
+   char                 **keys;
+   int                    key_count;
+   int                    x;
+   // double                 ftmp;     UNUSED
+   // int                    pt;       UNUSED
+   // int                    itmp;     UNUSED
+   // Ecore_Config_Type      type;     UNUSED
+   char                   *data;
+
+   db = NULL;
+   data = NULL;
+
+   db = _ecore_config_db_open_read(file);
+   if (!db)
+     {
+       E(0, "Cannot open database from file %s!\n", file);
+       return ECORE_CONFIG_ERR_NODATA;
+     }
+   key_count = 0;   
+   keys = _ecore_config_db_keys_get(db, &key_count);
+   if (keys)
+     {
+       for (x = 0; x < key_count; x++)
+         {
+           _ecore_config_db_read(db, keys[x]);
+         }
+     }
+   _ecore_config_db_close(db);
+   if (keys)
+     {
+       for (x = 0; x < key_count; x++)
+         {
+            free(keys[x]);
+         }
+       free(keys);
+     }
+   return ECORE_CONFIG_ERR_SUCC;
+}
+
+static void
+_ecore_config_recurse_mkdir(const char *file)
+{
+   char               *file_ptr;
+   char               *file_tmp;
+   struct stat         status;
+
+   file_tmp = strdup(file);
+   file_ptr = file_tmp + strlen(file_tmp);
+   while (*file_ptr != '/' && file_ptr > file_tmp)
+      file_ptr--;
+   *file_ptr = '\0';
+
+   if ((file_tmp[0] != 0) && stat(file_tmp, &status))
+     {
+       _ecore_config_recurse_mkdir(file_tmp);
+       mkdir(file_tmp, S_IRUSR | S_IWUSR | S_IXUSR);
+     }
+   free(file_tmp);
+}
+
+/**
+ * Saves the local configuration to the given file.
+ * @param   file Name of the file to save to.
+ * @return  @c ECORE_CONFIG_ERR_SUCC is returned on success.
+ *          @c ECORE_CONFIG_ERR_FAIL is returned if the data cannot be
+ *          saved.
+ * @ingroup Ecore_Config_File_Group
+ */
+EAPI int
+ecore_config_file_save(const char *file)
+{
+   Ecore_Config_Prop    *next;
+   Ecore_Config_DB_File *db;
+   struct stat           status;
+
+   next = __ecore_config_bundle_local->data;
+   db = NULL;
+
+   /* if file does not exist check to see if the dirs exist, creating if not */
+   if (stat(file, &status))
+      _ecore_config_recurse_mkdir(file);
+
+   db = _ecore_config_db_open_write(file);
+   if (!db)
+     {
+       E(0, "Cannot open database from file %s!\n", file);
+       return ECORE_CONFIG_ERR_FAIL;
+     }
+
+   while (next)
+     {
+       /* let the config_db deal with this
+        * handyande: hmm, not sure that it ever does - reinstating until
+        * further discussions satisfy me!
+        */
+       if (!(next->flags & ECORE_CONFIG_FLAG_MODIFIED) || next->flags & ECORE_CONFIG_FLAG_CMDLN)
+         {
+            next = next->next;
+            continue;
+         }
+
+       _ecore_config_db_write(db, next);
+
+       next = next->next;
+     }
+
+   _ecore_config_db_close(db);
+   return ECORE_CONFIG_ERR_SUCC;
+}
diff --git a/src/lib/ecore_config/ecore_config_util.c b/src/lib/ecore_config/ecore_config_util.c
new file mode 100644 (file)
index 0000000..6ee17c3
--- /dev/null
@@ -0,0 +1,123 @@
+/* azundris */
+
+#include <sys/types.h>
+#include <stdlib.h>            /* malloc(), free() */
+#include <string.h>            /* str...() */
+
+#include <stdarg.h>            /* varargs in sprintf/appendf */
+
+#include "ecore_private.h"
+
+#include "Ecore_Config.h"
+#include "ecore_config_util.h"
+
+#include "ecore_config_private.h"
+
+#define CHUNKLEN 4096
+
+/*****************************************************************************/
+/* STRINGS */
+/***********/
+
+estring            *
+estring_new(int size)
+{
+   estring            *e = malloc(sizeof(estring));
+
+   if (e)
+     {
+       memset(e, 0, sizeof(estring));
+       if ((size > 0) && (e->str = malloc(size)))
+          e->alloc = size;
+     }
+   return e;
+}
+
+char               *
+estring_disown(estring * e)
+{
+   if (e)
+     {
+       char               *r = e->str;
+
+       free(e);
+       return r;
+     }
+   return NULL;
+}
+
+int
+estring_appendf(estring * e, const char *fmt, ...)
+{
+   int      need;
+   va_list  ap;
+   char    *p;
+
+   if (!e)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   if (!e->str)
+     {
+       e->used = e->alloc = 0;
+       if (!(e->str = (char *)malloc(e->alloc = CHUNKLEN)))
+          return ECORE_CONFIG_ERR_OOM;
+     }
+
+   va_start(ap, fmt);
+   need = vsnprintf(NULL, 0, fmt, ap);
+   va_end(ap);
+
+   if (need >= (e->alloc - e->used))
+     {
+       e->alloc = e->used + need + (CHUNKLEN - (need % CHUNKLEN));
+
+       if (!(p = (char *)realloc(e->str, e->alloc)))
+          {
+            free(e->str);
+            e->alloc = e->used = 0;
+            return ECORE_CONFIG_ERR_OOM;
+          }
+       e->str = p;
+     }
+
+   va_start(ap, fmt);
+   need = vsnprintf(e->str + e->used, e->alloc - e->used, fmt, ap);
+   va_end(ap);
+
+   return e->used += need;
+}
+
+int
+esprintf(char **result, const char *fmt, ...)
+{
+   va_list   ap;
+   size_t    need;
+   char     *n;
+
+   if (!result)
+      return ECORE_CONFIG_ERR_FAIL;
+
+   va_start(ap, fmt);
+   need = vsnprintf(NULL, 0, fmt, ap) + 1;
+   va_end(ap);
+   n = malloc(need + 1);
+
+   if (n)
+     {
+       va_start(ap, fmt);
+       need = vsnprintf(n, need, fmt, ap);
+       va_end(ap);
+
+       n[need] = 0;
+
+       if(*result)
+          free(result);
+       *result = n;
+
+       return need;
+     }
+
+   return ECORE_CONFIG_ERR_OOM;
+}
+
+/*****************************************************************************/
diff --git a/src/lib/ecore_config/ecore_config_util.h b/src/lib/ecore_config/ecore_config_util.h
new file mode 100644 (file)
index 0000000..5bee9d6
--- /dev/null
@@ -0,0 +1,14 @@
+#define TIMER_STOP 0
+#define TIMER_CONT 1
+
+typedef struct _estring
+{
+   char               *str;
+   int                 alloc, used;
+} estring;
+
+estring            *estring_new(int size);
+char               *estring_disown(estring * e);
+int                 estring_appendf(estring * e, const char *fmt, ...);
+
+int                 esprintf(char **result, const char *fmt, ...);
diff --git a/src/lib/ecore_desktop/.cvsignore b/src/lib/ecore_desktop/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_desktop/Ecore_Desktop.h b/src/lib/ecore_desktop/Ecore_Desktop.h
new file mode 100644 (file)
index 0000000..825e4e9
--- /dev/null
@@ -0,0 +1,281 @@
+#ifndef _ECORE_DESKTOP_H
+# define _ECORE_DESKTOP_H
+
+#include <Ecore_Data.h>
+#include <sys/types.h>
+
+/**
+ * @file Ecore_Desktop.h
+ * @brief The file that provides the freedesktop.org desktop, icon, and menu
+ *        functions.
+ *
+ * This header provides the Ecore_Desktop freedesktop.org desktop, icon, 
+ * and menu handling functions, as well as ancillary functions for searching
+ * freedesktop.org specific paths.  Other freedesktop.org specifications
+ * make use of similar files, paths, and icons, implementors can use / extend
+ * this code to suit.
+ *
+ * Ecore_Desktop is not for every freedesktop.org specification, just those that
+ * are associated with .desktop files.
+ *
+ * For path searching details, see @ref Ecore_Desktop_Paths_Group.
+ *
+ * For desktop file details, see @ref Ecore_Desktop_Main_Group.
+ *
+ * For icon theme details, see @ref Ecore_Desktop_Icon_Group.
+ *
+ * For menu file details, see @ref Ecore_Desktop_Menu_Group.
+ */
+
+struct _Ecore_Desktop
+{
+   /* FIXME: Do the ECORE_MAGIC thing here.
+    * While this might help with segfaults and such, I think it's a waste of 
+    * space and cycles that just covers up bugs.  On the other hand, it makes 
+    * for a more robust library, and it's used everywhere else in ecore.
+    */
+   Ecore_Hash         *data, *group, *Categories, *OnlyShowIn, *NotShowIn, *MimeTypes, *Actions;
+   char               *original_path;
+   char               *original_lang;
+   char               *eap_name;
+   char               *name;
+   char               *generic;
+   char               *comment;
+   char               *type;
+   char               *categories;
+   char               *exec;
+   char               *exec_params;
+   char               *icon_class;
+   char               *icon_theme;
+   char               *icon;
+   char               *icon_path;
+   time_t              icon_time;      /* For checking if the icon cache is valid. */
+   char               *path;
+   char               *URL;
+   char               *file;
+   char               *deletiondate;
+   char               *window_class;   /* window class */
+   char               *window_name;    /* window name */
+   char               *window_title;   /* window title */
+   char               *window_role;    /* window role */
+   unsigned char       wait_exit:1;    /* wait for app to exit before execing next */
+   unsigned char       startup:1;
+   unsigned char       hidden:1;
+   unsigned char       no_display:1;
+   unsigned char       allocated:1;
+   unsigned char       ondisk:1;
+   unsigned char       hard_icon:1;
+   /* Actually calling this st_mtime causes compile issues, must be some strange macros at work. */
+   time_t              mtime;  /* For checking if the cache is valid. */
+};
+typedef struct _Ecore_Desktop Ecore_Desktop;
+
+struct _Ecore_Desktop_Icon_Theme
+{
+   Ecore_Hash         *data, *group;
+   Ecore_List         *Inherits;
+   Ecore_List         *Directories;
+   char               *path;
+   char               *name;
+   char               *comment;
+   char               *example;
+   char               *example_path;
+   char               *inherits;
+   char               *directories;
+   int                 hidden;
+   unsigned char       hicolor:1;
+   /* Actually calling this st_mtime causes compile issues, must be some strange macros at work. */
+   time_t              mtime;  /* For checking if the cache is valid. */
+   double              last_checked;
+};
+typedef struct _Ecore_Desktop_Icon_Theme Ecore_Desktop_Icon_Theme;
+
+struct _Ecore_Desktop_Icon_Theme_Directory
+{
+   Ecore_Hash         *icons;
+   char               *path;
+   char               *full_path;
+   char               *type;
+   int                 size, minimum, maximum, threshold;
+};
+typedef struct _Ecore_Desktop_Icon_Theme_Directory
+   Ecore_Desktop_Icon_Theme_Directory;
+
+enum _Ecore_Desktop_Paths_Type
+{
+   ECORE_DESKTOP_PATHS_CONFIG = 0,
+   ECORE_DESKTOP_PATHS_MENUS = 1,
+   ECORE_DESKTOP_PATHS_DIRECTORIES = 2,
+   ECORE_DESKTOP_PATHS_DESKTOPS = 3,
+   ECORE_DESKTOP_PATHS_ICONS = 4,
+   ECORE_DESKTOP_PATHS_KDE_LEGACY = 5,
+   ECORE_DESKTOP_PATHS_XSESSIONS = 6,
+   ECORE_DESKTOP_PATHS_MAX = 7
+};
+typedef enum _Ecore_Desktop_Paths_Type Ecore_Desktop_Paths_Type;
+
+enum _Ecore_Desktop_Tree_Element_Type
+{
+   ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL = 0,
+   ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING = 1,
+   ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE = 2,
+   ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH = 3
+};
+typedef enum _Ecore_Desktop_Tree_Element_Type Ecore_Desktop_Tree_Element_Type;
+
+struct _Ecore_Desktop_Tree_Element
+{
+   void               *element;        /* A pointer to the element. */
+   Ecore_Desktop_Tree_Element_Type type;       /* The type of the element. */
+};
+typedef struct _Ecore_Desktop_Tree_Element Ecore_Desktop_Tree_Element;
+
+typedef struct _Ecore_Desktop_Tree Ecore_Desktop_Tree;
+struct _Ecore_Desktop_Tree
+{
+   Ecore_Desktop_Tree_Element *elements;       /* An array of elements. */
+   int                 size;   /* The size of the array. */
+   char              **buffers;        /* An array of pointers to the bits of data. */
+   int                 buffers_size;   /* The size of the array. */
+   Ecore_Desktop_Tree *parent; /* Parent if this is a child. */
+};
+
+struct _Ecore_Desktop_Instrumentation
+{
+   double desktops_time;
+   double desktops_in_cache_time;
+   double desktops_not_found_time;
+   double icons_time;
+   double icons_in_cache_time;
+   double icons_not_found_time;
+   int desktops;
+   int desktops_in_cache;
+   int desktops_not_found;
+   int icons;
+   int icons_in_cache;
+   int icons_not_found;
+};
+
+
+# ifdef __cplusplus
+extern              "C"
+{
+# endif
+
+   /* Function Prototypes */
+   EAPI int            ecore_desktop_paths_init(void);
+   EAPI void           ecore_desktop_paths_extras_clear(void);
+   EAPI void           ecore_desktop_paths_prepend_user(Ecore_Desktop_Paths_Type
+                                                       type, const char *paths);
+   EAPI void          
+      ecore_desktop_paths_prepend_system(Ecore_Desktop_Paths_Type type,
+                                        const char *paths);
+   EAPI void           ecore_desktop_paths_append_user(Ecore_Desktop_Paths_Type
+                                                      type, const char *paths);
+   EAPI void          
+      ecore_desktop_paths_append_system(Ecore_Desktop_Paths_Type type,
+                                       const char *paths);
+   EAPI void           ecore_desktop_paths_regen(void);
+   char               *ecore_desktop_paths_file_find(Ecore_List * paths,
+                                                    const char *file, int sub,
+                                                    int (*func) (void
+                                                                 *data,
+                                                                 const char
+                                                                 *path),
+                                                    void *data);
+   EAPI int            ecore_desktop_paths_for_each(Ecore_Desktop_Paths_Type
+                                                   type,
+                                                   Ecore_For_Each function,
+                                                   void *user_data);
+   char               *ecore_desktop_paths_recursive_search(const char *path,
+                                                           const char *file,
+                                                           int sub,
+                                                           int (*dir_func)
+                                                           (void *data,
+                                                            const char *path),
+                                                           int (*func) (void
+                                                                        *data,
+                                                                        const
+                                                                        char
+                                                                        *path),
+                                                           void *data);
+   EAPI int            ecore_desktop_paths_shutdown(void);
+
+   Ecore_Hash         *ecore_desktop_paths_to_hash(const char *paths);
+   Ecore_List         *ecore_desktop_paths_to_list(const char *paths);
+
+   EAPI int            ecore_desktop_init(void);
+   EAPI int            ecore_desktop_shutdown(void);
+   Ecore_Hash         *ecore_desktop_ini_get(const char *file);
+   Ecore_Desktop      *ecore_desktop_get(const char *file, const char *lang);
+   void                ecore_desktop_save(Ecore_Desktop * desktop);
+   EAPI Ecore_List    *ecore_desktop_get_command(Ecore_Desktop * desktop,
+                                                Ecore_List * files, int fill);
+   EAPI char          *ecore_desktop_merge_command(char *exec, char *params);
+   void                ecore_desktop_destroy(Ecore_Desktop * desktop);
+
+   EAPI int            ecore_desktop_icon_init(void);
+   EAPI int            ecore_desktop_icon_shutdown(void);
+   EAPI char          *ecore_desktop_icon_find(const char *icon,
+                                              const char *icon_size,
+                                              const char *icon_theme);
+
+   Ecore_Hash         *ecore_desktop_icon_theme_list(void);
+   Ecore_Desktop_Icon_Theme *ecore_desktop_icon_theme_get(const char *file,
+                                                         const char *lang);
+   void                ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme
+                                                       * icon_theme);
+
+   EAPI void          
+      ecore_desktop_menu_for_each(void (*func)
+                                 (const char *name, const char *path, const char *directory, Ecore_Hash * apps));
+   Ecore_Desktop_Tree *ecore_desktop_menu_get(char *file);
+
+   Ecore_Desktop_Tree *ecore_desktop_tree_new(char *buffer);
+   Ecore_Desktop_Tree *ecore_desktop_tree_add(Ecore_Desktop_Tree * tree,
+                                             const char *element);
+   void                ecore_desktop_tree_track(Ecore_Desktop_Tree * tree,
+                                               void *element);
+   Ecore_Desktop_Tree *ecore_desktop_tree_extend(Ecore_Desktop_Tree * tree,
+                                                const char *element);
+   Ecore_Desktop_Tree *ecore_desktop_tree_insert(Ecore_Desktop_Tree * tree,
+                                                int before, void *element,
+                                                Ecore_Desktop_Tree_Element_Type
+                                                type);
+   Ecore_Desktop_Tree *ecore_desktop_tree_merge(Ecore_Desktop_Tree * tree,
+                                               int before,
+                                               Ecore_Desktop_Tree * element);
+   Ecore_Desktop_Tree *ecore_desktop_tree_add_child(Ecore_Desktop_Tree * tree,
+                                                   Ecore_Desktop_Tree *
+                                                   element);
+   Ecore_Desktop_Tree *ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree,
+                                                  Ecore_Hash * element);
+   void                ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree,
+                                                int element);
+   int                 ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree,
+                                               char *element);
+   int                 ecore_desktop_tree_foreach(Ecore_Desktop_Tree * tree,
+                                                 int level,
+                                                 int (*func) (const void *data,
+                                                              Ecore_Desktop_Tree
+                                                              * tree,
+                                                              int element,
+                                                              int level),
+                                                 const void *data);
+   void                ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree,
+                                              int level);
+   void                ecore_desktop_tree_del(Ecore_Desktop_Tree * tree);
+
+   Ecore_Desktop_Tree *ecore_desktop_xmlame_new(char *buffer);
+   Ecore_Desktop_Tree *ecore_desktop_xmlame_get(char *file);
+
+   char               *ecore_desktop_home_get(void);
+
+   EAPI void           ecore_desktop_instrumentation_reset(void);
+   EAPI void           ecore_desktop_instrumentation_print(void);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/src/lib/ecore_desktop/Makefile.am b/src/lib/ecore_desktop/Makefile.am
new file mode 100644 (file)
index 0000000..99ae460
--- /dev/null
@@ -0,0 +1,46 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_file \
+-I$(top_builddir)/src/lib/ecore_desktop \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_file \
+-I$(top_srcdir)/src/lib/ecore_desktop
+
+if BUILD_ECORE_DESKTOP
+
+lib_LTLIBRARIES = libecore_desktop.la
+include_HEADERS = \
+Ecore_Desktop.h
+
+libecore_desktop_la_SOURCES = \
+ecore_desktop.c \
+ecore_desktop_tree.c \
+ecore_desktop_icon.c \
+ecore_desktop_menu.c \
+ecore_desktop_paths.c \
+ecore_desktop_xmlame.c \
+ecore_desktop_private.h
+
+libecore_desktop_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_file/libecore_file.la
+
+libecore_desktop_la_LDFLAGS = -version-info @version_info@
+
+libecore_desktop_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_file/libecore_file.la
+
+endif
+
+EXTRA_DIST = \
+Ecore_Desktop.h \
+ecore_desktop.c \
+ecore_desktop_tree.c \
+ecore_desktop_icon.c \
+ecore_desktop_menu.c \
+ecore_desktop_paths.c \
+ecore_desktop_xmlame.c \
+ecore_desktop_private.h
diff --git a/src/lib/ecore_desktop/ecore_desktop.c b/src/lib/ecore_desktop/ecore_desktop.c
new file mode 100644 (file)
index 0000000..33a52c7
--- /dev/null
@@ -0,0 +1,1195 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
+#include <ctype.h>
+#include <sys/stat.h>
+
+struct _Ecore_Desktop_Instrumentation instrumentation;
+
+extern int          reject_count, not_over_count;
+
+static int          init_count = 0;
+
+static Ecore_Hash  *desktop_cache;
+
+Ecore_Desktop      *_ecore_desktop_get(const char *file, const char *lang);
+void                _ecore_desktop_destroy(Ecore_Desktop * desktop);
+
+#define IFGETDUP(src, key, dst) src = (char *)ecore_hash_get(result->group, key); if (src) dst = strdup(src); else dst = NULL;
+#define IFFREE(src) if (src) free(src);  src = NULL;
+
+/**
+ * @defgroup Ecore_Desktop_Main_Group .desktop file Functions
+ *
+ * Functions that deal with freedesktop.org desktop files.
+ *
+ * This conforms with the freedesktop.org XDG Desktop Entry Specification version 0.9.4
+ */
+
+/**
+ * Get the contents of a .ini style file.
+ *
+ * The Ecore_Hash returned is a two level hash, the first level
+ * is the groups in the file, one per group, keyed by the name 
+ * of that group.  The value of each of those first level hashes
+ * is the second level Ecore_Hash, the contents of each group.
+ *
+ * @param   file Full path to the .ini style file.
+ * @return  An Ecore_Hash of the files contents.
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+Ecore_Hash         *
+ecore_desktop_ini_get(const char *file)
+{
+   Ecore_Hash         *result;
+   FILE               *f;
+   char                buffer[PATH_MAX];
+   Ecore_Hash         *current = NULL;
+
+   result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   if (!result) return NULL;
+
+   f = fopen(file, "r");
+   if (!f)
+     {
+       fprintf(stderr, "ERROR: Cannot Open File %s\n", file);
+       ecore_hash_destroy(result);
+       return NULL;
+     }
+   ecore_hash_free_key_cb_set(result, free);
+   ecore_hash_free_value_cb_set(result, (Ecore_Free_Cb) ecore_hash_destroy);
+   *buffer = '\0';
+#ifdef DEBUG
+   fprintf(stdout, "PARSING INI %s\n", file);
+#endif
+   while (fgets(buffer, sizeof(buffer), f) != NULL)
+     {
+       char               *c;
+       char               *key;
+       char               *value;
+
+       c = buffer;
+       /* Strip preceeding blanks.  Note that \n is treated differently from the other white space. */
+        while ((*c == ' ') || (*c == '\t'))
+               c++;
+       /* Skip blank lines and comments */
+       if ((*c == '\0') || (*c == '\n') || (*c == '#')) continue;
+       if (*c == '[')  /* New group. */
+         {
+            key = c + 1;
+            while ((*c != ']') && (*c != '\n') && (*c != '\0'))
+               c++;
+            *c++ = '\0';
+            current = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+            if (current)
+              {
+                 ecore_hash_free_key_cb_set(current, free);
+                 ecore_hash_free_value_cb_set(current, free);
+                 ecore_hash_set(result, strdup(key), current);
+#ifdef DEBUG
+                 fprintf(stdout, "  GROUP [%s]\n", key);
+#endif
+              }
+         }
+       else if (current)       /* key=value pair of current group. */
+         {
+            char               *tv;
+
+            key = c;
+            /* Find trailing blanks or =. */
+            while ((*c != '=') && (*c != ' ') && (*c != '\t') && (*c != '\n') && (*c != '\0'))
+               c++;
+            if (*c != '=')     /* Find equals. */
+              {
+                 *c++ = '\0';
+                 while ((*c != '=') && (*c != '\n') && (*c != '\0'))
+                    c++;
+              }
+            if (*c == '=')     /* Equals found. */
+              {
+                 *c++ = '\0';
+                 /* Strip preceeding blanks.  Note that \n is treated differently from the other white space. */
+                 while ((*c == ' ') || (*c == '\t'))
+                    c++;
+                 value = c;
+                 /* Find end. */
+                 while ((*c != '\n') && (*c != '\0'))
+                    c++;
+                 *c++ = '\0';
+                 /* FIXME: should strip space at end, then unescape value. */
+                 tv = ecore_hash_remove(current, key);
+                 if (tv) free(tv);
+                 if (value[0] != '\0')
+                   ecore_hash_set(current, strdup(key), strdup(value));
+#ifdef DEBUG
+                 fprintf(stdout, "    %s=%s\n", key, value);
+#endif
+              }
+         }
+
+     }
+
+   fclose(f);
+   return result;
+}
+
+/**
+ * Get the contents of a .desktop file.
+ *
+ * Use ecore_desktop_destroy() to free this structure.
+ *
+ * @param   file Full path to the .desktop file.
+ * @param   lang Language to use, or NULL for default.
+ * @return  An Ecore_Desktop containing the files contents.
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+Ecore_Desktop      *
+ecore_desktop_get(const char *file, const char *lang)
+{
+   Ecore_Desktop      *result;
+
+   result = _ecore_desktop_get(file, lang);
+   if (result)
+     {
+       /* Kill the hash, it takes up way too much memory. */
+       if (result->data)
+         {
+            ecore_hash_destroy(result->data);
+            result->data = NULL;
+         }
+       result->group = NULL;
+     }
+
+   return result;
+}
+
+Ecore_Desktop      *
+_ecore_desktop_get(const char *file, const char *lang)
+{
+   Ecore_Desktop      *result;
+   struct stat         st;
+   char               *value;
+   int                 stated = 0;
+   int                 in_cache = 0;
+   double              begin;
+
+   begin = ecore_time_get();
+   result = (Ecore_Desktop *) ecore_hash_get(desktop_cache, (char *)file);
+   /* Check if the cache is still valid. */
+   if (result)
+     {
+        in_cache = 1;
+       if (stat(result->original_path, &st) >= 0)
+         {
+            if (st.st_mtime > result->mtime)
+              {
+                 ecore_hash_remove(desktop_cache, result->original_path);
+                 result = NULL;
+              }
+            stated = 1;
+         }
+     }
+   /* Not in cache, get it the slow way. */
+   if (!result)
+     {
+       result = calloc(1, sizeof(Ecore_Desktop));
+       if (!result) goto error;
+       result->ondisk = 1;
+       result->original_path = strdup(file);
+       if (lang)
+         result->original_lang = strdup(lang);
+       result->data = ecore_desktop_ini_get(result->original_path);
+       if (!result->data)
+         {
+            IFFREE(result->original_path);
+            IFFREE(result->original_lang);
+            free(result);
+            result = NULL;
+            goto error;
+         }
+       /* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
+       if ((stated) || (stat(result->original_path, &st) >= 0))
+         result->mtime = st.st_mtime;
+       result->group = ecore_hash_get(result->data, "Desktop Entry");
+       if (!result->group)
+         result->group = ecore_hash_get(result->data, "KDE Desktop Entry");
+       /* This is a "Desktop" file, probably an application. */
+       if (result->group)
+         {
+            int                 size = 0;
+
+            value = (char *) ecore_file_file_get(result->original_path);
+            /* Figure out the eap_name. */
+            if (value)
+              {
+                 char *temp;
+
+                 temp = strrchr(value, '.');
+
+                 if (temp) *temp = '\0';
+                 result->eap_name = malloc(strlen(value) + 5);
+                 if (result->eap_name)
+                   sprintf(result->eap_name, "%s.edj", value);
+                 if (temp) *temp = '.';
+              }
+
+            IFGETDUP(value, "Name", result->name);
+            IFGETDUP(value, "GenericName", result->generic);
+            IFGETDUP(value, "Comment", result->comment);
+            IFGETDUP(value, "Type", result->type);
+
+            IFGETDUP(value, "Path", result->path);
+            IFGETDUP(value, "URL", result->URL);
+            IFGETDUP(value, "File", result->file);
+
+            IFGETDUP(value, "Exec", result->exec);
+            /* Seperate out the params. */
+            if (result->exec)
+              {
+                 char               *exe = NULL;
+
+                 exe = strchr(result->exec, ' ');
+                 if (exe)
+                   {
+                      *exe = '\0';
+                      exe++;
+                      /* trim the parameter string */
+                      for(; isspace(*exe) && ((exe - result->exec) < PATH_MAX) && (*exe != '\0'); exe++);
+                      if(*exe != '\0')
+                         result->exec_params = strdup(exe);
+                   }
+              }
+
+            IFGETDUP(value, "StartupWMClass", result->window_class);
+            /* Guess a window class - exe name with first letter capitalized. */
+            if ((!value) && (result->exec))
+              {
+                 char               *tmp;
+
+                 tmp = strdup(result->exec);
+                 if (tmp)
+                   {
+                      char               *p;
+
+                      value = (char *)ecore_file_file_get(tmp);        /* In case the exe included a path. */
+                      p = value;
+                      while ((*p != '\0') && (*p != ' '))
+                        {
+                           *p = tolower(*p);
+                           p++;
+                        }
+                      *p = '\0';
+                      *value = toupper(*value);
+                      result->window_class = strdup(value);
+                      free(tmp);
+                   }
+              }
+            IFGETDUP(value, "X-Enlightenment-WindowName", result->window_name);
+            IFGETDUP(value, "X-Enlightenment-WindowTitle", result->window_title);
+            IFGETDUP(value, "X-Enlightenment-WindowRole", result->window_role);
+
+            IFGETDUP(value, "Categories", result->categories);
+            if (result->categories)
+              result->Categories =
+                 ecore_desktop_paths_to_hash(result->categories);
+            IFGETDUP(value, "Icon", result->icon);
+            IFGETDUP(value, "X-Enlightenment-IconTheme", result->icon_theme);
+            IFGETDUP(value, "X-Enlightenment-IconClass", result->icon_class);
+            IFGETDUP(value, "X-Enlightenment-IconPath", result->icon_path);
+
+             /* If the icon is a path put the full path into the icon_path member.*/
+            if ((result->icon != NULL) && (result->icon_path == NULL) &&
+                (strchr(result->icon, '/') != NULL))
+              {
+                 if (result->icon[0] == '/')
+                   {
+                      result->icon_path = strdup(result->icon);
+                   }
+                 else  /* It's a relative path. */
+                   {
+                      char               *temp;
+
+                      size =
+                         strlen(result->original_path) +
+                         strlen(result->icon) + 2;
+                      temp = malloc(size);
+                      if (temp)
+                        {
+                           char               *dir;
+
+                           dir =
+                              ecore_file_dir_get(result->original_path);
+                           if (dir)
+                             {
+                                sprintf(temp, "%s/%s", dir, result->icon);
+                                result->icon_path =
+                                   ecore_file_realpath(temp);
+                                free(dir);
+                             }
+                           free(temp);
+                        }
+                   }
+                 result->hard_icon = 1;
+              }
+
+            if ((result->icon_theme == NULL) && (result->icon_path != NULL))
+               result->hard_icon = 1;
+
+            /* icon/class is a list of standard icons from the theme that can override the icon created above.
+             * Use (from .desktop) name.edj,exec,categories.  It's case sensitive, the reccomendation is to lowercase it.
+             * It should be most specific to most generic.  firefox,browser,internet for instance
+             * If the icon in the file is not a full path, just put it first in the class, greatly simplifies things later
+             * when it's time to do the search.
+             */
+            if (!result->icon_class)
+              {
+                 size = 0;
+                 if ((result->icon) && (strchr(result->icon, '/') == NULL))
+                   size += strlen(result->icon) + 1;
+                 if (result->eap_name)
+                   size += strlen(result->eap_name) + 1;
+                 if (result->exec)
+                   size += strlen(result->exec) + 1;
+                 if (result->categories)
+                   size += strlen(result->categories) + 1;
+                 result->icon_class = malloc(size + 1);
+                 if (result->icon_class)
+                   {
+                      char               *p;
+                      int                 done = 0;
+
+                      result->icon_class[0] = '\0';
+                      if ((result->icon) && (strchr(result->icon, '/') == NULL) &&
+                          (result->icon[0] != '\0'))
+                        {
+                           strcat(result->icon_class, result->icon);
+                           done = 1;
+                        }
+                      /* We do this here coz we don't want to lower case the result->icon part later. */
+                      p = result->icon_class;
+                      p += strlen(result->icon_class);
+                      if ((result->eap_name) && (result->eap_name[0] != '\0'))
+                        {
+                           if (done)
+                             strcat(result->icon_class, ",");
+                           strcat(result->icon_class, result->eap_name);
+                           done = 1;
+                        }
+                      if ((result->exec) && (result->exec[0] != '\0'))
+                        {
+                           char               *tmp;
+
+                           tmp = strdup(ecore_file_file_get(result->exec));
+                           if (tmp)
+                             {
+                                char               *p2;
+
+                                p2 = tmp;
+                                while (*p2 != '\0')
+                                  {
+                                     if (*p2 == ' ')
+                                       {
+                                          *p2 = '\0';
+                                          break;
+                                       }
+                                     p2++;
+                                  }
+                                if (done)
+                                  strcat(result->icon_class, ",");
+                                strcat(result->icon_class, tmp);
+                                done = 1;
+                                free(tmp);
+                             }
+                        }
+                      if ((result->categories) && (result->categories[0] != '\0'))
+                        {
+                           if (done)
+                             strcat(result->icon_class, ",");
+                           strcat(result->icon_class, result->categories);
+                           done = 1;
+                        }
+                      while (*p != '\0')
+                        {
+                           if (*p == ';')
+                             *p = ',';
+                           else
+                             *p = tolower(*p);
+                           p++;
+                        }
+                      if (result->icon_class[0] == '\0')
+                        {
+                           free(result->icon_class);
+                           result->icon_class = NULL;
+                        }
+                   }
+              }
+
+            value = ecore_hash_get(result->group, "MimeType");
+            if (value)
+              result->MimeTypes =
+                 ecore_desktop_paths_to_hash(value);
+            value = ecore_hash_get(result->group, "Actions");
+            if (value)
+              result->Actions =
+                 ecore_desktop_paths_to_hash(value);
+            value = ecore_hash_get(result->group, "OnlyShowIn");
+            if (value)
+              result->OnlyShowIn =
+                 ecore_desktop_paths_to_hash(value);
+            value = ecore_hash_get(result->group, "NotShowIn");
+            if (value)
+              result->NotShowIn =
+                 ecore_desktop_paths_to_hash(value);
+            value = ecore_hash_get(result->group, "X-KDE-StartupNotify");
+            if (value)
+              result->startup = (strcmp(value, "true") == 0);
+            value = ecore_hash_get(result->group, "StartupNotify");
+            if (value)
+              result->startup = (strcmp(value, "true") == 0);
+            value = ecore_hash_get(result->group, "X-Enlightenment-WaitExit");
+            if (value)
+              result->wait_exit = (strcmp(value, "true") == 0);
+            value = ecore_hash_get(result->group, "NoDisplay");
+            if (value)
+              result->no_display = (strcmp(value, "true") == 0);
+            value = ecore_hash_get(result->group, "Hidden");
+            if (value)
+              result->hidden = (strcmp(value, "true") == 0);
+         }
+       else
+         {
+            /*Maybe it's a 'trash' file - which also follows the Desktop FDO spec */
+            result->group = ecore_hash_get(result->data, "Trash Info");
+            if (result->group)
+              {
+                 IFGETDUP(value, "Path", result->path);
+                 IFGETDUP(value, "DeletionDate",
+                       result->deletiondate);
+              }
+         }
+
+        /* Final sanity check. */
+        if ((result->data) && (!result->group))
+         {
+             _ecore_desktop_destroy(result);
+            result = NULL;
+         }
+       else
+          ecore_hash_set(desktop_cache, strdup(result->original_path), result);
+     }
+
+error:
+   if (result)
+     {
+        if (in_cache)
+          {
+             instrumentation.desktops_in_cache_time += ecore_time_get() - begin;
+             instrumentation.desktops_in_cache++;
+         }
+       else
+         {
+             instrumentation.desktops_time += ecore_time_get() - begin;
+             instrumentation.desktops++;
+         }
+     }
+   else
+     {
+        instrumentation.desktops_not_found_time += ecore_time_get() - begin;
+        instrumentation.desktops_not_found++;
+     }
+   return result;
+}
+
+void
+ecore_desktop_save(Ecore_Desktop * desktop)
+{
+   Ecore_List         *commands;
+   char               *temp;
+   int                 trash = 0;
+
+   if (!desktop->group)
+     {
+       if ((desktop->ondisk) && (desktop->original_path))
+         {
+            desktop->data = ecore_desktop_ini_get(desktop->original_path);
+            desktop->group =
+               (Ecore_Hash *) ecore_hash_get(desktop->data, "Desktop Entry");
+            if (!desktop->group)
+               desktop->group =
+                  (Ecore_Hash *) ecore_hash_get(desktop->data,
+                                                "KDE Desktop Entry");
+            if (!desktop->group)
+              {
+                 trash = 1;
+                 desktop->group =
+                    (Ecore_Hash *) ecore_hash_get(desktop->data, "Trash Info");
+              }
+         }
+       else
+         {
+            desktop->group = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+            if (desktop->group)
+              {
+                 ecore_hash_free_key_cb_set(desktop->group, free);
+                 ecore_hash_free_value_cb_set(desktop->group, free);
+              }
+         }
+     }
+
+   if (desktop->group)
+     {
+       if (desktop->original_path)
+         {
+            struct stat         st;
+
+            if (stat(desktop->original_path, &st) >= 0)
+              {
+                 char               *real;
+
+                 real = ecore_file_readlink(desktop->original_path);
+                 if (real)
+                    ecore_hash_set(desktop->group,
+                                   strdup("X-Enlightenment-OriginalPath"),
+                                   real);
+              }
+         }
+
+        /* We are not passing a list of files, so we only expect one command. */
+        commands = ecore_desktop_get_command(desktop, NULL, 0);
+       if (commands)
+         {
+            temp = ecore_list_first(commands);
+            if (temp)
+               ecore_hash_set(desktop->group, strdup("Exec"), strdup(temp));
+            ecore_list_destroy(commands);
+         }
+
+       if (desktop->name)
+          ecore_hash_set(desktop->group, strdup("Name"),
+                         strdup(desktop->name));
+       if (desktop->generic)
+          ecore_hash_set(desktop->group, strdup("GenericName"),
+                         strdup(desktop->generic));
+       if (desktop->comment)
+          ecore_hash_set(desktop->group, strdup("Comment"),
+                         strdup(desktop->comment));
+       if (desktop->type)
+          ecore_hash_set(desktop->group, strdup("Type"),
+                         strdup(desktop->type));
+       if (desktop->URL)
+          ecore_hash_set(desktop->group, strdup("URL"), strdup(desktop->URL));
+       if (desktop->file)
+          ecore_hash_set(desktop->group, strdup("File"),
+                         strdup(desktop->file));
+       if (desktop->icon)
+          ecore_hash_set(desktop->group, strdup("Icon"),
+                         strdup(desktop->icon));
+       if (desktop->icon_theme)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconTheme"),
+                         strdup(desktop->icon_theme));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-IconTheme");
+       if (desktop->icon_class)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconClass"),
+                         strdup(desktop->icon_class));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-IconClass");
+       if (desktop->icon_path)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconPath"),
+                         strdup(desktop->icon_path));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-IconPath");
+       if (desktop->window_class)
+          ecore_hash_set(desktop->group, strdup("StartupWMClass"),
+                         strdup(desktop->window_class));
+       if (desktop->categories)
+          ecore_hash_set(desktop->group, strdup("Categories"),
+                         strdup(desktop->categories));
+       if (desktop->window_name)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowName"),
+                         strdup(desktop->window_name));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowName");
+       if (desktop->window_title)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowTitle"),
+                         strdup(desktop->window_title));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowTitle");
+       if (desktop->window_role)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowRole"),
+                         strdup(desktop->window_role));
+       else
+           ecore_hash_remove(desktop->group, "X-Enlightenment-WindowRole");
+       ecore_hash_remove(desktop->group, "X-KDE-StartupNotify");
+       if (desktop->wait_exit)
+          ecore_hash_set(desktop->group, strdup("X-Enlightenment-WaitExit"),
+                         strdup("true"));
+       else
+          ecore_hash_remove(desktop->group, "X-Enlightenment-WaitExit");
+       if (desktop->startup)
+          ecore_hash_set(desktop->group, strdup("StartupNotify"),
+                         strdup("true"));
+       else
+          ecore_hash_remove(desktop->group, "StartupNotify");
+       if (desktop->no_display)
+          ecore_hash_set(desktop->group, strdup("NoDisplay"), strdup("true"));
+       else
+          ecore_hash_remove(desktop->group, "NoDisplay");
+       if (desktop->hidden)
+          ecore_hash_set(desktop->group, strdup("Hidden"), strdup("true"));
+       else
+          ecore_hash_remove(desktop->group, "Hidden");
+
+       /* FIXME: deal with the ShowIn's and mime stuff. */
+
+       if (desktop->path)
+          ecore_hash_set(desktop->group, strdup("Path"),
+                         strdup(desktop->path));
+       if (desktop->deletiondate)
+          ecore_hash_set(desktop->group, strdup("DeletionDate"),
+                         strdup(desktop->deletiondate));
+
+       if (desktop->original_path)
+         {
+            FILE               *f;
+            Ecore_List         *list;
+            char               *key;
+
+            ecore_file_unlink(desktop->original_path);
+            f = fopen(desktop->original_path, "wb");
+            list = ecore_hash_keys(desktop->group);
+            if ((!f) || (!list))
+               return;
+
+            if (trash)
+               fprintf(f, "[Trash Info]\n");
+            else
+               fprintf(f, "[Desktop Entry]\n");
+            ecore_list_first_goto(list);
+            while ((key = (char *)ecore_list_next(list)))
+              {
+                 char               *value;
+
+                 value = (char *)ecore_hash_get(desktop->group, key);
+                 if ((value) && (value[0] != '\0'))
+                    fprintf(f, "%s=%s\n", key, value);
+              }
+            fclose(f);
+         }
+
+       if (desktop->data)
+         {
+            ecore_hash_destroy(desktop->data);
+            desktop->data = NULL;
+         }
+       else
+          ecore_hash_destroy(desktop->group);
+       desktop->group = NULL;
+     }
+}
+
+/**
+ * Setup what ever needs to be setup to support Ecore_Desktop.
+ *
+ * There are internal structures that are needed for Ecore_Desktop
+ * functions to operate, this sets them up.
+ *
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+EAPI int
+ecore_desktop_init()
+{
+   if (++init_count != 1)
+      return init_count;
+
+   if (!ecore_desktop_paths_init())
+      return --init_count;
+
+   if (!desktop_cache)
+     {
+       desktop_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+       if (desktop_cache)
+         {
+            ecore_hash_free_key_cb_set(desktop_cache, free);
+            ecore_hash_free_value_cb_set(desktop_cache,
+                                      (Ecore_Free_Cb) _ecore_desktop_destroy);
+         }
+     }
+
+   if (!ecore_desktop_icon_init())
+      return --init_count;
+
+   return init_count;
+}
+
+/**
+ * Tear down what ever needs to be torn down to support Ecore_Desktop.
+ *
+ * There are internal structures that are needed for Ecore_Desktop
+ * functions to operate, this tears them down.
+ *
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+EAPI int
+ecore_desktop_shutdown()
+{
+   if (--init_count != 0)
+      return init_count;
+
+   ecore_desktop_icon_shutdown();
+
+   if (desktop_cache)
+     {
+       ecore_hash_destroy(desktop_cache);
+       desktop_cache = NULL;
+     }
+
+   ecore_desktop_paths_shutdown();
+
+   return init_count;
+}
+
+/**
+ * Free whatever resources are used by an Ecore_Desktop.
+ *
+ * There are internal resources used by each Ecore_Desktop
+ * This releases those resources.
+ *
+ * @param  desktop  An Ecore_Desktop that was previously returned by ecore_desktop_get().
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+void
+ecore_desktop_destroy(Ecore_Desktop * desktop)
+{
+   /* This is just a dummy, because these structures are cached. */
+   /* Later versions of the cache may reference count, then this will be useful. */
+   desktop = NULL;
+}
+
+void
+_ecore_desktop_destroy(Ecore_Desktop * desktop)
+{
+   IFFREE(desktop->original_path);
+   IFFREE(desktop->original_lang);
+   IFFREE(desktop->eap_name);
+   IFFREE(desktop->name);
+   IFFREE(desktop->generic);
+   IFFREE(desktop->comment);
+   IFFREE(desktop->type);
+   IFFREE(desktop->exec);
+   IFFREE(desktop->exec_params);
+   IFFREE(desktop->categories);
+   IFFREE(desktop->icon);
+   IFFREE(desktop->icon_theme);
+   IFFREE(desktop->icon_class);
+   IFFREE(desktop->icon_path);
+   IFFREE(desktop->path);
+   IFFREE(desktop->URL);
+   IFFREE(desktop->file);
+   IFFREE(desktop->deletiondate);
+   IFFREE(desktop->window_class);
+   IFFREE(desktop->window_name);
+   IFFREE(desktop->window_title);
+   IFFREE(desktop->window_role);
+   if (desktop->NotShowIn) ecore_hash_destroy(desktop->NotShowIn);
+   if (desktop->OnlyShowIn) ecore_hash_destroy(desktop->OnlyShowIn);
+   if (desktop->Categories) ecore_hash_destroy(desktop->Categories);
+   if (desktop->MimeTypes) ecore_hash_destroy(desktop->MimeTypes);
+   if (desktop->Actions) ecore_hash_destroy(desktop->Actions);
+   if (desktop->data)
+     {
+       ecore_hash_destroy(desktop->data);
+       desktop->data = NULL;
+     }
+   desktop->group = NULL;
+   free(desktop);
+}
+
+/**
+ * Get and massage the users home directory.
+ *
+ * This is an internal function that may be useful elsewhere.
+ *
+ * @return  The users howe directory.
+ * @ingroup Ecore_Desktop_Main_Group
+ */
+char               *
+ecore_desktop_home_get()
+{
+   char                home[PATH_MAX];
+   int                 len;
+
+   /* Get Home Dir, check for trailing '/', strip it */
+   if (getenv("HOME"))
+      strncpy(home, getenv("HOME"), PATH_MAX);
+   else
+      strcpy(home, "/");
+   len = strlen(home) - 1;
+   while ((len >= 0) && (home[len] == '/'))
+     {
+       home[len] = '\0';
+       len--;
+     }
+
+   return strdup(home);
+}
+
+EAPI Ecore_List          *
+ecore_desktop_get_command(Ecore_Desktop * desktop, Ecore_List * files, int fill)
+{
+   Ecore_List *result;
+   char       *sub_result = NULL, *params = NULL;
+   int         is_single = 0, do_file = 0;
+
+   result = ecore_list_new();
+   if (!result) return NULL;
+   ecore_list_free_cb_set(result, free);
+
+   if (desktop->exec_params)
+      params = strdup(desktop->exec_params);
+
+#ifdef DEBUG
+if (files)
+  {
+     char *file;
+
+     ecore_list_first_goto(files);
+     while((file = ecore_list_next(files)) != NULL)
+        printf("FILE FOR COMMAND IS - %s\n", file);
+  }
+#endif
+
+   if (files)
+      ecore_list_first_goto(files);
+
+   /* FIXME: The string handling could be better, but it's good enough for now. */
+   do
+   {
+      if (fill)
+        {
+           Ecore_DList        *command;
+          char               *p, buf[PATH_MAX + 10], *big_buf = NULL;
+          const char         *t;
+          int                 len = 0;
+
+          command = ecore_dlist_new();
+          if (!command) goto error;
+
+          ecore_dlist_free_cb_set(command, free);
+           /* Grab a fresh copy of the params.  The default is %F as per rasters request. */
+           if (params) free(params);
+           if (desktop->exec_params)
+              params = strdup(desktop->exec_params);
+          else
+             params = strdup("%F");
+          if (!params) goto error;
+          /* Split it up. */
+          t = params;
+          for (p = params; *p; p++)
+            {
+               if (*p == '%')
+                 {
+                    *p = '\0';
+                    ecore_dlist_append(command, strdup(t));
+                    len += strlen(t) + 1;
+                    *p = '%';
+                    t = p;
+                 }
+            }
+          if (t < p)
+            {
+               ecore_dlist_append(command, strdup(t));
+               len += strlen(t) + 1;
+            }
+          free(params);
+          params = NULL;
+          t = NULL;
+          p = NULL;
+          /* Check the bits for replacables. */
+          if (!ecore_dlist_empty_is(command))
+            {
+               ecore_dlist_first_goto(command);
+               while ((p = ecore_dlist_next(command)) != NULL)
+                 {
+                    int is_URL = 0, is_directory = 0, is_file = 0;
+
+                    t = NULL;
+                    do_file = 0;
+                    is_single = 0;
+                    if (p[0] == '%')
+                      switch (p[1])
+                        {
+                           case 'f':   /* Single file name, multiple invokations if multiple files.  If the file is on the net, download first and point to temp file. */
+                              do_file = 1;
+                              is_single = 1;
+                              break;
+
+                           case 'u':   /* Single URL, multiple invokations if multiple URLs. */
+                              do_file = 1;
+                              is_single = 1;
+                              is_URL = 1;
+                              break;
+
+                           case 'c':   /* Translated Name field from .desktop file. */
+                              t = desktop->name;
+                              break;
+
+                           case 'k':   /* Location of the .desktop file, may be a URL, or empty. */
+                              t = desktop->original_path;
+                              break;
+
+                           case 'F':   /* Multiple file names.  If the files are on the net, download first and point to temp files. */
+                              do_file = 1;
+                              break;
+
+                           case 'U':   /* Multiple URLs. */
+                              do_file = 1;
+                              is_URL = 1;
+                              break;
+
+                           case 'd':   /* Directory of the file in %f. */
+                              do_file = 1;
+                              is_single = 1;
+                              is_directory = 1;
+                              break;
+
+                           case 'D':   /* Directories of the files in %F. */
+                              do_file = 1;
+                              is_directory = 1;
+                              break;
+
+                           case 'n':   /* Single filename without path. */
+                              do_file = 1;
+                              is_single = 1;
+                              is_file = 1;
+                              break;
+
+                           case 'N':   /* Multiple filenames without paths. */
+                              do_file = 1;
+                              is_file = 1;
+                              break;
+
+                           case 'i':   /* "--icon Icon" field from .desktop file, or empty. */
+                              if (desktop->icon)
+                                {
+                                   snprintf(buf, sizeof(buf), "--icon %s", desktop->icon);
+                                   t = buf;
+                                }
+                              break;
+
+                           case 'm':   /* Deprecated mini icon, the spec says we can just drop it. */
+                              break;
+
+                           case 'v':   /* Device field from .desktop file. */
+                              break;
+
+                           case '%':   /* A '%' character. */
+                              t = "%";
+                              break;
+
+                           default:
+                              break;
+                        }
+                    /* Take care of any file expansions. */
+                    if (do_file && (files))
+                      {
+                         char *file;
+                         size_t big_len;
+
+                          /* Pre load the big_buf so that the reallocs are quick. WEemight eventually need more than PATH_MAX. */
+                          big_buf = malloc(PATH_MAX);
+                         big_buf[0] = '\0';
+                         big_len = 0;
+                         while((file = ecore_list_next(files)) != NULL)
+                           {
+                               char *text = NULL, *escaped = NULL;
+
+                               if (is_URL)
+                                {
+                                   /* FIXME: The spec is unclear about what they mean by URL, 
+                                    * GIMP uses %U, but doesn't understand file://foo
+                                    * GIMP is also happy if you pass it a raw file name.
+                                    * For now, just make this the same as is_file.
+                                    */
+                                   text = strdup(file);
+                                }
+                              else if (is_directory)
+                                {
+                                    /* FIXME: for onefang
+                                     *    if filename does not start with ./ or ../ or / then assume it
+                                     *    is a path relative to cwd i.e. "file.png" or "blah/file.png" and
+                                     *    thus %d/%D would be ./ implicitly (but may need to be explicit
+                                     *    in the command line)
+                                     */
+                                   text = ecore_file_dir_get(file);
+                                }
+                              else if (is_file)
+                                 text = strdup(ecore_file_file_get(file));
+                              else
+                                {
+                                   /* FIXME: If the file is on the net, download 
+                                    * first and point to temp file.
+                                    *
+                                    * This I think is the clue to how the whole 
+                                    * file/url thing is supposed to work.  This is 
+                                    * purely speculation though, and you can get
+                                    * into lots of trouble with specs that require 
+                                    * geussing like this.
+                                    *
+                                    * %u%U - pass filenames or URLS.
+                                    * %f%F - pass filenames, download URLS and pass path to temp file.
+                                    *
+                                    * WE are not currently getting URLs passed to us anyway.
+                                    */
+                                   text = strdup(file);
+                                }
+                              if (text)
+                                {
+                                    escaped = ecore_file_escape_name(text);
+                                   free(text);
+                                   text = NULL;
+                                }
+                              /* Add it to the big buf. */
+                              if (escaped)
+                                {
+                                   big_len += strlen(escaped) + 2;
+                                   big_buf = realloc(big_buf, big_len);
+                                   strcat(big_buf, " ");
+                                   strcat(big_buf, escaped);
+                                   t = big_buf;
+                                   free(escaped);
+                                   escaped = NULL;
+                                }
+                              if (is_single)
+                                 break;
+                           }
+                      }
+                    /* Insert this bit into the command. */
+                    if (t)
+                      {
+                         ecore_dlist_previous(command);
+                         ecore_dlist_insert(command, strdup(t));
+                         len += strlen(t) + 1;
+                         ecore_dlist_next(command);
+                         ecore_dlist_next(command);
+                      }
+                    if (big_buf)
+                      {
+                        free(big_buf);
+                        big_buf = NULL;
+                      }
+                 }
+
+                /* Put it all together. */
+               params = malloc(len + 1);
+               if (params)
+                 {
+                    params[0] = '\0';
+                    ecore_dlist_first_goto(command);
+                    while ((p = ecore_dlist_next(command)) != NULL)
+                      {
+                         if (p[0] == '%')
+                           strcat(params, &p[2]);
+                         else
+                           strcat(params, p);
+                      }
+                 }
+            }
+          ecore_list_destroy(command);
+        }
+
+      /* Add the command to the list of commands. */
+      /* NOTE: params might be just desktop->exec_params, or it might have been built from bits. */
+      sub_result = ecore_desktop_merge_command(desktop->exec, params);
+      if (sub_result)
+        {
+#ifdef DEBUG
+           printf("FULL COMMAND IS - %s\n", sub_result);
+#endif
+           ecore_list_append(result, sub_result);
+        }
+   /* If there is any "single file" things to fill in, and we have more files, 
+    * go back and do it all again for the next file. 
+    */
+   }
+   while((do_file) && (is_single) && (fill) && (files) && (ecore_list_current(files)));
+
+error:
+   if (params) free(params);
+   return result;
+}
+
+EAPI char          *
+ecore_desktop_merge_command(char *exec, char *params)
+{
+   int                 size;
+   char               *end, *result = NULL;
+
+   if ((exec) && (params))
+     {
+       size = strlen(exec);
+       end = exec + size;
+       /* Two possibilities, it was just split at the space, or it was setup seperatly. */
+       if (params == (end + 1))
+         {
+            *end = ' ';
+            result = strdup(exec);
+            *end = '\0';
+         }
+       else
+         {
+            size += strlen(params) + 2;
+            result = malloc(size);
+            if (result)
+               sprintf(result, "%s %s", exec, params);
+         }
+     }
+   else if (exec)
+      result = strdup(exec);
+
+   return result;
+}
+
+EAPI void
+ecore_desktop_instrumentation_reset(void)
+{
+   instrumentation.desktops = 0;
+   instrumentation.desktops_in_cache = 0;
+   instrumentation.desktops_not_found = 0;
+   instrumentation.icons = 0;
+   instrumentation.icons_in_cache = 0;
+   instrumentation.icons_not_found = 0;
+   instrumentation.desktops_time = 0.0;
+   instrumentation.desktops_in_cache_time = 0.0;
+   instrumentation.desktops_not_found_time = 0.0;
+   instrumentation.icons_time = 0.0;
+   instrumentation.icons_in_cache_time = 0.0;
+   instrumentation.icons_not_found_time = 0.0;
+#ifdef DEBUG
+   printf("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n");
+   printf("Desktop instrumentation reset.\n");
+   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
+#endif
+}
+
+EAPI void
+ecore_desktop_instrumentation_print(void)
+{
+#ifdef DEBUG
+   if ((instrumentation.desktops + instrumentation.desktops_in_cache + instrumentation.desktops_not_found + instrumentation.icons + instrumentation.icons_in_cache + instrumentation.icons_not_found) > 0)
+     {
+        printf("vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n");
+        printf("    Found %5d desktops          %2.5f (%2.6f/desktop)\n", instrumentation.desktops, instrumentation.desktops_time, instrumentation.desktops_time / instrumentation.desktops);
+        printf("    Found %5d desktops in cache %2.5f (%2.6f/desktop)\n", instrumentation.desktops_in_cache, instrumentation.desktops_in_cache_time, instrumentation.desktops_in_cache_time / instrumentation.desktops_in_cache);
+        printf("Not found %5d desktops          %2.5f (%2.6f/desktop)\n", instrumentation.desktops_not_found, instrumentation.desktops_not_found_time, instrumentation.desktops_not_found_time / instrumentation.desktops_not_found);
+        printf("    Found %5d icons             %2.5f (%2.6f/icon)\n", instrumentation.icons, instrumentation.icons_time, instrumentation.icons_time / instrumentation.icons);
+        printf("    Found %5d icons    in cache %2.5f (%2.6f/icon)\n", instrumentation.icons_in_cache, instrumentation.icons_in_cache_time, instrumentation.icons_in_cache_time / instrumentation.icons_in_cache);
+        printf("Not found %5d icons             %2.5f (%2.6f/icon)\n", instrumentation.icons_not_found, instrumentation.icons_not_found_time, instrumentation.icons_not_found_time / instrumentation.icons_not_found);
+        printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
+     }
+#endif
+}
diff --git a/src/lib/ecore_desktop/ecore_desktop_icon.c b/src/lib/ecore_desktop/ecore_desktop_icon.c
new file mode 100644 (file)
index 0000000..618e3c8
--- /dev/null
@@ -0,0 +1,714 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include <limits.h>
+#include <sys/stat.h>
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+#include "ecore_private.h"
+
+//#define DEBUG 1
+
+static char        *_ecore_desktop_icon_find0(const char *icon,
+                                             const char *icon_size,
+                                             const char *icon_theme, 
+                                             int *in_cache);
+
+static int          _ecore_desktop_icon_theme_list_add(void *data,
+                                                      const char *path);
+static void         _ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme *
+                                                     icon_theme);
+static void        
+_ecore_desktop_icon_theme_directory_destroy(Ecore_Desktop_Icon_Theme_Directory *
+                                           icon_theme_directory);
+static inline void
+_ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme);
+
+/* FIXME: We need a way for the client to disable searching for any of these that they don't support. */
+static const char  *ext[] =
+   { "", ".edj", ".png", ".svgz", ".svg", ".xpm", NULL };  /* "" is in case the icon already has an extension, search for that first. */
+static int          init_count = 0;
+static Ecore_Hash  *icon_theme_cache = NULL;
+
+/**
+ * @defgroup Ecore_Desktop_Icon_Group icon theme Functions
+ *
+ * Functions that deal with freedesktop.org icon themes.
+ *
+ * This conforms with the freedesktop.org XDG Icon Theme Specification version 0.11
+ */
+
+/**
+ * Find the path to an icon.
+ *
+ * Using the search algorithm specified by freedesktop.org,
+ * search for an icon in the currently installed set of icon themes.
+ *
+ * The returned string needs to be freed eventually.
+ *
+ * @param   icon The name of the required icon.
+ * @param   icon_size The size of the required icon.
+ * @param   icon_theme The theme of the required icon.
+ * @return  The full path to an icon file, or NULL.
+ * @ingroup Ecore_Desktop_Icon_Group
+ */
+
+EAPI char         *
+ecore_desktop_icon_find(const char *icon, const char *icon_size,
+                       const char *icon_theme)
+{
+   char           *result = NULL, *icn;
+   Ecore_List     *icons;
+   int             in_cache = 0;
+   double          begin;
+
+   begin = ecore_time_get();
+   if (icon)
+     {
+        /* Easy check first, was a full path supplied? */
+        if ((icon[0] == '/') && (ecore_file_exists(icon)))
+           result = strdup(icon);
+       else
+         {
+             icons = ecore_desktop_paths_to_list(icon);
+             if (icons)
+              {
+
+                  if (icon_size == NULL)
+                     icon_size = "48x48";
+                  if (icon_theme == NULL)
+                     icon_theme = "hicolor";
+                  ecore_list_first_goto(icons);
+                  while ((icn = ecore_list_next(icons)))
+                    {
+                      char *ext;
+#ifdef DEBUG
+                      fprintf(stderr, "\tTrying To Find Icon %s\n", icn);
+#endif
+                      ext = strrchr(icn, '.');
+                      /* Check for unsupported extension */
+                      if ((ext) && (!strcmp(ext, ".ico")))
+                         continue;
+
+                      result = _ecore_desktop_icon_find0(icn, icon_size, icon_theme, &in_cache);
+                      if (result)
+                         break;
+                    }
+                  ecore_list_destroy(icons);
+
+              } /* if (icons) */
+         } /* if ((icon[0] == '/') && (ecore_file_exists(icon))) ; else */
+     } /* if (icon) */
+
+   if (result)
+     {
+        if (in_cache)
+          {
+             instrumentation.icons_in_cache_time += ecore_time_get() - begin;
+             instrumentation.icons_in_cache++;
+         }
+       else
+         {
+             instrumentation.icons_time += ecore_time_get() - begin;
+             instrumentation.icons++;
+         }
+     }
+   else
+     {
+        instrumentation.icons_not_found_time += ecore_time_get() - begin;
+        instrumentation.icons_not_found++;
+     }
+
+   return result;
+}
+
+/** Search for an icon the fdo way.
+ *
+ * This complies with the freedesktop.org Icon Theme Specification version 0.7
+ *
+ * @param   icon The icon to search for.
+ * @param   icon_size The icon size to search for.
+ * @param   icon_theme The icon theme to search in.
+ * @return  The full path to the found icon.
+ */
+static char  *
+_ecore_desktop_icon_find0(const char *icon, const char *icon_size,
+                         const char *icon_theme, int *in_cache)
+{
+   Ecore_Desktop_Icon_Theme *theme;
+   char                path[PATH_MAX];
+   char               *found = NULL;
+   int                 wanted_size;
+   int                 minimal_size = INT_MAX;
+   int                 has_ext = 0;
+   int                 has_icon_ext = 0;
+   int                 i;
+   char               *closest = NULL;
+   Ecore_Desktop_Icon_Theme_Directory *directory;
+
+   if ((icon == NULL) || (icon[0] == '\0'))
+      return NULL;
+
+   /* Check the file extension, if any. */
+   found = strrchr(icon, '.');
+   if (found != NULL)
+     {
+        has_ext = 1;
+        for (i = 0; ext[i] != NULL; i++)
+         {
+            if (strcmp(found, ext[i]) == 0)
+              {
+                 has_icon_ext = 1;
+                 break;
+              }
+         }
+        found = NULL;
+     }
+
+#ifdef DEBUG
+   fprintf(stderr, "\tTrying To Find Icon %s (%s) in theme %s\n", icon,
+          icon_size, icon_theme);
+#endif
+
+   /* Get the theme description file. */
+   theme = ecore_desktop_icon_theme_get(icon_theme, NULL);
+#ifdef DEBUG
+   printf("SEARCHING FOR %s\n", icon_theme);
+#endif
+
+   if (!theme) return NULL;
+   if (!theme->Directories) goto done;
+
+   wanted_size = atoi(icon_size);
+
+   /* Loop through the themes directories. */
+   ecore_list_first_goto(theme->Directories);
+   while ((directory = ecore_list_next(theme->Directories)) != NULL)
+     {
+       if (directory->size)
+         {
+            int                 match = 0;
+            int                 result_size = 0;
+
+            /* Does this theme directory match the required icon size? */
+            switch (directory->type[0])
+              {
+               case 'F':       /* Fixed. */
+                  match = (wanted_size == directory->size);
+                  result_size = abs(directory->size - wanted_size);
+                  break;
+               case 'S':       /* Scaled. */
+                  match = ((directory->minimum <= wanted_size) &&
+                           (wanted_size <= directory->maximum));
+                  if (wanted_size < directory->minimum)
+                    result_size = directory->minimum - wanted_size;
+                  if (wanted_size > directory->maximum)
+                    result_size = wanted_size - directory->maximum;
+                  break;
+               default:        /* Threshold. */
+                  match = (((directory->size - directory->threshold) <= wanted_size) &&
+                            (wanted_size <= (directory->size + directory->threshold)));
+                  if (wanted_size < (directory->size - directory->threshold))
+                    result_size = directory->minimum - wanted_size;
+                  if (wanted_size > (directory->size + directory->threshold))
+                    result_size = wanted_size - directory->maximum;
+                  break;
+              }
+
+             /* Do we need to check this directory? */
+             if ((match) || (result_size < minimal_size))
+              {
+                 /* Look for icon with all extensions. */
+                 for (i = 0; ext[i] != NULL; i++)
+                   {
+                      /* Check if there will be an extension to check. */
+                      if ((ext[i][0] == '\0') && (!has_ext))
+                         continue;
+                      if ((ext[i][0] != '\0') && (has_icon_ext))
+                         continue;
+                       if (directory->icons)
+                        {
+                           snprintf(path, PATH_MAX, "%s%s", icon, ext[i]);
+#ifdef DEBUG
+                           printf("FDO icon = %s\n", path);
+#endif
+                            found = ecore_hash_get(directory->icons, path);
+                           if (found)
+                             {
+                                found = strdup(found);
+                                if (match)
+                                   *in_cache = 1;
+                             }
+                        }
+                      else
+                        {
+                           snprintf(path, PATH_MAX, "%s/%s%s", directory->full_path, icon, ext[i]);
+#ifdef DEBUG
+                           printf("FDO icon = %s\n", path);
+#endif
+                            if (ecore_file_exists(path))
+                              found = strdup(path);
+                        }
+                      if (found)
+                        {
+                           if (ecore_file_is_dir(found))
+                             {
+                                free(found);
+                                found = NULL;
+                             }
+                           else if (match)     /* If there is a match in sizes, return the icon. */
+                              goto done;
+                           else if (result_size < minimal_size)        /* While we are here, figure out our next fallback strategy. */
+                             {
+                                minimal_size = result_size;
+                                if (closest) free(closest);
+                                closest = found;
+                                found = NULL;
+                             }
+                           else
+                             {
+                                free(found);
+                                found = NULL;
+                             }
+                        }
+                   }   /* for (i = 0; ext[i] != NULL; i++) */
+              }   /* if ((match) || (result_size < minimal_size)) */
+         }   /* if (directory->size) */
+     }   /* while ((directory = ecore_list_next(directory_paths)) != NULL) */
+
+   if (!found)
+     {
+       /* Fall back strategy #1, look for closest size in this theme. */
+       found = closest;
+       if (found)
+         {
+           closest = NULL;
+           goto done;
+         }
+
+       /* Fall back strategy #2, Try again with the parent themes. */
+        if (!theme->hicolor)
+         {
+            if (theme->Inherits)
+              {
+                 char *inherits;
+
+                 ecore_list_first_goto(theme->Inherits);
+                 while ((inherits = ecore_list_next(theme->Inherits)) != NULL)
+                   {
+                      found = _ecore_desktop_icon_find0(icon, icon_size, inherits, in_cache);
+                      if (found) goto done;
+                   }
+              }
+            else   /* Fall back strategy #3, Try the default hicolor theme. */
+              {
+                 found = _ecore_desktop_icon_find0(icon, icon_size, "hicolor", in_cache);
+                 if (found) goto done;
+              }
+         }
+
+       /* Fall back strategy #4, Just search in the base of the icon directories. */
+       for (i = 0; ext[i] != NULL; i++)
+         {
+            /* Check if there will be an extension to check. */
+            if ((ext[i][0] == '\0') && (!has_ext))
+               continue;
+             if ((ext[i][0] != '\0') && (has_icon_ext))
+               continue;
+            snprintf(path, PATH_MAX, "%s%s", icon, ext[i]);
+#ifdef DEBUG
+            printf("FDO icon = %s\n", path);
+#endif
+            found = ecore_desktop_paths_file_find(ecore_desktop_paths_icons, path, 0, NULL, NULL);
+            if (found)
+              {
+                 if (ecore_file_is_dir(found))
+                   {
+                      free(found);
+                      found = NULL;
+                   }
+                 else
+                   goto done;
+              }
+         }
+     }
+
+done:
+   if (closest) free(closest);
+   ecore_desktop_icon_theme_destroy(theme);
+
+   return found;
+}
+
+Ecore_Hash         *
+ecore_desktop_icon_theme_list(void)
+{
+   static int          loaded = 0;
+   if (!loaded)
+     {
+       char *tmp;
+       tmp = ecore_desktop_paths_file_find(ecore_desktop_paths_icons, "index.theme", 2,
+                                           _ecore_desktop_icon_theme_list_add, NULL);
+       loaded = 1;
+       free(tmp);
+     }
+   return icon_theme_cache;
+}
+
+static int
+_ecore_desktop_icon_theme_list_add(void *data __UNUSED__, const char *path)
+{
+   char                icn[PATH_MAX];
+
+   snprintf(icn, PATH_MAX, "%sindex.theme", path);
+   if (ecore_desktop_icon_theme_get(icn, NULL))
+      return 1;                        /* Should stop it from recursing this directory, but let it continue searching the next. */
+   return 0;
+}
+
+/**
+ * Setup what ever needs to be setup to support ecore_desktop_icon.
+ *
+ * There are internal structures that are needed for ecore_desktop_icon
+ * functions to operate, this sets them up.
+ *
+ * @ingroup Ecore_Desktop_Icon_Group
+ */
+EAPI int
+ecore_desktop_icon_init()
+{
+   if (++init_count != 1)
+      return init_count;
+
+   if (!icon_theme_cache)
+     {
+       icon_theme_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+       if (icon_theme_cache)
+         {
+            ecore_hash_free_key_cb_set(icon_theme_cache, free);
+            ecore_hash_free_value_cb_set(icon_theme_cache,
+                                      ECORE_FREE_CB(_ecore_desktop_icon_theme_destroy));
+         }
+     }
+
+   return init_count;
+}
+
+/**
+ * Tear down what ever needs to be torn down to support ecore_desktop_ycon.
+ *
+ * There are internal structures that are needed for ecore_desktop_icon
+ * functions to operate, this tears them down.
+ *
+ * @ingroup Ecore_Desktop_Icon_Group
+ */
+EAPI int
+ecore_desktop_icon_shutdown()
+{
+   if (--init_count != 0)
+      return init_count;
+
+   if (icon_theme_cache)
+     {
+       ecore_hash_destroy(icon_theme_cache);
+       icon_theme_cache = NULL;
+     }
+
+   return init_count;
+}
+
+/**
+ * Get the contents of an index.theme file.
+ *
+ * Everything that is in the index.theme file is returned in the
+ * data member of the Ecore_Desktop_Icon_Theme structure, it's an Ecore_Hash 
+ * as returned by ecore_desktop_ini_get().  Some of the data in the
+ * index.theme file is decoded into specific members of the returned 
+ * structure.
+ *
+ * Use ecore_desktop_icon_theme_destroy() to free this structure.
+ * 
+ * @param   icon_theme Name of the icon theme, or full path to the index.theme file.
+ * @param   lang Language to use, or NULL for default.
+ * @return  An Ecore_Desktop_Icon_Theme containing the files contents.
+ * @ingroup Ecore_Desktop_Icon_Group
+ */
+Ecore_Desktop_Icon_Theme *
+ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__)
+{
+   Ecore_Desktop_Icon_Theme *result = NULL;
+   char *theme_path = NULL, *theme_dir = NULL;
+   const char         *value;
+   Ecore_List         *Directories;
+   char               *directory;
+
+   if (icon_theme[0] == '/')
+      {
+         theme_path = strdup(icon_theme);
+        theme_dir = ecore_file_dir_get(theme_path);
+        if (theme_dir)
+           icon_theme = ecore_file_file_get(theme_dir);
+#ifdef DEBUG
+        printf("LOADING THEME %s  -   %s\n", icon_theme, theme_path);
+#endif
+      }
+
+   result = ecore_hash_get(icon_theme_cache, icon_theme);
+   if (result) goto done;
+   if (!theme_dir)
+     {
+       char icn[PATH_MAX];
+
+       snprintf(icn, PATH_MAX, "%s/index.theme", icon_theme);
+#ifdef DEBUG
+       printf("SEARCHING FOR %s\n", icn);
+#endif
+       theme_path = ecore_desktop_paths_file_find(ecore_desktop_paths_icons, icn,
+                                                  2, NULL, NULL);
+       if (!theme_path)  goto error;
+        theme_dir = ecore_file_dir_get(theme_path);
+     }
+   if (!theme_path) goto error;
+   result = calloc(1, sizeof(Ecore_Desktop_Icon_Theme));
+   if (!result) goto error;
+   result->data = ecore_desktop_ini_get(theme_path);
+   if (!result->data) goto error;
+   result->group = ecore_hash_get(result->data, "Icon Theme");
+   if (!result->group) goto error;
+
+
+   if ((strcmp(icon_theme, "hicolor") == 0))
+      result->hicolor = 1;
+
+   /* According to the spec, name and comment are required, but we can fake those easily enough. */
+   value = ecore_hash_get(result->group, "Name");
+   if (!value) value = icon_theme;
+   result->name = strdup(value);
+   value = ecore_hash_get(result->group, "Comment");
+   if (!value) value = "No comment provided.";
+   result->comment = strdup(value);
+   value = ecore_hash_get(result->group, "Inherits");
+   if (value)
+     {
+       result->inherits = strdup(value);
+       if (result->inherits)
+         result->Inherits = ecore_desktop_paths_to_list(result->inherits);
+     }
+   value = ecore_hash_get(result->group, "Example");
+   if (!value) value = "exec";
+   result->example = strdup(value);
+   value = ecore_hash_get(result->group, "Directories");
+   /* FIXME: Directories is also required, don't feel like faking it for now. */
+   if (!value) goto error;
+   result->directories = strdup(value);
+   Directories = ecore_desktop_paths_to_list(result->directories);
+   if (!Directories) goto error;
+   result->Directories = ecore_list_new();
+   if (!result->Directories) goto error;
+   ecore_list_free_cb_set(result->Directories,
+                         ECORE_FREE_CB(_ecore_desktop_icon_theme_directory_destroy));
+   ecore_list_first_goto(Directories);
+   while ((directory = ecore_list_next(Directories)) != NULL)
+     {
+       Ecore_Hash         *sub_group;
+       Ecore_Desktop_Icon_Theme_Directory *dir;
+
+       /* Get the details for this theme directory. */
+       sub_group = ecore_hash_get(result->data, directory);
+       dir = calloc(1, sizeof (Ecore_Desktop_Icon_Theme_Directory));
+       if ((dir) && (sub_group))
+         {
+            const char *size, *minsize, *maxsize, *threshold;
+             char full_path[PATH_MAX];
+
+             dir->path = strdup(directory);
+            snprintf(full_path, PATH_MAX, "%s/%s", theme_dir, directory);
+             dir->full_path = strdup(full_path);
+            value = ecore_hash_get(sub_group, "Type");
+            if (!value)
+              value = "Threshold";
+            dir->type = strdup(value);
+            size = ecore_hash_get(sub_group, "Size");
+            minsize = ecore_hash_get(sub_group, "MinSize");
+            maxsize = ecore_hash_get(sub_group, "MaxSize");
+            threshold = ecore_hash_get(sub_group, "Threshold");
+            if (size)
+              {
+                 if (!minsize)
+                   minsize = size;
+                 if (!maxsize)
+                   maxsize = size;
+                 if (!threshold)
+                   threshold = "2";
+                 dir->minimum = atoi(minsize);
+                 dir->maximum = atoi(maxsize);
+                 dir->threshold = atoi(threshold);
+
+                 dir->size = atoi(size);
+                 ecore_list_append(result->Directories, dir);
+              }
+            else
+              _ecore_desktop_icon_theme_directory_destroy(dir);
+         }
+       else if (dir)
+         _ecore_desktop_icon_theme_directory_destroy(dir);
+     }
+   ecore_list_destroy(Directories);
+
+   /* This passes the basic validation tests, mark it as real and cache it. */
+   result->path = strdup(theme_path);
+   ecore_hash_set(icon_theme_cache, strdup(icon_theme), result);
+   ecore_hash_destroy(result->data);
+   result->data = NULL;
+   result->group = NULL;
+
+done:
+   if (theme_dir)  free(theme_dir);
+   if (theme_path) free(theme_path);
+
+   /* Cache the directories. */
+   _ecore_desktop_icon_theme_cache_check(result);
+   return result;
+
+error:
+   if (theme_dir)  free(theme_dir);
+   if (theme_path) free(theme_path);
+   if (result)
+     {
+       if (result->data) ecore_hash_destroy(result->data);
+       _ecore_desktop_icon_theme_destroy(result);
+     }
+   return NULL;
+}
+
+/**
+ * Free whatever resources are used by an Ecore_Desktop_Icon_Theme.
+ *
+ * There are internal resources used by each Ecore_Desktop_Icon_Theme
+ * This releases those resources.
+ *
+ * @param  icon_theme  An Ecore_Desktop_Icon_Theme.
+ * @ingroup Ecore_Desktop_Icon_Group
+ */
+void
+ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme * icon_theme)
+{
+   /* This is just a dummy, because these structures are cached. */
+   /* Later versions of the cache may reference count, then this will be useful. */
+
+   icon_theme = NULL;
+}
+
+static void
+_ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme * icon_theme)
+{
+   if (icon_theme->path)
+      free(icon_theme->path);
+   if (icon_theme->name)
+      free(icon_theme->name);
+   if (icon_theme->comment)
+      free(icon_theme->comment);
+   if (icon_theme->example)
+      free(icon_theme->example);
+   if (icon_theme->inherits)
+      free(icon_theme->inherits);
+   if (icon_theme->directories)
+      free(icon_theme->directories);
+   if (icon_theme->Directories)
+      ecore_list_destroy(icon_theme->Directories);
+   if (icon_theme->Inherits)
+      ecore_list_destroy(icon_theme->Inherits);
+   free(icon_theme);
+}
+
+static void
+_ecore_desktop_icon_theme_directory_destroy(Ecore_Desktop_Icon_Theme_Directory *
+                                           icon_theme_directory)
+{
+   if (icon_theme_directory->path)
+      free(icon_theme_directory->path);
+   if (icon_theme_directory->full_path)
+      free(icon_theme_directory->full_path);
+   if (icon_theme_directory->type)
+      free(icon_theme_directory->type);
+   if (icon_theme_directory->icons)
+      ecore_hash_destroy(icon_theme_directory->icons);
+   free(icon_theme_directory);
+}
+
+static inline void
+_ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme)
+{
+   /* The spec has this to say -
+    *
+    * "The algorithm as described in this document works by always looking up 
+    * filenames in directories (a stat in unix terminology). A good 
+    * implementation is expected to read the directories once, and do all 
+    * lookups in memory using that information.
+    *
+    * "This caching can make it impossible for users to add icons without having 
+    * to restart applications. In order to handle this, any implementation that 
+    * does caching is required to look at the mtime of the toplevel icon 
+    * directories when doing a cache lookup, unless it already did so less than 
+    * 5 seconds ago. This means that any icon editor or theme installation 
+    * program need only to change the mtime of the the toplevel directory where 
+    * it changed the theme to make sure that the new icons will eventually get 
+    * used."
+    *
+    * The phrase "toplevel icon directories" is ambigous, but I guess they mean 
+    * the directory where the index.theme file lives.
+    */
+
+   struct stat         st;
+   int                 clear = 0;
+
+   if (ecore_time_get() > (icon_theme->last_checked + 5.0))
+     {
+       if (stat(icon_theme->path, &st) >= 0)
+         {
+            icon_theme->last_checked = ecore_time_get();
+            if (st.st_mtime > icon_theme->mtime)
+              {
+                 clear = 1;
+                 icon_theme->mtime = st.st_mtime;
+              }
+         }
+     }
+
+   if (clear)
+     {
+        Ecore_Desktop_Icon_Theme_Directory *dir;
+        char full_path[PATH_MAX];
+
+        ecore_list_first_goto(icon_theme->Directories);
+        while ((dir = ecore_list_next(icon_theme->Directories)) != NULL)
+          {
+             if (dir->icons)
+              {
+                   ecore_hash_destroy(dir->icons);
+                  dir->icons = NULL;
+              }
+             dir->icons = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+             if (dir->icons)
+               {
+                 Ecore_List *files;
+
+                  ecore_hash_free_key_cb_set(dir->icons, free);
+                  ecore_hash_free_value_cb_set(dir->icons, free);
+                  files = ecore_file_ls(dir->full_path);
+                  if (files)
+                    {
+                       const char *file;
+
+                       while ((file = ecore_list_next(files)))
+                         {
+                            snprintf(full_path, PATH_MAX, "%s/%s", dir->full_path, file);
+                           ecore_hash_set(dir->icons, strdup(file), strdup(full_path));
+                         }
+                       ecore_list_destroy(files);
+                    }
+              }
+          }
+     }
+}
diff --git a/src/lib/ecore_desktop/ecore_desktop_menu.c b/src/lib/ecore_desktop/ecore_desktop_menu.c
new file mode 100644 (file)
index 0000000..3afc397
--- /dev/null
@@ -0,0 +1,1844 @@
+/*
+ * This conforms with the freedesktop.org Desktop Menu Specification version 0.92
+ *
+ * This is gonna be repetative and slow.  The idea is to first get it to correctly
+ * follow the spec in a way that is easy to check.  Only then can we start to 
+ * optomize into "ugly but fast".
+ *
+ * There are notes at the very end about all those nasty steps we need to do to 
+ * follow the spec.
+ */
+
+#include <Ecore.h>
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+#include "ecore_private.h"
+
+#include <dirent.h>
+#include <sys/stat.h>
+#include <libgen.h>
+
+//#define DEBUG 1
+
+struct _ecore_desktop_menu_expand_apps_data
+{
+   char               *path;
+   Ecore_Hash         *pool;
+   int                 length;
+};
+
+struct _ecore_desktop_menu_unxml_data
+{
+   char               *file;
+   char               *base;
+   char               *path;
+   Ecore_Desktop_Tree *stack, *merge_stack;
+   int                 unallocated, level;
+};
+
+struct _ecore_desktop_menu_generate_data
+{
+   char               *name, *path;
+   Ecore_Desktop_Tree *rules;
+   Ecore_Hash         *pool, *apps;
+   int                 unallocated;
+
+   Ecore_Desktop_Tree *rule;
+   int                 include;
+};
+
+struct _ecore_desktop_menu_legacy_data
+{
+   Ecore_Desktop_Tree *merge;
+   Ecore_Desktop_Tree *current;
+   char               *menu;
+   char               *prefix;
+   char               *path;
+   int                 length, menu_length, level;
+};
+
+static int          _ecore_desktop_menu_make_apps(const void *data,
+                                                 Ecore_Desktop_Tree * tree,
+                                                 int element, int level);
+static Ecore_Desktop_Tree *_ecore_desktop_menu_get0(char *file,
+                                                   Ecore_Desktop_Tree *
+                                                   merge_stack, int level);
+static Ecore_Desktop_Tree *_ecore_desktop_menu_create_menu(void);
+static int          _ecore_desktop_menu_unxml(const void *data,
+                                             Ecore_Desktop_Tree * tree,
+                                             int element, int level);
+static int          _ecore_desktop_menu_check_directory(void *data,
+                                                       const char *path);
+static int          _ecore_desktop_menu_check_menu(void *data,
+                                                  const char *path);
+static int          _ecore_desktop_menu_legacy_menu_dir(void *data,
+                                                       const char *path);
+static int          _ecore_desktop_menu_legacy_menu(void *data,
+                                                   const char *path);
+static void         _ecore_desktop_menu_unxml_rules(Ecore_Desktop_Tree * rules,
+                                                   Ecore_Desktop_Tree * tree,
+                                                   char type, char sub_type);
+static void         _ecore_desktop_menu_unxml_moves(Ecore_Desktop_Tree * menu,
+                                                   Ecore_Desktop_Tree * tree);
+static void         _ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree,
+                                                Ecore_List * paths, const char *pre,
+                                                const char *post, char *extra,
+                                                int element);
+static int          _ecore_desktop_menu_expand_apps(struct
+                                                   _ecore_desktop_menu_unxml_data
+                                                   *unxml_data, char *app_dir,
+                                                   Ecore_Hash * pool);
+static int          _ecore_desktop_menu_check_app(void *data, const char *path);
+
+static int          _ecore_desktop_menu_merge(const void *data,
+                                             Ecore_Desktop_Tree * tree,
+                                             int element, int level);
+static int          _ecore_desktop_menu_expand_default_dirs(const void *data,
+                                                           Ecore_Desktop_Tree
+                                                           * tree,
+                                                           int element,
+                                                           int level);
+
+static int          _ecore_desktop_menu_generate(const void *data,
+                                                Ecore_Desktop_Tree * tree,
+                                                int element, int level);
+static int          _ecore_desktop_menu_is_include(const void *data, Ecore_Desktop_Tree * tree, int element, int level __UNUSED__);
+static void         _ecore_desktop_menu_inherit_apps(void *value,
+                                                    void *user_data);
+static void         _ecore_desktop_menu_select_app(void *value,
+                                                  void *user_data);
+static int          _ecore_desktop_menu_apply_rules(struct
+                                                   _ecore_desktop_menu_generate_data
+                                                   *generate_data,
+                                                   Ecore_Desktop_Tree * rule,
+                                                   char *key,
+                                                   Ecore_Desktop * desktop);
+
+/**
+ * @defgroup Ecore_Desktop_Menu_Group menu Functions
+ *
+ * Functions that deal with freedesktop.org menus.
+ */
+
+EAPI void
+ecore_desktop_menu_for_each(void (*func)
+                           (const char *name, const char *path, const char *directory, Ecore_Hash * apps))
+{
+   char               *menu_file;
+
+   /* Find the main menu file. */
+   menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus,
+                                            "applications.menu", -1, NULL,
+                                            NULL);
+   if (!menu_file)
+     {
+       /* Try various quirks of various systems and other wms. */
+       menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus,
+                                                 "kde-applications.menu", -1, NULL,
+                                                 NULL);
+        if (!menu_file)
+          {
+            menu_file = ecore_desktop_paths_file_find(ecore_desktop_paths_menus,
+                                                 "debian-menu.menu", -1, NULL,
+                                                 NULL);
+            /* FIXME: If all else fails, run debians funky menu generator shit. */
+         }
+     }
+
+   if (menu_file)
+     {
+       Ecore_Desktop_Tree *menus;
+
+       /* convert the xml into menus */
+       menus = ecore_desktop_menu_get(menu_file);
+       if (menus)
+         {
+            /* create the .desktop and order files from the menu */
+            ecore_desktop_tree_foreach(menus, 0, _ecore_desktop_menu_make_apps,
+                                       func);
+// FIXME: Can't free this just yet, causes major memory corruption.
+// this leaks a LOT (428,200 bytes in one valgrind run...)
+//               ecore_desktop_tree_del(menus);
+         }
+       free(menu_file);
+     }
+}
+
+static int
+_ecore_desktop_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree,
+                             int element, int level __UNUSED__)
+{
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       if (strncmp((char *)tree->elements[element].element, "<MENU ", 6) == 0)
+         {
+            int                 len;
+            char               *path;
+            char               *name;
+            char               *directory;
+            Ecore_Hash         *apps;
+            void                (*func) (char *name, char *path, char *directory,
+                                         Ecore_Hash * apps);
+
+            func = data;
+            name = (char *)tree->elements[element].element;
+            directory = name;
+            directory += 8;
+            path = strchr(directory, '<');
+            path++;
+            directory = strchr(path, '<');
+            directory++;
+            len = strlen(directory);
+            if (len > 2)
+              {
+                 path = strdup(directory);
+                 if (path)
+                   {
+                      path[len - 1] = '\0';
+                       /* FIXME: Figure out what to do if it's just ".directory". */
+                      directory = ecore_desktop_paths_file_find(ecore_desktop_paths_directories, path, 0, NULL, NULL);
+                      free(path);
+                   }
+                 else
+                    directory = NULL;
+              }
+            else
+               directory = NULL;
+            path = (char *)tree->elements[element + 1].element;
+//             pool = (Ecore_Hash *) tree->elements[element + 2].element;
+            apps = (Ecore_Hash *) tree->elements[element + 4].element;
+            path = &path[11];
+#ifdef DEBUG
+            printf("OUTPUTTING MENU - %s \t\t%s \t\t%s\n", path, name, directory);
+#endif
+            if (func)
+               func(name, path, directory, apps);
+            free(directory);
+         }
+     }
+   return 0;
+}
+
+/**
+ * Decode a freedesktop.org menu XML jungle.
+ *
+ * Using the algorithm specified by freedesktop.org, fully decode
+ * a menu based on an initial menu file.
+ *
+ * @param   file The base file for the menu.
+ * @return  The resulting menu tree.
+ * @ingroup Ecore_Desktop_Menu_Group
+ */
+
+Ecore_Desktop_Tree *
+ecore_desktop_menu_get(char *file)
+{
+   return _ecore_desktop_menu_get0(file, NULL, 0);
+}
+
+static Ecore_Desktop_Tree *
+_ecore_desktop_menu_get0(char *file, Ecore_Desktop_Tree * merge_stack,
+                        int level)
+{
+   Ecore_Desktop_Tree *menu_xml;
+   struct _ecore_desktop_menu_unxml_data data;
+   int                 oops = 0;
+
+   /* Preperation. */
+   data.stack = ecore_desktop_tree_new(NULL);
+   /* FIXME data.base and data.path leak */
+   data.base = ecore_file_strip_ext(ecore_file_file_get(file));
+   data.path = ecore_file_dir_get(file);
+   if ((level == 0) && (merge_stack == NULL))
+      merge_stack = ecore_desktop_tree_new(NULL);
+#ifdef DEBUG
+printf("MENU FILE %d - %s\n", level, file);
+#endif
+   menu_xml = ecore_desktop_xmlame_get(file);
+   if ((data.stack) && (data.base) && (data.path) && (merge_stack)
+       && (menu_xml))
+     {
+       int                 i;
+
+       data.file = file;
+       data.level = level;
+       data.merge_stack = merge_stack;
+
+       /* Setup the merge stack. */
+       if (merge_stack->size <= level)
+         {
+      /* XXX storing a pointer to a static string probably isn't a good idea. this is most likely the cause of the valgrind error mentioned below. (once this function has exited that memory will no longer be valid) */
+            while (merge_stack->size < level)
+               ecore_desktop_tree_add(merge_stack, "");
+            ecore_desktop_tree_add(merge_stack, file);
+         }
+       else
+          merge_stack->elements[level].element = file;
+
+       /* Find out if we are looping. */
+       for (i = 0; i < level; i++)
+         {
+            char               *text;
+
+            /* I can safely assume that they are all strings. */
+            text = (char *)merge_stack->elements[i].element;
+/* printf("---  %s  ---  %s\n", text, file);
+            if (text)
+            if (file) */
+            if (strcmp(text, file) == 0)
+              {
+/* FIXME: valgrind says -
+==5761== Conditional jump or move depends on uninitialised value(s)
+==5761==    at 0x1B90565C: strcmp (in /usr/lib/valgrind/vgpreload_memcheck.so)
+==5761==    by 0x1BA3E984: _ecore_desktop_menu_get0 (ecore_desktop_menu.c:176)
+==5761==    by 0x1BA3FE3F: _ecore_desktop_menu_merge (ecore_desktop_menu.c:1146)
+==5761==    by 0x1BA3D5A2: ecore_desktop_tree_foreach (ecore_desktop_tree.c:267)
+ * which is the strcmp just above.  But it doesn't complain about the first two if's, 
+ * or the printf, which I inserted to try and track this down.
+ * No idea what it actually is complaining about, so I'll comment it for future study.
+ *
+ * This is probably caused by the fact that a static string was passed into the
+ * tree. See the comment above where this occurs.
+ */
+                 fprintf(stderr,
+                         "\n### Oops, infinite menu merging loop detected at %s\n",
+                         file);
+                 oops++;
+              }
+         }
+
+       if (oops == 0)
+         {
+            /* Get on with it. */
+            ecore_desktop_tree_foreach(menu_xml, 0, _ecore_desktop_menu_unxml,
+                                       &data);
+            ecore_desktop_tree_foreach(menu_xml, 0, _ecore_desktop_menu_merge,
+                                       &data);
+
+            /* The rest of this is only done after ALL the menus have been merged. */
+            if (level == 0)
+              {
+                 ecore_desktop_tree_foreach(menu_xml, 0,
+                                            _ecore_desktop_menu_expand_default_dirs,
+                                            &data);
+
+#ifdef DEBUG
+                 ecore_desktop_tree_dump(menu_xml, 0);
+                 printf("\n\n");
+#endif
+
+                 data.unallocated = FALSE;
+                 ecore_desktop_tree_foreach(menu_xml, 0,
+                                            _ecore_desktop_menu_generate,
+                                            &data);
+
+                 data.unallocated = TRUE;
+                 ecore_desktop_tree_foreach(menu_xml, 0,
+                                            _ecore_desktop_menu_generate,
+                                            &data);
+
+#ifdef DEBUG
+//               ecore_desktop_tree_dump(menu_xml, 0);
+//               printf("\n\n");
+#endif
+              }
+         }
+     }
+   else
+      oops++;
+
+   if (oops)
+     {
+       E_FN_DEL(ecore_desktop_tree_del, (menu_xml));
+       if (level == 0)
+         {
+            E_FN_DEL(ecore_desktop_tree_del, (merge_stack));
+         }
+   E_FREE(data.path);
+   E_FREE(data.base);
+   E_FN_DEL(ecore_desktop_tree_del, (data.stack));
+     }
+
+
+   return menu_xml;
+}
+
+static int
+_ecore_desktop_menu_unxml(const void *data, Ecore_Desktop_Tree * tree,
+                         int element, int level)
+{
+   struct _ecore_desktop_menu_unxml_data *unxml_data;
+
+   unxml_data = (struct _ecore_desktop_menu_unxml_data *)data;
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       if (strncmp((char *)tree->elements[element].element, "<!", 2) == 0)
+         {
+            tree->elements[element].type =
+               ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+            tree->elements[element].element = NULL;
+         }
+       else if (strcmp((char *)tree->elements[element].element, "<Menu") == 0)
+         {
+            Ecore_Desktop_Tree *menu;
+
+            menu = _ecore_desktop_menu_create_menu();
+            if (menu)
+              {
+                 int                 i;
+                 char               *flags = "    ", *name = "", *directory =
+                    "", *menu_path = "";
+                 char                temp[PATH_MAX];
+
+                 flags = (char *)menu->elements[0].element;
+                 flags += 7;
+                 tree->elements[element].element = menu;
+                 tree->elements[element].type =
+                    ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
+                 for (i = element + 1; i < tree->size; i++)
+                   {
+                      int                 result = 0;
+
+                      if (tree->elements[i].type ==
+                          ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                        {
+                           if (strncmp
+                               ((char *)tree->elements[i].element, "<!",
+                                2) == 0)
+                             {
+                                tree->elements[i].type =
+                                   ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                                tree->elements[i].element = NULL;
+                             }
+                           else
+                              if (strcmp
+                                  ((char *)tree->elements[i].element,
+                                   "<Deleted/") == 0)
+                             {
+                                flags[1] = 'D';
+                                result = 1;
+                             }
+                           else
+                              if (strcmp
+                                  ((char *)tree->elements[i].element,
+                                   "<NotDeleted/") == 0)
+                             {
+                                flags[1] = ' ';
+                                result = 1;
+                             }
+                           else
+                              if (strcmp
+                                  ((char *)tree->elements[i].element,
+                                   "<OnlyUnallocated/") == 0)
+                             {
+                                flags[2] = 'O';
+                                result = 1;
+                             }
+                           else
+                              if (strcmp
+                                  ((char *)tree->elements[i].element,
+                                   "<NotOnlyUnallocated/") == 0)
+                             {
+                                flags[2] = ' ';
+                                result = 1;
+                             }
+                           else
+                              if (strcmp
+                                  ((char *)tree->elements[i].element,
+                                   "</Menu") == 0)
+                             {
+                                result = 1;
+                             }
+                           else
+                             {
+                                ecore_desktop_tree_extend(menu,
+                                                          (char *)tree->
+                                                          elements[i].element);
+                                result = 1;
+                             }
+                        }
+                      else if (tree->elements[i].type ==
+                               ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                        {
+                           Ecore_Desktop_Tree *sub;
+
+                           sub =
+                              (Ecore_Desktop_Tree *) tree->elements[i].element;
+                           if ((sub) && (sub->size))
+                             {
+                                if (sub->elements[0].type ==
+                                    ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                                  {
+                                     if (strcmp
+                                         ((char *)sub->elements[0].element,
+                                          "<Name") == 0)
+                                       {
+                                          int                 i, length = 0;
+
+                                          name =
+                                             strdup((char *)sub->elements[1].
+                                                    element);
+                                          sprintf(temp,
+                                                  "<MENU <%.4s> <%s> <%s>",
+                                                  flags, name, directory);
+                                          menu->elements[0].element =
+                                             strdup(temp);
+                                          ecore_desktop_tree_track(menu, name);
+                                          ecore_desktop_tree_track(menu,
+                                                                   menu->
+                                                                   elements[0].
+                                                                   element);
+                                          flags =
+                                             (char *)menu->elements[0].element;
+                                          flags += 7;
+                                          /* The rest of this is probably not needed, except to ease debugging. */
+                                          if (unxml_data->stack->size <= level)
+                                            {
+                                               while (unxml_data->stack->size <
+                                                      level)
+                                                  ecore_desktop_tree_add
+                                                     (unxml_data->stack, "");
+                                               ecore_desktop_tree_add
+                                                  (unxml_data->stack, name);
+                                            }
+                                          else
+                                             unxml_data->stack->
+                                                elements[level].element = name;
+                                          temp[0] = '\0';
+                                          for (i = 0; i <= level; i++)
+                                            {
+                                               char               *text;
+
+                                               /* I can safely assume that they are all strings. */
+                                               text =
+                                                  (char *)unxml_data->stack->
+                                                  elements[i].element;
+                                               if (text[0] != '\0')
+                                                 {
+                                                    sprintf(&temp[length],
+                                                            "%s%s",
+                                                            ((length) ? "/" :
+                                                             ""), text);
+                                                    length +=
+                                                       strlen(text) +
+                                                       ((length) ? 1 : 0);
+                                                 }
+                                            }
+                                          menu_path = strdup(temp);
+                                          sprintf(temp, "<MENU_PATH %s",
+                                                  menu_path);
+                                          menu->elements[1].element =
+                                             strdup(temp);
+                                          ecore_desktop_tree_track(menu,
+                                                                   menu_path);
+                                          ecore_desktop_tree_track(menu,
+                                                                   menu->
+                                                                   elements[1].
+                                                                   element);
+                                          result = 1;
+                                       }
+                                     /* FIXME: Move this to later in the sequence. */
+                                     else
+                                        if (strcmp
+                                            ((char *)sub->elements[0].element,
+                                             "<Directory") == 0)
+                                       {
+                                          directory =
+                                             strdup((char *)sub->elements[1].
+                                                    element);
+                                          sprintf(temp,
+                                                  "<MENU <%.4s> <%s> <%s>",
+                                                  flags, name, directory);
+                                          menu->elements[0].element =
+                                             strdup(temp);
+                                          ecore_desktop_tree_track(menu,
+                                                                   directory);
+                                          ecore_desktop_tree_track(menu,
+                                                                   menu->
+                                                                   elements[0].
+                                                                   element);
+                                          flags =
+                                             (char *)menu->elements[0].element;
+                                          flags += 7;
+                                          result = 1;
+                                       }
+                                     else
+                                        if (strcmp
+                                            ((char *)sub->elements[0].element,
+                                             "<Menu") == 0)
+                                       {
+                                          _ecore_desktop_menu_unxml(data, sub,
+                                                                    0,
+                                                                    level + 1);
+                                          ecore_desktop_tree_add_child(menu,
+                                                                       (Ecore_Desktop_Tree
+                                                                        *)
+                                                                       sub->
+                                                                       elements
+                                                                       [0].
+                                                                       element);
+                                          /* FIXME: Dunno if this causes a memory leak, but for now we play it safe. */
+                                          tree->elements[i].type =
+                                             ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                                          tree->elements[i].element = NULL;
+//                                                 result = 1;
+                                       }
+                                     else
+                                        if (strcmp
+                                            ((char *)sub->elements[0].element,
+                                             "<Move") == 0)
+                                       {
+                                          _ecore_desktop_menu_unxml_moves
+                                             (menu, sub);
+                                          result = 1;
+                                       }
+                                     else
+                                       {
+                                          if ((sub->size == 3)
+                                              && (sub->elements[1].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                                              && (((char *)sub->elements[1].element)[0] != '<'))
+                                            {
+                                               char temp[PATH_MAX];
+
+                                               snprintf(temp, PATH_MAX, "%s %s",
+                                                       (char *)sub->elements[0].element,
+                                                       (char *)sub->elements[1].element);
+                                               ecore_desktop_tree_extend(menu, temp);
+                                               result = 1;
+                                            }
+                                          else
+                                            {
+                                               ecore_desktop_tree_add_child
+                                                  (menu, sub);
+                                               tree->elements[i].type =
+                                                  ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                                               tree->elements[i].element =
+                                                  NULL;
+                                            }
+                                       }
+                                  }
+                             }
+                        }
+                      if (result)
+                        {
+                           if (tree->elements[i].type ==
+                               ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                              ecore_desktop_tree_del((Ecore_Desktop_Tree *)
+                                                     tree->elements[i].
+                                                     element);
+                           tree->elements[i].type =
+                              ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                           tree->elements[i].element = NULL;
+                        }
+                   }
+
+                 /* Add it if it has not been deleted. */
+                 if (flags[1] != 'D')
+                   {
+                      tree->elements[element].element = menu;
+                      tree->elements[element].type =
+                         ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
+                   }
+              }
+         }
+     }
+   return 0;
+}
+
+static Ecore_Desktop_Tree *
+_ecore_desktop_menu_create_menu()
+{
+   Ecore_Desktop_Tree *menu, *rules;
+   Ecore_Hash         *pool, *apps;
+
+   menu = ecore_desktop_tree_new(NULL);
+   rules = ecore_desktop_tree_new(NULL);
+   pool = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   apps = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   if ((menu) && (rules) && (pool) && (apps))
+     {
+       ecore_hash_free_key_cb_set(pool, free);
+       ecore_hash_free_value_cb_set(pool, free);
+       ecore_hash_free_key_cb_set(apps, free);
+       ecore_hash_free_value_cb_set(apps, free);
+       ecore_desktop_tree_extend(menu, "<MENU <    > <> <>");
+       ecore_desktop_tree_extend(menu, "<MENU_PATH ");
+       ecore_desktop_tree_add_hash(menu, pool);
+       ecore_desktop_tree_add_child(menu, rules);
+       ecore_desktop_tree_add_hash(menu, apps);
+     }
+   else
+     {
+       if (apps)
+          ecore_hash_destroy(apps);
+       if (pool)
+          ecore_hash_destroy(pool);
+       if (rules)
+          ecore_desktop_tree_del(rules);
+       if (menu)
+          ecore_desktop_tree_del(menu);
+       menu = NULL;
+     }
+
+   return menu;
+}
+
+static int
+_ecore_desktop_menu_check_directory(void *data, const char *path)
+{
+   char               *p;
+   Ecore_Desktop_Tree *merge;
+
+   merge = (Ecore_Desktop_Tree *) data;
+   p = strrchr(path, '.');
+   if (p)
+     {
+       if (strcmp(p, ".directory") == 0)
+         {
+            char                merge_file[PATH_MAX];
+
+            sprintf(merge_file, "<Directory %s", path);
+            ecore_desktop_tree_extend(merge, merge_file);
+         }
+     }
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_check_menu(void *data, const char *path)
+{
+   char               *p;
+   Ecore_Desktop_Tree *merge;
+
+   merge = (Ecore_Desktop_Tree *) data;
+   p = strrchr(path, '.');
+   if (p)
+     {
+       if (strcmp(p, ".menu") == 0)
+         {
+            char                merge_file[PATH_MAX];
+
+            sprintf(merge_file, "<MergeFile type=\"path\" %s", path);
+            ecore_desktop_tree_extend(merge, merge_file);
+         }
+     }
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_legacy_menu_dir(void *data, const char *path)
+{
+   struct _ecore_desktop_menu_legacy_data *legacy_data;
+   Ecore_Desktop_Tree *menu;
+   char               *temp_path;
+   int                 start;
+   int                 i, count = 0;
+
+   legacy_data = (struct _ecore_desktop_menu_legacy_data *)data;
+   for (i = legacy_data->length; path[i] != '\0'; i++)
+     {
+       if (path[i] == '/')
+          count++;
+     }
+   if (count == 1)
+     {
+       legacy_data->current = legacy_data->merge;
+       legacy_data->level = 0;
+     }
+   else if (count <= legacy_data->level)
+     {
+       if ((legacy_data->current) && (legacy_data->current->parent))
+         {
+            legacy_data->current = legacy_data->current->parent;
+            legacy_data->level--;
+         }
+     }
+
+   start = legacy_data->length;
+   count = 0;
+   temp_path = strdup(path);
+   if (temp_path)
+     {
+       for (i = legacy_data->length; temp_path[i] != '\0'; i++)
+         {
+            if (temp_path[i] == '/')
+              {
+                 if (count >= legacy_data->level)
+                   {
+                      temp_path[i] = '\0';
+                      menu = _ecore_desktop_menu_create_menu();
+                      if (menu)
+                        {
+                           char                temp[PATH_MAX];
+
+                           sprintf(temp, "<MENU <   L> <%s> <>",
+                                   &temp_path[start]);
+                           menu->elements[0].element = strdup(temp);
+                           ecore_desktop_tree_track(menu,
+                                                    menu->elements[0].element);
+                           sprintf(temp, "<MENU_PATH %s/%s", legacy_data->menu,
+                                   &temp_path[legacy_data->length]);
+                           menu->elements[1].element = strdup(temp);
+                           ecore_desktop_tree_track(menu,
+                                                    menu->elements[1].element);
+
+                           ecore_desktop_tree_add_child(legacy_data->current,
+                                                        menu);
+                           /*  This is not needed, but if it was, this is where it would go.
+                            * sprintf(temp, "<AppDir %s/", temp_path);
+                            * ecore_desktop_tree_extend(menu, temp);
+                            */
+                           sprintf(temp, "<DirectoryDir %s/", temp_path);
+                           ecore_desktop_tree_extend(menu, temp);
+
+                           legacy_data->current = menu;
+                           legacy_data->level++;
+                        }
+                      temp_path[i] = '/';
+                   }
+                 start = i + 1;
+                 count++;
+              }
+         }
+       free(temp_path);
+     }
+
+   legacy_data->level = count;
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_legacy_menu(void *data, const char *path)
+{
+   struct _ecore_desktop_menu_legacy_data *legacy_data;
+   char               *menu_path;
+   char               *file;
+   char                temp[PATH_MAX];
+   int                 i, count = 0, menu_count = 0;
+
+   legacy_data = (struct _ecore_desktop_menu_legacy_data *)data;
+   if ((legacy_data->current) && (legacy_data->current->size > 0) &&
+       (legacy_data->current->elements[1].type ==
+       ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING))
+     {
+       menu_path = (char *)legacy_data->current->elements[1].element;
+       menu_path += 12 + legacy_data->menu_length;
+     }
+   else
+     {
+       menu_path = "";
+       printf("  PROBLEM IN LEGACYDIR FILE - %s - %s  %s\n",
+              legacy_data->prefix, legacy_data->path,
+              &path[legacy_data->length]);
+     }
+
+   for (i = legacy_data->length; path[i] != '\0'; i++)
+     {
+       if (path[i] == '/')
+          count++;
+     }
+   for (i = 0; menu_path[i] != '\0'; i++)
+     {
+       if (menu_path[i] == '/')
+          menu_count++;
+     }
+   /* FIXME: The (legacy_data->current) test is just to patch a seggie, find out why. */
+   while ((menu_count >= count) && (legacy_data->current))
+     {
+       legacy_data->current = legacy_data->current->parent;
+       menu_count--;
+     }
+   if ((legacy_data->current) && (legacy_data->current->size > 0) &&
+       (legacy_data->current->elements[1].type ==
+       ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING))
+     {
+       menu_path = (char *)legacy_data->current->elements[1].element;
+       menu_path += 12 + legacy_data->menu_length;
+     }
+   else
+     {
+       /* FIXME:  Bugger, a corner case.
+        * If this is .directory, then maybe ignore it?
+        * If this is a desktop, we need to put it into the pool of the menu that legacy_data->merge will get merged into.
+        */
+       menu_path = "";
+       printf("  LEGACYDIR FILE - %s - %s  %s\n", legacy_data->prefix,
+              legacy_data->path, &path[legacy_data->length]);
+       return 0;
+     }
+
+   menu_count = strlen(menu_path);
+   if (menu_count)
+      menu_count++;
+   file = (char *)&path[legacy_data->length + menu_count];
+   count = strlen(file);
+
+   if (strcmp(".directory", file) == 0)
+     {
+       menu_path = (char *)legacy_data->current->elements[0].element;
+       menu_count = strlen(menu_path);
+       menu_path[menu_count - 3] = '\0';
+       sprintf(temp, "%s <.directory>", menu_path);
+       legacy_data->current->elements[0].element = strdup(temp);
+       ecore_desktop_tree_track(legacy_data->current,
+                                legacy_data->current->elements[0].element);
+     }
+   else if (strcmp(".desktop", &file[count - 8]) == 0)
+     {
+       Ecore_Hash         *pool;
+       Ecore_Desktop_Tree *rules;
+
+       pool = (Ecore_Hash *) legacy_data->current->elements[2].element;
+       rules =
+          (Ecore_Desktop_Tree *) legacy_data->current->elements[3].element;
+       if (rules->size == 0)
+         {
+            Ecore_Desktop_Tree *new_rules;
+
+            new_rules = ecore_desktop_tree_new(NULL);
+            if (new_rules)
+               ecore_desktop_tree_add_child(rules, new_rules);
+         }
+       sprintf(temp, "%s%s", legacy_data->prefix, file);
+       ecore_hash_set(pool, strdup(temp), strdup(path));
+#ifdef DEBUG
+//     printf
+//        ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
+//         path, file, temp);
+#endif
+       if (rules->size > 0)
+         {
+            rules = (Ecore_Desktop_Tree *) rules->elements[0].element;
+            sprintf(temp, "IOF %s%s", legacy_data->prefix, file);
+            ecore_desktop_tree_extend(rules, temp);
+         }
+     }
+#ifdef DEBUG
+   else
+      printf("PROBLEM - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s\n",
+            path, file);
+#endif
+
+   return 0;
+}
+
+static void
+_ecore_desktop_menu_unxml_rules(Ecore_Desktop_Tree * rules,
+                               Ecore_Desktop_Tree * tree, char type,
+                               char sub_type)
+{
+   int                 i;
+   char                temp[PATH_MAX];
+
+   for (i = 0; i < tree->size; i++)
+     {
+       if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+         {
+             /* FIXME <All /> or <All foo="bar"> would be valid input (which this won't catch) */
+            if (strcmp((char *)tree->elements[i].element, "<All/") == 0)
+              {
+                 sprintf(temp, "%c%cA", type, sub_type);
+                 ecore_desktop_tree_extend(rules, temp);
+              }
+            else if (strcmp((char *)tree->elements[i].element, "<Filename") ==
+                     0)
+              {
+                 sprintf(temp, "%c%cF %s", type, sub_type,
+                         (char *)tree->elements[i + 1].element);
+                 ecore_desktop_tree_extend(rules, temp);
+              }
+            else if (strcmp((char *)tree->elements[i].element, "<Category") ==
+                     0)
+              {
+                 sprintf(temp, "%c%cC %s", type, sub_type,
+                         (char *)tree->elements[i + 1].element);
+                 ecore_desktop_tree_extend(rules, temp);
+              }
+            else if (strcmp((char *)tree->elements[i].element, "<Or") == 0)
+              {
+                 _ecore_desktop_menu_unxml_rules(rules,
+                                                 (Ecore_Desktop_Tree *) tree->
+                                                 elements[i + 1].element,
+                                                 type, sub_type);
+              }
+            else if ((strcmp((char *)tree->elements[i].element, "<And") == 0)
+                     || (strcmp((char *)tree->elements[i].element, "<Not") ==
+                         0))
+              {
+                 char                this_type;
+                 Ecore_Desktop_Tree *sub;
+
+                 this_type = ((char *)tree->elements[i].element)[1];
+                 sub = ecore_desktop_tree_new(NULL);
+                 if (sub)
+                   {
+                      ecore_desktop_tree_add_child(rules, sub);
+                      for (i++; i < tree->size; i++)
+                        {
+                           if (tree->elements[i].type ==
+                               ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                              _ecore_desktop_menu_unxml_rules(sub,
+                                                              (Ecore_Desktop_Tree
+                                                               *) tree->
+                                                              elements[i].
+                                                              element, type,
+                                                              this_type);
+                        }
+                   }
+              }
+         }
+       else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+         {
+            _ecore_desktop_menu_unxml_rules(rules,
+                                            (Ecore_Desktop_Tree *) tree->
+                                            elements[i].element, type,
+                                            sub_type);
+         }
+     }
+}
+
+static void
+_ecore_desktop_menu_unxml_moves(Ecore_Desktop_Tree * menu,
+                               Ecore_Desktop_Tree * tree)
+{
+   int                 i;
+   char               *old = NULL;
+   char               *new = NULL;
+
+   for (i = 0; i < tree->size; i++)
+     {
+       if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+         {
+            Ecore_Desktop_Tree *sub;
+
+            sub = (Ecore_Desktop_Tree *) tree->elements[i].element;
+            if ((sub) && (sub->size))
+              {
+                 if (sub->elements[0].type ==
+                     ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                   {
+                      if (strcmp((char *)sub->elements[0].element, "<Old") ==
+                          0)
+                         old = strdup((char *)sub->elements[1].element);
+                      if (strcmp((char *)sub->elements[0].element, "<New") ==
+                          0)
+                         new = strdup((char *)sub->elements[1].element);
+                   }
+              }
+         }
+       if ((old) && (new))
+         {
+            char                temp[PATH_MAX * 2];
+
+            sprintf(temp, "<MOVE <%s> <%s>", old, new);
+            ecore_desktop_tree_extend(menu, temp);
+         }
+
+       if (old) free(old);
+       old = NULL;
+       if (new) free(new);
+       new = NULL;
+     }
+}
+
+static void
+_ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree, Ecore_List * paths,
+                            const char *pre, const char *post __UNUSED__, char *extra, int element __UNUSED__)
+{
+   char                t[PATH_MAX], *this_path;
+
+   /* reverse the order of the dirs. */
+   ecore_list_first_goto(paths);
+   while ((this_path = ecore_list_next(paths)) != NULL)
+     {
+       if (extra)
+          sprintf(t, "%s %s%s-merged/", pre, this_path, extra);
+       else
+          sprintf(t, "%s %s", pre, this_path);
+       if (tree)
+          ecore_desktop_tree_extend(tree, t);
+     }
+}
+
+static int
+_ecore_desktop_menu_expand_apps(struct _ecore_desktop_menu_unxml_data
+                               *unxml_data, char *app_dir, Ecore_Hash * pool)
+{
+   if (pool)
+     {
+       struct _ecore_desktop_menu_expand_apps_data our_data;
+       char                dir[PATH_MAX];
+
+       our_data.pool = pool;
+       sprintf(dir, "%s", app_dir);
+       if (dir[0] != '/')
+          sprintf(dir, "%s/%s", unxml_data->path, app_dir);
+       our_data.path = dir;
+       our_data.length = strlen(dir);
+#ifdef DEBUG
+       printf
+          ("EXPANDING - _ecore_desktop_menu_expand_apps(unxml_data, %s) - %s\n",
+           app_dir, dir);
+#endif
+       ecore_desktop_paths_recursive_search(dir, NULL, -1, NULL,
+                                            _ecore_desktop_menu_check_app,
+                                            &our_data);
+     }
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_check_app(void *data, const char *path)
+{
+   char               *p;
+   struct _ecore_desktop_menu_expand_apps_data *our_data;
+
+   our_data = (struct _ecore_desktop_menu_expand_apps_data *)data;
+   p = strrchr(path, '.');
+   if (p)
+     {
+       if (strcmp(p, ".desktop") == 0)
+         {
+            int                 i;
+            char               *file;
+
+            file = strdup(path + our_data->length);
+            if ((file) && (path))
+              {
+                 for (i = 0; file[i] != '\0'; i++)
+                    if (file[i] == '/')
+                       file[i] = '-';
+                 ecore_hash_set(our_data->pool, file, strdup(path));
+#ifdef DEBUG
+//               printf
+//                  ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
+//                   path, file);
+#endif
+              }
+         }
+#ifdef DEBUG
+       else
+          printf("PROBLEM - _ecore_desktop_menu_check_app(void *data, %s)\n",
+                 path);
+#endif
+     }
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_merge(const void *data, Ecore_Desktop_Tree * tree,
+                         int element, int level)
+{
+   struct _ecore_desktop_menu_unxml_data *unxml_data;
+   Ecore_Desktop_Tree *merge;
+   int                 result = 0;
+
+   unxml_data = (struct _ecore_desktop_menu_unxml_data *)data;
+   merge = ecore_desktop_tree_new(NULL);
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       char               *string;
+
+       string = (char *)tree->elements[element].element;
+       if (strcmp(string, "<DefaultMergeDirs/") == 0)
+         {
+            if (unxml_data->base)
+               _ecore_desktop_menu_add_dirs(merge, ecore_desktop_paths_menus,
+                                            "<MergeDir", "</MergeDir",
+                                            unxml_data->base, element);
+            result = 1;
+         }
+       else if (strcmp(string, "<KDELegacyDirs/") == 0)
+         {
+            _ecore_desktop_menu_add_dirs(merge,
+                                         ecore_desktop_paths_kde_legacy,
+                                         "<LegacyDir prefix=\"kde-\"",
+                                         "</LegacyDir", NULL, element);
+            result = 1;
+         }
+       else if (strncmp(string, "<MergeDir ", 10) == 0)
+         {
+            char                merge_path[PATH_MAX];
+
+            if (string[10] == '/')
+               sprintf(merge_path, "%s", &string[10]);
+            else
+               sprintf(merge_path, "%s%s", unxml_data->path, &string[10]);
+            ecore_desktop_paths_recursive_search(merge_path, NULL, -1, NULL,
+                                                 _ecore_desktop_menu_check_menu,
+                                                 merge);
+            result = 1;
+         }
+       else if (strncmp(string, "<LegacyDir ", 11) == 0)
+         {
+            char                merge_path[PATH_MAX];
+            struct _ecore_desktop_menu_legacy_data legacy_data;
+
+            string += 11;
+            legacy_data.prefix = NULL;
+            legacy_data.merge = merge;
+            legacy_data.current = merge;
+            legacy_data.level = 0;
+            legacy_data.menu = (char *)tree->elements[0].element;
+            legacy_data.menu += 14;
+            legacy_data.menu_length =
+               strchr(legacy_data.menu, '>') - legacy_data.menu;
+            legacy_data.menu[legacy_data.menu_length] = '\0';
+            if (strncmp(string, "prefix=\"", 8) == 0)
+              {
+                 string += 8;
+                 legacy_data.prefix = string;
+                 while ((*string != '"') && (*string != '\0'))
+                    string++;
+                 if (*string != '\0')
+                    *string++ = '\0';
+                 while ((*string == ' ') && (*string != '\0'))
+                    string++;
+              }
+            if (string[0] == '/')
+               sprintf(merge_path, "%s", string);
+            else
+               sprintf(merge_path, "%s%s", unxml_data->path, string);
+            legacy_data.path = merge_path;
+            legacy_data.length = strlen(merge_path);
+#ifdef DEBUG
+            printf("<LEGACYDIR> - %s - %s\n", legacy_data.prefix, merge_path);
+#endif
+            ecore_desktop_paths_recursive_search(merge_path, NULL, -1,
+                                                 _ecore_desktop_menu_legacy_menu_dir,
+                                                 _ecore_desktop_menu_legacy_menu,
+                                                 &legacy_data);
+            legacy_data.menu[legacy_data.menu_length] = '>';
+            result = 1;
+         }
+       else if (strncmp(string, "<MergeFile ", 11) == 0)
+         {
+            char                merge_path[PATH_MAX];
+            int                 path_type = 1;
+
+            /* FIXME: need to weed out duplicate <MergeFile's, use the last one. */
+            string += 11;
+            if (strncmp(string, "type=\"", 6) == 0)
+              {
+                 string += 6;
+                 if (strncmp(string, "parent\"", 7) == 0)
+                    path_type = 0;
+                 while ((*string != '"') && (*string != '\0'))
+                    string++;
+                 if (*string != '\0')
+                    string++;
+                 while ((*string == ' ') && (*string != '\0'))
+                    string++;
+              }
+            if (path_type)
+              {
+                 if (string[0] == '/')
+                    snprintf(merge_path, PATH_MAX, "%s", string);
+                 else
+                    snprintf(merge_path, PATH_MAX, "%s/%s", unxml_data->path, string);
+              }
+            else               /* This is a parent type MergeFile. */
+              {
+                 char *xdg_path;
+                 int found = -1;
+
+                 /* The spec is a little unclear, and the examples may look like they
+                  * contradict the description, but it all makes sense if you cross
+                  * reference it with the XDG Base Directory Specification (version 0.6).
+                  * To make things harder, parent type MergeFiles never appear on my box.
+                  *
+                  * What you do is this.
+                  *
+                  * Just plain ignore the specified path in the MergeFile element, it's for 
+                  * legacy apps that don't understand parent types.
+                  *
+                  * Take the XDG_CONFIG_DIRS stuff as a whole ($XDG_CONFIG_HOME, then 
+                  * $XDG_CONFIG_DIRS), in this code that will be ecore_desktop_paths_config.
+                  *
+                  * If this menu file is from one of the directories in ecore_desktop_paths_config,
+                  * scan the rest of ecore_desktop_paths_config looking for the new menu.  In other 
+                  * words start searching in the next ecore_desktop_paths_config entry after the one
+                  * that this menu is in.
+                  *
+                  * The file to look for is the path to this menu with the portion from
+                  * ecore_desktop_paths_config stripped off the beginning.  For instance, the top level
+                  * menu file is typically /etc/xdg/menus/applications.menu, and /etc/xdg is
+                  * typically in ecore_desktop_paths_config, so search for menus/applications.menu.
+                  *
+                  * If this menu file is NOT from one of the directories in ecore_desktop_paths_menus,
+                  * insert nothing.
+                  *
+                  * The first one found wins, if none are found, don't merge anything.
+                  */
+
+                 merge_path[0] = '\0';
+                 ecore_list_first_goto(ecore_desktop_paths_config);
+                 while ((xdg_path = ecore_list_next(ecore_desktop_paths_config)) != NULL)
+                   {
+                      if (found < 0)
+                        {
+                           int length = strlen(xdg_path);
+
+                           if (strncmp(xdg_path, unxml_data->file, length) == 0)
+                              found = length;
+                        }
+                      else
+                        {
+                           snprintf(merge_path, PATH_MAX, "%s%s", xdg_path, &(unxml_data->file)[found]);
+                           if (ecore_file_exists(merge_path))
+                              break;
+                           merge_path[0] = '\0';
+                        }
+                   }
+
+              }
+            if (merge_path[0] != '\0')
+              {
+                 Ecore_Desktop_Tree *new_menu;
+
+                 new_menu =
+                    _ecore_desktop_menu_get0(merge_path,
+                                             unxml_data->merge_stack,
+                                             level + 1);
+                 if (new_menu)
+                   {
+                      if (new_menu->size > 1)
+                        {
+                           if (new_menu->elements[1].type ==
+                               ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                             {
+                                new_menu =
+                                   (Ecore_Desktop_Tree *) new_menu->
+                                   elements[1].element;
+                                if (new_menu->size > 0)
+                                  {
+                                     if (new_menu->elements[0].type ==
+                                         ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                                       {
+                                          merge =
+                                             (Ecore_Desktop_Tree *) new_menu->
+                                             elements[0].element;
+                                          ecore_desktop_tree_remove(merge, 0);
+                                          ecore_desktop_tree_remove(merge, 1);
+                                          ecore_desktop_tree_remove(merge, 2);
+                                          ecore_desktop_tree_remove(merge, 3);
+                                          ecore_desktop_tree_remove(merge, 4);
+                                          /* FIXME: The MENU_PATHs need to be prefixed. */
+                                       }
+                                     else
+                                        printf
+                                           ("FUCK an error in _ecore_desktop_menu_merge(%s)\n",
+                                            merge_path);
+                                  }
+                                else
+                                   printf
+                                      ("FUCK another error in _ecore_desktop_menu_merge(%s)\n",
+                                       merge_path);
+                             }
+                           else
+                              printf
+                                 ("FUCK ME! An error in _ecore_desktop_menu_merge(%s)\n",
+                                  merge_path);
+                        }
+                   }
+              }
+            result = 1;
+         }
+     }
+
+   if (result)
+     {
+       if ((merge) && (merge->size))
+          ecore_desktop_tree_merge(tree, element + 1, merge);
+
+       tree->elements[element].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+       tree->elements[element].element = NULL;
+     }
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_expand_default_dirs(const void *data,
+                                       Ecore_Desktop_Tree * tree, int element,
+                                       int level __UNUSED__)
+{
+   struct _ecore_desktop_menu_unxml_data *unxml_data;
+   Ecore_Desktop_Tree *merge;
+   int                 result = 0;
+
+   unxml_data = (struct _ecore_desktop_menu_unxml_data *)data;
+   merge = ecore_desktop_tree_new(NULL);
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       char               *string;
+
+       string = (char *)tree->elements[element].element;
+       if (strcmp(string, "<DefaultAppDirs/") == 0)
+         {
+            _ecore_desktop_menu_add_dirs(merge, ecore_desktop_paths_desktops,
+                                         "<AppDir", "</AppDir", NULL, element);
+            result = 1;
+         }
+       else if (strcmp(string, "<DefaultDirectoryDirs/") == 0)
+         {
+            _ecore_desktop_menu_add_dirs(merge,
+                                         ecore_desktop_paths_directories,
+                                         "<DirectoryDir", "</DirectoryDir",
+                                         NULL, element);
+            result = 1;
+         }
+     }
+   if (result)
+     {
+       if ((merge) && (merge->size))
+          ecore_desktop_tree_merge(tree, element + 1, merge);
+
+       tree->elements[element].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+       tree->elements[element].element = NULL;
+     }
+
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
+                            int element, int level)
+{
+   struct _ecore_desktop_menu_unxml_data *unxml_data;
+
+   unxml_data = (struct _ecore_desktop_menu_unxml_data *)data;
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       if (strncmp((char *)tree->elements[element].element, "<MENU ", 6) == 0)
+         {
+            int                 i;
+            struct _ecore_desktop_menu_generate_data generate_data;
+
+            generate_data.unallocated = unxml_data->unallocated;
+            generate_data.name = (char *)tree->elements[element].element;
+            generate_data.path = (char *)tree->elements[element + 1].element;
+            generate_data.pool = (Ecore_Hash *) tree->elements[element + 2].element;
+            generate_data.rules = (Ecore_Desktop_Tree *) tree->elements[element + 3].element;
+            generate_data.apps = (Ecore_Hash *) tree->elements[element + 4].element;
+
+            /* generate and inherit the pools on the first pass, and preparse the include/exclude logic. */
+            if (!generate_data.unallocated)
+              {
+                 int                 i;
+
+                 for (i = element + 5; i < tree->size; i++)
+                   {
+                      int                 result = 0;
+                      char               *string;
+
+                      if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                        {
+                           string = (char *)tree->elements[i].element;
+                           if (strncmp(string, "<AppDir ", 8) == 0)
+                             {
+                                _ecore_desktop_menu_expand_apps(unxml_data, &string[8], generate_data.pool);
+                                result = 1;
+                             }
+                           else if (strncmp(string, "<DirectoryDir ", 14) == 0)
+                             {
+                                char                merge_path[PATH_MAX];
+                                Ecore_Desktop_Tree *merge;
+
+                                if (string[14] == '/')
+                                   sprintf(merge_path, "%s", &string[14]);
+                                else
+                                   sprintf(merge_path, "%s%s", unxml_data->path, &string[14]);
+                                merge = ecore_desktop_tree_new(NULL);
+                                if (merge)
+                                  {
+                                     ecore_desktop_paths_recursive_search(merge_path, NULL, -1, NULL, _ecore_desktop_menu_check_directory, merge);
+                                     ecore_desktop_tree_merge(tree, i + 1, merge);
+                                  }
+                                result = 1;
+                             }
+                        }
+                      else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                        {
+                           Ecore_Desktop_Tree *sub;
+
+                           sub = (Ecore_Desktop_Tree *) tree->elements[i].element;
+                           if ((sub) && (sub->size))
+                             {
+                                if (sub->elements[0].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+                                  {
+                                     string = (char *)sub->elements[0].element;
+                                     if ((strcmp(string, "<Include") == 0) || (strcmp(string, "<Exclude") == 0))
+                                       {
+                                          Ecore_Desktop_Tree *new_sub;
+
+                                          new_sub = ecore_desktop_tree_new(NULL);
+                                          if (new_sub)
+                                            {
+                                               ecore_desktop_tree_add_child(generate_data.rules, new_sub);
+                                               _ecore_desktop_menu_unxml_rules(new_sub, sub, string[1], 'O');
+                                            }
+                                          result = 1;
+                                       }
+                                  }
+                             }
+                        }
+
+                      if (result)
+                        {
+                           tree->elements[i].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                           tree->elements[i].element = NULL;
+                        }
+                   }
+
+                 if (unxml_data->stack->size <= level)
+                   {
+                      while (unxml_data->stack->size < level)
+                         ecore_desktop_tree_add_hash(unxml_data->stack, generate_data.pool);
+                      ecore_desktop_tree_add_hash(unxml_data->stack, generate_data.pool);
+                   }
+                 else
+                   {
+                      unxml_data->stack->elements[level].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH;
+                      unxml_data->stack->elements[level].element = generate_data.pool;
+                   }
+                 for (i = level - 1; i >= 0; i--)
+                   {
+                      if (unxml_data->stack->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
+                        {
+                           Ecore_Hash         *ancestor;
+
+                           ancestor = (Ecore_Hash *) unxml_data->stack->elements[i].element;
+                           ecore_hash_for_each_node(ancestor, _ecore_desktop_menu_inherit_apps, generate_data.pool);
+                        }
+                   }
+              }
+
+            /* Process the rules. */
+            if (generate_data.name[9] == (generate_data.unallocated ? 'O' : ' '))
+              {
+#ifdef DEBUG
+                 printf("MAKING MENU - %s \t\t%s\n", generate_data.path, generate_data.name);
+                 ecore_desktop_tree_dump(generate_data.rules, 0);
+                 printf("\n\n");
+#endif
+                 for (i = 0; i < generate_data.rules->size; i++)
+                   {
+                      if (generate_data.rules->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                        {
+                           generate_data.rule = (Ecore_Desktop_Tree *) generate_data.rules->elements[i].element;
+                           if (generate_data.rule->size > 0)
+                             {
+                                char type = 'I';
+
+                                 /* Find out if this is an include or an exclude.  This info may be way down in the tree. */
+                                if (generate_data.rule->elements[0].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+                                   ecore_desktop_tree_foreach(generate_data.rule, 0, _ecore_desktop_menu_is_include, &type);
+                                if (type == 'I')
+                                  {
+                                     generate_data.include = TRUE;
+                                     ecore_hash_for_each_node(generate_data.pool, _ecore_desktop_menu_select_app, &generate_data);
+                                  }
+                                else
+                                  {
+                                     generate_data.include = FALSE;
+                                     ecore_hash_for_each_node(generate_data.apps, _ecore_desktop_menu_select_app, &generate_data);
+                                  }
+                             }
+                        }
+                      else
+                         printf("Fuck, a bug in _ecore_desktop_menus.\n");
+                   }
+              }
+         }
+     }
+   return 0;
+}
+
+static int
+_ecore_desktop_menu_is_include(const void *data, Ecore_Desktop_Tree * tree, int element, int level __UNUSED__)
+{
+   char *result;
+
+   result = (char *)data;
+   if (tree->elements[element].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+     {
+       *result = ((char *)tree->elements[element].element)[0];
+       return 1;
+     }
+
+   return 0;
+}
+
+static void
+_ecore_desktop_menu_inherit_apps(void *value, void *user_data)
+{
+   Ecore_Hash_Node    *node;
+   Ecore_Hash         *pool;
+   char               *key, *app;
+
+   pool = (Ecore_Hash *) user_data;
+   node = (Ecore_Hash_Node *) value;
+   key = (char *)node->key;
+   app = (char *)node->value;
+#ifdef DEBUG
+//   printf("CHECKING %s - %s\n", app, key);
+#endif
+   if (!ecore_hash_get(pool, key))
+      ecore_hash_set(pool, strdup(key), strdup(app));
+}
+
+static void
+_ecore_desktop_menu_select_app(void *value, void *user_data)
+{
+   Ecore_Hash_Node    *node;
+   Ecore_Desktop      *desktop;
+   struct _ecore_desktop_menu_generate_data *generate_data;
+   char               *key, *app;
+
+   node = (Ecore_Hash_Node *) value;
+   generate_data = (struct _ecore_desktop_menu_generate_data *)user_data;
+   key = (char *)node->key;
+   app = (char *)node->value;
+
+   /* FIXME: pass an actuall language parameter. */
+   desktop = ecore_desktop_get(app, NULL);
+
+   if (desktop)
+     {
+       if ((generate_data->unallocated) && (desktop->allocated))
+          return;
+
+       if (_ecore_desktop_menu_apply_rules(generate_data, generate_data->rule, key, desktop))
+         {
+            desktop->allocated = TRUE;
+            if (generate_data->include)
+              {
+                 ecore_hash_set(generate_data->apps, key, strdup(app));
+#ifdef DEBUG
+                 printf("INCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
+#endif
+              }
+            else
+              {
+                 ecore_hash_remove(generate_data->apps, key);
+#ifdef DEBUG
+                 printf("EXCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
+#endif
+              }
+         }
+     }
+}
+
+static int
+_ecore_desktop_menu_apply_rules(struct _ecore_desktop_menu_generate_data *generate_data, Ecore_Desktop_Tree * rule, char *key, Ecore_Desktop * desktop)
+{
+   char                type = 'O';
+   int                 result = FALSE;
+   int                 i;
+
+   for (i = 0; i < rule->size; i++)
+     {
+       if (rule->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+         {
+            result = _ecore_desktop_menu_apply_rules(generate_data, (Ecore_Desktop_Tree *) rule->elements[i].element, key, desktop);
+         }
+       else
+         {
+            char               *rul;
+            char                match;
+            int                 sub_result = FALSE;
+
+            rul = (char *)rule->elements[i].element;
+            type = rul[1];
+            match = rul[2];
+            switch (match)
+              {
+              case 'A':
+                 {
+                    sub_result = TRUE;
+                    break;
+                 }
+
+              case 'F':
+                 {
+                    if (strcmp(key, &rul[4]) == 0)
+                       sub_result = TRUE;
+                    break;
+                 }
+
+              case 'C':
+                 {
+                    /* Try to match a category. */
+                    if ((desktop->Categories) && (ecore_hash_get(desktop->Categories, &rul[4]) != NULL))
+                       sub_result = TRUE;
+                    break;
+                 }
+              }
+            switch (type)
+              {
+                 case 'A':  result = TRUE;  if (!sub_result)  return FALSE;  break;
+                 case 'N':  result = TRUE;  if (sub_result)   return FALSE;  break;
+                 default:                   if (sub_result)   return TRUE;   break;
+              }
+         }
+     }
+
+   return result;
+}
+
+/*
+
+<Menu (tree)
+  name
+  flags = "   " or "MDO" the first letter of - Marked, Deleted, OnlyUnallocated 
+  pool (hash)
+    id = path
+    id = path
+  rules (tree)
+    rule
+    rule
+  menu (hash)
+    id = path
+    id = path
+  <Menu (tree)
+  <Menu (tree)
+
+rules (tree)
+  include/exclude or all/file/category x
+  and/not (tree)
+    include/exclude and/not all/file/category x
+
+ALL
+  return true
+
+FILENAME
+  if the rule string matches the desktop id return true
+  otherwise return false
+
+CATEGORY
+  loop through the apps categories
+  as soon as one matches the rule string, return true
+  otherwise return false.
+
+OR (implied)
+  loop through the rules
+  as soon as one matches, return true
+  otherwise return false.
+
+SUB RULES
+  process the sub rules, return the result
+
+AND
+  loop through the rules
+  as soon as one doesn't match, return false
+  otherwise return true.
+
+NOT (implied OR)
+  loop through the rules
+  as soon as one matches, return false
+  otherwise return true.
+ */
+
+/*  FDO PARSING STEPS.
+
+An asterisk in the first column marks those bits that are done.
+The spec is not numbered, so I have invented a numbering to help match the
+steps to the code.
+
+ 10000000 merge menus
+*11000000   expand <KDELegacyDir>'s to <LegacyDir>.
+*12000000   expand <LegacyDir>'s
+*12100000     for each dir (recursive)
+*12110000       create recursively nested <MENU <   L> <dirname> <> element
+*12120000    //   <AppDir>dirpath</AppDir>
+*12130000       <DirectoryDir>dirpath</DirectoryDir>
+*12140000       if exist .directory
+*12141000         add <.directory> to name
+*12150000       <Include>
+*12160000       for each *.desktop
+ 12161000         if no categories in bar.desktop
+*12161100          <Filename>prefix-bar.desktop</Filename> 
+ 12162000         add "Legacy" to categories
+*12163000         add any prefix to the desktop ID.
+*12164000        add it to the pool
+*12170000       </Include>
+*13000000   for each <MergeFile> and <MergeDir> element
+*13100000     get the root <Menu> elements from that elements file/s.
+*13200000     remove the <Name> element from those root <Menu> elements.
+*13300000     replace that element with the child elements of those root <Menu> elements.
+*13400000?    expand the <DefaultMergeDirs> to <MergeDir>'s $XDG_CONFIG_DIRS/menus/foo-merged/ for the menu file foo.menu
+FIXME: The above should probably move to before 13000000
+*14000000   loop until all <MergeFile> and <MergeDir> elements are done,
+*14000000   careful to avoid infinite loops in files that reference each other.
+*15000000   for each <Menu> recursively
+ 15100000     consolidate duplicate child <Menu>s.
+*15200000     expand <DefaultAppDir>s and <DefaultDirectoryDir>s to <AppDir>s and <DirectoryDir>s.
+ 15300000     consolidate duplicate child <AppDir>s, <DirectoryDir>s, and <Directory>s.
+ 16000000   for each <Menu> recursively (but from the deepest level out)
+ 16100000     for each <Move>
+ 16110000       do the move.
+ 16120000       mark any <Menu> that has been affected.
+ 17000000   for each marked <Menu> recursively
+ 17100000     consolidate duplicate child <Menu>s.
+*18000000   for each <Menu> recursively
+*18100000     if there are <Deleted> elements that are not ovreridden by a <NotDelete> element
+*18110000       remove this <Menu> element and all it's children.
+
+*20000000 generate menus
+*21000000   for each <Menu> that is <NotOnlyUnallocated> (which is the default)
+*21100000     for each <AppDir>
+*21110000       for each .desktop
+*21111000         if it exists in the pool, replace it.
+*21112000        else add it to the pool.
+*21200000     for each parent <Menu>
+*21210000       for each .desktop in the pool
+*21211000         if it doesn't exist in the child <Menu> pool
+*21211100          add it to the pool.
+*21300000     for each <Include> and <Exclude>
+*21310000       if rule is an <Include>
+*21311000         for each .desktop in pool
+*21311100           for each rule
+*21311110             if rule matches .desktop in pool
+*21311111              add .desktop to menu.
+*21311112              mark it as allocated
+*21320000       if rule is an <Exclude>
+*21321000         for each .desktop in menu
+*21321100           for each rule
+*21321110             if rule matches .desktop in menu
+*21321111              remove .desktop from menu.
+*21321112              leave it as allocated.
+
+*30000000 generate unallocated menus
+*31000000   Same as for generate menus, but only the <OnlyUnallocated> ones.
+*32000000   Only the unallocated .desktop entries can be used.
+
+ 40000000 generate menu layout
+   This part of the spec is a whole other rabbit hole, and optional.  B-)
+*/
+
+
+/*  THINGS TAHT CAN BE DUPLICATED
+
+AppDir        last dup is used
+.desktop      last dup is used
+DirectoryDir  last dup is used
+.directory    last dup is used
+Directory     last dup is used, unless it points to a non existant entry, then work your way backwards
+LegacyDir     last dup is used
+MergeDir      last dup is used
+MergeFile     last dup is used
+
+DefaultMergeDirs   dirs that are earlier in the path go later in the menu, so they have priority
+KDELegacyDirs      dirs that are earlier in the path go later in the menu, so they have priority
+
+OnlyUnallocated & NotOnlyUnallocated   last one wins, default is NotOnlyUnallocated
+Deleted & NotDeleted                   last one wins
+
+Include & Exclude  done in order
+*/
diff --git a/src/lib/ecore_desktop/ecore_desktop_paths.c b/src/lib/ecore_desktop/ecore_desktop_paths.c
new file mode 100644 (file)
index 0000000..ec3975e
--- /dev/null
@@ -0,0 +1,1041 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * This conforms with the freedesktop.org XDG Base Directory Specification version 0.6
+ *
+ * The policy here is to add extra directories to the possible search paths to 
+ * cater for quirks of different OS's.  It doesn't take long to eliminate an
+ * excess directory from the paths.
+ */
+
+#include <Ecore.h>
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
+#include <dirent.h>
+#include <sys/stat.h>
+#include <libgen.h>
+#include <strings.h>
+
+/* This really slows things down and no doubt drags in some KDE bloat at start up.
+ * To work around this, I add a few extra things to try in the _ecore_desktop_paths_get()
+ * calls below.
+ *
+#define KDE_SUPPORT 1
+ */
+
+/* This is nowhere near as bloated and slow as the KDE stuff, but worthwhile 
+ * making it optional anyway.
+ *
+#define GNOME_SUPPORT 1
+ */
+
+/* FIXME: remove those two defines, preload a cache with the guesses, whenever 
+ * we have a few seconds of idle time, run the gnome and kde config proggies 
+ * and correct those guesses.
+ */
+
+Ecore_List         *ecore_desktop_paths_config = NULL;
+Ecore_List         *ecore_desktop_paths_menus = NULL;
+Ecore_List         *ecore_desktop_paths_directories = NULL;
+Ecore_List         *ecore_desktop_paths_desktops = NULL;
+Ecore_List         *ecore_desktop_paths_icons = NULL;
+Ecore_List         *ecore_desktop_paths_kde_legacy = NULL;
+Ecore_List         *ecore_desktop_paths_xsessions = NULL;
+
+
+static Ecore_List  *_ecore_desktop_paths_get(Ecore_Desktop_Paths_Type path_type,
+                                            const char *before, const char *env_home,
+                                            const char *env, const char *env_home_default,
+                                            const char *env_default, const char *type,
+                                            const char *gnome_extra, const char *kde);
+static void         _ecore_desktop_paths_massage_path(char *path, char *home,
+                                                     char *first,
+                                                     char *second);
+static void         _ecore_desktop_paths_check_and_add(Ecore_List * paths,
+                                                      const char *path);
+static void         _ecore_desktop_paths_create(void);
+static void         _ecore_desktop_paths_destroy(void);
+
+static Ecore_List  *gnome_data = NULL;
+static Ecore_List  *prepend_user_paths[ECORE_DESKTOP_PATHS_MAX];
+static Ecore_List  *prepend_system_paths[ECORE_DESKTOP_PATHS_MAX];
+static Ecore_List  *append_user_paths[ECORE_DESKTOP_PATHS_MAX];
+static Ecore_List  *append_system_paths[ECORE_DESKTOP_PATHS_MAX];
+static char        *home;
+static int          init_count = 0;
+
+#if defined GNOME_SUPPORT || defined KDE_SUPPORT
+struct _config_exe_data
+{
+   char               *home;
+   Ecore_List         *paths, *types;
+   int                 done;
+};
+
+static void         _ecore_desktop_paths_exec_config(Ecore_List * paths,
+                                                    char *home,
+                                                    Ecore_List * extras,
+                                                    char *cmd);
+
+static int          _ecore_desktop_paths_cb_exe_exit(void *data, int type,
+                                                    void *event);
+
+static Ecore_Event_Handler *exit_handler = NULL;
+#endif
+
+EAPI int
+ecore_desktop_paths_init(void)
+{
+   if (++init_count != 1)
+      return init_count;
+
+#if defined GNOME_SUPPORT || defined KDE_SUPPORT
+   exit_handler =
+      ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
+                             _ecore_desktop_paths_cb_exe_exit, NULL);
+#endif
+
+   ecore_desktop_paths_extras_clear();
+   gnome_data = ecore_list_new();
+   home = ecore_desktop_home_get();
+
+   if (gnome_data)
+     {
+#ifdef GNOME_SUPPORT
+       if (exit_handler)
+         {
+            ecore_list_free_cb_set(gnome_data, free);
+            _ecore_desktop_paths_exec_config(gnome_data, home, NULL,
+                                             "gnome-config --datadir");
+         }
+#else
+       Ecore_List         *config_list;
+
+       config_list = ecore_desktop_paths_to_list("/opt/gnome/share");
+       if (config_list)
+         {
+            char               *this_config;
+            char                path[PATH_MAX];
+
+            ecore_list_first_goto(config_list);
+            while ((this_config = ecore_list_next(config_list)) != NULL)
+              {
+
+                 _ecore_desktop_paths_massage_path(path, home,
+                                                   this_config, NULL);
+                 _ecore_desktop_paths_check_and_add(gnome_data, path);
+              }
+            E_FN_DEL(ecore_list_destroy, config_list);
+         }
+#endif
+     }
+
+   _ecore_desktop_paths_create();
+   return init_count;
+}
+
+EAPI int
+ecore_desktop_paths_shutdown(void)
+{
+   int i;
+
+   if (--init_count != 0)
+      return init_count;
+
+   for (i = 0; i < ECORE_DESKTOP_PATHS_MAX; i++)
+     {
+       E_FN_DEL(ecore_list_destroy, prepend_user_paths[i]);
+       E_FN_DEL(ecore_list_destroy, prepend_system_paths[i]);
+       E_FN_DEL(ecore_list_destroy, append_user_paths[i]);
+       E_FN_DEL(ecore_list_destroy, append_system_paths[i]);
+     }
+
+   _ecore_desktop_paths_destroy();
+   E_FN_DEL(ecore_list_destroy, gnome_data);
+
+#if defined GNOME_SUPPORT || defined KDE_SUPPORT
+   if (exit_handler)
+      ecore_event_handler_del(exit_handler);
+#endif
+   free(home);
+   return init_count;
+}
+
+EAPI void
+ecore_desktop_paths_regen(void)
+{
+   _ecore_desktop_paths_destroy();
+   _ecore_desktop_paths_create();
+}
+
+static void
+_ecore_desktop_paths_create(void)
+{
+   if (!ecore_desktop_paths_desktops)
+     {
+       ecore_desktop_paths_desktops =
+          _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_DESKTOPS, NULL,
+                                   "XDG_DATA_HOME", "XDG_DATA_DIRS",
+                                   "~/.local/share:~/.kde/share",
+                                   "/usr/local/share:/usr/share",
+//                                 "applications:applnk:applications/kde",
+                                   "applications:applnk",
+                                   "dist/desktop-files:dist/short-menu:gnome/apps",
+                                   "xdgdata-apps:apps");
+       _ecore_desktop_paths_check_and_add(ecore_desktop_paths_desktops,
+                                          "/usr/local/share/update-desktop-files/templates");
+       _ecore_desktop_paths_check_and_add(ecore_desktop_paths_desktops,
+                                          "/usr/share/update-desktop-files/templates");
+     }
+   if (!ecore_desktop_paths_kde_legacy)
+     {
+#ifdef KDE_SUPPORT
+       ecore_desktop_paths_kde_legacy =
+          _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_KDE_LEGACY, NULL, NULL,
+                                   NULL, NULL, NULL, NULL, NULL, "apps");
+#else
+       ecore_desktop_paths_kde_legacy =
+          _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_KDE_LEGACY, NULL,
+                                   "XDG_DATA_HOME", "XDG_DATA_DIRS",
+                                   "~/.local/share:~/.kde/share",
+                                   "/usr/local/share:/usr/share", "applnk",
+                                   NULL, "apps");
+#endif
+       if (ecore_desktop_paths_kde_legacy)
+         {
+            char                temp[PATH_MAX], *path;
+            Ecore_List         *temp_list;
+
+            /* Copy it, cause Ecore_List walks can not be nested. */
+            temp_list = ecore_list_new();
+            if (temp_list)
+              {
+                 ecore_list_first_goto(ecore_desktop_paths_kde_legacy);
+                 while ((path =
+                         ecore_list_next(ecore_desktop_paths_kde_legacy)) !=
+                        NULL)
+                    ecore_list_append(temp_list, path);
+
+                 ecore_list_first_goto(temp_list);
+                 while ((path = ecore_list_next(temp_list)) != NULL)
+                   {
+                      char               *t1, *t2;
+
+                      t1 = rindex(path, '/');
+                      *t1 = '\0';
+                      t2 = rindex(path, '/');
+                      *t2 = '\0';
+                      sprintf(temp, "%s/apps/kappfinder/apps/", path);
+                      *t2 = '/';
+                      *t1 = '/';
+                      _ecore_desktop_paths_check_and_add
+                         (ecore_desktop_paths_kde_legacy, temp);
+                   }
+              }
+            ecore_list_destroy(temp_list);
+         }
+     }
+   if (!ecore_desktop_paths_icons)
+     {
+       char               *gnome;
+
+       ecore_desktop_paths_icons =
+          _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_ICONS, "~/.icons",
+                                   "XDG_DATA_HOME", "XDG_DATA_DIRS",
+                                   "~/.local/share:~/.kde/share",
+                                   "/usr/local/share:/usr/share:/usr/X11R6/share",
+                                   "icons:pixmaps", "dist/icons",
+                                   "icon:pixmap");
+       _ecore_desktop_paths_check_and_add(ecore_desktop_paths_icons,
+                                          "/usr/local/share/pixmaps/");
+       _ecore_desktop_paths_check_and_add(ecore_desktop_paths_icons,
+                                          "/usr/share/pixmaps/");
+       _ecore_desktop_paths_check_and_add(ecore_desktop_paths_icons,
+                                          "/usr/share/update-desktop-files/kappfinder-icons/");
+       gnome = getenv("GNOME_ICON_PATH");
+       if (gnome)
+          _ecore_desktop_paths_check_and_add(ecore_desktop_paths_icons, gnome);
+     }
+   if (!ecore_desktop_paths_menus)
+      ecore_desktop_paths_menus =
+        _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_MENUS, NULL,
+                                 "XDG_CONFIG_HOME", "XDG_CONFIG_DIRS",
+                                 "~/.config", "/etc/xdg:/var/lib/menu-xdg",
+                                 "menus", NULL, "xdgconf-menu");
+   if (!ecore_desktop_paths_directories)
+      ecore_desktop_paths_directories =
+        _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_DIRECTORIES, NULL,
+                                 "XDG_DATA_HOME", "XDG_DATA_DIRS",
+                                 "~/.local/share:~/.kde/share",
+                                 "/usr/local/share:/usr/share",
+                                 "desktop-directories", "gnome/vfolders",
+                                 "xdgdata-dirs");
+   if (!ecore_desktop_paths_config)
+      ecore_desktop_paths_config =
+        _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_CONFIG, NULL,
+                                 "XDG_CONFIG_HOME", "XDG_CONFIG_DIRS",
+                                 "~/.config", "/etc/xdg", NULL, NULL, NULL);
+   if (!ecore_desktop_paths_xsessions)
+      ecore_desktop_paths_xsessions =
+        _ecore_desktop_paths_get(ECORE_DESKTOP_PATHS_XSESSIONS, NULL,
+                                 "XDG_DATA_HOME", "XDG_DATA_DIRS",
+                                 "~/.local/share:~/.kde/share",
+                                 "/usr/local/share:/usr/share", "xsessions",
+                                 NULL, NULL);
+}
+
+static void
+_ecore_desktop_paths_destroy(void)
+{
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_xsessions);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_config);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_directories);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_menus);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_icons);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_kde_legacy);
+   E_FN_DEL(ecore_list_destroy, ecore_desktop_paths_desktops);
+}
+
+EAPI void
+ecore_desktop_paths_extras_clear(void)
+{
+   int                 i;
+
+   for (i = 0; i < ECORE_DESKTOP_PATHS_MAX; i++)
+     {
+       E_FN_DEL(ecore_list_destroy, prepend_user_paths[i]);
+       E_FN_DEL(ecore_list_destroy, prepend_system_paths[i]);
+       E_FN_DEL(ecore_list_destroy, append_user_paths[i]);
+       E_FN_DEL(ecore_list_destroy, append_system_paths[i]);
+       prepend_user_paths[i] = ecore_list_new();
+       if (prepend_user_paths[i])
+          ecore_list_free_cb_set(prepend_user_paths[i], free);
+       prepend_system_paths[i] = ecore_list_new();
+       if (prepend_system_paths[i])
+          ecore_list_free_cb_set(prepend_system_paths[i], free);
+       append_user_paths[i] = ecore_list_new();
+       if (append_user_paths[i])
+          ecore_list_free_cb_set(append_user_paths[i], free);
+       append_system_paths[i] = ecore_list_new();
+       if (append_system_paths[i])
+          ecore_list_free_cb_set(append_system_paths[i], free);
+     }
+}
+
+EAPI void
+ecore_desktop_paths_prepend_user(Ecore_Desktop_Paths_Type type, const char *paths)
+{
+   if (prepend_user_paths[type])
+      ecore_list_append(prepend_user_paths[type], strdup(paths));
+}
+
+EAPI void
+ecore_desktop_paths_prepend_system(Ecore_Desktop_Paths_Type type, const char *paths)
+{
+   if (prepend_system_paths[type])
+      ecore_list_append(prepend_system_paths[type], strdup(paths));
+}
+
+EAPI void
+ecore_desktop_paths_append_user(Ecore_Desktop_Paths_Type type, const char *paths)
+{
+   if (append_user_paths[type])
+      ecore_list_append(append_user_paths[type], strdup(paths));
+}
+
+EAPI void
+ecore_desktop_paths_append_system(Ecore_Desktop_Paths_Type type, const char *paths)
+{
+   if (append_system_paths[type])
+      ecore_list_append(append_system_paths[type], strdup(paths));
+}
+
+/** Search for a file in fdo compatible locations.
+ *
+ * This will search through all the diretories of a particular type, looking 
+ * for the file.  It will recurse into subdirectories.  If func is NULL, then
+ * only the first file found will be returned.  If func is defined, then each
+ * file found will be passed to func, until func returns 1.
+ *
+ * The returned string will have to be freed eventually.
+ *
+ * @param   type The type of directories to search.
+ * @param   file The file to search for.
+ * @param   sub Levels of sub directories to search, -1 = all, 0 = none.
+ * @param   func A function to call for each file found.
+ * @param   data A pointer to pass on to func.
+ */
+char               *
+ecore_desktop_paths_file_find(Ecore_List * paths, const char *file, int sub,
+                             int (*func) (void *data, const char *path),
+                             void *data)
+{
+   char               *path = NULL, *this_path;
+   char                temp[PATH_MAX];
+   struct stat         path_stat;
+
+   if (!paths) return NULL;
+   ecore_list_first_goto(paths);
+   while ((this_path = ecore_list_next(paths)) != NULL)
+     {
+       if (path)
+         {
+            free(path);
+            path = NULL;
+         }
+       snprintf(temp, PATH_MAX, "%s%s", this_path, file);
+       if (stat(temp, &path_stat) == 0)
+         {
+            path = strdup(temp);
+            if ((func) && (func(data, temp)))
+              break;
+         }
+       else if (sub != 0)
+         path =
+            ecore_desktop_paths_recursive_search(this_path, file, sub,
+                                                 NULL, func, data);
+       if (path && (!func))
+         break;
+     }
+
+   return path;
+}
+
+/*  We need -
+config file full of paths
+menus=pathlist
+desktops=pathlist
+directories=pathlist
+icons=pathlist
+*/
+
+static Ecore_List  *
+_ecore_desktop_paths_get(Ecore_Desktop_Paths_Type path_type,
+                        const char *before, const char *env_home, const char *env,
+                        const char *env_home_default, const char *env_default, const char *type,
+                        const char *gnome_extra, const char *kde)
+{
+   Ecore_List         *paths = NULL;
+   Ecore_List         *types = NULL;
+   Ecore_List         *gnome_extras = NULL;
+   char                path[PATH_MAX];
+   Ecore_List         *env_list;
+
+
+#ifdef KDE_SUPPORT
+   Ecore_List         *kdes = NULL;
+#endif
+
+   paths = ecore_list_new();
+   if (!paths) return NULL;
+   ecore_list_free_cb_set(paths, free);
+   /* Don't sort them, as they are in preferred order from each source. */
+   /* Merge the results, there are probably some duplicates. */
+
+   if (type)
+      types = ecore_desktop_paths_to_list(type);
+   if (gnome_extra)
+      gnome_extras = ecore_desktop_paths_to_list(gnome_extra);
+#ifdef KDE_SUPPORT
+   if (kde)
+      kdes = ecore_desktop_paths_to_list(kde);
+#else
+   kde = NULL;
+#endif
+
+   if (before)
+     {
+       Ecore_List         *befores;
+
+       befores = ecore_desktop_paths_to_list(before);
+       if (befores)
+         {
+            char               *this_before;
+
+            ecore_list_first_goto(befores);
+            while ((this_before = ecore_list_next(befores)) != NULL)
+              {
+                 _ecore_desktop_paths_massage_path(path, home,
+                                                   this_before, NULL);
+                 _ecore_desktop_paths_check_and_add(paths, path);
+              }
+            E_FN_DEL(ecore_list_destroy, befores);
+         }
+     }
+
+   if (prepend_user_paths[path_type])
+     {
+       char               *this_path;
+
+       ecore_list_first_goto(prepend_user_paths[path_type]);
+       while ((this_path = ecore_list_next(prepend_user_paths[path_type])) != NULL)
+         {
+            _ecore_desktop_paths_massage_path(path, home, this_path, NULL);
+            _ecore_desktop_paths_check_and_add(paths, path);
+         }
+     }
+
+   if (env_home)
+     {
+       const char         *value;
+
+       value = getenv(env_home);
+       if ((value == NULL) || (value[0] == '\0'))
+         value = env_home_default;
+       env_list = ecore_desktop_paths_to_list(value);
+       if (env_list)
+         {
+            char               *this_env;
+
+            ecore_list_first_goto(env_list);
+            while ((this_env = ecore_list_next(env_list)) != NULL)
+              {
+                 if (types)
+                   {
+                      char *this_type;
+
+                      ecore_list_first_goto(types);
+                      while ((this_type = ecore_list_next(types)) != NULL)
+                        {
+                           _ecore_desktop_paths_massage_path(path, home,
+                                                        this_env, this_type);
+                           _ecore_desktop_paths_check_and_add(paths, path);
+                        }
+                   }
+                 else
+                   {
+                      _ecore_desktop_paths_massage_path(path, home, this_env, NULL);
+                      _ecore_desktop_paths_check_and_add(paths, path);
+                   }
+              }
+            E_FN_DEL(ecore_list_destroy, env_list);
+         }
+     }
+
+   if (append_user_paths[path_type])
+     {
+       char               *this_path;
+
+       ecore_list_first_goto(append_user_paths[path_type]);
+       while ((this_path = ecore_list_next(append_user_paths[path_type])) != NULL)
+         {
+            _ecore_desktop_paths_massage_path(path, home, this_path, NULL);
+            _ecore_desktop_paths_check_and_add(paths, path);
+         }
+     }
+
+   if (prepend_system_paths[path_type])
+     {
+       char               *this_path;
+
+       ecore_list_first_goto(prepend_system_paths[path_type]);
+       while ((this_path = ecore_list_next(prepend_system_paths[path_type])) != NULL)
+         {
+            _ecore_desktop_paths_massage_path(path, home, this_path, NULL);
+            _ecore_desktop_paths_check_and_add(paths, path);
+         }
+     }
+
+   if (env)
+     {
+       const char         *value;
+
+       value = getenv(env);
+       if ((value == NULL) || (value[0] == '\0'))
+         value = env_default;
+       env_list = ecore_desktop_paths_to_list(value);
+       if (env_list)
+         {
+            char               *this_env;
+
+            ecore_list_first_goto(env_list);
+            while ((this_env = ecore_list_next(env_list)) != NULL)
+              {
+                 if (types)
+                   {
+                      char *this_type;
+
+                      ecore_list_first_goto(types);
+                      while ((this_type = ecore_list_next(types)) != NULL)
+                        {
+                           _ecore_desktop_paths_massage_path(path, home,
+                                                        this_env, this_type);
+                           _ecore_desktop_paths_check_and_add(paths, path);
+                        }
+                   }
+                 else
+                   {
+                      _ecore_desktop_paths_massage_path(path, home, this_env, NULL);
+                      _ecore_desktop_paths_check_and_add(paths, path);
+                   }
+              }
+            E_FN_DEL(ecore_list_destroy, env_list);
+         }
+     }
+
+   if (append_system_paths[path_type])
+     {
+       char               *this_path;
+
+       ecore_list_first_goto(append_system_paths[path_type]);
+       while ((this_path = ecore_list_next(append_system_paths[path_type])) != NULL)
+         {
+            _ecore_desktop_paths_massage_path(path, home, this_path, NULL);
+            _ecore_desktop_paths_check_and_add(paths, path);
+         }
+     }
+
+   /*
+    * Get the pathlist from the config file - type=pathlist
+    *   for each path in config
+    *      if it is already in paths, skip it
+    *      if it exists, add it to end of paths
+    */
+
+   if (gnome_data)
+     {
+       char               *this_gnome;
+
+       ecore_list_first_goto(gnome_data);
+       while ((this_gnome = ecore_list_next(gnome_data)) != NULL)
+         {
+            if (types)
+              {
+                 char *this_type;
+
+                 ecore_list_first_goto(types);
+                 while ((this_type = ecore_list_next(types)) != NULL)
+                    {
+                       _ecore_desktop_paths_massage_path(path, home,
+                                                        this_gnome, this_type);
+                       _ecore_desktop_paths_check_and_add(paths, path);
+                    }
+              }
+            else
+              {
+                 _ecore_desktop_paths_massage_path(path, home, this_gnome, NULL);
+                 _ecore_desktop_paths_check_and_add(paths, path);
+              }
+         }
+     }
+   if (gnome_data && gnome_extras)
+     {
+       char               *this_gnome, *this_type;
+
+       ecore_list_first_goto(gnome_data);
+       while ((this_gnome = ecore_list_next(gnome_data)) != NULL)
+         {
+            ecore_list_first_goto(gnome_extras);
+            while ((this_type = ecore_list_next(gnome_extras)) != NULL)
+              {
+                 _ecore_desktop_paths_massage_path(path, home,
+                                                   this_gnome, this_type);
+                 _ecore_desktop_paths_check_and_add(paths, path);
+              }
+         }
+     }
+
+#ifdef KDE_SUPPORT
+   if ((exit_handler != NULL) && (kdes != NULL))
+     {
+       char               *this_kde;
+
+       ecore_list_first_goto(kdes);
+       while ((this_kde = ecore_list_next(kdes)) != NULL)
+         {
+            char                cmd[128];
+
+            sprintf(cmd, "kde-config --path %s", this_kde);
+            _ecore_desktop_paths_exec_config(paths, home, NULL, cmd);
+         }
+     }
+#endif
+
+#ifdef KDE_SUPPORT
+   E_FN_DEL(ecore_list_destroy, kdes);
+#endif
+   E_FN_DEL(ecore_list_destroy, gnome_extras);
+   E_FN_DEL(ecore_list_destroy, types);
+
+   return paths;
+}
+
+static void
+_ecore_desktop_paths_massage_path(char *path, char *home, char *first,
+                                 char *second)
+{
+   int                 last;
+
+   /* Strip traling slash of first. */
+   last = strlen(first) - 1;
+   while ((last >= 0) && (first[last] == '/'))
+     {
+       first[last] = '\0';
+       last--;
+     }
+
+   if (second)
+     {
+       /* Strip traling slash of second. */
+       last = strlen(second) - 1;
+       while ((last >= 0) && (second[last] == '/'))
+         {
+            second[last] = '\0';
+            last--;
+         }
+     }
+
+   if ((second) && (second[0] != '\0'))
+     {
+       if (first[0] == '~')
+         sprintf(path, "%s%s/%s/", home, &first[1],
+                 &second[(second[0] == '/') ? 1 : 0]);
+       else
+         sprintf(path, "%s/%s/", first, &second[(second[0] == '/') ? 1 : 0]);
+     }
+   else
+     {
+       if (first[0] == '~')
+         sprintf(path, "%s%s/", home, &first[1]);
+       else
+         sprintf(path, "%s/", first);
+     }
+}
+
+static void
+_ecore_desktop_paths_check_and_add(Ecore_List * paths, const char *path)
+{
+   struct stat         path_stat;
+   char               *this_path;
+
+   if (!paths) return;
+
+   /* Check if we have it already. */
+   ecore_list_first_goto(paths);
+   while ((this_path = ecore_list_next(paths)) != NULL)
+     {
+       if (strcmp(path, this_path) == 0)
+          return;
+     }
+
+   /* Check if the path exists. */
+   if ((stat(path, &path_stat) == 0) && (S_ISDIR(path_stat.st_mode)))
+      ecore_list_append(paths, strdup(path));
+}
+
+char               *
+ecore_desktop_paths_recursive_search(const char *path, const char *file,
+                                    int sub, int (*dir_func) (void *data,
+                                                              const char
+                                                              *path),
+                                    int (*func) (void *data, const char *path),
+                                    void *data)
+{
+   char               *fpath = NULL;
+   DIR                *dir = NULL;
+   struct dirent      *script;
+
+   if ((sub != 0) && (sub != -1))
+      sub -= 1;
+
+   dir = opendir(path);
+   if (!dir) return NULL;
+
+   while ((script = readdir(dir)) != NULL)
+     {
+       struct stat         script_stat;
+       char                info_text[PATH_MAX];
+
+       sprintf(info_text, "%s%s", path, script->d_name);
+       if ((stat(info_text, &script_stat) == 0))
+         {
+            if (S_ISDIR(script_stat.st_mode))
+              {
+                 if ((strcmp(basename(info_text), ".") != 0) &&
+                     (strcmp(basename(info_text), "..") != 0))
+                   {
+                      snprintf(info_text, PATH_MAX, "%s%s/", path, script->d_name);
+                      if ((dir_func) && (dir_func(data, info_text)))
+                          break;
+                      if (sub != 0)
+                        {
+                           if (fpath) free(fpath);
+                           fpath =
+                              ecore_desktop_paths_recursive_search(info_text, file, sub,
+                                                                   dir_func, func, data);
+                        }
+                   }
+              }
+            else
+              {
+                 if (file)
+                   {
+                      if (strcmp(basename(info_text), file) == 0)
+                        {
+                           if (fpath)
+                             free(fpath);
+                           fpath = strdup(info_text);
+                           if ((func) && (func(data, path)))
+                               break;
+                        }
+                   }
+                 else
+                   {
+                      if ((func) && (func(data, info_text)))
+                          break;
+                   }
+              }
+            if (fpath && (!func))
+              break;
+         }
+     }
+   closedir(dir);
+
+   return fpath;
+}
+
+#if defined GNOME_SUPPORT || defined KDE_SUPPORT
+static void
+_ecore_desktop_paths_exec_config(Ecore_List * paths, char *home,
+                                Ecore_List * extras, char *cmd)
+{
+   Ecore_Exe          *exe;
+   struct _config_exe_data ced;
+
+   ced.home = home;
+   ced.paths = paths;
+   ced.types = extras;
+   ced.done = 0;
+   exe =
+      ecore_exe_pipe_run(cmd,
+                        ECORE_EXE_PIPE_AUTO | ECORE_EXE_PIPE_READ |
+                        ECORE_EXE_PIPE_READ_LINE_BUFFERED, &ced);
+   if (exe)
+     {
+       ecore_exe_tag_set(exe, "genmenu/fdo");
+       while (ced.done == 0)
+         {
+            /* FIXME: raster is paranoid.  If too much time passes, give up.
+             * Or find a way to let the usual event loop shit do this without 
+             * spinning our wheels.  On the other hand, these are quick 
+             * commands, and we NEED this data before we can continue.  On 
+             * the gripping hand, some tweaking of the stuff searched for not 
+             * only gets rid of the need for this, but also speeds things up 
+             * drastically.
+             */
+            ecore_main_loop_iterate();
+            usleep(10);
+         }
+     }
+}
+
+static int
+_ecore_desktop_paths_cb_exe_exit(void *data, int type, void *event)
+{
+   Ecore_Exe_Event_Del *ev;
+   Ecore_List         *paths;
+   Ecore_List         *config_list;
+   Ecore_Exe_Event_Data *read;
+   struct _config_exe_data *ced;
+   char               *value;
+   char                path[PATH_MAX];
+
+   ev = event;
+   if (!ev->exe)
+      return 1;
+   value = ecore_exe_tag_get(ev->exe);
+   if ((!value) || (strcmp(value, "genmenu/fdo")) != 0)
+      return 1;
+   ced = ecore_exe_data_get(ev->exe);
+   if (!ced)
+      return 1;
+   paths = ced->paths;
+   if (!paths)
+      return 1;
+
+   read = ecore_exe_event_data_get(ev->exe, ECORE_EXE_PIPE_READ);
+   if ((read) && (read->lines[0].line))
+     {
+       value = read->lines[0].line;
+       config_list = ecore_desktop_paths_to_list(value);
+       if (config_list)
+         {
+            char               *this_config, *this_type;
+
+            ecore_list_first_goto(config_list);
+            while ((this_config = ecore_list_next(config_list)) != NULL)
+              {
+                 if (ced->types)
+                   {
+                      ecore_list_first_goto(ced->types);
+                      while ((this_type =
+                               ecore_list_next(ced->types)) != NULL)
+                        {
+                           _ecore_desktop_paths_massage_path(path,
+                                 ced->home,
+                                 this_config,
+                                 this_type);
+                           _ecore_desktop_paths_check_and_add(paths,
+                                 path);
+                        }
+                   }
+                 else
+                   {
+                      _ecore_desktop_paths_massage_path(path, ced->home,
+                            this_config,
+                            NULL);
+                      _ecore_desktop_paths_check_and_add(paths, path);
+                   }
+              }
+            E_FN_DEL(ecore_list_destroy, config_list);
+         }
+     }
+   ced->done = 1;
+   return 1;
+}
+#endif
+
+/** Split a list of paths into an Ecore_Hash.
+ *
+ * The list of paths can use any one of ;:, to seperate the paths.
+ * You can also escape the :;, with \.
+ *
+ * @param   paths A list of paths.
+ */
+Ecore_Hash         *
+ecore_desktop_paths_to_hash(const char *paths)
+{
+   Ecore_Hash         *result;
+   char               *path;
+   char                buf[PATH_MAX], *p, *pp;
+
+   if (!paths) return NULL;
+   result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+   if (!result) return NULL;
+   ecore_hash_free_key_cb_set(result, free);
+   ecore_hash_free_value_cb_set(result, free);
+
+   path = strdup(paths);
+   if (path)
+     {
+       p = path;
+       while (p)
+         {
+            pp = buf;
+            while (*p)
+              {
+                 /* Check for escape */
+                 if (*p == '\\')
+                   {
+                      /* If separator, skip escape */
+                      if ((*(p + 1) == ';') || (*(p + 1) == ':') || (*(p + 1) == ','))
+                        p++;
+                   }
+                 /* Check for separator */
+                 else if ((*p == ';') || (*p == ':') || (*p == ','))
+                   break;
+                 *pp = *p;
+                 pp++;
+                 p++;
+              }
+            *pp = '\0';
+            if (*buf) ecore_hash_set(result, strdup(buf), strdup(buf));
+            if (*p) p++;
+            else p = NULL;
+         }
+       free(path);
+     }
+   return result;
+}
+
+/** Split a list of paths into an Ecore_Hash.
+ *
+ * The list of paths can use any one of ;:, to seperate the paths.
+ * You can also escape the :;, with \.
+ *
+ * @param   paths A list of paths.
+ */
+Ecore_List         *
+ecore_desktop_paths_to_list(const char *paths)
+{
+   Ecore_List         *result;
+   char               *path;
+   char                buf[PATH_MAX], *p, *pp;
+
+   if (!paths) return NULL;
+   result = ecore_list_new();
+   if (!result) return NULL;
+   ecore_list_free_cb_set(result, free);
+
+   path = strdup(paths);
+   if (path)
+     {
+       p = path;
+       while (p)
+         {
+            pp = buf;
+            while (*p)
+              {
+                 /* Check for escape */
+                 if (*p == '\\')
+                   {
+                      /* If separator, skip escape */
+                      if ((*(p + 1) == ';') || (*(p + 1) == ':') || (*(p + 1) == ','))
+                        p++;
+                   }
+                 /* Check for separator */
+                 else if ((*p == ';') || (*p == ':') || (*p == ','))
+                   break;
+                 *pp = *p;
+                 pp++;
+                 p++;
+              }
+            *pp = '\0';
+            if (*buf) ecore_list_append(result, strdup(buf));
+            if (*p) p++;
+            else p = NULL;
+         }
+       free(path);
+     }
+   return result;
+}
+
+EAPI int
+ecore_desktop_paths_for_each(Ecore_Desktop_Paths_Type type,
+                            Ecore_For_Each function, void *user_data)
+{
+   Ecore_List         *list = NULL;
+
+   switch (type)
+     {
+     case ECORE_DESKTOP_PATHS_CONFIG:
+       list = ecore_desktop_paths_config;
+       break;
+     case ECORE_DESKTOP_PATHS_MENUS:
+       list = ecore_desktop_paths_menus;
+       break;
+     case ECORE_DESKTOP_PATHS_DIRECTORIES:
+       list = ecore_desktop_paths_directories;
+       break;
+     case ECORE_DESKTOP_PATHS_DESKTOPS:
+       list = ecore_desktop_paths_desktops;
+       break;
+     case ECORE_DESKTOP_PATHS_ICONS:
+       list = ecore_desktop_paths_icons;
+       break;
+     case ECORE_DESKTOP_PATHS_KDE_LEGACY:
+       list = ecore_desktop_paths_kde_legacy;
+       break;
+     case ECORE_DESKTOP_PATHS_XSESSIONS:
+       list = ecore_desktop_paths_xsessions;
+       break;
+     case ECORE_DESKTOP_PATHS_MAX:
+       break;
+     }
+   if (list)
+      return ecore_list_for_each(list, function, user_data);
+   return 0;
+}
diff --git a/src/lib/ecore_desktop/ecore_desktop_private.h b/src/lib/ecore_desktop/ecore_desktop_private.h
new file mode 100644 (file)
index 0000000..4d8c176
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef _ECORE_DESKTOP_PRIVATE_H
+# define _ECORE_DESKTOP_PRIVATE_H
+
+#include <string.h>
+#include <strings.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <limits.h>
+#include <Ecore.h>
+#include <Ecore_File.h>
+
+#define E_FN_DEL(_fn, _h) if (_h) { _fn(_h); _h = NULL; }
+#define E_REALLOC(p, s, n) p = (s *)realloc(p, sizeof(s) * n)
+#define E_NEW(s, n) (s *)calloc(n, sizeof(s))
+#define E_NEW_BIG(s, n) (s *)malloc(n * sizeof(s))
+#define E_FREE(p) { if (p) {free(p); p = NULL;} }
+
+extern Ecore_List  *ecore_desktop_paths_config;
+extern Ecore_List  *ecore_desktop_paths_menus;
+extern Ecore_List  *ecore_desktop_paths_directories;
+extern Ecore_List  *ecore_desktop_paths_desktops;
+extern Ecore_List  *ecore_desktop_paths_icons;
+extern Ecore_List  *ecore_desktop_paths_kde_legacy;
+extern Ecore_List  *ecore_desktop_paths_xsessions;
+extern struct _Ecore_Desktop_Instrumentation instrumentation;
+
+
+# ifdef __cplusplus
+extern              "C"
+{
+# endif
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/src/lib/ecore_desktop/ecore_desktop_tree.c b/src/lib/ecore_desktop/ecore_desktop_tree.c
new file mode 100644 (file)
index 0000000..e8bf09e
--- /dev/null
@@ -0,0 +1,362 @@
+#include <sys/types.h>
+
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
+static void         ecore_desktop_tree_dump_each_hash_node(void *value,
+                                                          void *user_data);
+
+/* Just a quick and dirty tree implemtation that will likely get replaced by 
+ * something much saner at a later date.  I wrote most of this while falling
+ * asleep.  It will probably scare me when I wake up.  B-)
+ *
+ * Devilhorns said to make it portable, so we can't rely on any external tree 
+ * implementation.  So this tree is designed specifically for this task.  Then
+ * we finally found a place for the genmenu code, and Ecore was back on the 
+ * menu.  However, speed could be an issue later, so it might be worth it to 
+ * stick with a custom tree implementation, so that we can optimize it for this
+ * task.
+ *
+ * The trees will be tiny.
+ * They only store strings.
+ * There is no insertion or deletion, only append.
+ * Append order must be maintained.
+ * The trees will only ever be accessed sequentially, from begining to end.
+ * The tree data will come in two ways, all in one big string, or a bunch of 
+ * seperate strings, one per element.  Any particular tree might have both.
+ *
+ * No duplicates in the tree,
+ *    This is the nasty part of this tree implementation.
+ *    Insertions involve a linear search for dupes, most of the 
+ *    time there won't be any dupes, so the tree is searched in
+ *    it's entirety.  These trees will be really small, and only created at 
+ *    the begining, so no big drama there.
+ * The tree may allow duplicates.
+ */
+
+Ecore_Desktop_Tree *
+ecore_desktop_tree_new(char *buffer)
+{
+   Ecore_Desktop_Tree *tree;
+
+   tree = E_NEW(Ecore_Desktop_Tree, 1);
+   if ((tree) && (buffer))
+     {
+       tree->buffers =
+          (char **)realloc(tree->buffers,
+                           (tree->buffers_size + 1) * sizeof(char *));
+       tree->buffers[tree->buffers_size++] = strdup(buffer);
+     }
+   return tree;
+}
+
+Ecore_Desktop_Tree *
+ecore_desktop_tree_add(Ecore_Desktop_Tree * tree, const char *element)
+{
+   tree->elements =
+      (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
+                                            (tree->size +
+                                             1) *
+                                            sizeof
+                                            (Ecore_Desktop_Tree_Element));
+   tree->elements[tree->size].element = (char*)element;
+   tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING;
+   return tree;
+}
+
+Ecore_Desktop_Tree *
+ecore_desktop_tree_extend(Ecore_Desktop_Tree * tree, const char *element)
+{
+   tree->buffers =
+      (char **)realloc(tree->buffers,
+                      (tree->buffers_size + 1) * sizeof(char *));
+   tree->buffers[tree->buffers_size++] = strdup(element);
+   tree = ecore_desktop_tree_add(tree, tree->buffers[tree->buffers_size - 1]);
+
+   return tree;
+}
+
+void
+ecore_desktop_tree_track(Ecore_Desktop_Tree * tree, void *element)
+{
+   tree->buffers =
+      (char **)realloc(tree->buffers,
+                      (tree->buffers_size + 1) * sizeof(char *));
+   tree->buffers[tree->buffers_size++] = element;
+}
+
+/* OK, so we need an insert after all, and it falls into the dumb category. */
+Ecore_Desktop_Tree *
+ecore_desktop_tree_insert(Ecore_Desktop_Tree * tree, int before, void *element,
+                         Ecore_Desktop_Tree_Element_Type type)
+{
+   int                 i;
+
+   tree->elements =
+      (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
+                                            (tree->size +
+                                             1) *
+                                            sizeof
+                                            (Ecore_Desktop_Tree_Element));
+   tree->size++;
+   for (i = tree->size - 1; i > before; i--)
+     {
+       tree->elements[i].element = tree->elements[i - 1].element;
+       tree->elements[i].type = tree->elements[i - 1].type;
+     }
+   tree->elements[before].element = element;
+   tree->elements[before].type = type;
+   return tree;
+}
+
+/* OK, so we need a tree merge after all, and it falls into the dumb category. */
+Ecore_Desktop_Tree *
+ecore_desktop_tree_merge(Ecore_Desktop_Tree * tree, int before,
+                        Ecore_Desktop_Tree * element)
+{
+   int                 i, size;
+
+   size = element->size;
+   if (size)
+     {
+       tree->elements =
+          (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
+                                                 (tree->size +
+                                                  size) *
+                                                 sizeof
+                                                 (Ecore_Desktop_Tree_Element));
+       tree->size += size;
+       for (i = tree->size - 1; (i > before) && ((i - size) > 0); i--)
+         {
+            tree->elements[i].element = tree->elements[i - size].element;
+            tree->elements[i].type = tree->elements[i - size].type;
+         }
+       for (i = 0; i < size; i++)
+         {
+            tree->elements[before + i].element = element->elements[i].element;
+            tree->elements[before + i].type = element->elements[i].type;
+         }
+     }
+
+   /* Careful, this might screw up the freeing order if that is important. */
+   size = element->buffers_size;
+   if (size)
+     {
+/*
+         tree->buffers = (char **) realloc(tree->buffers, (tree->buffers_size + size) * sizeof(char *));
+         tree->buffers_size += size;
+         for (i = 0; i < size; i++)
+            {
+               tree->buffers[tree->buffers_size + i] = element->buffers[i];
+              element->buffers[i] = NULL;
+            }
+*/
+     }
+   return tree;
+}
+
+Ecore_Desktop_Tree *
+ecore_desktop_tree_add_child(Ecore_Desktop_Tree * tree,
+                            Ecore_Desktop_Tree * element)
+{
+   tree->elements =
+      (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
+                                            (tree->size +
+                                             1) *
+                                            sizeof
+                                            (Ecore_Desktop_Tree_Element));
+   tree->elements[tree->size].element = element;
+   tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE;
+   element->parent = tree;
+   return tree;
+}
+
+Ecore_Desktop_Tree *
+ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Ecore_Hash * element)
+{
+   tree->elements =
+      (Ecore_Desktop_Tree_Element *) realloc(tree->elements,
+                                            (tree->size +
+                                             1) *
+                                            sizeof
+                                            (Ecore_Desktop_Tree_Element));
+   tree->elements[tree->size].element = element;
+   tree->elements[tree->size++].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH;
+   return tree;
+}
+
+void
+ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree, int element)
+{
+   if (tree->size > element)
+     {
+       tree->elements[element].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+       tree->elements[element].element = NULL;
+     }
+}
+
+int
+ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree, char *element)
+{
+   int                 exist = 0;
+   int                 i;
+
+   /* This is the dumb part of the tree, a linear search. */
+   for (i = 0; i < tree->size; i++)
+     {
+       if ((tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING)
+           && (strcmp((char *)tree->elements[i].element, element) == 0))
+         {
+            exist = 1;
+            break;
+         }
+     }
+   return exist;
+}
+
+int
+ecore_desktop_tree_foreach(Ecore_Desktop_Tree * tree, int level,
+                          int (*func) (const void *data,
+                                       Ecore_Desktop_Tree * tree, int element,
+                                       int level), const void *data)
+{
+   int                 result = 0;
+   int                 i;
+
+   for (i = 0; i < tree->size; i++)
+     {
+       if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+         {
+            if (ecore_desktop_tree_foreach
+                ((Ecore_Desktop_Tree *) tree->elements[i].element, level + 1,
+                 func, data))
+               result = 1;
+         }
+       else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL)
+         {
+            /* This falls into the dumb category. */
+            int                 j = i;
+            int                 k = i;
+            int                 moved = 0;
+
+            /* Find the next non NULL element. */
+            while ((j < tree->size)
+                   && (tree->elements[j].type ==
+                       ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL))
+               j++;
+            /* Move the next batch of non NULL up. */
+            while ((j < tree->size)
+                   && (tree->elements[j].type !=
+                       ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL))
+              {
+                 moved = 1;
+                 tree->elements[k].type = tree->elements[j].type;
+                 tree->elements[k].element = tree->elements[j].element;
+                 tree->elements[j].type = ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL;
+                 tree->elements[j].element = NULL;
+                 j++;
+                 k++;
+              }
+            if (moved)
+               i--;
+            else
+               tree->size = i;
+         }
+       else
+         {
+            if (func(data, tree, i, level))
+               result = 1;
+         }
+     }
+   return result;
+}
+
+void
+ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree, int level)
+{
+   int                 i;
+
+   for (i = 0; i < tree->size; i++)
+     {
+       int                 j;
+
+       for (j = 0; j < level; j++)
+          printf(".");
+       switch (tree->elements[i].type)
+         {
+         case ECORE_DESKTOP_TREE_ELEMENT_TYPE_NULL:
+            {
+               printf("NULL\n");
+            }
+            break;
+
+         case ECORE_DESKTOP_TREE_ELEMENT_TYPE_STRING:
+            {
+               printf("%s\n", (char *)tree->elements[i].element);
+            }
+            break;
+
+         case ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE:
+            {
+               printf("TREE ELEMENT TYPE\n");
+               ecore_desktop_tree_dump((Ecore_Desktop_Tree *) tree->
+                                       elements[i].element, level + 1);
+            }
+            break;
+
+         case ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH:
+            {
+               int                 lev;
+
+               lev = level + 1;
+               printf("HASH ELEMENT TYPE\n");
+               ecore_hash_for_each_node((Ecore_Hash *) tree->elements[i].
+                                        element,
+                                        ecore_desktop_tree_dump_each_hash_node,
+                                        &lev);
+            }
+            break;
+
+         default:
+            {
+               printf("UNKNOWN ELEMENT TYPE!\n");
+            }
+            break;
+         }
+     }
+}
+
+static void
+ecore_desktop_tree_dump_each_hash_node(void *value, void *user_data)
+{
+   Ecore_Hash_Node    *node;
+   int                 level;
+   int                 j;
+
+   node = (Ecore_Hash_Node *) value;
+   level = *((int *)user_data);
+   for (j = 0; j < level; j++)
+      printf(".");
+   printf("%s = %s\n", (char *)node->key, (char *)node->value);
+}
+
+void
+ecore_desktop_tree_del(Ecore_Desktop_Tree * tree)
+{
+   int                 i;
+
+   for (i = tree->size - 1; i >= 0; i--)
+     {
+       if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_TREE)
+          ecore_desktop_tree_del((Ecore_Desktop_Tree *) tree->elements[i].
+                                 element);
+       else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
+          ecore_hash_destroy((Ecore_Hash *) tree->elements[i].element);
+     }
+
+   E_FREE(tree->elements);
+
+   for (i = tree->buffers_size - 1; i >= 0; i--)
+      E_FREE(tree->buffers[i]);
+   E_FREE(tree);
+}
diff --git a/src/lib/ecore_desktop/ecore_desktop_xmlame.c b/src/lib/ecore_desktop/ecore_desktop_xmlame.c
new file mode 100644 (file)
index 0000000..6adcaf0
--- /dev/null
@@ -0,0 +1,132 @@
+#include "Ecore_Desktop.h"
+#include "ecore_desktop_private.h"
+
+#include <fcntl.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+/** xmlame.c Extensively Mocked Language Approximately Mangled for Enlightenment. 
+ *
+ * This is NOT a real XML parser.  There were a few ways we could go when it came
+ * to parsing the freedesktop.org (fdo) XML menu files.  Whatever way we went, we 
+ * needed some sort of XML parser if we wanted to fully support fdo menu files.  
+ * Nothing we can do about that, fdo set the standard and they choose XML to do it.
+ *
+ * After a discussion with raster, three things led to the decision to do it this 
+ * way.  It is likely that this will get included as a core part of the E17 window 
+ * manager (E17) coz E17 needs this functionality.  E17 is in a dependency freeze
+ * and there is no XML parser in it's current dependencies.  The fdo XML menu files
+ * look to be simple enough to parse that this sort of fake, brain dead, XML parser
+ * may get away with it.  Much testing on lots of systems is highly recommended.
+ *
+ * The final '>' of a tag is replaced with a '\0', but it's existance can be implied.
+ */
+
+static char        *_ecore_desktop_xmlame_parse(Ecore_Desktop_Tree * tree,
+                                               char *buffer);
+
+Ecore_Desktop_Tree *
+ecore_desktop_xmlame_new(char *buffer)
+{
+   Ecore_Desktop_Tree *tree;
+
+   tree = ecore_desktop_tree_new(buffer);
+   return tree;
+}
+
+Ecore_Desktop_Tree *
+ecore_desktop_xmlame_get(char *file)
+{
+   int                 size;
+   char               *buffer;
+   Ecore_Desktop_Tree *tree = NULL;
+
+   size = ecore_file_size(file);
+   buffer = (char *)malloc(size + 1);
+   if (buffer)
+     {
+       int                 fd;
+
+       buffer[0] = '\0';
+       fd = open(file, O_RDONLY);
+       if (fd != -1)
+         {
+            if (read(fd, buffer, size) == size)
+               buffer[size] = '\0';
+         }
+       tree = ecore_desktop_xmlame_new(buffer);
+       if (tree)
+         {
+            /* Have the file name as the first item on the tree, for later reference. */
+            ecore_desktop_tree_extend(tree, file);
+            _ecore_desktop_xmlame_parse(tree, buffer);
+         }
+     }
+   return tree;
+}
+
+static char        *
+_ecore_desktop_xmlame_parse(Ecore_Desktop_Tree * tree, char *buffer)
+{
+   while (*buffer != '\0')
+     {
+       char               *text;
+
+       /* Skip any white space at the beginning. */
+       while ((*buffer != '\0') && (isspace(*buffer)))
+          buffer++;
+       text = buffer;
+       /* Find the beginning of a tag. */
+       while ((*buffer != '<') && (*buffer != '\0'))
+          buffer++;
+       /* Check for data between tags. */
+       if (buffer != text)
+         {
+            char                t;
+
+            t = *buffer;
+            *buffer = '\0';
+            ecore_desktop_tree_extend(tree, text);
+            *buffer = t;
+         }
+       if (*buffer != '\0')
+         {
+            char               *begin;
+
+            begin = buffer++;
+            /* Find the end of the tag. */
+            while ((*buffer != '>') && (*buffer != '\0'))
+               buffer++;
+            /* We have our tag, do something with it. */
+            if (*buffer != '\0')
+              {
+                 *buffer++ = '\0';
+                 if (begin[1] == '/')
+                   {           /* The end of an element. */
+                      ecore_desktop_tree_add(tree, begin);
+                      break;
+                   }
+                 else if ((begin[1] == '!') || (begin[1] == '-')
+                          || (*(buffer - 2) == '/'))
+                   {           /* This is a script, a comment, or a stand alone tag. */
+                      ecore_desktop_tree_add(tree, begin);
+                   }
+                 else
+                   {           /* The beginning of an element. */
+                      Ecore_Desktop_Tree *new_tree;
+
+                      new_tree = ecore_desktop_xmlame_new(NULL);
+                      if (new_tree)
+                        {
+                           ecore_desktop_tree_add_child(tree, new_tree);
+                           ecore_desktop_tree_add(new_tree, begin);
+                           buffer =
+                              _ecore_desktop_xmlame_parse(new_tree, buffer);
+                        }
+                   }
+              }
+         }
+     }
+
+   return buffer;
+}
diff --git a/src/lib/ecore_directfb/.cvsignore b/src/lib/ecore_directfb/.cvsignore
new file mode 100644 (file)
index 0000000..ce9e988
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile
+Makefile.in
+.libs
+.deps
+*.lo
+libecore_directfb.la
diff --git a/src/lib/ecore_directfb/Ecore_DirectFB.h b/src/lib/ecore_directfb/Ecore_DirectFB.h
new file mode 100644 (file)
index 0000000..7f9e898
--- /dev/null
@@ -0,0 +1,192 @@
+#ifndef _ECORE_DIRECTFB_H
+#define _ECORE_DIRECTFB_H
+
+#ifdef EAPI
+#undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+#include <Ecore_Data.h>
+#include <directfb.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EAPI extern int ECORE_DIRECTFB_EVENT_POSITION;
+EAPI extern int ECORE_DIRECTFB_EVENT_SIZE;
+EAPI extern int ECORE_DIRECTFB_EVENT_CLOSE;
+EAPI extern int ECORE_DIRECTFB_EVENT_DESTROYED;
+EAPI extern int ECORE_DIRECTFB_EVENT_GOT_FOCUS;
+EAPI extern int ECORE_DIRECTFB_EVENT_LOST_FOCUS;
+EAPI extern int ECORE_DIRECTFB_EVENT_KEY_DOWN;
+EAPI extern int ECORE_DIRECTFB_EVENT_KEY_UP;
+EAPI extern int ECORE_DIRECTFB_EVENT_BUTTON_DOWN;
+EAPI extern int ECORE_DIRECTFB_EVENT_BUTTON_UP;
+EAPI extern int ECORE_DIRECTFB_EVENT_MOTION;
+EAPI extern int ECORE_DIRECTFB_EVENT_ENTER;
+EAPI extern int ECORE_DIRECTFB_EVENT_LEAVE;
+EAPI extern int ECORE_DIRECTFB_EVENT_WHEEL;
+
+       
+
+#ifndef _ECORE_DIRECTFB_WINDOW_PREDEF
+typedef struct _Ecore_DirectFB_Window                  Ecore_DirectFB_Window;
+#endif
+typedef struct _Ecore_DirectFB_Cursor                  Ecore_DirectFB_Cursor;
+
+typedef struct _Ecore_DirectFB_Event_Key_Down          Ecore_DirectFB_Event_Key_Down; 
+typedef struct _Ecore_DirectFB_Event_Key_Up            Ecore_DirectFB_Event_Key_Up;
+typedef struct _Ecore_DirectFB_Event_Button_Down       Ecore_DirectFB_Event_Button_Down;
+typedef struct _Ecore_DirectFB_Event_Button_Up         Ecore_DirectFB_Event_Button_Up;
+typedef struct _Ecore_DirectFB_Event_Motion            Ecore_DirectFB_Event_Motion;
+typedef struct _Ecore_DirectFB_Event_Enter             Ecore_DirectFB_Event_Enter;
+typedef struct _Ecore_DirectFB_Event_Leave             Ecore_DirectFB_Event_Leave;
+typedef struct _Ecore_DirectFB_Event_Wheel             Ecore_DirectFB_Event_Wheel;
+typedef struct _Ecore_DirectFB_Event_Got_Focus         Ecore_DirectFB_Event_Got_Focus;
+typedef struct _Ecore_DirectFB_Event_Lost_Focus                Ecore_DirectFB_Event_Lost_Focus;
+
+
+/* this struct is to keep windows data (id, window itself and surface) in memory as every call
+ * to DirectFB for this values (e.g window->GetSurface(window,&surface)) will increment the
+ * reference count, then we will have to release N times the data, so better we just ask for 
+ them once */
+struct _Ecore_DirectFB_Window
+{
+       DFBWindowID             id;
+       IDirectFBWindow         *window;
+       IDirectFBSurface        *surface;
+       Ecore_DirectFB_Cursor   *cursor;
+       
+};
+
+struct _Ecore_DirectFB_Cursor
+{
+       IDirectFBSurface        *surface;
+       int                     hot_x;
+       int                     hot_y;
+
+};
+
+struct _Ecore_DirectFB_Event_Key_Down /** DirectFB Key Down event */
+{
+       char   *name; /**< The name of the key that was released */
+       char   *string; /**< The logical symbol of the key that was pressed */
+       char   *key_compose; /**< The UTF-8 string conversion if any */
+       unsigned int time;
+       DFBWindowID win;
+};
+   
+struct _Ecore_DirectFB_Event_Key_Up /** DirectFB Key Up event */
+{
+       char   *name; /**< The name of the key that was released */
+       char   *string; /**< The logical symbol of the key that was pressed */
+       char   *key_compose; /**< The UTF-8 string conversion if any */
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Button_Down
+{
+       int button;
+       int modifiers;
+       int x, y;
+       unsigned int time;
+       int double_click : 1;
+       int triple_click : 1;
+       DFBWindowID win;
+};
+struct _Ecore_DirectFB_Event_Button_Up
+{
+       int button;
+       int modifiers;
+       int x, y;
+       unsigned int time;
+       DFBWindowID win;
+};
+struct _Ecore_DirectFB_Event_Motion
+{
+       int modifiers;
+       int x, y;
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Enter
+{
+       int modifiers;
+       int x, y;
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Leave
+{
+       int modifiers;
+       int x, y;
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Wheel
+{
+       int direction;
+       int z;
+       int modifiers;
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Got_Focus
+{
+       unsigned int time;
+       DFBWindowID win;
+};
+
+struct _Ecore_DirectFB_Event_Lost_Focus
+{
+       unsigned int time;
+       DFBWindowID win;
+};
+
+/* main functions */
+EAPI int ecore_directfb_init(const char *name);
+EAPI int ecore_directfb_shutdown(void);
+EAPI IDirectFB * ecore_directfb_interface_get(void);
+/* window operations */
+EAPI Ecore_DirectFB_Window * ecore_directfb_window_new(int x, int y, int w, int h);
+EAPI void ecore_directfb_window_del(Ecore_DirectFB_Window *window);
+EAPI void ecore_directfb_window_move(Ecore_DirectFB_Window *window, int x, int y);
+EAPI void ecore_directfb_window_resize(Ecore_DirectFB_Window *window, int w, int h);
+EAPI void ecore_directfb_window_focus(Ecore_DirectFB_Window *window);
+EAPI void ecore_directfb_window_show(Ecore_DirectFB_Window *window);
+EAPI void ecore_directfb_window_hide(Ecore_DirectFB_Window *window);
+EAPI void ecore_directfb_window_shaped_set(Ecore_DirectFB_Window *window, int set);
+EAPI void ecore_directfb_window_fullscreen_set(Ecore_DirectFB_Window *window, int set);
+EAPI void ecore_directfb_window_size_get(Ecore_DirectFB_Window *window, int *w, int *h);
+EAPI void ecore_directfb_window_cursor_show(Ecore_DirectFB_Window *window, int show);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_directfb/Makefile.am b/src/lib/ecore_directfb/Makefile.am
new file mode 100644 (file)
index 0000000..a2f693b
--- /dev/null
@@ -0,0 +1,34 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore \
+@DIRECTFB_CFLAGS@
+
+if BUILD_ECORE_DIRECTFB
+
+lib_LTLIBRARIES = libecore_directfb.la
+include_HEADERS = \
+Ecore_DirectFB.h
+
+libecore_directfb_la_SOURCES = \
+ecore_directfb.c \
+ecore_directfb_keys.h \
+ecore_directfb_private.h
+
+libecore_directfb_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@DIRECTFB_LIBS@
+
+libecore_directfb_la_LDFLAGS = -version-info @version_info@
+
+libecore_directfb_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+Ecore_DirectFB.h \
+ecore_directfb.c \
+ecore_directfb_keys.h \
+ecore_directfb_private.h
diff --git a/src/lib/ecore_directfb/ecore_directfb.c b/src/lib/ecore_directfb/ecore_directfb.c
new file mode 100644 (file)
index 0000000..ce4bb76
--- /dev/null
@@ -0,0 +1,746 @@
+#include "ecore_private.h"
+#include "Ecore_DirectFB.h"
+#include "ecore_directfb_private.h"
+#include "ecore_directfb_keys.h"
+#include "Ecore.h"
+
+/* ecore_directfb */
+/******************/
+/* About */
+/* with this you can create windows of directfb and handle events through ecore
+ * TODO:
+ * - handle all event types
+ * - 
+ * */
+
+static int _ecore_directfb_key_symbols_count = sizeof(_ecore_directfb_key_symbols)/sizeof(Ecore_DirectFB_Key_Symbols);
+static int _ecore_directfb_init_count = 0;
+
+static int _window_event_fd = 0;
+static int _input_event_fd = 0;
+
+static int _ecore_directfb_fullscreen_window_id = 0;
+static int _cursor_x = 0;
+static int _cursor_y = 0;
+
+EAPI int ECORE_DIRECTFB_EVENT_POSITION = 0;
+EAPI int ECORE_DIRECTFB_EVENT_SIZE = 0;
+EAPI int ECORE_DIRECTFB_EVENT_CLOSE = 0;
+EAPI int ECORE_DIRECTFB_EVENT_DESTROYED = 0;
+EAPI int ECORE_DIRECTFB_EVENT_GOT_FOCUS = 0;
+EAPI int ECORE_DIRECTFB_EVENT_LOST_FOCUS = 0;
+EAPI int ECORE_DIRECTFB_EVENT_KEY_DOWN = 0;
+EAPI int ECORE_DIRECTFB_EVENT_KEY_UP = 0;
+EAPI int ECORE_DIRECTFB_EVENT_BUTTON_DOWN = 0;
+EAPI int ECORE_DIRECTFB_EVENT_BUTTON_UP = 0;
+EAPI int ECORE_DIRECTFB_EVENT_MOTION = 0;
+EAPI int ECORE_DIRECTFB_EVENT_ENTER = 0;
+EAPI int ECORE_DIRECTFB_EVENT_LEAVE = 0;
+EAPI int ECORE_DIRECTFB_EVENT_WHEEL = 0;
+
+
+static Ecore_Fd_Handler *_window_event_fd_handler_handle = NULL;
+static Ecore_Fd_Handler *_input_event_fd_handler_handle = NULL;
+
+/* this hash is to store all the possible key names for fast lookup */
+static Ecore_Hash *_ecore_directfb_key_symbols_hash = NULL;
+
+
+static IDirectFB *_dfb = NULL;                 // the main interface
+static IDirectFBEventBuffer *_window_event;    // the main event buffer (all windows are attached to this)
+static IDirectFBEventBuffer *_input_event;     // the main event buffer (all windows are attached to this)
+static IDirectFBDisplayLayer *_layer;          // the main layer
+static DFBResult _err;                         // usefull for DFBCHECK
+
+
+/*******************/
+/* local functions */
+/*******************/
+
+/* free ecore directfb events functions */
+/****************************************/
+
+static void 
+_ecore_directfb_event_free_key_down(void *data __UNUSED__, void *ev)
+{
+   Ecore_DirectFB_Event_Key_Up *e;
+   
+   e = ev;
+   if(e->name) free(e->name);
+   if (e->string) free(e->string);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_directfb_event_free_key_up(void *data __UNUSED__, void *ev)
+{
+   Ecore_DirectFB_Event_Key_Up *e;
+   
+   e = ev;
+   if(e->name) free(e->name);
+   if (e->string) free(e->string);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+
+/* helpers */
+/***********/
+int
+_ecore_directfb_hash_compare(void *key1, void *key2)
+{
+       if(*(unsigned int*)key1 == *(unsigned int*)key2)
+               return 0;
+       else
+               return 1;
+
+}
+
+unsigned int _ecore_directfb_hash_create(void *key)
+{
+       return *(unsigned int*)key % ecore_prime_table[_ecore_directfb_key_symbols_hash->size];
+}
+
+
+/* directfb window input events handler */
+/****************************************/
+
+static void
+_ecore_directfb_event_handle_motion(DFBEvent *evt)
+{
+
+       Ecore_DirectFB_Event_Motion *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Motion));
+
+       switch(evt->clazz)
+       {
+               case DFEC_INPUT:
+                       e->modifiers = 0;
+                       switch(evt->input.axis)
+                       {
+                               case DIAI_X:
+                                       e->x = _cursor_x = evt->input.axisabs;
+                                       e->y = _cursor_y;
+                                       break;
+                               case DIAI_Y:
+                                       e->y = _cursor_y = evt->input.axisabs;
+                                       e->x = _cursor_x;
+                                       break;
+                               case DIAI_Z:
+                                       //_ecore_directfb_event_handle_wheel(evt);
+                                       return;
+                               default:
+                                       return;
+                       }
+                       e->win = _ecore_directfb_fullscreen_window_id;
+                       e->time = 0;
+                       break;
+             
+               case DFEC_WINDOW:
+                       e->modifiers = 0;
+                       e->x = evt->window.x;
+                       e->y = evt->window.y;
+                       e->win = evt->window.window_id;
+                       e->time = 0;
+                       break;
+               default:
+                       break;
+       }
+       ecore_event_add(ECORE_DIRECTFB_EVENT_MOTION, e, NULL, NULL);
+}
+static void
+_ecore_directfb_event_handle_key_down(DFBEvent *evt)
+{
+
+       Ecore_DirectFB_Event_Key_Down *e;
+       unsigned int key_symbol;
+       struct keymap *k;
+       
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Key_Down));
+       
+       switch(evt->clazz)
+       {
+               case DFEC_INPUT:
+                       key_symbol = evt->input.key_symbol;
+                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+
+                       if(!k) 
+                       {
+                               printf("error en el numero, %0X\n", evt->input.key_symbol);
+                               return;
+                       }
+                       e->name = strdup(k->name);
+                       e->string = strdup(k->string);
+                       e->key_compose = NULL;
+                       e->win = _ecore_directfb_fullscreen_window_id;
+                       e->time = 0;
+                       break;
+             
+               case DFEC_WINDOW:
+                       key_symbol = evt->window.key_symbol;
+                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+
+                       if(!k) 
+                       {
+                               printf("error en el numero, %0X\n", evt->window.key_symbol);
+                               return;
+                       }
+                       e->name = strdup(k->name);
+                       e->string = strdup(k->string);
+                       e->key_compose = NULL;
+                       e->win = evt->window.window_id;
+                       e->time = 0;
+                       break;
+               default:
+                       break;
+       }
+                               
+       ecore_event_add(ECORE_DIRECTFB_EVENT_KEY_DOWN, e, _ecore_directfb_event_free_key_down, NULL);
+}
+static void
+_ecore_directfb_event_handle_key_up(DFBEvent *evt)
+{
+       Ecore_DirectFB_Event_Key_Up *e;
+       unsigned int key_symbol;
+       struct keymap *k;
+       
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Key_Up));
+       
+       switch(evt->clazz)
+       {
+               case DFEC_INPUT:
+                       key_symbol = evt->input.key_symbol;
+                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+
+                       
+                       if(!k) 
+                       {
+                               printf("error en el numero, %0X\n", evt->input.key_symbol);
+                               return;
+                       }
+                       e->name = strdup(k->name);
+                       e->string = strdup(k->string);
+                       e->key_compose = NULL;
+                       e->win = _ecore_directfb_fullscreen_window_id;
+                       e->time = 0;
+                       break;
+             
+               case DFEC_WINDOW:
+                       key_symbol = evt->window.key_symbol;
+                       k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
+
+                       if(!k) 
+                       {
+                               printf("error en el numero, %0X\n", evt->window.key_symbol);
+                               return;
+                       }
+                       e->name = strdup(k->name);
+                       e->string = strdup(k->string);
+                       e->key_compose = NULL;
+                       e->win = evt->window.window_id;
+                       e->time = 0;
+                       break;
+               default:
+                       break;
+       }
+       ecore_event_add(ECORE_DIRECTFB_EVENT_KEY_UP, e, _ecore_directfb_event_free_key_up, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_button_down(DFBEvent *evt)
+{
+       Ecore_DirectFB_Event_Button_Down *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Button_Down));
+
+       switch(evt->clazz)
+       {
+               case DFEC_INPUT:
+                       e->button = evt->input.button + 1;
+                       e->modifiers = 0;
+                       DFBCHECK(_layer->GetCursorPosition(_layer,&e->x,&e->y));
+                       e->x = _cursor_x;
+                       e->y = _cursor_y;
+                       e->win = _ecore_directfb_fullscreen_window_id;
+                       e->time = 0;
+                       
+                       break;
+             
+               case DFEC_WINDOW:
+                       e->button = evt->window.button + 1;
+                       e->modifiers = 0;
+                       e->x = evt->window.x;
+                       e->y = evt->window.y;
+                       e->win = evt->window.window_id;
+                       e->time = 0;
+                       break;
+               default:
+                       break;
+       }
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_BUTTON_DOWN, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_button_up(DFBEvent *evt)
+{
+       Ecore_DirectFB_Event_Button_Up *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Button_Up));
+
+       switch(evt->clazz)
+       {
+               case DFEC_INPUT:
+                       e->button = evt->input.button + 1;
+                       e->modifiers = 0;
+                       e->x = _cursor_x;
+                       e->y = _cursor_y; 
+                       e->win = _ecore_directfb_fullscreen_window_id;
+                       e->time = 0;
+                       
+                       break;
+             
+               case DFEC_WINDOW:
+                       e->button = evt->window.button + 1;
+                       e->modifiers = 0;
+                       e->x = evt->window.x;
+                       e->y = evt->window.y;
+                       e->win = evt->window.window_id;
+                       e->time = 0;
+                       break;
+               default:
+                       break;
+       }
+       ecore_event_add(ECORE_DIRECTFB_EVENT_BUTTON_UP, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_enter(DFBWindowEvent *evt)
+{
+       Ecore_DirectFB_Event_Enter *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Enter));
+
+       e->modifiers = 0;
+       e->x = evt->x;
+       e->y = evt->y;
+       e->win = evt->window_id;
+       e->time = 0;
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_ENTER, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_leave(DFBWindowEvent *evt)
+{
+       Ecore_DirectFB_Event_Leave *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Leave));
+
+       e->modifiers = 0;
+       e->x = evt->x;
+       e->y = evt->y;
+       e->win = evt->window_id;
+       e->time = 0;
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_LEAVE, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_wheel(DFBWindowEvent *evt)
+{
+       Ecore_DirectFB_Event_Wheel *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Wheel));
+
+       // currently there's no direction (only up/down);
+       e->direction = 0;
+       e->z = evt->step;
+       e->modifiers = 0;
+       e->win = evt->window_id;
+       e->time = 0;
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_WHEEL, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_got_focus(DFBWindowEvent *evt)
+{
+       Ecore_DirectFB_Event_Got_Focus *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Got_Focus));
+
+       e->win = evt->window_id;
+       e->time = 0;
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_GOT_FOCUS, e, NULL, NULL);
+
+}
+
+static void
+_ecore_directfb_event_handle_lost_focus(DFBWindowEvent *evt)
+{
+       Ecore_DirectFB_Event_Lost_Focus *e;
+       e = calloc(1, sizeof(Ecore_DirectFB_Event_Lost_Focus));
+
+       e->win = evt->window_id;
+       e->time = 0;
+                       
+       ecore_event_add(ECORE_DIRECTFB_EVENT_LOST_FOCUS, e, NULL, NULL);
+
+}
+
+
+/* inputs and windows fds handlers */
+/***********************************/
+/* TODO fix this to handle windows and input events (fullscreen/window mode)
+ * in fullscreen theres no window_id so get the id from a global var (only one fullscreen
+ * window at a time */
+
+
+static int
+_ecore_directfb_input_event_fd_handler(void *data __UNUSED__,Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+       DFBEvent evt;
+       int v = 0;
+               
+       v = read(_input_event_fd, &evt, sizeof(DFBEvent));
+       if (v < 0) return 1;
+       if (v < 1) return 1;
+       
+       /* we are getting duplicate events, only parse if we are in fullscreen */
+       //if(_ecore_directfb_fullscreen_window_id == 0) break;
+       if(evt.input.type == DIET_KEYPRESS)
+               _ecore_directfb_event_handle_key_down(&evt);
+       if(evt.input.type == DIET_KEYRELEASE)
+               _ecore_directfb_event_handle_key_up(&evt);
+       if(evt.input.type == DIET_BUTTONPRESS)
+               _ecore_directfb_event_handle_button_down(&evt);
+       if(evt.input.type == DIET_BUTTONRELEASE)
+               _ecore_directfb_event_handle_button_up(&evt);
+       if(evt.input.type == DIET_AXISMOTION)
+               _ecore_directfb_event_handle_motion(&evt);
+
+       return 1;
+}
+       
+static int
+_ecore_directfb_window_event_fd_handler(void *data __UNUSED__,Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+       DFBEvent evt;
+       int v = 0;
+               
+       v = read(_window_event_fd, &evt, sizeof(DFBEvent));
+       if (v < 0) return 1;
+       if (v < 1) return 1;
+                       
+       if(evt.window.type & DWET_POSITION)
+               printf("position\n");
+       if(evt.window.type & DWET_SIZE)
+               printf("size\n");
+       if(evt.window.type & DWET_CLOSE)
+               printf("close\n");
+       if(evt.window.type & DWET_DESTROYED)
+               printf("destroyed\n");
+       if(evt.window.type & DWET_GOTFOCUS)
+               _ecore_directfb_event_handle_got_focus(&evt.window);
+       if(evt.window.type & DWET_LOSTFOCUS)
+               _ecore_directfb_event_handle_lost_focus(&evt.window);
+       if(evt.window.type & DWET_KEYDOWN)
+               _ecore_directfb_event_handle_key_down(&evt);
+       if(evt.window.type & DWET_KEYUP)
+               _ecore_directfb_event_handle_key_up(&evt);
+       if(evt.window.type & DWET_BUTTONDOWN)
+               _ecore_directfb_event_handle_button_down(&evt);
+       if(evt.window.type & DWET_BUTTONUP)
+               _ecore_directfb_event_handle_button_up(&evt);
+       if(evt.window.type & DWET_MOTION)
+               _ecore_directfb_event_handle_motion(&evt);
+       if(evt.window.type & DWET_ENTER)
+               _ecore_directfb_event_handle_enter(&evt.window);
+       if(evt.window.type & DWET_LEAVE)
+               _ecore_directfb_event_handle_leave(&evt.window);
+       if(evt.window.type & DWET_WHEEL)
+               _ecore_directfb_event_handle_wheel(&evt.window);
+       return 1;
+}
+       
+/* api functions */
+/*****************/
+
+
+EAPI IDirectFB *
+ecore_directfb_interface_get(void)
+{
+       return _dfb;
+}
+
+
+
+EAPI Ecore_DirectFB_Window *
+ecore_directfb_window_new(int x, int y, int w, int h)
+{
+       Ecore_DirectFB_Window *window;
+       IDirectFBWindow *dfb_window;
+       IDirectFBSurface *dfb_surface = NULL;
+       DFBWindowDescription desc;
+       DFBWindowID id;
+       
+       memset(&desc, 0, sizeof(DFBWindowDescription));
+       desc.flags = (DWDESC_POSX | DWDESC_POSY | DWDESC_WIDTH | DWDESC_HEIGHT | DWDESC_CAPS);
+       desc.posx = x;
+       desc.posy = y;
+       desc.width = w;
+       desc.height = h;
+       desc.caps = DWCAPS_ALPHACHANNEL;
+       
+       DFBCHECK(_layer->CreateWindow(_layer, &desc, &dfb_window));
+       
+       dfb_window->AttachEventBuffer(dfb_window, _window_event);
+       dfb_window->SetOptions(dfb_window,DWOP_NONE);
+       dfb_window->SetOpacity(dfb_window, 0xFF);
+       
+       DFBCHECK(dfb_window->GetID(dfb_window, &id));
+       DFBCHECK(dfb_window->GetSurface(dfb_window,&dfb_surface));
+       
+       window = malloc(sizeof(Ecore_DirectFB_Window)); 
+       window->id = id;
+       window->window = dfb_window;
+       window->surface = dfb_surface;
+       window->cursor = NULL;
+
+       return window;
+}
+
+EAPI void
+ecore_directfb_window_del(Ecore_DirectFB_Window *ecore_window)
+{
+       DFBCHECK(ecore_window->surface->Release(ecore_window->surface));
+       DFBCHECK(ecore_window->window->Release(ecore_window->window));
+       free(ecore_window);
+}
+
+
+EAPI void
+ecore_directfb_window_move(Ecore_DirectFB_Window *ecore_window, int x, int y)
+{
+       DFBCHECK(ecore_window->window->MoveTo(ecore_window->window, x, y));
+}
+
+EAPI void
+ecore_directfb_window_resize(Ecore_DirectFB_Window *ecore_window, int w, int h)
+{
+       DFBCHECK(ecore_window->window->Resize(ecore_window->window, w, h));
+}
+
+EAPI void 
+ecore_directfb_window_focus(Ecore_DirectFB_Window *ecore_window)
+{      
+       DFBCHECK(ecore_window->window->RequestFocus(ecore_window->window));     
+}
+
+EAPI void 
+ecore_directfb_window_hide(Ecore_DirectFB_Window *ecore_window)
+{
+       DFBCHECK(ecore_window->window->SetOpacity(ecore_window->window,0));
+
+}
+
+EAPI void
+ecore_directfb_window_show(Ecore_DirectFB_Window *ecore_window)
+{
+       DFBCHECK(ecore_window->window->SetOpacity(ecore_window->window, 0xFF));
+}
+
+EAPI void
+ecore_directfb_window_shaped_set(Ecore_DirectFB_Window *ecore_window, int set)
+{
+       DFBWindowOptions opts;
+       
+       DFBCHECK(ecore_window->window->GetOptions(ecore_window->window, &opts));
+       if(set)
+       {
+               opts |= DWOP_SHAPED;
+               opts |= DWOP_ALPHACHANNEL;
+               DFBCHECK(ecore_window->window->SetOptions(ecore_window->window, opts));
+       }
+       else
+       {
+               opts &= ~DWOP_SHAPED;
+               opts &= ~DWOP_ALPHACHANNEL;
+               DFBCHECK(ecore_window->window->SetOptions(ecore_window->window, opts));
+       }
+}
+
+EAPI void
+ecore_directfb_window_cursor_show(Ecore_DirectFB_Window *ecore_window, int show)
+{
+       if(!show)
+       {
+               /* create an empty cursor and set it */
+               IDirectFBSurface *cursor;
+               DFBSurfaceDescription desc;
+                       
+               memset(&desc, 0, sizeof(DFBSurfaceDescription));
+               desc.flags = (DSDESC_HEIGHT | DSDESC_WIDTH | DSDESC_PIXELFORMAT);
+               desc.width = 1;
+               desc.height = 1;
+               desc.pixelformat = DSPF_A1;
+                       
+               DFBCHECK(_dfb->CreateSurface(_dfb,&desc,&cursor));
+               DFBCHECK(cursor->Clear(cursor,0,0,0,0));
+               DFBCHECK(ecore_window->window->SetCursorShape(ecore_window->window, cursor, 0, 0));
+       }
+       else
+       {
+               /* we already have a cursor surface so set it*/
+               if(ecore_window->cursor)
+               {
+                       DFBCHECK(ecore_window->window->SetCursorShape(ecore_window->window, ecore_window->cursor->surface, ecore_window->cursor->hot_x, ecore_window->cursor->hot_y));
+               }
+               /* or just set the default directfb cursor */
+               else
+               {
+                       DFBCHECK(ecore_window->window->SetCursorShape(ecore_window->window, NULL, 0, 0));
+               }
+                       
+       }
+}
+
+EAPI void
+ecore_directfb_window_cursor_set(Ecore_DirectFB_Window *ecore_window, Ecore_DirectFB_Cursor *cursor)
+{
+       if( (!cursor) && (ecore_window->cursor))
+       {
+               ecore_window->cursor = NULL;
+               DFBCHECK(ecore_window->window->SetCursorShape(ecore_window->window, NULL, 0, 0));
+               return;
+       }
+       if(cursor)      
+       {
+               ecore_window->cursor = cursor;
+               DFBCHECK(ecore_window->window->SetCursorShape(ecore_window->window, cursor->surface, cursor->hot_x, cursor->hot_y));
+               
+       }
+
+}
+
+EAPI void 
+ecore_directfb_window_fullscreen_set(Ecore_DirectFB_Window *ecore_window, int on)
+{
+       // always release the surface (we are going to get a new one in both cases)
+       DFBCHECK(ecore_window->surface->Release(ecore_window->surface));
+       if(on)
+       {
+               DFBCHECK(_layer->SetCooperativeLevel(_layer,DLSCL_EXCLUSIVE));
+               DFBCHECK(_layer->GetSurface(_layer,&ecore_window->surface));
+               DFBCHECK(_dfb->CreateInputEventBuffer(_dfb, DICAPS_ALL, DFB_FALSE, &_input_event));
+               DFBCHECK(_input_event->CreateFileDescriptor(_input_event,&_input_event_fd));
+               /* the event of axismove sends one axis at a time, so we must store both */
+               DFBCHECK(_layer->GetCursorPosition(_layer,&_cursor_x,&_cursor_y));
+               
+               _input_event_fd_handler_handle = ecore_main_fd_handler_add(_input_event_fd,ECORE_FD_READ,_ecore_directfb_input_event_fd_handler, NULL,NULL,NULL);
+               _ecore_directfb_fullscreen_window_id = ecore_window->id;
+       }
+       else
+       {
+               DFBCHECK(_input_event->Release(_input_event));  
+               DFBCHECK(_layer->SetCooperativeLevel(_layer,DLSCL_SHARED));
+               DFBCHECK(ecore_window->window->GetSurface(ecore_window->window, &ecore_window->surface));
+               ecore_main_fd_handler_del(_input_event_fd_handler_handle);
+               _ecore_directfb_fullscreen_window_id = 0;
+       }
+               
+}
+
+EAPI void
+ecore_directfb_window_size_get(Ecore_DirectFB_Window *ecore_window, int *w, int *h)
+{
+       DFBCHECK(ecore_window->surface->GetSize(ecore_window->surface,w,h));
+       return;
+}
+
+EAPI int
+ecore_directfb_init(const char *name)
+{
+       int i = 0;
+       
+       _ecore_directfb_init_count++;
+       if (_ecore_directfb_init_count > 1) return _ecore_directfb_init_count;
+       
+       DFBCHECK(DirectFBInit(NULL,NULL));
+       DFBCHECK(DirectFBCreate(&_dfb));
+       
+       DFBCHECK(_dfb->GetDisplayLayer(_dfb, DLID_PRIMARY, &_layer));
+       DFBCHECK(_layer->SetCooperativeLevel(_layer, DLSCL_SHARED));
+       
+       
+       /* window events and fd */
+       DFBCHECK(_dfb->CreateEventBuffer(_dfb, &_window_event));
+       DFBCHECK(_window_event->CreateFileDescriptor(_window_event,&_window_event_fd));
+       _window_event_fd_handler_handle = ecore_main_fd_handler_add(_window_event_fd,ECORE_FD_READ,_ecore_directfb_window_event_fd_handler, NULL,NULL,NULL);
+       
+       /* register ecore directfb events */
+       ECORE_DIRECTFB_EVENT_POSITION   = ecore_event_type_new();
+       ECORE_DIRECTFB_EVENT_SIZE = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_CLOSE = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_DESTROYED = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_GOT_FOCUS = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_LOST_FOCUS = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_KEY_DOWN = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_KEY_UP = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_BUTTON_DOWN = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_BUTTON_UP = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_MOTION = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_ENTER = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_LEAVE = ecore_event_type_new();;
+       ECORE_DIRECTFB_EVENT_WHEEL = ecore_event_type_new();;
+
+       /* create the hash table for the keynames */
+       _ecore_directfb_key_symbols_hash = ecore_hash_new(_ecore_directfb_hash_create,_ecore_directfb_hash_compare);
+       for(i=0; i<_ecore_directfb_key_symbols_count; i++)
+       {
+               struct keymap *k;
+               k = malloc(sizeof(struct keymap));
+               k->name = _ecore_directfb_key_symbols[i].name;
+               k->string = _ecore_directfb_key_symbols[i].string;
+               ecore_hash_set(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id, k);
+       }
+       /* create the hash for the windows(key = windowid, val = Ecore_DirectFB_Window struct) */
+       return _ecore_directfb_init_count;
+}
+
+EAPI int
+ecore_directfb_shutdown(void)
+{
+       int i;
+
+       _ecore_directfb_init_count--;
+       if (_ecore_directfb_init_count > 0) return _ecore_directfb_init_count;
+       if (_ecore_directfb_init_count < 0)
+       {
+               _ecore_directfb_init_count = 0;
+               return 0;
+       }
+       ecore_main_fd_handler_del(_window_event_fd_handler_handle);
+       /* free the key symbol names hash */
+       for(i=0; i<_ecore_directfb_key_symbols_count; i++)
+       {
+               struct keymap *k;
+               k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
+               ecore_hash_remove(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
+               free(k);
+       }
+       
+       if(_ecore_directfb_fullscreen_window_id)
+       {
+               DFBCHECK(_input_event->Release(_input_event));  
+               ecore_main_fd_handler_del(_input_event_fd_handler_handle);
+       }
+       DFBCHECK(_window_event->Release(_window_event));        
+       DFBCHECK(_layer->Release(_layer));
+       DFBCHECK(_dfb->Release(_dfb));
+       
+       return 1;
+}
diff --git a/src/lib/ecore_directfb/ecore_directfb_keys.h b/src/lib/ecore_directfb/ecore_directfb_keys.h
new file mode 100644 (file)
index 0000000..e24d715
--- /dev/null
@@ -0,0 +1,181 @@
+typedef struct _Ecore_DirectFB_Key_Symbols Ecore_DirectFB_Key_Symbols;
+struct _Ecore_DirectFB_Key_Symbols
+{
+       char *string;
+       char *name;
+       unsigned int id;
+} _ecore_directfb_key_symbols[] = {
+       {"\010", "BackSpace",DIKS_BACKSPACE},
+       {"\011", "Tab", DIKS_TAB},
+       {"\015", "Return", DIKS_RETURN},
+       {"", "Cancel", DIKS_CANCEL},
+       {"", "Escape", DIKS_ESCAPE},
+       {" ", "space", DIKS_SPACE},
+       {"!", "exclam", DIKS_EXCLAMATION_MARK},
+       {"\"", "quotedbl", DIKS_QUOTATION},
+       {"#", "numbersign", DIKS_NUMBER_SIGN},
+       {"$", "dollar", DIKS_DOLLAR_SIGN},
+       {"%", "percent", DIKS_PERCENT_SIGN},
+       {"&", "ampersand", DIKS_AMPERSAND},
+       {"'", "apostrophe", DIKS_APOSTROPHE},
+       {"(", "parenleft", DIKS_PARENTHESIS_LEFT},
+       {")", "parenright", DIKS_PARENTHESIS_RIGHT},
+       {"*", "asterisk", DIKS_ASTERISK},
+       {"+", "plus", DIKS_PLUS_SIGN},
+       {",", "comma", DIKS_COMMA},
+       {"-", "minus", DIKS_MINUS_SIGN},
+       {".", "period", DIKS_PERIOD},
+       {"/", "slash", DIKS_SLASH},
+       {"0", "0", DIKS_0},
+       {"1", "1", DIKS_1},
+       {"2", "2", DIKS_2},
+       {"3", "3", DIKS_3},
+       {"4", "4", DIKS_4},
+       {"5", "5", DIKS_5},
+       {"6", "6", DIKS_6},
+       {"7", "7", DIKS_7},
+       {"8", "8", DIKS_8},
+       {"9", "9", DIKS_9},
+       {":", "colon", DIKS_COLON},
+       {";", "semicolon", DIKS_SEMICOLON},
+       {"<", "less", DIKS_LESS_THAN_SIGN},
+       {"=", "equal", DIKS_EQUALS_SIGN},
+       {">", "greater", DIKS_GREATER_THAN_SIGN},
+       {"?", "question", DIKS_QUESTION_MARK},
+       {"@", "at", DIKS_AT},
+       {"A", "A", DIKS_CAPITAL_A },
+       {"B", "B", DIKS_CAPITAL_B },
+       {"C", "C", DIKS_CAPITAL_C },
+       {"D", "D", DIKS_CAPITAL_D },
+       {"E", "E", DIKS_CAPITAL_E },
+       {"F", "F", DIKS_CAPITAL_F },
+       {"G", "G", DIKS_CAPITAL_G },
+       {"H", "H", DIKS_CAPITAL_H },
+       {"I", "I", DIKS_CAPITAL_I },
+       {"J", "J", DIKS_CAPITAL_J },
+       {"K", "K", DIKS_CAPITAL_K },
+       {"L", "L", DIKS_CAPITAL_L },
+       {"M", "M", DIKS_CAPITAL_M },
+       {"N", "N", DIKS_CAPITAL_N },
+       {"O", "O", DIKS_CAPITAL_O },
+       {"P", "P", DIKS_CAPITAL_P },
+       {"Q", "Q", DIKS_CAPITAL_Q },
+       {"R", "R", DIKS_CAPITAL_R },
+       {"S", "S", DIKS_CAPITAL_S },
+       {"T", "T", DIKS_CAPITAL_T },
+       {"U", "U", DIKS_CAPITAL_U },
+       {"V", "V", DIKS_CAPITAL_V },
+       {"W", "W", DIKS_CAPITAL_W },
+       {"X", "X", DIKS_CAPITAL_X },
+       {"Y", "Y", DIKS_CAPITAL_Y },
+       {"Z", "Z", DIKS_CAPITAL_Z },
+       {"[", "bracketleft", DIKS_SQUARE_BRACKET_LEFT },
+       {"\\", "backslash", DIKS_BACKSLASH },
+       {"]", "bracketright", DIKS_SQUARE_BRACKET_RIGHT },
+       {"^", "asciicircum", DIKS_CIRCUMFLEX_ACCENT },
+       {"_", "underscore", DIKS_UNDERSCORE },
+       {"`", "grave", DIKS_GRAVE_ACCENT},
+       {"a", "a", DIKS_SMALL_A },
+       {"b","b", DIKS_SMALL_B },
+       {"c","c", DIKS_SMALL_C },
+       {"d","d", DIKS_SMALL_D },
+       {"e","e", DIKS_SMALL_E },
+       {"f","f", DIKS_SMALL_F },
+       {"g","g", DIKS_SMALL_G },
+       {"h","h", DIKS_SMALL_H },
+       {"i","i", DIKS_SMALL_I },
+       {"j","j", DIKS_SMALL_J },
+       {"k","k", DIKS_SMALL_K },
+       {"l","l", DIKS_SMALL_L },
+       {"m","m", DIKS_SMALL_M },
+       {"n","n", DIKS_SMALL_N },
+       {"o", "o", DIKS_SMALL_O },
+       {"p", "p", DIKS_SMALL_P },
+       {"q", "q", DIKS_SMALL_Q },
+       {"r", "r", DIKS_SMALL_R },
+       {"s", "s", DIKS_SMALL_S },
+       {"t", "t", DIKS_SMALL_T },
+       {"u", "u", DIKS_SMALL_U },
+       {"v", "v", DIKS_SMALL_V },
+       {"w", "w", DIKS_SMALL_W },
+       {"x", "x", DIKS_SMALL_X },
+       {"y", "y", DIKS_SMALL_Y },
+       {"z", "z", DIKS_SMALL_Z },
+       {"{", "braceleft",DIKS_CURLY_BRACKET_LEFT },
+       {"|", "bar", DIKS_VERTICAL_BAR },
+       {"}", "braceright", DIKS_CURLY_BRACKET_RIGHT },
+       {"~", "asciitilde", DIKS_TILDE },
+       {"\177", "Delete", DIKS_DELETE },
+       {"", "Left", DIKS_CURSOR_LEFT },
+       {"", "Right", DIKS_CURSOR_RIGHT},
+       {"", "Up", DIKS_CURSOR_UP},
+       {"", "Down", DIKS_CURSOR_DOWN},
+       {"", "Insert", DIKS_INSERT},
+       {"", "Home", DIKS_HOME},
+       {"", "End", DIKS_END},
+       {"", "Page_Up", DIKS_PAGE_UP},
+       {"", "Page_Down", DIKS_PAGE_DOWN},
+       {"", "Print", DIKS_PRINT},
+       {"", "Pause", DIKS_PAUSE},
+       /* ok */
+       {"", "Select",DIKS_SELECT},
+       /* goto */
+       {"", "Clear", DIKS_CLEAR},
+       /* power */
+       /* power 2 */
+       /* option */
+       {"", "Menu",DIKS_MENU},
+       {"", "Help",DIKS_HELP},
+       /* info */
+       /* time */
+       /* vendor */
+       /* archive */
+       /* program */
+       /* channel */
+       /* favorites */
+       /* hasta next */
+       {"", "Next",DIKS_NEXT},
+       {"", "Begin",DIKS_BEGIN},
+       /* digits */
+       /* teen */
+       /* twen */
+       {"", "Break", DIKS_BREAK},
+       /* exit */
+       /* setup */
+       {"", "upleftcorner", DIKS_CURSOR_LEFT_UP },
+       {"", "lowleftcorner", DIKS_CURSOR_LEFT_DOWN },
+       {"", "uprightcorner", DIKS_CURSOR_UP_RIGHT },
+       {"", "lowrightcorner",DIKS_CURSOR_DOWN_RIGHT },
+       {"", "F1",DIKS_F1},
+       {"", "F2",DIKS_F2},
+       {"", "F3",DIKS_F3},
+       {"", "F4",DIKS_F4},
+       {"", "F5",DIKS_F5},
+       {"", "F6",DIKS_F6},
+       {"", "F7",DIKS_F7},
+       {"", "F8",DIKS_F8},
+       {"", "F9",DIKS_F9},
+       {"", "F10",DIKS_F10},
+       {"", "F11",DIKS_F11},
+       {"", "F12",DIKS_F12},
+       /* this are only mapped to one, not left right */
+       {"", "Shift_L", DIKS_SHIFT},
+       /*{"Shift_R",0xFFE2},*/
+       {"", "Control_L", DIKS_CONTROL},
+       /*{"Control_R",0xFFE4},*/
+       {"", "Meta_L", DIKS_META},
+       /* {"Meta_R",0xFFE8},*/
+       {"", "Alt_L", DIKS_ALT},
+       {"", "Alt_R", DIKS_ALTGR},
+       {"", "Super_L", DIKS_SUPER},
+       /*{"Super_R",0xFFEC},*/
+       {"", "Hyper_L", DIKS_HYPER},
+       /*{"Hyper_R",0xFFEE},*/
+               
+       {"", "Caps_Lock", DIKS_CAPS_LOCK},
+       {"", "Num_Lock", DIKS_NUM_LOCK},
+       {"", "Scroll_Lock", DIKS_SCROLL_LOCK},
+       /* not included the dead keys */
+       /* not included the custom keys */
+       {"", "VoidSymbol", DIKS_NULL}
+};
diff --git a/src/lib/ecore_directfb/ecore_directfb_private.h b/src/lib/ecore_directfb/ecore_directfb_private.h
new file mode 100644 (file)
index 0000000..fc9ef5e
--- /dev/null
@@ -0,0 +1,15 @@
+/* macro for a safe call to DirectFB functions */
+#define DFBCHECK(x...) \
+     {                                                                 \
+          _err = x;                                                    \
+          if (_err != DFB_OK) {                                        \
+               fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ );  \
+               DirectFBErrorFatal( #x, _err );                         \
+          }                                                            \
+     }
+
+struct keymap
+{
+       char *name;
+       char *string;
+};
diff --git a/src/lib/ecore_evas/.cvsignore b/src/lib/ecore_evas/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h
new file mode 100644 (file)
index 0000000..e8125b0
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_EVAS_H
+#define _ECORE_EVAS_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file Ecore_Evas.h
+ * @brief Evas wrapper functions
+ */
+
+/* FIXME:
+ * to do soon:
+ * - iconfication api needs to work
+ * - maximization api needs to work
+ * - document all calls
+ *
+ * later:
+ * - buffer back-end that renders to an evas_image_object ???
+ * - qt back-end ???
+ * - dfb back-end ??? (dfb's threads make this REALLY HARD)
+ */
+
+#include <Evas.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* these are dummy and just tell u what API levels ecore_evas supports - not if
+ * the actual support is compiled in. you need to query for that separately.
+ */
+#define HAVE_ECORE_EVAS_X 1
+#define HAVE_ECORE_EVAS_FB 1
+#define HAVE_ECORE_EVAS_X11_GL 1
+#define HAVE_ECORE_EVAS_X11_16 1
+#define HAVE_ECORE_EVAS_DIRECTFB 1
+#define HAVE_ECORE_EVAS_WIN32 1
+#define HAVE_ECORE_EVAS_SDL 1
+#define HAVE_ECORE_EVAS_WINCE 1
+
+typedef enum _Ecore_Evas_Engine_Type
+{
+   ECORE_EVAS_ENGINE_SOFTWARE_BUFFER,
+   ECORE_EVAS_ENGINE_SOFTWARE_X11,
+   ECORE_EVAS_ENGINE_XRENDER_X11,
+   ECORE_EVAS_ENGINE_OPENGL_X11,
+   ECORE_EVAS_ENGINE_SOFTWARE_XCB,
+   ECORE_EVAS_ENGINE_XRENDER_XCB,
+   ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
+   ECORE_EVAS_ENGINE_DIRECT3D,
+   ECORE_EVAS_ENGINE_OPENGL_GLEW,
+   ECORE_EVAS_ENGINE_SDL,
+   ECORE_EVAS_ENGINE_DIRECTFB,
+   ECORE_EVAS_ENGINE_SOFTWARE_FB,
+   ECORE_EVAS_ENGINE_SOFTWARE_16_X11,
+   ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW,
+   ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE,
+} Ecore_Evas_Engine_Type;
+
+typedef enum _Ecore_Evas_Avoid_Damage_Type
+{
+   ECORE_EVAS_AVOID_DAMAGE_NONE = 0,
+   ECORE_EVAS_AVOID_DAMAGE_EXPOSE = 1,
+   ECORE_EVAS_AVOID_DAMAGE_BUILT_IN = 2
+} Ecore_Evas_Avoid_Damage_Type;
+
+#ifndef _ECORE_X_H
+#define _ECORE_X_WINDOW_PREDEF
+typedef unsigned int Ecore_X_Window;
+#endif
+
+#ifndef _ECORE_DIRECTFB_H
+#define _ECORE_DIRECTFB_WINDOW_PREDEF
+typedef struct _Ecore_DirectFB_Window Ecore_DirectFB_Window;
+#endif
+
+#ifndef __ECORE_WIN32_H__
+typedef void Ecore_Win32_Window;
+#endif
+
+#ifndef __ECORE_WINCE_H__
+typedef void Ecore_WinCE_Window;
+#endif
+
+#ifndef _ECORE_EVAS_PRIVATE_H
+/* basic data types */
+typedef struct _Ecore_Evas Ecore_Evas;
+#endif
+
+/* module setup/shutdown calls */
+
+EAPI int         ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine);
+
+EAPI int         ecore_evas_init(void);
+EAPI int         ecore_evas_shutdown(void);
+
+/* engine/target specific init calls */
+EAPI Ecore_Evas     *ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window  ecore_evas_software_x11_window_get(Ecore_Evas *ee);
+EAPI Ecore_X_Window  ecore_evas_software_x11_subwindow_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, int on);
+EAPI int             ecore_evas_software_x11_direct_resize_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
+
+EAPI Ecore_Evas     *ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window  ecore_evas_gl_x11_window_get(Ecore_Evas *ee);
+EAPI Ecore_X_Window  ecore_evas_gl_x11_subwindow_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, int on);
+EAPI int             ecore_evas_gl_x11_direct_resize_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
+
+EAPI Ecore_Evas     *ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window  ecore_evas_xrender_x11_window_get(Ecore_Evas *ee);
+EAPI Ecore_X_Window  ecore_evas_xrender_x11_subwindow_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, int on);
+EAPI int             ecore_evas_xrender_x11_direct_resize_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_xrender_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
+
+EAPI Ecore_Evas     *ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window  ecore_evas_software_x11_16_window_get(Ecore_Evas *ee);
+EAPI Ecore_X_Window  ecore_evas_software_x11_16_subwindow_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_software_x11_16_direct_resize_set(Ecore_Evas *ee, int on);
+EAPI int             ecore_evas_software_x11_16_direct_resize_get(Ecore_Evas *ee);
+EAPI void            ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win);
+
+EAPI Ecore_Evas     *ecore_evas_fb_new(char *disp_name, int rotation, int w, int h);
+
+EAPI Ecore_Evas     *ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w, int h);
+EAPI Ecore_DirectFB_Window *ecore_evas_directfb_window_get(Ecore_Evas *ee);
+
+EAPI Ecore_Evas     *ecore_evas_buffer_new(int w, int h);
+EAPI const int      *ecore_evas_buffer_pixels_get(Ecore_Evas *ee);
+
+EAPI Evas_Object    *ecore_evas_object_image_new(Ecore_Evas *ee_target);
+
+EAPI Ecore_Evas     *ecore_evas_software_ddraw_new(Ecore_Win32_Window *parent,
+                                                   int                 x,
+                                                   int                 y,
+                                                   int                 width,
+                                                   int                 height);
+
+EAPI Ecore_Evas     *ecore_evas_software_ddraw_16_new(Ecore_Win32_Window *parent,
+                                                      int                 x,
+                                                      int                 y,
+                                                      int                 width,
+                                                      int                 height);
+
+EAPI Ecore_Evas     *ecore_evas_direct3d_new(Ecore_Win32_Window *parent,
+                                             int                 x,
+                                             int                 y,
+                                             int                 width,
+                                             int                 height);
+
+EAPI Ecore_Evas *ecore_evas_gl_glew_new(Ecore_Win32_Window *parent,
+                                        int                 x,
+                                        int                 y,
+                                        int                 width,
+                                        int                 height);
+
+EAPI Ecore_Win32_Window *ecore_evas_win32_window_get(Ecore_Evas *ee);
+
+EAPI Ecore_Evas     *ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha);
+
+EAPI Ecore_Evas     *ecore_evas_software_wince_new(Ecore_WinCE_Window *parent,
+                                                   int                 x,
+                                                   int                 y,
+                                                   int                 width,
+                                                   int                 height);
+
+EAPI Ecore_Evas     *ecore_evas_software_wince_fb_new(Ecore_WinCE_Window *parent,
+                                                      int                 x,
+                                                      int                 y,
+                                                      int                 width,
+                                                      int                 height);
+
+EAPI Ecore_Evas     *ecore_evas_software_wince_gapi_new(Ecore_WinCE_Window *parent,
+                                                        int                 x,
+                                                        int                 y,
+                                                        int                 width,
+                                                        int                 height);
+
+EAPI Ecore_Evas     *ecore_evas_software_wince_ddraw_new(Ecore_WinCE_Window *parent,
+                                                         int                 x,
+                                                         int                 y,
+                                                         int                 width,
+                                                         int                 height);
+
+EAPI Ecore_WinCE_Window *ecore_evas_software_wince_window_get(Ecore_Evas *ee);
+
+/* generic manipulation calls */
+EAPI Ecore_Evas *ecore_evas_ecore_evas_get(Evas *e);
+EAPI void        ecore_evas_free(Ecore_Evas *ee);
+EAPI void       *ecore_evas_data_get(Ecore_Evas *ee, const char *key);
+EAPI void        ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data);
+EAPI void        ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_pre_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI void        ecore_evas_callback_post_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+EAPI Evas       *ecore_evas_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_move(Ecore_Evas *ee, int x, int y);
+EAPI void        ecore_evas_managed_move(Ecore_Evas *ee, int x, int y);
+EAPI void        ecore_evas_resize(Ecore_Evas *ee, int w, int h);
+EAPI void        ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h);
+EAPI void        ecore_evas_geometry_get(Ecore_Evas *ee, int *x, int *y, int *w, int *h);
+EAPI void        ecore_evas_rotation_set(Ecore_Evas *ee, int rot);
+EAPI int         ecore_evas_rotation_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_shaped_set(Ecore_Evas *ee, int shaped);
+EAPI int         ecore_evas_shaped_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_alpha_set(Ecore_Evas *ee, int alpha);
+EAPI int         ecore_evas_alpha_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_show(Ecore_Evas *ee);
+EAPI void        ecore_evas_hide(Ecore_Evas *ee);
+EAPI int         ecore_evas_visibility_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_raise(Ecore_Evas *ee);
+EAPI void        ecore_evas_lower(Ecore_Evas *ee);
+EAPI void        ecore_evas_activate(Ecore_Evas *ee);
+EAPI void        ecore_evas_title_set(Ecore_Evas *ee, const char *t);
+EAPI const char *ecore_evas_title_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c);
+EAPI void        ecore_evas_name_class_get(Ecore_Evas *ee, const char **n, const char **c);
+EAPI void        ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h);
+EAPI void        ecore_evas_size_min_get(Ecore_Evas *ee, int *w, int *h);
+EAPI void        ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h);
+EAPI void        ecore_evas_size_max_get(Ecore_Evas *ee, int *w, int *h);
+EAPI void        ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h);
+EAPI void        ecore_evas_size_base_get(Ecore_Evas *ee, int *w, int *h);
+EAPI void        ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h);
+EAPI void        ecore_evas_size_step_get(Ecore_Evas *ee, int *w, int *h);
+EAPI void        ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y);
+EAPI void        ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
+EAPI void        ecore_evas_cursor_get(Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y);
+EAPI void        ecore_evas_layer_set(Ecore_Evas *ee, int layer);
+EAPI int         ecore_evas_layer_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_focus_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_focus_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_iconified_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_iconified_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_borderless_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_borderless_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_override_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_override_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_maximized_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_maximized_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_fullscreen_set(Ecore_Evas *ee, int on);
+EAPI int         ecore_evas_fullscreen_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_avoid_damage_set(Ecore_Evas *ee, Ecore_Evas_Avoid_Damage_Type on);
+EAPI Ecore_Evas_Avoid_Damage_Type ecore_evas_avoid_damage_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_withdrawn_set(Ecore_Evas *ee, int withdrawn);
+EAPI int         ecore_evas_withdrawn_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_sticky_set(Ecore_Evas *ee, int sticky);
+EAPI int         ecore_evas_sticky_get(Ecore_Evas *ee);
+EAPI void        ecore_evas_ignore_events_set(Ecore_Evas *ee, int ignore);
+EAPI int         ecore_evas_ignore_events_get(Ecore_Evas *ee);
+EAPI void       *ecore_evas_window_get(Ecore_Evas *ee);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_evas/Makefile.am b/src/lib/ecore_evas/Makefile.am
new file mode 100644 (file)
index 0000000..0a37748
--- /dev/null
@@ -0,0 +1,110 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_X
+ECORE_X_INC = -I$(top_srcdir)/src/lib/ecore_x
+ECORE_X_LIB = $(top_builddir)/src/lib/ecore_x/libecore_x.la
+else
+ECORE_X_INC =
+ECORE_X_LIB =
+endif
+
+if BUILD_ECORE_FB
+ECORE_FB_INC = -I$(top_srcdir)/src/lib/ecore_fb
+ECORE_FB_LIB = $(top_builddir)/src/lib/ecore_fb/libecore_fb.la
+else
+ECORE_FB_INC =
+ECORE_FB_LIB =
+endif
+
+if BUILD_ECORE_DIRECTFB
+ECORE_DIRECTFB_INC = -I$(top_srcdir)/src/lib/ecore_directfb -I@DIRECTFB_CFLAGS@
+ECORE_DIRECTFB_LIB = $(top_builddir)/src/lib/ecore_directfb/libecore_directfb.la
+else
+ECORE_DIRECTFB_INC =
+ECORE_DIRECTFB_LIB =
+endif
+
+if BUILD_ECORE_WIN32
+ECORE_WIN32_INC = -I$(top_srcdir)/src/lib/ecore_win32
+ECORE_WIN32_LIB = $(top_builddir)/src/lib/ecore_win32/libecore_win32.la
+else
+ECORE_WIN32_INC =
+ECORE_WIN32_LIB =
+endif
+
+if BUILD_ECORE_SDL
+ECORE_SDL_INC = -I$(top_srcdir)/src/lib/ecore_sdl @SDL_CFLAGS@
+ECORE_SDL_LIB = $(top_builddir)/src/lib/ecore_sdl/libecore_sdl.la
+else
+ECORE_SDL_INC =
+ECORE_SDL_LIB =
+endif
+
+if BUILD_ECORE_WINCE
+ECORE_WINCE_INC = -I$(top_srcdir)/src/lib/ecore_wince
+ECORE_WINCE_LIB = $(top_builddir)/src/lib/ecore_wince/libecore_wince.la
+else
+ECORE_WINCE_INC =
+ECORE_WINCE_LIB =
+endif
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_evas \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_evas \
+$(ECORE_X_INC) \
+$(ECORE_FB_INC) \
+$(ECORE_DIRECTFB_INC) \
+$(ECORE_WIN32_INC) \
+$(ECORE_SDL_INC) \
+$(ECORE_WINCE_INC) \
+@EVAS_CFLAGS@ \
+@XCB_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ECORE_EVAS
+
+lib_LTLIBRARIES = libecore_evas.la
+include_HEADERS = \
+Ecore_Evas.h
+
+libecore_evas_la_SOURCES = \
+ecore_evas.c \
+ecore_evas_x.c \
+ecore_evas_fb.c \
+ecore_evas_buffer.c \
+ecore_evas_directfb.c \
+ecore_evas_win32.c \
+ecore_evas_sdl.c \
+ecore_evas_wince.c
+
+libecore_evas_la_LIBADD = \
+$(ECORE_X_LIB) \
+$(ECORE_FB_LIB) \
+$(ECORE_DIRECTFB_LIB) \
+$(ECORE_WIN32_LIB) \
+$(ECORE_SDL_LIB) \
+$(ECORE_WINCE_LIB) \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@EVAS_LIBS@ \
+@XCB_LIBS@ \
+@SDL_LIBS@ \
+@EVIL_LIBS@
+
+libecore_evas_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+libecore_evas_la_DEPENDENCIES = \
+$(ECORE_X_LIB) \
+$(ECORE_FB_LIB) \
+$(ECORE_DIRECTFB_LIB) \
+$(ECORE_WIN32_LIB) \
+$(ECORE_SDL_LIB) \
+$(ECORE_WINCE_LIB) \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+ecore_evas_private.h
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
new file mode 100644 (file)
index 0000000..c49b916
--- /dev/null
@@ -0,0 +1,1972 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+static int _ecore_evas_init_count = 0;
+
+/**
+ * Query if a particular renginering engine target has support
+ * @param  engine The engine to check support for
+ * @return 1 if the particualr engine is supported, 0 if it is not
+ *
+ * Query if engine @param engine is supported by ecore_evas. 1 is returned if
+ * it is, and 0 is returned if it is not supported.
+ */
+EAPI int
+ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine)
+{
+   switch (engine)
+     {
+      case ECORE_EVAS_ENGINE_SOFTWARE_BUFFER:
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_X11:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_XRENDER_X11:
+#ifdef BUILD_ECORE_EVAS_XRENDER_X11
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_OPENGL_X11:
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_XCB:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_XRENDER_XCB:
+#ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_DDRAW:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_DIRECT3D:
+#ifdef BUILD_ECORE_EVAS_DIRECT3D
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_OPENGL_GLEW:
+#ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
+       return 1;
+#else
+       return 0;
+#endif
+     case ECORE_EVAS_ENGINE_SDL:
+#ifdef BUILD_ECORE_EVAS_SDL
+        return 1;
+#else
+        return 0;
+#endif
+      case ECORE_EVAS_ENGINE_DIRECTFB:
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_FB:
+#ifdef BUILD_ECORE_EVAS_FB
+       return 1;
+#else
+       return 0;
+#endif
+
+      case ECORE_EVAS_ENGINE_SOFTWARE_16_X11:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_X11
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DDRAW
+       return 1;
+#else
+       return 0;
+#endif
+      case ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE:
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+       return 1;
+#else
+       return 0;
+#endif
+      default:
+       return 0;
+       break;
+     };
+   return 0;
+}
+
+/**
+ * Init the Evas system.
+ * @return greater than 0 on success, 0 on failure
+ *
+ * Set up the Evas wrapper system.
+ */
+EAPI int
+ecore_evas_init(void)
+{
+   if (_ecore_evas_init_count == 0)
+     evas_init ();
+   return ++_ecore_evas_init_count;
+}
+
+/**
+ * Shut down the Evas system.
+ * @return 0 if ecore evas is fully shut down, or > 0 if it still needs to be shut down
+ *
+ * This closes the Evas system down.
+ */
+EAPI int
+ecore_evas_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+#ifdef BUILD_ECORE_EVAS_X11
+       while (_ecore_evas_x_shutdown());
+#endif
+#ifdef BUILD_ECORE_EVAS_WIN32
+       while (_ecore_evas_win32_shutdown());
+#endif
+#ifdef BUILD_ECORE_EVAS_FB
+       while (_ecore_evas_fb_shutdown());
+#endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+       while (_ecore_evas_buffer_shutdown());
+#endif
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+       while (_ecore_evas_directfb_shutdown());
+#endif
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+       while (_ecore_evas_wince_shutdown());
+#endif
+       evas_shutdown();
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+/**
+ * Return the Ecore_Evas for this Evas
+ *
+ * @param e The Evas to get the Ecore_Evas from
+ * @return The Ecore_Evas that holds this Evas
+ */
+EAPI Ecore_Evas *
+ecore_evas_ecore_evas_get(Evas *e)
+{
+   return evas_data_attach_get(e);
+}
+
+/**
+ * Free an Ecore_Evas
+ * @param ee The Ecore_Evas to free
+ *
+ * This frees up any memory used by the Ecore_Evas.
+ */
+EAPI void
+ecore_evas_free(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_free");
+       return;
+     }
+   _ecore_evas_free(ee);
+   return;
+}
+
+/**
+ * Retrieve user data associated with an Ecore_Evas.
+ * @param ee The Ecore_Evas to retrieve the user data from.
+ * @param key The key which the user data to be retrieved is associated with.
+ *
+ * This function retrieves user specific data that has been stored within an
+ * Ecore_Evas structure with ecore_evas_data_set().
+ *
+ * @returns NULL on error or no data found, A pointer to the user data on
+ *     success.
+ *
+ * @see ecore_evas_data_set
+ */
+EAPI void *
+ecore_evas_data_get(Ecore_Evas *ee, const char *key)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_data_get");
+       return NULL;
+     }
+
+   if (!key) return NULL;
+
+   return evas_hash_find(ee->data, key);
+}
+
+/**
+ * Store user data in an Ecore_Evas structure.
+ *
+ * @param eeThe Ecore_Evas to store the user data in.
+ * @param keyA unique string to associate the user data against. Cannot
+ * be NULL.
+ * @param dataA pointer to the user data to store.
+ *
+ * This function associates the @p data with a @p key which is stored by
+ * the Ecore_Evas @p ee. Be aware that a call to ecore_evas_free() will
+ * not free any memory for the associated user data, this is the responsibility
+ * of the caller.
+ *
+ * @see ecore_evas_free
+ */
+EAPI void
+ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_data_set");
+       return;
+     }
+
+   if (!key) return;
+
+   ee->data = evas_hash_del(ee->data, key, NULL);
+   if (data)
+     ee->data = evas_hash_add(ee->data, key, data);
+}
+
+#define IFC(_ee, _fn)  if (_ee->engine.func->_fn) {_ee->engine.func->_fn
+#define IFE            return;}
+
+/**
+ * Set a callback for Ecore_Evas resize events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee is resized.
+ */
+EAPI void
+ecore_evas_callback_resize_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_resize_set");
+       return;
+     }
+   IFC(ee, fn_callback_resize_set) (ee, func);
+   IFE;
+   ee->func.fn_resize = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas move events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee is moved.
+ */
+EAPI void
+ecore_evas_callback_move_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_move_set");
+       return;
+     }
+   IFC(ee, fn_callback_move_set) (ee, func);
+   IFE;
+   ee->func.fn_move = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas show events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee is shown.
+ */
+EAPI void
+ecore_evas_callback_show_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_show_set");
+       return;
+     }
+   IFC(ee, fn_callback_show_set) (ee, func);
+   IFE;
+   ee->func.fn_show = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas hide events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee is hidden.
+ */
+EAPI void
+ecore_evas_callback_hide_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_hide_set");
+       return;
+     }
+   IFC(ee, fn_callback_hide_set) (ee, func);
+   IFE;
+   ee->func.fn_hide = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas delete request events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee gets a delete request.
+ */
+EAPI void
+ecore_evas_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_delete_request_set");
+       return;
+     }
+   IFC(ee, fn_callback_delete_request_set) (ee, func);
+   IFE;
+   ee->func.fn_delete_request = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas destroy events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee is destroyed.
+ */
+EAPI void
+ecore_evas_callback_destroy_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_destroy_set");
+       return;
+     }
+   IFC(ee, fn_callback_destroy_set) (ee, func);
+   IFE;
+   ee->func.fn_destroy = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas focus in events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee gets focus.
+ */
+EAPI void
+ecore_evas_callback_focus_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_focus_in_set");
+       return;
+     }
+   IFC(ee, fn_callback_focus_in_set) (ee, func);
+   IFE;
+   ee->func.fn_focus_in = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas focus out events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee loses focus.
+ */
+EAPI void
+ecore_evas_callback_focus_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_focus_out_set");
+       return;
+     }
+   IFC(ee, fn_callback_focus_out_set) (ee, func);
+   IFE;
+   ee->func.fn_focus_out = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas sticky events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee becomes sticky.
+ */
+EAPI void
+ecore_evas_callback_sticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_sticky_set");
+       return;
+     }
+   IFC(ee, fn_callback_sticky_set) (ee, func);
+   IFE;
+   ee->func.fn_sticky = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas un-sticky events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever @p ee becomes un-sticky.
+ */
+EAPI void
+ecore_evas_callback_unsticky_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_unsticky_set");
+       return;
+     }
+   IFC(ee, fn_callback_unsticky_set) (ee, func);
+   IFE;
+   ee->func.fn_unsticky = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas mouse in events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever the mouse enters @p ee.
+ */
+EAPI void
+ecore_evas_callback_mouse_in_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_mouse_in_set");
+       return;
+     }
+   IFC(ee, fn_callback_mouse_in_set) (ee, func);
+   IFE;
+   ee->func.fn_mouse_in = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas mouse out events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called whenever the mouse leaves @p ee.
+ */
+EAPI void
+ecore_evas_callback_mouse_out_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_mouse_out_set");
+       return;
+     }
+   IFC(ee, fn_callback_mouse_out_set) (ee, func);
+   IFE;
+   ee->func.fn_mouse_out = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas mouse pre render events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called just before the evas in @p ee is rendered.
+ */
+EAPI void
+ecore_evas_callback_pre_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_pre_render_set");
+       return;
+     }
+   IFC(ee, fn_callback_pre_render_set) (ee, func);
+   IFE;
+   ee->func.fn_pre_render = func;
+}
+
+/**
+ * Set a callback for Ecore_Evas mouse post render events.
+ * @param ee The Ecore_Evas to set callbacks on
+ * @param func The function to call
+
+ * A call to this function will set a callback on an Ecore_Evas, causing
+ * @p func to be called just after the evas in @p ee is rendered.
+ */
+EAPI void
+ecore_evas_callback_post_render_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_callback_post_render_set");
+       return;
+     }
+   IFC(ee, fn_callback_post_render_set) (ee, func);
+   IFE;
+   ee->func.fn_post_render = func;
+}
+
+/**
+ * Get an Ecore_Evas's Evas
+ * @param ee The Ecore_Evas whose Evas you wish to get
+ * @return The Evas wrapped by @p ee
+ *
+ * This function returns the Evas contained within @p ee.
+ */
+EAPI Evas *
+ecore_evas_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_get");
+       return NULL;
+     }
+   return ee->evas;
+}
+
+/**
+ * Move an Ecore_Evas
+ * @param ee The Ecore_Evas to move
+ * @param x The x coordinate to move to
+ * @param y The y coordinate to move to
+ *
+ * This moves @p ee to the screen coordinates (@p x, @p y)
+ */
+EAPI void
+ecore_evas_move(Ecore_Evas *ee, int x, int y)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_move");
+       return;
+     }
+   IFC(ee, fn_move) (ee, x, y);
+   IFE;
+}
+
+/**
+ * Provide Managed move co-ordinates for an Ecore_Evas
+ * @param ee The Ecore_Evas to move
+ * @param x The x coordinate to set as the managed location
+ * @param y The y coordinate to set as the managed location
+ *
+ * This sets the managed geometry position of the @p ee to (@p x, @p y)
+ */
+EAPI void
+ecore_evas_managed_move(Ecore_Evas *ee, int x, int y)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_move");
+       return;
+     }
+   IFC(ee, fn_managed_move) (ee, x, y);
+   IFE;
+}
+
+/**
+ * Resize an Ecore_Evas
+ * @param ee The Ecore_Evas to move
+ * @param w The w coordinate to resize to
+ * @param h The h coordinate to resize to
+ *
+ * This resizes @p ee to @p w x @p h
+ */
+EAPI void
+ecore_evas_resize(Ecore_Evas *ee, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_resize");
+       return;
+     }
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_resize) (ee, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_resize) (ee, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Resize an Ecore_Evas
+ * @param ee The Ecore_Evas to move
+ * @param x The x coordinate to move to
+ * @param y The y coordinate to move to
+ * @param w The w coordinate to resize to
+ * @param h The h coordinate to resize to
+ *
+ * This moves @p ee to the screen coordinates (@p x, @p y) and  resizes
+ * it to @p w x @p h.
+ *
+ */
+EAPI void
+ecore_evas_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_move_resize");
+       return;
+     }
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_move_resize) (ee, x, y, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_move_resize) (ee, x, y, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Get the geometry of an Ecore_Evas
+ * @param ee The Ecore_Evas whose geometry y
+ * @param x A pointer to an int to place the x coordinate in
+ * @param y A pointer to an int to place the y coordinate in
+ * @param w A pointer to an int to place the w size in
+ * @param h A pointer to an int to place the h size in
+ *
+ * This function takes four pointers to (already allocated) ints, and places
+ * the geometry of @p ee in them.
+ *
+ * @code
+ * int x, y, w, h;
+ * ecore_evas_geometry_get(ee, &x, &y, &w, &h);
+ * @endcode
+ *
+ */
+EAPI void
+ecore_evas_geometry_get(Ecore_Evas *ee, int *x, int *y, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_geometry_get");
+       return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       if (x) *x = ee->x;
+       if (y) *y = ee->y;
+       if (w) *w = ee->h;
+       if (h) *h = ee->w;
+     }
+   else
+     {
+       if (x) *x = ee->x;
+       if (y) *y = ee->y;
+       if (w) *w = ee->w;
+       if (h) *h = ee->h;
+     }
+}
+
+/**
+ * Set the rotation of an Ecore_Evas' window
+ *
+ * @param ee The Ecore_Evas
+ * @param rot the angle (in degrees) of rotation.
+ *
+ * The allowed values of @p rot depend on the engine being used. Most only
+ * allow multiples of 90.
+ */
+EAPI void
+ecore_evas_rotation_set(Ecore_Evas *ee, int rot)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_rotation_set");
+       return;
+     }
+   rot = rot % 360;
+   while (rot < 0) rot += 360;
+   while (rot >= 360) rot -= 360;
+   IFC(ee, fn_rotation_set) (ee, rot);
+   IFE;
+}
+
+/**
+ * Set the rotation of an Ecore_Evas' window
+ *
+ * @param ee The Ecore_Evas
+ * @return the angle (in degrees) of rotation.
+ *
+ */
+EAPI int
+ecore_evas_rotation_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_rotation_get");
+       return 0;
+     }
+   return ee->rotation;
+}
+
+/**
+ * Set whether an Ecore_Evas is shaped or not.
+ * @param ee The Ecore_Evas to shape
+ * @param shaped 1 to shape, 0 to not
+ *
+ * This function allows one to make an Ecore_Evas shaped to the contents of the
+ * evas. If @p shaped is 1, @p ee will be transparent in parts of the evas that
+ * contain no objects. If @p shaped is 0, then @p ee will be rectangular, and
+ * and parts with no data will show random framebuffer artifacting. For
+ * non-shaped Ecore_Evases, it is recommend to cover the entire evas with a
+ * background object.
+ */
+EAPI void
+ecore_evas_shaped_set(Ecore_Evas *ee, int shaped)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_shaped_set");
+       return;
+     }
+   IFC(ee, fn_shaped_set) (ee, shaped);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas is shaped or not.
+ * @param ee The Ecore_Evas to query.
+ * @return 1 if shaped, 0 if not.
+ *
+ * This function returns 1 if @p ee is shaped, and 0 if not.
+ */
+EAPI int
+ecore_evas_shaped_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_shaped_get");
+       return 0;
+     }
+   return ee->shaped ? 1:0;
+}
+
+/**
+ * Set whether an Ecore_Evas has an alpha channel or not.
+ * @param ee The Ecore_Evas to shape
+ * @param alpha 1 to enable the alpha channel, 0 to disable it
+ *
+ * This function allows you to make an Ecore_Evas translucent using an
+ * alpha channel. See ecore_evas_shaped_set() for details. The difference
+ * between a shaped window and a window with an alpha channel is that an
+ * alpha channel supports multiple levels of transpararency, as opposed to
+ * the 1 bit transparency of a shaped window (a pixel is either opaque, or
+ * it's transparent).
+ */
+EAPI void
+ecore_evas_alpha_set(Ecore_Evas *ee, int alpha)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_alpha_set");
+       return;
+     }
+   IFC(ee, fn_alpha_set) (ee, alpha);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas has an alpha channel.
+ * @param ee The Ecore_Evas to query.
+ * @return 1 if ee has an alpha channel, 0 if it does not.
+ *
+ * This function returns 1 if @p ee has an alpha channel, and 0 if
+ * it does not.
+ */
+EAPI int
+ecore_evas_alpha_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_alpha_get");
+       return 0;
+     }
+   return ee->alpha ? 1:0;
+}
+
+/**
+ * Show an Ecore_Evas' window
+ * @param ee The Ecore_Evas to show.
+ *
+ * This function makes @p ee visible.
+ */
+EAPI void
+ecore_evas_show(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_show");
+       return;
+     }
+   IFC(ee, fn_show) (ee);
+   IFE;
+}
+
+/**
+ * Hide an Ecore_Evas' window
+ * @param ee The Ecore_Evas to show.
+ *
+ * This function makes @p ee hidden.
+ */
+EAPI void
+ecore_evas_hide(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_hide");
+       return;
+     }
+   IFC(ee, fn_hide) (ee);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is visible or not.
+ * @param ee The Ecore_Evas to query.
+ * @return 1 if visible, 0 if not.
+ *
+ * This function queries @p ee and returns 1 if it is visible, and 0 if not.
+ */
+EAPI int
+ecore_evas_visibility_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_visibility_get");
+       return 0;
+     }
+   return ee->visible ? 1:0;
+}
+
+/**
+ * Raise and Ecore_Evas' window.
+ * @param ee The Ecore_Evas to raise.
+ *
+ * This functions raises the Ecore_Evas to the front.
+ */
+EAPI void
+ecore_evas_raise(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_raise");
+       return;
+     }
+   IFC(ee, fn_raise) (ee);
+   IFE;
+}
+
+/**
+ * Lower an Ecore_Evas' window.
+ * @param ee The Ecore_Evas to raise.
+ *
+ * This functions lowers the Ecore_Evas to the back.
+ */
+EAPI void
+ecore_evas_lower(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_lower");
+       return;
+     }
+   IFC(ee, fn_lower) (ee);
+   IFE;
+}
+
+/**
+ * Activate (set focus to, via the window manager) an Ecore_Evas' window.
+ * @param ee The Ecore_Evas to activate.
+ *
+ * This functions activates the Ecore_Evas.
+ */
+EAPI void
+ecore_evas_activate(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_activate");
+       return;
+     }
+   IFC(ee, fn_activate) (ee);
+   IFE;
+}
+
+/**
+ * Set the title of an Ecore_Evas' window
+ * @param ee The Ecore_Evas whose title you wish to set.
+ * @param t The title
+ *
+ * This function sets the title of @p ee to @p t.
+ */
+EAPI void
+ecore_evas_title_set(Ecore_Evas *ee, const char *t)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_title_set");
+       return;
+     }
+   IFC(ee, fn_title_set) (ee, t);
+   IFE;
+}
+
+/**
+ * Get the title of an Ecore_Evas' window
+ * @param ee The Ecore_Evas whose title you wish to get.
+ * @return The title of @p ee.
+ *
+ * This function returns the title of @p ee.
+ */
+EAPI const char *
+ecore_evas_title_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_title_get");
+       return NULL;
+     }
+   return ee->prop.title;
+}
+
+/**
+ * Set the name and class of an Ecore_Evas' window
+ * @param ee the Ecore_Evas
+ * @param n the name
+ * @param c the class
+ *
+ * This function sets the name of @p ee to @p n, and its class to @p c.
+ */
+EAPI void
+ecore_evas_name_class_set(Ecore_Evas *ee, const char *n, const char *c)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_name_class_set");
+       return;
+     }
+   IFC(ee, fn_name_class_set) (ee, n, c);
+   IFE;
+}
+
+/**
+ * Get the name and class of an Ecore_Evas' window
+ * @p ee The Ecore_Evas to query
+ * @p n A pointer to a string to place the name in.
+ * @p c A pointer to a string to place the class in.
+ *
+ * This function gets puts the name of @p ee into @p n, and its class into
+ * @p c.
+ */
+EAPI void
+ecore_evas_name_class_get(Ecore_Evas *ee, const char **n, const char **c)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_name_class_get");
+       return;
+     }
+   if (n) *n = ee->prop.name;
+   if (c) *c = ee->prop.clas;
+}
+
+/**
+ * Set the min size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w The minimum width
+ * @param h The minimum height
+ *
+ * This function sets the minimum size of @p ee to @p w x @p h.
+ */
+EAPI void
+ecore_evas_size_min_set(Ecore_Evas *ee, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_min_set");
+       return;
+     }
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_size_min_set) (ee, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_size_min_set) (ee, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Get the min size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w A pointer to an int to place the min width in.
+ * @param h A pointer to an int to place the min height in.
+ *
+ * This function puts the minimum size of @p ee into @p w and @p h.
+ */
+EAPI void
+ecore_evas_size_min_get(Ecore_Evas *ee, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_min_get");
+       return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       if (w) *w = ee->prop.min.h;
+       if (h) *h = ee->prop.min.w;
+     }
+   else
+     {
+       if (w) *w = ee->prop.min.w;
+       if (h) *h = ee->prop.min.h;
+     }
+}
+
+/**
+ * Set the max size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w The maximum width
+ * @param h The maximum height
+ *
+ * This function sets the maximum size of @p ee to @p w x @p h.
+ */
+EAPI void
+ecore_evas_size_max_set(Ecore_Evas *ee, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_max_set");
+       return;
+     }
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_size_max_set) (ee, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_size_max_set) (ee, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Get the max size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w A pointer to an int to place the max width in.
+ * @param h A pointer to an int to place the max height in.
+ *
+ * This function puts the maximum size of @p ee into @p w and @p h.
+ */
+EAPI void
+ecore_evas_size_max_get(Ecore_Evas *ee, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_max_get");
+       return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       if (w) *w = ee->prop.max.h;
+       if (h) *h = ee->prop.max.w;
+     }
+   else
+     {
+       if (w) *w = ee->prop.max.w;
+       if (h) *h = ee->prop.max.h;
+     }
+}
+
+/**
+ * Set the base size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w The base width
+ * @param h The base height
+ *
+ * This function sets the base size of @p ee to @p w x @p h.
+ */
+EAPI void
+ecore_evas_size_base_set(Ecore_Evas *ee, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_base_set");
+       return;
+     }
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_size_base_set) (ee, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_size_base_set) (ee, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Get the base size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w A pointer to an int to place the base width in.
+ * @param h A pointer to an int to place the base height in.
+ *
+ * This function puts the base size of @p ee into @p w and @p h.
+ */
+EAPI void
+ecore_evas_size_base_get(Ecore_Evas *ee, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_base_get");
+       return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       if (w) *w = ee->prop.base.h;
+       if (h) *h = ee->prop.base.w;
+     }
+   else
+     {
+       if (w) *w = ee->prop.base.w;
+       if (h) *h = ee->prop.base.h;
+     }
+}
+
+/**
+ * Set the step size of an Ecore_Evas
+ * @param ee The Ecore_Evas to set
+ * @param w The step width
+ * @param h The step height
+ *
+ * This function sets the step size of @p ee to @p w x @p h. This limits the
+ * size of an Ecore_Evas to always being an integer multiple of the step size.
+ */
+EAPI void
+ecore_evas_size_step_set(Ecore_Evas *ee, int w, int h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_step_set");
+       return;
+     }
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       IFC(ee, fn_size_step_set) (ee, h, w);
+       IFE;
+     }
+   else
+     {
+       IFC(ee, fn_size_step_set) (ee, w, h);
+       IFE;
+     }
+}
+
+/**
+ * Get the step size of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @param w A pointer to an int to place the step width in.
+ * @param h A pointer to an int to place the step height in.
+ *
+ * This function puts the step size of @p ee into @p w and @p h.
+ */
+EAPI void
+ecore_evas_size_step_get(Ecore_Evas *ee, int *w, int *h)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_size_step_get");
+       return;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       if (w) *w = ee->prop.step.h;
+       if (h) *h = ee->prop.step.w;
+     }
+   else
+     {
+       if (w) *w = ee->prop.step.w;
+       if (h) *h = ee->prop.step.h;
+     }
+}
+
+/**
+ * Set the cursor of an Ecore_Evas
+ * @param ee The Ecore_Evas
+ * @param file  The path to an image file for the cursor
+ * @param layer
+ * @param hot_x The x coordinate of the cursor's hot spot
+ * @param hot_y The y coordinate of the cursor's hot spot
+ *
+ * This function makes the mouse cursor over @p ee be the image specified by
+ * @p file. The actual point within the image that the mouse is at is specified
+ * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
+ * corner of the cursor image.
+ */
+EAPI void
+ecore_evas_cursor_set(Ecore_Evas *ee, const char *file, int layer, int hot_x, int hot_y)
+{
+   Evas_Object  *obj = NULL;
+
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_cursor_set");
+       return;
+     }
+
+   if (file)
+     {
+        int x, y;
+
+        obj = evas_object_image_add(ee->evas);
+        evas_object_image_file_set(obj, file, NULL);
+        evas_object_image_size_get(obj, &x, &y);
+        evas_object_resize(obj, x, y);
+        evas_object_image_fill_set(obj, 0, 0, x, y);
+     }
+
+   IFC(ee, fn_object_cursor_set) (ee, obj, layer, hot_x, hot_y);
+   IFE;
+}
+
+/**
+ * Set the cursor of an Ecore_Evas
+ * @param ee The Ecore_Evas
+ * @param obj The Evas_Object for the cursor
+ * @param layer
+ * @param hot_x The x coordinate of the cursor's hot spot
+ * @param hot_y The y coordinate of the cursor's hot spot
+ * 
+ * This function makes the mouse cursor over @p ee be the image specified by
+ * @p file. The actual point within the image that the mouse is at is specified
+ * by @p hot_x and @p hot_y, which are coordinates with respect to the top left
+ * corner of the cursor image.
+ */
+EAPI void
+ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_cursor_set");
+       return;
+     }
+   IFC(ee, fn_object_cursor_set) (ee, obj, layer, hot_x, hot_y);
+   IFE;
+}
+
+/**
+ * Get information about an Ecore_Evas' cursor
+ * @param ee The Ecore_Evas to set
+ * @param obj A pointer to an Evas_Object to place the cursor Evas_Object.
+ * @param layer A pointer to an int to place the cursor's layer in..
+ * @param hot_x A pointer to an int to place the cursor's hot_x coordinate in.
+ * @param hot_y A pointer to an int to place the cursor's hot_y coordinate in.
+ *
+ * This function queries information about an Ecore_Evas' cursor.
+ */
+EAPI void
+ecore_evas_cursor_get(Ecore_Evas *ee, Evas_Object **obj, int *layer, int *hot_x, int *hot_y)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_cursor_get");
+       return;
+     }
+   if (obj) *obj = ee->prop.cursor.object;
+   if (layer) *layer = ee->prop.cursor.layer;
+   if (hot_x) *hot_x = ee->prop.cursor.hot.x;
+   if (hot_y) *hot_y = ee->prop.cursor.hot.y;
+}
+
+/**
+ * Set the layer of an Ecore_Evas' window
+ * @param ee The Ecore_Evas
+ * @param layer The layer to put @p ee on.
+ *
+ * This function moves @p ee to the layer @p layer.
+ */
+EAPI void
+ecore_evas_layer_set(Ecore_Evas *ee, int layer)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_layer_set");
+       return;
+     }
+   IFC(ee, fn_layer_set) (ee, layer);
+   IFE;
+}
+
+/**
+ * Get the layer of an Ecore_Evas' window
+ * @param ee The Ecore_Evas to set
+ * @return the layer @p ee's window is on.
+ *
+ */
+EAPI int
+ecore_evas_layer_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_layer_get");
+       return 0;
+     }
+   return ee->prop.layer;
+}
+
+/**
+ * Set the focus of an Ecore_Evas' window
+ * @param ee The Ecore_Evas
+ * @param on 1 for focus, 0 to defocus.
+ *
+ * This function focuses @p ee if @p on is 1, or defocuses @p ee if @p on is 0.
+ */
+EAPI void
+ecore_evas_focus_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_focus_set");
+       return;
+     }
+   IFC(ee, fn_focus_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is focused or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee if focused, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_focus_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_focus_get");
+       return 0;
+     }
+   return ee->prop.focused ? 1:0;
+}
+
+/**
+ * Iconify or uniconify an Ecore_Evas' window
+ * @param ee The Ecore_Evas
+ * @param on 1 to iconify, 0 to uniconify.
+ *
+ * This function iconifies @p ee if @p on is 1, or uniconifies @p ee if @p on
+ * is 0.
+ */
+EAPI void
+ecore_evas_iconified_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_iconified_set");
+       return;
+     }
+   IFC(ee, fn_iconified_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is iconified or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee is iconified, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_iconified_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_iconified_get");
+       return 0;
+     }
+   return ee->prop.iconified ? 1:0;
+}
+
+/**
+ * Set whether an Ecore_Evas' window is borderless or not
+ * @param ee The Ecore_Evas
+ * @param on 1 for borderless, 0 for bordered.
+ *
+ * This function makes @p ee borderless if @p on is 1, or bordered if @p on
+ * is 0.
+ */
+EAPI void
+ecore_evas_borderless_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_borderless_set");
+       return;
+     }
+   IFC(ee, fn_borderless_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is borderless or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee is borderless, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_borderless_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_borderless_get");
+       return 0;
+     }
+   return ee->prop.borderless ? 1:0;
+}
+
+/**
+ * Tell the WM whether or not to ignore an Ecore_Evas' window
+ * @param ee The Ecore_Evas
+ * @param on 1 to ignore, 0 to not.
+ *
+ * This function causes the window manager to ignore @p ee if @p on is 1,
+ * or not ignore @p ee if @p on is 0.
+ */
+EAPI void
+ecore_evas_override_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_override_set");
+       return;
+     }
+   IFC(ee, fn_override_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is overridden or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee is overridden, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_override_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_override_get");
+       return 0;
+     }
+   return ee->prop.override ? 1:0;
+}
+
+/**
+ * Maximize (or unmaximize) an Ecore_Evas' window
+ * @param ee The Ecore_Evas
+ * @param on 1 to maximize, 0 to unmaximize.
+ *
+ * This function maximizes @p ee if @p on is 1, or unmaximizes @p ee
+ * if @p on is 0.
+ */
+EAPI void
+ecore_evas_maximized_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_maximized_set");
+       return;
+     }
+   IFC(ee, fn_maximized_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is maximized or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee is maximized, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_maximized_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_maximized_get");
+       return 0;
+     }
+   return ee->prop.maximized ? 1:0;
+}
+
+/**
+ * Set whether or not an Ecore_Evas' window is fullscreen
+ * @param ee The Ecore_Evas
+ * @param on 1 fullscreen, 0 not.
+ *
+ * This function causes @p ee to be fullscreen if @p on is 1,
+ * or not if @p on is 0.
+ */
+EAPI void
+ecore_evas_fullscreen_set(Ecore_Evas *ee, int on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_fullscreen_set");
+       return;
+     }
+   IFC(ee, fn_fullscreen_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window is fullscreen or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee is fullscreen, 0 if not.
+ *
+ */
+EAPI int
+ecore_evas_fullscreen_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_fullscreen_get");
+       return 0;
+     }
+   return ee->prop.fullscreen ? 1:0;
+}
+
+/**
+ * Set whether or not an Ecore_Evas' window should avoid damage
+ *
+ * @param ee The Ecore_Evas
+ * @param on 1 to avoid damage, 0 to not
+ *
+ * This function causes @p ee to be drawn to a pixmap to avoid recalculations.
+ * On expose events it will copy from the pixmap to the window.
+ */
+EAPI void
+ecore_evas_avoid_damage_set(Ecore_Evas *ee, Ecore_Evas_Avoid_Damage_Type on)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_avoid_damage_set");
+       return;
+     }
+   IFC(ee, fn_avoid_damage_set) (ee, on);
+   IFE;
+}
+
+/**
+ * Query whether an Ecore_Evas' window avoids damage or not
+ * @param ee The Ecore_Evas to set
+ * @return 1 if @p ee avoids damage, 0 if not.
+ *
+ */
+EAPI Ecore_Evas_Avoid_Damage_Type
+ecore_evas_avoid_damage_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+     {
+       ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+                        "ecore_evas_avoid_damage_get");
+       return 0;
+     }
+   return ee->prop.avoid_damage;
+}
+
+/**
+ * Set the withdrawn state of an Ecore_Evas' window.
+ * @param ee The Ecore_Evas whose window's withdrawn state is set.
+ * @param withdrawn The Ecore_Evas window's new withdrawn state.
+ *
+ */
+EAPI void
+ecore_evas_withdrawn_set(Ecore_Evas *ee, int withdrawn)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_withdrawn_set");
+      return;
+   }
+
+   IFC(ee, fn_withdrawn_set) (ee, withdrawn);
+   IFE;
+}
+
+/**
+ * Returns the withdrawn state of an Ecore_Evas' window.
+ * @param ee The Ecore_Evas whose window's withdrawn state is returned.
+ * @return The Ecore_Evas window's withdrawn state.
+ *
+ */
+EAPI int
+ecore_evas_withdrawn_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_withdrawn_get");
+      return 0;
+   } else
+      return ee->prop.withdrawn ? 1:0;
+}
+
+/**
+ * Set the sticky state of an Ecore_Evas window.
+ *
+ * @param ee The Ecore_Evas whose window's sticky state is set.
+ * @param sticky The Ecore_Evas window's new sticky state.
+ *
+ */
+EAPI void
+ecore_evas_sticky_set(Ecore_Evas *ee, int sticky)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_sticky_set");
+      return;
+   }
+
+   IFC(ee, fn_sticky_set) (ee, sticky);
+   IFE;
+}
+
+/**
+ * Returns the sticky state of an Ecore_Evas' window.
+ *
+ * @param ee The Ecore_Evas whose window's sticky state is returned.
+ * @return The Ecore_Evas window's sticky state.
+ *
+ */
+EAPI int
+ecore_evas_sticky_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_sticky_get");
+      return 0;
+   } else
+      return ee->prop.sticky ? 1:0;
+}
+
+/**
+ * Set if this evas should ignore events
+ *
+ * @param ee The Ecore_Evas whose window's to ignore events
+ * @param sticky The Ecore_Evas new ignore state
+ *
+ */
+EAPI void
+ecore_evas_ignore_events_set(Ecore_Evas *ee, int ignore)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_ignore_events_set");
+      return;
+   }
+
+   IFC(ee, fn_ignore_events_set) (ee, ignore);
+   IFE;
+}
+
+/**
+ * Returns the ignore state of an Ecore_Evas' window.
+ *
+ * @param ee The Ecore_Evas whose window's ignore events state is returned.
+ * @return The Ecore_Evas window's ignore state.
+ *
+ */
+EAPI int
+ecore_evas_ignore_events_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_ignore_events_get");
+      return 0;
+   } else
+      return ee->ignore_events ? 1 : 0;
+}
+
+EAPI void *
+ecore_evas_window_get(Ecore_Evas *ee)
+{
+   if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
+   {
+      ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
+         "ecore_evas_window_get");
+      return NULL;
+   }
+
+   if (ee->engine.func->fn_window_get) return ee->engine.func->fn_window_get(ee);
+   return NULL;
+}
+
+/* fps debug calls - for debugging how much time your app actually spends */
+/* rendering graphics... :) */
+
+static int _ecore_evas_fps_debug_init_count = 0;
+static int _ecore_evas_fps_debug_fd = -1;
+unsigned int *_ecore_evas_fps_rendertime_mmap = NULL;
+
+void
+_ecore_evas_fps_debug_init(void)
+{
+   char buf[4096];
+
+   _ecore_evas_fps_debug_init_count++;
+   if (_ecore_evas_fps_debug_init_count > 1) return;
+   snprintf(buf, sizeof(buf), "/tmp/.ecore_evas_fps_debug-%i", (int)getpid());
+   _ecore_evas_fps_debug_fd = open(buf, O_CREAT | O_TRUNC | O_RDWR, 0644);
+   if (_ecore_evas_fps_debug_fd < 0)
+     {
+       unlink(buf);
+       _ecore_evas_fps_debug_fd = open(buf, O_CREAT | O_TRUNC | O_RDWR, 0644);
+     }
+   if (_ecore_evas_fps_debug_fd >= 0)
+     {
+       unsigned int zero = 0;
+
+       write(_ecore_evas_fps_debug_fd, &zero, sizeof(unsigned int));
+       _ecore_evas_fps_rendertime_mmap = mmap(NULL, sizeof(unsigned int),
+                                              PROT_READ | PROT_WRITE,
+                                              MAP_SHARED,
+                                              _ecore_evas_fps_debug_fd, 0);
+       if (_ecore_evas_fps_rendertime_mmap == MAP_FAILED)
+         _ecore_evas_fps_rendertime_mmap = NULL;
+     }
+}
+
+void
+_ecore_evas_fps_debug_shutdown(void)
+{
+   _ecore_evas_fps_debug_init_count--;
+   if (_ecore_evas_fps_debug_init_count > 0) return;
+   if (_ecore_evas_fps_debug_fd >= 0)
+     {
+       char buf[4096];
+
+       snprintf(buf, sizeof(buf), "/tmp/.ecore_evas_fps_debug-%i", (int)getpid());
+       unlink(buf);
+       if (_ecore_evas_fps_rendertime_mmap)
+         {
+            munmap(_ecore_evas_fps_rendertime_mmap, sizeof(int));
+            _ecore_evas_fps_rendertime_mmap = NULL;
+         }
+       close(_ecore_evas_fps_debug_fd);
+       _ecore_evas_fps_debug_fd = -1;
+     }
+}
+
+void
+_ecore_evas_fps_debug_rendertime_add(double t)
+{
+   if ((_ecore_evas_fps_debug_fd >= 0) &&
+       (_ecore_evas_fps_rendertime_mmap))
+     {
+       unsigned int tm;
+
+       tm = (unsigned int)(t * 1000000.0);
+       /* i know its not 100% theoretically guaranteed, but i'd say a write */
+       /* of an int could be considered atomic for all practical purposes */
+       /* oh and since this is cumulative, 1 second = 1,000,000 ticks, so */
+       /* this can run for about 4294 seconds becore looping. if you are */
+       /* doing performance testing in one run for over an hour... well */
+       /* time to restart or handle a loop condition :) */
+       *(_ecore_evas_fps_rendertime_mmap) += tm;
+     }
+}
+
+void
+_ecore_evas_free(Ecore_Evas *ee)
+{
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_NONE);
+   while (ee->sub_ecore_evas)
+     {
+       _ecore_evas_free(ee->sub_ecore_evas->data);
+     }
+   if (ee->data) evas_hash_free(ee->data);
+   if (ee->name) free(ee->name);
+   if (ee->prop.title) free(ee->prop.title);
+   if (ee->prop.name) free(ee->prop.name);
+   if (ee->prop.clas) free(ee->prop.clas);
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+   if (ee->evas) evas_free(ee->evas);
+   ee->data = NULL;
+   ee->driver = NULL;
+   ee->name = NULL;
+   ee->prop.title = NULL;
+   ee->prop.name = NULL;
+   ee->prop.clas = NULL;
+   ee->prop.cursor.object = NULL;
+   ee->evas = NULL;
+   if (ee->engine.idle_flush_timer)
+     ecore_timer_del(ee->engine.idle_flush_timer);
+   if (ee->engine.func->fn_free) ee->engine.func->fn_free(ee);
+   free(ee);
+}
+
+static int
+_ecore_evas_cb_idle_flush(void *data)
+{
+   Ecore_Evas *ee;
+
+   ee = (Ecore_Evas *)data;
+   evas_render_idle_flush(ee->evas);
+   ee->engine.idle_flush_timer = NULL;
+   return 0;
+}
+
+void
+_ecore_evas_idle_timeout_update(Ecore_Evas *ee)
+{
+   if (ee->engine.idle_flush_timer)
+     ecore_timer_del(ee->engine.idle_flush_timer);
+   ee->engine.idle_flush_timer = ecore_timer_add(IDLE_FLUSH_TIME,
+                                                _ecore_evas_cb_idle_flush,
+                                                ee);
+}
diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c
new file mode 100644 (file)
index 0000000..c1df0fe
--- /dev/null
@@ -0,0 +1,653 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+#ifdef BUILD_ECORE_EVAS_BUFFER
+static int _ecore_evas_init_count = 0;
+
+static int _ecore_evas_fps_debug = 0;
+
+static Ecore_Evas *ecore_evases = NULL;
+
+static void
+_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+}
+
+static int
+_ecore_evas_buffer_init(void)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+   if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+   return _ecore_evas_init_count;
+}
+
+static void
+_ecore_evas_buffer_free(Ecore_Evas *ee)
+{
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   _ecore_evas_buffer_shutdown();
+   if (ee->engine.buffer.image)
+     {
+       Ecore_Evas *ee2;
+
+       ee2 = evas_object_data_get(ee->engine.buffer.image, "Ecore_Evas_Parent");
+       evas_object_del(ee->engine.buffer.image);
+       ee2->sub_ecore_evas = evas_list_remove(ee2->sub_ecore_evas, ee);
+     }
+   else
+     free(ee->engine.buffer.pixels);
+}
+
+static void
+_ecore_evas_resize(Ecore_Evas *ee, int w, int h)
+{
+   Evas_Engine_Info_Buffer *einfo;
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+   evas_output_size_set(ee->evas, ee->w, ee->h);
+   evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+   if (ee->engine.buffer.image)
+     {
+       ee->engine.buffer.pixels = evas_object_image_data_get(ee->engine.buffer.image, 1);
+     }
+   else
+     {
+       if (ee->engine.buffer.pixels) free(ee->engine.buffer.pixels);
+       ee->engine.buffer.pixels = malloc(ee->w * ee->h * sizeof(int));
+     }
+
+   einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+       einfo->info.dest_buffer = ee->engine.buffer.pixels;
+       einfo->info.dest_buffer_row_bytes = ee->w * sizeof(int);
+       einfo->info.use_color_key = 0;
+       einfo->info.alpha_threshold = 0;
+       einfo->info.func.new_update_region = NULL;
+       einfo->info.func.free_update_region = NULL;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+int
+_ecore_evas_buffer_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       while (ecore_evases)
+         {
+            _ecore_evas_free((Ecore_Evas *)ecore_evases);
+         }
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+void
+_ecore_evas_buffer_render(Ecore_Evas *ee)
+{
+   Evas_List *updates, *l, *ll;
+
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+     }
+   if (ee->engine.buffer.image)
+     {
+       int w, h;
+
+       evas_object_image_size_get(ee->engine.buffer.image, &w, &h);
+       if ((w != ee->w) || (h != ee->h))
+         _ecore_evas_resize(ee, w, h);
+     }
+   updates = evas_render_updates(ee->evas);
+   if (ee->engine.buffer.image)
+     {
+       for (l = updates; l; l = l->next)
+         {
+            Evas_Rectangle *r;
+
+            r = l->data;
+            if (ee->engine.buffer.image)
+              evas_object_image_data_update_add(ee->engine.buffer.image,
+                                                r->x, r->y, r->w, r->h);
+         }
+     }
+   if (updates)
+     {
+       evas_render_updates_free(updates);
+       _ecore_evas_idle_timeout_update(ee);
+     }
+}
+
+static void
+_ecore_evas_buffer_coord_translate(Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y)
+{
+   Evas_Coord xx, yy, fx, fy, fw, fh;
+
+   evas_object_geometry_get(ee->engine.buffer.image, &xx, &yy, NULL, NULL);
+   evas_object_image_fill_get(ee->engine.buffer.image, &fx, &fy, &fw, &fh);
+
+   if (fw < 1) fw = 1;
+   xx = (*x - xx) - fx;
+   while (xx < 0) xx += fw;
+   while (xx > fw) xx -= fw;
+   *x = (ee->w * xx) / fw;
+
+   if (fh < 1) fh = 1;
+   yy = (*y - yy) - fy;
+   while (yy < 0) yy += fh;
+   while (yy > fh) yy -= fh;
+   *y = (ee->h * yy) / fh;
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_in(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_In *ev;
+
+   ee = data;
+   ev = event_info;
+   evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_out(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_Out *ev;
+
+   ee = data;
+   ev = event_info;
+   evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_Down *ev;
+
+   ee = data;
+   ev = event_info;
+   evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_Up *ev;
+
+   ee = data;
+   ev = event_info;
+   evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_Move *ev;
+   Evas_Coord x, y;
+
+   ee = data;
+   ev = event_info;
+   x = ev->cur.canvas.x;
+   y = ev->cur.canvas.y;
+   _ecore_evas_buffer_coord_translate(ee, &x, &y);
+   _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp);
+}
+
+static void
+_ecore_evas_buffer_cb_mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Mouse_Wheel *ev;
+
+   ee = data;
+   ev = event_info;
+   evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_free(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   if (ee->driver) _ecore_evas_free(ee);
+}
+
+static void
+_ecore_evas_buffer_cb_key_down(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Key_Down *ev;
+
+   ee = data;
+   ev = event_info;
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift"))
+     evas_key_modifier_on(e, "Shift");
+   else
+     evas_key_modifier_off(e, "Shift");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control"))
+     evas_key_modifier_on(e, "Control");
+   else
+     evas_key_modifier_off(e, "Control");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt"))
+     evas_key_modifier_on(e, "Alt");
+   else
+     evas_key_modifier_off(e, "Alt");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta"))
+     evas_key_modifier_on(e, "Meta");
+   else
+     evas_key_modifier_off(e, "Meta");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper"))
+     evas_key_modifier_on(e, "Hyper");
+   else
+     evas_key_modifier_off(e, "Hyper");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super"))
+     evas_key_modifier_on(e, "Super");
+   else
+     evas_key_modifier_off(e, "Super");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock"))
+     evas_key_lock_on(e, "Scroll_Lock");
+   else
+     evas_key_lock_off(e, "Scroll_Lock");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock"))
+     evas_key_lock_on(e, "Num_Lock");
+   else
+     evas_key_lock_off(e, "Num_Lock");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock"))
+     evas_key_lock_on(e, "Caps_Lock");
+   else
+     evas_key_lock_off(e, "Caps_Lock");
+   evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_key_up(void *data, Evas *e, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Ecore_Evas *ee;
+   Evas_Event_Key_Up *ev;
+
+   ee = data;
+   ev = event_info;
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift"))
+     evas_key_modifier_on(e, "Shift");
+   else
+     evas_key_modifier_off(e, "Shift");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control"))
+     evas_key_modifier_on(e, "Control");
+   else
+     evas_key_modifier_off(e, "Control");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt"))
+     evas_key_modifier_on(e, "Alt");
+   else
+     evas_key_modifier_off(e, "Alt");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta"))
+     evas_key_modifier_on(e, "Meta");
+   else
+     evas_key_modifier_off(e, "Meta");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper"))
+     evas_key_modifier_on(e, "Hyper");
+   else
+     evas_key_modifier_off(e, "Hyper");
+   if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super"))
+     evas_key_modifier_on(e, "Super");
+   else
+     evas_key_modifier_off(e, "Super");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock"))
+     evas_key_lock_on(e, "Scroll_Lock");
+   else
+     evas_key_lock_off(e, "Scroll_Lock");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock"))
+     evas_key_lock_on(e, "Num_Lock");
+   else
+     evas_key_lock_off(e, "Num_Lock");
+   if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock"))
+     evas_key_lock_on(e, "Caps_Lock");
+   else
+     evas_key_lock_off(e, "Caps_Lock");
+   evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL);
+}
+
+static void
+_ecore_evas_buffer_cb_focus_in(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   ee->prop.focused = 1;
+   if (ee->func.fn_focus_in) ee->func.fn_focus_in(ee);
+}
+
+static void
+_ecore_evas_buffer_cb_focus_out(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   ee->prop.focused = 0;
+   if (ee->func.fn_focus_out) ee->func.fn_focus_out(ee);
+}
+
+static void
+_ecore_evas_buffer_cb_show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   ee->visible = 1;
+   if (ee->func.fn_show) ee->func.fn_show(ee);
+}
+
+static void
+_ecore_evas_buffer_cb_hide(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Ecore_Evas *ee;
+
+   ee = data;
+   ee->visible = 0;
+   if (ee->func.fn_hide) ee->func.fn_hide(ee);
+}
+
+static const Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
+{
+   _ecore_evas_buffer_free,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_resize,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL
+};
+#endif
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_buffer_new(int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   Evas_Engine_Info_Buffer *einfo;
+   Ecore_Evas *ee;
+   int rmethod;
+
+   rmethod = evas_render_method_lookup("buffer");
+   if (!rmethod) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_buffer_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_buffer_engine_func;
+
+   ee->driver = "buffer";
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->rotation = 0;
+   ee->visible = 1;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
+   ee->prop.layer = 0;
+   ee->prop.focused = 1;
+   ee->prop.borderless = 1;
+   ee->prop.override = 1;
+   ee->prop.maximized = 1;
+   ee->prop.fullscreen = 0;
+   ee->prop.withdrawn = 0;
+   ee->prop.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   ee->engine.buffer.pixels = malloc(w * h * sizeof(int));
+
+   einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+       einfo->info.dest_buffer = ee->engine.buffer.pixels;
+       einfo->info.dest_buffer_row_bytes = ee->w * sizeof(int);
+       einfo->info.use_color_key = 0;
+       einfo->info.alpha_threshold = 0;
+       einfo->info.func.new_update_region = NULL;
+       einfo->info.func.free_update_region = NULL;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   evas_event_feed_mouse_in(ee->evas, 0, NULL);
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   return ee;
+#else
+   return NULL;
+#endif
+}
+
+EAPI const int *
+ecore_evas_buffer_pixels_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   _ecore_evas_buffer_render(ee);
+   return ee->engine.buffer.pixels;
+#else
+   return NULL;
+#endif
+}
+
+EAPI Evas_Object *
+ecore_evas_object_image_new(Ecore_Evas *ee_target)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   Evas_Object *o;
+   Evas_Engine_Info_Buffer *einfo;
+   Ecore_Evas *ee;
+   int rmethod;
+   int w, h;
+
+   rmethod = evas_render_method_lookup("buffer");
+   if (!rmethod) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   o = evas_object_image_add(ee_target->evas);
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_buffer_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_buffer_engine_func;
+
+   ee->driver = "buffer";
+
+   w = 1;
+   h = 1;
+   ee->rotation = 0;
+   ee->visible = 0;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
+   ee->prop.layer = 0;
+   ee->prop.focused = 0;
+   ee->prop.borderless = 1;
+   ee->prop.override = 1;
+   ee->prop.maximized = 0;
+   ee->prop.fullscreen = 0;
+   ee->prop.withdrawn = 0;
+   ee->prop.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   ee->engine.buffer.image = o;
+   evas_object_data_set(ee->engine.buffer.image, "Ecore_Evas", ee);
+   evas_object_data_set(ee->engine.buffer.image, "Ecore_Evas_Parent", ee_target);
+   evas_object_image_size_set(o, ee->w, ee->h);
+   evas_object_image_alpha_set(o, 1);
+   ee->engine.buffer.pixels = evas_object_image_data_get(o, 1);
+   evas_object_image_data_set(o, ee->engine.buffer.pixels);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_IN,
+                                 _ecore_evas_buffer_cb_mouse_in, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_OUT,
+                                 _ecore_evas_buffer_cb_mouse_out, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_DOWN,
+                                 _ecore_evas_buffer_cb_mouse_down, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_UP,
+                                 _ecore_evas_buffer_cb_mouse_up, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_MOVE,
+                                 _ecore_evas_buffer_cb_mouse_move, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_MOUSE_WHEEL,
+                                 _ecore_evas_buffer_cb_mouse_wheel, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_FREE,
+                                 _ecore_evas_buffer_cb_free, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_KEY_DOWN,
+                                 _ecore_evas_buffer_cb_key_down, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_KEY_UP,
+                                 _ecore_evas_buffer_cb_key_up, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_FOCUS_IN,
+                                 _ecore_evas_buffer_cb_focus_in, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_FOCUS_OUT,
+                                 _ecore_evas_buffer_cb_focus_out, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_SHOW,
+                                 _ecore_evas_buffer_cb_show, ee);
+   evas_object_event_callback_add(ee->engine.buffer.image,
+                                 EVAS_CALLBACK_HIDE,
+                                 _ecore_evas_buffer_cb_hide, ee);
+   einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32;
+       einfo->info.dest_buffer = ee->engine.buffer.pixels;
+       einfo->info.dest_buffer_row_bytes = ee->w * sizeof(int);
+       einfo->info.use_color_key = 0;
+       einfo->info.alpha_threshold = 0;
+       einfo->info.func.new_update_region = NULL;
+       einfo->info.func.free_update_region = NULL;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ee_target->sub_ecore_evas = evas_list_append(ee_target->sub_ecore_evas, ee);
+   return o;
+#else
+   return NULL;
+#endif
+}
diff --git a/src/lib/ecore_evas/ecore_evas_directfb.c b/src/lib/ecore_evas/ecore_evas_directfb.c
new file mode 100644 (file)
index 0000000..23723d9
--- /dev/null
@@ -0,0 +1,614 @@
+#include "config.h"
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+#include "Ecore_DirectFB.h"
+#endif
+
+
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+static int _ecore_evas_init_count = 0;
+static int _ecore_evas_fps_debug = 0;
+static Ecore_Event_Handler *ecore_evas_event_handlers[13];
+
+static Ecore_Evas *ecore_evases = NULL;
+static Evas_Hash *ecore_evases_hash = NULL;
+
+static Ecore_Idle_Enterer *ecore_evas_directfb_idle_enterer = NULL;
+
+static void
+_ecore_evas_directfb_render(Ecore_Evas *ee)
+{
+   Evas_List *updates, *ll;
+   
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+       
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+     }
+#endif
+   if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+   updates = evas_render_updates(ee->evas);
+   if (updates)
+     {
+       evas_render_updates_free(updates);
+       _ecore_evas_idle_timeout_update(ee);
+     }
+   if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+}
+
+static int
+_ecore_evas_directfb_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   double t1 = 0.;
+   double t2 = 0.;
+   
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+       
+       ee = (Ecore_Evas *)l;
+       _ecore_evas_directfb_render(ee);
+     }
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+       _ecore_evas_fps_debug_rendertime_add(t2 - t1);
+     }
+   return 1;
+}
+
+static char *
+_ecore_evas_directfb_winid_str_get(Ecore_X_Window win)
+{
+   const char *vals = "qWeRtYuIoP5-$&<~";
+   static char id[9];
+   unsigned int val; 
+   val = (unsigned int)win;
+   id[0] = vals[(val >> 28) & 0xf];    
+   id[1] = vals[(val >> 24) & 0xf];
+   id[2] = vals[(val >> 20) & 0xf];
+   id[3] = vals[(val >> 16) & 0xf];
+   id[4] = vals[(val >> 12) & 0xf];
+   id[5] = vals[(val >>  8) & 0xf];
+   id[6] = vals[(val >>  4) & 0xf];
+   id[7] = vals[(val      ) & 0xf];
+   id[8] = 0;
+   return id;
+}
+
+
+static Ecore_Evas *
+_ecore_evas_directfb_match(DFBWindowID win)
+{    
+   Ecore_Evas *ee;
+   
+   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(win));
+   return ee;
+}
+       
+static void 
+_ecore_evas_directfb_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+       if (ee->rotation == 0)
+         evas_object_move(ee->prop.cursor.object,x - ee->prop.cursor.hot.x,y - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 90)
+         evas_object_move(ee->prop.cursor.object,
+                           ee->h - y - 1 - ee->prop.cursor.hot.x,
+                           x - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 180)
+         evas_object_move(ee->prop.cursor.object,
+                           ee->w - x - 1 - ee->prop.cursor.hot.x,
+                           ee->h - y - 1 - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 270)
+         evas_object_move(ee->prop.cursor.object,
+                           y - ee->prop.cursor.hot.x,
+                           ee->w - x - 1 - ee->prop.cursor.hot.y);
+     }
+   if (ee->rotation == 0)
+     evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+   else if (ee->rotation == 90)
+     evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, timestamp, NULL);
+   else if (ee->rotation == 180)
+     evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, timestamp, NULL);
+   else if (ee->rotation == 270)
+     evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, timestamp, NULL);
+}
+
+
+static int 
+_ecore_evas_directfb_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Key_Down *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_key_down(ee->evas, e->name, NULL, e->string, e->key_compose, e->time, NULL);
+   return 1;
+}
+
+static int
+_ecore_evas_directfb_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Key_Up *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_key_up(ee->evas, e->name, NULL, e->string, e->key_compose, e->time, NULL);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_motion(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Motion *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_directfb_mouse_move_process(ee, e->x, e->y, e->time);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Button_Down *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   // _ecore_evas_directfb_mouse_move_process(ee, e->x, e->y, e->time);
+   evas_event_feed_mouse_down(ee->evas, e->button, EVAS_BUTTON_NONE, e->time, NULL);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Button_Up *e;
+   Evas_Button_Flags flags = EVAS_BUTTON_NONE;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   //_ecore_evas_directfb_mouse_move_process(ee, e->x, e->y, e->time);
+   evas_event_feed_mouse_up(ee->evas, e->button, flags, e->time, NULL);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_enter(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Enter *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_mouse_in(ee->evas, e->time, NULL);
+   //_ecore_evas_directfb_mouse_move_process(ee, e->x, e->y, e->time);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_leave(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Leave *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_mouse_out(ee->evas, e->time, NULL);
+   //_ecore_evas_directfb_mouse_move_process(ee, e->x, e->y, e->time);
+   if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
+   if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_wheel(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Wheel *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, e->time, NULL);
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_got_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Got_Focus *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   ee->prop.focused = 1;
+   return 1;   
+}
+
+static int
+_ecore_evas_directfb_event_lost_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Event_Lost_Focus *e;
+   
+   e = event;
+   ee = _ecore_evas_directfb_match(e->win);
+   
+   if (!ee) return 1; /* pass on event */
+   ee->prop.focused = 0;
+   return 1;   
+}
+       
+int
+_ecore_evas_directfb_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+       
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+       for (i = 0; i < 8; i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_directfb_idle_enterer);
+       ecore_evas_directfb_idle_enterer = NULL;
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+       
+
+
+
+
+int
+_ecore_evas_directfb_init(void)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+   if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
+   ecore_evas_directfb_idle_enterer = ecore_idle_enterer_add(_ecore_evas_directfb_idle_enter, NULL);
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+   
+   ecore_evas_event_handlers[0]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_KEY_DOWN, _ecore_evas_directfb_event_key_down, NULL);
+   ecore_evas_event_handlers[1]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_KEY_UP, _ecore_evas_directfb_event_key_up, NULL);
+   ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_BUTTON_DOWN, _ecore_evas_directfb_event_button_down, NULL);
+   ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_BUTTON_UP, _ecore_evas_directfb_event_button_up, NULL);
+   ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_MOTION, _ecore_evas_directfb_event_motion, NULL);
+   ecore_evas_event_handlers[5]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_ENTER, _ecore_evas_directfb_event_enter, NULL);
+   ecore_evas_event_handlers[6]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_LEAVE, _ecore_evas_directfb_event_leave, NULL);
+   ecore_evas_event_handlers[7]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_WHEEL, _ecore_evas_directfb_event_wheel, NULL);
+   ecore_evas_event_handlers[8]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_GOT_FOCUS, _ecore_evas_directfb_event_got_focus, NULL);
+   ecore_evas_event_handlers[9]  = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_LOST_FOCUS, _ecore_evas_directfb_event_lost_focus, NULL);
+   ecore_evas_event_handlers[10]  = NULL;
+   ecore_evas_event_handlers[11]  = NULL;
+   ecore_evas_event_handlers[12]  = NULL;
+   
+   return _ecore_evas_init_count;
+}
+
+/* engine functions */
+/********************/
+       
+static void
+_ecore_evas_directfb_free(Ecore_Evas *ee)
+{
+   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
+   ecore_directfb_window_del(ee->engine.directfb.window);
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);   
+   _ecore_evas_directfb_shutdown();
+   ecore_directfb_shutdown();
+}
+
+static void
+_ecore_evas_directfb_move(Ecore_Evas *ee, int x, int y)
+{
+   ecore_directfb_window_move(ee->engine.directfb.window, x, y);
+}
+
+static void 
+_ecore_evas_directfb_resize(Ecore_Evas *ee, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ecore_directfb_window_resize(ee->engine.directfb.window, w, h);
+   ee->w = w;
+   ee->h = h;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       evas_output_size_set(ee->evas, ee->h, ee->w);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+     }
+   else
+     {
+       evas_output_size_set(ee->evas, ee->w, ee->h);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+     }
+}
+
+static void
+_ecore_evas_directfb_focus_set(Ecore_Evas *ee, int on __UNUSED__)
+{
+   ecore_directfb_window_focus(ee->engine.directfb.window);
+}
+
+static void
+_ecore_evas_directfb_hide(Ecore_Evas *ee)
+{
+   ecore_directfb_window_hide(ee->engine.directfb.window);
+   ee->should_be_visible = 0;
+}
+
+static void
+_ecore_evas_directfb_show(Ecore_Evas *ee)
+{
+   ecore_directfb_window_show(ee->engine.directfb.window);
+   ee->should_be_visible = 1;
+}
+
+static void
+_ecore_evas_directfb_shaped_set(Ecore_Evas *ee, int shaped)
+{
+   if (((ee->shaped) && (shaped)) || ((!ee->shaped) && (!shaped)))
+     return;
+   ee->shaped = shaped;
+   if(ee->shaped)
+     ecore_directfb_window_shaped_set(ee->engine.directfb.window, 1);
+   else
+     ecore_directfb_window_shaped_set(ee->engine.directfb.window, 0);
+   
+}
+
+static void
+_ecore_evas_directfb_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   int x, y;
+   
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       ecore_directfb_window_cursor_show(ee->engine.directfb.window, 1);
+       return;
+       
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+
+   ecore_directfb_window_cursor_show(ee->engine.directfb.window, 0);
+
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,x - ee->prop.cursor.hot.x,y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+}
+
+static void
+_ecore_evas_directfb_fullscreen_set(Ecore_Evas *ee, int on)
+{
+   Evas_Engine_Info_DirectFB *einfo;
+   int w;
+   int h;
+   int resized = 0;
+   
+   if (((ee->prop.fullscreen) && (on)) || ((!ee->prop.fullscreen) && (!on))) 
+     return;
+   
+   if (on)
+     ecore_directfb_window_fullscreen_set(ee->engine.directfb.window, 1);
+   else
+     ecore_directfb_window_fullscreen_set(ee->engine.directfb.window, 0);
+   /* set the new size of the evas */
+   ecore_directfb_window_size_get(ee->engine.directfb.window, &w, &h);
+   if( (ee->w != w) || (ee->h != h))
+     {
+       resized = 1;
+       ee->w = w;
+       ee->h = h;
+       if ((ee->rotation == 90) || (ee->rotation == 270))
+         {
+            evas_output_size_set(ee->evas, ee->h, ee->w);
+            evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+         }
+       else
+         {
+            evas_output_size_set(ee->evas, ee->w, ee->h);
+            evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+         }
+     }
+   einfo = (Evas_Engine_Info_DirectFB *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       einfo->info.surface = ee->engine.directfb.window->surface;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   ee->prop.fullscreen = on;
+   if (resized)
+     {
+       if(ee->func.fn_resize) ee->func.fn_resize(ee);
+     }
+}
+#endif
+
+static void *
+_ecore_evas_directfb_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+   return ee->engine.directfb.window;
+#else
+   return 0;
+#endif
+}
+
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+static const Ecore_Evas_Engine_Func _ecore_directfb_engine_func =
+{
+   _ecore_evas_directfb_free,  /* free an ecore_evas */
+     NULL,                             /* cb resize */
+     NULL,                             /* cb move */
+     NULL,                             /* cb show */
+     NULL,                             /* cb hide */
+     NULL,                             /* cb delete request */
+     NULL,                             /* cb destroy */
+     NULL,                             /* cb focus in */
+     NULL,                             /* cb focus out */
+     NULL,                              /* cb sticky */
+     NULL,                              /* cb unsticky */
+     NULL,                             /* cb mouse in */
+     NULL,                             /* cb mouse out */
+     NULL,                             /* cb pre render */
+     NULL,                             /* cb post render */
+     _ecore_evas_directfb_move,                /* move */
+     NULL,                              /* managed move */
+     _ecore_evas_directfb_resize,      /* resize */
+     NULL,                             /* move resize */
+     NULL,//_ecore_evas_directfb_rotation_set,/* rotation */
+     _ecore_evas_directfb_shaped_set,   /* shaped */
+     _ecore_evas_directfb_show,                /* show */
+     _ecore_evas_directfb_hide,                /* hide */
+     NULL,                             /* raise */
+     NULL,                             /* lower */
+     NULL,                             /* activate */
+     NULL,                             /* title set */
+     NULL,                             /* name class set */
+     NULL,                             /* size min */
+     NULL,                             /* size max */
+     NULL,                             /* size base */
+     NULL,                             /* size step */
+     _ecore_evas_directfb_object_cursor_set, /* set cursor to an evas object */
+     NULL,                             /* layer set */
+     _ecore_evas_directfb_focus_set,   /* focus */
+     NULL,                             /* iconified */
+     NULL,                             /* borderless */
+     NULL,                             /* override */
+     NULL,                             /* maximized */
+     _ecore_evas_directfb_fullscreen_set,/* fullscreen */
+     NULL,                             /* avoid damage */
+     NULL,                             /* withdrawn */
+     NULL,                             /* sticky */
+     NULL,                              /* ignore events */
+     NULL,                              /* alpha */
+     _ecore_evas_directfb_window_get    /* window_get */
+};
+#endif
+
+/* api */
+/*******/
+
+Ecore_DirectFB_Window *
+ecore_evas_directfb_window_get(Ecore_Evas *ee)
+{
+   return (Ecore_DirectFB_Window *) _ecore_evas_directfb_window_get(ee);
+}
+
+EAPI Ecore_Evas *
+ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+   Evas_Engine_Info_DirectFB *einfo;
+   Ecore_Evas *ee;
+   Ecore_DirectFB_Window *window;
+   int rmethod;
+   
+   rmethod = evas_render_method_lookup("directfb");
+   if (!rmethod) return NULL;
+   if (!ecore_directfb_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+   
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+   _ecore_evas_directfb_init();
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_directfb_engine_func;
+   
+   ee->driver = "directfb";
+   if (disp_name) ee->name = strdup(disp_name);
+   
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   
+   ee->rotation = 0;
+   ee->visible = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+   ee->prop.layer = 1; 
+   ee->prop.fullscreen = 0;
+   
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+   einfo = (Evas_Engine_Info_DirectFB *)evas_engine_info_get(ee->evas);
+   
+   window = ecore_directfb_window_new(x,y,w,h);
+   ee->engine.directfb.window = window;
+   if (einfo)
+     {
+       einfo->info.dfb = ecore_directfb_interface_get();
+       einfo->info.surface = window->surface;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
+   
+   return ee;
+#else
+   disp_name = NULL;
+   windowed = x = y = w = h = 0;
+   return NULL;
+#endif   
+}
diff --git a/src/lib/ecore_evas/ecore_evas_fb.c b/src/lib/ecore_evas/ecore_evas_fb.c
new file mode 100644 (file)
index 0000000..f29eaad
--- /dev/null
@@ -0,0 +1,684 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "config.h"
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+#ifdef BUILD_ECORE_EVAS_FB
+#include "Ecore_Fb.h"
+#include "ecore_fb_private.h"
+#endif
+
+#ifdef BUILD_ECORE_EVAS_FB
+static int _ecore_evas_init_count = 0;
+
+static int _ecore_evas_fps_debug = 0;
+static char *ecore_evas_default_display = "0";
+static Ecore_List *ecore_evas_input_devices = NULL;
+static Ecore_Evas *ecore_evases = NULL;
+static Ecore_Event_Handler *ecore_evas_event_handlers[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
+static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
+
+static void
+_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   int fbw, fbh;
+   
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   ecore_fb_size_get(&fbw, &fbh);
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+        if (ee->rotation == 0)
+         evas_object_move(ee->prop.cursor.object,
+                          x - ee->prop.cursor.hot.x,
+                          y - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 90)
+         evas_object_move(ee->prop.cursor.object,
+                          (fbh - ee->h) + ee->h - y - 1 - ee->prop.cursor.hot.x,
+                          x - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 180)
+         evas_object_move(ee->prop.cursor.object,
+                          (fbw - ee->w) + ee->w - x - 1 - ee->prop.cursor.hot.x,
+                          (fbh - ee->h) + ee->h - y - 1 - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 270)
+         evas_object_move(ee->prop.cursor.object,
+                          y - ee->prop.cursor.hot.x,
+                          (fbw - ee->w) + ee->w - x - 1 - ee->prop.cursor.hot.y);
+     }
+   if (ee->rotation == 0)
+     evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+   else if (ee->rotation == 90)
+     evas_event_feed_mouse_move(ee->evas, (fbh - ee->h) + ee->h - y - 1, x, timestamp, NULL);
+   else if (ee->rotation == 180)
+     evas_event_feed_mouse_move(ee->evas, (fbw - ee->w) + ee->w - x - 1, (fbh - ee->h) + ee->h - y - 1, timestamp, NULL);
+   else if (ee->rotation == 270)
+     evas_event_feed_mouse_move(ee->evas, y, (fbw - ee->w) + ee->w - x - 1, timestamp, NULL);   
+}
+
+static Ecore_Evas *
+_ecore_evas_fb_match(void)
+{
+   return ecore_evases;
+}
+
+static void
+_ecore_evas_fb_lose(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   Ecore_Fb_Input_Device *dev;
+
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+       
+       ee = (Ecore_Evas *)l;
+       ee->visible = 0;
+     }
+   if (ecore_evas_input_devices)
+     {
+       ecore_list_first_goto(ecore_evas_input_devices);
+       while ((dev = ecore_list_next(ecore_evas_input_devices)))
+         ecore_fb_input_device_listen(dev, 0);
+     }
+}
+
+static void
+_ecore_evas_fb_gain(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   Ecore_Fb_Input_Device *dev;
+
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+       
+       ee = (Ecore_Evas *)l;
+       ee->visible = 1;
+       if ((ee->rotation == 90) || (ee->rotation == 270))
+         evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+       else
+         evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     }
+   if (ecore_evas_input_devices)
+     {
+       ecore_list_first_goto(ecore_evas_input_devices);
+       while ((dev = ecore_list_next(ecore_evas_input_devices)))
+         ecore_fb_input_device_listen(dev, 1);
+     }
+}
+
+static int
+_ecore_evas_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Key_Down *e;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Key_Up *e;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Mouse_Button_Down *e;
+   Evas_Button_Flags flags = EVAS_BUTTON_NONE;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_down(ee->evas, e->button, flags, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Mouse_Button_Up *e;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
+   evas_event_feed_mouse_up(ee->evas, e->button, EVAS_BUTTON_NONE, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Mouse_Move *e;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_Fb_Event_Mouse_Wheel *e;
+   
+   e = event;
+   ee = _ecore_evas_fb_match();
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   double t1 = 0.;
+   double t2 = 0.;
+
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+       
+       ee = (Ecore_Evas *)l;
+       if (ee->visible)
+         {
+            Evas_List *updates;
+            
+#ifdef BUILD_ECORE_EVAS_BUFFER
+            Evas_List *ll;
+#endif
+            
+            if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+#ifdef BUILD_ECORE_EVAS_BUFFER
+            for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+              {
+                 Ecore_Evas *ee2;
+                 
+                 ee2 = ll->data;
+                 if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+                 _ecore_evas_buffer_render(ee2);
+                 if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+              }
+#endif      
+            updates = evas_render_updates(ee->evas);
+            if (updates)
+              {
+                 evas_render_updates_free(updates);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+            if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+         }
+       else
+         evas_norender(ee->evas);
+     }
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+       _ecore_evas_fps_debug_rendertime_add(t2 - t1);
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_fb_init(int w, int h)
+{
+   Ecore_Fb_Input_Device *device;
+   Ecore_Fb_Input_Device_Cap caps;
+   int mouse_handled = 0;
+   int keyboard_handled = 0;
+   
+   DIR *input_dir;
+   struct dirent *input_entry;
+   
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+   
+   if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+   /* register all input devices */
+   input_dir = opendir("/dev/input/");
+   if (!input_dir) return _ecore_evas_init_count;
+   
+   ecore_evas_input_devices = ecore_list_new();
+   while ((input_entry = readdir(input_dir)))
+     {
+       char device_path[256];
+       
+       if (strncmp(input_entry->d_name, "event", 5) != 0)
+         continue;
+       
+       snprintf(device_path, 256, "/dev/input/%s", input_entry->d_name);
+       if (!(device = ecore_fb_input_device_open(device_path)))
+         continue;
+       
+       caps = ecore_fb_input_device_cap_get(device);
+
+       if (ecore_evas_input_devices)
+         {
+            /* Mouse */
+            if (caps & ECORE_FB_INPUT_DEVICE_CAP_RELATIVE)
+              {
+                 ecore_fb_input_device_axis_size_set(device, w, h);
+                 ecore_fb_input_device_listen(device,1);
+                 ecore_list_append(ecore_evas_input_devices, device);
+                 if (!mouse_handled)
+                   {
+                      ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_event_mouse_button_down, NULL);
+                      ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, _ecore_evas_event_mouse_button_up, NULL);
+                      ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_MOVE, _ecore_evas_event_mouse_move, NULL);
+                      ecore_evas_event_handlers[5]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_WHEEL, _ecore_evas_event_mouse_wheel, NULL);
+                      mouse_handled = 1;
+                   }
+              }
+            /* Keyboard */
+            else if ((caps & ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS) && !(caps & ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE))
+              {
+                 ecore_fb_input_device_listen(device,1);
+                 ecore_list_append(ecore_evas_input_devices, device);
+                 if (!keyboard_handled)
+                   {
+                      ecore_evas_event_handlers[0]  = ecore_event_handler_add(ECORE_FB_EVENT_KEY_DOWN, _ecore_evas_event_key_down, NULL);
+                      ecore_evas_event_handlers[1]  = ecore_event_handler_add(ECORE_FB_EVENT_KEY_UP, _ecore_evas_event_key_up, NULL);
+                      keyboard_handled = 1;
+                   }
+              }
+         }
+     }
+   if (!mouse_handled)
+     {
+       if (ecore_fb_ts_init())
+         {
+            ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_event_mouse_button_down, NULL);
+            ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, _ecore_evas_event_mouse_button_up, NULL);
+            ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_FB_EVENT_MOUSE_MOVE, _ecore_evas_event_mouse_move, NULL);
+            mouse_handled = 1;
+         }
+     }
+   return _ecore_evas_init_count;
+}
+
+static void
+_ecore_evas_fb_free(Ecore_Evas *ee)
+{
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);   
+   _ecore_evas_fb_shutdown();
+   ecore_fb_shutdown();
+}
+
+static void
+_ecore_evas_resize(Ecore_Evas *ee, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       evas_output_size_set(ee->evas, ee->h, ee->w);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+     }
+   else
+     {
+       evas_output_size_set(ee->evas, ee->w, ee->h);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     }
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);     
+}
+
+static void
+_ecore_evas_move_resize(Ecore_Evas *ee, int x __UNUSED__, int y __UNUSED__, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     {
+       evas_output_size_set(ee->evas, ee->h, ee->w);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+     }
+   else
+     {
+       evas_output_size_set(ee->evas, ee->w, ee->h);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     }
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);     
+}
+
+static void
+_ecore_evas_rotation_set(Ecore_Evas *ee, int rotation)
+{
+   Evas_Engine_Info_FB *einfo;
+   int rot_dif;
+   
+   if (ee->rotation == rotation) return;
+   einfo = (Evas_Engine_Info_FB *)evas_engine_info_get(ee->evas);
+   if (!einfo) return;
+   rot_dif = ee->rotation - rotation;
+   if (rot_dif < 0) rot_dif = -rot_dif;
+   if (rot_dif != 180)
+     {
+       
+       einfo->info.rotation = rotation;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       if (!ee->prop.fullscreen)
+         {
+            int tmp;
+            
+            tmp = ee->w;
+            ee->w = ee->h;
+            ee->h = tmp;
+         }
+       else
+         {
+            if ((rotation == 0) || (rotation == 180))
+              {
+                 evas_output_size_set(ee->evas, ee->w, ee->h);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+              }
+            else
+              {
+                 evas_output_size_set(ee->evas, ee->h, ee->w);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+              }
+         }
+       ee->rotation = rotation;
+     }
+   else
+     {
+       einfo->info.rotation = rotation;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       ee->rotation = rotation;
+     }
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+   else
+     evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+   _ecore_evas_mouse_move_process(ee, ee->mouse.x, ee->mouse.y, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff));
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+static void
+_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   int x, y;
+   
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       return;
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object, 
+                   x - ee->prop.cursor.hot.x,
+                   y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+}
+
+static void
+_ecore_evas_fullscreen_set(Ecore_Evas *ee, int on)
+{
+   int resized = 0;
+   
+   if (((ee->prop.fullscreen) && (on)) ||
+       ((!ee->prop.fullscreen) && (!on))) return;
+   if (on)
+     {
+       int w, h;
+       
+       ee->engine.fb.real_w = ee->w;
+       ee->engine.fb.real_h = ee->h;
+       w = ee->w;
+       h = ee->h;
+       ecore_fb_size_get(&w, &h);
+       if ((w == 0) && (h == 0))
+         {
+            w = ee->w;
+            h = ee->h;
+         }
+       if ((w != ee->w) || (h != ee->h)) resized = 1;
+       ee->w = w;
+       ee->h = h;
+       evas_output_size_set(ee->evas, ee->w, ee->h);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     }
+   else
+     {
+       if ((ee->engine.fb.real_w != ee->w) || (ee->engine.fb.real_h != ee->h)) resized = 1;
+       ee->w = ee->engine.fb.real_w;
+       ee->h = ee->engine.fb.real_h;
+       evas_output_size_set(ee->evas, ee->w, ee->h);
+       evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+     }
+   ee->prop.fullscreen = on;
+   /* rescale the input device area */
+   if (ecore_evas_input_devices)
+     {
+       Ecore_Fb_Input_Device *dev;
+       
+       ecore_list_first_goto(ecore_evas_input_devices);
+       while ((dev = ecore_list_next(ecore_evas_input_devices)))
+         ecore_fb_input_device_axis_size_set(dev, ee->w, ee->h);
+     }
+   if (resized)
+     {
+       if (ee->func.fn_resize) ee->func.fn_resize(ee); 
+     }
+}
+    
+int
+_ecore_evas_fb_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+   
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+       for (i = 0; i < 5; i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_idle_enterer);
+       ecore_evas_idle_enterer = NULL;
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+       ecore_fb_ts_shutdown();
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+static const Ecore_Evas_Engine_Func _ecore_fb_engine_func =
+{
+   _ecore_evas_fb_free,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_resize,
+     _ecore_evas_move_resize,
+     _ecore_evas_rotation_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_object_cursor_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_fullscreen_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL
+};
+#endif
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_fb_new(char *disp_name, int rotation, int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_FB
+   Evas_Engine_Info_FB *einfo;
+   Ecore_Evas *ee;
+
+   int rmethod;
+
+   if (!disp_name)
+   disp_name = ecore_evas_default_display;
+
+   rmethod = evas_render_method_lookup("fb");
+   if (!rmethod) return NULL;
+   
+   if (!ecore_fb_init(disp_name)) return NULL;
+   ecore_fb_callback_gain_set(_ecore_evas_fb_gain, NULL);
+   ecore_fb_callback_lose_set(_ecore_evas_fb_lose, NULL);
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+   
+   _ecore_evas_fb_init(w, h);
+   
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_fb_engine_func;
+   
+   ee->driver = "fb";
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->rotation = rotation;
+   ee->visible = 1;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
+   ee->prop.layer = 0;
+   ee->prop.focused = 1;
+   ee->prop.borderless = 1;
+   ee->prop.override = 1;
+   ee->prop.maximized = 1;
+   ee->prop.fullscreen = 0;
+   ee->prop.withdrawn = 0;
+   ee->prop.sticky = 0;
+   
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+
+   if ((rotation == 90) || (rotation == 270))
+     {
+       evas_output_size_set(ee->evas, h, w);
+       evas_output_viewport_set(ee->evas, 0, 0, h, w);
+     }
+   else
+     {
+       evas_output_size_set(ee->evas, w, h);
+       evas_output_viewport_set(ee->evas, 0, 0, w, h);
+     }
+
+   einfo = (Evas_Engine_Info_FB *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       einfo->info.virtual_terminal = 0;
+       einfo->info.device_number = strtol(disp_name, NULL, 10);
+       einfo->info.device_number = 0;
+       einfo->info.refresh = 0;
+       einfo->info.rotation = ee->rotation;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+   
+   evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   return ee;
+#else
+   disp_name = NULL;
+   rotation = w = h = 0;
+   return NULL;
+#endif   
+}
diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h
new file mode 100644 (file)
index 0000000..2fd475a
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef _ECORE_EVAS_PRIVATE_H
+#define _ECORE_EVAS_PRIVATE_H
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore_Data.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#endif
+
+#include <Evas.h>
+
+#define ECORE_MAGIC_EVAS 0x76543211
+
+#ifndef BUILD_ECORE_DIRECTFB
+# undef BUILD_ECORE_EVAS_DIRECTFB
+#endif
+
+#ifdef BUILD_ECORE_EVAS_X11
+# include "Ecore_X.h"
+# ifdef HAVE_ECORE_X_XCB
+#  include <xcb/xcb.h>
+#  ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+#   include <Evas_Engine_Software_Xcb.h>
+#  endif
+#  ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+#   include <xcb/render.h>
+#   include <Evas_Engine_XRender_Xcb.h>
+#  endif
+# endif
+# ifdef HAVE_ECORE_X_XLIB
+#  include <X11/Xlib.h>
+#  include <X11/Xutil.h>
+#  ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
+#   include <Evas_Engine_Software_X11.h>
+#  endif
+#  ifdef BUILD_ECORE_EVAS_XRENDER_X11
+#   include <X11/extensions/Xrender.h>
+#   include <Evas_Engine_XRender_X11.h>
+#  endif
+#  ifdef BUILD_ECORE_EVAS_OPENGL_X11
+#    include <Evas_Engine_GL_X11.h>
+#  endif
+#  ifdef BUILD_ECORE_EVAS_SOFTWARE_16_X11
+#   include <Evas_Engine_Software_16_X11.h>
+#  endif
+# endif
+#endif
+
+#ifdef BUILD_ECORE_EVAS_FB
+# include <Evas_Engine_FB.h>
+#endif
+
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+# include <Evas_Engine_DirectFB.h>
+# include "Ecore_DirectFB.h"
+#endif
+
+#ifdef BUILD_ECORE_EVAS_BUFFER
+# include <Evas_Engine_Buffer.h>
+#endif
+
+#ifdef BUILD_ECORE_EVAS_WIN32
+# include "Ecore_Win32.h"
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
+#  include <Evas_Engine_Software_DDraw.h>
+# endif
+# ifdef BUILD_ECORE_EVAS_DIRECT3D
+#  include <Evas_Engine_Direct3D.h>
+# endif
+# ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
+#  include <Evas_Engine_GL_Glew.h>
+# endif
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DDRAW
+#  include <Evas_Engine_Software_16_DDraw.h>
+# endif
+#endif
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+# include "Ecore_WinCE.h"
+# include <Evas_Engine_Software_16_WinCE.h>
+#endif
+
+
+#define IDLE_FLUSH_TIME 0.5
+
+typedef struct _Ecore_Evas             Ecore_Evas;
+typedef struct _Ecore_Evas_Engine      Ecore_Evas_Engine;
+typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func;
+
+struct _Ecore_Evas_Engine_Func
+{
+   void        (*fn_free) (Ecore_Evas *ee);
+   void        (*fn_callback_resize_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_move_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_show_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_hide_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_delete_request_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_destroy_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_focus_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_focus_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_mouse_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_mouse_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_sticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_unsticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_pre_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_callback_post_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
+   void        (*fn_move) (Ecore_Evas *ee, int x, int y);
+   void        (*fn_managed_move) (Ecore_Evas *ee, int x, int y);
+   void        (*fn_resize) (Ecore_Evas *ee, int w, int h);
+   void        (*fn_move_resize) (Ecore_Evas *ee, int x, int y, int w, int h);
+   void        (*fn_rotation_set) (Ecore_Evas *ee, int rot);
+   void        (*fn_shaped_set) (Ecore_Evas *ee, int shaped);
+   void        (*fn_show) (Ecore_Evas *ee);
+   void        (*fn_hide) (Ecore_Evas *ee);
+   void        (*fn_raise) (Ecore_Evas *ee);
+   void        (*fn_lower) (Ecore_Evas *ee);
+   void        (*fn_activate) (Ecore_Evas *ee);
+   void        (*fn_title_set) (Ecore_Evas *ee, const char *t);
+   void        (*fn_name_class_set) (Ecore_Evas *ee, const char *n, const char *c);
+   void        (*fn_size_min_set) (Ecore_Evas *ee, int w, int h);
+   void        (*fn_size_max_set) (Ecore_Evas *ee, int w, int h);
+   void        (*fn_size_base_set) (Ecore_Evas *ee, int w, int h);
+   void        (*fn_size_step_set) (Ecore_Evas *ee, int w, int h);
+   void        (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
+   void        (*fn_layer_set) (Ecore_Evas *ee, int layer);
+   void        (*fn_focus_set) (Ecore_Evas *ee, int on);
+   void        (*fn_iconified_set) (Ecore_Evas *ee, int on);
+   void        (*fn_borderless_set) (Ecore_Evas *ee, int on);
+   void        (*fn_override_set) (Ecore_Evas *ee, int on);
+   void        (*fn_maximized_set) (Ecore_Evas *ee, int on);
+   void        (*fn_fullscreen_set) (Ecore_Evas *ee, int on);
+   void        (*fn_avoid_damage_set) (Ecore_Evas *ee, int on);
+   void        (*fn_withdrawn_set) (Ecore_Evas *ee, int withdrawn);
+   void        (*fn_sticky_set) (Ecore_Evas *ee, int sticky);
+   void        (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
+   void        (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
+   void       *(*fn_window_get) (Ecore_Evas *ee);
+};
+
+struct _Ecore_Evas_Engine
+{
+   Ecore_Evas_Engine_Func *func;
+
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+   struct {
+      Ecore_X_Window win_root;
+      Ecore_X_Window win;
+      Evas_List     *win_extra;
+      Ecore_X_Pixmap pmap;
+      Ecore_X_Pixmap mask;
+      Ecore_X_GC     gc;
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+# warning [XCB] No Region code
+#else
+      Region         damages;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+      int            px, py, pw, ph;
+      unsigned char  direct_resize : 1;
+      unsigned char  using_bg_pixmap : 1;
+      unsigned char  managed : 1;
+      struct {
+          unsigned char modal : 1;
+          unsigned char sticky : 1;
+          unsigned char maximized_v : 1;
+          unsigned char maximized_h : 1;
+          unsigned char shaded : 1;
+          unsigned char skip_taskbar : 1;
+          unsigned char skip_pager : 1;
+          unsigned char fullscreen : 1;
+          unsigned char above : 1;
+          unsigned char below : 1;
+      } state;
+   } x;
+#endif
+#ifdef BUILD_ECORE_EVAS_FB
+   struct {
+      int real_w;
+      int real_h;
+   } fb;
+#endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   struct {
+      void *pixels;
+      Evas_Object *image;
+   } buffer;
+#endif
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+   struct {
+      Ecore_DirectFB_Window *window;
+   } directfb;
+#endif
+#ifdef BUILD_ECORE_EVAS_WIN32
+   struct {
+      Ecore_Win32_Window *parent;
+      Ecore_Win32_Window *window;
+     struct {
+       unsigned char fullscreen : 1;
+     } state;
+   } win32;
+#endif
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   struct {
+      Ecore_WinCE_Window *window;
+   } wince;
+#endif
+
+   Ecore_Timer *idle_flush_timer;
+};
+
+struct _Ecore_Evas
+{
+   Ecore_List  __list_data;
+   ECORE_MAGIC;
+   Evas       *evas;
+   const char *driver;
+   char       *name;
+   int         x, y, w, h;
+   short       rotation;
+   char        shaped  : 1;
+   char        visible : 1;
+   char        draw_ok : 1;
+   char        should_be_visible : 1;
+   char        alpha  : 1;
+
+   Evas_Hash  *data;
+
+   struct {
+      int      x, y;
+   } mouse;
+
+   struct {
+      int      w, h;
+   } expecting_resize;
+
+   struct {
+      char           *title;
+      char           *name;
+      char           *clas;
+      struct {
+        int          w, h;
+      } min,
+       max,
+       base,
+       step;
+      struct {
+        Evas_Object *object;
+        int          layer;
+        struct {
+           int       x, y;
+        } hot;
+      } cursor;
+      int             layer;
+      unsigned char   avoid_damage;
+      char            focused      : 1;
+      char            iconified    : 1;
+      char            borderless   : 1;
+      char            override     : 1;
+      char            maximized    : 1;
+      char            fullscreen   : 1;
+      char            withdrawn    : 1;
+      char            sticky       : 1;
+      char            request_pos  : 1;
+   } prop;
+
+   struct {
+      void          (*fn_resize) (Ecore_Evas *ee);
+      void          (*fn_move) (Ecore_Evas *ee);
+      void          (*fn_show) (Ecore_Evas *ee);
+      void          (*fn_hide) (Ecore_Evas *ee);
+      void          (*fn_delete_request) (Ecore_Evas *ee);
+      void          (*fn_destroy) (Ecore_Evas *ee);
+      void          (*fn_focus_in) (Ecore_Evas *ee);
+      void          (*fn_focus_out) (Ecore_Evas *ee);
+      void          (*fn_sticky) (Ecore_Evas *ee);
+      void          (*fn_unsticky) (Ecore_Evas *ee);
+      void          (*fn_mouse_in) (Ecore_Evas *ee);
+      void          (*fn_mouse_out) (Ecore_Evas *ee);
+      void          (*fn_pre_render) (Ecore_Evas *ee);
+      void          (*fn_post_render) (Ecore_Evas *ee);
+   } func;
+
+   Ecore_Evas_Engine engine;
+   Evas_List *sub_ecore_evas;
+
+   unsigned char ignore_events : 1;
+};
+
+#ifdef BUILD_ECORE_EVAS_X11
+int _ecore_evas_x_shutdown(void);
+#endif
+#ifdef BUILD_ECORE_EVAS_FB
+int _ecore_evas_fb_shutdown(void);
+#endif
+#ifdef BUILD_ECORE_EVAS_BUFFER
+int _ecore_evas_buffer_shutdown(void);
+void _ecore_evas_buffer_render(Ecore_Evas *ee);
+#endif
+#ifdef BUILD_ECORE_EVAS_DIRECTFB
+int _ecore_evas_directfb_shutdown(void);
+#endif
+#ifdef BUILD_ECORE_EVAS_WIN32
+int _ecore_evas_win32_shutdown(void);
+#endif
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+int _ecore_evas_wince_shutdown(void);
+#endif
+
+void _ecore_evas_fps_debug_init(void);
+void _ecore_evas_fps_debug_shutdown(void);
+void _ecore_evas_fps_debug_rendertime_add(double t);
+void _ecore_evas_free(Ecore_Evas *ee);
+void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);
+
+#endif
diff --git a/src/lib/ecore_evas/ecore_evas_sdl.c b/src/lib/ecore_evas/ecore_evas_sdl.c
new file mode 100644 (file)
index 0000000..946f18e
--- /dev/null
@@ -0,0 +1,514 @@
+#include "config.h"
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+#ifdef BUILD_ECORE_EVAS_SDL
+#include "Ecore_Sdl.h"
+#include "Evas_Engine_SDL.h"
+#endif
+
+#ifdef BUILD_ECORE_EVAS_SDL
+
+/* static char *ecore_evas_default_display = "0"; */
+/* static Ecore_List *ecore_evas_input_devices = NULL; */
+
+static int                      _ecore_evas_init_count = 0;
+#ifndef _WIN32
+static int                      _ecore_evas_fps_debug = 0;
+#endif /* _WIN32 */
+static Ecore_Evas               *ecore_evases = NULL;
+static Ecore_Event_Handler      *ecore_evas_event_handlers[10] = {
+   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
+};
+static Ecore_Idle_Enterer       *ecore_evas_idle_enterer = NULL;
+static Ecore_Idler              *ecore_evas_event = NULL;
+
+static const char               *ecore_evas_sdl_default = "EFL SDL";
+
+static void
+_ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+        evas_object_move(ee->prop.cursor.object,
+                         x - ee->prop.cursor.hot.x,
+                         y - ee->prop.cursor.hot.y);
+     }
+   evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+}
+
+static Ecore_Evas *
+_ecore_evas_sdl_match(void)
+{
+   return ecore_evases;
+}
+
+static int
+_ecore_evas_sdl_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Key_Down     *e;
+   Ecore_Evas                   *ee;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1;
+   /* pass on event */
+   evas_event_feed_key_down(ee->evas, e->keyname, NULL, e->keycompose, NULL, e->time, NULL);
+
+   return 0; /* dont pass it on */
+}
+
+static int
+_ecore_evas_sdl_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Key_Up       *e;
+   Ecore_Evas                   *ee;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1;
+   /* pass on event */
+   evas_event_feed_key_up(ee->evas, e->keyname, NULL, e->keycompose, NULL, e->time, NULL);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Mouse_Move *e;
+   Ecore_Evas *ee;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, e->time);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Mouse_Button_Down    *e;
+   Ecore_Evas                           *ee;
+   Evas_Button_Flags                    flags;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+   flags = EVAS_BUTTON_NONE;
+
+   if (!ee) return 1;
+   /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, e->time);
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_down(ee->evas, e->button, flags, e->time, NULL);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Mouse_Button_Up      *e;
+   Ecore_Evas                           *ee;
+   Evas_Button_Flags                    flags;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+   flags = EVAS_BUTTON_NONE;
+
+   if (!ee) return 1;
+   /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, e->time);
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_up(ee->evas, e->button, flags, e->time, NULL);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Mouse_Wheel  *e;
+   Ecore_Evas                   *ee;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1; /* pass on event */
+   _ecore_evas_mouse_move_process(ee, e->x, e->y, e->time);
+   evas_event_feed_mouse_wheel(ee->evas, e->direction, e->wheel, e->time, NULL);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_got_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1;
+   /* pass on event */
+   ee->prop.focused = 1;
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_lost_focus(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1;
+   /* pass on event */
+   ee->prop.focused = 0;
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_video_resize(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Sdl_Event_Video_Resize *e;
+   Ecore_Evas                   *ee;
+
+   e = event;
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1; /* pass on event */
+   evas_output_size_set(ee->evas, e->w, e->h);
+
+   return 0;
+}
+
+static int
+_ecore_evas_sdl_event_video_expose(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
+{
+   Ecore_Evas                   *ee;
+   int                          w;
+   int                          h;
+
+   ee = _ecore_evas_sdl_match();
+
+   if (!ee) return 1;
+   evas_output_size_get(ee->evas, &w, &h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, w, h);
+
+   return 0;
+}
+
+static int
+_ecore_evas_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2  *l;
+   double       t1 = 0.;
+   double       t2 = 0.;
+
+#ifndef _WIN32
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+#endif /* _WIN32 */
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+
+       ee = (Ecore_Evas *)l;
+       if (ee->visible)
+         {
+            Evas_List *updates;
+            
+            if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+
+            updates = evas_render_updates(ee->evas);
+            if (updates)
+              {
+                 evas_render_updates_free(updates);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+             if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+         }
+       else
+         evas_norender(ee->evas);
+     }
+#ifndef _WIN32
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+       _ecore_evas_fps_debug_rendertime_add(t2 - t1);
+     }
+#endif /* _WIN32 */
+   return 1;
+}
+
+static int
+_ecore_evas_sdl_event(void *data)
+{
+   ecore_sdl_feed_events();
+
+   return 1;
+}
+
+static int
+_ecore_evas_sdl_init(int w, int h)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+
+#ifndef _WIN32
+   if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
+#endif /* _WIN32 */
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
+   ecore_evas_event = ecore_timer_add(0.008, _ecore_evas_sdl_event, NULL);
+#ifndef _WIN32
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+#endif /* _WIN32 */
+
+   ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_SDL_EVENT_KEY_DOWN, _ecore_evas_sdl_event_key_down, NULL);
+   ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_SDL_EVENT_KEY_UP, _ecore_evas_sdl_event_key_up, NULL);
+   ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_SDL_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_sdl_event_button_down, NULL);
+   ecore_evas_event_handlers[3] = ecore_event_handler_add(ECORE_SDL_EVENT_MOUSE_BUTTON_UP, _ecore_evas_sdl_event_button_up, NULL);
+   ecore_evas_event_handlers[4] = ecore_event_handler_add(ECORE_SDL_EVENT_MOUSE_MOVE, _ecore_evas_sdl_event_mouse_move, NULL);
+   ecore_evas_event_handlers[5] = ecore_event_handler_add(ECORE_SDL_EVENT_MOUSE_WHEEL, _ecore_evas_sdl_event_mouse_wheel, NULL);
+   ecore_evas_event_handlers[6] = ecore_event_handler_add(ECORE_SDL_EVENT_GOT_FOCUS, _ecore_evas_sdl_event_got_focus, NULL);
+   ecore_evas_event_handlers[7] = ecore_event_handler_add(ECORE_SDL_EVENT_LOST_FOCUS, _ecore_evas_sdl_event_lost_focus, NULL);
+   ecore_evas_event_handlers[8] = ecore_event_handler_add(ECORE_SDL_EVENT_RESIZE, _ecore_evas_sdl_event_video_resize, NULL);
+   ecore_evas_event_handlers[9] = ecore_event_handler_add(ECORE_SDL_EVENT_EXPOSE, _ecore_evas_sdl_event_video_expose, NULL);
+
+   return _ecore_evas_init_count;
+}
+
+static int
+_ecore_evas_sdl_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+        for (i = 0; i < sizeof (ecore_evas_event_handlers) / sizeof (Ecore_Event_Handler*); i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_idle_enterer);
+       ecore_evas_idle_enterer = NULL;
+        ecore_timer_del(ecore_evas_event);
+        ecore_evas_event = NULL;
+#ifndef _WIN32
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+#endif /* _WIN32 */
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+static void
+_ecore_evas_sdl_free(Ecore_Evas *ee)
+{
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   _ecore_evas_sdl_shutdown();
+   ecore_sdl_shutdown();
+}
+
+static void
+_ecore_evas_resize(Ecore_Evas *ee, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+
+   evas_output_size_set(ee->evas, ee->w, ee->h);
+   evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+static void
+_ecore_evas_move_resize(Ecore_Evas *ee, int x __UNUSED__, int y __UNUSED__, int w, int h)
+{
+   if ((w == ee->w) && (h == ee->h)) return;
+   ee->w = w;
+   ee->h = h;
+
+   evas_output_size_set(ee->evas, ee->w, ee->h);
+   evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+   if (ee->func.fn_resize) ee->func.fn_resize(ee);
+}
+
+static void
+_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   int x, y;
+
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       return;
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,
+                   x - ee->prop.cursor.hot.x,
+                   y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+}
+
+static const Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
+{
+   _ecore_evas_sdl_free,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   _ecore_evas_resize,
+   _ecore_evas_move_resize,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   _ecore_evas_object_cursor_set,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   NULL
+};
+#endif
+
+EAPI Ecore_Evas*
+ecore_evas_sdl_new(const char* name, int w, int h, int fullscreen, int hwsurface, int noframe, int alpha)
+{
+#ifdef BUILD_ECORE_EVAS_SDL
+   Evas_Engine_Info_SDL *einfo;
+   Ecore_Evas           *ee;
+   int                  rmethod;
+
+   if (!name)
+     name = ecore_evas_sdl_default;
+
+   rmethod = evas_render_method_lookup("software_sdl");
+   if (!rmethod) return NULL;
+
+   if (!ecore_sdl_init(name)) return NULL;
+
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_sdl_init(w, h);
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_sdl_engine_func;
+
+   ee->driver = "sdl";
+   if (name) ee->name = strdup(name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->visible = 1;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 0;
+   ee->prop.max.h = 0;
+   ee->prop.layer = 0;
+   ee->prop.focused = 1;
+   ee->prop.borderless = 1;
+   ee->prop.override = 1;
+   ee->prop.maximized = 1;
+   ee->prop.fullscreen = fullscreen;
+   ee->prop.withdrawn = 0;
+   ee->prop.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   einfo = (Evas_Engine_Info_SDL*) evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        einfo->info.fullscreen = fullscreen;
+        einfo->info.hwsurface = hwsurface;
+        einfo->info.noframe = noframe;
+        einfo->info.alpha = alpha;
+        evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   return ee;
+#else
+   fprintf(stderr, "OUTCH !\n");
+   return NULL;
+#endif
+}
diff --git a/src/lib/ecore_evas/ecore_evas_win32.c b/src/lib/ecore_evas/ecore_evas_win32.c
new file mode 100644 (file)
index 0000000..b68c524
--- /dev/null
@@ -0,0 +1,1320 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h> /* for NULL */
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#ifdef BUILD_ECORE_EVAS_WIN32
+# include "Ecore_Win32.h"
+# include "ecore_win32_private.h"
+#endif /* BUILD_ECORE_EVAS_WIN32 */
+
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+
+#ifdef BUILD_ECORE_EVAS_WIN32
+
+#define ECORE_EVAS_EVENT_COUNT 14
+
+static int _ecore_evas_init_count = 0;
+static int _ecore_evas_fps_debug  = 0;
+
+static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
+static Ecore_Idle_Enterer  *ecore_evas_idle_enterer = NULL;
+static Ecore_Evas          *ecore_evases = NULL;
+static Evas_Hash           *ecore_evases_hash = NULL;
+
+static int _ecore_evas_win32_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_damage(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_destroy(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_show(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_hide(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_configure(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_win32_event_window_delete_request(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+/* Private functions */
+
+static void
+_ecore_evas_win32_render(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   Evas_List *ll;
+#endif
+
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+     }
+#endif
+   if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+   if (ee->prop.avoid_damage)
+     {
+        Evas_List *updates;
+
+        updates = evas_render_updates(ee->evas);
+        if (updates) evas_render_updates_free(updates);
+     }
+   else if ((ee->visible) ||
+            ((ee->should_be_visible) && (ee->prop.fullscreen)) ||
+            ((ee->should_be_visible) && (ee->prop.override)))
+     {
+        if (ee->shaped)
+          {
+             Evas_List *updates;
+
+             updates = evas_render_updates(ee->evas);
+             if (updates) evas_render_updates_free(updates);
+          }
+        else
+          {
+             Evas_List *updates;
+
+             updates = evas_render_updates(ee->evas);
+             if (updates) evas_render_updates_free(updates);
+          }
+     }
+   else
+     evas_norender(ee->evas);
+   if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+}
+
+static int
+_ecore_evas_win32_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   double       t1 = 0.0;
+   double       t2 = 0.0;
+
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+
+       ee = (Ecore_Evas *)l;
+       _ecore_evas_win32_render(ee);
+     }
+/*    ecore_x_flush(); */
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+/*     _ecore_evas_fps_debug_rendertime_add(t2 - t1); */
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_win32_init(void)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1)
+     return _ecore_evas_init_count;
+
+   if (getenv("ECORE_EVAS_FPS_DEBUG"))
+     _ecore_evas_fps_debug = 1;
+
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_win32_idle_enter, NULL);
+
+   ecore_evas_event_handlers[0]  = ecore_event_handler_add(ECORE_WIN32_EVENT_KEY_DOWN, _ecore_evas_win32_event_key_down, NULL);
+   ecore_evas_event_handlers[1]  = ecore_event_handler_add(ECORE_WIN32_EVENT_KEY_UP, _ecore_evas_win32_event_key_up, NULL);
+   ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_win32_event_mouse_button_down, NULL);
+   ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_BUTTON_UP, _ecore_evas_win32_event_mouse_button_up, NULL);
+   ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_WHEEL, _ecore_evas_win32_event_mouse_wheel, NULL);
+   ecore_evas_event_handlers[5]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_MOVE, _ecore_evas_win32_event_mouse_move, NULL);
+   ecore_evas_event_handlers[6]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_IN, _ecore_evas_win32_event_mouse_in, NULL);
+   ecore_evas_event_handlers[7]  = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_OUT, _ecore_evas_win32_event_mouse_out, NULL);
+   ecore_evas_event_handlers[8]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_DAMAGE, _ecore_evas_win32_event_window_damage, NULL);
+   ecore_evas_event_handlers[9]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_DESTROY, _ecore_evas_win32_event_window_destroy, NULL);
+   ecore_evas_event_handlers[10]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_SHOW, _ecore_evas_win32_event_window_show, NULL);
+   ecore_evas_event_handlers[11]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_HIDE, _ecore_evas_win32_event_window_hide, NULL);
+   ecore_evas_event_handlers[12]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_CONFIGURE, _ecore_evas_win32_event_window_configure, NULL);
+   ecore_evas_event_handlers[13]  = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST, _ecore_evas_win32_event_window_delete_request, NULL);
+
+   return _ecore_evas_init_count;
+}
+
+int
+_ecore_evas_win32_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+       for (i = 0; i < ECORE_EVAS_EVENT_COUNT; i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_idle_enterer);
+       ecore_evas_idle_enterer = NULL;
+     }
+
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+
+   return _ecore_evas_init_count;
+}
+
+static char *
+_ecore_evas_win32_winid_str_get(Ecore_Win32_Window *window)
+{
+   static char  id[9];
+   const char  *vals = "qWeRtYuIoP5-$&<~";
+   unsigned int val;
+
+   val = (unsigned int)window;
+   id[0] = vals[(val >> 28) & 0xf];
+   id[1] = vals[(val >> 24) & 0xf];
+   id[2] = vals[(val >> 20) & 0xf];
+   id[3] = vals[(val >> 16) & 0xf];
+   id[4] = vals[(val >> 12) & 0xf];
+   id[5] = vals[(val >>  8) & 0xf];
+   id[6] = vals[(val >>  4) & 0xf];
+   id[7] = vals[(val      ) & 0xf];
+   id[8] = 0;
+
+   return id;
+}
+
+static Ecore_Evas *
+_ecore_evas_win32_match(Ecore_Win32_Window *window)
+{
+   Ecore_Evas *ee;
+
+   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_win32_winid_str_get(window));
+
+   return ee;
+}
+
+static int
+_ecore_evas_win32_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                 *ee;
+   Ecore_Win32_Event_Key_Down *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->keycompose, NULL, e->time, NULL);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas               *ee;
+   Ecore_Win32_Event_Key_Up *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->keycompose, NULL, e->time, NULL);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                          *ee;
+   Ecore_Win32_Event_Mouse_Button_Down *e;
+   Evas_Button_Flags                    flags = EVAS_BUTTON_NONE;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_down(ee->evas, e->button, flags, e->time, NULL);
+
+   printf (" * ee event button down %f %d %d\n", e->time, e->x, e->y);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                        *ee;
+   Ecore_Win32_Event_Mouse_Button_Up *e;
+   Evas_Button_Flags                  flags = EVAS_BUTTON_NONE;
+
+   printf (" * ee event button up 0 \n");
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_up(ee->evas, e->button, flags, e->time, NULL);
+
+   printf (" * ee event button up\n");
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                    *ee;
+   Ecore_Win32_Event_Mouse_Wheel *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, e->time, NULL);
+
+   return 1;
+}
+
+static void
+_ecore_evas_win32_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+       if (ee->rotation == 0)
+         evas_object_move(ee->prop.cursor.object,
+                          x - ee->prop.cursor.hot.x,
+                          y - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 90)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->h - y - 1 - ee->prop.cursor.hot.x,
+                          x - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 180)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->w - x - 1 - ee->prop.cursor.hot.x,
+                          ee->h - y - 1 - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 270)
+         evas_object_move(ee->prop.cursor.object,
+                          y - ee->prop.cursor.hot.x,
+                          ee->w - x - 1 - ee->prop.cursor.hot.y);
+     }
+   if (ee->rotation == 0)
+     evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+   else if (ee->rotation == 90)
+     evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, timestamp, NULL);
+   else if (ee->rotation == 180)
+     evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, timestamp, NULL);
+   else if (ee->rotation == 270)
+     evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, timestamp, NULL);
+}
+
+static int
+_ecore_evas_win32_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+   Ecore_Win32_Event_Mouse_Move *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   _ecore_evas_win32_mouse_move_process(ee, e->x, e->y, e->time);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                 *ee;
+   Ecore_Win32_Event_Mouse_In *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+
+   if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee);
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_mouse_in(ee->evas, e->time, NULL);
+   _ecore_evas_win32_mouse_move_process(ee, e->x, e->y, e->time);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                  *ee;
+   Ecore_Win32_Event_Mouse_Out *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   _ecore_evas_win32_mouse_move_process(ee, e->x, e->y, e->time);
+
+   evas_event_feed_mouse_out(ee->evas, e->time, NULL);
+   if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
+   if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_damage(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                      *ee;
+   Ecore_Win32_Event_Window_Damage *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+
+   if (ee->prop.avoid_damage)
+     {
+#ifdef _MSC_VER
+# pragma message ("[ECORE] [WIN32] No Region code")
+#else
+# warning [ECORE] [WIN32] No Region code
+#endif /* ! _MSC_VER */
+     }
+   else
+     {
+       printf (" * ee window event damage\n");
+        if (ee->rotation == 0)
+          evas_damage_rectangle_add(ee->evas,
+                                    e->x,
+                                    e->y,
+                                    e->width,
+                                    e->height);
+        else if (ee->rotation == 90)
+          evas_damage_rectangle_add(ee->evas,
+                                    ee->h - e->y - e->height,
+                                    e->x,
+                                    e->height,
+                                    e->width);
+        else if (ee->rotation == 180)
+          evas_damage_rectangle_add(ee->evas,
+                                    ee->w - e->x - e->width,
+                                    ee->h - e->y - e->height,
+                                    e->width,
+                                    e->height);
+        else if (ee->rotation == 270)
+          evas_damage_rectangle_add(ee->evas,
+                                    e->y,
+                                    ee->w - e->x - e->width,
+                                    e->height,
+                                    e->width);
+     }
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_destroy(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                       *ee;
+   Ecore_Win32_Event_Window_Destroy *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   if (ee->func.fn_destroy) ee->func.fn_destroy(ee);
+   ecore_evas_free(ee);
+
+   printf (" * ee event destroy\n");
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_show(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                    *ee;
+   Ecore_Win32_Event_Window_Show *e;
+
+   printf (" * ee window event show\n");
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   if (ee->visible) return 0; /* dont pass it on */
+   ee->visible = 1;
+   if (ee->func.fn_show) ee->func.fn_show(ee);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_hide(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                    *ee;
+   Ecore_Win32_Event_Window_Hide *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   if (!ee->visible) return 0; /* dont pass it on */
+   ee->visible = 0;
+   if (ee->func.fn_hide) ee->func.fn_hide(ee);
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_configure(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                         *ee;
+   Ecore_Win32_Event_Window_Configure *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+
+   if ((ee->x != e->x) || (ee->y != e->y))
+     {
+        ee->x = e->x;
+        ee->y = e->y;
+        if (ee->func.fn_move) ee->func.fn_move(ee);
+     }
+
+   if ((ee->w != e->width) || (ee->h != e->height))
+     {
+       printf (" * ee resize : 1\n");
+        ee->w = e->width;
+        ee->h = e->height;
+        if ((ee->rotation == 90) || (ee->rotation == 270))
+          {
+             evas_output_size_set(ee->evas, ee->h, ee->w);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+          }
+        else
+          {
+            printf (" * ee resize : 2\n");
+             evas_output_size_set(ee->evas, ee->w, ee->h);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+          }
+        if (ee->prop.avoid_damage)
+          {
+             ecore_evas_avoid_damage_set(ee, 0);
+             ecore_evas_avoid_damage_set(ee, 1);
+          }
+        /* FIXME: to do... */
+/*     if (ee->shaped) */
+/*       _ecore_evas_x_resize_shape(ee); */
+        if ((ee->expecting_resize.w > 0) &&
+            (ee->expecting_resize.h > 0))
+          {
+            printf (" * ee resize : 3\n");
+             if ((ee->expecting_resize.w == ee->w) &&
+                 (ee->expecting_resize.h == ee->h))
+               _ecore_evas_win32_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                                    ecore_win32_current_time_get());
+             ee->expecting_resize.w = 0;
+             ee->expecting_resize.h = 0;
+          }
+        printf (" * ee resize : 4\n");
+        if (ee->func.fn_resize) ee->func.fn_resize(ee);
+     }
+
+   return 1;
+}
+
+static int
+_ecore_evas_win32_event_window_delete_request(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                              *ee;
+   Ecore_Win32_Event_Window_Delete_Request *e;
+
+   e = event;
+   ee = _ecore_evas_win32_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.win32.window) return 1;
+   if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee);
+
+   printf (" * ee event delete\n");
+   return 1;
+}
+
+
+/* Ecore_Evas interface */
+
+static void
+_ecore_evas_win32_free(Ecore_Evas *ee)
+{
+   ecore_win32_window_del(ee->engine.win32.window);
+   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   _ecore_evas_win32_shutdown();
+   ecore_win32_shutdown();
+}
+
+static void
+_ecore_evas_win32_callback_delete_request_set(Ecore_Evas *ee,
+                                              void (*func) (Ecore_Evas *ee))
+{
+   ee->func.fn_delete_request = func;
+}
+
+static void
+_ecore_evas_win32_move(Ecore_Evas *ee, int x, int y)
+{
+   if ((x != ee->x) || (y != ee->y))
+     {
+        ee->x = x;
+        ee->y = y;
+        ecore_win32_window_move(ee->engine.win32.window, x, y);
+        if (ee->func.fn_move) ee->func.fn_move(ee);
+     }
+}
+
+static void
+_ecore_evas_win32_resize(Ecore_Evas *ee, int width, int height)
+{
+  printf (" * _ecore_evas_win32_resize %d %d\n", width, height);
+   if ((ee->w != width) || (ee->h != height))
+     {
+        ee->w = width;
+        ee->h = height;
+        ecore_win32_window_resize(ee->engine.win32.window, width, height);
+        if ((ee->rotation == 90) || (ee->rotation == 270))
+          {
+             evas_output_size_set(ee->evas, ee->h, ee->w);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+          }
+        else
+          {
+             evas_output_size_set(ee->evas, ee->w, ee->h);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+          }
+        /* FIXME: damage and shape */
+
+        if (ee->func.fn_resize) ee->func.fn_resize(ee);
+     }
+}
+
+static void
+_ecore_evas_win32_move_resize(Ecore_Evas *ee, int x, int y, int width, int height)
+{
+  printf (" * _ecore_evas_win32_resize\n");
+   if ((ee->w != width) || (ee->h != height) || (x != ee->x) || (y != ee->y))
+     {
+        int change_size = 0;
+        int change_pos = 0;
+
+        if ((ee->w != width) || (ee->h != height)) change_size = 1;
+        if ((x != ee->x) || (y != ee->y)) change_pos = 1;
+
+        ee->x = x;
+        ee->y = y;
+        ee->w = width;
+        ee->h = height;
+        ecore_win32_window_move_resize(ee->engine.win32.window, x, y, width, height);
+        if ((ee->rotation == 90) || (ee->rotation == 270))
+          {
+             evas_output_size_set(ee->evas, ee->h, ee->w);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+          }
+        else
+          {
+             evas_output_size_set(ee->evas, ee->w, ee->h);
+             evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+          }
+        /* FIXME: damage and shape */
+        if (change_pos)
+          {
+             if (ee->func.fn_move) ee->func.fn_move(ee);
+          }
+        if (change_size)
+          {
+             if (ee->func.fn_resize) ee->func.fn_resize(ee);
+          }
+     }
+}
+
+static void
+_ecore_evas_win32_rotation_set(Ecore_Evas *ee, int rotation)
+{
+   int rot_dif;
+
+   if (ee->rotation == rotation) return;
+   rot_dif = ee->rotation - rotation;
+   if (rot_dif < 0) rot_dif = -rot_dif;
+
+   if (!strcmp(ee->driver, "software_ddraw"))
+     {
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
+       Evas_Engine_Info_Software_DDraw *einfo;
+
+       einfo = (Evas_Engine_Info_Software_DDraw *)evas_engine_info_get(ee->evas);
+       if (!einfo) return;
+       if (rot_dif != 180)
+         {
+            int minw, minh, maxw, maxh, basew, baseh, stepw, steph;
+
+            einfo->info.rotation = rotation;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            if (!ee->prop.fullscreen)
+              {
+                 ecore_win32_window_resize(ee->engine.win32.window, ee->h, ee->w);
+                 ee->expecting_resize.w = ee->h;
+                 ee->expecting_resize.h = ee->w;
+              }
+            else
+              {
+                 int w, h;
+
+                 ecore_win32_window_size_get(ee->engine.win32.window, &w, &h);
+                 ecore_win32_window_resize(ee->engine.win32.window, h, w);
+                 if ((rotation == 0) || (rotation == 180))
+                   {
+                      evas_output_size_set(ee->evas, ee->w, ee->h);
+                      evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+                   }
+                 else
+                   {
+                      evas_output_size_set(ee->evas, ee->h, ee->w);
+                      evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+                   }
+                 if (ee->func.fn_resize) ee->func.fn_resize(ee);
+              }
+            ecore_evas_size_min_get(ee, &minw, &minh);
+            ecore_evas_size_max_get(ee, &maxw, &maxh);
+            ecore_evas_size_base_get(ee, &basew, &baseh);
+            ecore_evas_size_step_get(ee, &stepw, &steph);
+            ee->rotation = rotation;
+            ecore_evas_size_min_set(ee, minh, minw);
+            ecore_evas_size_max_set(ee, maxh, maxw);
+            ecore_evas_size_base_set(ee, baseh, basew);
+            ecore_evas_size_step_set(ee, steph, stepw);
+            _ecore_evas_win32_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                                  ecore_win32_current_time_get());
+         }
+       else
+         {
+            einfo->info.rotation = rotation;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            ee->rotation = rotation;
+            _ecore_evas_win32_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                                  ecore_win32_current_time_get());
+            if (ee->func.fn_resize) ee->func.fn_resize(ee);
+         }
+       if ((ee->rotation == 90) || (ee->rotation == 270))
+         evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+       else
+         evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_DDRAW */
+     }
+}
+
+static void
+_ecore_evas_win32_show(Ecore_Evas *ee)
+{
+  printf (" * ee window show\n");
+   ee->should_be_visible = 1;
+   if (ee->prop.avoid_damage)
+     _ecore_evas_win32_render(ee);
+   ecore_win32_window_show(ee->engine.win32.window);
+/*    if (ee->prop.fullscreen) */
+/*      ecore_win32_window_focus(ee->engine.win32.window); */
+}
+
+static void
+_ecore_evas_win32_hide(Ecore_Evas *ee)
+{
+   ecore_win32_window_hide(ee->engine.win32.window);
+   ee->should_be_visible = 0;
+}
+
+static void
+_ecore_evas_win32_raise(Ecore_Evas *ee)
+{
+   if (!ee->prop.fullscreen)
+     ecore_win32_window_raise(ee->engine.win32.window);
+   else
+     ecore_win32_window_raise(ee->engine.win32.window);
+}
+
+static void
+_ecore_evas_win32_lower(Ecore_Evas *ee)
+{
+   if (!ee->prop.fullscreen)
+     ecore_win32_window_lower(ee->engine.win32.window);
+   else
+     ecore_win32_window_lower(ee->engine.win32.window);
+}
+
+static void
+_ecore_evas_win32_activate(Ecore_Evas *ee)
+{
+   ecore_win32_window_focus_set(ee->engine.win32.window);
+}
+
+static void
+_ecore_evas_win32_title_set(Ecore_Evas *ee, const char *title)
+{
+   if (ee->prop.title) free(ee->prop.title);
+   ee->prop.title = NULL;
+   if (title) ee->prop.title = strdup(title);
+   ecore_win32_window_title_set(ee->engine.win32.window, ee->prop.title);
+}
+
+static void
+_ecore_evas_win32_size_min_set(Ecore_Evas *ee, int width, int height)
+{
+   if (width < 0) width = 0;
+   if (height < 0) height = 0;
+   if ((ee->prop.min.w == width) && (ee->prop.min.h == height)) return;
+   ee->prop.min.w = width;
+   ee->prop.min.h = height;
+   ecore_win32_window_size_min_set(ee->engine.win32.window, width, height);
+}
+
+static void
+_ecore_evas_win32_size_max_set(Ecore_Evas *ee, int width, int height)
+{
+   if (width < 0) width = 0;
+   if (height < 0) height = 0;
+   if ((ee->prop.max.w == width) && (ee->prop.max.h == height)) return;
+   ee->prop.max.w = width;
+   ee->prop.max.h = height;
+   ecore_win32_window_size_max_set(ee->engine.win32.window, width, height);
+}
+
+static void
+_ecore_evas_win32_size_base_set(Ecore_Evas *ee, int width, int height)
+{
+   if (width < 0) width = 0;
+   if (height < 0) height = 0;
+   if ((ee->prop.base.w == width) && (ee->prop.base.h == height)) return;
+   ee->prop.base.w = width;
+   ee->prop.base.h = height;
+   ecore_win32_window_size_base_set(ee->engine.win32.window, width, height);
+}
+
+static void
+_ecore_evas_win32_size_step_set(Ecore_Evas *ee, int width, int height)
+{
+   if (width < 1) width = 1;
+   if (height < 1) height = 1;
+   if ((ee->prop.step.w == width) && (ee->prop.step.h == height)) return;
+   ee->prop.step.w = width;
+   ee->prop.step.h = height;
+   ecore_win32_window_size_step_set(ee->engine.win32.window, width, height);
+}
+
+static void
+_ecore_evas_win32_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+#if 0
+   int x, y;
+
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       ecore_win32_window_cursor_show(ee->engine.win32.window, 1);
+       return;
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+
+   ecore_win32_window_cursor_show(ee->engine.win32.window, 0);
+
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,
+                   x - ee->prop.cursor.hot.x,
+                   y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+#endif
+}
+
+static void
+_ecore_evas_win32_focus_set(Ecore_Evas *ee, int on __UNUSED__)
+{
+   ecore_win32_window_focus_set(ee->engine.win32.window);
+}
+
+static void
+_ecore_evas_win32_iconified_set(Ecore_Evas *ee, int on)
+{
+/*    if (((ee->prop.borderless) && (on)) || */
+/*        ((!ee->prop.borderless) && (!on))) return; */
+   ee->prop.iconified = on;
+   ecore_win32_window_iconified_set(ee->engine.win32.window, ee->prop.iconified);
+}
+
+static void
+_ecore_evas_win32_borderless_set(Ecore_Evas *ee, int on)
+{
+   if (((ee->prop.borderless) && (on)) ||
+       ((!ee->prop.borderless) && (!on))) return;
+   ee->prop.borderless = on;
+   ecore_win32_window_borderless_set(ee->engine.win32.window, ee->prop.borderless);
+}
+
+static void
+_ecore_evas_win32_fullscreen_set(Ecore_Evas *ee, int on)
+{
+   if ((ee->prop.fullscreen && on) ||
+      (!ee->prop.fullscreen && !on)) return;
+
+   ee->engine.win32.state.fullscreen = on;
+   ecore_win32_window_fullscreen_set(ee->engine.win32.window, ee->prop.borderless);
+   /* FIXME: what to do with that code ?? */
+/*    if (ee->should_be_visible) */
+/*      ecore_x_netwm_state_request_send(ee->engine.x.win, ee->engine.x.win_root, */
+/*                                   ECORE_X_WINDOW_STATE_FULLSCREEN, -1, on); */
+/*    else */
+/*      _ecore_evas_win32_state_update(ee); */
+}
+
+#endif /* BUILD_ECORE_EVAS_WIN32 */
+
+static void *
+_ecore_evas_win32_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_WIN32
+   return ee->engine.win32.window;
+#else
+   return NULL;
+#endif /* BUILD_ECORE_EVAS_WIN32 */
+}
+
+#ifdef BUILD_ECORE_EVAS_WIN32
+static const Ecore_Evas_Engine_Func _ecore_win32_engine_func =
+{
+   _ecore_evas_win32_free,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_win32_callback_delete_request_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_win32_move,
+     NULL,
+     _ecore_evas_win32_resize,
+     _ecore_evas_win32_move_resize,
+     _ecore_evas_win32_rotation_set,
+     NULL, /* _ecore_evas_x_shaped_set */
+     _ecore_evas_win32_show,
+     _ecore_evas_win32_hide,
+     _ecore_evas_win32_raise,
+     _ecore_evas_win32_lower,
+     _ecore_evas_win32_activate,
+     _ecore_evas_win32_title_set,
+     NULL, /* _ecore_evas_x_name_class_set */
+     _ecore_evas_win32_size_min_set,
+     _ecore_evas_win32_size_max_set,
+     _ecore_evas_win32_size_base_set,
+     _ecore_evas_win32_size_step_set,
+     _ecore_evas_win32_cursor_set,
+     NULL, /* _ecore_evas_x_layer_set */
+     _ecore_evas_win32_focus_set,
+     _ecore_evas_win32_iconified_set,
+     _ecore_evas_win32_borderless_set,
+     NULL, /* _ecore_evas_x_override_set */
+     NULL,
+     _ecore_evas_win32_fullscreen_set,
+     NULL, /* _ecore_evas_x_avoid_damage_set */
+     NULL, /* _ecore_evas_x_withdrawn_set */
+     NULL, /* _ecore_evas_x_sticky_set */
+     NULL, /* _ecore_evas_x_ignore_events_set */
+     NULL, /* _ecore_evas_x_alpha_set */
+     _ecore_evas_win32_window_get
+};
+
+#endif /* BUILD_ECORE_EVAS_WIN32 */
+
+/* API */
+
+static int
+_ecore_evas_engine_software_ddraw_init(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
+   Evas_Engine_Info_Software_DDraw *einfo;
+   const char                      *driver;
+   int                              rmethod;
+
+   driver = "software_ddraw";
+
+   rmethod = evas_render_method_lookup(driver);
+   if (!rmethod)
+     return 0;
+
+   ee->driver = driver;
+   evas_output_method_set(ee->evas, rmethod);
+
+   einfo = (Evas_Engine_Info_Software_DDraw *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        /* FIXME: REDRAW_DEBUG missing for now */
+        einfo->info.window = ((struct _Ecore_Win32_Window *)ee->engine.win32.window)->window;
+        einfo->info.depth = ecore_win32_screen_depth_get();
+        einfo->info.rotation = 0;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+
+   return 1;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_DDRAW */
+}
+
+static int
+_ecore_evas_engine_direct3d_init(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_DIRECT3D
+   Evas_Engine_Info_Direct3D *einfo;
+   const char                *driver;
+   int                        rmethod;
+
+   driver = "direct3d";
+
+   rmethod = evas_render_method_lookup(driver);
+   if (!rmethod)
+     return 0;
+
+   ee->driver = driver;
+   evas_output_method_set(ee->evas, rmethod);
+
+   einfo = (Evas_Engine_Info_Direct3D *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        /* FIXME: REDRAW_DEBUG missing for now */
+        einfo->info.window = ((struct _Ecore_Win32_Window *)ee->engine.win32.window)->window;
+        einfo->info.depth = ecore_win32_screen_depth_get();
+        einfo->info.rotation = 0;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+
+   return 1;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_DIRECT3D */
+}
+
+static int
+_ecore_evas_engine_opengl_glew_init(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
+   Evas_Engine_Info_GL_Glew *einfo;
+   const char               *driver;
+   int                       rmethod;
+
+   driver = "gl_glew";
+
+   rmethod = evas_render_method_lookup(driver);
+   if (!rmethod)
+     return 0;
+
+   ee->driver = driver;
+   evas_output_method_set(ee->evas, rmethod);
+
+   einfo = (Evas_Engine_Info_GL_Glew *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        /* FIXME: REDRAW_DEBUG missing for now */
+        einfo->info.window = ((struct _Ecore_Win32_Window *)ee->engine.win32.window)->window;
+        einfo->info.depth = ecore_win32_screen_depth_get();
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+
+   return 1;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_GLEW */
+}
+
+static int
+_ecore_evas_engine_software_16_ddraw_init(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DIRECTDRAW
+   Evas_Engine_Info_Software_DDraw *einfo;
+   const char                      *driver;
+   int                              rmethod;
+
+   driver = "software_16_ddraw";
+
+   rmethod = evas_render_method_lookup(driver);
+   if (!rmethod)
+     return 0;
+
+   ee->driver = driver;
+   evas_output_method_set(ee->evas, rmethod);
+
+   if (ecore_win32_screen_depth_get() != 16)
+     return 0;
+
+   einfo = (Evas_Engine_Info_Software_16_DDraw *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        /* FIXME: REDRAW_DEBUG missing for now */
+        einfo->info.window = ((struct _Ecore_Win32_Window *)ee->engine.win32.window)->window;
+        einfo->info.depth = ecore_win32_screen_depth_get();
+        einfo->info.rotation = 0;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_DIRECTDRAW */
+}
+
+static Ecore_Evas *
+_ecore_evas_win32_new_internal(int (*_ecore_evas_engine_init)(Ecore_Evas *ee),
+                               Ecore_Win32_Window *parent,
+                               int                 x,
+                               int                 y,
+                               int                 width,
+                               int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_WIN32
+   Ecore_Evas *ee;
+
+   if (!ecore_win32_init())
+     return NULL;
+
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee)
+     return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_win32_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_win32_engine_func;
+
+   if (width < 1) width = 1;
+   if (height < 1) height = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = width;
+   ee->h = height;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   /* FIXME: sticky to add */
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_size_set(ee->evas, width, height);
+   evas_output_viewport_set(ee->evas, 0, 0, width, height);
+
+   ee->engine.win32.parent = parent;
+   ee->engine.win32.window = ecore_win32_window_new(parent, x, y, width, height);
+   if (!ee->engine.win32.window)
+     {
+        _ecore_evas_win32_shutdown();
+        free(ee);
+        return NULL;
+     }
+
+   if (!_ecore_evas_engine_init(ee))
+     {
+        _ecore_evas_win32_shutdown();
+        free(ee);
+        return NULL;
+     }
+
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
+
+   return ee;
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_WIN32 */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_software_ddraw_new(Ecore_Win32_Window *parent,
+                              int                 x,
+                              int                 y,
+                              int                 width,
+                              int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
+   return _ecore_evas_win32_new_internal(_ecore_evas_engine_software_ddraw_init,
+                                         parent,
+                                         x,
+                                         y,
+                                         width,
+                                         height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_DDRAW */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_software_16_ddraw_new(Ecore_Win32_Window *parent,
+                                 int                 x,
+                                 int                 y,
+                                 int                 width,
+                                 int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DIRECTDRAW
+   return _ecore_evas_win32_new_internal(_ecore_evas_engine_software_16_ddraw_init,
+                                         parent,
+                                         x,
+                                         y,
+                                         width,
+                                         height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_DIRECTDRAW */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_direct3d_new(Ecore_Win32_Window *parent,
+                        int                 x,
+                        int                 y,
+                        int                 width,
+                        int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_DIRECT3D
+   return _ecore_evas_win32_new_internal(_ecore_evas_engine_direct3d_init,
+                                         parent,
+                                         x,
+                                         y,
+                                         width,
+                                         height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_DIRECT3D */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_gl_glew_new(Ecore_Win32_Window *parent,
+                       int                 x,
+                       int                 y,
+                       int                 width,
+                       int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
+   return _ecore_evas_win32_new_internal(_ecore_evas_engine_opengl_glew_init,
+                                         parent,
+                                         x,
+                                         y,
+                                         width,
+                                         height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* BUILD_ECORE_EVAS_OPENGL_GLEW */
+}
+
+EAPI Ecore_Win32_Window *
+ecore_evas_win32_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_WIN32
+   return (Ecore_Win32_Window *) _ecore_evas_win32_window_get(ee);
+#else
+   return NULL;
+   ee = NULL;
+#endif /* BUILD_ECORE_EVAS_WIN32 */
+}
diff --git a/src/lib/ecore_evas/ecore_evas_wince.c b/src/lib/ecore_evas/ecore_evas_wince.c
new file mode 100644 (file)
index 0000000..29253e4
--- /dev/null
@@ -0,0 +1,1097 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h> /* for NULL */
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+# undef WIN32_LEAN_AND_MEAN
+# include "Ecore_WinCE.h"
+# include "ecore_wince_private.h"
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+
+#define ECORE_EVAS_EVENT_COUNT 12
+
+static int _ecore_evas_init_count = 0;
+static int _ecore_evas_fps_debug  = 0;
+
+static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
+static Ecore_Idle_Enterer  *ecore_evas_idle_enterer = NULL;
+static Ecore_Evas          *ecore_evases = NULL;
+static Evas_Hash           *ecore_evases_hash = NULL;
+
+static int _ecore_evas_wince_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_window_damage(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_window_destroy(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_window_show(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_window_hide(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+static int _ecore_evas_wince_event_window_delete_request(void *data __UNUSED__, int type __UNUSED__, void *event);
+
+/* Private functions */
+
+static void
+_ecore_evas_wince_render(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   Evas_List *ll;
+#endif
+
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+     }
+#endif
+   if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+   if (ee->prop.avoid_damage)
+     {
+        Evas_List *updates;
+
+        updates = evas_render_updates(ee->evas);
+        if (updates) evas_render_updates_free(updates);
+     }
+   else if ((ee->visible) ||
+            ((ee->should_be_visible) && (ee->prop.fullscreen)) ||
+            ((ee->should_be_visible) && (ee->prop.override)))
+     {
+        if (ee->shaped)
+          {
+             Evas_List *updates;
+
+             updates = evas_render_updates(ee->evas);
+             if (updates) evas_render_updates_free(updates);
+          }
+        else
+          {
+             Evas_List *updates;
+
+             updates = evas_render_updates(ee->evas);
+             if (updates) evas_render_updates_free(updates);
+          }
+     }
+   else
+     evas_norender(ee->evas);
+   if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+}
+
+static int
+_ecore_evas_wince_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   double       t1 = 0.0;
+   double       t2 = 0.0;
+
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+
+       ee = (Ecore_Evas *)l;
+       _ecore_evas_wince_render(ee);
+     }
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+       _ecore_evas_fps_debug_rendertime_add(t2 - t1);
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_wince_init(void)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1)
+     return _ecore_evas_init_count;
+
+   if (getenv("ECORE_EVAS_FPS_DEBUG"))
+     _ecore_evas_fps_debug = 1;
+
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_wince_idle_enter, NULL);
+
+   ecore_evas_event_handlers[0]  = ecore_event_handler_add(ECORE_WINCE_EVENT_KEY_DOWN, _ecore_evas_wince_event_key_down, NULL);
+   ecore_evas_event_handlers[1]  = ecore_event_handler_add(ECORE_WINCE_EVENT_KEY_UP, _ecore_evas_wince_event_key_up, NULL);
+   ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_wince_event_mouse_button_down, NULL);
+   ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_BUTTON_UP, _ecore_evas_wince_event_mouse_button_up, NULL);
+   ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_MOVE, _ecore_evas_wince_event_mouse_move, NULL);
+   ecore_evas_event_handlers[5]  = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_IN, _ecore_evas_wince_event_mouse_in, NULL);
+   ecore_evas_event_handlers[6]  = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_OUT, _ecore_evas_wince_event_mouse_out, NULL);
+   ecore_evas_event_handlers[7]  = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_DAMAGE, _ecore_evas_wince_event_window_damage, NULL);
+   ecore_evas_event_handlers[8]  = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_DESTROY, _ecore_evas_wince_event_window_destroy, NULL);
+   ecore_evas_event_handlers[9]  = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_SHOW, _ecore_evas_wince_event_window_show, NULL);
+   ecore_evas_event_handlers[10]  = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_HIDE, _ecore_evas_wince_event_window_hide, NULL);
+   ecore_evas_event_handlers[11]  = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST, _ecore_evas_wince_event_window_delete_request, NULL);
+
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+
+   return _ecore_evas_init_count;
+}
+
+int
+_ecore_evas_wince_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+       for (i = 0; i < ECORE_EVAS_EVENT_COUNT; i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_idle_enterer);
+       ecore_evas_idle_enterer = NULL;
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+     }
+
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+
+   return _ecore_evas_init_count;
+}
+
+static char *
+_ecore_evas_wince_winid_str_get(Ecore_WinCE_Window *window)
+{
+   static char  id[9];
+   const char  *vals = "qWeRtYuIoP5-$&<~";
+   unsigned int val;
+
+   val = (unsigned int)window;
+   id[0] = vals[(val >> 28) & 0xf];
+   id[1] = vals[(val >> 24) & 0xf];
+   id[2] = vals[(val >> 20) & 0xf];
+   id[3] = vals[(val >> 16) & 0xf];
+   id[4] = vals[(val >> 12) & 0xf];
+   id[5] = vals[(val >>  8) & 0xf];
+   id[6] = vals[(val >>  4) & 0xf];
+   id[7] = vals[(val      ) & 0xf];
+   id[8] = 0;
+
+   return id;
+}
+
+static Ecore_Evas *
+_ecore_evas_wince_match(Ecore_WinCE_Window *window)
+{
+   Ecore_Evas *ee;
+
+   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_wince_winid_str_get(window));
+
+   return ee;
+}
+
+static void
+_ecore_evas_wince_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+       if (ee->rotation == 0)
+         evas_object_move(ee->prop.cursor.object,
+                          x - ee->prop.cursor.hot.x,
+                          y - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 90)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->h - y - 1 - ee->prop.cursor.hot.x,
+                          x - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 180)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->w - x - 1 - ee->prop.cursor.hot.x,
+                          ee->h - y - 1 - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 270)
+         evas_object_move(ee->prop.cursor.object,
+                          y - ee->prop.cursor.hot.x,
+                          ee->w - x - 1 - ee->prop.cursor.hot.y);
+     }
+   if (ee->rotation == 0)
+     evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+   else if (ee->rotation == 90)
+     evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, timestamp, NULL);
+   else if (ee->rotation == 180)
+     evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, timestamp, NULL);
+   else if (ee->rotation == 270)
+     evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, timestamp, NULL);
+}
+
+static int
+_ecore_evas_wince_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                 *ee;
+   Ecore_WinCE_Event_Key_Down *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->keycompose, NULL, e->time, NULL);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas               *ee;
+   Ecore_WinCE_Event_Key_Up *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->keycompose, NULL, e->time, NULL);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                          *ee;
+   Ecore_WinCE_Event_Mouse_Button_Down *e;
+   Evas_Button_Flags                    flags = EVAS_BUTTON_NONE;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   printf ("feed evas event\n");
+   evas_event_feed_mouse_down(ee->evas, e->button, flags, e->time, NULL);
+
+   printf (" * ee event button down %f %d %d\n", e->time, e->x, e->y);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                        *ee;
+   Ecore_WinCE_Event_Mouse_Button_Up *e;
+   Evas_Button_Flags                  flags = EVAS_BUTTON_NONE;
+
+   printf (" * ee event button up 0 \n");
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_up(ee->evas, e->button, flags, e->time, NULL);
+
+   printf (" * ee event button up\n");
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                   *ee;
+   Ecore_WinCE_Event_Mouse_Move *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   _ecore_evas_wince_mouse_move_process(ee, e->x, e->y, e->time);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                 *ee;
+   Ecore_WinCE_Event_Mouse_In *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+
+   if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee);
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   evas_event_feed_mouse_in(ee->evas, e->time, NULL);
+   _ecore_evas_wince_mouse_move_process(ee, e->x, e->y, e->time);
+   printf (" * ee event mouse in\n");
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                  *ee;
+   Ecore_WinCE_Event_Mouse_Out *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+
+   /* FIXME to do */
+/*    _ecore_evas_x_modifier_locks_update(ee, e->modifiers); */
+   _ecore_evas_wince_mouse_move_process(ee, e->x, e->y, e->time);
+
+   evas_event_feed_mouse_out(ee->evas, e->time, NULL);
+   if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
+   if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+   printf (" * ee event mouse out\n");
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_window_damage(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                      *ee;
+   Ecore_WinCE_Event_Window_Damage *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+
+   if (ee->prop.avoid_damage)
+     {
+#warning [ECORE] [WINCE] No Region code
+     }
+   else
+     {
+       printf (" * ee window event damage\n");
+        if (ee->rotation == 0)
+          evas_damage_rectangle_add(ee->evas,
+                                    e->x,
+                                    e->y,
+                                    e->width,
+                                    e->height);
+        else if (ee->rotation == 90)
+          evas_damage_rectangle_add(ee->evas,
+                                    ee->h - e->y - e->height,
+                                    e->x,
+                                    e->height,
+                                    e->width);
+        else if (ee->rotation == 180)
+          evas_damage_rectangle_add(ee->evas,
+                                    ee->w - e->x - e->width,
+                                    ee->h - e->y - e->height,
+                                    e->width,
+                                    e->height);
+        else if (ee->rotation == 270)
+          evas_damage_rectangle_add(ee->evas,
+                                    e->y,
+                                    ee->w - e->x - e->width,
+                                    e->height,
+                                    e->width);
+     }
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_window_destroy(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                       *ee;
+   Ecore_WinCE_Event_Window_Destroy *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   if (ee->func.fn_destroy) ee->func.fn_destroy(ee);
+   ecore_evas_free(ee);
+
+   printf (" * ee event destroy\n");
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_window_show(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                    *ee;
+   Ecore_WinCE_Event_Window_Show *e;
+
+   printf (" * ee window event show\n");
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   if (ee->visible) return 0; /* dont pass it on */
+   ee->visible = 1;
+   if (ee->func.fn_show) ee->func.fn_show(ee);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_window_hide(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                    *ee;
+   Ecore_WinCE_Event_Window_Hide *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   if (!ee->visible) return 0; /* dont pass it on */
+   ee->visible = 0;
+   if (ee->func.fn_hide) ee->func.fn_hide(ee);
+
+   return 1;
+}
+
+static int
+_ecore_evas_wince_event_window_delete_request(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas                              *ee;
+   Ecore_WinCE_Event_Window_Delete_Request *e;
+
+   e = event;
+   ee = _ecore_evas_wince_match(e->window);
+   if (!ee) return 1; /* pass on event */
+   if (e->window != ee->engine.wince.window) return 1;
+   if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee);
+
+   printf (" * ee event delete\n");
+   return 1;
+}
+
+
+/* Ecore_Evas interface */
+
+static void
+_ecore_evas_wince_free(Ecore_Evas *ee)
+{
+   ecore_wince_window_del(ee->engine.wince.window);
+   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   _ecore_evas_wince_shutdown();
+   ecore_wince_shutdown();
+}
+
+static void
+_ecore_evas_wince_callback_delete_request_set(Ecore_Evas *ee,
+                                              void (*func) (Ecore_Evas *ee))
+{
+   ee->func.fn_delete_request = func;
+}
+
+/* static void */
+/* _ecore_evas_wince_move(Ecore_Evas *ee, int x, int y) */
+/* { */
+/*    if ((x != ee->x) || (y != ee->y)) */
+/*      { */
+/*         ee->x = x; */
+/*         ee->y = y; */
+/*         ecore_wince_window_move(ee->engine.wince.window, x, y); */
+/*         if (ee->func.fn_move) ee->func.fn_move(ee); */
+/*      } */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_resize(Ecore_Evas *ee, int width, int height) */
+/* { */
+/*   printf (" * _ecore_evas_wince_resize %d %d\n", width, height); */
+/*    if ((ee->w != width) || (ee->h != height)) */
+/*      { */
+/*         ee->w = width; */
+/*         ee->h = height; */
+/*         ecore_wince_window_resize(ee->engine.wince.window, width, height); */
+/*         if ((ee->rotation == 90) || (ee->rotation == 270)) */
+/*           { */
+/*              evas_output_size_set(ee->evas, ee->h, ee->w); */
+/*              evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w); */
+/*           } */
+/*         else */
+/*           { */
+/*              evas_output_size_set(ee->evas, ee->w, ee->h); */
+/*              evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); */
+/*           } */
+/*         /\* FIXME: damage and shape *\/ */
+
+/*         if (ee->func.fn_resize) ee->func.fn_resize(ee); */
+/*      } */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_move_resize(Ecore_Evas *ee, int x, int y, int width, int height) */
+/* { */
+/*   printf (" * _ecore_evas_wince_resize\n"); */
+/*    if ((ee->w != width) || (ee->h != height) || (x != ee->x) || (y != ee->y)) */
+/*      { */
+/*         int change_size = 0; */
+/*         int change_pos = 0; */
+
+/*         if ((ee->w != width) || (ee->h != height)) change_size = 1; */
+/*         if ((x != ee->x) || (y != ee->y)) change_pos = 1; */
+
+/*         ee->x = x; */
+/*         ee->y = y; */
+/*         ee->w = width; */
+/*         ee->h = height; */
+/*         ecore_wince_window_move_resize(ee->engine.wince.window, x, y, width, height); */
+/*         if ((ee->rotation == 90) || (ee->rotation == 270)) */
+/*           { */
+/*              evas_output_size_set(ee->evas, ee->h, ee->w); */
+/*              evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w); */
+/*           } */
+/*         else */
+/*           { */
+/*              evas_output_size_set(ee->evas, ee->w, ee->h); */
+/*              evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); */
+/*           } */
+/*         /\* FIXME: damage and shape *\/ */
+/*         if (change_pos) */
+/*           { */
+/*              if (ee->func.fn_move) ee->func.fn_move(ee); */
+/*           } */
+/*         if (change_size) */
+/*           { */
+/*              if (ee->func.fn_resize) ee->func.fn_resize(ee); */
+/*           } */
+/*      } */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_rotation_set(Ecore_Evas *ee, int rotation) */
+/* { */
+/*    int rot_dif; */
+
+/*    if (ee->rotation == rotation) return; */
+/*    rot_dif = ee->rotation - rotation; */
+/*    if (rot_dif < 0) rot_dif = -rot_dif; */
+/*    if (!strcmp(ee->driver, "software_ddraw")) */
+/*      { */
+/*     Evas_Engine_Info_Software_16_WinCE *einfo; */
+
+/*     einfo = (Evas_Engine_Info_Software_16_WinCE *)evas_engine_info_get(ee->evas); */
+/*     if (!einfo) return; */
+/*     if (rot_dif != 180) */
+/*       { */
+/*          int minw, minh, maxw, maxh, basew, baseh, stepw, steph; */
+
+/*          einfo->info.rotation = rotation; */
+/*          evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); */
+/*          if (!ee->prop.fullscreen) */
+/*            { */
+/*               ecore_wince_window_resize(ee->engine.wince.window, ee->h, ee->w); */
+/*               ee->expecting_resize.w = ee->h; */
+/*               ee->expecting_resize.h = ee->w; */
+/*            } */
+/*          else */
+/*            { */
+/*               int w, h; */
+
+/*               ecore_wince_window_size_get(ee->engine.wince.window, &w, &h); */
+/*               ecore_wince_window_resize(ee->engine.wince.window, h, w); */
+/*               if ((rotation == 0) || (rotation == 180)) */
+/*                 { */
+/*                    evas_output_size_set(ee->evas, ee->w, ee->h); */
+/*                    evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h); */
+/*                 } */
+/*               else */
+/*                 { */
+/*                    evas_output_size_set(ee->evas, ee->h, ee->w); */
+/*                    evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w); */
+/*                 } */
+/*               if (ee->func.fn_resize) ee->func.fn_resize(ee); */
+/*            } */
+/*          ecore_evas_size_min_get(ee, &minw, &minh); */
+/*          ecore_evas_size_max_get(ee, &maxw, &maxh); */
+/*          ecore_evas_size_base_get(ee, &basew, &baseh); */
+/*          ecore_evas_size_step_get(ee, &stepw, &steph); */
+/*          ee->rotation = rotation; */
+/*          ecore_evas_size_min_set(ee, minh, minw); */
+/*          ecore_evas_size_max_set(ee, maxh, maxw); */
+/*          ecore_evas_size_base_set(ee, baseh, basew); */
+/*          ecore_evas_size_step_set(ee, steph, stepw); */
+/*          _ecore_evas_wince_mouse_move_process(ee, ee->mouse.x, ee->mouse.y, */
+/*                                                   ecore_wince_current_time_get()); */
+/*       } */
+/*     else */
+/*       { */
+/*          einfo->info.rotation = rotation; */
+/*          evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo); */
+/*          ee->rotation = rotation; */
+/*          _ecore_evas_wince_mouse_move_process(ee, ee->mouse.x, ee->mouse.y, */
+/*                                                   ecore_wince_current_time_get()); */
+/*          if (ee->func.fn_resize) ee->func.fn_resize(ee); */
+/*       } */
+/*     if ((ee->rotation == 90) || (ee->rotation == 270)) */
+/*       evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w); */
+/*     else */
+/*       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h); */
+/*      } */
+/* } */
+
+static void
+_ecore_evas_wince_show(Ecore_Evas *ee)
+{
+  printf (" * ee window show\n");
+   ee->should_be_visible = 1;
+   if (ee->prop.avoid_damage)
+     _ecore_evas_wince_render(ee);
+   ecore_wince_window_show(ee->engine.wince.window);
+/*    if (ee->prop.fullscreen) */
+/*      ecore_wince_window_focus(ee->engine.wince.window); */
+}
+
+static void
+_ecore_evas_wince_hide(Ecore_Evas *ee)
+{
+   ecore_wince_window_hide(ee->engine.wince.window);
+   ee->should_be_visible = 0;
+}
+
+/* static void */
+/* _ecore_evas_wince_raise(Ecore_Evas *ee) */
+/* { */
+/*    if (!ee->prop.fullscreen) */
+/*      ecore_wince_window_raise(ee->engine.wince.window); */
+/*    else */
+/*      ecore_wince_window_raise(ee->engine.wince.window); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_lower(Ecore_Evas *ee) */
+/* { */
+/*    if (!ee->prop.fullscreen) */
+/*      ecore_wince_window_lower(ee->engine.wince.window); */
+/*    else */
+/*      ecore_wince_window_lower(ee->engine.wince.window); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_title_set(Ecore_Evas *ee, const char *title) */
+/* { */
+/*    if (ee->prop.title) free(ee->prop.title); */
+/*    ee->prop.title = NULL; */
+/*    if (title) ee->prop.title = strdup(title); */
+/*    ecore_wince_window_title_set(ee->engine.wince.window, ee->prop.title); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_size_min_set(Ecore_Evas *ee, int width, int height) */
+/* { */
+/*    if (width < 0) width = 0; */
+/*    if (height < 0) height = 0; */
+/*    if ((ee->prop.min.w == width) && (ee->prop.min.h == height)) return; */
+/*    ee->prop.min.w = width; */
+/*    ee->prop.min.h = height; */
+/*    ecore_wince_window_size_min_set(ee->engine.wince.window, width, height); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_size_max_set(Ecore_Evas *ee, int width, int height) */
+/* { */
+/*    if (width < 0) width = 0; */
+/*    if (height < 0) height = 0; */
+/*    if ((ee->prop.max.w == width) && (ee->prop.max.h == height)) return; */
+/*    ee->prop.max.w = width; */
+/*    ee->prop.max.h = height; */
+/*    ecore_wince_window_size_max_set(ee->engine.wince.window, width, height); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_size_base_set(Ecore_Evas *ee, int width, int height) */
+/* { */
+/*    if (width < 0) width = 0; */
+/*    if (height < 0) height = 0; */
+/*    if ((ee->prop.base.w == width) && (ee->prop.base.h == height)) return; */
+/*    ee->prop.base.w = width; */
+/*    ee->prop.base.h = height; */
+/*    ecore_wince_window_size_base_set(ee->engine.wince.window, width, height); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_size_step_set(Ecore_Evas *ee, int width, int height) */
+/* { */
+/*    if (width < 1) width = 1; */
+/*    if (height < 1) height = 1; */
+/*    if ((ee->prop.step.w == width) && (ee->prop.step.h == height)) return; */
+/*    ee->prop.step.w = width; */
+/*    ee->prop.step.h = height; */
+/*    ecore_wince_window_size_step_set(ee->engine.wince.window, width, height); */
+/* } */
+
+static void
+_ecore_evas_wince_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+#if 0
+   int x, y;
+
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       ecore_wince_window_cursor_show(ee->engine.wince.window, 1);
+       return;
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+
+   ecore_wince_window_cursor_show(ee->engine.wince.window, 0);
+
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,
+                   x - ee->prop.cursor.hot.x,
+                   y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+#endif
+}
+
+/* static void */
+/* _ecore_evas_wince_focus_set(Ecore_Evas *ee, int on __UNUSED__) */
+/* { */
+/*    ecore_wince_window_focus_set(ee->engine.wince.window); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_iconified_set(Ecore_Evas *ee, int on) */
+/* { */
+/* /\*    if (((ee->prop.borderless) && (on)) || *\/ */
+/* /\*        ((!ee->prop.borderless) && (!on))) return; *\/ */
+/*    ee->prop.iconified = on; */
+/*    ecore_wince_window_iconified_set(ee->engine.wince.window, ee->prop.iconified); */
+/* } */
+
+/* static void */
+/* _ecore_evas_wince_borderless_set(Ecore_Evas *ee, int on) */
+/* { */
+/*    if (((ee->prop.borderless) && (on)) || */
+/*        ((!ee->prop.borderless) && (!on))) return; */
+/*    ee->prop.borderless = on; */
+/*    ecore_wince_window_borderless_set(ee->engine.wince.window, ee->prop.borderless); */
+/* } */
+
+static void
+_ecore_evas_wince_fullscreen_set(Ecore_Evas *ee, int on)
+{
+/*    if ((ee->prop.fullscreen && on) || */
+/*       (!ee->prop.fullscreen && !on)) return; */
+
+/*    ee->engine.wince.state.fullscreen = on; */
+/*    ecore_wince_window_fullscreen_set(ee->engine.wince.window, ee->prop.borderless); */
+   /* FIXME: what to do with that code ?? */
+/*    if (ee->should_be_visible) */
+/*      ecore_x_netwm_state_request_send(ee->engine.x.win, ee->engine.x.win_root, */
+/*                                   ECORE_X_WINDOW_STATE_FULLSCREEN, -1, on); */
+/*    else */
+/*      _ecore_evas_wince_state_update(ee); */
+}
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+
+static void *
+_ecore_evas_wince_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return ee->engine.wince.window;
+#else
+   return NULL;
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+static const Ecore_Evas_Engine_Func _ecore_wince_engine_func =
+{
+   _ecore_evas_wince_free,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_wince_callback_delete_request_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+   NULL, //_ecore_evas_wince_move,
+     NULL,
+   NULL, //_ecore_evas_wince_resize,
+   NULL, //_ecore_evas_wince_move_resize,
+   NULL, //_ecore_evas_wince_rotation_set,
+     NULL, /* _ecore_evas_x_shaped_set */
+     _ecore_evas_wince_show,
+     _ecore_evas_wince_hide,
+   NULL, //_ecore_evas_wince_raise,
+   NULL, //_ecore_evas_wince_lower,
+   NULL, //_ecore_evas_wince_activate,
+   NULL, //_ecore_evas_wince_title_set,
+     NULL, /* _ecore_evas_x_name_class_set */
+   NULL, //_ecore_evas_wince_size_min_set,
+   NULL, //_ecore_evas_wince_size_max_set,
+   NULL, //_ecore_evas_wince_size_base_set,
+   NULL, //_ecore_evas_wince_size_step_set,
+     _ecore_evas_wince_cursor_set,
+     NULL, /* _ecore_evas_x_layer_set */
+   NULL, //_ecore_evas_wince_focus_set,
+     NULL, //_ecore_evas_wince_iconified_set,
+     NULL, //_ecore_evas_wince_borderless_set,
+     NULL, /* _ecore_evas_x_override_set */
+     NULL,
+     _ecore_evas_wince_fullscreen_set,
+     NULL, /* _ecore_evas_x_avoid_damage_set */
+     NULL, /* _ecore_evas_x_withdrawn_set */
+     NULL, /* _ecore_evas_x_sticky_set */
+     NULL, /* _ecore_evas_x_ignore_events_set */
+     NULL, /* _ecore_evas_x_alpha_set */
+     _ecore_evas_wince_window_get
+};
+
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+
+/* API */
+
+
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+static Ecore_Evas *
+ecore_evas_software_wince_new_internal(int                 backend,
+                                       Ecore_WinCE_Window *parent,
+                                       int                 x,
+                                       int                 y,
+                                       int                 width,
+                                       int                 height)
+{
+   Evas_Engine_Info_Software_16_WinCE *einfo;
+   Ecore_Evas                         *ee;
+   int                                 rmethod;
+
+   rmethod = evas_render_method_lookup("software_16_wince");
+   if (!rmethod)
+     return NULL;
+
+   if (!ecore_wince_init())
+     return NULL;
+
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee)
+     {
+        ecore_wince_shutdown();
+        return NULL;
+     }
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   if (!_ecore_evas_wince_init())
+     {
+        free(ee);
+        ecore_wince_shutdown();
+        return NULL;
+     }
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_wince_engine_func;
+
+   ee->driver = "software_16_wince";
+
+   if (width < 1) width = 1;
+   if (height < 1) height = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = width;
+   ee->h = height;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   /* FIXME: sticky to add */
+
+   ee->engine.wince.window = ecore_wince_window_new(parent, x, y, width, height);
+   if (!ee->engine.wince.window)
+     {
+        _ecore_evas_wince_shutdown();
+        free(ee);
+        ecore_wince_shutdown();
+        return NULL;
+     }
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, width, height);
+   evas_output_viewport_set(ee->evas, 0, 0, width, height);
+
+   einfo = (Evas_Engine_Info_Software_16_WinCE *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+        /* FIXME: REDRAW_DEBUG missing for now */
+        einfo->info.window = ((struct _Ecore_WinCE_Window *)ee->engine.wince.window)->window;
+        einfo->info.backend = backend;
+        einfo->info.rotation = 0;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+
+        ecore_wince_window_backend_set(ee->engine.wince.window, backend);
+        ecore_wince_window_suspend_set(ee->engine.wince.window, einfo->func.suspend);
+        ecore_wince_window_resume_set(ee->engine.wince.window, einfo->func.resume);
+     }
+
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
+
+   return ee;
+}
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+
+
+EAPI Ecore_Evas *
+ecore_evas_software_wince_new(Ecore_WinCE_Window *parent,
+                              int                 x,
+                              int                 y,
+                              int                 width,
+                              int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return ecore_evas_software_wince_new_internal(0, parent, x, y, width, height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_software_wince_fb_new(Ecore_WinCE_Window *parent,
+                                 int                 x,
+                                 int                 y,
+                                 int                 width,
+                                 int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return ecore_evas_software_wince_new_internal(1, parent, x, y, width, height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_software_wince_gapi_new(Ecore_WinCE_Window *parent,
+                                   int                 x,
+                                   int                 y,
+                                   int                 width,
+                                   int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return ecore_evas_software_wince_new_internal(2, parent, x, y, width, height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
+
+EAPI Ecore_Evas *
+ecore_evas_software_wince_ddraw_new(Ecore_WinCE_Window *parent,
+                                    int                 x,
+                                    int                 y,
+                                    int                 width,
+                                    int                 height)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return ecore_evas_software_wince_new_internal(3, parent, x, y, width, height);
+#else
+   return NULL;
+   parent = NULL;
+   x = 0;
+   y = 0;
+   width = 0;
+   height = 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
+
+EAPI Ecore_WinCE_Window *
+ecore_evas_software_wince_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
+   return (Ecore_WinCE_Window *) _ecore_evas_wince_window_get(ee);
+#else
+   return NULL;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_WINCE */
+}
diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c
new file mode 100644 (file)
index 0000000..a3b1f01
--- /dev/null
@@ -0,0 +1,3648 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#ifdef BUILD_ECORE_EVAS_X11
+# include "Ecore_X.h"
+# include "Ecore_X_Atoms.h"
+#endif
+
+#include "ecore_evas_private.h"
+#include "Ecore_Evas.h"
+
+#ifdef BUILD_ECORE_EVAS_X11
+static int _ecore_evas_init_count = 0;
+
+static int _ecore_evas_fps_debug = 0;
+
+static Ecore_Evas *ecore_evases = NULL;
+static Evas_Hash *ecore_evases_hash = NULL;
+static Ecore_Event_Handler *ecore_evas_event_handlers[18];
+static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
+
+#ifdef HAVE_ECORE_X_XCB
+static xcb_visualtype_t *
+xcb_visualtype_get(xcb_screen_t *screen, xcb_visualid_t visual)
+{
+   xcb_depth_iterator_t  iter_depth;
+
+   if (!screen) return NULL;
+
+   iter_depth = xcb_screen_allowed_depths_iterator(screen);
+   for (; iter_depth.rem; xcb_depth_next (&iter_depth))
+     {
+        xcb_visualtype_iterator_t iter_vis;
+
+        iter_vis = xcb_depth_visuals_iterator(iter_depth.data);
+        for (; iter_vis.rem; --screen, xcb_visualtype_next (&iter_vis))
+          {
+            if (visual == iter_vis.data->visual_id)
+              return iter_vis.data;
+          }
+     }
+
+   return NULL;
+}
+#endif /* HAVE_ECORE_X_XCB */
+
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+# ifdef HAVE_ECORE_X_XCB
+/* noop */
+# else
+static Ecore_X_Window
+_ecore_evas_x_gl_window_new(Ecore_Evas *ee, Ecore_X_Window parent, int x, int y, int w, int h, int override)
+{
+   Evas_Engine_Info_GL_X11 *einfo;
+   Ecore_X_Window win;
+
+   einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       XSetWindowAttributes attr;
+       int screen;
+
+       /* FIXME: this is inefficient as its a round trip */
+       screen = DefaultScreen(ecore_x_display_get());
+       if (ScreenCount(ecore_x_display_get()) > 1)
+         {
+            Ecore_X_Window *roots;
+            int num, i;
+
+            num = 0;
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                 XWindowAttributes at;
+
+                 if (XGetWindowAttributes(ecore_x_display_get(),
+                                          parent, &at))
+                   {
+                      for (i = 0; i < num; i++)
+                        {
+                           if (at.root == roots[i])
+                             {
+                                screen = i;
+                                break;
+                             }
+                        }
+                   }
+                 free(roots);
+              }
+         }
+       attr.backing_store = NotUseful;
+       attr.override_redirect = override;
+       attr.colormap = einfo->func.best_colormap_get(ecore_x_display_get(), screen);
+       attr.border_pixel = 0;
+       attr.background_pixmap = None;
+       attr.event_mask =
+         KeyPressMask | KeyReleaseMask |
+         ExposureMask | ButtonPressMask | ButtonReleaseMask |
+         EnterWindowMask | LeaveWindowMask |
+         PointerMotionMask | StructureNotifyMask | VisibilityChangeMask |
+         FocusChangeMask | PropertyChangeMask | ColormapChangeMask;
+       attr.bit_gravity = ForgetGravity;
+
+       win =
+         XCreateWindow(ecore_x_display_get(),
+                       parent,
+                       x, y,
+                       w, h, 0,
+                       einfo->func.best_depth_get(ecore_x_display_get(), screen),
+                       InputOutput,
+                       einfo->func.best_visual_get(ecore_x_display_get(), screen),
+                       CWBackingStore | CWColormap |
+                       CWBackPixmap | CWBorderPixel |
+                       CWBitGravity | CWEventMask |
+                       CWOverrideRedirect,
+                       &attr);
+       einfo->info.display  = ecore_x_display_get();
+       einfo->info.visual   = einfo->func.best_visual_get(ecore_x_display_get(), screen);
+       einfo->info.colormap = einfo->func.best_colormap_get(ecore_x_display_get(), screen);
+       einfo->info.drawable = win;
+       einfo->info.depth    = einfo->func.best_depth_get(ecore_x_display_get(), screen);
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   else
+     {
+       win = 0;
+     }
+   return win;
+}
+#endif /* HAVE_ECORE_X_XCB */
+#endif
+
+static void
+_ecore_evas_x_render(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   Evas_List *ll;
+#endif
+
+#ifdef BUILD_ECORE_EVAS_BUFFER
+   for (ll = ee->sub_ecore_evas; ll; ll = ll->next)
+     {
+       Ecore_Evas *ee2;
+
+       ee2 = ll->data;
+       if (ee2->func.fn_pre_render) ee2->func.fn_pre_render(ee2);
+       _ecore_evas_buffer_render(ee2);
+       if (ee2->func.fn_post_render) ee2->func.fn_post_render(ee2);
+     }
+#endif
+   if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
+   if (ee->prop.avoid_damage)
+     {
+       Evas_List *updates, *l;
+
+       updates = evas_render_updates(ee->evas);
+#if 0
+//     if (ee->w == 640)
+         {
+            for (l = updates; l; l = l->next)
+              {
+                 Evas_Rectangle *r;
+
+                 r = l->data;
+                 printf("  UP render [%p] %ix%i, [%i %i %ix%i]\n",
+                        ee, ee->w, ee->h, r->x, r->y, r->w, r->h);
+              }
+         }
+#endif
+       if (ee->engine.x.using_bg_pixmap)
+         {
+            if (updates)
+              {
+                 for (l = updates; l; l = l->next)
+                   {
+                      Evas_Rectangle *r;
+
+                      r = l->data;
+                      ecore_x_window_area_clear(ee->engine.x.win, r->x, r->y, r->w, r->h);
+                   }
+                 if ((ee->shaped) && (updates))
+                   ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask);
+                 if ((ee->alpha) && (updates))
+                   ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
+              }
+            if (updates)
+              {
+                 evas_render_updates_free(updates);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+         }
+       else
+         {
+#ifdef HAVE_ECORE_X_XCB
+#warning [XCB] No Region code
+#else
+            for (l = updates; l; l = l->next)
+              {
+                 Evas_Rectangle *r;
+                 XRectangle xr;
+                 Region tmpr;
+
+                 if (!ee->engine.x.damages)
+                   ee->engine.x.damages = XCreateRegion();
+                 r = l->data;
+                 tmpr = XCreateRegion();
+                 if (ee->rotation == 0)
+                   {
+                      xr.x = r->x;
+                      xr.y = r->y;
+                      xr.width = r->w;
+                      xr.height = r->h;
+                   }
+                 else if (ee->rotation == 90)
+                   {
+                      xr.x = r->y;
+                      xr.y = ee->h - r->x - r->w;
+                      xr.width = r->h;
+                      xr.height = r->w;
+                   }
+                 else if (ee->rotation == 180)
+                   {
+                      xr.x = ee->w - r->x - r->w;
+                      xr.y = ee->h - r->y - r->h;
+                      xr.width = r->w;
+                      xr.height = r->h;
+                   }
+                 else if (ee->rotation == 270)
+                   {
+                      xr.x = ee->w - r->y - r->h;
+                      xr.y = r->x;
+                      xr.width = r->h;
+                      xr.height = r->w;
+                   }
+                 XUnionRectWithRegion(&xr, ee->engine.x.damages, tmpr);
+                 XDestroyRegion(ee->engine.x.damages);
+                 ee->engine.x.damages = tmpr;
+              }
+            if (ee->engine.x.damages)
+              {
+#if 0
+//               if (ee->w == 640)
+                   printf("    --COPY PIXMAP\n");
+#endif
+                 /* if we have a damage pixmap - we can avoid exposures by
+                  * disabling them just for setting the mask */
+                 ecore_x_event_mask_set(ee->engine.x.win,
+                                        ECORE_X_EVENT_MASK_KEY_DOWN |
+                                        ECORE_X_EVENT_MASK_KEY_UP |
+                                        ECORE_X_EVENT_MASK_MOUSE_DOWN |
+                                        ECORE_X_EVENT_MASK_MOUSE_UP |
+                                        ECORE_X_EVENT_MASK_MOUSE_IN |
+                                        ECORE_X_EVENT_MASK_MOUSE_OUT |
+                                        ECORE_X_EVENT_MASK_MOUSE_MOVE |
+//                                      ECORE_X_EVENT_MASK_WINDOW_DAMAGE |
+                                        ECORE_X_EVENT_MASK_WINDOW_VISIBILITY |
+                                        ECORE_X_EVENT_MASK_WINDOW_CONFIGURE |
+                                        ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE |
+                                        ECORE_X_EVENT_MASK_WINDOW_PROPERTY |
+                                        ECORE_X_EVENT_MASK_WINDOW_COLORMAP
+                                        );
+                 if ((ee->shaped) && (updates))
+                   ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask);
+                 /* and re-enable them again */
+                 ecore_x_event_mask_set(ee->engine.x.win,
+                                        ECORE_X_EVENT_MASK_KEY_DOWN |
+                                        ECORE_X_EVENT_MASK_KEY_UP |
+                                        ECORE_X_EVENT_MASK_MOUSE_DOWN |
+                                        ECORE_X_EVENT_MASK_MOUSE_UP |
+                                        ECORE_X_EVENT_MASK_MOUSE_IN |
+                                        ECORE_X_EVENT_MASK_MOUSE_OUT |
+                                        ECORE_X_EVENT_MASK_MOUSE_MOVE |
+                                        ECORE_X_EVENT_MASK_WINDOW_DAMAGE |
+                                        ECORE_X_EVENT_MASK_WINDOW_VISIBILITY |
+                                        ECORE_X_EVENT_MASK_WINDOW_CONFIGURE |
+                                        ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE |
+                                        ECORE_X_EVENT_MASK_WINDOW_PROPERTY |
+                                        ECORE_X_EVENT_MASK_WINDOW_COLORMAP
+                                        );
+                 XSetRegion(ecore_x_display_get(), ee->engine.x.gc, ee->engine.x.damages);
+                 /* debug rendering */
+                 /*
+                  XSetForeground(ecore_x_display_get(), ee->engine.x.gc, rand());
+                  XFillRectangle(ecore_x_display_get(), ee->engine.x.win, ee->engine.x.gc,
+                  0, 0, ee->w, ee->h);
+                  XSync(ecore_x_display_get(), False);
+                  usleep(20000);
+                  XSync(ecore_x_display_get(), False);
+                  */
+                 ecore_x_pixmap_paste(ee->engine.x.pmap, ee->engine.x.win, ee->engine.x.gc,
+                                      0, 0, ee->w, ee->h, 0, 0);
+                 XDestroyRegion(ee->engine.x.damages);
+                 ee->engine.x.damages = 0;
+              }
+#endif /* HAVE_ECORE_X_XCB */
+            if (updates)
+              {
+                 evas_render_updates_free(updates);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+         }
+     }
+   else if (((ee->visible) && (ee->draw_ok)) ||
+           ((ee->should_be_visible) && (ee->prop.fullscreen)) ||
+           ((ee->should_be_visible) && (ee->prop.override)))
+     {
+       if (ee->shaped)
+         {
+            Evas_List *updates;
+
+            updates = evas_render_updates(ee->evas);
+            if (updates)
+              {
+                 ecore_x_window_shape_mask_set(ee->engine.x.win, ee->engine.x.mask);
+                 evas_render_updates_free(updates);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+         }
+       else
+         {
+            Evas_List *updates;
+
+            updates = evas_render_updates(ee->evas);
+            if (updates)
+              {
+#if 0
+//               if (ee->w == 640)
+                   {
+                      Evas_List *l;
+
+                      printf("RENDER [%p] [%i] %ix%i\n",
+                             ee, ee->visible, ee->w, ee->h);
+                      for (l = updates; l; l = l->next)
+                        {
+                           Evas_Rectangle *r;
+
+                           r = l->data;
+                           printf("   render [%i %i %ix%i]\n",
+                                  r->x, r->y, r->w, r->h);
+                        }
+                   }
+#endif
+                 evas_render_updates_free(updates);
+                 if (ee->alpha)
+                   ecore_x_window_shape_input_mask_set(ee->engine.x.win, ee->engine.x.mask);
+                 _ecore_evas_idle_timeout_update(ee);
+              }
+         }
+     }
+   else
+     evas_norender(ee->evas);
+   if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
+}
+
+static void
+_ecore_evas_x_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
+{
+   ee->mouse.x = x;
+   ee->mouse.y = y;
+   if (ee->prop.cursor.object)
+     {
+       evas_object_show(ee->prop.cursor.object);
+       if (ee->rotation == 0)
+         evas_object_move(ee->prop.cursor.object,
+                          x - ee->prop.cursor.hot.x,
+                          y - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 90)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->h - y - 1 - ee->prop.cursor.hot.x,
+                          x - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 180)
+         evas_object_move(ee->prop.cursor.object,
+                          ee->w - x - 1 - ee->prop.cursor.hot.x,
+                          ee->h - y - 1 - ee->prop.cursor.hot.y);
+       else if (ee->rotation == 270)
+         evas_object_move(ee->prop.cursor.object,
+                          y - ee->prop.cursor.hot.x,
+                          ee->w - x - 1 - ee->prop.cursor.hot.y);
+     }
+   if (ee->rotation == 0)
+     evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL);
+   else if (ee->rotation == 90)
+     evas_event_feed_mouse_move(ee->evas, ee->h - y - 1, x, timestamp, NULL);
+   else if (ee->rotation == 180)
+     evas_event_feed_mouse_move(ee->evas, ee->w - x - 1, ee->h - y - 1, timestamp, NULL);
+   else if (ee->rotation == 270)
+     evas_event_feed_mouse_move(ee->evas, y, ee->w - x - 1, timestamp, NULL);
+}
+
+static char *
+_ecore_evas_x_winid_str_get(Ecore_X_Window win)
+{
+   const char *vals = "qWeRtYuIoP5-$&<~";
+   static char id[9];
+   unsigned int val;
+
+   val = (unsigned int)win;
+   id[0] = vals[(val >> 28) & 0xf];
+   id[1] = vals[(val >> 24) & 0xf];
+   id[2] = vals[(val >> 20) & 0xf];
+   id[3] = vals[(val >> 16) & 0xf];
+   id[4] = vals[(val >> 12) & 0xf];
+   id[5] = vals[(val >>  8) & 0xf];
+   id[6] = vals[(val >>  4) & 0xf];
+   id[7] = vals[(val      ) & 0xf];
+   id[8] = 0;
+   return id;
+}
+
+static Ecore_Evas *
+_ecore_evas_x_match(Ecore_X_Window win)
+{
+   Ecore_Evas *ee;
+
+   ee = evas_hash_find(ecore_evases_hash, _ecore_evas_x_winid_str_get(win));
+   return ee;
+}
+
+static void
+_ecore_evas_x_resize_shape(Ecore_Evas *ee)
+{
+   if (!strcmp(ee->driver, "software_x11") || !strcmp(ee->driver, "software_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       Evas_Engine_Info_Software_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       Evas_Engine_Info_Software_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+       if (einfo)
+         {
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+             xcb_rectangle_t     rectangle;
+            Ecore_X_GC          gc;
+             uint32_t            value_list;
+# else
+            GC gc;
+            XGCValues gcv;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+             gc = xcb_generate_id(ecore_x_connection_get());
+            value_list = 0;
+             xcb_create_gc(ecore_x_connection_get(), gc, ee->engine.x.mask,
+                           XCB_GC_FOREGROUND, &value_list);
+             rectangle.x = 0;
+             rectangle.y = 0;
+             rectangle.width = ee->w;
+             rectangle.height = ee->h;
+            xcb_poly_fill_rectangle(ecore_x_connection_get(), ee->engine.x.mask, gc,
+                                     1, &rectangle);
+            xcb_free_gc(ecore_x_connection_get(), gc);
+# else
+            gcv.foreground = 0;
+            gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask,
+                           GCForeground,
+                           &gcv);
+            XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                           0, 0, ee->w, ee->h);
+            XFreeGC(ecore_x_display_get(), gc);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+            einfo->info.mask = ee->engine.x.mask;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+     }
+   else if (!strcmp(ee->driver, "xrender_x11") || !strcmp(ee->driver, "xrender_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       Evas_Engine_Info_XRender_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_XRender_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       Evas_Engine_Info_XRender_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+       if (einfo)
+         {
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+             xcb_rectangle_t rectangle;
+            Ecore_X_GC      gc;
+             uint32_t        value_list;
+# else
+            GC gc;
+            XGCValues gcv;
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+             gc = xcb_generate_id(ecore_x_connection_get());
+            value_list = 0;
+            xcb_create_gc(ecore_x_connection_get(), gc, ee->engine.x.mask,
+                           XCB_GC_FOREGROUND, &value_list);
+             rectangle.x = 0;
+             rectangle.y = 0;
+             rectangle.width = ee->w;
+             rectangle.height = ee->h;
+            xcb_poly_fill_rectangle(ecore_x_connection_get(), ee->engine.x.mask, gc,
+                                     1, &rectangle);
+            xcb_free_gc(ecore_x_connection_get(), gc);
+# else
+            gcv.foreground = 0;
+            gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask,
+                           GCForeground,
+                           &gcv);
+            XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                           0, 0, ee->w, ee->h);
+            XFreeGC(ecore_x_display_get(), gc);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+            einfo->info.mask = ee->engine.x.mask;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+
+         }
+#endif /* BUILD_ECORE_EVAS_XRENDER_X11 || BUILD_ECORE_EVAS_XRENDER_XCB */
+     }
+   else if (!strcmp(ee->driver, "software_16_x11"))
+     {
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+# if 0 /* XXX no shaped window support for software_16_x11 */
+       Evas_Engine_Info_Software_16_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+       if (einfo)
+         {
+            GC gc;
+            XGCValues gcv;
+
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+            einfo->info.mask = ee->engine.x.mask;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+            evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+         }
+# endif /* XXX no shaped window support for software_16_x11 */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+     }
+}
+
+static void
+_ecore_evas_x_modifier_locks_update(Ecore_Evas *ee, int modifiers)
+{
+   if (modifiers & ECORE_X_MODIFIER_SHIFT)
+     evas_key_modifier_on(ee->evas, "Shift");
+   else
+     evas_key_modifier_off(ee->evas, "Shift");
+   if (modifiers & ECORE_X_MODIFIER_CTRL)
+     evas_key_modifier_on(ee->evas, "Control");
+   else
+     evas_key_modifier_off(ee->evas, "Control");
+   if (modifiers & ECORE_X_MODIFIER_ALT)
+     evas_key_modifier_on(ee->evas, "Alt");
+   else
+     evas_key_modifier_off(ee->evas, "Alt");
+   if (modifiers & ECORE_X_MODIFIER_WIN)
+     {
+       evas_key_modifier_on(ee->evas, "Super");
+       evas_key_modifier_on(ee->evas, "Hyper");
+     }
+   else
+     {
+       evas_key_modifier_off(ee->evas, "Super");
+       evas_key_modifier_off(ee->evas, "Hyper");
+     }
+   if (modifiers & ECORE_X_LOCK_SCROLL)
+     evas_key_lock_on(ee->evas, "Scroll_Lock");
+   else
+     evas_key_lock_off(ee->evas, "Scroll_Lock");
+   if (modifiers & ECORE_X_LOCK_NUM)
+     evas_key_lock_on(ee->evas, "Num_Lock");
+   else
+     evas_key_lock_off(ee->evas, "Num_Lock");
+   if (modifiers & ECORE_X_LOCK_CAPS)
+     evas_key_lock_on(ee->evas, "Caps_Lock");
+   else
+     evas_key_lock_off(ee->evas, "Caps_Lock");
+}
+
+static int
+_ecore_evas_x_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Key_Down *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   evas_event_feed_key_down(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, e->time, NULL);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_key_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Key_Up *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   evas_event_feed_key_up(ee->evas, e->keyname, e->keysymbol, e->key_compose, NULL, e->time, NULL);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_button_down(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_Button_Down *e;
+   Evas_Button_Flags flags = EVAS_BUTTON_NONE;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_down(ee->evas, e->button, flags, e->time, NULL);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_button_up(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_Button_Up *e;
+   Evas_Button_Flags flags = EVAS_BUTTON_NONE;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   if (e->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
+   if (e->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
+   evas_event_feed_mouse_up(ee->evas, e->button, flags, e->time, NULL);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_Wheel *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   evas_event_feed_mouse_wheel(ee->evas, e->direction, e->z, e->time, NULL);
+
+   return 1;
+}
+
+/* TODO: we need to make this work for all the states, not just sticky */
+static int
+_ecore_evas_x_event_property_change(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Property *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (e->atom == ECORE_X_ATOM_NET_WM_STATE)
+     {
+       unsigned int i, num;
+       Ecore_X_Window_State *state;
+       int sticky;
+
+#ifdef HAVE_ECORE_X_XCB
+        ecore_x_netwm_window_state_get_prefetch(e->win);
+#endif /* HAVE_ECORE_X_XCB */
+       sticky = 0;
+
+       /* TODO: we need to move those to the end, with if statements */
+       ee->engine.x.state.modal = 0;
+       ee->engine.x.state.maximized_v = 0;
+       ee->engine.x.state.maximized_h = 0;
+       ee->engine.x.state.shaded = 0;
+       ee->engine.x.state.skip_taskbar = 0;
+       ee->engine.x.state.skip_pager = 0;
+       ee->prop.fullscreen = 0;
+       ee->engine.x.state.fullscreen = 0;
+       ee->engine.x.state.above = 0;
+       ee->engine.x.state.below = 0;
+
+#ifdef HAVE_ECORE_X_XCB
+        ecore_x_netwm_window_state_get_fetch();
+#endif /* HAVE_ECORE_X_XCB */
+       ecore_x_netwm_window_state_get(e->win, &state, &num);
+       if (state)
+         {
+            for (i = 0; i < num; i++)
+              {
+                 switch (state[i])
+                   {
+                    case ECORE_X_WINDOW_STATE_MODAL:
+                       ee->engine.x.state.modal = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_STICKY:
+                       if (ee->prop.sticky && ee->engine.x.state.sticky)
+                         break;
+
+                       sticky = 1;
+                       ee->prop.sticky = 1;
+                       ee->engine.x.state.sticky = 1;
+                       if (ee->func.fn_sticky) ee->func.fn_sticky(ee);
+                       break;
+                    case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
+                       ee->engine.x.state.maximized_v = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
+                       ee->engine.x.state.maximized_h = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_SHADED:
+                       ee->engine.x.state.shaded = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
+                       ee->engine.x.state.skip_taskbar = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_SKIP_PAGER:
+                       ee->engine.x.state.skip_pager = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_FULLSCREEN:
+                       ee->prop.fullscreen = 1;
+                       ee->engine.x.state.fullscreen = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_ABOVE:
+                       ee->engine.x.state.above = 1;
+                       break;
+                    case ECORE_X_WINDOW_STATE_BELOW:
+                       ee->engine.x.state.below = 1;
+                       break;
+                    default:
+                       break;
+                   }
+              }
+            free(state);
+         }
+#ifdef HAVE_ECORE_X_XCB
+        ecore_xcb_reply_free();
+#endif /* HAVE_ECORE_X_XCB */
+
+       if (ee->prop.sticky && !sticky)
+         {
+            ee->prop.sticky = 0;
+            ee->engine.x.state.sticky = 0;
+            if (ee->func.fn_unsticky) ee->func.fn_unsticky(ee);
+         }
+     }
+
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_visibility_change(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Visibility_Change *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+//   printf("VIS CHANGE OBSCURED: %p %i\n", ee, e->fully_obscured);
+   if (e->fully_obscured) ee->draw_ok = 0;
+   else ee->draw_ok = 1;
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_Move *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   _ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_In *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+/*
+     {
+       time_t t;
+       char *ct;
+
+       const char *modes[] = {
+          "MODE_NORMAL",
+            "MODE_WHILE_GRABBED",
+            "MODE_GRAB",
+            "MODE_UNGRAB"
+       };
+       const char *details[] = {
+          "DETAIL_ANCESTOR",
+            "DETAIL_VIRTUAL",
+            "DETAIL_INFERIOR",
+            "DETAIL_NON_LINEAR",
+            "DETAIL_NON_LINEAR_VIRTUAL",
+            "DETAIL_POINTER",
+            "DETAIL_POINTER_ROOT",
+            "DETAIL_DETAIL_NONE"
+       };
+       t = time(NULL);
+       ct = ctime(&t);
+       ct[strlen(ct) - 1] = 0;
+       printf("@@ ->IN 0x%x 0x%x %s md=%s dt=%s\n",
+              e->win, e->event_win,
+              ct,
+              modes[e->mode],
+              details[e->detail]);
+     }
+ */
+// disable. causes mroe problems than it fixes
+//   if ((e->mode == ECORE_X_EVENT_MODE_GRAB) ||
+//       (e->mode == ECORE_X_EVENT_MODE_UNGRAB))
+//     return 0;
+/* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
+   if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee);
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   evas_event_feed_mouse_in(ee->evas, e->time, NULL);
+   _ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_mouse_out(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Mouse_Out *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+/*
+     {
+       time_t t;
+       char *ct;
+
+       const char *modes[] = {
+          "MODE_NORMAL",
+            "MODE_WHILE_GRABBED",
+            "MODE_GRAB",
+            "MODE_UNGRAB"
+       };
+       const char *details[] = {
+          "DETAIL_ANCESTOR",
+            "DETAIL_VIRTUAL",
+            "DETAIL_INFERIOR",
+            "DETAIL_NON_LINEAR",
+            "DETAIL_NON_LINEAR_VIRTUAL",
+            "DETAIL_POINTER",
+            "DETAIL_POINTER_ROOT",
+            "DETAIL_DETAIL_NONE"
+       };
+       t = time(NULL);
+       ct = ctime(&t);
+       ct[strlen(ct) - 1] = 0;
+       printf("@@ ->OUT 0x%x 0x%x %s md=%s dt=%s\n",
+              e->win, e->event_win,
+              ct,
+              modes[e->mode],
+              details[e->detail]);
+     }
+ */
+// disable. causes more problems than it fixes
+//   if ((e->mode == ECORE_X_EVENT_MODE_GRAB) ||
+//       (e->mode == ECORE_X_EVENT_MODE_UNGRAB))
+//     return 0;
+/* if (e->mode != ECORE_X_EVENT_MODE_NORMAL) return 0; */
+   _ecore_evas_x_modifier_locks_update(ee, e->modifiers);
+   _ecore_evas_x_mouse_move_process(ee, e->x, e->y, e->time);
+   if (e->mode == ECORE_X_EVENT_MODE_GRAB)
+     evas_event_feed_mouse_cancel(ee->evas, e->time, NULL);
+   evas_event_feed_mouse_out(ee->evas, e->time, NULL);
+   if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee);
+   if (ee->prop.cursor.object) evas_object_hide(ee->prop.cursor.object);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_focus_in(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Focus_In *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   ee->prop.focused = 1;
+   if (ee->func.fn_focus_in) ee->func.fn_focus_in(ee);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_focus_out(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Focus_Out *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if ((!ee) || (ee->ignore_events)) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->prop.fullscreen)
+     ecore_x_window_focus(ee->engine.x.win);
+   ee->prop.focused = 0;
+   if (ee->func.fn_focus_out) ee->func.fn_focus_out(ee);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_damage(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Damage *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->engine.x.using_bg_pixmap) return 1;
+//   printf("EXPOSE %p [%i] %i %i %ix%i\n", ee, ee->prop.avoid_damage, e->x, e->y, e->w, e->h);
+   if (ee->prop.avoid_damage)
+     {
+#ifdef HAVE_ECORE_X_XCB
+# warning [XCB] No Region code
+#else
+       XRectangle xr;
+       Region tmpr;
+
+       if (!ee->engine.x.damages) ee->engine.x.damages = XCreateRegion();
+       tmpr = XCreateRegion();
+       xr.x = e->x;
+       xr.y = e->y;
+       xr.width = e->w;
+       xr.height = e->h;
+       XUnionRectWithRegion(&xr, ee->engine.x.damages, tmpr);
+       XDestroyRegion(ee->engine.x.damages);
+       ee->engine.x.damages = tmpr;
+/* no - this breaks things badly. disable. Ecore_X_Rectangle != XRectangle - see
+ *  the typedefs in x's headers and ecore_x's. also same with Region - it's a pointer in x - not an X ID
+       Ecore_X_Rectangle rect;
+       Ecore_X_Region    tmpr;
+
+       if (!ee->engine.x.damages) ee->engine.x.damages = XCreateRegion();
+       tmpr = XCreateRegion();
+       rect.x = e->x;
+       rect.y = e->y;
+       rect.width = e->w;
+       rect.height = e->h;
+       XUnionRectWithRegion(&rect, ee->engine.x.damages, tmpr);
+       XDestroyRegion(ee->engine.x.damages);
+       ee->engine.x.damages = tmpr;
+ */
+#endif /* ! HAVE_ECORE_X_XCB */
+     }
+   else
+     {
+       if (ee->rotation == 0)
+         evas_damage_rectangle_add(ee->evas,
+                                   e->x,
+                                   e->y,
+                                   e->w, e->h);
+       else if (ee->rotation == 90)
+         evas_damage_rectangle_add(ee->evas,
+                                   ee->h - e->y - e->h,
+                                   e->x,
+                                   e->h, e->w);
+       else if (ee->rotation == 180)
+         evas_damage_rectangle_add(ee->evas,
+                                   ee->w - e->x - e->w,
+                                   ee->h - e->y - e->h,
+                                   e->w, e->h);
+       else if (ee->rotation == 270)
+         evas_damage_rectangle_add(ee->evas,
+                                   e->y,
+                                   ee->w - e->x - e->w,
+                                   e->h, e->w);
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_destroy(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Destroy *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->func.fn_destroy) ee->func.fn_destroy(ee);
+   ecore_evas_free(ee);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_configure(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Configure *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->engine.x.direct_resize) return 1;
+
+   if ((e->from_wm) || (ee->prop.override))
+     {
+       if ((ee->x != e->x) || (ee->y != e->y))
+         {
+            ee->x = e->x;
+            ee->y = e->y;
+            if (ee->func.fn_move) ee->func.fn_move(ee);
+         }
+     }
+   if ((ee->w != e->w) || (ee->h != e->h))
+     {
+       ee->w = e->w;
+       ee->h = e->h;
+       if ((ee->rotation == 90) || (ee->rotation == 270))
+         {
+            evas_output_size_set(ee->evas, ee->h, ee->w);
+            evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+         }
+       else
+         {
+            evas_output_size_set(ee->evas, ee->w, ee->h);
+            evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+         }
+       if (ee->prop.avoid_damage)
+         {
+            int pdam;
+
+            pdam = ecore_evas_avoid_damage_get(ee);
+            ecore_evas_avoid_damage_set(ee, 0);
+            ecore_evas_avoid_damage_set(ee, pdam);
+         }
+       if ((ee->shaped) || (ee->alpha))
+         _ecore_evas_x_resize_shape(ee);
+       if ((ee->expecting_resize.w > 0) &&
+           (ee->expecting_resize.h > 0))
+         {
+            if ((ee->expecting_resize.w == ee->w) &&
+                (ee->expecting_resize.h == ee->h))
+              _ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                               ecore_x_current_time_get());
+            ee->expecting_resize.w = 0;
+            ee->expecting_resize.h = 0;
+         }
+       if (ee->func.fn_resize) ee->func.fn_resize(ee);
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_delete_request(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Delete_Request *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_show(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Show *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (ee->visible) return 0; /* dont pass it on */
+//   printf("SHOW EVENT %p\n", ee);
+   ee->visible = 1;
+   if (ee->func.fn_show) ee->func.fn_show(ee);
+   return 1;
+}
+
+static int
+_ecore_evas_x_event_window_hide(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   Ecore_Evas *ee;
+   Ecore_X_Event_Window_Hide *e;
+
+   e = event;
+   ee = _ecore_evas_x_match(e->win);
+   if (!ee) return 1; /* pass on event */
+   if (e->win != ee->engine.x.win) return 1;
+   if (!ee->visible) return 0; /* dont pass it on */
+//   printf("HIDE EVENT %p\n", ee);
+   ee->visible = 0;
+   if (ee->func.fn_hide) ee->func.fn_hide(ee);
+   return 1;
+}
+
+/* FIXME, should be in idler */
+/* FIXME, round trip */
+static void
+_ecore_evas_x_size_pos_hints_update(Ecore_Evas *ee)
+{
+# ifdef HAVE_ECORE_X_XCB
+   ecore_x_icccm_size_pos_hints_get_prefetch(ee->engine.x.win);
+   ecore_x_icccm_size_pos_hints_get_fetch();
+# endif /* HAVE_ECORE_X_XCB */
+   ecore_x_icccm_size_pos_hints_set(ee->engine.x.win,
+                                   ee->prop.request_pos /*request_pos */,
+                                   ECORE_X_GRAVITY_NW /* gravity */,
+                                   ee->prop.min.w /* min_w */,
+                                   ee->prop.min.h /* min_h */,
+                                   ee->prop.max.w /* max_w */,
+                                   ee->prop.max.h /* max_h */,
+                                   ee->prop.base.w /* base_w */,
+                                   ee->prop.base.h /* base_h */,
+                                   ee->prop.step.w /* step_x */,
+                                   ee->prop.step.h /* step_y */,
+                                   0 /* min_aspect */,
+                                   0 /* max_aspect */);
+# ifdef HAVE_ECORE_X_XCB
+   ecore_xcb_reply_free();
+# endif /* HAVE_ECORE_X_XCB */
+}
+
+/* FIXME, should be in idler */
+static void
+_ecore_evas_x_state_update(Ecore_Evas *ee)
+{
+   Ecore_X_Window_State state[10];
+   int num;
+
+   num = 0;
+
+   /*
+   if (bd->client.netwm.state.modal)
+     state[num++] = ECORE_X_WINDOW_STATE_MODAL;
+   */
+   if (ee->engine.x.state.sticky)
+     state[num++] = ECORE_X_WINDOW_STATE_STICKY;
+   /*
+   if (bd->client.netwm.state.maximized_v)
+     state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_VERT;
+   if (bd->client.netwm.state.maximized_h)
+     state[num++] = ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ;
+   if (bd->client.netwm.state.shaded)
+     state[num++] = ECORE_X_WINDOW_STATE_SHADED;
+   if (bd->client.netwm.state.skip_taskbar)
+     state[num++] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+   if (bd->client.netwm.state.skip_pager)
+     state[num++] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
+   if (bd->client.netwm.state.hidden)
+     state[num++] = ECORE_X_WINDOW_STATE_HIDDEN;
+   */
+   if (ee->engine.x.state.fullscreen)
+     state[num++] = ECORE_X_WINDOW_STATE_FULLSCREEN;
+   if (ee->engine.x.state.above)
+     state[num++] = ECORE_X_WINDOW_STATE_ABOVE;
+   if (ee->engine.x.state.below)
+     state[num++] = ECORE_X_WINDOW_STATE_BELOW;
+
+   ecore_x_netwm_window_state_set(ee->engine.x.win, state, num);
+}
+
+static void
+_ecore_evas_x_layer_update(Ecore_Evas *ee)
+{
+   if (ee->should_be_visible)
+     {
+       /* We need to send a netwm request to the wm */
+       /* FIXME: Do we have to remove old state before adding new? */
+       if (ee->prop.layer < 3)
+         {
+            if (ee->engine.x.state.above)
+              {
+                 ee->engine.x.state.above = 0;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_ABOVE, -1, 0);
+              }
+            if (!ee->engine.x.state.below)
+              {
+                 ee->engine.x.state.below = 1;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_BELOW, -1, 1);
+              }
+         }
+       else if (ee->prop.layer > 5)
+         {
+            if (ee->engine.x.state.below)
+              {
+                 ee->engine.x.state.below = 0;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_BELOW, -1, 0);
+              }
+            if (!ee->engine.x.state.above)
+              {
+                 ee->engine.x.state.above = 1;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_ABOVE, -1, 1);
+              }
+         }
+       else
+         {
+            if (ee->engine.x.state.below)
+              {
+                 ee->engine.x.state.below = 0;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_BELOW, -1, 0);
+              }
+            if (ee->engine.x.state.above)
+              {
+                 ee->engine.x.state.above = 0;
+                 ecore_x_netwm_state_request_send(ee->engine.x.win,
+                                                  ee->engine.x.win_root,
+                                                  ECORE_X_WINDOW_STATE_ABOVE, -1, 0);
+              }
+         }
+     }
+   else
+     {
+       /* Just set the state */
+       if (ee->prop.layer < 3)
+         {
+            if ((ee->engine.x.state.above) || (!ee->engine.x.state.below))
+              {
+                 ee->engine.x.state.above = 0;
+                 ee->engine.x.state.below = 1;
+                 _ecore_evas_x_state_update(ee);
+              }
+         }
+       else if (ee->prop.layer > 5)
+         {
+            if ((!ee->engine.x.state.above) || (ee->engine.x.state.below))
+              {
+                 ee->engine.x.state.above = 1;
+                 ee->engine.x.state.below = 0;
+                 _ecore_evas_x_state_update(ee);
+              }
+         }
+       else
+         {
+            if ((ee->engine.x.state.above) || (ee->engine.x.state.below))
+              {
+                 ee->engine.x.state.above = 0;
+                 ee->engine.x.state.below = 0;
+                 _ecore_evas_x_state_update(ee);
+              }
+         }
+     }
+   /* FIXME: Set gnome layer */
+}
+
+static int
+_ecore_evas_x_idle_enter(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+   double t1 = 0.0;
+   double t2 = 0.0;
+
+   if (_ecore_evas_fps_debug)
+     {
+       t1 = ecore_time_get();
+     }
+   for (l = (Ecore_List2 *)ecore_evases; l; l = l->next)
+     {
+       Ecore_Evas *ee;
+
+       ee = (Ecore_Evas *)l;
+       _ecore_evas_x_render(ee);
+     }
+   ecore_x_flush();
+   if (_ecore_evas_fps_debug)
+     {
+       t2 = ecore_time_get();
+       _ecore_evas_fps_debug_rendertime_add(t2 - t1);
+     }
+   return 1;
+}
+
+static int
+_ecore_evas_x_init(void)
+{
+   _ecore_evas_init_count++;
+   if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
+   if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
+   ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_x_idle_enter, NULL);
+   ecore_evas_event_handlers[0]  = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, _ecore_evas_x_event_key_down, NULL);
+   ecore_evas_event_handlers[1]  = ecore_event_handler_add(ECORE_X_EVENT_KEY_UP, _ecore_evas_x_event_key_up, NULL);
+   ecore_evas_event_handlers[2]  = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, _ecore_evas_x_event_mouse_button_down, NULL);
+   ecore_evas_event_handlers[3]  = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, _ecore_evas_x_event_mouse_button_up, NULL);
+   ecore_evas_event_handlers[4]  = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _ecore_evas_x_event_mouse_move, NULL);
+   ecore_evas_event_handlers[5]  = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _ecore_evas_x_event_mouse_in, NULL);
+   ecore_evas_event_handlers[6]  = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _ecore_evas_x_event_mouse_out, NULL);
+   ecore_evas_event_handlers[7]  = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _ecore_evas_x_event_window_focus_in, NULL);
+   ecore_evas_event_handlers[8]  = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _ecore_evas_x_event_window_focus_out, NULL);
+   ecore_evas_event_handlers[9]  = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DAMAGE, _ecore_evas_x_event_window_damage, NULL);
+   ecore_evas_event_handlers[10] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _ecore_evas_x_event_window_destroy, NULL);
+   ecore_evas_event_handlers[11] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, _ecore_evas_x_event_window_configure, NULL);
+   ecore_evas_event_handlers[12] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, _ecore_evas_x_event_window_delete_request, NULL);
+   ecore_evas_event_handlers[13] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, _ecore_evas_x_event_window_show, NULL);
+   ecore_evas_event_handlers[14] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_HIDE, _ecore_evas_x_event_window_hide, NULL);
+   ecore_evas_event_handlers[15] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL, _ecore_evas_x_event_mouse_wheel, NULL);
+   ecore_evas_event_handlers[16] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _ecore_evas_x_event_property_change, NULL);
+   ecore_evas_event_handlers[17] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _ecore_evas_x_event_visibility_change, NULL);
+   if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
+   return _ecore_evas_init_count;
+}
+
+static void
+_ecore_evas_x_free(Ecore_Evas *ee)
+{
+   ecore_x_window_del(ee->engine.x.win);
+   if (ee->engine.x.pmap) ecore_x_pixmap_del(ee->engine.x.pmap);
+   if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+   if (ee->engine.x.gc) ecore_x_gc_del(ee->engine.x.gc);
+#ifdef HAVE_ECORE_X_XCB
+# warning [XCB] No Region code
+#else
+   if (ee->engine.x.damages) XDestroyRegion(ee->engine.x.damages);
+#endif /* ! HAVE_ECORE_X_XCB */
+   ee->engine.x.pmap = 0;
+   ee->engine.x.mask = 0;
+   ee->engine.x.gc = 0;
+#ifdef HAVE_ECORE_X_XCB
+# warning [XCB] No Region code
+#else
+   ee->engine.x.damages = 0;
+#endif /* ! HAVE_ECORE_X_XCB */
+   ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   while (ee->engine.x.win_extra)
+     {
+       Ecore_X_Window *winp;
+
+       winp = ee->engine.x.win_extra->data;
+       ee->engine.x.win_extra = evas_list_remove_list(ee->engine.x.win_extra, ee->engine.x.win_extra);
+       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee);
+       free(winp);
+     }
+   ecore_evases = _ecore_list2_remove(ecore_evases, ee);
+   _ecore_evas_x_shutdown();
+   ecore_x_shutdown();
+}
+
+/* FIXME: round trip */
+static void
+_ecore_evas_x_callback_delete_request_set(Ecore_Evas *ee, void (*func) (Ecore_Evas *ee))
+{
+#ifdef HAVE_ECORE_X_XCB
+   ecore_x_icccm_protocol_get_prefetch(ee->engine.x.win);
+   ecore_x_icccm_protocol_get_fetch();
+#endif /* HAVE_ECORE_X_XCB */
+   if (func)
+     ecore_x_icccm_protocol_set(ee->engine.x.win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1);
+   else
+     ecore_x_icccm_protocol_set(ee->engine.x.win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 0);
+   ee->func.fn_delete_request = func;
+#ifdef HAVE_ECORE_X_XCB
+   ecore_xcb_reply_free();
+#endif /* HAVE_ECORE_X_XCB */
+}
+
+static void
+_ecore_evas_x_move(Ecore_Evas *ee, int x, int y)
+{
+   if (ee->engine.x.direct_resize)
+     {
+       if (!ee->engine.x.managed)
+         {
+            if ((x != ee->x) || (y != ee->y))
+              {
+                 ee->x = x;
+                 ee->y = y;
+                 ecore_x_window_move(ee->engine.x.win, x, y);
+                 if (!ee->should_be_visible)
+                   {
+                      /* We need to request pos */
+                      ee->prop.request_pos = 1;
+                      _ecore_evas_x_size_pos_hints_update(ee);
+                   }
+                 if (ee->func.fn_move) ee->func.fn_move(ee);
+              }
+         }
+     }
+   else
+     {
+       ecore_x_window_move(ee->engine.x.win, x, y);
+       if (!ee->should_be_visible)
+         {
+            /* We need to request pos */
+            ee->prop.request_pos = 1;
+            _ecore_evas_x_size_pos_hints_update(ee);
+         }
+       if (!ee->engine.x.managed)
+         {
+            ee->x = x;
+            ee->y = y;
+         }
+     }
+}
+
+static void
+_ecore_evas_x_managed_move(Ecore_Evas *ee, int x, int y)
+{
+   if (ee->engine.x.direct_resize)
+     {
+       ee->engine.x.managed = 1;
+       if ((x != ee->x) || (y != ee->y))
+         {
+            ee->x = x;
+            ee->y = y;
+            if (ee->func.fn_move) ee->func.fn_move(ee);
+         }
+     }
+}
+
+static void
+_ecore_evas_x_resize(Ecore_Evas *ee, int w, int h)
+{
+   if (ee->engine.x.direct_resize)
+     {
+       if ((ee->w != w) || (ee->h != h))
+         {
+            ecore_x_window_resize(ee->engine.x.win, w, h);
+            ee->w = w;
+            ee->h = h;
+            if ((ee->rotation == 90) || (ee->rotation == 270))
+              {
+                 evas_output_size_set(ee->evas, ee->h, ee->w);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+              }
+            else
+              {
+                 evas_output_size_set(ee->evas, ee->w, ee->h);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+              }
+            if (ee->prop.avoid_damage)
+              {
+                 int pdam;
+
+                 pdam = ecore_evas_avoid_damage_get(ee);
+                 ecore_evas_avoid_damage_set(ee, 0);
+                 ecore_evas_avoid_damage_set(ee, pdam);
+              }
+            if ((ee->shaped) || (ee->alpha))
+              _ecore_evas_x_resize_shape(ee);
+            if (ee->func.fn_resize) ee->func.fn_resize(ee);
+         }
+     }
+   else
+     ecore_x_window_resize(ee->engine.x.win, w, h);
+}
+
+static void
+_ecore_evas_x_move_resize(Ecore_Evas *ee, int x, int y, int w, int h)
+{
+   if (ee->engine.x.direct_resize)
+     {
+       if ((ee->w != w) || (ee->h != h) || (x != ee->x) || (y != ee->y))
+         {
+            int change_size = 0, change_pos = 0;
+
+            if ((ee->w != w) || (ee->h != h)) change_size = 1;
+            if (!ee->engine.x.managed)
+              {
+                 if ((x != ee->x) || (y != ee->y)) change_pos = 1;
+              }
+            ecore_x_window_move_resize(ee->engine.x.win, x, y, w, h);
+            if (!ee->engine.x.managed)
+              {
+                 ee->x = x;
+                 ee->y = y;
+              }
+            ee->w = w;
+            ee->h = h;
+            if ((ee->rotation == 90) || (ee->rotation == 270))
+              {
+                 evas_output_size_set(ee->evas, ee->h, ee->w);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+              }
+            else
+              {
+                 evas_output_size_set(ee->evas, ee->w, ee->h);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+              }
+            if (ee->prop.avoid_damage)
+              {
+                 int pdam;
+
+                 pdam = ecore_evas_avoid_damage_get(ee);
+                 ecore_evas_avoid_damage_set(ee, 0);
+                 ecore_evas_avoid_damage_set(ee, pdam);
+              }
+            if ((ee->shaped) || (ee->alpha))
+              _ecore_evas_x_resize_shape(ee);
+            if (change_pos)
+              {
+                 if (ee->func.fn_move) ee->func.fn_move(ee);
+              }
+            if (change_size)
+              {
+                 if (ee->func.fn_resize) ee->func.fn_resize(ee);
+              }
+         }
+     }
+   else
+     {
+       ecore_x_window_move_resize(ee->engine.x.win, x, y, w, h);
+       if (!ee->engine.x.managed)
+         {
+            ee->x = x;
+            ee->y = y;
+         }
+     }
+}
+
+static void
+_ecore_evas_x_rotation_set_internal(Ecore_Evas *ee, int rotation,
+                                   Evas_Engine_Info *einfo)
+{
+   int rot_dif;
+
+   rot_dif = ee->rotation - rotation;
+   if (rot_dif < 0) rot_dif = -rot_dif;
+
+   if (rot_dif != 180)
+     {
+       int minw, minh, maxw, maxh, basew, baseh, stepw, steph;
+
+       evas_engine_info_set(ee->evas, einfo);
+       if (!ee->prop.fullscreen)
+         {
+            ecore_x_window_resize(ee->engine.x.win, ee->h, ee->w);
+            ee->expecting_resize.w = ee->h;
+            ee->expecting_resize.h = ee->w;
+         }
+       else
+         {
+            int w, h;
+
+            ecore_x_window_size_get(ee->engine.x.win, &w, &h);
+            ecore_x_window_resize(ee->engine.x.win, h, w);
+            if ((rotation == 0) || (rotation == 180))
+              {
+                 evas_output_size_set(ee->evas, ee->w, ee->h);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+              }
+            else
+              {
+                 evas_output_size_set(ee->evas, ee->h, ee->w);
+                 evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+              }
+            if (ee->func.fn_resize) ee->func.fn_resize(ee);
+         }
+       ecore_evas_size_min_get(ee, &minw, &minh);
+       ecore_evas_size_max_get(ee, &maxw, &maxh);
+       ecore_evas_size_base_get(ee, &basew, &baseh);
+       ecore_evas_size_step_get(ee, &stepw, &steph);
+       ee->rotation = rotation;
+       ecore_evas_size_min_set(ee, minh, minw);
+       ecore_evas_size_max_set(ee, maxh, maxw);
+       ecore_evas_size_base_set(ee, baseh, basew);
+       ecore_evas_size_step_set(ee, steph, stepw);
+       _ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                        ecore_x_current_time_get());
+     }
+   else
+     {
+       evas_engine_info_set(ee->evas, einfo);
+       ee->rotation = rotation;
+       _ecore_evas_x_mouse_move_process(ee, ee->mouse.x, ee->mouse.y,
+                                        ecore_x_current_time_get());
+       if (ee->func.fn_resize) ee->func.fn_resize(ee);
+     }
+
+   if ((ee->rotation == 90) || (ee->rotation == 270))
+     evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+   else
+     evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+}
+
+static void
+_ecore_evas_x_rotation_set(Ecore_Evas *ee, int rotation)
+{
+   if (ee->rotation == rotation) return;
+   if (!strcmp(ee->driver, "gl_x11")) return;
+   if (!strcmp(ee->driver, "xrender_x11")) return;
+   if (!strcmp(ee->driver, "software_x11") || !strcmp(ee->driver, "software_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       Evas_Engine_Info_Software_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       Evas_Engine_Info_Software_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+       if (!einfo) return;
+       einfo->info.rotation = rotation;
+       _ecore_evas_x_rotation_set_internal
+         (ee, rotation, (Evas_Engine_Info *)einfo);
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+     }
+   else if (!strcmp(ee->driver,  "software_16_x11"))
+     {
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+       Evas_Engine_Info_Software_16_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+       if (!einfo) return;
+       einfo->info.rotation = rotation;
+       _ecore_evas_x_rotation_set_internal
+         (ee, rotation, (Evas_Engine_Info *)einfo);
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+     }
+}
+
+static void
+_ecore_evas_x_shaped_set(Ecore_Evas *ee, int shaped)
+{
+   if (((ee->shaped) && (shaped)) || ((!ee->shaped) && (!shaped)))
+     return;
+   if (!strcmp(ee->driver, "gl_x11")) return;
+   if (!strcmp(ee->driver, "software_x11") || !strcmp(ee->driver, "software_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       Evas_Engine_Info_Software_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       Evas_Engine_Info_Software_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+       ee->shaped = shaped;
+       if (einfo)
+         {
+            if (ee->shaped)
+              {
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+                  xcb_rectangle_t rectangle;
+                 Ecore_X_GC      gc;
+                 uint32_t        value_list;
+# else
+                 GC gc;
+                 XGCValues gcv;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+                 if (!ee->engine.x.mask)
+                   ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+                  gc = xcb_generate_id(ecore_x_connection_get());
+                 value_list = 0;
+                 xcb_create_gc(ecore_x_connection_get(),
+                                gc, ee->engine.x.mask,
+                               XCB_GC_FOREGROUND,
+                                &value_list);
+                  rectangle.x = 0;
+                  rectangle.y = 0;
+                  rectangle.width = ee->w;
+                  rectangle.height = ee->h;
+                 xcb_poly_fill_rectangle(ecore_x_connection_get(),
+                                          ee->engine.x.mask, gc,
+                                          1, &rectangle);
+                 xcb_free_gc(ecore_x_connection_get(), gc);
+# else
+                 gcv.foreground = 0;
+                 gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask,
+                                GCForeground,
+                                &gcv);
+                 XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                                0, 0, ee->w, ee->h);
+                 XFreeGC(ecore_x_display_get(), gc);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+                 einfo->info.mask = ee->engine.x.mask;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+                 ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+              }
+            else
+              {
+                 if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+                 ee->engine.x.mask = 0;
+                 einfo->info.mask = 0;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+                 ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+              }
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+     }
+   else if (!strcmp(ee->driver, "xrender_x11") || !strcmp(ee->driver, "xrender_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       Evas_Engine_Info_XRender_Xcb *einfo;
+# else
+       Evas_Engine_Info_XRender_X11 *einfo;
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+
+       ee->shaped = shaped;
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       einfo = (Evas_Engine_Info_XRender_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+       if (einfo)
+         {
+            if (ee->shaped)
+              {
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+                  xcb_rectangle_t rectangle;
+                 Ecore_X_GC      gc;
+                 uint32_t        value_list;
+# else
+                 GC gc;
+                 XGCValues gcv;
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+
+                 if (!ee->engine.x.mask)
+                   ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+                  gc = xcb_generate_id(ecore_x_connection_get());
+                 value_list = 0;
+                 xcb_create_gc(ecore_x_connection_get(),
+                                gc, ee->engine.x.mask,
+                               XCB_GC_FOREGROUND,
+                                &value_list);
+                  rectangle.x = 0;
+                  rectangle.y = 0;
+                  rectangle.width = ee->w;
+                  rectangle.height = ee->h;
+                 xcb_poly_fill_rectangle(ecore_x_connection_get(),
+                                          ee->engine.x.mask, gc,
+                                          1, &rectangle);
+                 xcb_free_gc(ecore_x_connection_get(), gc);
+# else
+                 gcv.foreground = 0;
+                 gc = XCreateGC(ecore_x_display_get(), ee->engine.x.mask,
+                                GCForeground,
+                                &gcv);
+                 XFillRectangle(ecore_x_display_get(), ee->engine.x.mask, gc,
+                                0, 0, ee->w, ee->h);
+                 XFreeGC(ecore_x_display_get(), gc);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+                 einfo->info.mask = ee->engine.x.mask;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+                 ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+              }
+            else
+              {
+                 if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+                 ee->engine.x.mask = 0;
+                 einfo->info.mask = 0;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+                 ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+              }
+         }
+#endif /* BUILD_ECORE_EVAS_XRENDER_X11 || BUILD_ECORE_EVAS_XRENDER_XCB */
+     }
+   else if (!strcmp(ee->driver, "software_16_x11"))
+     {
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+# if 0 /* XXX no shaped window support for software_16_x11 */
+       Evas_Engine_Info_Software_16_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+       ee->shaped = shaped;
+       if (einfo)
+         {
+            if (ee->shaped)
+              {
+                 GC gc;
+                 XGCValues gcv;
+
+                 ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+                 einfo->info.mask = ee->engine.x.mask;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+              }
+            else
+              {
+                 if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+                 ee->engine.x.mask = 0;
+                 einfo->info.mask = 0;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+              }
+         }
+# endif /* XXX no shaped window support for software_16_x11 */
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+     }
+
+}
+
+/* FIXME, round trip */
+static void
+_ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
+{
+# ifdef HAVE_ECORE_X_XCB
+   xcb_get_geometry_cookie_t          cookie_geom;
+   xcb_get_window_attributes_cookie_t cookie_attr;
+   xcb_get_geometry_reply_t          *reply_geom;
+   xcb_get_window_attributes_reply_t *reply_attr;
+#else
+   XWindowAttributes att;
+#endif /* ! HAVE_ECORE_X_XCB */
+
+   if (((ee->alpha) && (alpha)) || ((!ee->alpha) && (!alpha)))
+     return;
+
+   if (!strcmp(ee->driver, "software_x11") || !strcmp(ee->driver, "software_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       Evas_Engine_Info_Software_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+#else
+       Evas_Engine_Info_Software_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+       if (!einfo) return;
+
+       if (!ecore_x_composite_query()) return;
+
+       ee->shaped = 0;
+       ee->alpha = alpha;
+       ecore_x_window_del(ee->engine.x.win);
+       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->alpha)
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (!ee->engine.x.mask)
+              ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+         }
+       else
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = 0;
+            ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+         }
+
+       einfo->info.destination_alpha = alpha;
+
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       cookie_geom = xcb_get_geometry_unchecked(ecore_x_connection_get(), ee->engine.x.win);
+       cookie_attr = xcb_get_window_attributes_unchecked(ecore_x_connection_get(), ee->engine.x.win);
+
+       reply_geom = xcb_get_geometry_reply(ecore_x_connection_get(), cookie_geom, NULL);
+       reply_attr = xcb_get_window_attributes_reply(ecore_x_connection_get(), cookie_attr, NULL);
+       einfo->info.visual = xcb_visualtype_get(ecore_x_default_screen_get(), reply_attr->visual);
+       einfo->info.colormap = reply_attr->colormap;
+       einfo->info.depth = reply_geom->depth;
+       free(reply_geom);
+       free(reply_attr);
+# else
+       XGetWindowAttributes(ecore_x_display_get(), ee->engine.x.win, &att);
+       einfo->info.visual = att.visual;
+       einfo->info.colormap = att.colormap;
+       einfo->info.depth = att.depth;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+//     if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+//     ee->engine.x.mask = 0;
+       einfo->info.mask = ee->engine.x.mask;
+       einfo->info.drawable = ee->engine.x.win;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+       ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->prop.borderless)
+         ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
+       if (ee->visible) ecore_x_window_show(ee->engine.x.win);
+       if (ee->prop.focused) ecore_x_window_focus(ee->engine.x.win);
+       if (ee->prop.title)
+         {
+            ecore_x_icccm_title_set(ee->engine.x.win, ee->prop.title);
+            ecore_x_netwm_name_set(ee->engine.x.win, ee->prop.title);
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+     }
+   else if (!strcmp(ee->driver, "xrender_x11") || !strcmp(ee->driver, "xrender_xcb"))
+     {
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       Evas_Engine_Info_XRender_Xcb *einfo;
+
+       einfo = (Evas_Engine_Info_XRender_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       Evas_Engine_Info_XRender_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+
+       if (!einfo) return;
+       if (!ecore_x_composite_query()) return;
+
+       ee->shaped = 0;
+       ee->alpha = alpha;
+       ecore_x_window_del(ee->engine.x.win);
+       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->alpha)
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (!ee->engine.x.mask)
+              ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+         }
+       else
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = 0;
+            ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+         }
+
+       einfo->info.destination_alpha = alpha;
+
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+       cookie_attr = xcb_get_window_attributes_unchecked(ecore_x_connection_get(), ee->engine.x.win);
+       reply_attr = xcb_get_window_attributes_reply(ecore_x_connection_get(), cookie_attr, NULL);
+
+       einfo->info.visual = reply_attr->visual;
+       free(reply_attr);
+# else
+       XGetWindowAttributes(ecore_x_display_get(), ee->engine.x.win, &att);
+       einfo->info.visual = att.visual;
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+
+//     if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+//     ee->engine.x.mask = 0;
+        einfo->info.mask = ee->engine.x.mask;
+       einfo->info.drawable = ee->engine.x.win;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+       ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->prop.borderless)
+         ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
+       if (ee->visible) ecore_x_window_show(ee->engine.x.win);
+       if (ee->prop.focused) ecore_x_window_focus(ee->engine.x.win);
+       if (ee->prop.title)
+         {
+            ecore_x_icccm_title_set(ee->engine.x.win, ee->prop.title);
+            ecore_x_netwm_name_set(ee->engine.x.win, ee->prop.title);
+         }
+#endif /* BUILD_ECORE_EVAS_XRENDER_X11 || BUILD_ECORE_EVAS_XRENDER_XCB */
+     }
+   else if (!strcmp(ee->driver, "software_16_x11"))
+     {
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+       Evas_Engine_Info_Software_16_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+       if (!einfo) return;
+
+       ee->shaped = 0;
+       ee->alpha = alpha;
+       ecore_x_window_del(ee->engine.x.win);
+       ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->alpha)
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_argb_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (!ee->engine.x.mask)
+              ee->engine.x.mask = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 1);
+         }
+       else
+         {
+            if (ee->prop.override)
+              ee->engine.x.win = ecore_x_window_override_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            else
+              ee->engine.x.win = ecore_x_window_new(ee->engine.x.win_root, ee->x, ee->y, ee->w, ee->h);
+            if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+            ee->engine.x.mask = 0;
+            ecore_x_window_shape_input_mask_set(ee->engine.x.win, 0);
+         }
+
+# if 0 /* XXX no alpha window support for software_16_x11 */
+       einfo->info.destination_alpha = alpha;
+# endif /* XXX no alpha window support for software_16_x11 */
+
+# if 0 /* XXX no shaped window support for software_16_x11 */
+//     if (ee->engine.x.mask) ecore_x_pixmap_del(ee->engine.x.mask);
+//     ee->engine.x.mask = 0;
+        einfo->info.mask = ee->engine.x.mask;
+# endif /* XXX no shaped window support for software_16_x11 */
+
+       einfo->info.drawable = ee->engine.x.win;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+       evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+       ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
+       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+       if (ee->prop.borderless)
+         ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
+       if (ee->visible) ecore_x_window_show(ee->engine.x.win);
+       if (ee->prop.focused) ecore_x_window_focus(ee->engine.x.win);
+       if (ee->prop.title)
+         {
+            ecore_x_icccm_title_set(ee->engine.x.win, ee->prop.title);
+            ecore_x_netwm_name_set(ee->engine.x.win, ee->prop.title);
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+     }
+}
+#endif /* BUILD_ECORE_EVAS_X11 */
+
+static void *
+_ecore_evas_x_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_X11
+  return (void *) (long)ee->engine.x.win;
+#else
+   return 0;
+#endif /* BUILD_ECORE_EVAS_X11 */
+}
+
+#ifdef BUILD_ECORE_EVAS_X11
+static void
+_ecore_evas_x_show(Ecore_Evas *ee)
+{
+   ee->should_be_visible = 1;
+   if (ee->prop.avoid_damage)
+     _ecore_evas_x_render(ee);
+   ecore_x_window_show(ee->engine.x.win);
+   if (ee->prop.fullscreen)
+     ecore_x_window_focus(ee->engine.x.win);
+}
+
+static void
+_ecore_evas_x_hide(Ecore_Evas *ee)
+{
+   ecore_x_window_hide(ee->engine.x.win);
+   ee->should_be_visible = 0;
+}
+
+static void
+_ecore_evas_x_raise(Ecore_Evas *ee)
+{
+   if (!ee->prop.fullscreen)
+     ecore_x_window_raise(ee->engine.x.win);
+   else
+     ecore_x_window_raise(ee->engine.x.win);
+}
+
+static void
+_ecore_evas_x_lower(Ecore_Evas *ee)
+{
+   if (!ee->prop.fullscreen)
+     ecore_x_window_lower(ee->engine.x.win);
+   else
+     ecore_x_window_lower(ee->engine.x.win);
+}
+
+static void
+_ecore_evas_x_activate(Ecore_Evas *ee)
+{
+   ecore_x_netwm_client_active_request(ee->engine.x.win_root,
+                                      ee->engine.x.win, 2, 0);
+}
+
+static void
+_ecore_evas_x_title_set(Ecore_Evas *ee, const char *t)
+{
+   if (ee->prop.title) free(ee->prop.title);
+   ee->prop.title = NULL;
+   if (t) ee->prop.title = strdup(t);
+   ecore_x_icccm_title_set(ee->engine.x.win, ee->prop.title);
+   ecore_x_netwm_name_set(ee->engine.x.win, ee->prop.title);
+}
+
+static void
+_ecore_evas_x_name_class_set(Ecore_Evas *ee, const char *n, const char *c)
+{
+   if (ee->prop.name) free(ee->prop.name);
+   if (ee->prop.clas) free(ee->prop.clas);
+   ee->prop.name = NULL;
+   ee->prop.clas = NULL;
+   ee->prop.name = strdup(n);
+   ee->prop.clas = strdup(c);
+   ecore_x_icccm_name_class_set(ee->engine.x.win, ee->prop.name, ee->prop.clas);
+}
+
+static void
+_ecore_evas_x_size_min_set(Ecore_Evas *ee, int w, int h)
+{
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->prop.min.w == w) && (ee->prop.min.h == h)) return;
+   ee->prop.min.w = w;
+   ee->prop.min.h = h;
+   _ecore_evas_x_size_pos_hints_update(ee);
+}
+
+static void
+_ecore_evas_x_size_max_set(Ecore_Evas *ee, int w, int h)
+{
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->prop.max.w == w) && (ee->prop.max.h == h)) return;
+   ee->prop.max.w = w;
+   ee->prop.max.h = h;
+   _ecore_evas_x_size_pos_hints_update(ee);
+}
+
+static void
+_ecore_evas_x_size_base_set(Ecore_Evas *ee, int w, int h)
+{
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if ((ee->prop.base.w == w) && (ee->prop.base.h == h)) return;
+   ee->prop.base.w = w;
+   ee->prop.base.h = h;
+   _ecore_evas_x_size_pos_hints_update(ee);
+}
+
+static void
+_ecore_evas_x_size_step_set(Ecore_Evas *ee, int w, int h)
+{
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   if ((ee->prop.step.w == w) && (ee->prop.step.h == h)) return;
+   ee->prop.step.w = w;
+   ee->prop.step.h = h;
+   _ecore_evas_x_size_pos_hints_update(ee);
+}
+
+static void
+_ecore_evas_x_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
+{
+   int x, y;
+
+   if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
+
+   if (obj == NULL)
+     {
+       ee->prop.cursor.object = NULL;
+       ee->prop.cursor.layer = 0;
+       ee->prop.cursor.hot.x = 0;
+       ee->prop.cursor.hot.y = 0;
+       ecore_x_window_cursor_show(ee->engine.x.win, 1);
+       return;
+     }
+
+   ee->prop.cursor.object = obj;
+   ee->prop.cursor.layer = layer;
+   ee->prop.cursor.hot.x = hot_x;
+   ee->prop.cursor.hot.y = hot_y;
+
+   ecore_x_window_cursor_show(ee->engine.x.win, 0);
+
+   evas_pointer_output_xy_get(ee->evas, &x, &y);
+   evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
+   evas_object_move(ee->prop.cursor.object,
+                   x - ee->prop.cursor.hot.x,
+                   y - ee->prop.cursor.hot.y);
+   evas_object_pass_events_set(ee->prop.cursor.object, 1);
+   if (evas_pointer_inside_get(ee->evas))
+     evas_object_show(ee->prop.cursor.object);
+}
+
+/*
+ * @param ee
+ * @param layer If < 3, @a ee will be put below all other windows.
+ *              If > 5, @a ee will be "always-on-top"
+ *              If = 4, @a ee will be put in the default layer.
+ *              Acceptable values range from 1 to 255 (0 reserved for
+ *              desktop windows)
+ */
+static void
+_ecore_evas_x_layer_set(Ecore_Evas *ee, int layer)
+{
+   if (ee->prop.layer == layer) return;
+
+   /* FIXME: Should this logic be here? */
+   if (layer < 1)
+     layer = 1;
+   else if (layer > 255)
+     layer = 255;
+
+   ee->prop.layer = layer;
+   _ecore_evas_x_layer_update(ee);
+}
+
+static void
+_ecore_evas_x_focus_set(Ecore_Evas *ee, int on __UNUSED__)
+{
+   ecore_x_window_focus(ee->engine.x.win);
+}
+
+static void
+_ecore_evas_x_iconified_set(Ecore_Evas *ee, int on)
+{
+//   if (((ee->prop.iconified) && (on)) ||
+//       ((!ee->prop.iconified) && (!on))) return;
+   ee->prop.iconified = on;
+   if (on)
+     {
+       ecore_x_icccm_hints_set(ee->engine.x.win,
+                               1 /* accepts_focus */,
+                               ECORE_X_WINDOW_STATE_HINT_ICONIC /* initial_state */,
+                               0 /* icon_pixmap */,
+                               0 /* icon_mask */,
+                               0 /* icon_window */,
+                               0 /* window_group */,
+                               0 /* is_urgent */);
+       ecore_x_icccm_iconic_request_send(ee->engine.x.win, ee->engine.x.win_root);
+     }
+   else
+     {
+       ecore_x_icccm_hints_set(ee->engine.x.win,
+                               1 /* accepts_focus */,
+                               ECORE_X_WINDOW_STATE_HINT_NORMAL /* initial_state */,
+                               0 /* icon_pixmap */,
+                               0 /* icon_mask */,
+                               0 /* icon_window */,
+                               0 /* window_group */,
+                               0 /* is_urgent */);
+       ecore_evas_show(ee);
+     }
+}
+
+static void
+_ecore_evas_x_borderless_set(Ecore_Evas *ee, int on)
+{
+   if (((ee->prop.borderless) && (on)) ||
+       ((!ee->prop.borderless) && (!on))) return;
+   ee->prop.borderless = on;
+   ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
+}
+
+/* FIXME: This function changes the initial state of the ee
+ * whilest the iconic function changes the current state! */
+static void
+_ecore_evas_x_withdrawn_set(Ecore_Evas *ee, int withdrawn)
+{
+   Ecore_X_Window_State_Hint hint;
+
+   if ((ee->prop.withdrawn && withdrawn) ||
+      (!ee->prop.withdrawn && !withdrawn)) return;
+
+   ee->prop.withdrawn = withdrawn;
+   if (withdrawn)
+     hint = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+   else
+     hint = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+
+   ecore_x_icccm_hints_set(ee->engine.x.win,
+                          1 /* accepts_focus */,
+                          hint /* initial_state */,
+                          0 /* icon_pixmap */,
+                          0 /* icon_mask */,
+                          0 /* icon_window */,
+                          0 /* window_group */,
+                          0 /* is_urgent */);
+}
+
+static void
+_ecore_evas_x_sticky_set(Ecore_Evas *ee, int sticky)
+{
+   if ((ee->prop.sticky && sticky) ||
+      (!ee->prop.sticky && !sticky)) return;
+
+   /* We dont want to set prop.sticky here as it will cause
+    * the sticky callback not to get called. Its set on the
+    * property change event.
+    * ee->prop.sticky = sticky;
+    */
+   ee->engine.x.state.sticky = sticky;
+   if (ee->should_be_visible)
+     ecore_x_netwm_state_request_send(ee->engine.x.win, ee->engine.x.win_root,
+                                     ECORE_X_WINDOW_STATE_STICKY, -1, sticky);
+   else
+     _ecore_evas_x_state_update(ee);
+}
+
+static void
+_ecore_evas_x_ignore_events_set(Ecore_Evas *ee, int ignore)
+{
+   if ((ee->ignore_events && ignore) ||
+       (!ee->ignore_events && !ignore)) return;
+
+   if (ignore)
+     {
+       ee->ignore_events = 1;
+       if (ee->engine.x.win)
+         ecore_x_window_ignore_set(ee->engine.x.win, 1);
+     }
+   else
+     {
+       ee->ignore_events = 0;
+       if (ee->engine.x.win)
+         ecore_x_window_ignore_set(ee->engine.x.win, 0);
+     }
+}
+
+/*
+static void
+_ecore_evas_x_reinit_win(Ecore_Evas *ee)
+{
+   if (!strcmp(ee->driver, "software_x11"))
+     {
+#ifdef BUILD_ECORE_EVAS_X11
+       Evas_Engine_Info_Software_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+       if (einfo)
+         {
+            einfo->info.drawable = ee->engine.x.win;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+         }
+#endif
+     }
+   else if (!strcmp(ee->driver, "xrender_x11"))
+     {
+#ifdef BUILD_ECORE_EVAS_XRENDER_X11
+       Evas_Engine_Info_XRender_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(ee->evas);
+       if (einfo)
+         {
+            einfo->info.drawable = ee->engine.x.win;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+         }
+#endif
+     }
+   else if (!strcmp(ee->driver, "gl_x11"))
+     {
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+       Evas_Engine_Info_GL_X11 *einfo;
+
+       einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
+       if (einfo)
+         {
+            einfo->info.drawable = ee->engine.x.win;
+            evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+         }
+#endif
+     }
+}
+*/
+
+static void
+_ecore_evas_x_override_set(Ecore_Evas *ee, int on)
+{
+   if (((ee->prop.override) && (on)) ||
+       ((!ee->prop.override) && (!on))) return;
+   ecore_x_window_hide(ee->engine.x.win);
+   ecore_x_window_override_set(ee->engine.x.win, on);
+   if (ee->visible) ecore_x_window_show(ee->engine.x.win);
+   if (ee->prop.focused) ecore_x_window_focus(ee->engine.x.win);
+   ee->prop.override = on;
+}
+
+static void
+_ecore_evas_x_fullscreen_set(Ecore_Evas *ee, int on)
+{
+   if ((ee->prop.fullscreen && on) ||
+      (!ee->prop.fullscreen && !on)) return;
+
+   /* FIXME: Detect if WM is EWMH compliant and handle properly if not,
+    * i.e. reposition, resize, and change borderless hint */
+   ee->engine.x.state.fullscreen = on;
+   if (ee->should_be_visible)
+     ecore_x_netwm_state_request_send(ee->engine.x.win, ee->engine.x.win_root,
+                                     ECORE_X_WINDOW_STATE_FULLSCREEN, -1, on);
+   else
+     _ecore_evas_x_state_update(ee);
+}
+
+static void
+_ecore_evas_x_avoid_damage_set(Ecore_Evas *ee, int on)
+{
+   if (ee->prop.avoid_damage == on) return;
+   if (!strcmp(ee->driver, "gl_x11")) return;
+   if (!strcmp(ee->driver, "xrender_x11")) return;
+
+   if ((!strcmp(ee->driver, "software_x11")) || (!strcmp(ee->driver, "software_xcb")))
+     {
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       Evas_Engine_Info_Software_Xcb *einfo;
+# else
+       Evas_Engine_Info_Software_X11 *einfo;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+       ee->prop.avoid_damage = on;
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+# else
+       einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+# endif /* !BUILD_ECORE_EVAS_SOFTWARE_XCB */
+       if (einfo)
+         {
+            if (ee->prop.avoid_damage)
+              {
+                 ee->engine.x.pmap = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, einfo->info.depth);
+                 ee->engine.x.gc = ecore_x_gc_new(ee->engine.x.pmap);
+                 einfo->info.drawable = ee->engine.x.pmap;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 if ((ee->rotation == 90) || (ee->rotation == 270))
+                   evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+                 else
+                   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+                 if (ee->prop.avoid_damage == ECORE_EVAS_AVOID_DAMAGE_BUILT_IN)
+                   {
+                      ee->engine.x.using_bg_pixmap = 1;
+                      ecore_x_window_pixmap_set(ee->engine.x.win, ee->engine.x.pmap);
+                      ecore_x_window_area_expose(ee->engine.x.win, 0, 0, ee->w, ee->h);
+                   }
+                 if (ee->engine.x.direct_resize)
+                   {
+                      /* Turn this off for now
+                         ee->engine.x.using_bg_pixmap = 1;
+                         ecore_x_window_pixmap_set(ee->engine.x.win, ee->engine.x.pmap);
+                      */
+                   }
+              }
+            else
+              {
+                 if (ee->engine.x.pmap) ecore_x_pixmap_del(ee->engine.x.pmap);
+                 if (ee->engine.x.gc) ecore_x_gc_del(ee->engine.x.gc);
+                 if (ee->engine.x.using_bg_pixmap)
+                   {
+                      ecore_x_window_pixmap_set(ee->engine.x.win, 0);
+                      ee->engine.x.using_bg_pixmap = 0;
+                      ecore_x_window_area_expose(ee->engine.x.win, 0, 0, ee->w, ee->h);
+                   }
+                 ee->engine.x.pmap = 0;
+                 ee->engine.x.gc = 0;
+                 einfo->info.drawable = ee->engine.x.win;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+              }
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_X11 || BUILD_ECORE_EVAS_SOFTWARE_XCB */
+     }
+   else if (!strcmp(ee->driver, "software_16_x11"))
+     {
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+       Evas_Engine_Info_Software_16_X11 *einfo;
+       ee->prop.avoid_damage = on;
+
+       einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+       if (einfo)
+         {
+            if (ee->prop.avoid_damage)
+              {
+                 ee->engine.x.pmap = ecore_x_pixmap_new(ee->engine.x.win, ee->w, ee->h, 16);
+                 ee->engine.x.gc = ecore_x_gc_new(ee->engine.x.pmap);
+                 einfo->info.drawable = ee->engine.x.pmap;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+                 if ((ee->rotation == 90) || (ee->rotation == 270))
+                   evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+                 else
+                   evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+                 if (ee->engine.x.direct_resize)
+                   {
+                      /* Turn this off for now
+                         ee->engine.x.using_bg_pixmap = 1;
+                         ecore_x_window_pixmap_set(ee->engine.x.win, ee->engine.x.pmap);
+                      */
+                   }
+              }
+            else
+              {
+                 if (ee->engine.x.pmap) ecore_x_pixmap_del(ee->engine.x.pmap);
+                 if (ee->engine.x.gc) ecore_x_gc_del(ee->engine.x.gc);
+                 if (ee->engine.x.using_bg_pixmap)
+                   {
+                      ecore_x_window_pixmap_set(ee->engine.x.win, 0);
+                      ee->engine.x.using_bg_pixmap = 0;
+                   }
+                 ee->engine.x.pmap = 0;
+                 ee->engine.x.gc = 0;
+                 einfo->info.drawable = ee->engine.x.win;
+                 evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+              }
+         }
+#endif /* BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+     }
+}
+
+int
+_ecore_evas_x_shutdown(void)
+{
+   _ecore_evas_init_count--;
+   if (_ecore_evas_init_count == 0)
+     {
+       int i;
+
+       while (ecore_evases) _ecore_evas_free(ecore_evases);
+       for (i = 0; i < 18; i++)
+         ecore_event_handler_del(ecore_evas_event_handlers[i]);
+       ecore_idle_enterer_del(ecore_evas_idle_enterer);
+       ecore_evas_idle_enterer = NULL;
+       if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
+     }
+   if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
+   return _ecore_evas_init_count;
+}
+
+static const Ecore_Evas_Engine_Func _ecore_x_engine_func =
+{
+   _ecore_evas_x_free,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_x_callback_delete_request_set,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     _ecore_evas_x_move,
+     _ecore_evas_x_managed_move,
+     _ecore_evas_x_resize,
+     _ecore_evas_x_move_resize,
+     _ecore_evas_x_rotation_set,
+     _ecore_evas_x_shaped_set,
+     _ecore_evas_x_show,
+     _ecore_evas_x_hide,
+     _ecore_evas_x_raise,
+     _ecore_evas_x_lower,
+     _ecore_evas_x_activate,
+     _ecore_evas_x_title_set,
+     _ecore_evas_x_name_class_set,
+     _ecore_evas_x_size_min_set,
+     _ecore_evas_x_size_max_set,
+     _ecore_evas_x_size_base_set,
+     _ecore_evas_x_size_step_set,
+     _ecore_evas_x_object_cursor_set,
+     _ecore_evas_x_layer_set,
+     _ecore_evas_x_focus_set,
+     _ecore_evas_x_iconified_set,
+     _ecore_evas_x_borderless_set,
+     _ecore_evas_x_override_set,
+     NULL,
+     _ecore_evas_x_fullscreen_set,
+     _ecore_evas_x_avoid_damage_set,
+     _ecore_evas_x_withdrawn_set,
+     _ecore_evas_x_sticky_set,
+     _ecore_evas_x_ignore_events_set,
+     _ecore_evas_x_alpha_set,
+     _ecore_evas_x_window_get
+};
+#endif /* BUILD_ECORE_EVAS_X11 */
+
+/*
+ * FIXME: there are some round trips. Especially, we can split
+ * ecore_x_init in 2 functions and supress some round trips.
+ */
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
+                           int x, int y, int w, int h)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+   Evas_Engine_Info_Software_Xcb *einfo;
+# else
+   Evas_Engine_Info_Software_X11 *einfo;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+   Ecore_Evas *ee;
+   int argb = 0;
+   int rmethod;
+   static int redraw_debug = -1;
+
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+   rmethod = evas_render_method_lookup("software_xcb");
+# else
+   rmethod = evas_render_method_lookup("software_x11");
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+   if (!rmethod) return NULL;
+   if (!ecore_x_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_x_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
+
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+   ee->driver = "software_xcb";
+# else
+   ee->driver = "software_x11";
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   ee->engine.x.state.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   ee->engine.x.win_root = parent;
+   if (parent != 0)
+     {
+       /* FIXME: round trip in ecore_x_window_argb_get */
+       if (ecore_x_window_argb_get(parent))
+         {
+            ee->engine.x.win = ecore_x_window_argb_new(parent, x, y, w, h);
+            argb = 1;
+         }
+       else
+         ee->engine.x.win = ecore_x_window_new(parent, x, y, w, h);
+     }
+   else
+     ee->engine.x.win = ecore_x_window_new(parent, x, y, w, h);
+   if (getenv("DESKTOP_STARTUP_ID"))
+     {
+       ecore_x_netwm_startup_id_set(ee->engine.x.win,
+                                    getenv("DESKTOP_STARTUP_ID"));
+       /* NB: on linux this may simply empty the env as opposed to completely
+        * unset it to being empty - unsure as solartis libc crashes looking
+        * for the '=' char */
+//     putenv((char*)"DESKTOP_STARTUP_ID=");
+     }
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+   einfo = (Evas_Engine_Info_Software_Xcb *)evas_engine_info_get(ee->evas);
+# else
+   einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+   if (einfo)
+     {
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+        xcb_screen_iterator_t iter;
+       xcb_screen_t         *screen;
+# else
+       int screen;
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+       /* FIXME: this is inefficient as its a round trip */
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       screen = ecore_x_default_screen_get();
+        iter = xcb_setup_roots_iterator (xcb_get_setup (ecore_x_connection_get()));
+       if (iter.rem > 1)
+         {
+             xcb_get_geometry_cookie_t cookie;
+             xcb_get_geometry_reply_t *reply;
+            Ecore_X_Window           *roots;
+            int                       num;
+            uint8_t                   i;
+
+            num = 0;
+             cookie = xcb_get_geometry_unchecked(ecore_x_connection_get(), parent);
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                  reply = xcb_get_geometry_reply(ecore_x_connection_get(), cookie, NULL);
+
+                 if (reply)
+                   {
+                      for (i = 0; i < num; xcb_screen_next (&iter), i++)
+                        {
+                           if (reply->root == roots[i])
+                             {
+                                screen = iter.data;
+                                break;
+                             }
+                        }
+                       free(reply);
+                   }
+                 free(roots);
+              }
+             else
+               {
+                  reply = xcb_get_geometry_reply(ecore_x_connection_get(), cookie, NULL);
+                  if (reply) free(reply);
+               }
+         }
+# else
+       screen = DefaultScreen(ecore_x_display_get());
+       if (ScreenCount(ecore_x_display_get()) > 1)
+         {
+            Ecore_X_Window *roots;
+            int num, i;
+
+            num = 0;
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                 XWindowAttributes at;
+
+                 if (XGetWindowAttributes(ecore_x_display_get(),
+                                          parent, &at))
+                   {
+                      for (i = 0; i < num; i++)
+                        {
+                           if (at.root == roots[i])
+                             {
+                                screen = i;
+                                break;
+                             }
+                        }
+                   }
+                 free(roots);
+              }
+         }
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+
+       if (redraw_debug < 0)
+         {
+            if (getenv("REDRAW_DEBUG"))
+              redraw_debug = atoi(getenv("REDRAW_DEBUG"));
+            else
+              redraw_debug = 0;
+         }
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+       einfo->info.conn   = ecore_x_connection_get();
+       einfo->info.screen = screen;
+# else
+       einfo->info.display  = ecore_x_display_get();
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+       einfo->info.drawable = ee->engine.x.win;
+       if (argb)
+         {
+       /* FIXME: round trip */
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+             xcb_get_geometry_cookie_t          cookie_geom;
+             xcb_get_window_attributes_cookie_t cookie_attr;
+             xcb_get_geometry_reply_t          *reply_geom;
+             xcb_get_window_attributes_reply_t *reply_attr;
+
+            cookie_geom = xcb_get_geometry_unchecked(ecore_x_connection_get(), ee->engine.x.win);
+            cookie_attr = xcb_get_window_attributes_unchecked(ecore_x_connection_get(), ee->engine.x.win);
+
+             reply_geom = xcb_get_geometry_reply(ecore_x_connection_get(), cookie_geom, NULL);
+             reply_attr = xcb_get_window_attributes_reply(ecore_x_connection_get(), cookie_attr, NULL);
+            if (reply_attr && reply_geom)
+              {
+                  einfo->info.visual   = xcb_visualtype_get(ecore_x_default_screen_get(), reply_attr->visual);
+                 einfo->info.colormap = reply_attr->colormap;
+                 einfo->info.depth    = reply_geom->depth;
+                 einfo->info.destination_alpha = 1;
+                  free(reply_geom);
+                  free(reply_attr);
+              }
+# else
+            XWindowAttributes at;
+
+            if (XGetWindowAttributes(ecore_x_display_get(), ee->engine.x.win,
+                                     &at))
+              {
+                 einfo->info.visual   = at.visual;
+                 einfo->info.colormap = at.colormap;
+                 einfo->info.depth    = at.depth;
+                 einfo->info.destination_alpha = 1;
+              }
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+         }
+       else
+         {
+# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
+             xcb_screen_t *screen;
+
+             screen = ecore_x_default_screen_get();
+            einfo->info.visual   = xcb_visualtype_get(screen, screen->root_visual);
+            einfo->info.colormap = screen->default_colormap;
+            einfo->info.depth    = screen->root_depth;
+#else
+            einfo->info.visual   = DefaultVisual(ecore_x_display_get(), screen);
+            einfo->info.colormap = DefaultColormap(ecore_x_display_get(), screen);
+            einfo->info.depth    = DefaultDepth(ecore_x_display_get(), screen);
+# endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+            einfo->info.destination_alpha = 0;
+         }
+       einfo->info.rotation = 0;
+       einfo->info.debug    = redraw_debug;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   return ee;
+#else
+   return NULL;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_X11 && ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_software_x11_window_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+  return (Ecore_X_Window) (long)_ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_software_x11_subwindow_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+  return (Ecore_X_Window) (long)_ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_software_x11_direct_resize_set(Ecore_Evas *ee, int on)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+   ee->engine.x.direct_resize = on;
+   if (ee->prop.avoid_damage)
+     {
+       if (ee->engine.x.direct_resize)
+         {
+/* turn this off for now
+            ee->engine.x.using_bg_pixmap = 1;
+            ecore_x_window_pixmap_set(ee->engine.x.win, ee->engine.x.pmap);
+ */
+         }
+       else
+         {
+/* turn this off too- bg pixmap is controlled by avoid damage directly
+            ee->engine.x.using_bg_pixmap = 0;
+            ecore_x_window_pixmap_set(ee->engine.x.win, 0);
+            ecore_x_window_area_expose(ee->engine.x.win, 0, 0, ee->w, ee->h);
+ */
+         }
+     }
+#else
+   return;
+#endif
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_evas_software_x11_direct_resize_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+   return ee->engine.x.direct_resize;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win)
+{
+#if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
+   Ecore_X_Window *winp;
+
+   winp = malloc(sizeof(Ecore_X_Window));
+   if (winp)
+     {
+       *winp = win;
+       ee->engine.x.win_extra = evas_list_append(ee->engine.x.win_extra, winp);
+       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
+     }
+#else
+#endif
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
+                     int x, int y, int w, int h)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+# ifdef HAVE_ECORE_X_XCB
+   Ecore_Evas *ee = NULL;
+# else
+   Evas_Engine_Info_GL_X11 *einfo;
+   Ecore_Evas *ee;
+   int rmethod;
+
+   rmethod = evas_render_method_lookup("gl_x11");
+   if (!rmethod) return NULL;
+   if (!ecore_x_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_x_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
+
+   ee->driver = "gl_x11";
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   ee->engine.x.state.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   if (parent == 0) parent = DefaultRootWindow(ecore_x_display_get());
+   ee->engine.x.win_root = parent;
+   einfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(ee->evas);
+   if (einfo)
+     {
+       ee->engine.x.win = _ecore_evas_x_gl_window_new(ee, ee->engine.x.win_root, x, y, w, h, 0);
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   if (getenv("DESKTOP_STARTUP_ID"))
+     {
+       ecore_x_netwm_startup_id_set(ee->engine.x.win,
+                                    getenv("DESKTOP_STARTUP_ID"));
+       /* NB: on linux this may simply empty the env as opposed to completely
+        * unset it to being empty - unsure as solartis libc crashes looking
+        * for the '=' char */
+//     putenv((char*)"DESKTOP_STARTUP_ID=");
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+# endif /* HAVE_ECORE_X_XCB */
+
+   return ee;
+#else
+   disp_name = NULL;
+   parent = 0;
+   x = y = w = h = 0;
+   return NULL;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_gl_x11_window_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_gl_x11_subwindow_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_gl_x11_direct_resize_set(Ecore_Evas *ee, int on)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+   ee->engine.x.direct_resize = on;
+#else
+   return;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_evas_gl_x11_direct_resize_get(Ecore_Evas *ee)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+   return ee->engine.x.direct_resize;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_gl_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win)
+{
+#ifdef BUILD_ECORE_EVAS_OPENGL_X11
+   ecore_evas_software_x11_extra_event_window_add(ee, win);
+#endif /* ! BUILD_ECORE_EVAS_OPENGL_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent,
+                     int x, int y, int w, int h)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+   Evas_Engine_Info_XRender_Xcb *einfo;
+# else
+   Evas_Engine_Info_XRender_X11 *einfo;
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+   Ecore_Evas *ee;
+   int rmethod;
+
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+   rmethod = evas_render_method_lookup("xrender_xcb");
+# else
+   rmethod = evas_render_method_lookup("xrender_x11");
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+   if (!rmethod) return NULL;
+   if (!ecore_x_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_x_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
+
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+   ee->driver = "xrender_xcb";
+# else
+   ee->driver = "xrender_x11";
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   ee->engine.x.state.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   ee->engine.x.win_root = parent;
+   ee->engine.x.win = ecore_x_window_new(parent, x, y, w, h);
+   if (getenv("DESKTOP_STARTUP_ID"))
+     {
+       ecore_x_netwm_startup_id_set(ee->engine.x.win,
+                                    getenv("DESKTOP_STARTUP_ID"));
+       /* NB: on linux this may simply empty the env as opposed to completely
+        * unset it to being empty - unsure as solartis libc crashes looking
+        * for the '=' char */
+//     putenv((char*)"DESKTOP_STARTUP_ID=");
+     }
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+   einfo = (Evas_Engine_Info_XRender_Xcb *)evas_engine_info_get(ee->evas);
+# else
+   einfo = (Evas_Engine_Info_XRender_X11 *)evas_engine_info_get(ee->evas);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+   if (einfo)
+     {
+# ifdef BUILD_ECORE_EVAS_XRENDER_XCB
+        xcb_screen_iterator_t iter;
+       xcb_screen_t         *screen;
+
+       /* FIXME: this is inefficient as its a round trip */
+       screen = ecore_x_default_screen_get();
+        iter = xcb_setup_roots_iterator (xcb_get_setup (ecore_x_connection_get()));
+       if (iter.rem > 1)
+         {
+             xcb_get_geometry_cookie_t cookie;
+             xcb_get_geometry_reply_t *reply;
+            Ecore_X_Window           *roots;
+            int                       num;
+            uint8_t                   i;
+
+            num = 0;
+             cookie = xcb_get_geometry_unchecked(ecore_x_connection_get(), parent);
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                  reply = xcb_get_geometry_reply(ecore_x_connection_get(), cookie, NULL);
+
+                 if (reply)
+                   {
+                      for (i = 0; i < num; xcb_screen_next (&iter), i++)
+                        {
+                           if (reply->root == roots[i])
+                             {
+                                screen = iter.data;
+                                break;
+                             }
+                        }
+                       free(reply);
+                   }
+                 free(roots);
+              }
+             else
+               {
+                  reply = xcb_get_geometry_reply(ecore_x_connection_get(), cookie, NULL);
+                  if (reply) free(reply);
+               }
+         }
+       einfo->info.conn   = ecore_x_connection_get();
+        /* FIXME: uncomment that once the XCB render engine has that member */
+/*     einfo->info.screen = screen; */
+       einfo->info.visual = screen->root_visual;
+# else
+       int screen;
+
+       /* FIXME: this is inefficient as its a round trip */
+       screen = DefaultScreen(ecore_x_display_get());
+       if (ScreenCount(ecore_x_display_get()) > 1)
+         {
+            Ecore_X_Window *roots;
+            int num, i;
+
+            num = 0;
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                 XWindowAttributes at;
+
+                 if (XGetWindowAttributes(ecore_x_display_get(),
+                                          parent, &at))
+                   {
+                      for (i = 0; i < num; i++)
+                        {
+                           if (at.root == roots[i])
+                             {
+                                screen = i;
+                                break;
+                             }
+                        }
+                   }
+                 free(roots);
+              }
+         }
+       einfo->info.display  = ecore_x_display_get();
+       einfo->info.visual   = DefaultVisual(ecore_x_display_get(), screen);
+# endif /* ! BUILD_ECORE_EVAS_XRENDER_XCB */
+       einfo->info.drawable = ee->engine.x.win;
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   return ee;
+#else
+   return NULL;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_xrender_x11_window_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_xrender_x11_subwindow_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_xrender_x11_direct_resize_set(Ecore_Evas *ee, int on)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+   ee->engine.x.direct_resize = on;
+#else
+   return;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_evas_xrender_x11_direct_resize_get(Ecore_Evas *ee)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+   return ee->engine.x.direct_resize;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_xrender_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win)
+{
+#if defined (BUILD_ECORE_EVAS_XRENDER_X11) || defined (BUILD_ECORE_EVAS_XRENDER_XCB)
+   ecore_evas_software_x11_extra_event_window_add(ee, win);
+#else
+   return;
+#endif /* ! BUILD_ECORE_EVAS_XRENDER_X11 && ! BUILD_ECORE_EVAS_XRENDER_XCB */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_Evas *
+ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
+                               int x, int y, int w, int h)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   Evas_Engine_Info_Software_16_X11 *einfo;
+   Ecore_Evas *ee;
+   int argb = 0;
+   int rmethod;
+   static int redraw_debug = -1;
+
+   rmethod = evas_render_method_lookup("software_16_x11");
+   if (!rmethod) return NULL;
+   if (!ecore_x_init(disp_name)) return NULL;
+   ee = calloc(1, sizeof(Ecore_Evas));
+   if (!ee) return NULL;
+
+   ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
+
+   _ecore_evas_x_init();
+
+   ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;
+
+   ee->driver = "software_16_x11";
+   if (disp_name) ee->name = strdup(disp_name);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ee->x = x;
+   ee->y = y;
+   ee->w = w;
+   ee->h = h;
+
+   ee->prop.max.w = 32767;
+   ee->prop.max.h = 32767;
+   ee->prop.layer = 4;
+   ee->prop.request_pos = 0;
+   ee->prop.sticky = 0;
+   ee->engine.x.state.sticky = 0;
+
+   /* init evas here */
+   ee->evas = evas_new();
+   evas_data_attach_set(ee->evas, ee);
+   evas_output_method_set(ee->evas, rmethod);
+   evas_output_size_set(ee->evas, w, h);
+   evas_output_viewport_set(ee->evas, 0, 0, w, h);
+
+   ee->engine.x.win_root = parent;
+   if (parent != 0)
+     {
+       /* FIXME: round trip in ecore_x_window_argb_get */
+       if (ecore_x_window_argb_get(parent))
+         {
+            ee->engine.x.win = ecore_x_window_argb_new(parent, x, y, w, h);
+            argb = 1;
+         }
+       else
+         ee->engine.x.win = ecore_x_window_new(parent, x, y, w, h);
+     }
+   else
+     ee->engine.x.win = ecore_x_window_new(parent, x, y, w, h);
+   if (getenv("DESKTOP_STARTUP_ID"))
+     {
+       ecore_x_netwm_startup_id_set(ee->engine.x.win,
+                                    getenv("DESKTOP_STARTUP_ID"));
+       /* NB: on linux this may simply empty the env as opposed to completely
+        * unset it to being empty - unsure as solartis libc crashes looking
+        * for the '=' char */
+//     putenv((char*)"DESKTOP_STARTUP_ID=");
+     }
+   einfo = (Evas_Engine_Info_Software_16_X11 *)evas_engine_info_get(ee->evas);
+
+   if (einfo)
+     {
+       int screen;
+
+       screen = DefaultScreen(ecore_x_display_get());
+       if (ScreenCount(ecore_x_display_get()) > 1)
+         {
+            Ecore_X_Window *roots;
+            int num, i;
+
+            num = 0;
+            roots = ecore_x_window_root_list(&num);
+            if (roots)
+              {
+                 XWindowAttributes at;
+
+                 if (XGetWindowAttributes(ecore_x_display_get(),
+                                          parent, &at))
+                   {
+                      for (i = 0; i < num; i++)
+                        {
+                           if (at.root == roots[i])
+                             {
+                                screen = i;
+                                break;
+                             }
+                        }
+                   }
+                 free(roots);
+              }
+         }
+
+       if (redraw_debug < 0)
+         {
+            if (getenv("REDRAW_DEBUG"))
+              redraw_debug = atoi(getenv("REDRAW_DEBUG"));
+            else
+              redraw_debug = 0;
+         }
+       einfo->info.display  = ecore_x_display_get();
+       einfo->info.drawable = ee->engine.x.win;
+
+       evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
+     }
+   evas_key_modifier_add(ee->evas, "Shift");
+   evas_key_modifier_add(ee->evas, "Control");
+   evas_key_modifier_add(ee->evas, "Alt");
+   evas_key_modifier_add(ee->evas, "Meta");
+   evas_key_modifier_add(ee->evas, "Hyper");
+   evas_key_modifier_add(ee->evas, "Super");
+   evas_key_lock_add(ee->evas, "Caps_Lock");
+   evas_key_lock_add(ee->evas, "Num_Lock");
+   evas_key_lock_add(ee->evas, "Scroll_Lock");
+
+   ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
+   ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
+   return ee;
+#else
+   return NULL;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_software_x11_16_window_get(Ecore_Evas *ee)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Window
+ecore_evas_software_x11_16_subwindow_get(Ecore_Evas *ee)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   return (Ecore_X_Window) _ecore_evas_x_window_get(ee);
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_software_x11_16_direct_resize_set(Ecore_Evas *ee, int on)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   ee->engine.x.direct_resize = on;
+   if (ee->prop.avoid_damage)
+     {
+       if (ee->engine.x.direct_resize)
+         {
+/* turn this off for now
+            ee->engine.x.using_bg_pixmap = 1;
+            ecore_x_window_pixmap_set(ee->engine.x.win, ee->engine.x.pmap);
+ */
+         }
+       else
+         {
+/* turn this off too- bg pixmap is controlled by avoid damage directly
+            ee->engine.x.using_bg_pixmap = 0;
+            ecore_x_window_pixmap_set(ee->engine.x.win, 0);
+            ecore_x_window_area_expose(ee->engine.x.win, 0, 0, ee->w, ee->h);
+ */
+         }
+     }
+#else
+   return;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_evas_software_x11_16_direct_resize_get(Ecore_Evas *ee)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   return ee->engine.x.direct_resize;
+#else
+   return 0;
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window win)
+{
+#if BUILD_ECORE_EVAS_SOFTWARE_16_X11
+   Ecore_X_Window *winp;
+
+   winp = malloc(sizeof(Ecore_X_Window));
+   if (winp)
+     {
+       *winp = win;
+       ee->engine.x.win_extra = evas_list_append(ee->engine.x.win_extra, winp);
+       ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
+     }
+#else
+#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
+}
diff --git a/src/lib/ecore_fb/.cvsignore b/src/lib/ecore_fb/.cvsignore
new file mode 100644 (file)
index 0000000..6ff5cc5
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_fb.la
diff --git a/src/lib/ecore_fb/Ecore_Fb.h b/src/lib/ecore_fb/Ecore_Fb.h
new file mode 100644 (file)
index 0000000..5374817
--- /dev/null
@@ -0,0 +1,145 @@
+#ifndef _ECORE_FB_H
+#define _ECORE_FB_H
+
+#ifdef EAPI
+#undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+/**
+ * @file
+ * @brief Ecore frame buffer system functions.
+ */
+
+/* FIXME:
+ * maybe a new module?
+ * - code to get battery info
+ * - code to get thermal info
+ * ecore evas fb isnt good enough for weird things, like multiple fb's, same happens here.
+ * backlight support using new kernel interface
+ * absolute axis
+ * joystick
+ * ecore_fb_li_device_close_all ? or a shutdown of the subsystem?
+ *
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _Ecore_Fb_Input_Device Ecore_Fb_Input_Device; /* an input device handler */
+
+/* device capabilities */
+enum _Ecore_Fb_Input_Device_Cap
+{
+   ECORE_FB_INPUT_DEVICE_CAP_NONE            = 0x00000000,
+     ECORE_FB_INPUT_DEVICE_CAP_RELATIVE        = 0x00000001,
+     ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE        = 0x00000002,
+     ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS = 0x00000004
+};
+typedef enum   _Ecore_Fb_Input_Device_Cap Ecore_Fb_Input_Device_Cap;
+
+EAPI extern int ECORE_FB_EVENT_KEY_DOWN; /**< FB Key Down event */
+EAPI extern int ECORE_FB_EVENT_KEY_UP; /**< FB Key Up event */
+EAPI extern int ECORE_FB_EVENT_MOUSE_BUTTON_DOWN; /**< FB Mouse Down event */
+EAPI extern int ECORE_FB_EVENT_MOUSE_BUTTON_UP; /**< FB Mouse Up event */
+EAPI extern int ECORE_FB_EVENT_MOUSE_MOVE; /**< FB Mouse Move event */
+EAPI extern int ECORE_FB_EVENT_MOUSE_WHEEL; /**< FB Mouse Wheel event */
+
+typedef struct _Ecore_Fb_Event_Key_Down          Ecore_Fb_Event_Key_Down; /**< FB Key Down event */
+typedef struct _Ecore_Fb_Event_Key_Up            Ecore_Fb_Event_Key_Up; /**< FB Key Up event */
+typedef struct _Ecore_Fb_Event_Mouse_Button_Down Ecore_Fb_Event_Mouse_Button_Down; /**< FB Mouse Down event */
+typedef struct _Ecore_Fb_Event_Mouse_Button_Up   Ecore_Fb_Event_Mouse_Button_Up; /**< FB Mouse Up event */
+typedef struct _Ecore_Fb_Event_Mouse_Move        Ecore_Fb_Event_Mouse_Move; /**< FB Mouse Move event */
+typedef struct _Ecore_Fb_Event_Mouse_Wheel       Ecore_Fb_Event_Mouse_Wheel; /**< FB Mouse Wheel event */
+
+struct _Ecore_Fb_Event_Key_Down /** FB Key Down event */
+{
+   Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
+   char   *keyname; /**< The name of the key that was pressed */
+   char   *keysymbol; /**< The logical symbol of the key that was pressed */
+   char   *key_compose; /**< The UTF-8 string conversion if any */
+};
+   
+struct _Ecore_Fb_Event_Key_Up /** FB Key Up event */
+{
+   Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
+   char   *keyname; /**< The name of the key that was released */
+   char   *keysymbol; /**< The logical symbol of the key that was pressed */
+   char   *key_compose; /**< The UTF-8 string conversion if any */
+};
+   
+struct _Ecore_Fb_Event_Mouse_Button_Down /** FB Mouse Down event */
+{
+   Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
+   int     button; /**< Mouse button that was pressed (1 - 32) */
+   int     x; /**< Mouse co-ordinates when mouse button was pressed */
+   int     y; /**< Mouse co-ordinates when mouse button was pressed */
+   int     double_click : 1; /**< Set if click was a double click */
+   int     triple_click : 1; /**< Set if click was a triple click  */
+};
+   
+struct _Ecore_Fb_Event_Mouse_Button_Up /** FB Mouse Up event */
+{
+   Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
+   int     button; /**< Mouse button that was released (1 - 32) */
+   int     x; /**< Mouse co-ordinates when mouse button was raised */
+   int     y; /**< Mouse co-ordinates when mouse button was raised */
+};
+   
+struct _Ecore_Fb_Event_Mouse_Move /** FB Mouse Move event */ 
+{
+   Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
+   int     x; /**< Mouse co-ordinates where the mouse cursor moved to */
+   int     y; /**< Mouse co-ordinates where the mouse cursor moved to */
+};
+   
+struct _Ecore_Fb_Event_Mouse_Wheel /** FB Mouse Wheel event */
+{
+   Ecore_Fb_Input_Device *dev;
+   int x,y;
+   int direction; /* 0 = vertical, 1 = horizontal */
+   int wheel; /* value 1 (left/up), -1 (right/down) */
+};
+
+/* ecore_fb_vt.c */
+EAPI void ecore_fb_callback_gain_set(void (*func) (void *data), void *data);
+EAPI void ecore_fb_callback_lose_set(void (*func) (void *data), void *data);
+/* ecore_fb_li.c */
+EAPI Ecore_Fb_Input_Device           *ecore_fb_input_device_open(const char *dev);
+EAPI void                             ecore_fb_input_device_close(Ecore_Fb_Input_Device *dev);
+EAPI void                             ecore_fb_input_device_listen(Ecore_Fb_Input_Device *dev, int listen);
+EAPI const char                      *ecore_fb_input_device_name_get(Ecore_Fb_Input_Device *dev);
+EAPI Ecore_Fb_Input_Device_Cap        ecore_fb_input_device_cap_get(Ecore_Fb_Input_Device *dev);
+EAPI void                             ecore_fb_input_device_axis_size_set(Ecore_Fb_Input_Device *dev, int w, int h);
+EAPI void                             ecore_fb_input_threshold_click_set(Ecore_Fb_Input_Device *dev, double threshold);
+EAPI double                           ecore_fb_input_threshold_click_get(Ecore_Fb_Input_Device *dev);
+/* ecore_fb.c */
+EAPI int    ecore_fb_init(const char *name);
+EAPI int    ecore_fb_shutdown(void);
+EAPI void   ecore_fb_size_get(int *w, int *h);   
+
+EAPI void   ecore_fb_touch_screen_calibrate_set(int xscale, int xtrans, int yscale, int ytrans, int xyswap);
+EAPI void   ecore_fb_touch_screen_calibrate_get(int *xscale, int *xtrans, int *yscale, int *ytrans, int *xyswap);
+   
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_fb/Makefile.am b/src/lib/ecore_fb/Makefile.am
new file mode 100644 (file)
index 0000000..5cc71bb
--- /dev/null
@@ -0,0 +1,38 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore
+
+if BUILD_ECORE_FB
+
+lib_LTLIBRARIES = libecore_fb.la
+include_HEADERS = \
+Ecore_Fb.h
+
+libecore_fb_la_SOURCES = \
+ecore_fb.c \
+ecore_fb_vt.c \
+ecore_fb_li.c \
+ecore_fb_ts.c \
+ecore_fb_private.h
+# deprecated sources (might not compile):
+# ecore_fb_kbd.c
+# ecore_fb_ps2.c
+
+libecore_fb_la_LIBADD = \
+@tslib_libs@ \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+libecore_fb_la_LDFLAGS = -version-info @version_info@
+
+libecore_fb_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+Ecore_Fb.h \
+ecore_fb.c \
+ecore_fb_private.h \
+ecore_fb_keytable.h
diff --git a/src/lib/ecore_fb/ecore_fb.c b/src/lib/ecore_fb/ecore_fb.c
new file mode 100644 (file)
index 0000000..a695dda
--- /dev/null
@@ -0,0 +1,103 @@
+#include "Ecore_Fb.h"
+#include "ecore_fb_private.h"
+
+static void _ecore_fb_size_get(int *w, int *h);
+
+EAPI int ECORE_FB_EVENT_KEY_DOWN = 0;
+EAPI int ECORE_FB_EVENT_KEY_UP = 0;
+EAPI int ECORE_FB_EVENT_MOUSE_BUTTON_DOWN = 0;
+EAPI int ECORE_FB_EVENT_MOUSE_BUTTON_UP = 0;
+EAPI int ECORE_FB_EVENT_MOUSE_MOVE = 0;
+EAPI int ECORE_FB_EVENT_MOUSE_WHEEL = 0;
+
+static int _ecore_fb_init_count = 0;
+static int _ecore_fb_console_w = 0;
+static int _ecore_fb_console_h = 0;
+
+static double _ecore_fb_double_click_time = 0.25;
+
+
+/**
+ * @defgroup Ecore_FB_Library_Group Framebuffer Library Functions
+ *
+ * Functions used to set up and shut down the Ecore_Framebuffer functions.
+ */
+
+/**
+ * Sets up the Ecore_Fb library.
+ * @param   name device target name
+ * @return  @c 0 on failure.  Otherwise, the number of times the library has
+ *          been initialised without being shut down.
+ * @ingroup Ecore_FB_Library_Group
+ */
+EAPI int
+ecore_fb_init(const char *name __UNUSED__)
+{
+       if(!_ecore_fb_init_count)
+       {
+               if(!ecore_fb_vt_init()) return 0;
+               ECORE_FB_EVENT_KEY_DOWN          = ecore_event_type_new();
+               ECORE_FB_EVENT_KEY_UP            = ecore_event_type_new();
+               ECORE_FB_EVENT_MOUSE_BUTTON_DOWN = ecore_event_type_new();
+               ECORE_FB_EVENT_MOUSE_BUTTON_UP   = ecore_event_type_new();
+               ECORE_FB_EVENT_MOUSE_MOVE        = ecore_event_type_new();
+               ECORE_FB_EVENT_MOUSE_WHEEL       = ecore_event_type_new();
+               _ecore_fb_size_get(&_ecore_fb_console_w, &_ecore_fb_console_h);
+       }
+       return ++_ecore_fb_init_count;
+}
+
+/**
+ * Shuts down the Ecore_Fb library. 
+ * @return  @c The number of times the system has been initialised without
+ *             being shut down.
+ * @ingroup Ecore_FB_Library_Group
+ */
+EAPI int
+ecore_fb_shutdown(void)
+{    
+       _ecore_fb_init_count--;
+       if(!_ecore_fb_init_count)
+       {
+               ecore_fb_vt_shutdown();
+               return 0;
+       }
+       return _ecore_fb_init_count;
+}
+
+
+/**
+ * Retrieves the width and height of the current frame buffer in pixels.
+ * @param w Pointer to an integer in which to store the width.
+ * @param h Pointer to an interge in which to store the height.
+ */
+EAPI void
+ecore_fb_size_get(int *w, int *h)
+{
+   if (w) *w = _ecore_fb_console_w;
+   if (h) *h = _ecore_fb_console_h;
+}
+
+static void
+_ecore_fb_size_get(int *w, int *h)
+{
+   struct fb_var_screeninfo fb_var;
+   int fb;
+   
+   fb = open("/dev/fb0", O_RDWR);
+   if (fb < 0)
+     {
+       if (w) *w = 0;
+       if (h) *h = 0;
+       return;
+     }
+   if (ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1)
+     {
+       if (w) *w = 0;
+       if (h) *h = 0;
+       return;
+     }
+   close(fb);
+   if (w) *w = fb_var.xres;
+   if (h) *h = fb_var.yres;
+}
diff --git a/src/lib/ecore_fb/ecore_fb_kbd.c b/src/lib/ecore_fb/ecore_fb_kbd.c
new file mode 100644 (file)
index 0000000..0cc1186
--- /dev/null
@@ -0,0 +1,305 @@
+static void _ecore_fb_event_free_key_down(void *data, void *ev);
+static void _ecore_fb_event_free_key_up(void *data, void *ev);
+
+static const char *_ecore_fb_kbd_syms[128 * 6] =
+{
+#include "ecore_fb_keytable.h"
+};
+
+static const char *_ecore_fb_btn_syms[128] =
+{
+   "0x00",
+     "Escape", 
+     "F1", 
+     "F2", 
+     "F3", 
+     "F4", 
+     "Up", 
+     "Right",
+     "Left", 
+     "Down", 
+     "Return", 
+     "0x1b", 
+     "0x1c", 
+     "0x1d", 
+     "0x1e",
+     "0x1f",
+     "0x20", 
+     "0x21", 
+     "0x22", 
+     "0x23", 
+     "0x24", 
+     "0x25", 
+     "0x26", 
+     "0x27",
+     "0x28", 
+     "0x29", 
+     "0x2a",
+     "0x2b",
+     "0x2c",
+     "0x2d",
+     "0x2e", 
+     "0x2f", 
+     "0x30", 
+     "0x31", 
+     "0x32", 
+     "0x33", 
+     "0x34", 
+     "0x35", 
+     "0x36", 
+     "0x37",
+     "0x38", 
+     "0x39", 
+     "0x3a",
+     "0x3b",
+     "0x3c",
+     "0x3d",
+     "0x3e", 
+     "0x3f", 
+     "0x40", 
+     "0x41", 
+     "0x42", 
+     "0x43", 
+     "0x44", 
+     "0x45", 
+     "0x46", 
+     "0x47",
+     "0x48", 
+     "0x49", 
+     "0x4a",
+     "0x4b",
+     "0x4c",
+     "0x4d",
+     "0x4e", 
+     "0x4f", 
+     "0x50", 
+     "0x51", 
+     "0x52", 
+     "0x53", 
+     "0x54", 
+     "0x55", 
+     "0x56", 
+     "0x57",
+     "0x58", 
+     "0x59", 
+     "0x5a",
+     "0x5b",
+     "0x5c",
+     "0x5d",
+     "0x5e", 
+     "0x5f", 
+     "0x60", 
+     "0x61", 
+     "0x62", 
+     "0x63", 
+     "0x64", 
+     "0x65", 
+     "0x66", 
+     "0x67",
+     "0x68", 
+     "0x69", 
+     "0x6a",
+     "0x6b",
+     "0x6c",
+     "0x6d",
+     "0x6e", 
+     "0x6f", 
+     "0x70", 
+     "0x71", 
+     "0x72", 
+     "0x73", 
+     "0x74", 
+     "0x75", 
+     "0x76", 
+     "0x77",
+     "0x78", 
+     "0x79", 
+     "0x7a",
+     "0x7b",
+     "0x7c",
+     "0x7d",
+     "0x7e", 
+     "0x7f"
+};
+static int _ecore_fb_kbd_fd = 0;
+static int _ecore_fb_ctrl = 0;
+static int _ecore_fb_alt = 0;
+static int _ecore_fb_shift = 0;
+static int _ecore_fb_lock = 0;
+
+static Ecore_Fd_Handler *_ecore_fb_kbd_fd_handler_handle = NULL;
+static int _ecore_fb_kbd_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+
+static void 
+_ecore_fb_event_free_key_down(void *data __UNUSED__, void *ev)
+{
+   Ecore_Fb_Event_Key_Up *e;
+   e = ev;
+   free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_fb_event_free_key_up(void *data __UNUSED__, void *ev)
+{
+   Ecore_Fb_Event_Key_Up *e;
+   
+   e = ev;
+   free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static int
+_ecore_fb_kbd_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   int v = 0;
+   
+   do
+     {
+       unsigned char buf;
+       
+       v = read(_ecore_fb_kbd_fd, &buf, 1);
+       if (v < 0) return 1;
+       if (v < 1) return 1;
+       if (!(buf & 0x80))
+         {
+            /* DOWN */
+            int vt_switch = -1;
+            Ecore_Fb_Event_Key_Down *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Key_Down));
+            if (!e) goto retry;
+            if (_ecore_fb_kbd_fd == _ecore_fb_tty_fd)
+              {
+                 int add = 0;
+                 
+                 if (_ecore_fb_shift) add = 1;
+                 else if (_ecore_fb_lock) add = 2;
+                 e->keyname = strdup(_ecore_fb_kbd_syms[(buf & 0x7f) * 6]);
+                 e->keysymbol = strdup(_ecore_fb_kbd_syms[((buf & 0x7f) * 6) + add]);
+                 e->key_compose = strdup(_ecore_fb_kbd_syms[((buf & 0x7f) * 6) + 3 + add]);
+              }
+            else
+              e->keyname = strdup(_ecore_fb_btn_syms[buf & 0x7f]);
+            if (!e->keyname)
+              {
+                 free(e);
+                 goto retry;
+              }
+            ecore_event_add(ECORE_FB_EVENT_KEY_DOWN, e, _ecore_fb_event_free_key_down, NULL);
+            if (!strcmp(e->keyname, "Control_L"))
+              _ecore_fb_ctrl++;
+            else if (!strcmp(e->keyname, "Control_R"))
+              _ecore_fb_ctrl++;
+            else if (!strcmp(e->keyname, "Alt_L"))
+              _ecore_fb_alt++;
+            else if (!strcmp(e->keyname, "Alt_R"))
+              _ecore_fb_alt++;
+            else if (!strcmp(e->keyname, "Shift_L"))
+              _ecore_fb_shift++;
+            else if (!strcmp(e->keyname, "Shift_R"))
+              _ecore_fb_shift++;
+            else if (!strcmp(e->keyname, "Caps_Lock"))
+              _ecore_fb_lock++;
+            else if (!strcmp(e->keyname, "F1")) vt_switch = 0;
+            else if (!strcmp(e->keyname, "F2")) vt_switch = 1;
+            else if (!strcmp(e->keyname, "F3")) vt_switch = 2;
+            else if (!strcmp(e->keyname, "F4")) vt_switch = 3;
+            else if (!strcmp(e->keyname, "F5")) vt_switch = 4;
+            else if (!strcmp(e->keyname, "F6")) vt_switch = 5;
+            else if (!strcmp(e->keyname, "F7")) vt_switch = 6;
+            else if (!strcmp(e->keyname, "F8")) vt_switch = 7;
+            else if (!strcmp(e->keyname, "F9")) vt_switch = 8;
+            else if (!strcmp(e->keyname, "F10")) vt_switch = 9;
+            else if (!strcmp(e->keyname, "F11")) vt_switch = 10;
+            else if (!strcmp(e->keyname, "F12")) vt_switch = 11;
+            if (_ecore_fb_ctrl > 2) _ecore_fb_ctrl = 2;
+            if (_ecore_fb_alt > 2) _ecore_fb_alt = 2;
+            if ((vt_switch >= 0) &&
+                (_ecore_fb_ctrl) &&
+                (_ecore_fb_alt))
+              _ecore_fb_vt_switch(vt_switch);
+         }
+       else
+         {
+            /* UP */
+            Ecore_Fb_Event_Key_Up *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Key_Up));
+            if (!e) goto retry;
+            if (_ecore_fb_kbd_fd == _ecore_fb_tty_fd)
+              {
+                 int add = 0;
+                 
+                 if (_ecore_fb_shift) add = 1;
+                 else if (_ecore_fb_lock) add = 2;
+                 e->keyname = strdup(_ecore_fb_kbd_syms[(buf & 0x7f) * 6]);
+                 e->keysymbol = strdup(_ecore_fb_kbd_syms[((buf & 0x7f) * 6) + add]);
+                 e->key_compose = strdup(_ecore_fb_kbd_syms[((buf & 0x7f) * 6) + 3 + add]);
+              }
+            else
+              e->keyname = strdup(_ecore_fb_btn_syms[buf & 0x7f]);
+            if (!e->keyname)
+              {
+                 free(e);
+                 goto retry;
+              }
+            ecore_event_add(ECORE_FB_EVENT_KEY_UP, e, _ecore_fb_event_free_key_up, NULL);
+            if (!strcmp(e->keyname, "Control_L"))
+              _ecore_fb_ctrl--;
+            else if (!strcmp(e->keyname, "Control_R"))
+              _ecore_fb_ctrl--;
+            else if (!strcmp(e->keyname, "Alt_L"))
+              _ecore_fb_alt--;
+            else if (!strcmp(e->keyname, "Alt_R"))
+              _ecore_fb_alt--;
+            else if (!strcmp(e->keyname, "Shift_L"))
+              _ecore_fb_shift--;
+            else if (!strcmp(e->keyname, "Shift_R"))
+              _ecore_fb_shift--;
+            else if (!strcmp(e->keyname, "Caps_Lock"))
+              _ecore_fb_lock--;
+            if (_ecore_fb_ctrl < 0) _ecore_fb_ctrl = 0;
+            if (_ecore_fb_alt < 0) _ecore_fb_alt = 0;
+            if (_ecore_fb_shift < 0) _ecore_fb_shift = 0;
+            if (_ecore_fb_lock < 0) _ecore_fb_lock = 0;
+         }
+       retry:
+       ;
+     }
+   while (v > 0);
+   return 1;
+}
+
+int
+ecore_fb_kbd_init(void)
+{
+   int prev_flags;
+   
+   prev_flags = fcntl(_ecore_fb_kbd_fd, F_GETFL);
+   fcntl(_ecore_fb_kbd_fd, F_SETFL, prev_flags | O_NONBLOCK);
+   _ecore_fb_kbd_fd_handler_handle = ecore_main_fd_handler_add(_ecore_fb_kbd_fd,
+                                                                   ECORE_FD_READ,
+                                                                   _ecore_fb_kbd_fd_handler, NULL,
+                                                                   NULL, NULL);
+   if(!_ecore_fb_kbd_fd_handler_handle) return 0;
+   return 1;
+}
+
+void
+ecore_fb_kbd_shutdown(void)
+{
+   if (_ecore_fb_kbd_fd >= 0) close(_ecore_fb_kbd_fd);
+   if (_ecore_fb_kbd_fd_handler_handle) 
+     ecore_main_fd_handler_del(_ecore_fb_kbd_fd_handler_handle);
+   _ecore_fb_kbd_fd = 0;
+   _ecore_fb_kbd_fd_handler_handle = NULL;
+   _ecore_fb_ctrl = 0;
+   _ecore_fb_lock = 0;
+   _ecore_fb_shift = 0;
+   _ecore_fb_alt = 0;
+}
diff --git a/src/lib/ecore_fb/ecore_fb_keytable.h b/src/lib/ecore_fb/ecore_fb_keytable.h
new file mode 100644 (file)
index 0000000..ff03497
--- /dev/null
@@ -0,0 +1,129 @@
+/* this table was taken from ecore_fb, is the default en layout */
+         "0x00",          "0x00",          "0x00", /**/"",    "",    "",/***/
+       "Escape",        "Escape",        "Escape", /**/"",    "",    "",/***/
+            "1",        "exclam",             "1", /**/"1",   "!",   "1",/***/
+            "2",            "at",             "2", /**/"2",   "@",   "2",/***/
+            "3",    "numbersign",             "3", /**/"3",   "#",   "3",/***/
+            "4",        "dollar",             "4", /**/"4",   "$",   "4",/***/
+            "5",       "percent",             "5", /**/"5",   "%",   "5",/***/
+            "6",  "asciicircumm",             "6", /**/"6",   "^",   "6",/***/
+            "7",     "ampersand",             "7", /**/"7",   "&",   "7",/***/
+            "8",       "asterik",             "8", /**/"8",   "*",   "8",/***/
+            "9",     "parenleft",             "9", /**/"9",   "(",   "9",/***/
+            "0",    "parenright",             "0", /**/"0",   ")",   "0",/***/
+        "minus",    "underscore",         "minus", /**/"-",   "_",   "-",/***/
+        "equal",          "plus",         "equal", /**/"=",   "+",   "=",/***/
+    "BackSpace",     "BackSpace",     "BackSpace", /**/"\010","\010","\010",/***/
+          "Tab",  "ISO_Left_Tab",           "Tab", /**/"\011","",    "\011",/***/
+            "q",             "Q",             "Q", /**/"q",   "Q",   "Q",/***/
+            "w",             "W",             "W", /**/"w",   "W",   "W",/***/
+            "e",             "E",             "E", /**/"e",   "E",   "E",/***/
+            "r",             "R",             "R", /**/"r",   "R",   "R",/***/
+            "t",             "T",             "T", /**/"t",   "T",   "T",/***/
+            "y",             "Y",             "Y", /**/"y",   "Y",   "Y",/***/
+            "u",             "U",             "U", /**/"u",   "U",   "U",/***/
+            "i",             "I",             "I", /**/"i",   "I",   "I",/***/
+            "o",             "O",             "O", /**/"o",   "O",   "O",/***/
+            "p",             "P",             "P", /**/"p",   "P",   "P",/***/
+  "bracketleft",     "braceleft",   "bracketleft", /**/"[",   "{",   "[",/***/
+ "bracketright",    "braceright",  "bracketright", /**/"]",   "}",   "]",/***/
+       "Return",        "Return",        "Return", /**/"\015","\015","\015",/***/
+    "Control_L",     "Control_L",     "Control_L", /**/"",    "",    "",/***/
+            "a",             "A",             "A", /**/"a",   "A",   "A",/***/
+            "s",             "S",             "S", /**/"s",   "S",   "S",/***/
+            "d",             "D",             "D", /**/"d",   "D",   "D",/***/
+            "f",             "F",             "F", /**/"f",   "F",   "F",/***/
+            "g",             "G",             "G", /**/"g",   "G",   "G",/***/
+            "h",             "h",             "H", /**/"h",   "H",   "H",/***/
+            "j",             "J",             "J", /**/"j",   "J",   "J",/***/
+            "k",             "K",             "K", /**/"k",   "K",   "K",/***/
+            "l",             "L",             "L", /**/"l",   "L",   "L",/***/
+    "semicolon",         "colon",     "semicolon", /**/";",   ":",   ";",/***/
+   "apostrophe",      "quotedbl",    "apostrophe", /**/"'",   "\"",  "'",/***/
+        "grave",    "asciitilde",         "grave", /**/"`",   "~",   "`",/***/
+      "Shift_L",       "Shift_L",       "Shift_L", /**/"",    "",    "",/***/
+    "backslash",           "bar",     "backslash", /**/"\\",  "|",   "\\",/***/
+            "z",             "Z",             "Z", /**/"z",   "Z",   "Z",/***/
+            "x",             "X",             "X", /**/"x",   "X",   "X",/***/
+            "c",             "C",             "C", /**/"c",   "C",   "C",/***/
+            "v",             "V",             "V", /**/"v",   "V",   "V",/***/
+            "b",             "B",             "B", /**/"b",   "B",   "B",/***/
+            "n",             "N",             "N", /**/"n",   "N",   "N",/***/
+            "m",             "M",             "M", /**/"m",   "M",   "M",/***/
+        "comma",          "less",         "comma", /**/",",   "<",   ",",/***/
+       "period",       "greater",        "period", /**/".",   ">",   ".",/***/
+        "slash",      "question",         "slash", /**/"/",   "?",   "/",/***/
+      "Shift_R",       "Shift_R",       "Shift_R", /**/"",    "",    "",/***/
+  "KP_Multiply",   "KP_Multiply",   "KP_Multiply", /**/"",    "*",   "",/***/
+        "Alt_L",         "Alt_L",         "Alt_L", /**/"",    "",    "",/***/
+        "space",         "space",         "space", /**/" ",   " ",   " ",/***/
+    "Caps_Lock",     "Caps_Lock",     "Caps_Lock", /**/"",    "",    "",/***/
+           "F1",            "F1",            "F1", /**/"",    "",    "",/***/
+           "F2",            "F2",            "F2", /**/"",    "",    "",/***/
+           "F3",            "F3",            "F3", /**/"",    "",    "",/***/
+           "F4",            "F4",            "F4", /**/"",    "",    "",/***/
+           "F5",            "F5",            "F5", /**/"",    "",    "",/***/
+           "F6",            "F6",            "F6", /**/"",    "",    "",/***/
+           "F7",            "F7",            "F7", /**/"",    "",    "",/***/
+           "F8",            "F8",            "F8", /**/"",    "",    "",/***/
+           "F9",            "F9",            "F9", /**/"",    "",    "",/***/
+          "F10",           "F10",           "F10", /**/"",    "",    "",/***/
+     "Num_Lock",      "Num_Lock",      "Num_Lock", /**/"",    "",    "",/***/
+  "Scroll_Lock",   "Scroll_Lock",   "Scroll_Lock", /**/"",    "",    "",/***/
+      "KP_Home",          "KP_7",       "KP_Home", /**/"",    "7",   "",/***/
+        "KP_Up",          "KP_8",         "KP_Up", /**/"",    "8",   "",/***/
+     "KP_Prior",          "KP_9",      "KP_Prior", /**/"",    "9",   "",/***/
+  "KP_Subtract",   "KP_Subtract",   "KP_Subtract", /**/"",    "",    "",/***/
+      "KP_Left",          "KP_4",       "KP_Left", /**/"",    "4",   "",/***/
+     "KP_Begin",          "KP_5",      "KP_Begin", /**/"",    "5",   "",/***/
+     "KP_Right",          "KP_6",      "KP_Right", /**/"",    "6",   "",/***/
+       "KP_Add",        "KP_Add",        "KP_Add", /**/"",    "",    "",/***/
+       "KP_End",          "KP_1",        "KP_End", /**/"",    "1",   "",/***/
+      "KP_Down",          "KP_2",       "KP_Down", /**/"",    "2",   "",/***/
+      "KP_Next",          "KP_3",       "KP_Next", /**/"",    "3",   "",/***/
+    "KP_Insert",          "KP_0",     "KP_Insert", /**/"",    "0",   "",/***/
+    "KP_Delete",    "KP_Decimal",     "KP_Delete", /**/"",    ".",   "",/***/
+        "0x54",          "0x54",          "0x54", /**/"",    "",    "",/***/
+         "0x55",          "0x55",          "0x55", /**/"",    "",    "",/***/
+         "0x56",          "0x56",          "0x56", /**/"",    "",    "",/***/
+          "F11",           "F11",           "F11", /**/"",    "",    "",/***/
+          "F12",           "F12",           "F12", /**/"",    "",    "",/***/
+         "0x59",          "0x59",          "0x59", /**/"",    "",    "",/***/
+         "0x5a",          "0x5a",          "0x5a", /**/"",    "",    "",/***/
+         "0x5b",          "0x5b",          "0x5b", /**/"",    "",    "",/***/
+         "0x5c",          "0x5c",          "0x5c", /**/"",    "",    "",/***/
+         "0x5d",          "0x5d",          "0x5d", /**/"",    "",    "",/***/
+         "0x5e",          "0x5e",          "0x5e", /**/"",    "",    "",/***/
+         "0x5f",          "0x5f",          "0x5f", /**/"",    "",    "",/***/
+     "KP_Enter",      "KP_Enter",      "KP_Enter", /**/"",    "",    "",/***/
+    "Control_R",     "Control_R",     "Control_R", /**/"",    "",    "",/***/
+    "KP_Divide",     "KP_Divide",     "KP_Divide", /**/"",    "",    "",/***/
+        "Print",         "Print",         "Print", /**/"",    "",    "",/***/
+        "Alt_R",         "Alt_R",         "Alt_R", /**/"",    "",    "",/***/
+         "0x65",          "0x65",          "0x65", /**/"",    "",    "",/***/
+         "Home",          "Home",          "Home", /**/"",    "",    "",/***/
+           "Up",            "Up",            "Up", /**/"",    "",    "",/***/
+        "Prior",         "Prior",         "Prior", /**/"",    "",    "",/***/
+         "Left",          "Left",          "Left", /**/"",    "",    "",/***/
+        "Right",         "Right",         "Right", /**/"",    "",    "",/***/
+          "End",           "End",           "End", /**/"",    "",    "",/***/
+         "Down",          "Down",          "Down", /**/"",    "",    "",/***/
+         "Next",          "Next",          "Next", /**/"",    "",    "",/***/
+       "Insert",        "Insert",        "Insert", /**/"",    "",    "",/***/
+       "Delete",        "Delete",        "Delete", /**/"\177","\177","\177",/***/
+         "0x70",          "0x70",          "0x70", /**/"",    "",    "",/***/
+         "0x71",          "0x71",          "0x71", /**/"",    "",    "",/***/
+         "0x72",          "0x72",          "0x72", /**/"",    "",    "",/***/
+         "0x73",          "0x73",          "0x73", /**/"",    "",    "",/***/
+         "0x74",          "0x74",          "0x74", /**/"",    "",    "",/***/
+         "0x75",          "0x75",          "0x75", /**/"",    "",    "",/***/
+         "0x76",          "0x76",          "0x76", /**/"",    "",    "",/***/
+        "Pause",         "Pause",         "Pause", /**/"",    "",    "",/***/
+         "0x78",          "0x78",          "0x78", /**/"",    "",    "",/***/
+         "0x79",          "0x79",          "0x79", /**/"",    "",    "",/***/
+         "0x7a",          "0x7a",          "0x7a", /**/"",    "",    "",/***/
+         "0x7b",          "0x7b",          "0x7b", /**/"",    "",    "",/***/
+         "0x7c",          "0x7c",          "0x7c", /**/"",    "",    "",/***/
+      "Super_L",       "Super_L",       "Super_L", /**/"",    "",    "",/***/
+      "Super_R",       "Super_R",       "Super_R", /**/"",    "",    "",/***/
+         "0x7f",          "0x7f",          "0x7f", /**/"",    "",    "" /***/
diff --git a/src/lib/ecore_fb/ecore_fb_li.c b/src/lib/ecore_fb/ecore_fb_li.c
new file mode 100644 (file)
index 0000000..cc1d591
--- /dev/null
@@ -0,0 +1,520 @@
+#include "Ecore_Fb.h"
+#include "ecore_fb_private.h"
+
+#define CLICK_THRESHOLD_DEFAULT 0.25
+
+static Ecore_List *_ecore_fb_li_devices = NULL;
+
+static const char *_ecore_fb_li_kbd_syms[128 * 6] =
+{
+#include "ecore_fb_keytable.h"
+};
+
+/* Initial Copyright (C) Brad Hards (1999-2002),
+ * this function is used to tell if "bit" is set in "array"
+ * it selects a byte from the array, and does a boolean AND
+ * operation with a byte that only has the relevant bit set.
+ * eg. to check for the 12th bit, we do (array[1] & 1<<4).
+ * Moved to static inline in order to force compiler to otimized
+ * the unsued part away or force a link error if long has an unexpected
+ * size.
+ *                                             - bigeasy
+ */
+extern int long_has_neither_32_not_64_bits(void);
+static inline int test_bit(int bit, unsigned long *array)
+{
+       if (sizeof(long) == 4)
+               return array[bit / 32] & (1 << (bit % 32));
+
+       else if (sizeof(long) == 8)
+               return array[bit / 64] & (1 << (bit % 64));
+
+       else long_has_neither_32_nor_64_bits();
+}
+
+static void 
+_ecore_fb_li_event_free_key_down(void *data, void *ev)
+{
+
+       Ecore_Fb_Event_Key_Up *e;
+
+       e = ev;
+       free(e->keyname);
+       if (e->keysymbol) free(e->keysymbol);
+       if (e->key_compose) free(e->key_compose);
+       free(e);
+}
+
+static void 
+_ecore_fb_li_event_free_key_up(void *data, void *ev)
+{
+
+       Ecore_Fb_Event_Key_Up *e;
+
+       e = ev;
+       free(e->keyname);
+       if (e->keysymbol) free(e->keysymbol);
+       if (e->key_compose) free(e->key_compose);
+       free(e);
+}
+
+static void
+_ecore_fb_li_device_event_key(Ecore_Fb_Input_Device *dev, struct input_event *iev)
+{
+       if(!dev->listen)
+               return;
+
+       /* check for basic keyboard keys */
+       if(iev->code >= KEY_ESC && iev->code <= KEY_COMPOSE)
+       {
+               /* check the key table */
+               if(iev->value)
+               {
+                       int offset = 0;
+                       Ecore_Fb_Event_Key_Down *ev;
+
+                       ev = calloc(1, sizeof(Ecore_Fb_Event_Key_Down));
+                       if(dev->keyboard.shift) offset = 1;
+                       else if(dev->keyboard.lock) offset = 2;
+                       ev->keyname = strdup(_ecore_fb_li_kbd_syms[iev->code * 6]);
+
+                       ev->keysymbol = strdup(_ecore_fb_li_kbd_syms[(iev->code * 6) + offset]);
+                       ev->key_compose = strdup(_ecore_fb_li_kbd_syms[(iev->code * 6) + 3 + offset]);
+                       ev->dev = dev;
+                       ecore_event_add(ECORE_FB_EVENT_KEY_DOWN, ev, _ecore_fb_li_event_free_key_down, NULL);
+                       /* its a repeated key, dont increment */
+                       if(iev->value == 2)
+                               return;
+                       if (!strcmp(ev->keyname, "Control_L"))
+                               dev->keyboard.ctrl++;
+                       else if (!strcmp(ev->keyname, "Control_R"))
+                               dev->keyboard.ctrl++;
+                       else if (!strcmp(ev->keyname, "Alt_L"))
+                               dev->keyboard.alt++;
+                       else if (!strcmp(ev->keyname, "Alt_R"))
+                               dev->keyboard.alt++;
+                       else if (!strcmp(ev->keyname, "Shift_L"))
+                               dev->keyboard.shift++;
+                       else if (!strcmp(ev->keyname, "Shift_R"))
+                               dev->keyboard.shift++;
+                       else if (!strcmp(ev->keyname, "Caps_Lock"))
+                               dev->keyboard.lock++;
+                       if (dev->keyboard.ctrl > 2) dev->keyboard.ctrl = 2;
+                       if (dev->keyboard.alt > 2) dev->keyboard.alt = 2;
+                       if (dev->keyboard.shift > 2) dev->keyboard.shift = 2;
+                       if (dev->keyboard.lock > 1) dev->keyboard.lock = 1;
+               }
+               else
+               {
+                       int offset = 0;
+                       Ecore_Fb_Event_Key_Up *ev;
+
+                       ev = calloc(1, sizeof(Ecore_Fb_Event_Key_Up));
+                       if(dev->keyboard.shift) offset = 1;
+                       else if(dev->keyboard.lock) offset = 2;
+                       ev->keyname = strdup(_ecore_fb_li_kbd_syms[iev->code * 6]);
+
+                       ev->keysymbol = strdup(_ecore_fb_li_kbd_syms[(iev->code * 6) + offset]);
+                       ev->key_compose = strdup(_ecore_fb_li_kbd_syms[(iev->code * 6) + 3 + offset]);
+                       ev->dev = dev;
+                       ecore_event_add(ECORE_FB_EVENT_KEY_UP, ev, _ecore_fb_li_event_free_key_up, NULL);
+                       if (!strcmp(ev->keyname, "Control_L"))
+                               dev->keyboard.ctrl--;
+                       else if (!strcmp(ev->keyname, "Control_R"))
+                               dev->keyboard.ctrl--;
+                       else if (!strcmp(ev->keyname, "Alt_L"))
+                               dev->keyboard.alt--;
+                       else if (!strcmp(ev->keyname, "Alt_R"))
+                               dev->keyboard.alt--;
+                       else if (!strcmp(ev->keyname, "Shift_L"))
+                               dev->keyboard.shift--;
+                       else if (!strcmp(ev->keyname, "Shift_R"))
+                               dev->keyboard.shift--;
+                       else if (!strcmp(ev->keyname, "Caps_Lock"))
+                               dev->keyboard.lock--;
+                       if (dev->keyboard.ctrl < 0) dev->keyboard.ctrl = 0;
+                       if (dev->keyboard.alt < 0) dev->keyboard.alt = 0;
+                       if (dev->keyboard.shift < 0) dev->keyboard.shift = 0;
+                       if (dev->keyboard.lock < 0) dev->keyboard.lock = 0;
+               }
+       }
+       /* check for mouse button events */
+       else if(iev->code >= BTN_MOUSE && iev->code < BTN_JOYSTICK)
+       {
+               int button;
+
+               button = ((iev->code & 0x00F) + 1);
+               if(iev->value)
+               {
+                       Ecore_Fb_Event_Mouse_Button_Down *ev;
+                       double current;
+
+                       ev = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Button_Down));
+                       ev->dev = dev;
+                       ev->button = button;
+                       ev->x = dev->mouse.x;
+                       ev->y = dev->mouse.y;
+
+                       current = ecore_time_get();
+                       if((current - dev->mouse.prev) <= dev->mouse.threshold)
+                       {
+                               ev->double_click = 1;
+                       }
+                       if((current - dev->mouse.last) <= (2 * dev->mouse.threshold))
+                       {
+                               ev->triple_click = 1;
+                               /* reset */
+                               dev->mouse.prev = 0;
+                               dev->mouse.last = 0;
+                               current = 0;
+                       }
+                       else
+                       {
+                               /* update values */
+                               dev->mouse.last = dev->mouse.prev;
+                               dev->mouse.prev = current;
+                       }
+                       ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, ev, NULL ,NULL);
+               }
+               else
+               {
+                       Ecore_Fb_Event_Mouse_Button_Up *ev;
+
+                       ev = calloc(1,sizeof(Ecore_Fb_Event_Mouse_Button_Up));
+                       ev->dev = dev;
+                       ev->button = button;
+                       ev->x = dev->mouse.x;
+                       ev->y = dev->mouse.y;
+
+                       ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, ev, NULL ,NULL);
+               }
+       }
+}
+
+static void
+_ecore_fb_li_device_event_rel(Ecore_Fb_Input_Device *dev, struct input_event *iev)
+{
+       if(!dev->listen)
+               return;
+       /* dispatch the button events if they are queued */
+       switch(iev->code)
+       {
+               case REL_X:
+               case REL_Y:
+               {
+                       Ecore_Fb_Event_Mouse_Move *ev;
+                       if(iev->code == REL_X)
+                       {
+                               dev->mouse.x += iev->value;
+                               if(dev->mouse.x > dev->mouse.w - 1)
+                                       dev->mouse.x = dev->mouse.w;
+                               else if(dev->mouse.x < 0)
+                                       dev->mouse.x = 0;
+                       }
+                       else
+                       {
+                               dev->mouse.y += iev->value;
+                               if(dev->mouse.y > dev->mouse.h - 1)
+                                       dev->mouse.y = dev->mouse.h;
+                               else if(dev->mouse.y < 0)
+                                       dev->mouse.y = 0;
+                       }
+                       ev = calloc(1,sizeof(Ecore_Fb_Event_Mouse_Move));
+                       ev->x = dev->mouse.x;
+                       ev->y = dev->mouse.y;
+                       ev->dev = dev;
+
+                       ecore_event_add(ECORE_FB_EVENT_MOUSE_MOVE,ev,NULL,NULL);
+                       break;
+               }
+               case REL_WHEEL:
+               case REL_HWHEEL:
+               {
+                       Ecore_Fb_Event_Mouse_Wheel *ev;
+                       ev = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Wheel));
+
+                       ev->x = dev->mouse.x;
+                       ev->y = dev->mouse.y;
+                       if(iev->code == REL_HWHEEL)
+                               ev->direction = 1;
+                       ev->wheel = iev->value;
+                       ev->dev = dev;
+                       ecore_event_add(ECORE_FB_EVENT_MOUSE_WHEEL, ev, NULL, NULL);
+                       break;
+               }
+               default:
+                       break;
+       }
+}
+
+static void
+_ecore_fb_li_device_event_abs(Ecore_Fb_Input_Device *dev, struct input_event *iev)
+{
+       if(!dev->listen)
+               return;
+       switch(iev->code)
+       {
+               case ABS_X:
+               case ABS_Y:
+               {
+                       Ecore_Fb_Event_Mouse_Move *ev;
+                       if((iev->code == ABS_X) && (dev->mouse.w != 0))
+                       {
+                               int tmp;
+
+                               tmp = (int)((double)(iev->value - dev->mouse.min_w) / dev->mouse.rel_w);
+                               if(tmp < 0)
+                                       dev->mouse.x = 0;
+                               else if(tmp > dev->mouse.w)
+                                       dev->mouse.x = dev->mouse.w;
+                               else
+                                       dev->mouse.x = tmp;
+                       }
+                       else if((iev->code == ABS_Y) && (dev->mouse.h != 0))
+                       {
+                               int tmp;
+
+                               tmp = (int)((double)(iev->value - dev->mouse.min_h) / dev->mouse.rel_h);
+                               if(tmp < 0)
+                                       dev->mouse.y = 0;
+                               else if(tmp > dev->mouse.h)
+                                       dev->mouse.y = dev->mouse.h;
+                               else
+                                       dev->mouse.y = tmp;
+                       }
+                       ev = calloc(1,sizeof(Ecore_Fb_Event_Mouse_Move));
+                       ev->x = dev->mouse.x;
+                       ev->y = dev->mouse.y;
+                       ev->dev = dev;
+
+                       ecore_event_add(ECORE_FB_EVENT_MOUSE_MOVE, ev, NULL, NULL);
+                       break;
+               }
+               case ABS_PRESSURE:
+                       /* TODO emulate a button press */
+                       break;
+       }
+}
+
+static int
+_ecore_fb_li_device_fd_callback(void *data, Ecore_Fd_Handler *fdh)
+{
+       Ecore_Fb_Input_Device *dev;
+       struct input_event ev[64];
+       int len;
+       int i;
+
+       dev = (Ecore_Fb_Input_Device*)data;
+       /* read up to 64 events at once */
+       len = read(dev->fd, &ev, sizeof(ev));
+       // printf("[ecore_fb_li_device:fd_callback] received %d data\n", len);
+       for(i = 0; i < len/sizeof(ev[0]); i++)
+       {
+               switch(ev[i].type)
+               {
+                       case EV_ABS:
+                               _ecore_fb_li_device_event_abs(dev, &ev[i]);
+                               break;
+                       case EV_REL:
+                               _ecore_fb_li_device_event_rel(dev, &ev[i]);
+                               break;
+                       case EV_KEY:
+                               _ecore_fb_li_device_event_key(dev, &ev[i]);
+                               break;
+                       default:
+                               break;
+               }
+       }
+       return 1;
+}
+
+/* 
+ * Starts getting events from the input device 
+ *
+ */
+EAPI void 
+ecore_fb_input_device_listen(Ecore_Fb_Input_Device *dev, int listen)
+{
+       if(!dev) return;
+       if((listen && dev->listen) || (!listen && !dev->listen)) return;
+       if(listen)
+       {
+               /* if the device already had a handler */
+               if(!dev->handler)
+                       dev->handler = ecore_main_fd_handler_add(dev->fd, ECORE_FD_READ, _ecore_fb_li_device_fd_callback, dev, NULL, NULL);
+
+       }
+       dev->listen = listen;
+}
+
+#ifndef EV_CNT
+#define EV_CNT (EV_MAX+1)
+#endif
+
+/*
+ * Opens an input device
+ */
+EAPI Ecore_Fb_Input_Device *
+ecore_fb_input_device_open(const char *dev)
+{
+       Ecore_Fb_Input_Device *device;
+       unsigned long event_type_bitmask[EV_CNT / 32 + 1];
+       int event_type;
+       int fd;
+
+       if(!dev) return NULL;
+       device = calloc(1, sizeof(Ecore_Fb_Input_Device));
+       if(!device) return NULL;
+
+       if(!_ecore_fb_li_devices)
+               _ecore_fb_li_devices = ecore_list_new();
+
+       if((fd = open(dev, O_RDONLY, O_NONBLOCK)) < 0)
+       {
+               fprintf(stderr, "[ecore_fb_li:device_open] %s %s", dev, strerror(errno));
+               goto error_open;
+       }
+       /* query capabilities */
+       if(ioctl(fd, EVIOCGBIT(0, EV_MAX), event_type_bitmask) < 0)
+       {
+               fprintf(stderr,"[ecore_fb_li:device_open] query capabilities %s %s", dev, strerror(errno));
+               goto error_caps;
+       }
+       /* query name */
+       device->info.name = calloc(256, sizeof(char));
+       if(ioctl(fd, EVIOCGNAME(sizeof(char) * 256), device->info.name) < 0)
+       {
+               fprintf(stderr, "[ecore_fb_li:device_open] get name %s %s", dev, strerror(errno));
+               strcpy(device->info.name, "Unknown");
+       }
+       device->fd = fd;
+       device->info.dev = strdup(dev);
+       /* common */
+       device->mouse.threshold = CLICK_THRESHOLD_DEFAULT;
+
+       /* set info */
+       for(event_type = 0; event_type < EV_MAX; event_type++)
+       {
+               if(!test_bit(event_type, event_type_bitmask))
+                       continue;
+               switch(event_type)
+               {
+                       case EV_SYN :
+                       break;
+
+                       case EV_KEY:
+                       device->info.cap |= ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS;
+                       break;
+
+                       case EV_REL:
+                       device->info.cap |= ECORE_FB_INPUT_DEVICE_CAP_RELATIVE;
+                       break;
+
+                       case EV_ABS:
+                       device->info.cap |= ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE;
+                       break;
+
+                       case EV_MSC:
+                       case EV_LED:
+                       case EV_SND:
+                       case EV_REP:
+                       case EV_FF :
+                       case EV_FF_STATUS:
+                       case EV_PWR:
+                       default:
+                       break;
+               }
+       }
+       ecore_list_append(_ecore_fb_li_devices, device);
+       return device;
+
+       error_caps:
+       close(fd);
+       error_open:
+       free(device);
+       return NULL;
+
+}
+
+EAPI void
+ecore_fb_input_device_close(Ecore_Fb_Input_Device *dev)
+{
+       /* close the fd */
+       close(dev->fd);
+       /* remove the element from the list */
+       if(ecore_list_goto(_ecore_fb_li_devices, dev))
+               ecore_list_remove(_ecore_fb_li_devices);
+       free(dev);
+}
+
+
+/*
+ * If the device is a relative input device, 
+ * we must set a width and height for it. If its
+ * absolute set the ioctl correctly, if not, unsupported
+ * device
+ */
+EAPI void
+ecore_fb_input_device_axis_size_set(Ecore_Fb_Input_Device *dev, int w, int h)
+{
+       if(!dev)
+               return;
+       if(w < 0 || h < 0)
+               return;
+       /* FIXME 
+        * this code is for a touchscreen device, 
+        * make it configurable (ABSOLUTE | RELATIVE)
+        */
+       if(dev->info.cap & ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE)
+       {
+               /* FIXME looks like some kernels dont include this struct */
+               struct input_absinfo abs_features;
+
+               ioctl(dev->fd, EVIOCGABS(ABS_X), &abs_features);
+               dev->mouse.min_w = abs_features.minimum;
+               dev->mouse.rel_w = (double)(abs_features.maximum - abs_features.minimum)/(double)(w);
+
+               ioctl(dev->fd, EVIOCGABS(ABS_Y), &abs_features);
+               dev->mouse.min_h = abs_features.minimum;
+               dev->mouse.rel_h = (double)(abs_features.maximum - abs_features.minimum)/(double)(h);
+       }
+       else if(!(dev->info.cap & ECORE_FB_INPUT_DEVICE_CAP_RELATIVE))
+               return;
+
+       /* update the local values */
+       if(dev->mouse.x > w - 1)
+               dev->mouse.x = w -1;
+       if(dev->mouse.y > h - 1)
+               dev->mouse.y = h -1;
+       dev->mouse.w = w;
+       dev->mouse.h = h;
+}
+
+
+EAPI const char *
+ecore_fb_input_device_name_get(Ecore_Fb_Input_Device *dev)
+{
+       if(!dev)
+               return NULL;
+       return dev->info.name;
+}
+EAPI Ecore_Fb_Input_Device_Cap
+ecore_fb_input_device_cap_get(Ecore_Fb_Input_Device *dev)
+{
+       if(!dev)
+               return ECORE_FB_INPUT_DEVICE_CAP_NONE;
+       return dev->info.cap;
+}
+EAPI void
+ecore_fb_input_device_threshold_click_set(Ecore_Fb_Input_Device *dev, double threshold)
+{
+       if(!dev) return;
+       if(threshold == dev->mouse.threshold || threshold == 0) return;
+       dev->mouse.threshold = threshold;
+}
+EAPI double
+ecore_fb_input_device_threshold_click_get(Ecore_Fb_Input_Device *dev)
+{
+       if(!dev) return 0;
+       return dev->mouse.threshold;
+}
diff --git a/src/lib/ecore_fb/ecore_fb_private.h b/src/lib/ecore_fb/ecore_fb_private.h
new file mode 100644 (file)
index 0000000..2d09809
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ECORE_FB_PRIVATE_H
+#define _ECORE_FB_PRIVATE_H
+
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <termios.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <linux/version.h>
+#include <linux/kd.h>
+#include <linux/vt.h>
+#include <linux/fb.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
+ #define kernel_ulong_t unsigned long 
+ #define BITS_PER_LONG 32
+ #include <linux/input.h>
+ #undef kernel_ulong_t <-added
+ #undef BITS_PER_LONG <-added
+#else
+ #include <linux/input.h>
+#endif
+
+#include <signal.h>
+#include <fcntl.h>
+#include <errno.h>
+
+/* ecore_fb_li.c */
+struct _Ecore_Fb_Input_Device
+{
+       int fd;
+       Ecore_Fd_Handler *handler;
+       int listen;
+       struct {
+               Ecore_Fb_Input_Device_Cap cap;
+               char *name;
+               char *dev;
+       } info;
+       struct
+       {
+               /* common mouse */
+               int x,y;
+               int w,h;
+               
+               double last;
+               double prev;
+               double threshold;
+               /* absolute axis */
+               int min_w, min_h;
+               double rel_w, rel_h;
+
+       } mouse;
+       struct
+       {
+               int shift;
+               int ctrl;
+               int alt;
+               int lock;
+       } keyboard;
+};
+
+/* ecore_fb_ts.c */
+EAPI int    ecore_fb_ts_init(void);
+EAPI void   ecore_fb_ts_shutdown(void);
+
+/* ecore_fb_vt.c */
+int  ecore_fb_vt_init(void);
+void ecore_fb_vt_shutdown(void);
+
+/* hacks to stop people NEEDING #include <linux/h3600_ts.h> */
+#ifndef TS_SET_CAL
+#define TS_SET_CAL 0x4014660b
+#endif
+#ifndef TS_GET_CAL
+#define TS_GET_CAL 0x8014660a
+#endif
+  
+#endif
diff --git a/src/lib/ecore_fb/ecore_fb_ps2.c b/src/lib/ecore_fb/ecore_fb_ps2.c
new file mode 100644 (file)
index 0000000..3a062da
--- /dev/null
@@ -0,0 +1,185 @@
+typedef struct _Ecore_Fb_Ps2_Event Ecore_Fb_Ps2_Event;
+struct _Ecore_Fb_Ps2_Event
+{
+   unsigned char button;
+   unsigned char x;
+   unsigned char y;
+   unsigned char z;
+};
+
+static int _ecore_fb_ps2_event_byte_count = 0;
+static Ecore_Fb_Ps2_Event _ecore_fb_ps2_event;
+static int _ecore_fb_ps2_fd = 0;
+static int _ecore_fb_ps2_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+
+int
+ecore_fb_ps2_init(void)
+{
+   _ecore_fb_ps2_fd = open("/dev/psaux", O_RDWR);
+   if (_ecore_fb_ps2_fd >= 0)
+     {
+       prev_flags = fcntl(_ecore_fb_ps2_fd, F_GETFL);
+       fcntl(_ecore_fb_ps2_fd, F_SETFL, prev_flags | O_NONBLOCK);
+       _ecore_fb_ts_fd_handler_handle = ecore_main_fd_handler_add(_ecore_fb_ps2_fd, 
+                                                                       ECORE_FD_READ,
+                                                                       _ecore_fb_ps2_fd_handler, NULL, NULL, NULL);
+       if (!_ecore_fb_ts_fd_handler_handle)
+        {
+          close(_ecore_fb_ps2_fd);
+          return 0;
+         }
+       return 1;
+     }
+  return 0;   
+}
+
+void
+ecore_fb_ps2_shutdown(void)
+{
+   if (_ecore_fb_ps2_fd > 0) close(_ecore_fb_ps2_fd);
+   _ecore_fb_ps2_fd = 0;
+}
+
+static int
+_ecore_fb_ps2_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   static int prev_x = 0, prev_y = 0, prev_button = 0;
+   static double last_time = 0;
+   static double last_last_time = 0;
+   int v = 0;
+
+   do
+     {
+       int x, y, button, i;
+       int num;
+       char *ptr;
+       double t;
+       int did_triple = 0;
+       
+       ptr = (char *)&(_ecore_fb_ps2_event);
+       ptr += _ecore_fb_ps2_event_byte_count;
+       num = sizeof(Ecore_Fb_Ps2_Event) - _ecore_fb_ps2_event_byte_count;
+       v = read(_ecore_fb_ps2_fd, ptr, num);
+       if (v < 0) return 1;
+       _ecore_fb_ps2_event_byte_count += v;
+       if (v < num) return 1;
+       t = ecore_time_get();
+       _ecore_fb_ps2_event_byte_count = 0;
+       if (_ecore_fb_ps2_event.button & 0x10)
+         x = prev_x + (0xffffff00 | _ecore_fb_ps2_event.x);
+       else
+         x = prev_x + _ecore_fb_ps2_event.x;
+       if (_ecore_fb_ps2_event.button & 0x20)
+         y = prev_y - (0xffffff00 | _ecore_fb_ps2_event.y);
+       else
+         y = prev_y - _ecore_fb_ps2_event.y;
+       button = _ecore_fb_ps2_event.button & 0x7;
+       if (x < 0) x = 0;
+       if (y < 0) y = 0;
+       if (x >= _ecore_fb_console_w) x = _ecore_fb_console_w - 1;
+       if (y >= _ecore_fb_console_h) y = _ecore_fb_console_h - 1;
+       /* add event to queue */
+       /* always add a move event */
+       if (1)
+         {
+            /* MOVE: mouse is down and was */
+            Ecore_Fb_Event_Mouse_Move *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Move));
+            if (!e) goto retry;
+            e->x = x;
+            e->y = y;
+            ecore_event_add(ECORE_FB_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+       for (i = 1; i <= 3; i++)
+         {
+            int mask;
+            
+            mask = 1 << (i - 1);
+            if (((button & mask)) && (!(prev_button & mask)))
+              {
+                 /* DOWN: mouse is down, but was not now */
+                 Ecore_Fb_Event_Mouse_Button_Down *e;
+                 
+                 e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Button_Down));
+                 if (!e) goto retry;
+                 e->x = x;
+                 e->y = y;
+                 e->button = 1;
+                 if ((t - last_time) <= _ecore_fb_double_click_time)
+                   e->double_click = 1;
+                 if ((t - last_last_time) <= (2 * _ecore_fb_double_click_time))
+                   {
+                      did_triple = 1;
+                      e->triple_click = 1;
+                   }
+                 ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+              }
+            else if ((!(button & mask)) && ((prev_button & mask)))
+              {
+                 /* UP: mouse was down, but is not now */
+                 Ecore_Fb_Event_Mouse_Button_Up *e;
+                 
+                 e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Button_Up));
+                 if (!e) goto retry;
+                 e->x = x;
+                 e->y = y;
+                 e->button = 1;
+                 ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+              }
+         }
+       if (did_triple)
+         {
+            last_time = 0;
+            last_last_time = 0;
+         }
+       else
+         {
+            last_last_time = last_time;
+            last_time = t;
+         }
+       retry:       
+       prev_x = x;
+       prev_y = y;
+       prev_button = button;
+     }
+   while (v > 0);
+   return 1;
+}
+/**
+ * @defgroup Ecore_FB_Click_Group Framebuffer Double Click Functions
+ *
+ * Functions that deal with the double click time of the framebuffer.
+ */
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ * 
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param   t The time in seconds
+ * @ingroup Ecore_FB_Click_Group
+ */
+EAPI void
+ecore_fb_double_click_time_set(double t)
+{
+   if (t < 0.0) t = 0.0;
+   _ecore_fb_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_x_double_click_time_set for more information.
+ *
+ * @return  The timeout for double clicks in seconds.
+ * @ingroup Ecore_FB_Click_Group
+ */
+EAPI double
+ecore_fb_double_click_time_get(void)
+{
+   return _ecore_fb_double_click_time;
+}
+
diff --git a/src/lib/ecore_fb/ecore_fb_ts.c b/src/lib/ecore_fb/ecore_fb_ts.c
new file mode 100644 (file)
index 0000000..5d4f589
--- /dev/null
@@ -0,0 +1,311 @@
+#include "Ecore_Fb.h"
+#include "ecore_fb_private.h"
+#include "config.h"
+#ifdef HAVE_TSLIB
+#include <tslib.h>
+#include <errno.h>
+#endif
+
+typedef struct _Ecore_Fb_Ts_Event Ecore_Fb_Ts_Event;
+typedef struct _Ecore_Fb_Ts_Calibrate Ecore_Fb_Ts_Calibrate;
+typedef struct _Ecore_Fb_Ts_Backlight Ecore_Fb_Ts_Backlight;
+typedef struct _Ecore_Fb_Ts_Contrast Ecore_Fb_Ts_Contrast;
+typedef struct _Ecore_Fb_Ts_Led Ecore_Fb_Ts_Led;
+typedef struct _Ecore_Fb_Ts_Flite Ecore_Fb_Ts_Flite;
+
+struct _Ecore_Fb_Ts_Event
+{
+   unsigned short pressure;
+   unsigned short x;
+   unsigned short y;
+   unsigned short _unused; 
+};
+
+struct _Ecore_Fb_Ts_Calibrate
+{
+   int xscale;
+   int xtrans;
+   int yscale;
+   int ytrans;
+   int xyswap;
+};
+
+struct _Ecore_Fb_Ts_Backlight
+{
+   int           on;
+   unsigned char brightness;
+};
+
+struct _Ecore_Fb_Ts_Contrast
+{
+   unsigned char contrast;
+};
+
+struct _Ecore_Fb_Ts_Led
+{
+   unsigned char on;
+   unsigned char blink_time;
+   unsigned char on_time;
+   unsigned char off_time;
+};
+
+struct _Ecore_Fb_Ts_Flite
+{
+   unsigned char mode;
+   unsigned char pwr;
+   unsigned char brightness;
+};
+
+static int _ecore_fb_ts_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_fb_ts_fd = 0;
+static int _ecore_fb_ts_event_byte_count = 0;
+static int _ecore_fb_ts_apply_cal = 0;
+static Ecore_Fb_Ts_Event _ecore_fb_ts_event;
+static Ecore_Fb_Ts_Calibrate _ecore_fb_ts_cal = {1,1,0,0,0};
+static Ecore_Fd_Handler *_ecore_fb_ts_fd_handler_handle = NULL;
+
+#ifdef HAVE_TSLIB
+struct tsdev *_ecore_fb_tslib_tsdev = NULL;
+struct ts_sample _ecore_fb_tslib_event;
+#endif
+
+static double _ecore_fb_double_click_time = 0.25;
+
+EAPI int
+ecore_fb_ts_init(void)
+{
+   int prev_flags;
+#ifdef HAVE_TSLIB
+   char *tslib_tsdevice = NULL;
+   if ( ( tslib_tsdevice = getenv("TSLIB_TSDEVICE") ) != NULL )
+    {
+        printf( "ECORE_FB: TSLIB_TSDEVICE = '%s'\n", tslib_tsdevice );
+        _ecore_fb_tslib_tsdev = ts_open( tslib_tsdevice, 1 ); /* 1 = nonblocking, 0 = blocking */
+
+        if ( !_ecore_fb_tslib_tsdev )
+        {
+            printf( "ECORE_FB: Can't ts_open (%s)\n", strerror( errno ) );
+            return 0;
+        }
+
+        if ( ts_config( _ecore_fb_tslib_tsdev ) )
+        {
+            printf( "ECORE_FB: Can't ts_config (%s)\n", strerror( errno ) );
+            return 0;
+        }
+        _ecore_fb_ts_fd = ts_fd( _ecore_fb_tslib_tsdev );
+        if ( _ecore_fb_ts_fd < 0 )
+        {
+            printf( "ECORE_FB: Can't open touchscreen (%s)\n", strerror( errno ) );
+            return 0;
+        }
+    }
+#else
+   _ecore_fb_ts_fd = open("/dev/touchscreen/0", O_RDONLY);
+#endif
+   if (_ecore_fb_ts_fd >= 0)
+     {
+       prev_flags = fcntl(_ecore_fb_ts_fd, F_GETFL);
+       fcntl(_ecore_fb_ts_fd, F_SETFL, prev_flags | O_NONBLOCK);
+       _ecore_fb_ts_fd_handler_handle = ecore_main_fd_handler_add(_ecore_fb_ts_fd, 
+                                                                  ECORE_FD_READ,
+                                                                  _ecore_fb_ts_fd_handler, NULL,
+                                                                  NULL, NULL);
+       if (!_ecore_fb_ts_fd_handler_handle)
+         {
+            close(_ecore_fb_ts_fd);
+            return 0;
+         }
+       // FIXME _ecore_fb_kbd_fd = open("/dev/touchscreen/key", O_RDONLY);
+       return 1;
+     }
+   return 0;
+}
+
+EAPI void
+ecore_fb_ts_shutdown(void)
+{
+   if (_ecore_fb_ts_fd >= 0) close(_ecore_fb_ts_fd);
+   if (_ecore_fb_ts_fd_handler_handle)
+     ecore_main_fd_handler_del(_ecore_fb_ts_fd_handler_handle);
+   _ecore_fb_ts_fd = 0;
+   _ecore_fb_ts_fd_handler_handle = NULL;
+}
+
+/**
+ * @defgroup Ecore_FB_Calibrate_Group Framebuffer Calibration Functions
+ *
+ * Functions that calibrate the screen.
+ */
+  
+  
+/**
+ * Calibrates the touschreen using the given parameters.
+ * @param   xscale X scaling, where 256 = 1.0
+ * @param   xtrans X translation.
+ * @param   yscale Y scaling.
+ * @param   ytrans Y translation.
+ * @param   xyswap Swap X & Y flag.
+ * @ingroup Ecore_FB_Calibrate_Group
+ */
+EAPI void
+ecore_fb_touch_screen_calibrate_set(int xscale, int xtrans, int yscale, int ytrans, int xyswap)
+{
+   Ecore_Fb_Ts_Calibrate cal;
+   
+   if (_ecore_fb_ts_fd < 0) return;
+   cal.xscale = xscale;
+   cal.xtrans = xtrans;
+   cal.yscale = yscale;
+   cal.ytrans = ytrans;
+   cal.xyswap = xyswap;
+   if (ioctl(_ecore_fb_ts_fd, TS_SET_CAL, (void *)&cal))
+     {
+       _ecore_fb_ts_cal = cal;
+       _ecore_fb_ts_apply_cal = 1;
+       
+     }
+}
+
+/**
+ * Retrieves the calibration parameters of the touchscreen.
+ * @param   xscale Pointer to an integer in which to store the X scaling.
+ *                 Note that 256 = 1.0.
+ * @param   xtrans Pointer to an integer in which to store the X translation.
+ * @param   yscale Pointer to an integer in which to store the Y scaling.
+ * @param   ytrans Pointer to an integer in which to store the Y translation.
+ * @param   xyswap Pointer to an integer in which to store the Swap X & Y flag.
+ * @ingroup Ecore_FB_Calibrate_Group
+ */
+EAPI void
+ecore_fb_touch_screen_calibrate_get(int *xscale, int *xtrans, int *yscale, int *ytrans, int *xyswap)
+{
+   Ecore_Fb_Ts_Calibrate cal;
+   
+   if (_ecore_fb_ts_fd < 0) return;
+   if (!_ecore_fb_ts_apply_cal)
+     {
+       if (ioctl(_ecore_fb_ts_fd, TS_GET_CAL, (void *)&cal))
+         _ecore_fb_ts_cal = cal;
+       
+     }
+   else
+     cal = _ecore_fb_ts_cal;
+   if (xscale) *xscale = cal.xscale;
+   if (xtrans) *xtrans = cal.xtrans;
+   if (yscale) *yscale = cal.yscale;
+   if (ytrans) *ytrans = cal.ytrans;
+   if (xyswap) *xyswap = cal.xyswap;
+}
+
+static int
+_ecore_fb_ts_fd_handler(void *data __UNUSED__, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   static int prev_x = 0, prev_y = 0, prev_pressure = 0;
+   static double last_time = 0;
+   static double last_last_time = 0;
+   int v = 0;
+   
+   do
+     {
+       int x, y, pressure;
+       int num;
+       char *ptr;
+       double t;
+       int did_triple = 0;
+
+#ifdef HAVE_TSLIB
+       if (_ecore_fb_ts_apply_cal)
+         num = ts_read_raw(_ecore_fb_tslib_tsdev, &_ecore_fb_tslib_event, 1);
+       else
+         num = ts_read(_ecore_fb_tslib_tsdev, &_ecore_fb_tslib_event, 1);
+       if (num != 1) return 1; /* no more samples at this time */
+       x = _ecore_fb_tslib_event.x;
+       y = _ecore_fb_tslib_event.y;
+       pressure = _ecore_fb_tslib_event.pressure;
+       v = 1; /* loop, there might be more samples */
+       t = ecore_time_get();
+#else
+       ptr = (char *)&(_ecore_fb_ts_event);
+       ptr += _ecore_fb_ts_event_byte_count;
+       num = sizeof(Ecore_Fb_Ts_Event) - _ecore_fb_ts_event_byte_count;
+       v = read(_ecore_fb_ts_fd, ptr, num);
+       if (v < 0) return 1;
+       _ecore_fb_ts_event_byte_count += v;
+       if (v < num) return 1;
+       _ecore_fb_ts_event_byte_count = 0;
+       if (_ecore_fb_ts_apply_cal)
+         {
+            x = ((_ecore_fb_ts_cal.xscale * _ecore_fb_ts_event.x) >> 8) + _ecore_fb_ts_cal.xtrans;
+            y = ((_ecore_fb_ts_cal.yscale * _ecore_fb_ts_event.y) >> 8) + _ecore_fb_ts_cal.ytrans;
+         }
+       else
+         {
+            x = _ecore_fb_ts_event.x;
+            y = _ecore_fb_ts_event.y;
+         }
+       pressure = _ecore_fb_ts_event.pressure;
+#endif   
+       /* add event to queue */
+       /* always add a move event */
+       if ((pressure) || (prev_pressure))
+         {
+            /* MOVE: mouse is down and was */
+            Ecore_Fb_Event_Mouse_Move *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Move));
+            if (!e) goto retry;
+            e->x = x;
+            e->y = y;
+            ecore_event_add(ECORE_FB_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+       if ((pressure) && (!prev_pressure))
+         {
+            /* DOWN: mouse is down, but was not now */
+            Ecore_Fb_Event_Mouse_Button_Down *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Button_Down));
+            if (!e) goto retry;
+            e->x = x;
+            e->y = y;
+            e->button = 1;
+            if ((t - last_time) <= _ecore_fb_double_click_time)
+              e->double_click = 1;
+            if ((t - last_last_time) <= (2 * _ecore_fb_double_click_time))
+              {
+                 did_triple = 1;
+                 e->triple_click = 1;
+              }
+            ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+         }
+       else if ((!pressure) && (prev_pressure))
+         {
+            /* UP: mouse was down, but is not now */
+            Ecore_Fb_Event_Mouse_Button_Up *e;
+            
+            e = calloc(1, sizeof(Ecore_Fb_Event_Mouse_Button_Up));
+            if (!e) goto retry;
+            e->x = prev_x;
+            e->y = prev_y;
+            e->button = 1;
+            ecore_event_add(ECORE_FB_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+         }
+        if (did_triple)
+         {
+            last_time = 0;
+            last_last_time = 0;
+         }
+       else
+         {
+            last_last_time = last_time;
+            last_time = t;
+         }
+       retry:       
+       prev_x = x;
+       prev_y = y;
+       prev_pressure = pressure;
+     }
+   while (v > 0);
+   return 1;
+}
+
diff --git a/src/lib/ecore_fb/ecore_fb_vt.c b/src/lib/ecore_fb/ecore_fb_vt.c
new file mode 100644 (file)
index 0000000..9831ef3
--- /dev/null
@@ -0,0 +1,282 @@
+#include "Ecore_Fb.h"
+#include "ecore_fb_private.h"
+
+static int _ecore_fb_vt_do_switch = 0;
+
+static int _ecore_fb_vt_tty0_fd = 0;
+static int _ecore_fb_vt_tty_fd = 0;
+static int _ecore_fb_vt_current_vt = 0;
+static int _ecore_fb_vt_prev_vt = 0;
+
+static struct termios _ecore_fb_tty_prev_tio_mode;
+static struct vt_mode _ecore_fb_vt_prev_mode;
+
+static int _ecore_fb_signal_usr_handler(void *data, int type, void *ev);
+static Ecore_Event_Handler *_ecore_fb_user_handler = NULL;
+static int _ecore_fb_tty_prev_mode = 0;
+static int _ecore_fb_tty_prev_kd_mode = 0;
+
+/* callbacks for an attach/release of a vt */
+static void (*_ecore_fb_func_fb_lost) (void *data) = NULL;
+static void *_ecore_fb_func_fb_lost_data = NULL;
+static void (*_ecore_fb_func_fb_gain) (void *data) = NULL;
+static void *_ecore_fb_func_fb_gain_data = NULL;
+
+/* FIXME what is the filter for? */
+static Ecore_Event_Filter *_ecore_fb_filter_handler = NULL;
+
+static void *_ecore_fb_event_filter_start(void *data);
+static int   _ecore_fb_event_filter_filter(void *data, void *loop_data, int type, void *event);
+static void  _ecore_fb_event_filter_end(void *data, void *loop_data);
+
+/* prototypes */
+static void _ecore_fb_vt_switch(int vt);
+
+static int
+_ecore_fb_signal_usr_handler(void *data __UNUSED__, int type __UNUSED__, void *ev)
+{
+
+       Ecore_Event_Signal_User *e;
+   
+       e = (Ecore_Event_Signal_User *)ev;
+       if (e->number == 1)
+       {
+               /* release vt */
+               if (_ecore_fb_func_fb_lost) _ecore_fb_func_fb_lost(_ecore_fb_func_fb_lost_data);
+               /* TODO stop listening from the devices? let the callback do it? */
+               ioctl(_ecore_fb_vt_tty_fd, VT_RELDISP, 1);
+       }
+       else if (e->number == 2)
+       {
+               /* attach vt */
+               if (_ecore_fb_func_fb_gain) _ecore_fb_func_fb_gain(_ecore_fb_func_fb_gain_data);
+               /* TODO reattach all devices */
+       }
+       return 1;
+}
+
+static void
+_ecore_fb_vt_switch(int vt)
+{
+       vt++;
+       if (_ecore_fb_vt_tty_fd != 0)
+       {
+               if (vt != _ecore_fb_vt_current_vt)
+               {
+                       tcsetattr(_ecore_fb_vt_tty_fd, TCSAFLUSH, &_ecore_fb_tty_prev_tio_mode);
+                       ioctl(_ecore_fb_vt_tty_fd, KDSETMODE, _ecore_fb_tty_prev_kd_mode);
+                       ioctl(_ecore_fb_vt_tty_fd, KDSKBMODE, _ecore_fb_tty_prev_mode);
+               }
+       }
+       ioctl(_ecore_fb_vt_tty_fd, VT_ACTIVATE, vt);
+}
+
+static int
+_ecore_fb_vt_setup(void)
+{
+       char buf[64];
+       struct termios tio;
+       struct vt_mode new_vtmode;
+
+       if(_ecore_fb_vt_current_vt != _ecore_fb_vt_prev_vt)
+       {
+               snprintf(buf, sizeof(buf), "/dev/tty%i", _ecore_fb_vt_current_vt);
+               if((_ecore_fb_vt_tty_fd = open(buf, O_RDWR)) < 0)
+               {
+                       printf("[ecore_fb:vt_setup] cant open tty %d\n", _ecore_fb_vt_current_vt);
+                       return 0;
+               }
+               close(_ecore_fb_vt_tty0_fd);
+               _ecore_fb_vt_tty0_fd = 0;
+               /* FIXME detach the process from current tty ? */
+       }
+       else
+               _ecore_fb_vt_tty_fd = _ecore_fb_vt_tty0_fd;
+       /* for backup */
+       tcgetattr(_ecore_fb_vt_tty_fd, &_ecore_fb_tty_prev_tio_mode);
+       ioctl(_ecore_fb_vt_tty_fd, KDGETMODE, &_ecore_fb_tty_prev_kd_mode);
+       ioctl(_ecore_fb_vt_tty_fd, VT_GETMODE, &_ecore_fb_vt_prev_mode);
+
+       if(ioctl(_ecore_fb_vt_tty_fd, KDSETMODE, KD_GRAPHICS) < 0)
+       {
+               perror("[ecore_fb:vt_setup] cant set the mode to KD_GRAPHICS");
+               close(_ecore_fb_vt_tty_fd);
+               return 0;
+       }
+       ioctl(_ecore_fb_vt_tty_fd, KDGKBMODE, &_ecore_fb_tty_prev_mode);
+       
+       /* support of switching */
+       new_vtmode.mode = VT_PROCESS;
+       new_vtmode.waitv = 0;
+       new_vtmode.relsig = SIGUSR1;
+       new_vtmode.acqsig = SIGUSR2;
+       if(ioctl(_ecore_fb_vt_tty_fd, VT_SETMODE, &new_vtmode) < 0)
+       {
+               perror("[ecore_fb:vt_setup] cant set the tty mode");
+               close(_ecore_fb_vt_tty_fd);
+               return 0;
+       }
+       /* register signal handlers when alloc/detach of vt */
+       _ecore_fb_user_handler = ecore_event_handler_add(ECORE_EVENT_SIGNAL_USER,
+                                                   _ecore_fb_signal_usr_handler,
+                                                   NULL);
+       /* What does this does? */
+       _ecore_fb_filter_handler = ecore_event_filter_add(_ecore_fb_event_filter_start, _ecore_fb_event_filter_filter, _ecore_fb_event_filter_end, NULL);
+       
+       usleep(40000);
+       if(ioctl(_ecore_fb_vt_tty_fd, VT_ACTIVATE, _ecore_fb_vt_current_vt) < 0)
+       {
+               perror("[ecore_fb:vt_setup] error on VT_ACTIVATE");
+               close(_ecore_fb_vt_tty_fd);
+               return 0;
+       }
+       if(ioctl(_ecore_fb_vt_tty_fd, VT_WAITACTIVE, _ecore_fb_vt_current_vt) < 0)
+       {
+               perror("[ecore_fb:vt_setup] error on VT_WAITACTIVE");
+               close(_ecore_fb_vt_tty_fd);
+               return 0;
+       }
+       /* FIXME assign the fb to the tty in case isnt setup */
+       return 1;
+}
+
+int
+ecore_fb_vt_init(void)
+{
+       struct vt_stat vtstat;
+
+       /* as root you can allocate another tty */
+       if(!geteuid())
+               _ecore_fb_vt_do_switch = 1;
+       if((_ecore_fb_vt_tty0_fd = open("/dev/tty0", O_RDONLY)) < 0)
+       {
+               printf("[ecore_fb:init] cant open /dev/tty0\n");
+               return 0;
+       }
+       /* query current vt state */
+       if((ioctl(_ecore_fb_vt_tty0_fd, VT_GETSTATE, &vtstat)) < 0)
+       {
+               printf("[ecore_fb:init] cant get current tty state\n");
+               return 0;
+       }
+       _ecore_fb_vt_prev_vt = vtstat.v_active;
+       /* switch to another tty */
+       if(_ecore_fb_vt_do_switch)
+       {
+               int vtno;
+
+               if ((ioctl(_ecore_fb_vt_tty0_fd, VT_OPENQRY, &vtno) < 0))
+               {
+                       printf("[ecore_fb:init] cant query for a vt\n");
+                       return 0;
+               }
+               _ecore_fb_vt_current_vt = vtno;
+       }
+       /* use current tty */
+       else
+               _ecore_fb_vt_current_vt = _ecore_fb_vt_prev_vt;
+       if(!_ecore_fb_vt_setup())
+       {
+               printf("[ecore_fb:init] cant setup the vt, restoring previous mode...\n");
+               /* TODO finish this */
+               if(_ecore_fb_vt_do_switch)
+               {
+                       printf("[ecore_fb:init] switching back to vt %d\n", _ecore_fb_vt_prev_vt);
+               }
+               return 0;
+       }
+       return 1;
+}
+
+void
+ecore_fb_vt_shutdown(void)
+{
+       /* restore the previous mode */
+       if(_ecore_fb_vt_tty_fd != 0)
+       {
+               tcsetattr(_ecore_fb_vt_tty_fd, TCSAFLUSH, &_ecore_fb_tty_prev_tio_mode);
+               ioctl(_ecore_fb_vt_tty_fd, KDSETMODE, _ecore_fb_tty_prev_kd_mode);
+               ioctl(_ecore_fb_vt_tty_fd, KDSKBMODE, _ecore_fb_tty_prev_mode);
+               ioctl(_ecore_fb_vt_tty_fd, VT_SETMODE, &_ecore_fb_vt_prev_mode);
+               /* go back to previous vt */
+               close(_ecore_fb_vt_tty_fd);
+               _ecore_fb_vt_tty_fd = 0;
+       }
+       
+       if(_ecore_fb_user_handler)
+               ecore_event_handler_del(_ecore_fb_user_handler);
+       _ecore_fb_user_handler = NULL;
+
+       if(_ecore_fb_filter_handler)
+               ecore_event_filter_del(_ecore_fb_filter_handler);
+       _ecore_fb_filter_handler = NULL;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @todo Documentation: Find out what this does.
+ */
+EAPI void
+ecore_fb_callback_gain_set(void (*func) (void *data), void *data)
+{
+   _ecore_fb_func_fb_gain = func;
+   _ecore_fb_func_fb_gain_data = data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @todo Documentation: Find out what this does.
+ */
+EAPI void
+ecore_fb_callback_lose_set(void (*func) (void *data), void *data)
+{
+   _ecore_fb_func_fb_lost = func;
+   _ecore_fb_func_fb_lost_data = data;
+}
+typedef struct _Ecore_Fb_Filter_Data Ecore_Fb_Filter_Data;
+   
+struct _Ecore_Fb_Filter_Data
+{
+   int last_event_type;
+};
+                
+static void *
+_ecore_fb_event_filter_start(void *data __UNUSED__)
+{
+   Ecore_Fb_Filter_Data *filter_data;
+   
+   filter_data = calloc(1, sizeof(Ecore_Fb_Filter_Data));
+   return filter_data;
+}
+
+static int
+_ecore_fb_event_filter_filter(void *data __UNUSED__, void *loop_data,int type, void *event __UNUSED__)
+{
+   Ecore_Fb_Filter_Data *filter_data;
+   
+   filter_data = loop_data;
+   if (!filter_data) return 1;
+   if (type == ECORE_FB_EVENT_MOUSE_MOVE)
+     {
+       if ((filter_data->last_event_type) == ECORE_FB_EVENT_MOUSE_MOVE)
+         {
+            filter_data->last_event_type = type;
+            return 0;
+         }
+     }
+   filter_data->last_event_type = type;
+   return 1;
+}
+
+static void
+_ecore_fb_event_filter_end(void *data __UNUSED__, void *loop_data)
+{
+   Ecore_Fb_Filter_Data *filter_data;
+   
+   filter_data = loop_data;
+   if (filter_data) free(filter_data);
+}
diff --git a/src/lib/ecore_file/.cvsignore b/src/lib/ecore_file/.cvsignore
new file mode 100644 (file)
index 0000000..be74149
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_file.la
diff --git a/src/lib/ecore_file/Ecore_File.h b/src/lib/ecore_file/Ecore_File.h
new file mode 100644 (file)
index 0000000..03c2355
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef ECORE_FILE_H
+#define ECORE_FILE_H
+
+#include <Ecore_Data.h>
+
+/*
+ * TODO:
+ * - More events, move/rename of directory file
+ */
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_FILE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_FILE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file Ecore_File.h
+ * @brief Files utility functions
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+   typedef struct _Ecore_File_Monitor       Ecore_File_Monitor;
+   typedef struct _Ecore_File_Monitor_Event Ecore_File_Monitor_Event;
+
+   typedef enum
+     {
+       ECORE_FILE_EVENT_NONE,
+         ECORE_FILE_EVENT_CREATED_FILE,
+         ECORE_FILE_EVENT_CREATED_DIRECTORY,
+         ECORE_FILE_EVENT_DELETED_FILE,
+         ECORE_FILE_EVENT_DELETED_DIRECTORY,
+         ECORE_FILE_EVENT_DELETED_SELF,
+         ECORE_FILE_EVENT_MODIFIED
+     } Ecore_File_Event;
+
+
+   EAPI int         ecore_file_init         (void);
+   EAPI int         ecore_file_shutdown     (void);
+   EAPI long long   ecore_file_mod_time     (const char *file);
+   EAPI long long   ecore_file_size         (const char *file);
+   EAPI int         ecore_file_exists       (const char *file);
+   EAPI int         ecore_file_is_dir       (const char *file);
+   EAPI int         ecore_file_mkdir        (const char *dir);
+   EAPI int         ecore_file_rmdir        (const char *dir);
+   EAPI int         ecore_file_recursive_rm (const char *dir);
+   EAPI int         ecore_file_mkpath       (const char *path);
+   EAPI int         ecore_file_cp           (const char *src, const char *dst);
+   EAPI int         ecore_file_mv           (const char *src, const char *dst);
+   EAPI int         ecore_file_symlink      (const char *src, const char *dest);
+   EAPI char       *ecore_file_realpath     (const char *file);
+   EAPI int         ecore_file_unlink       (const char *file);
+   EAPI const char *ecore_file_file_get     (const char *path);
+   EAPI char       *ecore_file_dir_get      (const char *path);
+
+   EAPI int         ecore_file_can_read     (const char *file);
+   EAPI int         ecore_file_can_write    (const char *file);
+   EAPI int         ecore_file_can_exec     (const char *file);
+   EAPI char       *ecore_file_readlink     (const char *link);
+   EAPI Ecore_List *ecore_file_ls           (const char *dir);
+   EAPI char       *ecore_file_app_exe_get  (const char *app);
+   EAPI char       *ecore_file_escape_name  (const char *filename);
+   EAPI char       *ecore_file_strip_ext    (const char *file);
+   EAPI int         ecore_file_dir_is_empty (const char *dir);
+
+   EAPI Ecore_File_Monitor * ecore_file_monitor_add(const char *path,
+                void (*func) (void *data, Ecore_File_Monitor *em,
+                      Ecore_File_Event event,
+                      const char *path),
+                void *data);
+   EAPI void        ecore_file_monitor_del(Ecore_File_Monitor *ecore_file_monitor);
+   EAPI const char *ecore_file_monitor_path_get(Ecore_File_Monitor *ecore_file_monitor);
+
+   EAPI int         ecore_file_path_dir_exists(const char *in_dir);
+   EAPI int         ecore_file_app_installed(const char *exe);
+   EAPI Ecore_List *ecore_file_app_list(void);
+
+   EAPI int         ecore_file_download(const char *url, const char *dst,
+                                       void (*completion_cb)(void *data,
+                                                             const char *file,
+                                                             int status),
+                                       int (*progress_cb)(void *data,
+                                                          const char *file,
+                                                          long int dltotal,
+                                                          long int dlnow,
+                                                          long int ultotal,
+                                                          long int ulnow),
+                                       void *data);
+   EAPI void        ecore_file_download_abort_all(void);
+   EAPI int         ecore_file_download_protocol_available(const char *protocol);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_file/Makefile.am b/src/lib/ecore_file/Makefile.am
new file mode 100644 (file)
index 0000000..a40d3ba
--- /dev/null
@@ -0,0 +1,46 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_con \
+-I$(top_builddir)/src/lib/ecore \
+@CURL_CFLAGS@ \
+@EVIL_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ECORE_CON
+lib_ecore_con_la = $(top_builddir)/src/lib/ecore_con/libecore_con.la
+endif
+
+if BUILD_ECORE_FILE
+
+lib_LTLIBRARIES = libecore_file.la
+include_HEADERS = Ecore_File.h
+
+libecore_file_la_SOURCES = \
+ecore_file.c \
+ecore_file_private.h \
+ecore_file_monitor.c \
+ecore_file_monitor_inotify.c \
+ecore_file_monitor_poll.c \
+ecore_file_path.c \
+ecore_file_download.c
+
+libecore_file_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(lib_ecore_con_la) \
+@EVIL_LIBS@
+
+libecore_file_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+endif
+
+EXTRA_DIST = \
+ecore_file.c \
+ecore_file_private.h \
+ecore_file_monitor.c \
+ecore_file_monitor_inotify.c \
+ecore_file_monitor_poll.c \
+ecore_file_path.c
+
diff --git a/src/lib/ecore_file/ecore_file.c b/src/lib/ecore_file/ecore_file.c
new file mode 100644 (file)
index 0000000..10b9d58
--- /dev/null
@@ -0,0 +1,730 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS  64
+#endif
+
+#ifdef HAVE_FEATURES_H
+# include <features.h>
+#endif
+#include <ctype.h>
+#include <errno.h>
+
+#include "ecore_file_private.h"
+
+
+static int init = 0;
+
+/* externally accessible functions */
+/**
+ * Initialize Ecore_File and the services it will use. Call this function
+ * once before you use any of the ecore file functions.
+ * @return Return the number howoften ecore_file_init() was call succesfully;
+ *         0 if it failed.
+ */
+EAPI int
+ecore_file_init()
+{
+   if (++init != 1) return init;
+
+   if (!ecore_file_monitor_init())
+     goto error;
+   if (!ecore_file_path_init())
+     goto error;
+   if (!ecore_file_download_init())
+     goto error;
+   return init;
+
+error:
+
+   ecore_file_monitor_shutdown();
+   ecore_file_path_shutdown();
+   ecore_file_download_shutdown();
+
+   return --init;
+}
+
+/**
+ * Shutdown the Ecore_File
+ * @return returns the number of libraries that still uses Ecore_File
+ */
+EAPI int
+ecore_file_shutdown()
+{
+   if (--init != 0) return init;
+
+   ecore_file_monitor_shutdown();
+   ecore_file_path_shutdown();
+   ecore_file_download_shutdown();
+
+   return init;
+}
+
+/**
+ * Get the time of the last modification to the give file
+ * @param file The name of the file
+ * @return Return the time of the last data modification, if an error should
+ *         occur it will return 0
+ */
+EAPI long long
+ecore_file_mod_time(const char *file)
+{
+   struct stat st;
+
+   if (stat(file, &st) < 0) return 0;
+   return st.st_mtime;
+}
+
+/**
+ * Get the size of the given file
+ * @param  file The name of the file
+ * @return The size of the file in byte
+ */
+EAPI long long
+ecore_file_size(const char *file)
+{
+   struct stat st;
+
+   if (stat(file, &st) < 0) return 0;
+   return st.st_size;
+}
+
+/**
+ * Check if file exists
+ * @param  file The name of the file
+ * @return 1 if file exists on local filesystem, 0 otherwise
+ */
+EAPI int
+ecore_file_exists(const char *file)
+{
+   struct stat st;
+
+   /*Workaround so that "/" returns a true, otherwise we can't monitor "/" in ecore_file_monitor*/
+   if (stat(file, &st) < 0 && strcmp(file, "/")) return 0;
+   return 1;
+}
+
+/**
+ * Check if file is a directory
+ * @param  file The name of the file
+ * @return 1 if file exist and is a directory, 0 otherwise
+ */
+EAPI int
+ecore_file_is_dir(const char *file)
+{
+   struct stat st;
+
+   if (stat(file, &st) < 0) return 0;
+   if (S_ISDIR(st.st_mode)) return 1;
+   return 0;
+}
+
+static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
+
+/**
+ * Create a new directory
+ * @param  dir The name of the directory to create
+ * @return 1 on successfull creation, 0 on failure
+ *
+ * The directory is created with the mode: S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH
+ */
+EAPI int
+ecore_file_mkdir(const char *dir)
+{
+   if (mkdir(dir, default_mode) < 0) return 0;
+   return 1;
+}
+
+/**
+ * Delete the given dir
+ * @param  dir The name of the directory to delete
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_rmdir(const char *dir)
+{
+   if (rmdir(dir) < 0) return 0;
+   return 1;
+}
+
+/**
+ * Delete the given file
+ * @param  file The name of the file to delete
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_unlink(const char *file)
+{
+   if (unlink(file) < 0) return 0;
+   return 1;
+}
+
+/**
+ * Delete a directory and all its contents
+ * @param  dir The name of the directory to delete
+ * @return 1 on success, 0 on failure
+ *
+ * If dir is a link only the link is removed
+ */
+EAPI int
+ecore_file_recursive_rm(const char *dir)
+{
+   DIR                *dirp;
+   struct dirent      *dp;
+   char               path[PATH_MAX];
+   char               buf[PATH_MAX];
+   struct             stat st;
+   int                ret;
+
+   if (readlink(dir, buf, sizeof(buf)) > 0)
+     {
+       return ecore_file_unlink(dir);
+     }
+
+   ret = stat(dir, &st);
+   if ((ret == 0) && (S_ISDIR(st.st_mode)))
+     {
+       ret = 1;
+       if (stat(dir, &st) == -1) return 0;
+       dirp = opendir(dir);
+       if (dirp)
+         {
+            while ((dp = readdir(dirp)))
+              {
+                 if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
+                   {
+                      snprintf(path, PATH_MAX, "%s/%s", dir, dp->d_name);
+                      if (!ecore_file_recursive_rm(path))
+                        ret = 0;
+                   }
+              }
+            closedir(dirp);
+         }
+       if (!ecore_file_rmdir(dir)) ret = 0;
+        return ret;
+     }
+   else
+     {
+       if (ret == -1) return 0;
+       return ecore_file_unlink(dir);
+     }
+
+   return 1;
+}
+
+/**
+ * Create a complete path
+ * @param  path The path to create
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_mkpath(const char *path)
+{
+   char ss[PATH_MAX];
+   int  i;
+
+   ss[0] = 0;
+   i = 0;
+   while (path[i])
+     {
+       if (i == sizeof(ss) - 1) return 0;
+       ss[i] = path[i];
+       ss[i + 1] = 0;
+       if (path[i] == '/')
+         {
+            ss[i] = 0;
+            if ((ecore_file_exists(ss)) && (!ecore_file_is_dir(ss))) return 0;
+            else if (!ecore_file_exists(ss)) ecore_file_mkdir(ss);
+            ss[i] = '/';
+         }
+       i++;
+     }
+   if ((ecore_file_exists(ss)) && (!ecore_file_is_dir(ss))) return 0;
+   else if (!ecore_file_exists(ss)) ecore_file_mkdir(ss);
+   return 1;
+}
+
+/**
+ * Copy a file
+ * @param  src The name of the source file
+ * @param  dst The name of the destination file
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_cp(const char *src, const char *dst)
+{
+   FILE               *f1, *f2;
+   char                buf[16384];
+   char                realpath1[PATH_MAX];
+   char                realpath2[PATH_MAX];
+   size_t              num;
+   int                 ret = 1;
+
+   if (!realpath(src, realpath1)) return 0;
+   if (realpath(dst, realpath2) && !strcmp(realpath1, realpath2)) return 0;
+
+   f1 = fopen(src, "rb");
+   if (!f1) return 0;
+   f2 = fopen(dst, "wb");
+   if (!f2)
+     {
+       fclose(f1);
+       return 0;
+     }
+   while ((num = fread(buf, 1, sizeof(buf), f1)) > 0)
+     {
+       if (fwrite(buf, 1, num, f2) != num) ret = 0;
+     }
+   fclose(f1);
+   fclose(f2);
+   return ret;
+}
+
+/**
+ * Move a file
+ * @param  src The name of the source file
+ * @param  dst The name of the destination file
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_mv(const char *src, const char *dst)
+{
+   if (ecore_file_exists(dst)) return 0;
+   if (rename(src, dst))
+     {
+       if (errno == EXDEV)
+         {
+            struct stat st;
+
+            stat(src, &st);
+            if (S_ISREG(st.st_mode))
+              {
+                 ecore_file_cp(src, dst);
+                 chmod(dst, st.st_mode);
+                 ecore_file_unlink(src);
+                 return 1;
+              }
+         }
+       return 0;
+     }
+   return 1;
+}
+
+/**
+ * Create a symbolic link
+ * @param  src The name of the file to link
+ * @param  dest The name of link
+ * @return 1 on success, 0 on failure
+ */
+EAPI int
+ecore_file_symlink(const char *src, const char *dest)
+{
+   if (!symlink(src, dest)) return 1;
+
+   return 0;
+}
+
+/**
+ * Get the canonicalized absolute pathname
+ * @param  file The file path
+ * @return The canonicalized absolute pathname; on failure it will return
+ *         an empty string
+ */
+EAPI char *
+ecore_file_realpath(const char *file)
+{
+   char  buf[PATH_MAX];
+
+   /*
+    * Some implementations of realpath do not conform to the SUS.
+    * And as a result we must prevent a null arg from being passed.
+    */
+   if (!file) return strdup("");
+   if (!realpath(file, buf)) return strdup("");
+
+   return strdup(buf);
+}
+
+/**
+ * Get the filename from a give path
+ * @param  path The complete path
+ * @return Only the file name
+ */
+EAPI const char *
+ecore_file_file_get(const char *path)
+{
+   char *result = NULL;
+
+   if (!path) return NULL;
+   if ((result = strrchr(path, '/'))) result++;
+   else result = (char *)path;
+   return result;
+}
+
+/**
+ * Get the directory where file reside
+ * @param  file The name of the file
+ * @return The directory name
+ */
+EAPI char *
+ecore_file_dir_get(const char *file)
+{
+   char               *p;
+   char                buf[PATH_MAX];
+
+   strncpy(buf, file, PATH_MAX);
+   p = strrchr(buf, '/');
+   if (!p)
+     {
+       return strdup(file);
+     }
+
+   if (p == buf) return strdup("/");
+
+   *p = 0;
+   return strdup(buf);
+}
+
+/**
+ * Check if file can be read
+ * @param  file The name of the file
+ * @return 1 if the file is readable, 0 otherwise
+ */
+EAPI int
+ecore_file_can_read(const char *file)
+{
+   if (!file) return 0;
+   if (!access(file, R_OK)) return 1;
+   return 0;
+}
+
+/**
+ * Check if file can be written
+ * @param  file The name of the file
+ * @return 1 if the file is writable, 0 otherwise
+ */
+EAPI int
+ecore_file_can_write(const char *file)
+{
+   if (!file) return 0;
+   if (!access(file, W_OK)) return 1;
+   return 0;
+}
+
+/**
+ * Check if file can be executed
+ * @param  file The name of the file
+ * @return 1 if the file can be executed, 0 otherwise
+ */
+EAPI int
+ecore_file_can_exec(const char *file)
+{
+   if (!file) return 0;
+   if (!access(file, X_OK)) return 1;
+   return 0;
+}
+
+/**
+ * Get the path pointed by link
+ * @param  link The name of the link
+ * @return The path pointed by link or NULL
+ */
+EAPI char *
+ecore_file_readlink(const char *link)
+{
+   char                buf[PATH_MAX];
+   int                 count;
+
+   if ((count = readlink(link, buf, sizeof(buf))) < 0) return NULL;
+   buf[count] = 0;
+   return strdup(buf);
+}
+
+/**
+ * Get the list of the files and directories in a given directory. The list
+ * will be sorted with strcoll as compare function. That means that you may
+ * want to set the current locale for the category LC_COLLATE with setlocale().
+ * For more information see the manual pages of strcoll and setlocale.
+ * The list will not contain the directory entries for '.' and '..'.
+ * @param  dir The name of the directory to list
+ * @return Return an Ecore_List containing all the files in the directory;
+ *         on failure it returns NULL.
+ */
+EAPI Ecore_List *
+ecore_file_ls(const char *dir)
+{
+   char               *f;
+   DIR                *dirp;
+   struct dirent      *dp;
+   Ecore_List         *list;
+
+   dirp = opendir(dir);
+   if (!dirp) return NULL;
+
+   list = ecore_list_new();
+   ecore_list_free_cb_set(list, free);
+
+   while ((dp = readdir(dirp)))
+     {
+       if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
+         {
+              f = strdup(dp->d_name);
+              ecore_list_append(list, f);
+         }
+     }
+   closedir(dirp);
+
+   ecore_list_sort(list, ECORE_COMPARE_CB(strcoll), ECORE_SORT_MIN);
+
+   ecore_list_first_goto(list);
+   return list;
+}
+
+/**
+ * FIXME: To be documented.
+ */
+EAPI char *
+ecore_file_app_exe_get(const char *app)
+{
+   char *p, *pp, *exe1 = NULL, *exe2 = NULL;
+   char *exe = NULL;
+   int in_quot_dbl = 0, in_quot_sing = 0, restart = 0;
+
+   if (!app) return NULL;
+
+   p = (char *)app;
+restart:
+   while ((*p) && (isspace(*p))) p++;
+   exe1 = p;
+   while (*p)
+     {
+       if (in_quot_sing)
+         {
+            if (*p == '\'')
+              in_quot_sing = 0;
+         }
+       else if (in_quot_dbl)
+         {
+            if (*p == '\"')
+              in_quot_dbl = 0;
+         }
+       else
+         {
+            if (*p == '\'')
+              in_quot_sing = 1;
+            else if (*p == '\"')
+              in_quot_dbl = 1;
+            if ((isspace(*p)) && (!((p > app) && (p[-1] != '\\'))))
+              break;
+         }
+       p++;
+     }
+   exe2 = p;
+   if (exe2 == exe1) return NULL;
+   if (*exe1 == '~')
+     {
+       char *homedir;
+       int len;
+
+       /* Skip ~ */
+       exe1++;
+
+       homedir = getenv("HOME");
+       if (!homedir) return NULL;
+       len = strlen(homedir);
+       if (exe) free(exe);
+       exe = malloc(len + exe2 - exe1 + 2);
+       if (!exe) return NULL;
+       pp = exe;
+       if (len)
+         {
+            strcpy(exe, homedir);
+            pp += len;
+            if (*(pp - 1) != '/')
+              {
+                 *pp = '/';
+                 pp++;
+              }
+         }
+     }
+   else
+     {
+       if (exe) free(exe);
+       exe = malloc(exe2 - exe1 + 1);
+       if (!exe) return NULL;
+       pp = exe;
+     }
+   p = exe1;
+   restart = 0;
+   in_quot_dbl = 0;
+   in_quot_sing = 0;
+   while (*p)
+     {
+       if (in_quot_sing)
+         {
+            if (*p == '\'')
+              in_quot_sing = 0;
+            else
+              {
+                 *pp = *p;
+                 pp++;
+              }
+         }
+       else if (in_quot_dbl)
+         {
+            if (*p == '\"')
+              in_quot_dbl = 0;
+            else
+              {
+                 /* techcincally this is wrong. double quotes also accept
+                  * special chars:
+                  *
+                  * $, `, \
+                  */
+                 *pp = *p;
+                 pp++;
+              }
+         }
+       else
+         {
+            /* technically we should handle special chars:
+             *
+             * $, `, \, etc.
+             */
+            if ((p > exe1) && (p[-1] == '\\'))
+              {
+                 if (*p != '\n')
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            else if ((p > exe1) && (*p == '='))
+              {
+                 restart = 1;
+                 *pp = *p;
+                 pp++;
+              }
+            else if (*p == '\'')
+              in_quot_sing = 1;
+            else if (*p == '\"')
+              in_quot_dbl = 1;
+            else if (isspace(*p))
+              {
+                 if (restart)
+                   goto restart;
+                 else
+                   break;
+              }
+            else
+              {
+                 *pp = *p;
+                 pp++;
+              }
+         }
+       p++;
+     }
+   *pp = 0;
+   return exe;
+}
+
+/**
+ * Add the escape sequence ('\\') to the given filename
+ * @param  filename The file name
+ * @return The file name with special characters escaped; if the length of the
+ *         resulting string is longer than PATH_MAX it will return NULL
+ */
+EAPI char *
+ecore_file_escape_name(const char *filename)
+{
+   const char *p;
+   char *q;
+   char buf[PATH_MAX];
+
+   p = filename;
+   q = buf;
+   while (*p)
+     {
+       if ((q - buf) > (PATH_MAX - 6)) return NULL;
+       if (
+           (*p == ' ') || (*p == '\t') || (*p == '\n') ||
+           (*p == '\\') || (*p == '\'') || (*p == '\"') ||
+           (*p == ';') || (*p == '!') || (*p == '#') ||
+           (*p == '$') || (*p == '%') || (*p == '&') ||
+           (*p == '*') || (*p == '(') || (*p == ')') ||
+           (*p == '[') || (*p == ']') || (*p == '{') ||
+           (*p == '}') || (*p == '|') || (*p == '<') ||
+           (*p == '>') || (*p == '?')
+           )
+         {
+            *q = '\\';
+            q++;
+         }
+       *q = *p;
+       q++;
+       p++;
+     }
+   *q = 0;
+   return strdup(buf);
+}
+
+/**
+ * Remove the extension from a given path
+ * @param  path The name of the file
+ * @return A newly allocated string with the extension stripped out or NULL on errors
+ */
+EAPI char *
+ecore_file_strip_ext(const char *path)
+{
+   char *p, *file = NULL;
+
+   p = strrchr(path, '.');
+   if (!p)
+     {
+       file = strdup(path);
+     }
+   else if (p != path)
+     {
+       file = malloc(((p - path) + 1) * sizeof(char));
+       if (file)
+         {
+            memcpy(file, path, (p - path));
+            file[p - path] = 0;
+         }
+     }
+
+   return file;
+}
+
+/**
+ * Check if the given directory is empty. The '.' and '..' files will be ignored.
+ * @param  dir The name of the directory to check
+ * @return 1 if directory is empty, 0 if it has at least one file or -1 in case of errors
+ */
+EAPI int
+ecore_file_dir_is_empty(const char *dir)
+{
+   DIR *dirp;
+   struct dirent *dp;
+
+   dirp = opendir(dir);
+   if (!dirp) return -1;
+
+   while ((dp = readdir(dirp)))
+     {
+       if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
+         {
+            closedir(dirp);
+            return 0;
+         }
+     }
+   
+   closedir(dirp);
+   return 1;
+}
diff --git a/src/lib/ecore_file/ecore_file_download.c b/src/lib/ecore_file/ecore_file_download.c
new file mode 100644 (file)
index 0000000..e0472f0
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore_Con.h"
+#include "ecore_file_private.h"
+
+#define ECORE_MAGIC_FILE_DOWNLOAD_JOB  0xf7427cb8
+
+typedef struct _Ecore_File_Download_Job                Ecore_File_Download_Job;
+struct _Ecore_File_Download_Job
+{
+   ECORE_MAGIC;
+
+   Ecore_Con_Url       *url_con;
+   FILE                        *file;
+
+   char                        *dst;
+
+   void        (*completion_cb)(void *data, const char *file, int status);
+
+   int (*progress_cb)  (void *data, const char *file,
+                        long int dltotal, long int dlnow,
+                        long int ultotal, long int ulnow);
+};
+
+#ifdef HAVE_CURL
+Ecore_File_Download_Job *_ecore_file_download_curl(const char *url, const char *dst,
+                                                  void (*completion_cb)(void *data, const char *file, int status),
+                                                  int (*progress_cb)(void *data, const char *file, long int dltotal, long int dlnow, long int ultotal, long int ulnow),
+                                                  void *data);
+
+static int _ecore_file_download_url_complete_cb(void *data, int type, void *event);
+static int _ecore_file_download_url_progress_cb(void *data, int type, void *event);
+#endif
+static void _ecore_file_download_abort(Ecore_File_Download_Job *job);
+
+static int                      init = 0;
+static Ecore_Event_Handler     *_url_complete_handler = NULL;
+static Ecore_Event_Handler     *_url_progress_download = NULL;
+static Ecore_List              *_job_list;
+
+EAPI int
+ecore_file_download_init(void)
+{
+#ifndef _WIN32
+   ecore_con_url_init();
+
+   if (init++ == 0)
+     {
+#ifdef HAVE_CURL
+       _url_complete_handler = ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, _ecore_file_download_url_complete_cb, NULL);
+       _url_progress_download = ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, _ecore_file_download_url_progress_cb, NULL);
+#endif
+     }
+   if (!_job_list)
+     {
+       _job_list = ecore_list_new();
+       if (!_job_list) return 0;
+     }
+
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+EAPI int
+ecore_file_download_shutdown(void)
+{
+#ifndef _WIN32
+   if (--init == 0)
+     {
+       if (_url_complete_handler)
+         ecore_event_handler_del(_url_complete_handler);
+       if (_url_progress_download)
+         ecore_event_handler_del(_url_progress_download);
+       _url_complete_handler = NULL;
+       _url_progress_download = NULL;
+       if (_job_list)
+         ecore_list_destroy(_job_list);
+       _job_list = NULL;
+     }
+
+   return ecore_con_url_shutdown();
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+ecore_file_download_abort_all(void)
+{
+   if (!ecore_list_empty_is(_job_list))
+     {
+       Ecore_File_Download_Job *job;
+
+       while ((job = ecore_list_first_remove(_job_list)))
+         {
+            _ecore_file_download_abort(job);
+         }
+     }
+   ecore_list_clear(_job_list);
+}
+
+/**
+ * Download @p url to the given @p dst
+ * @param  url The complete url to download
+ * @param  dst The local file to save the downloaded to
+ * @param  completion_cb A callback called on download complete
+ * @param  progress_cb A callback called during the download operation
+ * @return 1 if the download start or 0 on failure
+ *
+ * You must provide the full url, including 'http://', 'ftp://' or 'file://'.\n
+ * If @p dst already exist it will not be overwritten and the function will fail.\n
+ * Ecore must be compiled with CURL to download using http and ftp protocols.
+ */
+EAPI int
+ecore_file_download(const char *url, const char *dst,
+                   void (*completion_cb)(void *data, const char *file, int status),
+                   int (*progress_cb)(void *data, const char *file, long int dltotal, long int dlnow, long int ultotal, long int ulnow),
+                   void *data)
+{
+   char *dir = ecore_file_dir_get(dst);
+
+   if (!ecore_file_is_dir(dir))
+     {
+       free(dir);
+       return 0;
+     }
+   free(dir);
+   if (ecore_file_exists(dst)) return 0;
+
+   /* FIXME: Add handlers for http and ftp! */
+   if (!strncmp(url, "file://", 7))
+     {
+       /* FIXME: Maybe fork? Might take a while to copy.
+        * Check filesize? */
+       /* Just copy it */
+
+       url += 7;
+       /* skip hostname */
+       url = strchr(url, '/');
+       return ecore_file_cp(url, dst);
+     }
+#ifdef HAVE_CURL
+   else if ((!strncmp(url, "http://", 7)) ||
+           (!strncmp(url, "ftp://", 6)))
+     {
+       /* download */
+       Ecore_File_Download_Job *job;
+
+       job = _ecore_file_download_curl(url, dst, completion_cb, progress_cb, data);
+       if (job)
+         return 1;
+       else
+         return 0;
+     }
+#endif
+   else
+     {
+       return 0;
+     }
+#ifndef HAVE_CURL
+   completion_cb = NULL;
+   progress_cb = NULL;
+   data = NULL;
+#endif
+}
+
+/**
+ * Check if the given protocol is available
+ * @param  protocol The protocol to check
+ * @return 1 if protocol is handled or 0 if not
+ *
+ * @p protocol can be 'http://', 'ftp://' or 'file://'.\n
+ * Ecore must be compiled with CURL to handle http and ftp protocols.
+ */
+EAPI int
+ecore_file_download_protocol_available(const char *protocol)
+{
+   if (!strncmp(protocol, "file://", 7)) return 1;
+#ifdef HAVE_CURL
+   else if (!strncmp(protocol, "http://", 7)) return 1;
+   else if (!strncmp(protocol, "ftp://", 6)) return 1;
+#endif
+
+   return 0;
+}
+
+#ifdef HAVE_CURL
+static int
+_ecore_file_download_url_compare_job(const void *data1, const void *data2)
+{
+   const Ecore_File_Download_Job       *job = data1;
+   const Ecore_Con_Url                 *url = data2;
+
+   if (job->url_con == url) return 0;
+   return -1;
+}
+
+static int
+_ecore_file_download_url_complete_cb(void *data, int type, void *event)
+{
+   Ecore_Con_Event_Url_Complete        *ev = event;
+   Ecore_File_Download_Job     *job;
+
+   job = ecore_list_find(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
+   if (!ECORE_MAGIC_CHECK(job, ECORE_MAGIC_FILE_DOWNLOAD_JOB)) return 1;
+
+   ecore_list_remove(_job_list);
+
+   if (job->completion_cb)
+     job->completion_cb(ecore_con_url_data_get(job->url_con), job->dst, !ev->status);
+
+   _ecore_file_download_abort(job);
+
+   return 0;
+}
+
+static int
+_ecore_file_download_url_progress_cb(void *data, int type, void *event)
+{
+/* this reports the downloads progress. if we return 0, then download
+ * continues, if we return anything else, then the download stops */
+   Ecore_Con_Event_Url_Progress        *ev = event;
+   Ecore_File_Download_Job     *job;
+
+   job = ecore_list_find(_job_list, _ecore_file_download_url_compare_job, ev->url_con);
+   if (!ECORE_MAGIC_CHECK(job, ECORE_MAGIC_FILE_DOWNLOAD_JOB)) return 1;
+
+   if (job->progress_cb)
+     if (job->progress_cb(ecore_con_url_data_get(job->url_con), job->dst,
+                         (long int) ev->down.total, (long int) ev->down.now,
+                         (long int) ev->up.total, (long int) ev->up.now) != 0)
+       {
+         ecore_list_remove(_job_list);
+         _ecore_file_download_abort(job);
+       }
+
+   return 0;
+}
+
+Ecore_File_Download_Job *
+_ecore_file_download_curl(const char *url, const char *dst,
+                         void (*completion_cb)(void *data, const char *file,
+                                               int status),
+                         int (*progress_cb)(void *data, const char *file,
+                                            long int dltotal, long int dlnow,
+                                            long int ultotal, long int ulnow),
+                         void *data)
+{
+   Ecore_File_Download_Job *job;
+
+   job = calloc(1, sizeof(Ecore_File_Download_Job));
+   if (!job) return NULL;
+
+   ECORE_MAGIC_SET(job, ECORE_MAGIC_FILE_DOWNLOAD_JOB);
+
+   job->file = fopen(dst, "wb");
+   if (!job->file)
+     {
+       free(job);
+       return NULL;
+     }
+   job->url_con = ecore_con_url_new(url);
+   if (!job->url_con)
+     {
+       fclose(job->file);
+       free(job);
+       return NULL;
+     }
+
+   ecore_con_url_fd_set(job->url_con, fileno(job->file));
+   ecore_con_url_data_set(job->url_con, data);
+
+   job->dst = strdup(dst);
+
+   job->completion_cb = completion_cb;
+   job->progress_cb = progress_cb;
+   ecore_list_append(_job_list, job);
+
+   ecore_con_url_send(job->url_con, NULL, 0, NULL);
+
+   return job;
+}
+#endif
+
+static void
+_ecore_file_download_abort(Ecore_File_Download_Job *job)
+{
+#ifdef HAVE_CURL
+   ecore_con_url_destroy(job->url_con);
+#endif  
+   fclose(job->file);
+   free(job->dst);
+   free(job);
+}
diff --git a/src/lib/ecore_file/ecore_file_monitor.c b/src/lib/ecore_file/ecore_file_monitor.c
new file mode 100644 (file)
index 0000000..32c1b20
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "ecore_file_private.h"
+
+static int init = 0;
+
+typedef enum {
+     ECORE_FILE_MONITOR_TYPE_NONE,
+#ifdef HAVE_INOTIFY
+     ECORE_FILE_MONITOR_TYPE_INOTIFY,
+#endif
+#ifdef HAVE_POLL
+     ECORE_FILE_MONITOR_TYPE_POLL
+#endif
+} Ecore_File_Monitor_Type;
+
+static Ecore_File_Monitor_Type monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
+
+int
+ecore_file_monitor_init(void)
+{
+   if (++init != 1) return init;
+
+#ifdef HAVE_INOTIFY
+   monitor_type = ECORE_FILE_MONITOR_TYPE_INOTIFY;
+   if (ecore_file_monitor_inotify_init())
+     return init;
+#endif
+#ifdef HAVE_POLL
+   monitor_type = ECORE_FILE_MONITOR_TYPE_POLL;
+   if (ecore_file_monitor_poll_init())
+     return init;
+#endif
+   monitor_type = ECORE_FILE_MONITOR_TYPE_NONE;
+   return --init;
+}
+
+int
+ecore_file_monitor_shutdown(void)
+{
+   if (--init != 0) return init;
+
+   switch (monitor_type)
+     {
+      case ECORE_FILE_MONITOR_TYPE_NONE:
+        break;
+#ifdef HAVE_INOTIFY
+      case ECORE_FILE_MONITOR_TYPE_INOTIFY:
+        ecore_file_monitor_inotify_shutdown();
+        break;
+#endif
+#ifdef HAVE_POLL
+      case ECORE_FILE_MONITOR_TYPE_POLL:
+        ecore_file_monitor_poll_shutdown();
+        break;
+#endif
+     }
+   return init;
+}
+
+/**
+ * Monitor a path using inotify or polling
+ * @param  path The path to monitor
+ * @param  func The function to call on changes
+ * @param  data The data passed to func
+ * @return An Ecore_File_Monitor pointer or NULL on failure
+ */
+EAPI Ecore_File_Monitor *
+ecore_file_monitor_add(const char *path,
+                void (*func) (void *data, Ecore_File_Monitor *em,
+                      Ecore_File_Event event,
+                      const char *path),
+                void *data)
+{
+   switch (monitor_type)
+     {
+      case ECORE_FILE_MONITOR_TYPE_NONE:
+        return NULL;
+#ifdef HAVE_INOTIFY
+      case ECORE_FILE_MONITOR_TYPE_INOTIFY:
+        return ecore_file_monitor_inotify_add(path, func, data);
+#endif
+#ifdef HAVE_POLL
+      case ECORE_FILE_MONITOR_TYPE_POLL:
+        return ecore_file_monitor_poll_add(path, func, data);
+#endif
+     }
+   return NULL;
+}
+
+/**
+ * Stop monitoring a path
+ * @param  em The Ecore_File_Monitor to stop
+ */
+EAPI void
+ecore_file_monitor_del(Ecore_File_Monitor *em)
+{
+   switch (monitor_type)
+     {
+      case ECORE_FILE_MONITOR_TYPE_NONE:
+        break;
+#ifdef HAVE_INOTIFY
+      case ECORE_FILE_MONITOR_TYPE_INOTIFY:
+        ecore_file_monitor_inotify_del(em);
+        break;
+#endif
+#ifdef HAVE_POLL
+      case ECORE_FILE_MONITOR_TYPE_POLL:
+        ecore_file_monitor_poll_del(em);
+        break;
+#endif
+     }
+}
+
+/**
+ * Get the monitored path
+ * @param  em The Ecore_File_Monitor to query
+ * @return The path that is monitored by @p em
+ */
+EAPI const char *
+ecore_file_monitor_path_get(Ecore_File_Monitor *em)
+{
+   return em->path;
+}
diff --git a/src/lib/ecore_file/ecore_file_monitor_inotify.c b/src/lib/ecore_file/ecore_file_monitor_inotify.c
new file mode 100644 (file)
index 0000000..513ee2c
--- /dev/null
@@ -0,0 +1,357 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "ecore_file_private.h"
+
+/*
+ * TODO:
+ *
+ * - Listen to these events:
+ *   IN_ACCESS, IN_ATTRIB, IN_CLOSE_WRITE, IN_CLOSE_NOWRITE, IN_OPEN
+ * - Read all events first, then call the callbacks. This will prevent several
+ *   callbacks with the typic save cycle (delete file, new file)
+ */
+
+#ifdef HAVE_INOTIFY
+
+#ifdef HAVE_SYS_INOTIFY
+# include <sys/inotify.h>
+#else
+# include <asm/unistd.h>
+# include <linux/inotify.h>
+#endif
+
+#ifndef HAVE_SYS_INOTIFY
+static inline int inotify_init(void);
+static inline int inotify_add_watch(int fd, const char *name, __u32 mask);
+static inline int inotify_rm_watch(int fd, __u32 wd);
+#endif
+
+
+typedef struct _Ecore_File_Monitor_Inotify Ecore_File_Monitor_Inotify;
+
+#define ECORE_FILE_MONITOR_INOTIFY(x) ((Ecore_File_Monitor_Inotify *)(x))
+
+struct _Ecore_File_Monitor_Inotify
+{
+   Ecore_File_Monitor  monitor;
+   int                 wd;
+};
+
+static Ecore_Fd_Handler *_fdh = NULL;
+static Ecore_List2    *_monitors = NULL;
+
+static int                 _ecore_file_monitor_inotify_handler(void *data, Ecore_Fd_Handler *fdh);
+static Ecore_File_Monitor *_ecore_file_monitor_inotify_monitor_find(int wd);
+static void                _ecore_file_monitor_inotify_events(Ecore_File_Monitor *em, char *file, int mask);
+static int                 _ecore_file_monitor_inotify_monitor(Ecore_File_Monitor *em, const char *path);
+#if 0
+static void                _ecore_file_monitor_inotify_print(char *file, int mask);
+#endif
+
+int
+ecore_file_monitor_inotify_init(void)
+{
+   int fd;
+
+   fd = inotify_init();
+   if (fd < 0)
+     return 0;
+
+   _fdh = ecore_main_fd_handler_add(fd, ECORE_FD_READ, _ecore_file_monitor_inotify_handler,
+                                   NULL, NULL, NULL);
+   if (!_fdh)
+     {
+       close(fd);
+       return 0;
+     }
+
+   return 1;
+}
+
+int
+ecore_file_monitor_inotify_shutdown(void)
+{
+   int fd;
+   Ecore_List2 *l;
+
+   for (l = _monitors; l;)
+     {
+       Ecore_File_Monitor *em;
+
+       em = ECORE_FILE_MONITOR(l);
+       l = l->next;
+       ecore_file_monitor_inotify_del(em);
+     }
+
+   if (_fdh)
+     {
+       fd = ecore_main_fd_handler_fd_get(_fdh);
+       ecore_main_fd_handler_del(_fdh);
+       close(fd);
+     }
+   return 1;
+}
+
+Ecore_File_Monitor *
+ecore_file_monitor_inotify_add(const char *path,
+                              void (*func) (void *data, Ecore_File_Monitor *em,
+                                            Ecore_File_Event event,
+                                            const char *path),
+                              void *data)
+{
+   Ecore_File_Monitor *em;
+   int len;
+
+   em = calloc(1, sizeof(Ecore_File_Monitor_Inotify));
+   if (!em) return NULL;
+
+   em->func = func;
+   em->data = data;
+
+   em->path = strdup(path);
+   len = strlen(em->path);
+   if (em->path[len - 1] == '/' && strcmp(em->path, "/"))
+     em->path[len - 1] = 0;
+
+   _monitors = _ecore_list2_append(_monitors, em);
+
+   if (ecore_file_exists(em->path))
+     {
+       if (!_ecore_file_monitor_inotify_monitor(em, em->path))
+         return NULL;
+     }
+   else
+     {
+       ecore_file_monitor_inotify_del(em);
+       return NULL;
+     }
+
+   return em;
+}
+
+void
+ecore_file_monitor_inotify_del(Ecore_File_Monitor *em)
+{
+   int fd;
+
+   _monitors = _ecore_list2_remove(_monitors, em);
+
+   fd = ecore_main_fd_handler_fd_get(_fdh);
+   if (ECORE_FILE_MONITOR_INOTIFY(em)->wd)
+     inotify_rm_watch(fd, ECORE_FILE_MONITOR_INOTIFY(em)->wd);
+   free(em->path);
+   free(em);
+}
+
+static int
+_ecore_file_monitor_inotify_handler(void *data __UNUSED__, Ecore_Fd_Handler *fdh)
+{
+   Ecore_File_Monitor *em;
+   char buffer[16384];
+   struct inotify_event *event;
+   int i = 0;
+   int event_size;
+   ssize_t size;
+
+   size = read(ecore_main_fd_handler_fd_get(fdh), buffer, sizeof(buffer));
+   while (i < size)
+     {
+       event = (struct inotify_event *)&buffer[i];
+       event_size = sizeof(struct inotify_event) + event->len;
+       i += event_size;
+
+       em = _ecore_file_monitor_inotify_monitor_find(event->wd);
+       if (!em) continue;
+
+       _ecore_file_monitor_inotify_events(em, (event->len ? event->name : NULL), event->mask);
+     }
+
+   return 1;
+}
+
+static Ecore_File_Monitor *
+_ecore_file_monitor_inotify_monitor_find(int wd)
+{
+   Ecore_List2 *l;
+
+   for (l = _monitors; l; l = l->next)
+     {
+       Ecore_File_Monitor *em;
+
+       em = ECORE_FILE_MONITOR(l);
+
+       if (ECORE_FILE_MONITOR_INOTIFY(em)->wd == wd)
+         return em;
+     }
+   return NULL;
+}
+
+static void
+_ecore_file_monitor_inotify_events(Ecore_File_Monitor *em, char *file, int mask)
+{
+   char buf[PATH_MAX];
+   int isdir;
+
+   if ((file) && (file[0]))
+     snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
+   else
+     strcpy(buf, em->path);
+   isdir = mask & IN_ISDIR;
+
+#if 0
+   _ecore_file_monitor_inotify_print(file, mask);
+#endif
+
+   if (mask & IN_MODIFY)
+     {
+       if (!isdir)
+         em->func(em->data, em, ECORE_FILE_EVENT_MODIFIED, buf);
+     }
+   if (mask & IN_MOVED_FROM)
+     {
+       if (isdir)
+         em->func(em->data, em, ECORE_FILE_EVENT_DELETED_DIRECTORY, buf);
+       else
+         em->func(em->data, em, ECORE_FILE_EVENT_DELETED_FILE, buf);
+     }
+   if (mask & IN_MOVED_TO)
+     {
+       if (isdir)
+         em->func(em->data, em, ECORE_FILE_EVENT_CREATED_DIRECTORY, buf);
+       else
+         em->func(em->data, em, ECORE_FILE_EVENT_CREATED_FILE, buf);
+     }
+   if (mask & IN_DELETE)
+     {
+       if (isdir)
+         em->func(em->data, em, ECORE_FILE_EVENT_DELETED_DIRECTORY, buf);
+       else
+         em->func(em->data, em, ECORE_FILE_EVENT_DELETED_FILE, buf);
+     }
+   if (mask & IN_CREATE)
+     {
+       if (isdir)
+         em->func(em->data, em, ECORE_FILE_EVENT_CREATED_DIRECTORY, buf);
+       else
+         em->func(em->data, em, ECORE_FILE_EVENT_CREATED_FILE, buf);
+     }
+   if (mask & IN_DELETE_SELF)
+     {
+       em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+     }
+   if (mask & IN_MOVE_SELF)
+     {
+       /* We just call delete. The dir is gone... */
+       em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+     }
+   if (mask & IN_UNMOUNT)
+     {
+       /* We just call delete. The dir is gone... */
+       em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+     }
+   if (mask & IN_IGNORED)
+     {
+       /* The watch is removed. If the file name still exists monitor the new one,
+        * else delete it */
+       if (ecore_file_exists(em->path))
+         {
+            if (!_ecore_file_monitor_inotify_monitor(em, em->path))
+              em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+         }
+       else
+         em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+     }
+}
+
+static int
+_ecore_file_monitor_inotify_monitor(Ecore_File_Monitor *em, const char *path)
+{
+   int mask;
+   mask = IN_MODIFY|
+         IN_MOVED_FROM|IN_MOVED_TO|
+         IN_DELETE|IN_CREATE|
+         IN_DELETE_SELF|IN_MOVE_SELF|
+         IN_UNMOUNT;
+   ECORE_FILE_MONITOR_INOTIFY(em)->wd = inotify_add_watch(ecore_main_fd_handler_fd_get(_fdh),
+                                                         path, mask);
+   if (ECORE_FILE_MONITOR_INOTIFY(em)->wd < 0)
+     {
+       printf("inotify_add_watch error\n");
+       ecore_file_monitor_inotify_del(em);
+       return 0;
+     }
+   return 1;
+}
+
+#ifndef HAVE_SYS_INOTIFY
+static inline int
+inotify_init(void)
+{
+   return syscall(__NR_inotify_init);
+}
+
+static inline int
+inotify_add_watch(int fd, const char *name, __u32 mask)
+{
+   return syscall(__NR_inotify_add_watch, fd, name, mask);
+}
+
+static inline int
+inotify_rm_watch(int fd, __u32 wd)
+{
+   return syscall(__NR_inotify_rm_watch, fd, wd);
+}
+#endif
+
+#if 0
+static void
+_ecore_file_monitor_inotify_print(char *file, int mask)
+{
+   const char *type;
+
+   if (mask & IN_ISDIR)
+     type = "dir";
+   else
+     type = "file";
+
+   if (mask & IN_MODIFY)
+     {
+       printf("Inotify modified %s: %s\n", type, file);
+     }
+   if (mask & IN_MOVED_FROM)
+     {
+       printf("Inotify moved from %s: %s\n", type, file);
+     }
+   if (mask & IN_MOVED_TO)
+     {
+       printf("Inotify moved to %s: %s\n", type, file);
+     }
+   if (mask & IN_DELETE)
+     {
+       printf("Inotify delete %s: %s\n", type, file);
+     }
+   if (mask & IN_CREATE)
+     {
+       printf("Inotify create %s: %s\n", type, file);
+     }
+   if (mask & IN_DELETE_SELF)
+     {
+       printf("Inotify delete self %s: %s\n", type, file);
+     }
+   if (mask & IN_MOVE_SELF)
+     {
+       printf("Inotify move self %s: %s\n", type, file);
+     }
+   if (mask & IN_UNMOUNT)
+     {
+       printf("Inotify unmount %s: %s\n", type, file);
+     }
+}
+#endif
+#endif /* HAVE_INOTIFY */
diff --git a/src/lib/ecore_file/ecore_file_monitor_poll.c b/src/lib/ecore_file/ecore_file_monitor_poll.c
new file mode 100644 (file)
index 0000000..abbdd22
--- /dev/null
@@ -0,0 +1,365 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "ecore_file_private.h"
+
+#ifdef HAVE_POLL
+
+/*
+ * TODO:
+ * - Implement recursive as an option!
+ * - Keep whole path or just name of file? (Memory or CPU...)
+ * - Remove requests without files?
+ * - Change poll time
+ */
+
+typedef struct _Ecore_File_Monitor_Poll Ecore_File_Monitor_Poll;
+typedef struct _Ecore_File              Ecore_File;
+
+#define ECORE_FILE_MONITOR_POLL(x) ((Ecore_File_Monitor_Poll *)(x))
+
+struct _Ecore_File_Monitor_Poll
+{
+   Ecore_File_Monitor  monitor;
+   int                 mtime;
+   unsigned char       deleted;
+};
+
+struct _Ecore_File
+{
+   Ecore_List2  __list_data;
+   char          *name;
+   int            mtime;
+   unsigned char  is_dir;
+};
+
+#define ECORE_FILE_INTERVAL_MIN  1.0
+#define ECORE_FILE_INTERVAL_STEP 0.5
+#define ECORE_FILE_INTERVAL_MAX  5.0
+
+static double         _interval = ECORE_FILE_INTERVAL_MIN;
+static Ecore_Timer   *_timer = NULL;
+static Ecore_List2 *_monitors = NULL;
+static int          _lock = 0;
+
+static int         _ecore_file_monitor_poll_handler(void *data);
+static void        _ecore_file_monitor_poll_check(Ecore_File_Monitor *em);
+static int         _ecore_file_monitor_poll_checking(Ecore_File_Monitor *em, char *name);
+
+int
+ecore_file_monitor_poll_init(void)
+{
+   return 1;
+}
+
+int
+ecore_file_monitor_poll_shutdown(void)
+{
+   Ecore_List2 *l;
+
+   for (l = _monitors; l;)
+     {
+       Ecore_File_Monitor *em;
+
+       em = ECORE_FILE_MONITOR(l);
+       l = l->next;
+       ecore_file_monitor_poll_del(em);
+     }
+
+   if (_timer)
+     {
+               ecore_timer_del(_timer);
+       _timer = NULL;
+     }
+   return 1;
+}
+
+Ecore_File_Monitor *
+ecore_file_monitor_poll_add(const char *path,
+                           void (*func) (void *data, Ecore_File_Monitor *em,
+                                         Ecore_File_Event event,
+                                         const char *path),
+                           void *data)
+{
+   Ecore_File_Monitor *em;
+   int len;
+
+   if (!path) return NULL;
+   if (!func) return NULL;
+
+   em = calloc(1, sizeof(Ecore_File_Monitor_Poll));
+   if (!em) return NULL;
+   
+   if (!_timer)
+     _timer = ecore_timer_add(_interval, _ecore_file_monitor_poll_handler, NULL);
+   else
+     ecore_timer_interval_set(_timer, ECORE_FILE_INTERVAL_MIN);
+
+   em->path = strdup(path);
+   len = strlen(em->path);
+   if (em->path[len - 1] == '/' && strcmp(em->path, "/"))
+     em->path[len - 1] = 0;
+
+   em->func = func;
+   em->data = data;
+
+   ECORE_FILE_MONITOR_POLL(em)->mtime = ecore_file_mod_time(em->path);
+   if (ecore_file_exists(em->path))
+     {
+       if (ecore_file_is_dir(em->path))
+         {
+            /* Check for subdirs */
+            Ecore_List *files;
+            char *file;
+
+            files = ecore_file_ls(em->path);
+            if (files)
+              {
+                 while ((file = ecore_list_next(files)))
+                   {
+                      Ecore_File *f;
+                      char buf[PATH_MAX];
+
+                      f = calloc(1, sizeof(Ecore_File));
+                      if (!f)
+                        continue;
+
+                      snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
+                      f->name = strdup(file);
+                      f->mtime = ecore_file_mod_time(buf);
+                      f->is_dir = ecore_file_is_dir(buf);
+                      em->files = _ecore_list2_append(em->files, f);
+                   }
+                 ecore_list_destroy(files);
+              }
+         }
+     }
+   else
+     {
+       ecore_file_monitor_poll_del(em);
+       return NULL;
+     }
+
+   _monitors = _ecore_list2_append(_monitors, em);
+
+   return em;
+}
+
+void
+ecore_file_monitor_poll_del(Ecore_File_Monitor *em)
+{
+   Ecore_List2 *l;
+
+   if (_lock)
+     {
+       ECORE_FILE_MONITOR_POLL(em)->deleted = 1;
+       return;
+     }
+
+   /* Remove files */
+   /*It's possible there weren't any files to monitor, so check if the list is init*/
+   if (em->files)
+     {
+       for (l = em->files; l;)
+         {
+            Ecore_File *file;
+            
+            file = (Ecore_File *)l;
+            l = l->next;
+            free(file->name);
+            free(file);
+         }
+     }
+   
+   _monitors = _ecore_list2_remove(_monitors, em);
+   
+   free(em->path);
+   free(em);
+   
+   if (_timer)
+     {
+       if (!_monitors)
+         {
+            ecore_timer_del(_timer);
+            _timer = NULL;
+         }
+       else
+         ecore_timer_interval_set(_timer, ECORE_FILE_INTERVAL_MIN);
+     }
+}
+
+static int
+_ecore_file_monitor_poll_handler(void *data __UNUSED__)
+{
+   Ecore_List2 *l;
+
+   _interval += ECORE_FILE_INTERVAL_STEP;
+
+   _lock = 1;
+   for (l = _monitors; l; l = l->next)
+     {
+       Ecore_File_Monitor *em;
+
+       em = ECORE_FILE_MONITOR(l);
+       _ecore_file_monitor_poll_check(em);
+     }
+   _lock = 0;
+
+   if (_interval > ECORE_FILE_INTERVAL_MAX)
+     _interval = ECORE_FILE_INTERVAL_MAX;
+   ecore_timer_interval_set(_timer, _interval);
+
+   for (l = _monitors; l;)
+     {
+       Ecore_File_Monitor *em;
+
+       em = ECORE_FILE_MONITOR(l);
+       l = l->next;
+       if (ECORE_FILE_MONITOR_POLL(em)->deleted)
+         ecore_file_monitor_del(em);
+     }
+   return 1;
+}
+
+static void
+_ecore_file_monitor_poll_check(Ecore_File_Monitor *em)
+{
+   int mtime;
+   int is_dir;
+
+   mtime = ecore_file_mod_time(em->path);
+   is_dir = ecore_file_is_dir(em->path);
+   if (mtime < ECORE_FILE_MONITOR_POLL(em)->mtime)
+     {
+       Ecore_List2 *l;
+       Ecore_File_Event event;
+       
+       /* Notify all files deleted */
+       for (l = em->files; l;)
+         {
+            Ecore_File *f;
+            char buf[PATH_MAX];
+            
+            f = (Ecore_File *)l;
+            l = l->next;
+
+            snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
+            if (f->is_dir)
+              event = ECORE_FILE_EVENT_DELETED_DIRECTORY;
+            else
+              event = ECORE_FILE_EVENT_DELETED_FILE;
+            em->func(em->data, em, event, buf);
+            free(f->name);
+            free(f);
+         }
+       em->files = NULL;
+       em->func(em->data, em, ECORE_FILE_EVENT_DELETED_SELF, em->path);
+       _interval = ECORE_FILE_INTERVAL_MIN;
+     }
+   else
+     {
+       Ecore_List2 *l;
+
+       /* Check for changed files */
+       for (l = em->files; l;)
+         {
+            Ecore_File *f;
+            char buf[PATH_MAX];
+            int mtime;
+            Ecore_File_Event event;
+
+            f = (Ecore_File *)l;
+            l = l->next;
+
+            snprintf(buf, sizeof(buf), "%s/%s", em->path, f->name);
+            mtime = ecore_file_mod_time(buf);
+            if (mtime < f->mtime)
+              {
+                 if (f->is_dir)
+                   event = ECORE_FILE_EVENT_DELETED_DIRECTORY;
+                 else
+                   event = ECORE_FILE_EVENT_DELETED_FILE;
+
+                 em->func(em->data, em, event, buf);
+                 em->files = _ecore_list2_remove(em->files, f);
+                 free(f->name);
+                 free(f);
+                 _interval = ECORE_FILE_INTERVAL_MIN;
+              }
+            else if ((mtime > f->mtime) && !(f->is_dir))
+              {
+                 em->func(em->data, em, ECORE_FILE_EVENT_MODIFIED, buf);
+                 _interval = ECORE_FILE_INTERVAL_MIN;
+                 f->mtime = mtime;
+              }
+            else
+              f->mtime = mtime;
+         }
+
+       /* Check for new files */
+       if (ECORE_FILE_MONITOR_POLL(em)->mtime < mtime)
+         {
+            Ecore_List *files;
+            char *file;
+
+            /* Files have been added or removed */
+            files = ecore_file_ls(em->path);
+            if (files)
+              { 
+                 /* Are we a directory? We should check first, rather than rely on null here*/
+                 while ((file = ecore_list_next(files)))
+                   {
+                      Ecore_File *f;
+                      char buf[PATH_MAX];
+                      Ecore_File_Event event;
+                      
+                      if (_ecore_file_monitor_poll_checking(em, file))
+                        continue;
+                      
+                      snprintf(buf, sizeof(buf), "%s/%s", em->path, file);
+                      f = calloc(1, sizeof(Ecore_File));
+                      if (!f)
+                        continue;
+                      
+                      f->name = strdup(file);
+                      f->mtime = ecore_file_mod_time(buf);
+                      f->is_dir = ecore_file_is_dir(buf);
+                      if (f->is_dir)
+                        event = ECORE_FILE_EVENT_CREATED_DIRECTORY;
+                      else
+                        event = ECORE_FILE_EVENT_CREATED_FILE;
+                      em->func(em->data, em, event, buf);
+                      em->files = _ecore_list2_append(em->files, f);
+                   }
+                 ecore_list_destroy(files);
+              }
+            
+            if (!ecore_file_is_dir(em->path))
+              em->func(em->data, em, ECORE_FILE_EVENT_MODIFIED, em->path);
+            _interval = ECORE_FILE_INTERVAL_MIN;
+         }
+     }
+   ECORE_FILE_MONITOR_POLL(em)->mtime = mtime;
+}
+
+static int
+_ecore_file_monitor_poll_checking(Ecore_File_Monitor *em, char *name)
+{
+   Ecore_List2 *l;
+
+   for (l = em->files; l; l = l->next)
+     {
+       Ecore_File *f;
+
+       f = (Ecore_File *)l;
+       if (!strcmp(f->name, name))
+         return 1;
+     }
+   return 0;
+}
+#endif
diff --git a/src/lib/ecore_file/ecore_file_path.c b/src/lib/ecore_file/ecore_file_path.c
new file mode 100644 (file)
index 0000000..7100d95
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "ecore_file_private.h"
+
+static int init = 0;
+static Ecore_List *__ecore_file_path_bin = NULL;
+
+static Ecore_List *_ecore_file_path_from_env(const char *env);
+
+int
+ecore_file_path_init(void)
+{
+   if (++init != 1) return init;
+   __ecore_file_path_bin = _ecore_file_path_from_env("PATH");
+   ecore_list_free_cb_set(__ecore_file_path_bin, free);
+   return init;
+}
+
+int
+ecore_file_path_shutdown(void)
+{
+   if (--init != 0) return init;
+   ecore_list_destroy(__ecore_file_path_bin);
+   __ecore_file_path_bin = NULL;
+   return init;
+}
+
+Ecore_List *
+_ecore_file_path_from_env(const char *env)
+{
+   Ecore_List *path;
+   char *env_path, *p, *last;
+
+   path = ecore_list_new();
+
+   env_path = getenv(env);
+   if (!env_path)
+     return path;
+
+   env_path = strdup(env_path);
+   last = env_path;
+   for (p = env_path; *p; p++)
+     {
+        if (*p == ':')
+          *p = '\0';
+
+        if (!*p)
+          {
+            if (!ecore_file_path_dir_exists(last))
+              ecore_list_append(path, strdup(last));
+             last = p + 1;
+          }
+     }
+   if (p > last)
+     ecore_list_append(path, strdup(last));
+
+   free(env_path);
+   return path;
+}
+
+/**
+ * Check if the given directory is in PATH
+ * @param The name of the directory to search in PATH
+ * @return 1 if the directory exist in PATH, 0 otherwise
+ */
+EAPI int
+ecore_file_path_dir_exists(const char *in_dir)
+{
+   char *dir;
+
+   if (!__ecore_file_path_bin) return 0;
+   ecore_list_first_goto(__ecore_file_path_bin);
+   while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+     {
+       if (!strcmp(dir, in_dir)) return 1;
+     }
+   return 0;
+}
+
+/**
+ * Check if the given application is installed
+ * @param  exe The name of the application
+ * @return 1 if the exe is in PATH and is executable
+ * 
+ * This function check if the given name exist in PATH and is executable 
+ */
+EAPI int
+ecore_file_app_installed(const char *exe)
+{
+   char *dir;
+   char  buf[PATH_MAX];
+
+   if (!exe) return 0;
+   if (ecore_file_can_exec(exe)) return 1;
+
+   ecore_list_first_goto(__ecore_file_path_bin);
+   while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+     {
+       snprintf(buf, sizeof(buf), "%s/%s", dir, exe);
+       if (ecore_file_can_exec(buf)) return 1;
+     }
+   return 0;
+}
+
+/**
+ * Get a list of all the applications installed on the system
+ * @return An Ecore_List containing all the executable files in the system
+ */
+EAPI Ecore_List *
+ecore_file_app_list(void)
+{
+   Ecore_List *list, *files;
+   char  buf[PATH_MAX], *dir, *exe;
+   
+   list = ecore_list_new();
+   if (!list) return NULL;
+   ecore_list_free_cb_set(list, free);
+   ecore_list_first_goto(__ecore_file_path_bin);
+   while ((dir = ecore_list_next(__ecore_file_path_bin)) != NULL)
+     {
+       files = ecore_file_ls(dir);
+       if (files)
+         {
+            ecore_list_first_goto(files);
+            while ((exe = ecore_list_next(files)) != NULL)
+              {
+                 snprintf(buf, sizeof(buf), "%s/%s", dir, exe);
+                 if ((ecore_file_can_exec(buf)) &&
+                     (!ecore_file_is_dir(buf)))
+                   ecore_list_append(list, strdup(buf));
+              }
+            ecore_list_destroy(files);
+         }
+     }
+   return list;
+}
diff --git a/src/lib/ecore_file/ecore_file_private.h b/src/lib/ecore_file/ecore_file_private.h
new file mode 100644 (file)
index 0000000..e2001f7
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS  64
+#endif
+
+#ifdef __linux__
+# include <features.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+
+#ifdef HAVE_EVIL
+# include <Evil.h>
+#endif
+
+#include "Ecore_File.h"
+
+/* ecore_file_monitor */
+int ecore_file_monitor_init(void);
+int ecore_file_monitor_shutdown(void);
+
+#define ECORE_FILE_MONITOR(x) ((Ecore_File_Monitor *)(x))
+
+struct _Ecore_File_Monitor
+{
+   Ecore_List2 __list_data;
+   void (*func) (void *data,
+                Ecore_File_Monitor *ecore_file_monitor,
+                Ecore_File_Event event,
+                const char *path);
+
+   char               *path;
+   void               *data;
+   Ecore_List2        *files;
+};
+
+#ifdef HAVE_INOTIFY
+int                 ecore_file_monitor_inotify_init(void);
+int                 ecore_file_monitor_inotify_shutdown(void);
+Ecore_File_Monitor *ecore_file_monitor_inotify_add(const char *path,
+                                                       void (*func) (void *data,
+                                                                     Ecore_File_Monitor *ecore_file_monitor,
+                                                                     Ecore_File_Event event,
+                                                                     const char *path),
+                                                       void *data);
+void                ecore_file_monitor_inotify_del(Ecore_File_Monitor *ecore_file_monitor);
+#endif
+
+#ifdef HAVE_POLL
+int                 ecore_file_monitor_poll_init(void);
+int                 ecore_file_monitor_poll_shutdown(void);
+Ecore_File_Monitor *ecore_file_monitor_poll_add(const char *path,
+                                               void (*func) (void *data,
+                                                             Ecore_File_Monitor *ecore_file_monitor,
+                                                             Ecore_File_Event event,
+                                                             const char *path),
+                                               void *data);
+void                ecore_file_monitor_poll_del(Ecore_File_Monitor *ecore_file_monitor);
+
+/* ecore_file_path */
+int ecore_file_path_init(void);
+int ecore_file_path_shutdown(void);
+
+/* ecore_file_download */
+int ecore_file_download_init(void);
+int ecore_file_download_shutdown(void);
+
+#endif
diff --git a/src/lib/ecore_file/ecore_file_utils.c b/src/lib/ecore_file/ecore_file_utils.c
new file mode 100644 (file)
index 0000000..b3217ad
--- /dev/null
@@ -0,0 +1,4 @@
+void
+_ecore_file_add_slash(char *path)
+{
+}
diff --git a/src/lib/ecore_imf/.cvsignore b/src/lib/ecore_imf/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h
new file mode 100644 (file)
index 0000000..d839819
--- /dev/null
@@ -0,0 +1,345 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_IMF_H
+#define _ECORE_IMF_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_IMF_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_IMF_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#include <Ecore_Data.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+   /* Events sent by the Input Method */
+   typedef struct _Ecore_IMF_Event_Preedit_Start      Ecore_IMF_Event_Preedit_Start;
+   typedef struct _Ecore_IMF_Event_Preedit_End        Ecore_IMF_Event_Preedit_End;
+   typedef struct _Ecore_IMF_Event_Preedit_Changed    Ecore_IMF_Event_Preedit_Changed;
+   typedef struct _Ecore_IMF_Event_Commit             Ecore_IMF_Event_Commit;
+   typedef struct _Ecore_IMF_Event_Delete_Surrounding Ecore_IMF_Event_Delete_Surrounding;
+
+   /* Events to filter */
+   typedef struct _Ecore_IMF_Event_Mouse_Down         Ecore_IMF_Event_Mouse_Down;
+   typedef struct _Ecore_IMF_Event_Mouse_Up           Ecore_IMF_Event_Mouse_Up;
+   typedef struct _Ecore_IMF_Event_Mouse_In           Ecore_IMF_Event_Mouse_In;
+   typedef struct _Ecore_IMF_Event_Mouse_Out          Ecore_IMF_Event_Mouse_Out;
+   typedef struct _Ecore_IMF_Event_Mouse_Move         Ecore_IMF_Event_Mouse_Move;
+   typedef struct _Ecore_IMF_Event_Mouse_Wheel        Ecore_IMF_Event_Mouse_Wheel;
+   typedef struct _Ecore_IMF_Event_Key_Down           Ecore_IMF_Event_Key_Down;
+   typedef struct _Ecore_IMF_Event_Key_Up             Ecore_IMF_Event_Key_Up;
+   typedef union  _Ecore_IMF_Event                    Ecore_IMF_Event;
+
+   typedef struct _Ecore_IMF_Context                  Ecore_IMF_Context;                  /**< An Input Method Context */
+   typedef struct _Ecore_IMF_Context_Class            Ecore_IMF_Context_Class;            /**< An Input Method Context class */
+   typedef struct _Ecore_IMF_Context_Info             Ecore_IMF_Context_Info;             /**< An Input Method Context info */
+
+   EAPI extern int ECORE_IMF_EVENT_PREEDIT_START;
+   EAPI extern int ECORE_IMF_EVENT_PREEDIT_END;
+   EAPI extern int ECORE_IMF_EVENT_PREEDIT_CHANGED;
+   EAPI extern int ECORE_IMF_EVENT_COMMIT;
+   EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING;
+
+   typedef enum
+     {
+       ECORE_IMF_EVENT_MOUSE_DOWN,
+       ECORE_IMF_EVENT_MOUSE_UP,
+       ECORE_IMF_EVENT_MOUSE_IN,
+       ECORE_IMF_EVENT_MOUSE_OUT,
+       ECORE_IMF_EVENT_MOUSE_MOVE,
+       ECORE_IMF_EVENT_MOUSE_WHEEL,
+       ECORE_IMF_EVENT_KEY_DOWN,
+       ECORE_IMF_EVENT_KEY_UP
+     } Ecore_IMF_Event_Type;
+
+   typedef enum
+     {
+       ECORE_IMF_KEYBOARD_MODIFIER_NONE  = 0,      /**< No active modifiers */
+       ECORE_IMF_KEYBOARD_MODIFIER_CTRL  = 1 << 0, /**< "Control" is pressed */
+       ECORE_IMF_KEYBOARD_MODIFIER_ALT   = 1 << 1, /**< "Alt" is pressed */
+       ECORE_IMF_KEYBOARD_MODIFIER_SHIFT = 1 << 2, /**< "Shift" is pressed */
+       ECORE_IMF_KEYBOARD_MODIFIER_WIN   = 1 << 3  /**< "Win" (between "Ctrl" and "Alt") is pressed */
+     } Ecore_IMF_Keyboard_Modifiers;
+
+   typedef enum
+     {
+       ECORE_IMF_KEYBOARD_LOCK_NONE      = 0,      /**< No locks are active */
+       ECORE_IMF_KEYBOARD_LOCK_NUM       = 1 << 0, /**< "Num" lock is active */
+       ECORE_IMF_KEYBOARD_LOCK_CAPS      = 1 << 1, /**< "Caps" lock is active */
+       ECORE_IMF_KEYBOARD_LOCK_SCROLL    = 1 << 2  /**< "Scroll" lock is active */
+     } Ecore_IMF_Keyboard_Locks;
+
+   typedef enum
+     {
+       ECORE_IMF_MOUSE_NONE              = 0,      /**< A single click */
+       ECORE_IMF_MOUSE_DOUBLE_CLICK      = 1 << 0, /**< A double click */
+       ECORE_IMF_MOUSE_TRIPLE_CLICK      = 1 << 1  /**< A triple click */
+     } Ecore_IMF_Mouse_Flags;
+
+   typedef enum
+     {
+       ECORE_IMF_INPUT_MODE_ALPHA        = 1 << 0,
+       ECORE_IMF_INPUT_MODE_NUMERIC      = 1 << 1,
+       ECORE_IMF_INPUT_MODE_SPECIAL      = 1 << 2,
+       ECORE_IMF_INPUT_MODE_HEXA         = 1 << 3,
+       ECORE_IMF_INPUT_MODE_TELE         = 1 << 4,
+       ECORE_IMF_INPUT_MODE_FULL         = (ECORE_IMF_INPUT_MODE_ALPHA | ECORE_IMF_INPUT_MODE_NUMERIC | ECORE_IMF_INPUT_MODE_SPECIAL),
+       ECORE_IMF_INPUT_MODE_INVISIBLE    = 1 << 29,
+       ECORE_IMF_INPUT_MODE_AUTOCAP      = 1 << 30
+     } Ecore_IMF_Input_Mode;
+
+   struct _Ecore_IMF_Event_Preedit_Start
+     {
+       Ecore_IMF_Context *ctx;
+     };
+
+   struct _Ecore_IMF_Event_Preedit_End
+     {
+       Ecore_IMF_Context *ctx;
+     };
+
+   struct _Ecore_IMF_Event_Preedit_Changed
+     {
+       Ecore_IMF_Context *ctx;
+     };
+
+   struct _Ecore_IMF_Event_Commit
+     {
+       Ecore_IMF_Context *ctx;
+       char *str;
+     };
+
+   struct _Ecore_IMF_Event_Delete_Surrounding
+     {
+       Ecore_IMF_Context *ctx;
+       int offset;
+       int n_chars;
+     };
+
+   struct _Ecore_IMF_Event_Mouse_Down
+     {
+       int button;                             /**< The button which has been pressed */
+       struct {
+            int x, y;
+       } output;
+       struct {
+            int x, y;
+       } canvas;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       Ecore_IMF_Mouse_Flags        flags;     /**< The flags corresponding the mouse click (single, double or triple click) */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Mouse_Up
+     {
+       int button;                             /**< The button which has been pressed */
+       struct {
+            int x, y;
+       } output;
+       struct {
+            int x, y;
+       } canvas;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       Ecore_IMF_Mouse_Flags        flags;     /**< The flags corresponding the mouse click (single, double or triple click) */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Mouse_In
+     {
+       int buttons;
+       struct {
+            int x, y;
+       } output;
+       struct {
+            int x, y;
+       } canvas;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Mouse_Out
+     {
+       int buttons;
+       struct {
+            int x, y;
+       } output;
+       struct {
+            int x, y;
+       } canvas;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Mouse_Move
+     {
+       int buttons;
+       struct {
+            struct {
+                 int x, y;
+            } output;
+            struct {
+                 int x, y;
+            } canvas;
+       } cur, prev;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Mouse_Wheel
+     {
+       int direction;                         /* 0 = default up/down wheel */
+       int z;                                 /* ...,-2,-1 = down, 1,2,... = up */
+       struct {
+            int x, y;
+       } output;
+       struct {
+            int x, y;
+       } canvas;
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   struct _Ecore_IMF_Event_Key_Down
+     {
+       char                        *keyname;   /**< The string name of the key pressed */
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       const char                  *key;       /**< The logical key : (eg shift+1 == exclamation) */
+       const char                  *string;    /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
+       const char                  *compose;   /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+   };
+
+   struct _Ecore_IMF_Event_Key_Up
+     {
+       char                        *keyname;   /**< The string name of the key pressed */
+       Ecore_IMF_Keyboard_Modifiers modifiers; /**< The keyboard modifiers active when the event has been emitted */
+       Ecore_IMF_Keyboard_Locks     locks;     /**< The keyboard locks active when the event has been emitted */
+       const char                  *key;       /**< The logical key : (eg shift+1 == exclamation) */
+       const char                  *string;    /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
+       const char                  *compose;   /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
+       unsigned int                 timestamp; /**< The timestamp when the event occured */
+     };
+
+   union _Ecore_IMF_Event
+     {
+       Ecore_IMF_Event_Mouse_Down mouse_down;
+       Ecore_IMF_Event_Mouse_Up mouse_up;
+       Ecore_IMF_Event_Mouse_In mouse_in;
+       Ecore_IMF_Event_Mouse_Out mouse_out;
+       Ecore_IMF_Event_Mouse_Move mouse_move;
+       Ecore_IMF_Event_Mouse_Wheel mouse_wheel;
+       Ecore_IMF_Event_Key_Down key_down;
+       Ecore_IMF_Event_Key_Up key_up;
+     };
+
+   struct _Ecore_IMF_Context_Class
+     {
+       void (*add)                 (Ecore_IMF_Context *ctx);
+       void (*del)                 (Ecore_IMF_Context *ctx);
+       void (*client_window_set)   (Ecore_IMF_Context *ctx, void *window);
+       void (*client_canvas_set)   (Ecore_IMF_Context *ctx, void *canvas);
+       void (*show)                (Ecore_IMF_Context *ctx);
+       void (*hide)                (Ecore_IMF_Context *ctx);
+       void (*preedit_string_get)  (Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
+       void (*focus_in)            (Ecore_IMF_Context *ctx);
+       void (*focus_out)           (Ecore_IMF_Context *ctx);
+       void (*reset)               (Ecore_IMF_Context *ctx);
+       void (*cursor_position_set) (Ecore_IMF_Context *ctx, int cursor_pos);
+       void (*use_preedit_set)     (Ecore_IMF_Context *ctx, int use_preedit);
+       void (*input_mode_set)      (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
+       int  (*filter_event)        (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
+     };
+
+   struct _Ecore_IMF_Context_Info
+     {
+       const char *id;              /* ID */
+       const char *description;     /* Human readable description */
+       const char *default_locales; /* Languages for which this context is the default, separated by : */
+       const char *canvas_type;     /* The canvas type used by the input method. Eg.: evas */
+       int         canvas_required; /* Whether the canvas usage is required for this input method */
+     };
+
+   EAPI int                           ecore_imf_init(void);
+   EAPI int                           ecore_imf_shutdown(void);
+
+   EAPI Ecore_List                   *ecore_imf_context_available_ids_get(void);
+   EAPI Ecore_List                   *ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type);
+   EAPI const char                   *ecore_imf_context_default_id_get(void);
+   EAPI const char                   *ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type);
+   EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const char *id);
+
+   EAPI Ecore_IMF_Context            *ecore_imf_context_add(const char *id);
+   EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_del(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window);
+   EAPI void                          ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas);
+   EAPI void                          ecore_imf_context_show(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_hide(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cursor_pos);
+   EAPI void                          ecore_imf_context_focus_in(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_focus_out(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_reset(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos);
+   EAPI void                          ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, int use_preedit);
+   EAPI void                          ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, int (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data);
+   EAPI void                          ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
+   EAPI Ecore_IMF_Input_Mode          ecore_imf_context_input_mode_get(Ecore_IMF_Context *ctx);
+   EAPI int                           ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
+
+   /* plugin specific functions */
+   EAPI Ecore_IMF_Context            *ecore_imf_context_new(const Ecore_IMF_Context_Class *ctxc);
+   EAPI void                          ecore_imf_context_data_set(Ecore_IMF_Context *ctx, void *data);
+   EAPI void                         *ecore_imf_context_data_get(Ecore_IMF_Context *ctx);
+   EAPI int                           ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
+   EAPI void                          ecore_imf_context_preedit_start_event_add(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_preedit_end_event_add(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_preedit_changed_event_add(Ecore_IMF_Context *ctx);
+   EAPI void                          ecore_imf_context_commit_event_add(Ecore_IMF_Context *ctx, const char *str);
+   EAPI void                          ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int offset, int n_chars);
+
+   /* The following entry points must be exported by each input method module
+    */
+
+   /*
+    * int                imf_module_init   (const Ecore_IMF_Context_Info **info);
+    * void               imf_module_exit   (void);
+    * Ecore_IMF_Context *imf_module_create (void);
+    */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_imf/Makefile.am b/src/lib/ecore_imf/Makefile.am
new file mode 100644 (file)
index 0000000..f13a264
--- /dev/null
@@ -0,0 +1,31 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_IMF
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-DPACKAGE_LIB_DIR=\"$(libdir)\"
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+lib_LTLIBRARIES = libecore_imf.la
+include_HEADERS = \
+Ecore_IMF.h
+
+libecore_imf_la_SOURCES = \
+ecore_imf.c \
+ecore_imf_context.c \
+ecore_imf_module.c \
+ecore_imf_private.h
+
+libecore_imf_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+libecore_imf_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+endif
+
+EXTRA_DIST = \
+Ecore_IMF.h \
+ecore_imf.c \
+ecore_imf_context.c \
+ecore_imf_module.c \
+ecore_imf_private.h
diff --git a/src/lib/ecore_imf/ecore_imf.c b/src/lib/ecore_imf/ecore_imf.c
new file mode 100644 (file)
index 0000000..caf9671
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "config.h"
+
+#include "Ecore_IMF.h"
+#include "ecore_imf_private.h"
+
+#include <Ecore.h>
+
+EAPI int ECORE_IMF_EVENT_PREEDIT_START = 0;
+EAPI int ECORE_IMF_EVENT_PREEDIT_END = 0;
+EAPI int ECORE_IMF_EVENT_PREEDIT_CHANGED = 0;
+EAPI int ECORE_IMF_EVENT_COMMIT = 0;
+EAPI int ECORE_IMF_EVENT_DELETE_SURROUNDING = 0;
+
+static int init_count = 0;
+
+/**
+ * @defgroup Ecore_IMF_Lib_Group Ecore Input Method Library Functions
+ *
+ * Utility functions that set up and shut down the Ecore Input Method
+ * library.
+ */
+
+/**
+ * Initialises the Ecore_IMF library.
+ * @return  Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_IMF_Lib_Group
+ */
+EAPI int
+ecore_imf_init(void)
+{
+   if (++init_count != 1) return init_count;
+
+   ecore_init();
+   ecore_imf_module_init();
+
+   ECORE_IMF_EVENT_PREEDIT_START = ecore_event_type_new();
+   ECORE_IMF_EVENT_PREEDIT_END = ecore_event_type_new();
+   ECORE_IMF_EVENT_PREEDIT_CHANGED = ecore_event_type_new();
+   ECORE_IMF_EVENT_COMMIT = ecore_event_type_new();
+   ECORE_IMF_EVENT_DELETE_SURROUNDING = ecore_event_type_new();
+
+   return init_count;
+}
+
+/**
+ * Shuts down the Ecore_IMF library.
+ * @return  Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_IMF_Lib_Group
+ */
+EAPI int
+ecore_imf_shutdown(void)
+{
+   if (--init_count != 0) return init_count;
+
+   ecore_shutdown();
+   ecore_imf_module_shutdown();
+
+   return init_count;
+}
diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c
new file mode 100644 (file)
index 0000000..83f1fd4
--- /dev/null
@@ -0,0 +1,805 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <locale.h>
+#include <stdlib.h>
+
+#include "config.h"
+
+#include "Ecore_IMF.h"
+#include "ecore_imf_private.h"
+
+#include <Ecore.h>
+
+/**
+ * @defgroup Ecore_IMF_Context_Group Ecore Input Method Context Functions
+ *
+ * Functions that operate on Ecore Input Method Context objects.
+ */
+
+/**
+ * Get the list of the available Input Method Context ids.
+ *
+ * Note that the caller is responsible for freeing the Ecore_List
+ * when finished with it. There is no need to finish the list strings.
+ *
+ * @return Return an Ecore_List of strings;
+ *         on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI Ecore_List *
+ecore_imf_context_available_ids_get(void)
+{
+   return ecore_imf_module_context_ids_get();
+}
+
+EAPI Ecore_List *
+ecore_imf_context_available_ids_by_canvas_type_get(const char *canvas_type)
+{
+   return ecore_imf_module_context_ids_by_canvas_type_get(canvas_type);
+}
+
+/*
+ * Match @locale against @against.
+ *
+ * 'en_US' against 'en_US'       => 4
+ * 'en_US' against 'en'          => 3
+ * 'en', 'en_UK' against 'en_US' => 2
+ *  all locales, against '*'     => 1
+ */
+static int
+_ecore_imf_context_match_locale(const char *locale, const char *against, int against_len)
+{
+  if (strcmp(against, "*") == 0)
+    return 1;
+
+  if (strcasecmp(locale, against) == 0)
+    return 4;
+
+  if (strncasecmp(locale, against, 2) == 0)
+    return (against_len == 2) ? 3 : 2;
+
+  return 0;
+}
+
+/**
+ * Get the id of the default Input Method Context.
+ * The id may to used to create a new instance of an Input Method
+ * Context object.
+ *
+ * @return Return a string containing the id of the default Input
+ *         Method Context; on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI const char *
+ecore_imf_context_default_id_get(void)
+{
+   return ecore_imf_context_default_id_by_canvas_type_get(NULL);
+}
+
+EAPI const char *
+ecore_imf_context_default_id_by_canvas_type_get(const char *canvas_type)
+{
+   const char *id;
+   Ecore_List *modules;
+   Ecore_IMF_Module *module;
+   char *locale;
+   char *tmp;
+   int best_goodness = 0;
+
+   id = getenv("ECORE_IMF_MODULE");
+   if (id)
+     {
+       if (strcmp(id, "none") == 0) return NULL;
+       if (ecore_imf_module_get(id)) return id;
+     }
+
+   modules = ecore_imf_module_available_get();
+   if (!modules) return NULL;
+
+   locale = setlocale(LC_CTYPE, NULL);
+   if (!locale) return NULL;
+
+   locale = strdup(locale);
+
+   tmp = strchr(locale, '.');
+   if (tmp) *tmp = '\0';
+   tmp = strchr(locale, '@');
+   if (tmp) *tmp = '\0';
+
+   id = NULL;
+
+   ecore_list_first_goto(modules);
+   while ((module = ecore_list_next(modules)))
+     {
+       if (canvas_type &&
+           strcmp(module->info->canvas_type, canvas_type) == 0)
+         continue;
+
+       const char *p = module->info->default_locales;
+       while (p)
+         {
+            const char *q = strchr(p, ':');
+            int goodness = _ecore_imf_context_match_locale(locale, p, q ? q - p : strlen (p));
+
+             if (goodness > best_goodness)
+               {
+                  id = module->info->id;
+                  best_goodness = goodness;
+               }
+
+             p = q ? q + 1 : NULL;
+         }
+     }
+   ecore_list_destroy(modules);
+
+   free(locale);
+   return id;
+}
+
+/**
+ * Retrieve the info for the Input Method Context with @p id.
+ *
+ * @param id The Input Method Context id to query for.
+ * @return Return a #Ecore_IMF_Context_Info for the Input Method Context with @p id;
+ *         on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI const Ecore_IMF_Context_Info *
+ecore_imf_context_info_by_id_get(const char *id)
+{
+   Ecore_IMF_Module *module;
+
+   if (!id) return NULL;
+   module = ecore_imf_module_get(id);
+   if (!module) return NULL;
+   return module->info;
+}
+
+/**
+ * Create a new Input Method Context defined by the given id.
+ *
+ * @param id The Input Method Context id.
+ * @return A newly allocated Input Method Context;
+ *         on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI Ecore_IMF_Context *
+ecore_imf_context_add(const char *id)
+{
+   Ecore_IMF_Context *ctx;
+
+   if (!id) return NULL;
+   ctx = ecore_imf_module_context_create(id);
+   if (!ctx || !ctx->klass) return NULL;
+   if (ctx->klass->add) ctx->klass->add(ctx);
+   /* default use_preedit is 1, so let's make sure it's
+    * set on the immodule */
+   ecore_imf_context_use_preedit_set(ctx, 1);
+   /* default input_mode is ECORE_IMF_INPUT_MODE_FULL, so let's make sure it's
+    * set on the immodule */
+   ecore_imf_context_input_mode_set(ctx, ECORE_IMF_INPUT_MODE_FULL);
+   return ctx;
+}
+
+/**
+ * Retrieve the info for the given Input Method Context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return Return a #Ecore_IMF_Context_Info for the given Input Method Context;
+ *         on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI const Ecore_IMF_Context_Info *
+ecore_imf_context_info_get(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_info_get");
+       return NULL;
+     }
+   return ctx->module->info;
+}
+
+/**
+ * Delete the given Input Method Context and free its memory.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_del(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_del");
+       return;
+     }
+   if (ctx->klass->del) ctx->klass->del(ctx);
+   ECORE_MAGIC_SET(ctx, ECORE_MAGIC_NONE);
+   free(ctx);
+}
+
+/**
+ * Set the client window for the Input Method Context; this is the
+ * Ecore_X_Window when using X11, Ecore_Win32_Window when using Win32, etc.
+ * This window is used in order to correctly position status windows, and may
+ * also be used for purposes internal to the Input Method Context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param window The client window. This may be NULL to indicate
+ *               that the previous client window no longer exists.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_client_window_set(Ecore_IMF_Context *ctx, void *window)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_client_window_set");
+       return;
+     }
+   if (ctx->klass->client_window_set) ctx->klass->client_window_set(ctx, window);
+}
+
+/**
+ * Set the client canvas for the Input Method Context; this is the
+ * canvas in which the input appears.
+ * The canvas type can be determined by using the context canvas type.
+ * Actually only canvas with type "evas" (Evas *) is supported.
+ * This canvas may be used in order to correctly position status windows, and may
+ * also be used for purposes internal to the Input Method Context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param canas The client canvas. This may be NULL to indicate
+ *              that the previous client canvas no longer exists.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_client_canvas_set(Ecore_IMF_Context *ctx, void *canvas)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_client_window_set");
+       return;
+     }
+   if (ctx->klass->client_canvas_set) ctx->klass->client_canvas_set(ctx, canvas);
+}
+
+/**
+ * Ask the Input Method Context to show itself.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_show(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_show");
+       return;
+     }
+   if (ctx->klass->show) ctx->klass->show(ctx);
+}
+
+/**
+ * Ask the Input Method Context to hide itself.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_hide(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_hide");
+       return;
+     }
+   if (ctx->klass->hide) ctx->klass->hide(ctx);
+}
+
+/*
+ * Retrieve the current preedit string and cursor position
+ * for the Input Method Context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param str Location to store the retrieved string. The
+ *            string retrieved must be freed with free().
+ * @param cursor_pos Location to store position of cursor (in characters)
+ *                   within the preedit string.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_preedit_string_get(Ecore_IMF_Context *ctx, char **str, int *cursor_pos)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_preedit_string_get");
+       return;
+     }
+   if (ctx->klass->preedit_string_get)
+     ctx->klass->preedit_string_get(ctx, str, cursor_pos);
+   else
+     {
+       if (str) *str = strdup("");
+       if (cursor_pos) *cursor_pos = 0;
+     }
+}
+
+/**
+ * Notify the Input Method Context that the widget to which its
+ * correspond has gained focus.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_focus_in(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_focus_in");
+       return;
+     }
+   if (ctx->klass->focus_in) ctx->klass->focus_in(ctx);
+}
+
+/**
+ * Notify the Input Method Context that the widget to which its
+ * correspond has lost focus.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_focus_out(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_focus_out");
+       return;
+     }
+   if (ctx->klass->focus_out) ctx->klass->focus_out(ctx);
+}
+
+/**
+ * Notify the Input Method Context that a change such as a
+ * change in cursor position has been made. This will typically
+ * cause the Input Method Context to clear the preedit state.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_reset(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_reset");
+       return;
+     }
+   if (ctx->klass->reset) ctx->klass->reset(ctx);
+}
+
+/**
+ * Notify the Input Method Context that a change in the cursor
+ * position has been made.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param cursor_pos New cursor position in characters.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_cursor_position_set(Ecore_IMF_Context *ctx, int cursor_pos)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_cursor_position_set");
+       return;
+     }
+   if (ctx->klass->cursor_position_set) ctx->klass->cursor_position_set(ctx, cursor_pos);
+}
+
+/**
+ * Set whether the IM context should use the preedit string
+ * to display feedback. If @use_preedit is 0 (default
+ * is 1), then the IM context may use some other method to display
+ * feedback, such as displaying it in a child of the root window.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param use_preedit Whether the IM context should use the preedit string.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_use_preedit_set(Ecore_IMF_Context *ctx, int use_preedit)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_use_preedit_set");
+       return;
+     }
+   if (ctx->klass->use_preedit_set) ctx->klass->use_preedit_set(ctx, use_preedit);
+}
+
+/**
+ * Set the callback to be used on get_surrounding request.
+ *
+ * This callback will be called when the Input Method Context
+ * module requests the surrounding context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param func The callback to be called.
+ * @param data The data pointer to be passed to @p func
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_retrieve_surrounding_callback_set(Ecore_IMF_Context *ctx, int (*func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos), const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_retrieve_surrounding_callback_set");
+       return;
+     }
+
+   ctx->retrieve_surrounding_func = func;
+   ctx->retrieve_surrounding_data = (void *) data;
+}
+
+/**
+ * Set the input mode used by the Ecore Input Context.
+ *
+ * The input mode can be one of the input modes defined in
+ * #Ecore_IMF_Input_Mode. The default input mode is
+ * ECORE_IMF_INPUT_MODE_FULL.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param input_mode The input mode to be used by @p ctx.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI void
+ecore_imf_context_input_mode_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode input_mode)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_input_mode_set");
+       return;
+     }
+   if (ctx->klass->input_mode_set) ctx->klass->input_mode_set(ctx, input_mode);
+   ctx->input_mode = input_mode;
+}
+
+/**
+ * Get the input mode being used by the Ecore Input Context.
+ *
+ * See @ref ecore_imf_context_input_mode_set for more details.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return The input mode being used by @p ctx.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI Ecore_IMF_Input_Mode
+ecore_imf_context_input_mode_get(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_input_mode_set");
+       return 0;
+     }
+   return ctx->input_mode;
+}
+
+/**
+ * Allow an Ecore Input Context to internally handle an event.
+ * If this function returns 1, then no further processing
+ * should be done for this event.
+ *
+ * Input methods must be able to accept all types of events (simply
+ * returning 0 if the event was not handled), but there is no
+ * obligation of any events to be submitted to this function.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param type The type of event defined by #Ecore_IMF_Event_Type.
+ * @param event The event itself.
+ * @return 1 if the event was handled; otherwise 0.
+ * @ingroup Ecore_IMF_Context_Group
+ */
+EAPI int
+ecore_imf_context_filter_event(Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_filter_event");
+       return 0;
+     }
+   if (ctx->klass->filter_event) return ctx->klass->filter_event(ctx, type, event);
+   return 0;
+}
+
+/**
+ * @defgroup Ecore_IMF_Context_Module_Group Ecore Input Method Context Module Functions
+ *
+ * Functions that should be used by Ecore Input Method Context modules.
+ */
+
+/**
+ * Creates a new Input Method Context with klass specified by @p ctxc.
+ *
+ * This method should be used by modules implementing the Input
+ * Method Context interface.
+ *
+ * @param ctxc An #Ecore_IMF_Context_Class.
+ * @return A new #Ecore_IMF_Context; on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI Ecore_IMF_Context *
+ecore_imf_context_new(const Ecore_IMF_Context_Class *ctxc)
+{
+   Ecore_IMF_Context *ctx;
+
+   if (!ctxc) return NULL;
+   ctx = malloc(sizeof(Ecore_IMF_Context));
+   if (!ctx) return NULL;
+   ECORE_MAGIC_SET(ctx, ECORE_MAGIC_CONTEXT);
+   ctx->klass = ctxc;
+   ctx->data = NULL;
+   ctx->retrieve_surrounding_func = NULL;
+   ctx->retrieve_surrounding_data = NULL;
+   return ctx;
+}
+
+/**
+ * Set the Input Method Context specific data.
+ *
+ * Note that this method should be used by modules to set
+ * the Input Method Context specific data and it's not meant to
+ * be used by applications to store application specific data.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param data The Input Method Context specific data.
+ * @return A new #Ecore_IMF_Context; on failure it returns NULL.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_data_set(Ecore_IMF_Context *ctx, void *data)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_data_set");
+       return;
+     }
+   ctx->data = data;
+}
+
+/**
+ * Get the Input Method Context specific data.
+ *
+ * See @ref ecore_imf_context_data_set for more details.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return The Input Method Context specific data.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void *ecore_imf_context_data_get(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_data_get");
+       return NULL;
+     }
+   return ctx->data;
+}
+
+/**
+ * Retrieve context around insertion point.
+ *
+ * This function is implemented by calling the
+ * Ecore_IMF_Context::retrieve_surrounding_func (
+ * set using #ecore_imf_context_retrieve_surrounding_callback_set).
+ *
+ * There is no obligation for a widget to respond to the
+ * ::retrieve_surrounding_func, so input methods must be prepared
+ * to function without context.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param text Location to store a UTF-8 encoded string of text
+ *             holding context around the insertion point.
+ *             If the function returns 1, then you must free
+ *             the result stored in this location with free().
+ * @param cursor_pos Location to store the position in characters of
+ *                   the insertion cursor within @text.
+ * @return 1 if surrounding text was provided; otherwise 0.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI int
+ecore_imf_context_surrounding_get(Ecore_IMF_Context *ctx, char **text, int *cursor_pos)
+{
+   int result = 0;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_surrounding_get");
+       return 0;
+     }
+
+   if (ctx->retrieve_surrounding_func)
+     {
+       result = ctx->retrieve_surrounding_func(ctx->retrieve_surrounding_data, ctx, text, cursor_pos);
+       if (!result)
+         {
+            if (text) *text = NULL;
+            if (cursor_pos) *cursor_pos = 0;
+         }
+     }
+   return result;
+}
+
+static void
+_ecore_imf_event_free_preedit(void *data __UNUSED__, void *event)
+{
+   free(event);
+}
+
+/**
+ * Adds ECORE_IMF_EVENT_PREEDIT_START to the event queue.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_preedit_start_event_add(Ecore_IMF_Context *ctx)
+{
+   Ecore_IMF_Event_Commit *ev;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_preedit_start_event_add");
+       return;
+     }
+
+   ev = malloc(sizeof(Ecore_IMF_Event_Preedit_Start));
+   ev->ctx = ctx;
+   ecore_event_add(ECORE_IMF_EVENT_PREEDIT_START,
+                  ev, _ecore_imf_event_free_preedit, NULL);
+}
+
+/**
+ * Adds ECORE_IMF_EVENT_PREEDIT_END to the event queue.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_preedit_end_event_add(Ecore_IMF_Context *ctx)
+{
+   Ecore_IMF_Event_Commit *ev;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_preedit_end_event_add");
+       return;
+     }
+
+   ev = malloc(sizeof(Ecore_IMF_Event_Preedit_End));
+   ev->ctx = ctx;
+   ecore_event_add(ECORE_IMF_EVENT_PREEDIT_END,
+                  ev, _ecore_imf_event_free_preedit, NULL);
+}
+
+/**
+ * Adds ECORE_IMF_EVENT_PREEDIT_CHANGED to the event queue.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_preedit_changed_event_add(Ecore_IMF_Context *ctx)
+{
+   Ecore_IMF_Event_Commit *ev;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_preedit_changed_event_add");
+       return;
+     }
+
+   ev = malloc(sizeof(Ecore_IMF_Event_Preedit_Changed));
+   ev->ctx = ctx;
+   ecore_event_add(ECORE_IMF_EVENT_PREEDIT_CHANGED,
+                  ev, _ecore_imf_event_free_preedit, NULL);
+}
+
+static void
+_ecore_imf_event_free_commit(void *data __UNUSED__, void *event)
+{
+   Ecore_IMF_Event_Commit *ev;
+
+   ev = event;
+   if (ev->str) free(ev->str);
+   free(ev);
+}
+
+/**
+ * Adds ECORE_IMF_EVENT_COMMIT to the event queue.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param str The committed string.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_commit_event_add(Ecore_IMF_Context *ctx, const char *str)
+{
+   Ecore_IMF_Event_Commit *ev;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_commit_event_add");
+       return;
+     }
+
+   ev = malloc(sizeof(Ecore_IMF_Event_Commit));
+   ev->ctx = ctx;
+   ev->str = str ? strdup(str) : NULL;
+   ecore_event_add(ECORE_IMF_EVENT_COMMIT,
+                  ev, _ecore_imf_event_free_commit, NULL);
+
+}
+
+static void
+_ecore_imf_event_free_delete_surrounding(void *data __UNUSED__, void *event)
+{
+   free(event);
+}
+
+/**
+ * Adds ECORE_IMF_EVENT_DELETE_SURROUNDING to the event queue.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param offset The start offset of surrounding to be deleted.
+ * @param n_chars The number of characters to be deleted.
+ * @ingroup Ecore_IMF_Context_Module_Group
+ */
+EAPI void
+ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int offset, int n_chars)
+{
+   Ecore_IMF_Event_Delete_Surrounding *ev;
+
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+       ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                        "ecore_imf_context_delete_surrounding_event_add");
+       return;
+     }
+
+   ev = malloc(sizeof(Ecore_IMF_Event_Delete_Surrounding));
+   ev->ctx = ctx;
+   ev->offset = offset;
+   ev->n_chars = n_chars;
+   ecore_event_add(ECORE_IMF_EVENT_DELETE_SURROUNDING,
+                  ev, _ecore_imf_event_free_delete_surrounding, NULL);
+}
diff --git a/src/lib/ecore_imf/ecore_imf_module.c b/src/lib/ecore_imf/ecore_imf_module.c
new file mode 100644 (file)
index 0000000..d6b0be1
--- /dev/null
@@ -0,0 +1,249 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "config.h"
+
+#include "ecore_imf_private.h"
+
+static void _ecore_imf_module_load_all(void);
+static void _ecore_imf_module_append(Ecore_Plugin *plugin, const Ecore_IMF_Context_Info *info, Ecore_IMF_Context *(*imf_module_create)(void));
+static void _ecore_imf_module_free(Ecore_IMF_Module *module);
+static int _ecore_imf_modules_exists(const char *ctx_id);
+
+static Ecore_Path_Group *ecore_imf_modules_path = NULL;
+static Ecore_Hash *modules = NULL;
+
+void
+ecore_imf_module_init(void)
+{
+   char pathname[PATH_MAX];
+   const char *homedir;
+
+   ecore_imf_modules_path = ecore_path_group_new();
+   snprintf(pathname, sizeof(pathname), "%s/ecore/immodules/",
+           PACKAGE_LIB_DIR);
+   ecore_path_group_add(ecore_imf_modules_path, pathname);
+
+   homedir = getenv("HOME");
+   if (homedir)
+     {
+       snprintf(pathname, sizeof(pathname), "%s/.ecore/immodules/",
+                homedir);
+       ecore_path_group_add(ecore_imf_modules_path, pathname);
+     }
+
+   modules = NULL;
+   _ecore_imf_module_load_all();
+}
+
+void
+ecore_imf_module_shutdown(void)
+{
+   if (modules)
+     {
+       ecore_hash_destroy(modules);
+       modules = NULL;
+     }
+
+   ecore_path_group_del(ecore_imf_modules_path);
+   ecore_imf_modules_path = NULL;
+}
+
+Ecore_List *
+ecore_imf_module_available_get(void)
+{
+   Ecore_List *values;
+   unsigned int i = 0;
+
+   if (!modules) return NULL;
+
+   /* ecore_hash_values() */
+   values = ecore_list_new();
+   while (i < ecore_prime_table[modules->size])
+     {
+       if (modules->buckets[i])
+         {
+            Ecore_Hash_Node *node;
+
+            for (node = modules->buckets[i]; node; node = node->next)
+              ecore_list_append(values, node->value);
+         }
+       i++;
+     }
+   ecore_list_first_goto(values);
+
+   return values;
+}
+
+Ecore_IMF_Module *
+ecore_imf_module_get(const char *ctx_id)
+{
+   if (!modules) return NULL;
+   return ecore_hash_get(modules, ctx_id);
+}
+
+Ecore_IMF_Context *
+ecore_imf_module_context_create(const char *ctx_id)
+{
+   Ecore_IMF_Module *module;
+   Ecore_IMF_Context *ctx = NULL;
+
+   if (!modules) return NULL;
+   module = ecore_hash_get(modules, ctx_id);
+   if (module)
+     {
+       ctx = module->create();
+       if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+         {
+            ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                             "ecore_imf_module_context_create");
+            return NULL;
+         }
+       ctx->module = module;
+     }
+   return ctx;
+}
+
+Ecore_List *
+ecore_imf_module_context_ids_get(void)
+{
+   if (!modules) return NULL;
+   return ecore_hash_keys(modules);
+}
+
+Ecore_List *
+ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
+{
+   Ecore_List *values;
+   unsigned int i = 0;
+
+   if (!modules) return NULL;
+
+   if (!canvas_type)
+     return ecore_imf_module_context_ids_get();
+
+   values = ecore_list_new();
+   while (i < ecore_prime_table[modules->size])
+     {
+       if (modules->buckets[i])
+         {
+            Ecore_Hash_Node *node;
+
+            for (node = modules->buckets[i]; node; node = node->next)
+              {
+                 Ecore_IMF_Module *module = node->value;
+                 if (strcmp(module->info->canvas_type, canvas_type) == 0)
+                   ecore_list_append(values, (void *) module->info->id);
+              }
+         }
+       i++;
+     }
+   ecore_list_first_goto(values);
+
+   return values;
+}
+
+static void
+_ecore_imf_module_load_all(void)
+{
+   Ecore_List *avail;
+   char *filename;
+   Ecore_Plugin *plugin;
+   const Ecore_IMF_Context_Info *info = NULL;
+   int (*imf_module_init)(const Ecore_IMF_Context_Info **info);
+   Ecore_IMF_Context *(*imf_module_create)(void);
+
+   avail = ecore_plugin_available_get(ecore_imf_modules_path);
+   if (!avail) return;
+
+   ecore_list_first_goto(avail);
+   while ((filename = ecore_list_next(avail)))
+     {
+       plugin = ecore_plugin_load(ecore_imf_modules_path, filename, NULL);
+       if (!plugin)
+         {
+            fprintf(stderr, "** ecore_imf: Error loading input method plugin %s!\n",
+                    filename);
+            continue;
+         }
+
+       imf_module_init = ecore_plugin_symbol_get(plugin, "imf_module_init");
+       if (!imf_module_init || !imf_module_init(&info) || !info)
+         {
+            fprintf(stderr, "** ecore_imf: Error initializing input method plugin %s! "
+                            "'imf_module_init' is missing or failed to run!",
+                    filename);
+            ecore_plugin_unload(plugin);
+            continue;
+         }
+
+       if (_ecore_imf_modules_exists(info->id))
+         {
+            fprintf(stderr, "** ecore_imf: Error loading input method plugin %s! "
+                            "Plugin with id='%s' already exists!",
+                    filename, info->id);
+            ecore_plugin_unload(plugin);
+            continue;
+         }
+
+       imf_module_create = ecore_plugin_symbol_get(plugin, "imf_module_create");
+       if (!imf_module_create)
+         {
+            fprintf(stderr, "** ecore_imf: Error setting up input method plugin %s! "
+                            "'imf_module_create' is missing!",
+                    filename);
+            ecore_plugin_unload(plugin);
+            continue;
+         }
+
+       _ecore_imf_module_append(plugin, info, imf_module_create);
+     }
+
+   ecore_list_destroy(avail);
+}
+
+static void
+_ecore_imf_module_append(Ecore_Plugin *plugin,
+                       const Ecore_IMF_Context_Info *info,
+                       Ecore_IMF_Context *(*imf_module_create)(void))
+{
+   Ecore_IMF_Module *module;
+
+   if (!modules)
+     {
+       modules = ecore_hash_new(ecore_str_hash, ecore_str_compare);
+       ecore_hash_free_key_cb_set(modules, free);
+       ecore_hash_free_value_cb_set(modules, (Ecore_Free_Cb) _ecore_imf_module_free);
+     }
+
+   module = malloc(sizeof(Ecore_IMF_Module));
+   module->plugin = plugin;
+   module->info = info;
+   /* cache imf_module_create as it may be used several times */
+   module->create = imf_module_create;
+
+   ecore_hash_set(modules, strdup(info->id), module);
+}
+
+static void
+_ecore_imf_module_free(Ecore_IMF_Module *module)
+{
+   int (*imf_module_exit)(void);
+
+   imf_module_exit = ecore_plugin_symbol_get(module->plugin, "imf_module_exit");
+   if (imf_module_exit) imf_module_exit();
+   ecore_plugin_unload(module->plugin);
+   free(module);
+}
+
+static int
+_ecore_imf_modules_exists(const char *ctx_id)
+{
+   if (!modules) return 0;
+   return (ecore_hash_get(modules, ctx_id) != NULL);
+}
diff --git a/src/lib/ecore_imf/ecore_imf_private.h b/src/lib/ecore_imf/ecore_imf_private.h
new file mode 100644 (file)
index 0000000..dd951e2
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ECORE_IMF_PRIVATE_H
+#define _ECORE_IMF_PRIVATE_H
+
+#include "Ecore_IMF.h"
+
+#include "ecore_private.h"
+
+#define ECORE_MAGIC_CONTEXT 0x56c1b39a
+
+typedef struct _Ecore_IMF_Module Ecore_IMF_Module;
+
+struct _Ecore_IMF_Context
+{
+   ECORE_MAGIC;
+   const Ecore_IMF_Module        *module;
+   const Ecore_IMF_Context_Class *klass;
+   void                          *data;
+   int                            input_mode;
+   int                          (*retrieve_surrounding_func)(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
+   void                          *retrieve_surrounding_data;
+};
+
+struct _Ecore_IMF_Module
+{
+   Ecore_Plugin                 *plugin;
+   const Ecore_IMF_Context_Info *info;
+   Ecore_IMF_Context            *(*create)(void);
+};
+
+void               ecore_imf_module_init(void);
+void               ecore_imf_module_shutdown(void);
+Ecore_List        *ecore_imf_module_available_get(void);
+Ecore_IMF_Module  *ecore_imf_module_get(const char *ctx_id);
+Ecore_IMF_Context *ecore_imf_module_context_create(const char *ctx_id);
+Ecore_List        *ecore_imf_module_context_ids_get(void);
+Ecore_List        *ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type);
+
+#endif
diff --git a/src/lib/ecore_imf_evas/.cvsignore b/src/lib/ecore_imf_evas/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h b/src/lib/ecore_imf_evas/Ecore_IMF_Evas.h
new file mode 100644 (file)
index 0000000..ea99324
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef _ECORE_IMF_EVAS_H
+#define _ECORE_IMF_EVAS_H
+
+#include <Ecore_IMF.h>
+#include <Evas.h>
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_IMF_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+   EAPI void ecore_imf_evas_event_mouse_in_wrap(Evas_Event_Mouse_In *evas_event, Ecore_IMF_Event_Mouse_In *imf_event);
+   EAPI void ecore_imf_evas_event_mouse_out_wrap(Evas_Event_Mouse_Out *evas_event, Ecore_IMF_Event_Mouse_Out *imf_event);
+   EAPI void ecore_imf_evas_event_mouse_move_wrap(Evas_Event_Mouse_Move *evas_event, Ecore_IMF_Event_Mouse_Move *imf_event);
+   EAPI void ecore_imf_evas_event_mouse_down_wrap(Evas_Event_Mouse_Down *evas_event, Ecore_IMF_Event_Mouse_Down *imf_event);
+   EAPI void ecore_imf_evas_event_mouse_up_wrap(Evas_Event_Mouse_Up *evas_event, Ecore_IMF_Event_Mouse_Up *imf_event);
+   EAPI void ecore_imf_evas_event_mouse_wheel_wrap(Evas_Event_Mouse_Wheel *evas_event, Ecore_IMF_Event_Mouse_Wheel *imf_event);
+   EAPI void ecore_imf_evas_event_key_down_wrap(Evas_Event_Key_Down *evas_event, Ecore_IMF_Event_Key_Down *imf_event);
+   EAPI void ecore_imf_evas_event_key_up_wrap(Evas_Event_Key_Up *evas_event, Ecore_IMF_Event_Key_Up *imf_event);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_imf_evas/Makefile.am b/src/lib/ecore_imf_evas/Makefile.am
new file mode 100644 (file)
index 0000000..d41fc2d
--- /dev/null
@@ -0,0 +1,28 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_IMF_EVAS
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_imf \
+@EVAS_CFLAGS@
+
+lib_LTLIBRARIES = libecore_imf_evas.la
+include_HEADERS = \
+Ecore_IMF_Evas.h
+
+libecore_imf_evas_la_SOURCES = \
+ecore_imf_evas.c
+
+libecore_imf_evas_la_LIBADD = \
+$(top_builddir)/src/lib/ecore_imf/libecore_imf.la \
+@EVAS_LIBS@
+
+libecore_imf_evas_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore_imf/libecore_imf.la
+
+libecore_imf_evas_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+endif
+
+EXTRA_DIST = \
+Ecore_IMF_Evas.h \
+ecore_imf_evas.c
diff --git a/src/lib/ecore_imf_evas/ecore_imf_evas.c b/src/lib/ecore_imf_evas/ecore_imf_evas.c
new file mode 100644 (file)
index 0000000..a60a5b0
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore_IMF_Evas.h"
+
+/**
+ * @defgroup Ecore_IMF_Evas_Group Ecore Input Method Context Evas Helper Functions
+ *
+ * Helper functions to make it easy to use Evas with Ecore_IMF.
+ */
+
+static char *_ecore_imf_evas_event_empty = "";
+
+/* Converts the Evas modifiers to Ecore_IMF keyboard modifiers */
+static void
+_ecore_imf_evas_event_modifiers_wrap(Evas_Modifier *evas_modifiers,
+                                    Ecore_IMF_Keyboard_Modifiers *imf_keyboard_modifiers)
+{
+   if (!evas_modifiers || !imf_keyboard_modifiers)
+     return;
+
+   *imf_keyboard_modifiers = ECORE_IMF_KEYBOARD_MODIFIER_NONE;
+   if (evas_key_modifier_is_set(evas_modifiers, "Control"))
+     *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_CTRL;
+   if (evas_key_modifier_is_set(evas_modifiers, "Alt"))
+     *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_ALT;
+   if (evas_key_modifier_is_set(evas_modifiers, "Shift"))
+     *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_SHIFT;
+   if (evas_key_modifier_is_set(evas_modifiers, "Super") || evas_key_modifier_is_set(evas_modifiers, "Hyper"))
+     *imf_keyboard_modifiers |= ECORE_IMF_KEYBOARD_MODIFIER_WIN;
+}
+
+/* Converts the Evas locks to Ecore_IMF keyboard locks */
+static void
+_ecore_imf_evas_event_locks_wrap(Evas_Lock *evas_locks,
+                                Ecore_IMF_Keyboard_Locks *imf_keyboard_locks)
+{
+   if (!evas_locks || !imf_keyboard_locks)
+     return;
+
+   *imf_keyboard_locks = ECORE_IMF_KEYBOARD_LOCK_NONE;
+   if (evas_key_lock_is_set(evas_locks, "Num_Lock"))
+     *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_NUM;
+   if (evas_key_lock_is_set(evas_locks, "Caps_Lock"))
+     *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_CAPS;
+   if (evas_key_lock_is_set(evas_locks, "Scroll_Lock"))
+     *imf_keyboard_locks |= ECORE_IMF_KEYBOARD_LOCK_SCROLL;
+}
+
+/* Converts the Evas mouse flags to Ecore_IMF mouse flags */
+static void
+_ecore_imf_evas_event_mouse_flags_wrap(Evas_Button_Flags evas_flags,
+                                      Ecore_IMF_Mouse_Flags *imf_flags)
+{
+   if (!imf_flags)
+     return;
+
+   *imf_flags = ECORE_IMF_MOUSE_NONE;
+   if (evas_flags & EVAS_BUTTON_DOUBLE_CLICK)
+     *imf_flags |= ECORE_IMF_MOUSE_DOUBLE_CLICK;
+   if (evas_flags & EVAS_BUTTON_TRIPLE_CLICK)
+     *imf_flags |= ECORE_IMF_MOUSE_TRIPLE_CLICK;
+}
+
+/**
+ * Converts a "mouse_in" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_in_wrap(Evas_Event_Mouse_In *evas_event,
+                                  Ecore_IMF_Event_Mouse_In *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->buttons = evas_event->buttons;
+   imf_event->output.x = evas_event->output.x;
+   imf_event->output.y = evas_event->output.y;
+   imf_event->canvas.x = evas_event->canvas.x;
+   imf_event->canvas.y = evas_event->canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+}
+
+/**
+ * Converts a "mouse_out" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_out_wrap(Evas_Event_Mouse_Out *evas_event,
+                                   Ecore_IMF_Event_Mouse_Out *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->buttons = evas_event->buttons;
+   imf_event->output.x = evas_event->output.x;
+   imf_event->output.y = evas_event->output.y;
+   imf_event->canvas.x = evas_event->canvas.x;
+   imf_event->canvas.y = evas_event->canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+}
+
+/**
+ * Converts a "mouse_move" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_move_wrap(Evas_Event_Mouse_Move *evas_event,
+                                    Ecore_IMF_Event_Mouse_Move *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->buttons = evas_event->buttons;
+   imf_event->cur.output.x = evas_event->cur.output.x;
+   imf_event->cur.output.y = evas_event->cur.output.y;
+   imf_event->prev.output.x = evas_event->prev.output.x;
+   imf_event->prev.output.y = evas_event->prev.output.y;
+   imf_event->cur.canvas.x = evas_event->cur.canvas.x;
+   imf_event->cur.canvas.y = evas_event->cur.canvas.y;
+   imf_event->prev.canvas.x = evas_event->prev.canvas.x;
+   imf_event->prev.canvas.y = evas_event->prev.canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+}
+
+/**
+ * Converts a "mouse_down" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_down_wrap(Evas_Event_Mouse_Down *evas_event,
+                                    Ecore_IMF_Event_Mouse_Down *imf_event)
+{
+   if (!evas_event || !imf_event)
+      return;
+
+   imf_event->button = evas_event->button;
+   imf_event->output.x = evas_event->output.x;
+   imf_event->output.y = evas_event->output.y;
+   imf_event->canvas.x = evas_event->canvas.x;
+   imf_event->canvas.y = evas_event->canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+   _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
+}
+
+/**
+ * Converts a "mouse_up" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_up_wrap(Evas_Event_Mouse_Up *evas_event,
+                                  Ecore_IMF_Event_Mouse_Up *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->button = evas_event->button;
+   imf_event->output.x = evas_event->output.x;
+   imf_event->output.y = evas_event->output.y;
+   imf_event->canvas.x = evas_event->canvas.x;
+   imf_event->canvas.y = evas_event->canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+   _ecore_imf_evas_event_mouse_flags_wrap(evas_event->flags, &imf_event->flags);
+}
+
+/**
+ * Converts a "mouse_wheel" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_mouse_wheel_wrap(Evas_Event_Mouse_Wheel *evas_event,
+                                     Ecore_IMF_Event_Mouse_Wheel *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->direction = evas_event->direction;
+   imf_event->z = evas_event->z;
+   imf_event->output.x = evas_event->output.x;
+   imf_event->output.y = evas_event->output.y;
+   imf_event->canvas.x = evas_event->canvas.x;
+   imf_event->canvas.y = evas_event->canvas.y;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+   imf_event->timestamp = evas_event->timestamp;
+}
+
+/**
+ * Converts a "key_down" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_key_down_wrap(Evas_Event_Key_Down *evas_event,
+                                  Ecore_IMF_Event_Key_Down *imf_event)
+{
+   if (!evas_event || !imf_event)
+     return;
+
+   imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
+   imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
+   imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
+   imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+}
+
+/**
+ * Converts a "key_up" event from Evas to the corresponding event of Ecore_IMF.
+ *
+ * @param evas_event The received Evas event.
+ * @param imf_event The location to store the converted Ecore_IMF event.
+ * @ingroup Ecore_IMF_Evas_Group
+ */
+EAPI void
+ecore_imf_evas_event_key_up_wrap(Evas_Event_Key_Up *evas_event,
+                                Ecore_IMF_Event_Key_Up *imf_event)
+{
+   imf_event->keyname = evas_event->keyname ? evas_event->keyname : _ecore_imf_evas_event_empty;
+   imf_event->key = evas_event->key ? evas_event->key : _ecore_imf_evas_event_empty;
+   imf_event->string = evas_event->string ? evas_event->string : _ecore_imf_evas_event_empty;
+   imf_event->compose = evas_event->compose ? evas_event->compose : _ecore_imf_evas_event_empty;
+   imf_event->timestamp = evas_event->timestamp;
+   _ecore_imf_evas_event_modifiers_wrap(evas_event->modifiers, &imf_event->modifiers);
+   _ecore_imf_evas_event_locks_wrap(evas_event->locks, &imf_event->locks);
+}
diff --git a/src/lib/ecore_ipc/.cvsignore b/src/lib/ecore_ipc/.cvsignore
new file mode 100644 (file)
index 0000000..f98e6f6
--- /dev/null
@@ -0,0 +1,7 @@
+.deps
+.libs
+Ecore_Ipc.h
+Makefile
+Makefile.in
+ecore_ipc.lo
+libecore_ipc.la
diff --git a/src/lib/ecore_ipc/Ecore_Ipc.h b/src/lib/ecore_ipc/Ecore_Ipc.h
new file mode 100644 (file)
index 0000000..b420cf2
--- /dev/null
@@ -0,0 +1,327 @@
+#ifndef _ECORE_IPC_H
+#define _ECORE_IPC_H
+
+#ifdef EAPI
+#undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+#include <Ecore_Data.h>
+
+/**
+ * @file Ecore_Ipc.h
+ * @brief Ecore inter-process communication functions.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _ECORE_IPC_PRIVATE_H
+   typedef void Ecore_Ipc_Server; /**< An IPC connection handle */
+   typedef void Ecore_Ipc_Client; /**< An IPC connection handle */
+#endif
+
+/**
+ * Macros used for generic data packing
+ */
+EAPI unsigned short _ecore_ipc_swap_16(unsigned short v);
+EAPI unsigned int _ecore_ipc_swap_32(unsigned int v);
+EAPI unsigned long long _ecore_ipc_swap_64(unsigned long long v);
+
+#ifdef WORDS_BIGENDIAN
+#define ECORE_IPC_SWAP2NET64(x) _ecore_ipc_swap_64(x)
+#define ECORE_IPC_SWAP2CPU64(x) _ecore_ipc_swap_64(x)
+#define ECORE_IPC_SWAP2NET32(x) _ecore_ipc_swap_32(x)
+#define ECORE_IPC_SWAP2CPU32(x) _ecore_ipc_swap_32(x)
+#define ECORE_IPC_SWAP2NET16(x) _ecore_ipc_swap_16(x)
+#define ECORE_IPC_SWAP2CPU16(x) _ecore_ipc_swap_16(x)
+#define ECORE_IPC_SWAP2NET8(x) (x)
+#define ECORE_IPC_SWAP2CPU8(x) (x)
+#else
+#define ECORE_IPC_SWAP2NET64(x) (x)
+#define ECORE_IPC_SWAP2CPU64(x) (x)
+#define ECORE_IPC_SWAP2NET32(x) (x)
+#define ECORE_IPC_SWAP2CPU32(x) (x)
+#define ECORE_IPC_SWAP2NET16(x) (x)
+#define ECORE_IPC_SWAP2CPU16(x) (x)
+#define ECORE_IPC_SWAP2NET8(x) (x)
+#define ECORE_IPC_SWAP2CPU8(x) (x)
+#endif
+
+/* 1, 2, 4 and 8 byte datatypes */
+/* unpacking */
+#define ECORE_IPC_GET64(v)\
+    { \
+       p->v = ECORE_IPC_SWAP2CPU64(*(long long *)(ptr)); \
+       ptr += 8; \
+    }
+#define ECORE_IPC_GET32(v)\
+    { \
+       p->v = ECORE_IPC_SWAP2CPU32(*(int *)(ptr)); \
+       ptr += 4; \
+    }
+#define ECORE_IPC_GET16(v)\
+    { \
+       p->v = ECORE_IPC_SWAP2CPU16(*(short *)(ptr)); \
+       ptr += 2; \
+    }
+#define ECORE_IPC_GET8(v) \
+    { \
+       p->v = ECORE_IPC_SWAP2CPU8(*(char *)(ptr)); \
+       ptr += 1; \
+    }
+/* packing */
+#define ECORE_IPC_PUT64(v)\
+    { \
+       *(long long *)(ptr) = ECORE_IPC_SWAP2NET64(p->v); \
+       ptr += 8; \
+    }
+#define ECORE_IPC_PUT32(v)\
+    { \
+       *(int *)(ptr) = ECORE_IPC_SWAP2NET32(p->v); \
+       ptr += 4; \
+    }
+#define ECORE_IPC_PUT16(v)\
+    { \
+       *(short *)(ptr) = ECORE_IPC_SWAP2NET16(p->v); \
+       ptr += 2; \
+    }
+#define ECORE_IPC_PUT8(v) \
+    { \
+       *(char *)(ptr) = ECORE_IPC_SWAP2NET8(p->v); \
+       ptr += 1; \
+    }
+/* padding data */
+#define ECORE_IPC_PAD8()   ptr += 1
+#define ECORE_IPC_PAD16()  ptr += 2
+#define ECORE_IPC_PAD32()  ptr += 4
+#define ECORE_IPC_PAD64()  ptr += 8
+
+/* counting data when encoding lists */
+#define ECORE_IPC_CNT8()    len += 1
+#define ECORE_IPC_CNT16()   len += 2
+#define ECORE_IPC_CNT32()   len += 4
+#define ECORE_IPC_CNT64()   len += 8
+
+/* strings */
+#define ECORE_IPC_CHEKS() if (*((unsigned char *)d + s - 1) != 0) return 0;
+#define ECORE_IPC_GETS(v) \
+    { \
+       if (ptr < ((unsigned char *)d + s)) \
+           { \
+               p->v = (char *)ptr; \
+               ptr += strlen(p->v) + 1; \
+           } \
+    } 
+#define ECORE_IPC_PUTS(v, l)\
+    { \
+       strcpy((char *)ptr, p->v); \
+       ptr += l + 1; \
+    }
+
+/* handy to calculate what sized block we need to alloc */
+#define ECORE_IPC_SLEN(l, v) ((l = strlen(p->v)) + 1)
+#define ECORE_IPC_CNTS(v)   len += strlen(p->v) + 1
+
+/* saves typing function headers */
+#define ECORE_IPC_DEC_STRUCT_PROTO(x) static int x(void *d, int s, void *pp)
+#define ECORE_IPC_ENC_STRUCT_PROTO(x) static void *x(void *pp, int *s)
+#define ECORE_IPC_DEC_EVAS_LIST_PROTO(x) static Evas_List *x(void *d, int s)
+#define ECORE_IPC_ENC_EVAS_LIST_PROTO(x) static void *x(Evas_List *lp, int *s)
+
+
+/* decoder setup - saves typing. requires data packet of exact size, or fail */
+#define ECORE_IPC_DEC_STRUCT_HEAD_EXACT(typ, x) \
+    typ *p; \
+    unsigned char *ptr; \
+    p = (typ *)pp; \
+    if (!d) return 0; if (s != (x)) return 0; \
+    ptr = d;
+/* decoder setup - saves typing. requires data packet of a minimum size */
+#define ECORE_IPC_DEC_STRUCT_HEAD_MIN(typ, x) \
+    typ *p; \
+    unsigned char *ptr; \
+    p = (typ *)pp; \
+    if (!d) return 0; if (s < (x)) return 0; \
+    ptr = d;
+/* footer for the hell of it */
+#define ECORE_IPC_DEC_STRUCT_FOOT() return 1
+/* header for encoder - gives native strct type and size of flattened packet */
+#define ECORE_IPC_ENC_STRUCT_HEAD(typ, sz) \
+    typ *p; \
+    unsigned char *d, *ptr; \
+    int len; \
+    *s = 0; \
+    if(!pp) return NULL; \
+    p = (typ *)pp; \
+    len = sz; \
+    d = malloc(len); \
+    if (!d) return NULL; \
+    *s = len; \
+    ptr = d;
+/* footer for the hell of it */
+#define ECORE_IPC_ENC_STRUCT_FOOT() return d
+
+#define ECORE_IPC_DEC_EVAS_LIST_HEAD(typ) \
+    unsigned char *ptr; \
+    Evas_List *l; \
+    typ *p; \
+    l = NULL; \
+    ptr = d; \
+    while(ptr < (unsigned char *)(d + s)) \
+        { \
+            p = malloc(sizeof(typ));
+
+#define ECORE_IPC_DEC_EVAS_LIST_FOOT() \
+           l = evas_list_append(l, p); \
+        } \
+    return l
+#define ECORE_IPC_ENC_EVAS_LIST_HEAD_START(typ) \
+    Evas_List *l; \
+    typ *p; \
+    unsigned char *d, *ptr; \
+    int len; \
+    *s = 0; \
+    len = 0; \
+    for (l = lp; l; l = l->next) \
+      { \
+         p = l->data;
+#define ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH() \
+      } \
+    d = malloc(len); \
+    if(!d) return NULL; \
+    *s = len; \
+    ptr = d; \
+    for (l = lp; l; l = l->next) \
+      { \
+         p = l->data;
+
+#define ECORE_IPC_ENC_EVAS_LIST_FOOT() \
+      } \
+   return d
+
+   typedef enum _Ecore_Ipc_Type
+     {
+       ECORE_IPC_LOCAL_USER,
+         ECORE_IPC_LOCAL_SYSTEM,
+         ECORE_IPC_REMOTE_SYSTEM,
+          ECORE_IPC_USE_SSL = 16
+     } Ecore_Ipc_Type;
+   
+   typedef struct _Ecore_Ipc_Event_Client_Add  Ecore_Ipc_Event_Client_Add;
+   typedef struct _Ecore_Ipc_Event_Client_Del  Ecore_Ipc_Event_Client_Del;
+   typedef struct _Ecore_Ipc_Event_Server_Add  Ecore_Ipc_Event_Server_Add;
+   typedef struct _Ecore_Ipc_Event_Server_Del  Ecore_Ipc_Event_Server_Del;
+   typedef struct _Ecore_Ipc_Event_Client_Data Ecore_Ipc_Event_Client_Data;
+   typedef struct _Ecore_Ipc_Event_Server_Data Ecore_Ipc_Event_Server_Data;
+   
+   struct _Ecore_Ipc_Event_Client_Add
+     {
+       Ecore_Ipc_Client *client;
+     };
+   
+   struct _Ecore_Ipc_Event_Client_Del
+     {
+       Ecore_Ipc_Client *client;
+     };
+   
+   struct _Ecore_Ipc_Event_Server_Add
+     {
+       Ecore_Ipc_Server *server;
+     };
+   
+   struct _Ecore_Ipc_Event_Server_Del
+     {
+       Ecore_Ipc_Server *server;
+     };
+   
+   struct _Ecore_Ipc_Event_Client_Data
+     {
+       Ecore_Ipc_Client *client;
+       /* FIXME: this needs to become an ipc message */
+       int               major;
+       int               minor;
+       int               ref;
+       int               ref_to;
+       int               response;
+       void             *data;
+       int               size;
+     };
+   
+   struct _Ecore_Ipc_Event_Server_Data
+     {
+       Ecore_Ipc_Server *server;
+       /* FIXME: this needs to become an ipc message */
+       int               major;
+       int               minor;
+       int               ref;
+       int               ref_to;
+       int               response;
+       void             *data;
+       int               size;
+     };
+   
+   EAPI extern int ECORE_IPC_EVENT_CLIENT_ADD;
+   EAPI extern int ECORE_IPC_EVENT_CLIENT_DEL;
+   EAPI extern int ECORE_IPC_EVENT_SERVER_ADD;
+   EAPI extern int ECORE_IPC_EVENT_SERVER_DEL;
+   EAPI extern int ECORE_IPC_EVENT_CLIENT_DATA;
+   EAPI extern int ECORE_IPC_EVENT_SERVER_DATA;
+   
+   EAPI int               ecore_ipc_init(void);
+   EAPI int               ecore_ipc_shutdown(void);
+   
+   /* FIXME: need to add protocol type parameter */
+   EAPI Ecore_Ipc_Server *ecore_ipc_server_add(Ecore_Ipc_Type type, const char *name, int port, const void *data);
+   
+   /* FIXME: need to add protocol type parameter */
+   EAPI Ecore_Ipc_Server *ecore_ipc_server_connect(Ecore_Ipc_Type type, char *name, int port, const void *data);
+   EAPI void             *ecore_ipc_server_del(Ecore_Ipc_Server *svr);
+   EAPI void             *ecore_ipc_server_data_get(Ecore_Ipc_Server *svr);
+   EAPI int               ecore_ipc_server_connected_get(Ecore_Ipc_Server *svr);
+   EAPI Ecore_List       *ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr);
+   /* FIXME: this needs to become an ipc message */
+   EAPI int               ecore_ipc_server_send(Ecore_Ipc_Server *svr, int major, int minor, int ref, int ref_to, int response, const void *data, int size);
+   EAPI void              ecore_ipc_server_client_limit_set(Ecore_Ipc_Server *svr, int client_limit, char reject_excess_clients);
+   EAPI void              ecore_ipc_server_data_size_max_set(Ecore_Ipc_Server *srv, int size);
+   EAPI int               ecore_ipc_server_data_size_max_get(Ecore_Ipc_Server *srv);
+   EAPI char             *ecore_ipc_server_ip_get(Ecore_Ipc_Server *svr);
+   EAPI void              ecore_ipc_server_flush(Ecore_Ipc_Server *svr);
+       
+   /* FIXME: this needs to become an ipc message */
+   EAPI int               ecore_ipc_client_send(Ecore_Ipc_Client *cl, int major, int minor, int ref, int ref_to, int response, const void *data, int size);
+   EAPI Ecore_Ipc_Server *ecore_ipc_client_server_get(Ecore_Ipc_Client *cl);
+   EAPI void             *ecore_ipc_client_del(Ecore_Ipc_Client *cl);
+   EAPI void              ecore_ipc_client_data_set(Ecore_Ipc_Client *cl, const void *data);
+   EAPI void             *ecore_ipc_client_data_get(Ecore_Ipc_Client *cl);
+   EAPI void              ecore_ipc_client_data_size_max_set(Ecore_Ipc_Client *cl, int size);
+   EAPI int               ecore_ipc_client_data_size_max_get(Ecore_Ipc_Client *cl);
+   EAPI char             *ecore_ipc_client_ip_get(Ecore_Ipc_Client *cl);
+   EAPI void              ecore_ipc_client_flush(Ecore_Ipc_Client *cl);
+   
+   EAPI int               ecore_ipc_ssl_available_get(void);
+   /* FIXME: need to add a callback to "ok" large ipc messages greater than */
+   /*        a certain size (seurity/DOS attack safety) */
+   
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_ipc/Makefile.am b/src/lib/ecore_ipc/Makefile.am
new file mode 100644 (file)
index 0000000..8dcd9df
--- /dev/null
@@ -0,0 +1,37 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_con \
+-I$(top_builddir)/src/lib/ecore_ipc \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_con \
+-I$(top_srcdir)/src/lib/ecore_ipc \
+@SSL_CFLAGS@
+
+if BUILD_ECORE_IPC
+
+lib_LTLIBRARIES = libecore_ipc.la
+include_HEADERS = \
+Ecore_Ipc.h
+
+libecore_ipc_la_SOURCES = \
+ecore_ipc.c \
+ecore_ipc_private.h
+
+libecore_ipc_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_con/libecore_con.la \
+@SSL_LIBS@
+
+libecore_ipc_la_LDFLAGS = -version-info @version_info@
+
+libecore_ipc_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_con/libecore_con.la
+
+endif
+
+EXTRA_DIST = \
+ecore_ipc.c \
+ecore_ipc_private.h
diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c
new file mode 100644 (file)
index 0000000..1ea7887
--- /dev/null
@@ -0,0 +1,1566 @@
+#include "Ecore.h"
+#include <config.h>
+#include "Ecore_Con.h"
+#include "ecore_private.h"
+#include "ecore_ipc_private.h"
+#include "Ecore_Ipc.h"
+
+#ifdef HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+#ifdef HAVE_WINSOCK2_H
+# include <winsock2.h>
+#endif
+
+#define DLT_ZERO   0
+#define DLT_ONE    1
+#define DLT_SAME   2
+#define DLT_SHL    3
+#define DLT_SHR    4
+#define DLT_ADD8   5
+#define DLT_DEL8   6
+#define DLT_ADDU8  7
+#define DLT_DELU8  8
+#define DLT_ADD16  9
+#define DLT_DEL16  10
+#define DLT_ADDU16 11
+#define DLT_DELU16 12
+#define DLT_SET    13
+#define DLT_R1     14
+#define DLT_R2     15
+
+/* byte swappers - for dealing with big vs little endian machines */
+EAPI unsigned short
+_ecore_ipc_swap_16(unsigned short v)
+{
+   unsigned char *s, t;
+
+   s = (unsigned char *)(&v);
+   t = s[0]; s[0] = s[1]; s[1] = t;
+   return v;
+}
+
+EAPI unsigned int
+_ecore_ipc_swap_32(unsigned int v)
+{
+   unsigned char *s, t;
+
+   s = (unsigned char *)(&v);
+   t = s[0]; s[0] = s[3]; s[3] = t;
+   t = s[1]; s[1] = s[2]; s[2] = t;
+   return v;
+}
+
+EAPI unsigned long long
+_ecore_ipc_swap_64(unsigned long long v)
+{
+   unsigned char *s, t;
+
+   s = (unsigned char *)(&v);
+   t = s[0]; s[0] = s[7]; s[7] = t;
+   t = s[1]; s[1] = s[6]; s[6] = t;
+   t = s[2]; s[2] = s[5]; s[5] = t;
+   t = s[3]; s[3] = s[4]; s[4] = t;
+   return v;
+}
+
+static int _ecore_ipc_dlt_int(int out, int prev, int *mode);
+static int _ecore_ipc_ddlt_int(int in, int prev, int mode);
+
+static int
+_ecore_ipc_dlt_int(int out, int prev, int *mode)
+{
+   int dlt;
+
+   /* 0 byte */
+   if (out == 0)
+     {
+       *mode = DLT_ZERO;
+       return 0;
+     }
+   if (out == (int)0xffffffff)
+     {
+       *mode = DLT_ONE;
+       return 0;
+     }
+   if (out == prev)
+     {
+       *mode = DLT_SAME;
+       return 0;
+     }
+   if (out == prev << 1)
+     {
+       *mode = DLT_SHL;
+       return 0;
+     }
+   if (out == prev >> 1)
+     {
+       *mode = DLT_SHR;
+       return 0;
+     }
+   /* 1 byte */
+   dlt = out - prev;
+   if (!(dlt & 0xffffff00))
+     {
+       *mode = DLT_ADD8;
+       return dlt & 0xff;
+     }
+   dlt = prev - out;
+   if (!(dlt & 0xffffff00))
+     {
+       *mode = DLT_DEL8;
+       return dlt & 0xff;
+     }
+   dlt = out - prev;
+   if (!(dlt & 0x00ffffff))
+     {
+       *mode = DLT_ADDU8;
+       return (dlt >> 24) & 0xff;
+     }
+   dlt = prev - out;
+   if (!(dlt & 0x00ffffff))
+     {
+       *mode = DLT_DELU8;
+       return (dlt >> 24) & 0xff;
+     }
+   /* 2 byte */
+   dlt = out - prev;
+   if (!(dlt & 0xffff0000))
+     {
+       *mode = DLT_ADD16;
+       return dlt & 0xffff;
+     }
+   dlt = prev - out;
+   if (!(dlt & 0xffff0000))
+     {
+       *mode = DLT_DEL16;
+       return dlt & 0xffff;
+     }
+   dlt = out - prev;
+   if (!(dlt & 0x0000ffff))
+     {
+       *mode = DLT_ADDU16;
+       return (dlt >> 16) & 0xffff;
+     }
+   dlt = prev - out;
+   if (!(dlt & 0x0000ffff))
+     {
+       *mode = DLT_DELU16;
+       return (dlt >> 16) & 0xffff;
+     }
+   /* 4 byte */
+   *mode = DLT_SET;
+   return out;
+}
+
+static int
+_ecore_ipc_ddlt_int(int in, int prev, int mode)
+{
+   switch (mode)
+     {
+      case DLT_ZERO:
+       return 0;
+       break;
+      case DLT_ONE:
+       return 0xffffffff;
+       break;
+      case DLT_SAME:
+       return prev;
+       break;
+      case DLT_SHL:
+       return prev << 1;
+       break;
+      case DLT_SHR:
+       return prev >> 1;
+       break;
+      case DLT_ADD8:
+       return prev + in;
+       break;
+      case DLT_DEL8:
+       return prev - in;
+       break;
+      case DLT_ADDU8:
+       return prev + (in << 24);
+       break;
+      case DLT_DELU8:
+       return prev - (in << 24);
+       break;
+      case DLT_ADD16:
+       return prev + in;
+       break;
+      case DLT_DEL16:
+       return prev - in;
+       break;
+      case DLT_ADDU16:
+       return prev + (in << 16);
+       break;
+      case DLT_DELU16:
+       return prev - (in << 16);
+       break;
+      case DLT_SET:
+       return in;
+       break;
+      case DLT_R1:
+       return 0;
+       break;
+      case DLT_R2:
+       return 0;
+       break;
+      default:
+       break;
+     }
+   return 0;
+}
+
+static int _ecore_ipc_event_client_add(void *data, int ev_type, void *ev);
+static int _ecore_ipc_event_client_del(void *data, int ev_type, void *ev);
+static int _ecore_ipc_event_server_add(void *data, int ev_type, void *ev);
+static int _ecore_ipc_event_server_del(void *data, int ev_type, void *ev);
+static int _ecore_ipc_event_client_data(void *data, int ev_type, void *ev);
+static int _ecore_ipc_event_server_data(void *data, int ev_type, void *ev);
+static void _ecore_ipc_event_client_add_free(void *data, void *ev);
+static void _ecore_ipc_event_client_del_free(void *data, void *ev);
+static void _ecore_ipc_event_client_data_free(void *data, void *ev);
+static void _ecore_ipc_event_server_add_free(void *data, void *ev);
+static void _ecore_ipc_event_server_del_free(void *data, void *ev);
+static void _ecore_ipc_event_server_data_free(void *data, void *ev);
+
+EAPI int ECORE_IPC_EVENT_CLIENT_ADD = 0;
+EAPI int ECORE_IPC_EVENT_CLIENT_DEL = 0;
+EAPI int ECORE_IPC_EVENT_SERVER_ADD = 0;
+EAPI int ECORE_IPC_EVENT_SERVER_DEL = 0;
+EAPI int ECORE_IPC_EVENT_CLIENT_DATA = 0;
+EAPI int ECORE_IPC_EVENT_SERVER_DATA = 0;
+
+static int                  init_count = 0;
+static Ecore_Ipc_Server    *servers = NULL;
+static Ecore_Event_Handler *handler[6];
+
+/**
+ * @defgroup Ecore_IPC_Library_Group IPC Library Functions
+ *
+ * Functions that set up and shut down the Ecore IPC Library.
+ */
+
+/**
+ * Initialises the Ecore IPC library.
+ * @return  Number of times the library has been initialised without
+ *          being shut down.
+ * @ingroup Ecore_IPC_Library_Group
+ */
+EAPI int
+ecore_ipc_init(void)
+{
+   int i = 0;
+
+   if (++init_count != 1) return init_count;
+
+   ecore_con_init();
+
+   ECORE_IPC_EVENT_CLIENT_ADD = ecore_event_type_new();
+   ECORE_IPC_EVENT_CLIENT_DEL = ecore_event_type_new();
+   ECORE_IPC_EVENT_SERVER_ADD = ecore_event_type_new();
+   ECORE_IPC_EVENT_SERVER_DEL = ecore_event_type_new();
+   ECORE_IPC_EVENT_CLIENT_DATA = ecore_event_type_new();
+   ECORE_IPC_EVENT_SERVER_DATA = ecore_event_type_new();
+
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD,
+                                         _ecore_ipc_event_client_add, NULL);
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL,
+                                         _ecore_ipc_event_client_del, NULL);
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD,
+                                         _ecore_ipc_event_server_add, NULL);
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL,
+                                         _ecore_ipc_event_server_del, NULL);
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA,
+                                         _ecore_ipc_event_client_data, NULL);
+   handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA,
+                                         _ecore_ipc_event_server_data, NULL);
+   return init_count;
+}
+
+/**
+ * Shuts down the Ecore IPC library.
+ * @return  Number of times the library has been initialised without being
+ *          shut down.
+ * @ingroup Ecore_IPC_Library_Group
+ */
+EAPI int
+ecore_ipc_shutdown(void)
+{
+   int i;
+
+   if (--init_count != 0) return init_count;
+
+   while (servers) ecore_ipc_server_del(servers);
+
+   for (i = 0; i < 6; i++)
+     ecore_event_handler_del(handler[i]);
+
+   ecore_con_shutdown();
+
+   return init_count;
+}
+
+/**
+ * @defgroup Ecore_IPC_Server_Group IPC Server Functions
+ *
+ * Functions the deal with IPC server objects.
+ */
+
+/**
+ * Creates an IPC server that listens for connections.
+ *
+ * For more details about the @p compl_type, @p name and @p port
+ * parameters, see the @ref ecore_con_server_add documentation.
+ *
+ * @param   compl_type The connection type.
+ * @param   name       Name to associate with the socket used for connection.
+ * @param   port       Number to identify with socket used for connection.
+ * @param   data       Data to associate with the IPC server.
+ * @return  New IPC server.  If there is an error, @c NULL is returned.
+ * @ingroup Ecore_IPC_Server_Group
+ * @todo    Need to add protocol type parameter to this function.
+ */
+EAPI Ecore_Ipc_Server *
+ecore_ipc_server_add(Ecore_Ipc_Type compl_type, const char *name, int port, const void *data)
+{
+   Ecore_Ipc_Server *svr;
+   Ecore_Ipc_Type type;
+   Ecore_Con_Type extra = 0;
+
+   svr = calloc(1, sizeof(Ecore_Ipc_Server));
+   if (!svr) return NULL;
+   type = compl_type;
+   type &= ~ECORE_IPC_USE_SSL;
+   if (compl_type & ECORE_IPC_USE_SSL) extra = ECORE_CON_USE_SSL;
+   switch (type)
+     {
+      case ECORE_IPC_LOCAL_USER:
+       svr->server = ecore_con_server_add(ECORE_CON_LOCAL_USER | extra, name, port, svr);
+       break;
+      case ECORE_IPC_LOCAL_SYSTEM:
+       svr->server = ecore_con_server_add(ECORE_CON_LOCAL_SYSTEM | extra, name, port, svr);
+       break;
+      case ECORE_IPC_REMOTE_SYSTEM:
+       svr->server = ecore_con_server_add(ECORE_CON_REMOTE_SYSTEM | extra, name, port, svr);
+       break;
+      default:
+       free(svr);
+       return NULL;
+     }
+   if (!svr->server)
+     {
+       free(svr);
+       return NULL;
+     }
+   svr->max_buf_size = 32 * 1024;
+   svr->data = (void *)data;
+   svr->client_list = ecore_list_new();
+   ecore_list_init(svr->client_list);
+   servers = _ecore_list2_append(servers, svr);
+   ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
+   return svr;
+}
+
+/**
+ * Creates an IPC server object to represent the IPC server listening
+ * on the given port.
+ *
+ * For more details about the @p compl_type, @p name and @p port
+ * parameters, see the @ref ecore_con_server_connect documentation.
+ *
+ * @param   compl_type The IPC connection type.
+ * @param   name       Name used to determine which socket to use for the
+ *                     IPC connection.
+ * @param   port       Number used to identify the socket to use for the
+ *                     IPC connection.
+ * @param   data       Data to associate with the server.
+ * @return  A new IPC server.  @c NULL is returned on error.
+ * @ingroup Ecore_IPC_Server_Group
+ * @todo    Need to add protocol type parameter.
+ */
+EAPI Ecore_Ipc_Server *
+ecore_ipc_server_connect(Ecore_Ipc_Type compl_type, char *name, int port, const void *data)
+{
+   Ecore_Ipc_Server *svr;
+   Ecore_Ipc_Type type;
+   Ecore_Con_Type extra = 0;
+
+   svr = calloc(1, sizeof(Ecore_Ipc_Server));
+   if (!svr) return NULL;
+   type = compl_type;
+   type &= ~ECORE_IPC_USE_SSL;
+   if (compl_type & ECORE_IPC_USE_SSL) extra = ECORE_CON_USE_SSL;
+   switch (type)
+     {
+      case ECORE_IPC_LOCAL_USER:
+       svr->server = ecore_con_server_connect(ECORE_CON_LOCAL_USER | extra, name, port, svr);
+       break;
+      case ECORE_IPC_LOCAL_SYSTEM:
+       svr->server = ecore_con_server_connect(ECORE_CON_LOCAL_SYSTEM | extra, name, port, svr);
+       break;
+      case ECORE_IPC_REMOTE_SYSTEM:
+       svr->server = ecore_con_server_connect(ECORE_CON_REMOTE_SYSTEM | extra, name, port, svr);
+       break;
+      default:
+       free(svr);
+       return NULL;
+     }
+   if (!svr->server)
+     {
+       free(svr);
+       return NULL;
+     }
+   svr->max_buf_size = -1;
+   svr->data = (void *)data;
+   servers = _ecore_list2_append(servers, svr);
+   ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
+   return svr;
+}
+
+/**
+ * Closes the connection and frees the given IPC server.
+ * @param   svr The given IPC server.
+ * @return  The data associated with the server when it was created.
+ * @ingroup Ecore_IPC_Server_Group
+ */
+EAPI void *
+ecore_ipc_server_del(Ecore_Ipc_Server *svr)
+{
+   void *data;
+
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_del");
+       return NULL;
+     }
+   data = svr->data;
+   svr->data = NULL;
+   svr->delete_me = 1;
+   if (svr->event_count == 0)
+     {
+       while (svr->clients)
+         ecore_ipc_client_del((Ecore_Ipc_Client *)svr->clients);
+       ecore_con_server_del(svr->server);
+       servers = _ecore_list2_remove(servers, svr);
+       if (svr->buf) free(svr->buf);
+       if (svr->client_list) ecore_list_destroy(svr->client_list);
+       ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
+       free(svr);
+     }
+   return data;
+}
+
+/**
+ * Retrieves the data associated with the given IPC server.
+ * @param   svr The given IPC server.
+ * @return  The associated data.
+ * @ingroup Ecore_IPC_Server_Group
+ */
+EAPI void *
+ecore_ipc_server_data_get(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_data_get");
+       return NULL;
+     }
+   return svr->data;
+}
+
+/**
+ * Retrieves whether the given IPC server is currently connected.
+ * @param   svr The given IPC server.
+ * @return  @c 1 if the server is connected.  @c 0 otherwise.
+ * @ingroup Ecore_IPC_Server_Group
+ */
+EAPI int
+ecore_ipc_server_connected_get(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_connected_get");
+       return 0;
+     }
+   return ecore_con_server_connected_get(svr->server);
+}
+
+/**
+ * Retrieves the list of clients for this server.
+ * @param   svr The given IPC server.
+ * @return  An Ecore_List with the clients.
+ * @ingroup Ecore_IPC_Server_Group
+ */
+EAPI Ecore_List *
+ecore_ipc_server_clients_get(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_clients_get");
+       return NULL;
+     }
+   return svr->client_list;
+}
+
+#define SVENC(_member) \
+   d = _ecore_ipc_dlt_int(msg._member, svr->prev.o._member, &md); \
+   if (md >= DLT_SET) \
+     { \
+       unsigned int v; \
+       unsigned char *dd; \
+       dd = (unsigned char *)&v; \
+       v = d; \
+       v = htonl(v); \
+       *(dat + s + 0) = dd[0]; \
+       *(dat + s + 1) = dd[1]; \
+       *(dat + s + 2) = dd[2]; \
+       *(dat + s + 3) = dd[3]; \
+       s += 4; \
+     } \
+   else if (md >= DLT_ADD16) \
+     { \
+       unsigned short v; \
+       unsigned char *dd; \
+       dd = (unsigned char *)&v; \
+       v = d; \
+       v = htons(v); \
+       *(dat + s + 0) = dd[0]; \
+       *(dat + s + 1) = dd[1]; \
+       s += 2; \
+     } \
+   else if (md >= DLT_ADD8) \
+     { \
+       *(dat + s + 0) = (unsigned char)d; \
+       s += 1; \
+     }
+
+/**
+ * Sends a message to the given IPC server.
+ *
+ * The content of the parameters, excluding the @p svr paramter, is up to
+ * the client.
+ *
+ * @param   svr      The given IPC server.
+ * @param   major    Major opcode of the message.
+ * @param   minor    Minor opcode of the message.
+ * @param   ref      Message reference number.
+ * @param   ref_to   Reference number of the message this message refers to.
+ * @param   response Requires response.
+ * @param   data     The data to send as part of the message.
+ * @param   size     Length of the data, in bytes, to send.
+ * @return  Number of bytes sent.  @c 0 is returned if there is an error.
+ * @ingroup Ecore_IPC_Server_Group
+ * @todo    This function needs to become an IPC message.
+ * @todo Fix up the documentation: Make sure what ref_to and response are.
+ */
+EAPI int
+ecore_ipc_server_send(Ecore_Ipc_Server *svr, int major, int minor, int ref, int ref_to, int response, const void *data, int size)
+{
+   Ecore_Ipc_Msg_Head msg;
+   int ret;
+   int *head, md = 0, d, s;
+   unsigned char dat[sizeof(Ecore_Ipc_Msg_Head)];
+
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_send");
+       return 0;
+     }
+   if (size < 0) size = 0;
+   msg.major    = major;
+   msg.minor    = minor;
+   msg.ref      = ref;
+   msg.ref_to   = ref_to;
+   msg.response = response;
+   msg.size     = size;
+   head = (int *)dat;
+   s = 4;
+   SVENC(major);
+   *head = md;
+   SVENC(minor);
+   *head |= md << (4 * 1);
+   SVENC(ref);
+   *head |= md << (4 * 2);
+   SVENC(ref_to);
+   *head |= md << (4 * 3);
+   SVENC(response);
+   *head |= md << (4 * 4);
+   SVENC(size);
+   *head |= md << (4 * 5);
+   *head = htonl(*head);
+   svr->prev.o = msg;
+   ret = ecore_con_server_send(svr->server, dat, s);
+   if (size > 0) ret += ecore_con_server_send(svr->server, data, size);
+   return ret;
+}
+
+/**
+ * Sets a limit on the number of clients that can be handled concurrently
+ * by the given server, and a policy on what to do if excess clients try to
+ * connect.
+ * Beware that if you set this once ecore is already running, you may
+ * already have pending CLIENT_ADD events in your event queue.  Those
+ * clients have already connected and will not be affected by this call.
+ * Only clients subsequently trying to connect will be affected.
+ * @param   svr           The given server.
+ * @param   client_limit  The maximum number of clients to handle
+ *                        concurrently.  -1 means unlimited (default).  0
+ *                        effectively disables the server.
+ * @param   reject_excess_clients  Set to 1 to automatically disconnect
+ *                        excess clients as soon as they connect if you are
+ *                        already handling client_limit clients.  Set to 0
+ *                        (default) to just hold off on the "accept()"
+ *                        system call until the number of active clients
+ *                        drops. This causes the kernel to queue up to 4096
+ *                        connections (or your kernel's limit, whichever is
+ *                        lower).
+ * @ingroup Ecore_Ipc_Server_Group
+ */
+EAPI void
+ecore_ipc_server_client_limit_set(Ecore_Ipc_Server *svr, int client_limit, char reject_excess_clients)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_client_limit_set");
+       return;
+     }
+   ecore_con_server_client_limit_set(svr->server, client_limit, reject_excess_clients);
+}
+
+/**
+ * Sets the max data payload size for an Ipc message in bytes
+ *
+ * @param   svr           The given server.
+ * @param   size          The maximum data payload size in bytes.
+ * @ingroup Ecore_Ipc_Server_Group
+ */
+EAPI void
+ecore_ipc_server_data_size_max_set(Ecore_Ipc_Server *svr, int size)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_data_size_max_set");
+       return;
+     }
+   svr->max_buf_size = size;
+}
+
+/**
+ * Gets the max data payload size for an Ipc message in bytes
+ *
+ * @param   svr           The given server.
+ * @return The maximum data payload in bytes.
+ * @ingroup Ecore_Ipc_Server_Group
+ */
+EAPI int
+ecore_ipc_server_data_size_max_get(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_data_size_max_get");
+       return -1;
+     }
+   return svr->max_buf_size;
+}
+
+/**
+ * Gets the IP address of a server that has been connected to.
+ *
+ * @param   svr           The given server.
+ * @return  A pointer to an internal string that contains the IP address of
+ *          the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
+ *          This string should not be modified or trusted to stay valid after
+ *          deletion for the @p svr object. If no IP is known NULL is returned.
+ * @ingroup Ecore_Ipc_Server_Group
+ */
+EAPI char *
+ecore_ipc_server_ip_get(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_ip_get");
+       return NULL;
+     }
+   return ecore_con_server_ip_get(svr->server);
+}
+
+/**
+ * Flushes all pending data to the given server. Will return when done.
+ *
+ * @param   svr           The given server.
+ * @ingroup Ecore_Ipc_Server_Group
+ */
+EAPI void
+ecore_ipc_server_flush(Ecore_Ipc_Server *svr)
+{
+   if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
+     {
+       ECORE_MAGIC_FAIL(svr, ECORE_MAGIC_IPC_SERVER,
+                        "ecore_ipc_server_server_flush");
+       return;
+     }
+   ecore_con_server_flush(svr->server);
+}
+
+#define CLENC(_member) \
+   d = _ecore_ipc_dlt_int(msg._member, cl->prev.o._member, &md); \
+   if (md >= DLT_SET) \
+     { \
+       unsigned int v; \
+       unsigned char *dd; \
+       dd = (unsigned char *)&v; \
+       v = d; \
+       v = htonl(v); \
+       *(dat + s + 0) = dd[0]; \
+       *(dat + s + 1) = dd[1]; \
+       *(dat + s + 2) = dd[2]; \
+       *(dat + s + 3) = dd[3]; \
+       s += 4; \
+     } \
+   else if (md >= DLT_ADD16) \
+     { \
+       unsigned short v; \
+       unsigned char *dd; \
+       dd = (unsigned char *)&v; \
+       v = d; \
+       v = htons(v); \
+       *(dat + s + 0) = dd[0]; \
+       *(dat + s + 1) = dd[1]; \
+       s += 2; \
+     } \
+   else if (md >= DLT_ADD8) \
+     { \
+       *(dat + s) = (unsigned char)d; \
+       s += 1; \
+     }
+
+/**
+ * @defgroup Ecore_IPC_Client_Group IPC Client Functions
+ *
+ * Functions that deal with IPC client objects.
+ */
+
+/**
+ * Sends a message to the given IPC client.
+ * @param   cl       The given IPC client.
+ * @param   major    Major opcode of the message.
+ * @param   minor    Minor opcode of the message.
+ * @param   ref      Reference number of the message.
+ * @param   ref_to   Reference number of the message this message refers to.
+ * @param   response Requires response.
+ * @param   data     The data to send as part of the message.
+ * @param   size     Length of the data, in bytes, to send.
+ * @return  The number of bytes sent.  @c 0 will be returned if there is
+ *          an error.
+ * @ingroup Ecore_IPC_Client_Group
+ * @todo    This function needs to become an IPC message.
+ * @todo    Make sure ref_to and response parameters are described correctly.
+ */
+EAPI int
+ecore_ipc_client_send(Ecore_Ipc_Client *cl, int major, int minor, int ref, int ref_to, int response, const void *data, int size)
+{
+   Ecore_Ipc_Msg_Head msg;
+   int ret;
+   int *head, md = 0, d, s;
+   unsigned char dat[sizeof(Ecore_Ipc_Msg_Head)];
+
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_send");
+       return 0;
+     }
+   if (size < 0) size = 0;
+   msg.major    = major;
+   msg.minor    = minor;
+   msg.ref      = ref;
+   msg.ref_to   = ref_to;
+   msg.response = response;
+   msg.size     = size;
+   head = (int *)dat;
+   s = 4;
+   CLENC(major);
+   *head = md;
+   CLENC(minor);
+   *head |= md << (4 * 1);
+   CLENC(ref);
+   *head |= md << (4 * 2);
+   CLENC(ref_to);
+   *head |= md << (4 * 3);
+   CLENC(response);
+   *head |= md << (4 * 4);
+   CLENC(size);
+   *head |= md << (4 * 5);
+   *head = htonl(*head);
+   cl->prev.o = msg;
+   ret = ecore_con_client_send(cl->client, dat, s);
+   if (size > 0) ret += ecore_con_client_send(cl->client, data, size);
+   return ret;
+}
+
+/**
+ * Retrieves the IPC server that the given IPC client is connected to.
+ * @param   cl The given IPC client.
+ * @return  The IPC server the IPC client is connected to.
+ * @ingroup Ecore_IPC_Client_Group
+ */
+EAPI Ecore_Ipc_Server *
+ecore_ipc_client_server_get(Ecore_Ipc_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_server_get");
+       return NULL;
+     }
+   return (ecore_con_server_data_get(ecore_con_client_server_get(cl->client)));
+}
+
+/**
+ * Closes the connection and frees memory allocated to the given IPC
+ * client.
+ * @param   cl The given client.
+ * @return  Data associated with the client.
+ * @ingroup Ecore_IPC_Client_Group
+ */
+EAPI void *
+ecore_ipc_client_del(Ecore_Ipc_Client *cl)
+{
+   void *data;
+   Ecore_Ipc_Server *svr;
+
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_del");
+       return NULL;
+     }
+   data = cl->data;
+   cl->data = NULL;
+   cl->delete_me = 1;
+   if (cl->event_count == 0)
+     {
+       svr = ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
+       ecore_con_client_del(cl->client);
+       svr->clients = _ecore_list2_remove(svr->clients, cl);
+       if (cl->buf) free(cl->buf);
+       ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
+       free(cl);
+     }
+   return data;
+}
+
+/**
+ * Sets the IPC data associated with the given IPC client to @p data.
+ * @param   cl   The given IPC client.
+ * @param   data The data to associate with the IPC client.
+ * @ingroup Ecore_IPC_Client_Group
+ */
+EAPI void
+ecore_ipc_client_data_set(Ecore_Ipc_Client *cl, const void *data)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_data_set");
+       return;
+     }
+   cl->data = (void *)data;
+}
+
+/**
+ * Retrieves the data that has been associated with the given IPC client.
+ * @param   cl The given client.
+ * @return  The data associated with the IPC client.
+ * @ingroup Ecore_IPC_Client_Group
+ */
+EAPI void *
+ecore_ipc_client_data_get(Ecore_Ipc_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_data_get");
+       return NULL;
+     }
+   return cl->data;
+}
+
+/**
+ * Sets the max data payload size for an Ipc message in bytes
+ *
+ * @param   client        The given client.
+ * @param   size          The maximum data payload size in bytes.
+ * @ingroup Ecore_Ipc_Client_Group
+ */
+EAPI void
+ecore_ipc_client_data_size_max_set(Ecore_Ipc_Client *cl, int size)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_data_size_max_set");
+       return;
+     }
+   cl->max_buf_size = size;
+}
+
+/**
+ * Sets the max data payload size for an Ipc message in bytes
+ *
+ * @param   cl            The given client.
+ * @param   size          The maximum data payload size in bytes.
+ * @ingroup Ecore_Ipc_Client_Group
+ */
+EAPI int
+ecore_ipc_client_data_size_max_get(Ecore_Ipc_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_data_size_max_get");
+       return -1;
+     }
+   return cl->max_buf_size;
+}
+
+/**
+ * Gets the IP address of a client that has been connected to.
+ *
+ * @param   cl            The given client.
+ * @return  A pointer to an internal string that contains the IP address of
+ *          the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
+ *          This string should not be modified or trusted to stay valid after
+ *          deletion for the @p cl object. If no IP is known NULL is returned.
+ * @ingroup Ecore_Ipc_Client_Group
+ */
+EAPI char *
+ecore_ipc_client_ip_get(Ecore_Ipc_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_ip_get");
+       return NULL;
+     }
+   return ecore_con_client_ip_get(cl->client);
+}
+
+/**
+ * Flushes all pending data to the given client. Will return when done.
+ *
+ * @param   cl            The given client.
+ * @ingroup Ecore_Ipc_Client_Group
+ */
+EAPI void
+ecore_ipc_client_flush(Ecore_Ipc_Client *cl)
+{
+   if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
+     {
+       ECORE_MAGIC_FAIL(cl, ECORE_MAGIC_IPC_CLIENT,
+                        "ecore_ipc_client_flush");
+       return;
+     }
+   ecore_con_client_flush(cl->client);
+}
+
+/**
+ * Returns if SSL support is available
+ * @return  1 if SSL is available, 0 if it is not.
+ * @ingroup Ecore_Con_Client_Group
+ */
+EAPI int
+ecore_ipc_ssl_available_get(void)
+{
+   return ecore_con_ssl_available_get();
+}
+
+
+static int
+_ecore_ipc_event_client_add(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Add *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Client *cl;
+       Ecore_Ipc_Server *svr;
+
+       cl = calloc(1, sizeof(Ecore_Ipc_Client));
+       if (!cl) return 0;
+       svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
+       ECORE_MAGIC_SET(cl, ECORE_MAGIC_IPC_CLIENT);
+       cl->client = e->client;
+       cl->max_buf_size = 32 * 1024;
+       ecore_con_client_data_set(cl->client, (void *)cl);
+       svr->clients = _ecore_list2_append(svr->clients, cl);
+       ecore_list_append(svr->client_list, cl);
+       if (!cl->delete_me)
+         {
+            Ecore_Ipc_Event_Client_Add *e2;
+
+            e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Add));
+            if (e2)
+              {
+                  cl->event_count++;
+                 e2->client = cl;
+                 ecore_event_add(ECORE_IPC_EVENT_CLIENT_ADD, e2,
+                                 _ecore_ipc_event_client_add_free, NULL);
+              }
+         }
+     }
+   return 0;
+}
+
+static int
+_ecore_ipc_event_client_del(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Del *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Client *cl;
+
+       cl = ecore_con_client_data_get(e->client);
+         {
+            Ecore_Ipc_Event_Client_Del *e2;
+            Ecore_Ipc_Server *svr;
+
+            svr = ecore_con_server_data_get(ecore_con_client_server_get(e->client));
+            ecore_list_goto(svr->client_list, cl);
+            ecore_list_remove(svr->client_list);
+            ecore_list_first_goto(svr->client_list);
+            if (!cl->delete_me)
+              {
+                 e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Del));
+                 if (e2)
+                   {
+                      cl->event_count++;
+                      e2->client = cl;
+                      ecore_event_add(ECORE_IPC_EVENT_CLIENT_DEL, e2,
+                                      _ecore_ipc_event_client_del_free, NULL);
+                   }
+              }
+         }
+     }
+   return 0;
+}
+
+static int
+_ecore_ipc_event_server_add(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Add *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Server *svr;
+
+       svr = ecore_con_server_data_get(e->server);
+       if (!svr->delete_me)
+         {
+            Ecore_Ipc_Event_Server_Add *e2;
+
+            e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Add));
+            if (e2)
+              {
+                  svr->event_count++;
+                 e2->server = svr;
+                 ecore_event_add(ECORE_IPC_EVENT_SERVER_ADD, e2,
+                                 _ecore_ipc_event_server_add_free, NULL);
+              }
+         }
+     }
+   return 0;
+}
+
+static int
+_ecore_ipc_event_server_del(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Del *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Server *svr;
+
+       svr = ecore_con_server_data_get(e->server);
+       if (!svr->delete_me)
+         {
+            Ecore_Ipc_Event_Server_Del *e2;
+
+            e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Del));
+            if (e2)
+              {
+                  svr->event_count++;
+                 e2->server = svr;
+                 ecore_event_add(ECORE_IPC_EVENT_SERVER_DEL, e2,
+                                 _ecore_ipc_event_server_del_free, NULL);
+              }
+         }
+     }
+   return 0;
+}
+
+#define CLSZ(_n) \
+   md = ((head >> (4 * _n)) & 0xf); \
+   if (md >= DLT_SET) s += 4; \
+   else if (md >= DLT_ADD16) s += 2; \
+   else if (md >= DLT_ADD8) s += 1;
+
+#define CLDEC(_n, _member) \
+   md = ((head >> (4 * _n)) & 0xf); \
+   if (md >= DLT_SET) \
+     { \
+       unsigned int v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(cl->buf + offset + s + 0); \
+       dv[1] = *(cl->buf + offset + s + 1); \
+       dv[2] = *(cl->buf + offset + s + 2); \
+       dv[3] = *(cl->buf + offset + s + 3); \
+       d = (int)ntohl(v); \
+       s += 4; \
+     } \
+   else if (md >= DLT_ADD16) \
+     { \
+       unsigned short v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(cl->buf + offset + s + 0); \
+       dv[1] = *(cl->buf + offset + s + 1); \
+       d = (int)ntohs(v); \
+       s += 2; \
+     } \
+   else if (md >= DLT_ADD8) \
+     { \
+       unsigned char v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(cl->buf + offset + s + 0); \
+       d = (int)v; \
+       s += 1; \
+     } \
+   msg._member = _ecore_ipc_ddlt_int(d, cl->prev.i._member, md);
+
+static int
+_ecore_ipc_event_client_data(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Client_Data *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Client *cl;
+       Ecore_Ipc_Msg_Head msg;
+       int offset = 0;
+       unsigned char *buf;
+
+       cl = ecore_con_client_data_get(e->client);
+
+       if (!cl->buf)
+         {
+            cl->buf_size = e->size;
+            cl->buf = e->data;
+            e->data = NULL; /* take it out of the old event */
+         }
+       else
+         {
+            buf = realloc(cl->buf, cl->buf_size + e->size);
+            if (!buf)
+              {
+                 free(cl->buf);
+                 cl->buf = 0;
+                 cl->buf_size  = 0;
+                 return 0;
+              }
+            cl->buf = buf;
+            memcpy(cl->buf + cl->buf_size, e->data, e->size);
+            cl->buf_size += e->size;
+         }
+       /* examine header */
+       redo:
+       if ((cl->buf_size - offset) >= (int)sizeof(int))
+         {
+            int s, md, d = 0, head;
+            unsigned char *dd;
+
+            dd = (unsigned char *)&head;
+            dd[0] = *(cl->buf + offset + 0);
+            dd[1] = *(cl->buf + offset + 1);
+            dd[2] = *(cl->buf + offset + 2);
+            dd[3] = *(cl->buf + offset + 3);
+            head = ntohl(head);
+            dd = (unsigned char *)&d;
+            s = 4;
+            CLSZ(0);
+            CLSZ(1);
+            CLSZ(2);
+            CLSZ(3);
+            CLSZ(4);
+            CLSZ(5);
+            if ((cl->buf_size - offset) < s)
+              {
+                 if (offset > 0) goto scroll;
+                 return 0;
+              }
+
+            s = 4;
+            CLDEC(0, major);
+            CLDEC(1, minor);
+            CLDEC(2, ref);
+            CLDEC(3, ref_to);
+            CLDEC(4, response);
+            CLDEC(5, size);
+            if (msg.size < 0) msg.size = 0;
+            /* there is enough data in the buffer for a full message */
+            if ((cl->buf_size - offset) >= (s + msg.size))
+              {
+                 Ecore_Ipc_Event_Client_Data *e2;
+                 Ecore_Ipc_Server *svr;
+                 int max, max2;
+
+                 buf = NULL;
+                 svr = ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
+                 max = svr->max_buf_size;
+                 max2 = cl->max_buf_size;
+                 if ((max >= 0) && (max2 >= 0))
+                   {
+                      if (max2 < max) max = max2;
+                   }
+                 else
+                   {
+                      if (max < 0) max = max2;
+                   }
+                 if ((max < 0) || (msg.size <= max))
+                   {
+                      if (msg.size > 0)
+                        {
+                           buf = malloc(msg.size);
+                           if (!buf) return 0;
+                           memcpy(buf, cl->buf + offset + s, msg.size);
+                        }
+                      if (!cl->delete_me)
+                        {
+                           e2 = calloc(1, sizeof(Ecore_Ipc_Event_Client_Data));
+                           if (e2)
+                             {
+                                cl->event_count++;
+                                e2->client   = cl;
+                                e2->major    = msg.major;
+                                e2->minor    = msg.minor;
+                                e2->ref      = msg.ref;
+                                e2->ref_to   = msg.ref_to;
+                                e2->response = msg.response;
+                                e2->size     = msg.size;
+                                e2->data     = buf;
+                                ecore_event_add(ECORE_IPC_EVENT_CLIENT_DATA, e2,
+                                                _ecore_ipc_event_client_data_free,
+                                                NULL);
+                             }
+                        }
+                   }
+                 cl->prev.i = msg;
+                 offset += (s + msg.size);
+                 if (cl->buf_size == offset)
+                   {
+                      free(cl->buf);
+                      cl->buf = NULL;
+                      cl->buf_size = 0;
+                      return 0;
+                   }
+                 goto redo;
+              }
+            else goto scroll;
+         }
+       else
+         {
+            scroll:
+            buf = malloc(cl->buf_size - offset);
+            if (!buf)
+              {
+                 free(cl->buf);
+                 cl->buf = NULL;
+                 cl->buf_size = 0;
+                 return 0;
+              }
+            memcpy(buf, cl->buf + offset, cl->buf_size - offset);
+            free(cl->buf);
+            cl->buf = buf;
+            cl->buf_size -= offset;
+         }
+     }
+   return 0;
+}
+
+#define SVSZ(_n) \
+   md = ((head >> (4 * _n)) & 0xf); \
+   if (md >= DLT_SET) s += 4; \
+   else if (md >= DLT_ADD16) s += 2; \
+   else if (md >= DLT_ADD8) s += 1;
+
+#define SVDEC(_n, _member) \
+   md = ((head >> (4 * _n)) & 0xf); \
+   if (md >= DLT_SET) \
+     { \
+       unsigned int v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(svr->buf + offset + s + 0); \
+       dv[1] = *(svr->buf + offset + s + 1); \
+       dv[2] = *(svr->buf + offset + s + 2); \
+       dv[3] = *(svr->buf + offset + s + 3); \
+       d = (int)ntohl(v); \
+       s += 4; \
+     } \
+   else if (md >= DLT_ADD16) \
+     { \
+       unsigned short v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(svr->buf + offset + s + 0); \
+       dv[1] = *(svr->buf + offset + s + 1); \
+       d = (int)ntohs(v); \
+       s += 2; \
+     } \
+   else if (md >= DLT_ADD8) \
+     { \
+       unsigned char v; \
+       unsigned char *dv; \
+       dv = (unsigned char *)&v; \
+       dv[0] = *(svr->buf + offset + s + 0); \
+       d = (int)v; \
+       s += 1; \
+     } \
+   msg._member = _ecore_ipc_ddlt_int(d, svr->prev.i._member, md);
+
+static int
+_ecore_ipc_event_server_data(void *data __UNUSED__, int ev_type __UNUSED__, void *ev)
+{
+   Ecore_Con_Event_Server_Data *e;
+
+   e = ev;
+   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) return 1;
+   /* handling code here */
+     {
+       Ecore_Ipc_Server *svr;
+       Ecore_Ipc_Msg_Head msg;
+       int offset = 0;
+       unsigned char *buf;
+
+       svr = ecore_con_server_data_get(e->server);
+
+       if (!svr->buf)
+         {
+            svr->buf_size = e->size;
+            svr->buf = e->data;
+            e->data = NULL; /* take it out of the old event */
+         }
+       else
+         {
+            buf = realloc(svr->buf, svr->buf_size + e->size);
+            if (!buf)
+              {
+                 free(svr->buf);
+                 svr->buf = 0;
+                 svr->buf_size  = 0;
+                 return 0;
+              }
+            svr->buf = buf;
+            memcpy(svr->buf + svr->buf_size, e->data, e->size);
+            svr->buf_size += e->size;
+         }
+       /* examine header */
+       redo:
+       if ((svr->buf_size - offset) >= (int)sizeof(int))
+         {
+            int s, md, d = 0, head;
+            unsigned char *dd;
+
+            dd = (unsigned char *)&head;
+            dd[0] = *(svr->buf + offset + 0);
+            dd[1] = *(svr->buf + offset + 1);
+            dd[2] = *(svr->buf + offset + 2);
+            dd[3] = *(svr->buf + offset + 3);
+            head = ntohl(head);
+            dd = (unsigned char *)&d;
+            s = 4;
+            SVSZ(0);
+            SVSZ(1);
+            SVSZ(2);
+            SVSZ(3);
+            SVSZ(4);
+            SVSZ(5);
+            if ((svr->buf_size - offset) < s)
+              {
+                 if (offset > 0) goto scroll;
+                 return 0;
+              }
+
+            s = 4;
+            SVDEC(0, major);
+            SVDEC(1, minor);
+            SVDEC(2, ref);
+            SVDEC(3, ref_to);
+            SVDEC(4, response);
+            SVDEC(5, size);
+            if (msg.size < 0) msg.size = 0;
+            /* there is enough data in the buffer for a full message */
+            if ((svr->buf_size - offset) >= (s + msg.size))
+              {
+                 Ecore_Ipc_Event_Server_Data *e2;
+                 int max;
+
+                 buf = NULL;
+                 max = svr->max_buf_size;
+                 if ((max < 0) || (msg.size <= max))
+                   {
+                      if (msg.size > 0)
+                        {
+                           buf = malloc(msg.size);
+                           if (!buf) return 0;
+                           memcpy(buf, svr->buf + offset + s, msg.size);
+                        }
+                      if (!svr->delete_me)
+                        {
+                           e2 = calloc(1, sizeof(Ecore_Ipc_Event_Server_Data));
+                           if (e2)
+                             {
+                                svr->event_count++;
+                                e2->server   = svr;
+                                e2->major    = msg.major;
+                                e2->minor    = msg.minor;
+                                e2->ref      = msg.ref;
+                                e2->ref_to   = msg.ref_to;
+                                e2->response = msg.response;
+                                e2->size     = msg.size;
+                                e2->data     = buf;
+                                ecore_event_add(ECORE_IPC_EVENT_SERVER_DATA, e2,
+                                                _ecore_ipc_event_server_data_free,
+                                                NULL);
+                             }
+                        }
+                   }
+                 svr->prev.i = msg;
+                 offset += (s + msg.size);
+                 if (svr->buf_size == offset)
+                   {
+                      free(svr->buf);
+                      svr->buf = NULL;
+                      svr->buf_size = 0;
+                      return 0;
+                   }
+                 goto redo;
+              }
+            else goto scroll;
+         }
+       else
+         {
+            scroll:
+            buf = malloc(svr->buf_size - offset);
+            if (!buf)
+              {
+                 free(svr->buf);
+                 svr->buf = NULL;
+                 svr->buf_size = 0;
+                 return 0;
+              }
+            memcpy(buf, svr->buf + offset, svr->buf_size - offset);
+            free(svr->buf);
+            svr->buf = buf;
+            svr->buf_size -= offset;
+         }
+     }
+   return 0;
+}
+
+static void
+_ecore_ipc_event_client_add_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Client_Add *e;
+
+   e = ev;
+   e->client->event_count--;
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_ipc_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_ipc_event_client_del_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Client_Del *e;
+
+   e = ev;
+   e->client->event_count--;
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_ipc_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_ipc_event_client_data_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Client_Data *e;
+
+   e = ev;
+   e->client->event_count--;
+   if (e->data) free(e->data);
+   if ((e->client->event_count == 0) && (e->client->delete_me))
+     ecore_ipc_client_del(e->client);
+   free(e);
+}
+
+static void
+_ecore_ipc_event_server_add_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Server_Add *e;
+
+   e = ev;
+   e->server->event_count--;
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_ipc_server_del(e->server);
+   free(e);
+}
+
+static void
+_ecore_ipc_event_server_del_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Server_Add *e;
+
+   e = ev;
+   e->server->event_count--;
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_ipc_server_del(e->server);
+   free(e);
+}
+
+static void
+_ecore_ipc_event_server_data_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Ipc_Event_Server_Data *e;
+
+   e = ev;
+   if (e->data) free(e->data);
+   e->server->event_count--;
+   if ((e->server->event_count == 0) && (e->server->delete_me))
+     ecore_ipc_server_del(e->server);
+   free(e);
+}
diff --git a/src/lib/ecore_ipc/ecore_ipc_private.h b/src/lib/ecore_ipc/ecore_ipc_private.h
new file mode 100644 (file)
index 0000000..2eb6f98
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ECORE_IPC_PRIVATE_H
+#define _ECORE_IPC_PRIVATE_H
+
+#include "Ecore_Data.h"
+
+#if USE_OPENSSL
+#include <openssl/ssl.h>
+#endif
+
+#define ECORE_MAGIC_IPC_SERVER             0x87786556
+#define ECORE_MAGIC_IPC_CLIENT             0x78875665
+
+typedef struct _Ecore_Ipc_Client Ecore_Ipc_Client;
+typedef struct _Ecore_Ipc_Server Ecore_Ipc_Server;
+typedef struct _Ecore_Ipc_Msg_Head Ecore_Ipc_Msg_Head;
+
+
+#ifdef __sgi
+#pragma pack 4
+#endif
+struct _Ecore_Ipc_Msg_Head
+{
+      int major;
+      int minor;
+      int ref;
+      int ref_to;
+      int response;
+      int size;
+} 
+#ifdef _GNU_C_
+__attribute__ ((packed));
+#endif
+;
+#ifdef __sgi
+#pragma pack 0
+#endif
+
+struct _Ecore_Ipc_Client
+{
+   Ecore_List        __list_data;
+   ECORE_MAGIC;
+   Ecore_Con_Client  *client;
+   void              *data;
+   unsigned char     *buf;
+   int                buf_size;
+   int                max_buf_size;
+   
+   struct {
+      Ecore_Ipc_Msg_Head i, o;
+   } prev;
+   
+   int               event_count;
+   char              delete_me : 1;
+};
+   
+struct _Ecore_Ipc_Server
+{
+   Ecore_List        __list_data;
+   ECORE_MAGIC;
+   Ecore_Con_Server *server;
+   Ecore_Ipc_Client *clients;
+   Ecore_List       *client_list;
+   void              *data;
+   unsigned char     *buf;
+   int                buf_size;
+   int                max_buf_size;
+
+   struct {
+      Ecore_Ipc_Msg_Head i, o;
+   } prev;
+   
+   int               event_count;
+   char              delete_me : 1;
+};
+
+#endif
diff --git a/src/lib/ecore_job/.cvsignore b/src/lib/ecore_job/.cvsignore
new file mode 100644 (file)
index 0000000..0aac4af
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+ecore_job.lo
+libecore_job.la
diff --git a/src/lib/ecore_job/Ecore_Job.h b/src/lib/ecore_job/Ecore_Job.h
new file mode 100644 (file)
index 0000000..9276cfc
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_JOB_H
+#define _ECORE_JOB_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_JOB_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_JOB_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file
+ * @brief Functions for dealing with Ecore jobs.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _ECORE_JOB_PRIVATE_H
+typedef void Ecore_Job; /**< A job handle */
+#endif
+
+EAPI int        ecore_job_init(void);
+EAPI int        ecore_job_shutdown(void);
+EAPI Ecore_Job *ecore_job_add(void (*func) (void *data), const void *data);
+EAPI void      *ecore_job_del(Ecore_Job *job);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_job/Makefile.am b/src/lib/ecore_job/Makefile.am
new file mode 100644 (file)
index 0000000..31c21b4
--- /dev/null
@@ -0,0 +1,32 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ECORE_JOB
+
+lib_LTLIBRARIES = libecore_job.la
+include_HEADERS = \
+Ecore_Job.h
+
+libecore_job_la_SOURCES = \
+ecore_job.c \
+ecore_job_private.h
+
+libecore_job_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+libecore_job_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+libecore_job_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+Ecore_Job.h \
+ecore_job.c \
+ecore_job_private.h
diff --git a/src/lib/ecore_job/ecore_job.c b/src/lib/ecore_job/ecore_job.c
new file mode 100644 (file)
index 0000000..44ac1e0
--- /dev/null
@@ -0,0 +1,115 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "Ecore.h"
+#include "ecore_private.h"
+#include "ecore_job_private.h"
+#include "Ecore_Job.h"
+
+static int _ecore_job_event_handler(void *data, int type, void *ev);
+static void _ecore_job_event_free(void *data, void *ev);
+    
+static int ecore_event_job_type = 0;
+static int _ecore_init_job_count = 0;
+static Ecore_Event_Handler* _ecore_job_handler = NULL;
+
+EAPI int
+ecore_job_init(void)
+{
+   if (++_ecore_init_job_count == 1)
+     {
+        ecore_init();
+       ecore_event_job_type = ecore_event_type_new();
+       _ecore_job_handler = ecore_event_handler_add(ecore_event_job_type, _ecore_job_event_handler, NULL);
+     }
+
+   return _ecore_init_job_count;
+}
+
+EAPI int
+ecore_job_shutdown(void)
+{
+   if (--_ecore_init_job_count)
+     return _ecore_init_job_count;
+
+   ecore_event_handler_del(_ecore_job_handler);
+   _ecore_job_handler = NULL;
+   ecore_shutdown();
+
+   return _ecore_init_job_count;
+}
+
+/**
+ * Add a job to the event queue.
+ * @param   func The function to call when the job gets handled.
+ * @param   data Data pointer to be passed to the job function when the job is
+ *               handled.
+ * @return  The handle of the job.  @c NULL is returned if the job could not be
+ *          added to the queue.
+ * @ingroup Ecore_Job_Group
+ * @note    Once the job has been executed, the job handle is invalid.
+ */
+EAPI Ecore_Job *
+ecore_job_add(void (*func) (void *data), const void *data)
+{
+   Ecore_Job *job;
+   
+   if (!func) return NULL;
+
+   job = calloc(1, sizeof(Ecore_Job));
+   if (!job) return NULL;
+   ECORE_MAGIC_SET(job, ECORE_MAGIC_JOB);
+   job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, NULL);
+   if (!job->event)
+     {
+       free(job);
+       return NULL;
+     }
+   job->func = func;
+   job->data = (void *)data;
+   return job;
+}
+
+/**
+ * Delete a queued job that has not yet been executed.
+ * @param   job  Handle of the job to delete.
+ * @return  The data pointer that was to be passed to the job.
+ * @ingroup Ecore_Job_Group
+ */
+EAPI void *
+ecore_job_del(Ecore_Job *job)
+{
+   void *data;
+   
+   if (!ECORE_MAGIC_CHECK(job, ECORE_MAGIC_JOB))
+     {
+       ECORE_MAGIC_FAIL(job, ECORE_MAGIC_JOB,
+                        "ecore_job_del");
+       return NULL;
+     }
+   data = job->data;
+   ECORE_MAGIC_SET(job, ECORE_MAGIC_NONE);
+   ecore_event_del(job->event);
+   return data;
+}
+
+static int
+_ecore_job_event_handler(void *data __UNUSED__, int type __UNUSED__, void *ev)
+{
+   Ecore_Job *job;
+   
+   job = ev;
+   job->func(job->data);
+   return 0;
+}
+
+static void
+_ecore_job_event_free(void *data __UNUSED__, void *ev)
+{
+   Ecore_Job *job;
+   
+   job = ev;
+   free(ev);
+}
diff --git a/src/lib/ecore_job/ecore_job_private.h b/src/lib/ecore_job/ecore_job_private.h
new file mode 100644 (file)
index 0000000..d5795f2
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef _ECORE_JOB_PRIVATE_H
+#define _ECORE_JOB_PRIVATE_H
+
+#define ECORE_MAGIC_JOB             0x76543210
+
+typedef struct _Ecore_Job Ecore_Job;
+
+struct _Ecore_Job
+{
+   ECORE_MAGIC;
+   Ecore_Event  *event;
+   void        (*func) (void *data);
+   void         *data;
+};
+
+#endif
diff --git a/src/lib/ecore_sdl/.cvsignore b/src/lib/ecore_sdl/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_sdl/Ecore_Sdl.h b/src/lib/ecore_sdl/Ecore_Sdl.h
new file mode 100644 (file)
index 0000000..ea81358
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_SDL_H
+#define _ECORE_SDL_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_SDL_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_SDL_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file
+ * @brief Ecore SDL system functions.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EAPI extern int ECORE_SDL_EVENT_KEY_DOWN; /**< SDL Key Down event */
+EAPI extern int ECORE_SDL_EVENT_KEY_UP; /**< SDL Key Up event */
+EAPI extern int ECORE_SDL_EVENT_MOUSE_BUTTON_DOWN; /**< SDL Mouse Down event */
+EAPI extern int ECORE_SDL_EVENT_MOUSE_BUTTON_UP; /**< SDL Mouse Up event */
+EAPI extern int ECORE_SDL_EVENT_MOUSE_MOVE; /**< SDL Mouse Move event */
+EAPI extern int ECORE_SDL_EVENT_MOUSE_WHEEL; /**< SDL Mouse Wheel event */
+EAPI extern int ECORE_SDL_EVENT_GOT_FOCUS; /**< SDL Mouse Wheel event */
+EAPI extern int ECORE_SDL_EVENT_LOST_FOCUS; /**< SDL Mouse Wheel event */
+EAPI extern int ECORE_SDL_EVENT_RESIZE;
+EAPI extern int ECORE_SDL_EVENT_EXPOSE;
+
+typedef struct _Ecore_Sdl_Event_Key_Down Ecore_Sdl_Event_Key_Down;
+struct _Ecore_Sdl_Event_Key_Down /** SDL Key Down event */
+{
+        const char      *keyname; /**< The name of the key that was pressed */
+        const char      *keycompose; /**< The UTF-8 string conversion if any */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Key_Up Ecore_Sdl_Event_Key_Up;
+struct _Ecore_Sdl_Event_Key_Up /** SDL Key Up event */
+{
+        const char      *keyname; /**< The name of the key that was released */
+        const char      *keycompose; /**< The UTF-8 string conversion if any */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Mouse_Button_Down Ecore_Sdl_Event_Mouse_Button_Down;
+struct _Ecore_Sdl_Event_Mouse_Button_Down /** SDL Mouse Down event */
+{
+       int             button; /**< Mouse button that was pressed (1 - 32) */
+       int             x; /**< Mouse co-ordinates when mouse button was pressed */
+       int             y; /**< Mouse co-ordinates when mouse button was pressed */
+       int             double_click : 1; /**< Set if click was a double click */
+       int             triple_click : 1; /**< Set if click was a triple click  */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Mouse_Button_Up Ecore_Sdl_Event_Mouse_Button_Up;
+struct _Ecore_Sdl_Event_Mouse_Button_Up /** SDL Mouse Up event */
+{
+       int             button; /**< Mouse button that was released (1 - 32) */
+       int             x; /**< Mouse co-ordinates when mouse button was raised */
+       int             y; /**< Mouse co-ordinates when mouse button was raised */
+       int             double_click : 1; /**< Set if click was a double click */
+       int             triple_click : 1; /**< Set if click was a triple click  */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Mouse_Move Ecore_Sdl_Event_Mouse_Move;
+struct _Ecore_Sdl_Event_Mouse_Move /** SDL Mouse Move event */ 
+{
+       int             x; /**< Mouse co-ordinates where the mouse cursor moved to */
+       int             y; /**< Mouse co-ordinates where the mouse cursor moved to */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Mouse_Wheel Ecore_Sdl_Event_Mouse_Wheel;
+struct _Ecore_Sdl_Event_Mouse_Wheel /** SDL Mouse Wheel event */
+{
+       int             x,y;
+       int             direction; /* 0 = vertical, 1 = horizontal */
+       int             wheel; /* value 1 (left/up), -1 (right/down) */
+        unsigned int    time;
+};
+
+typedef struct _Ecore_Sdl_Event_Video_Resize Ecore_Sdl_Event_Video_Resize;
+struct _Ecore_Sdl_Event_Video_Resize
+{
+        int             w;
+        int             h;
+};
+
+EAPI int        ecore_sdl_init(const char *name);
+EAPI int        ecore_sdl_shutdown(void);
+EAPI void       ecore_sdl_feed_events(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_sdl/Ecore_Sdl_Keys.h b/src/lib/ecore_sdl/Ecore_Sdl_Keys.h
new file mode 100644 (file)
index 0000000..8e5a7a0
--- /dev/null
@@ -0,0 +1,263 @@
+#ifndef         ECORE_SDL_KEYS_H__
+# define        ECORE_SDL_KEYS_H__
+
+struct _ecore_sdl_keys_s
+{
+   int          code;
+   const char*  name;
+   const char*  compose;
+};
+
+static const struct _ecore_sdl_keys_s  keystable[] =
+{
+   { SDLK_UNKNOWN,      "0x00",         "" },
+   { SDLK_FIRST,        "First",        "" },
+   { SDLK_BACKSPACE,    "BackSpace",    "\010" },
+   { SDLK_TAB,          "Tab",          "\011" },
+   { SDLK_CLEAR,        "Clear",        "" },
+   { SDLK_RETURN,       "Return",       "\015" },
+   { SDLK_PAUSE,        "Pause",        "" },
+   { SDLK_ESCAPE,       "Escape",       "" },
+   { SDLK_SPACE,        "space",        " " },
+   { SDLK_EXCLAIM,      "exclam",       "!" },
+   { SDLK_QUOTEDBL,     "quotedbl",     "\"" },
+   { SDLK_HASH,         "numbersign",   "#" },
+   { SDLK_DOLLAR,       "dollar",       "$" },
+   { SDLK_AMPERSAND,    "ampersand",    "&" },
+   { SDLK_QUOTE,        "apostrophe",   "'" },
+   { SDLK_LEFTPAREN,    "parenleft",    "(" },
+   { SDLK_RIGHTPAREN,   "parenright",   ")" },
+   { SDLK_ASTERISK,     "asterik",      "*" },
+   { SDLK_PLUS,         "plus",         "+" },
+   { SDLK_COMMA,        "comma",        "," },
+   { SDLK_MINUS,        "minus",        "-" },
+   { SDLK_PERIOD,       "period",       "." },
+   { SDLK_SLASH,        "slash",        "/" },
+   { SDLK_0,            "0",            "0" },
+   { SDLK_1,            "1",            "1" },
+   { SDLK_2,            "2",            "2" },
+   { SDLK_3,            "3",            "3" },
+   { SDLK_4,            "4",            "4" },
+   { SDLK_5,            "5",            "5" },
+   { SDLK_6,            "6",            "6" },
+   { SDLK_7,            "7",            "7" },
+   { SDLK_8,            "8",            "8" },
+   { SDLK_9,            "9",            "9" },
+   { SDLK_COLON,        "colon",        ";" },
+   { SDLK_SEMICOLON,    "semicolon",    ";" },
+   { SDLK_LESS,         "less",         "<" },
+   { SDLK_EQUALS,       "equal",        "=" },
+   { SDLK_GREATER,      "greater",      ">" },
+   { SDLK_QUESTION,     "question",     "?" },
+   { SDLK_AT,           "at",           "@" },
+
+   /* Skip uppercase letters */
+   { SDLK_LEFTBRACKET,  "bracketleft",  "[" },
+   { SDLK_BACKSLASH,    "backslash",    "\\" },
+   { SDLK_RIGHTBRACKET, "bracketright", "]" },
+   { SDLK_CARET,        "asciicircumm", "^" },
+   { SDLK_UNDERSCORE,   "underscore",   "_" },
+   { SDLK_BACKQUOTE,    "asciitilde",   "`" },
+   { SDLK_a,            "a",            "a" },
+   { SDLK_b,            "b",            "b" },
+   { SDLK_c,            "c",            "c" },
+   { SDLK_d,            "d",            "d" },
+   { SDLK_e,            "e",            "e" },
+   { SDLK_f,            "f",            "f" },
+   { SDLK_g,            "g",            "g" },
+   { SDLK_h,            "h",            "h" },
+   { SDLK_i,            "i",            "i" },
+   { SDLK_j,            "j",            "j" },
+   { SDLK_k,            "k",            "k" },
+   { SDLK_l,            "l",            "l" },
+   { SDLK_m,            "m",            "m" },
+   { SDLK_n,            "n",            "n" },
+   { SDLK_o,            "o",            "o" },
+   { SDLK_p,            "p",            "p" },
+   { SDLK_q,            "q",            "q" },
+   { SDLK_r,            "r",            "r" },
+   { SDLK_s,            "s",            "s" },
+   { SDLK_t,            "t",            "t" },
+   { SDLK_u,            "u",            "u" },
+   { SDLK_v,            "v",            "v" },
+   { SDLK_w,            "w",            "w" },
+   { SDLK_x,            "x",            "x" },
+   { SDLK_y,            "y",            "y" },
+   { SDLK_z,            "z",            "z" },
+   { SDLK_DELETE,       "Delete",       "\177" },
+   /* End of ASCII mapped keysyms */
+
+   /* International keyboard syms */
+   { SDLK_WORLD_0,      "w0",           "" }, /* 0xA0 */
+   { SDLK_WORLD_1,      "w1",           "" },
+   { SDLK_WORLD_2,      "w2",           "" },
+   { SDLK_WORLD_3,      "w3",           "" },
+   { SDLK_WORLD_4,      "w4",           "" },
+   { SDLK_WORLD_5,      "w5",           "" },
+   { SDLK_WORLD_6,      "w6",           "" },
+   { SDLK_WORLD_7,      "w7",           "" },
+   { SDLK_WORLD_8,      "w8",           "" },
+   { SDLK_WORLD_9,      "w9",           "" },
+   { SDLK_WORLD_10,     "w10",          "" },
+   { SDLK_WORLD_11,     "w11",          "" },
+   { SDLK_WORLD_12,     "w12",          "" },
+   { SDLK_WORLD_13,     "w13",          "" },
+   { SDLK_WORLD_14,     "w14",          "" },
+   { SDLK_WORLD_15,     "w15",          "" },
+   { SDLK_WORLD_16,     "w16",          "" },
+   { SDLK_WORLD_17,     "w17",          "" },
+   { SDLK_WORLD_18,     "w18",          "" },
+   { SDLK_WORLD_19,     "w19",          "" },
+   { SDLK_WORLD_20,     "w20",          "" },
+   { SDLK_WORLD_21,     "w21",          "" },
+   { SDLK_WORLD_22,     "w22",          "" },
+   { SDLK_WORLD_23,     "w23",          "" },
+   { SDLK_WORLD_24,     "w24",          "" },
+   { SDLK_WORLD_25,     "w25",          "" },
+   { SDLK_WORLD_26,     "w26",          "" },
+   { SDLK_WORLD_27,     "w27",          "" },
+   { SDLK_WORLD_28,     "w28",          "" },
+   { SDLK_WORLD_29,     "w29",          "" },
+   { SDLK_WORLD_30,     "w30",          "" },
+   { SDLK_WORLD_31,     "w31",          "" },
+   { SDLK_WORLD_32,     "w32",          "" },
+   { SDLK_WORLD_33,     "w33",          "" },
+   { SDLK_WORLD_34,     "w34",          "" },
+   { SDLK_WORLD_35,     "w35",          "" },
+   { SDLK_WORLD_36,     "w36",          "" },
+   { SDLK_WORLD_37,     "w37",          "" },
+   { SDLK_WORLD_38,     "w38",          "" },
+   { SDLK_WORLD_39,     "w39",          "" },
+   { SDLK_WORLD_40,     "w40",          "" },
+   { SDLK_WORLD_41,     "w41",          "" },
+   { SDLK_WORLD_42,     "w42",          "" },
+   { SDLK_WORLD_43,     "w43",          "" },
+   { SDLK_WORLD_44,     "w44",          "" },
+   { SDLK_WORLD_45,     "w45",          "" },
+   { SDLK_WORLD_46,     "w46",          "" },
+   { SDLK_WORLD_47,     "w47",          "" },
+   { SDLK_WORLD_48,     "w48",          "" },
+   { SDLK_WORLD_49,     "w49",          "" },
+   { SDLK_WORLD_50,     "w50",          "" },
+   { SDLK_WORLD_51,     "w51",          "" },
+   { SDLK_WORLD_52,     "w52",          "" },
+   { SDLK_WORLD_53,     "w53",          "" },
+   { SDLK_WORLD_54,     "w54",          "" },
+   { SDLK_WORLD_55,     "w55",          "" },
+   { SDLK_WORLD_56,     "w56",          "" },
+   { SDLK_WORLD_57,     "w57",          "" },
+   { SDLK_WORLD_58,     "w58",          "" },
+   { SDLK_WORLD_59,     "w59",          "" },
+   { SDLK_WORLD_60,     "w60",          "" },
+   { SDLK_WORLD_61,     "w61",          "" },
+   { SDLK_WORLD_62,     "w62",          "" },
+   { SDLK_WORLD_63,     "w63",          "" },
+   { SDLK_WORLD_64,     "w64",          "" },
+   { SDLK_WORLD_65,     "w65",          "" },
+   { SDLK_WORLD_66,     "w66",          "" },
+   { SDLK_WORLD_67,     "w67",          "" },
+   { SDLK_WORLD_68,     "w68",          "" },
+   { SDLK_WORLD_69,     "w69",          "" },
+   { SDLK_WORLD_70,     "w70",          "" },
+   { SDLK_WORLD_71,     "w71",          "" },
+   { SDLK_WORLD_72,     "w72",          "" },
+   { SDLK_WORLD_73,     "w73",          "" },
+   { SDLK_WORLD_74,     "w74",          "" },
+   { SDLK_WORLD_75,     "w75",          "" },
+   { SDLK_WORLD_76,     "w76",          "" },
+   { SDLK_WORLD_77,     "w77",          "" },
+   { SDLK_WORLD_78,     "w78",          "" },
+   { SDLK_WORLD_79,     "w79",          "" },
+   { SDLK_WORLD_80,     "w80",          "" },
+   { SDLK_WORLD_81,     "w81",          "" },
+   { SDLK_WORLD_82,     "w82",          "" },
+   { SDLK_WORLD_83,     "w83",          "" },
+   { SDLK_WORLD_84,     "w84",          "" },
+   { SDLK_WORLD_85,     "w85",          "" },
+   { SDLK_WORLD_86,     "w86",          "" },
+   { SDLK_WORLD_87,     "w87",          "" },
+   { SDLK_WORLD_88,     "w88",          "" },
+   { SDLK_WORLD_89,     "w89",          "" },
+   { SDLK_WORLD_90,     "w90",          "" },
+   { SDLK_WORLD_91,     "w91",          "" },
+   { SDLK_WORLD_92,     "w92",          "" },
+   { SDLK_WORLD_93,     "w93",          "" },
+   { SDLK_WORLD_94,     "w94",          "" },
+   { SDLK_WORLD_95,     "w95",          "" },
+
+   /* Numeric keypad */
+   { SDLK_KP0,          "KP0",          "0" },
+   { SDLK_KP1,          "KP1",          "1" },
+   { SDLK_KP2,          "KP2",          "2" },
+   { SDLK_KP3,          "KP3",          "3" },
+   { SDLK_KP4,          "KP4",          "4" },
+   { SDLK_KP5,          "KP5",          "5" },
+   { SDLK_KP6,          "KP6",          "6" },
+   { SDLK_KP7,          "KP7",          "7" },
+   { SDLK_KP8,          "KP8",          "8" },
+   { SDLK_KP9,          "KP9",          "9" },
+   { SDLK_KP_PERIOD,    "period",       "." },
+   { SDLK_KP_DIVIDE,    "KP_Divide",    "/" },
+   { SDLK_KP_MULTIPLY,  "KP_Multiply",  "*" },
+   { SDLK_KP_MINUS,     "KP_Minus",     "-" },
+   { SDLK_KP_PLUS,      "KP_Plus",      "+" },
+   { SDLK_KP_ENTER,     "KP_Enter",     "\015" },
+   { SDLK_KP_EQUALS,    "KP_Equals",    "=" },
+
+   /* Arrows + Home/End pad */
+   { SDLK_UP,           "Up",           "" },
+   { SDLK_DOWN,         "Down",         "" },
+   { SDLK_RIGHT,        "Right",        "" },
+   { SDLK_LEFT,         "Left",         "" },
+   { SDLK_INSERT,       "Insert",       "" },
+   { SDLK_HOME,         "Home",         "" },
+   { SDLK_END,          "End",          "" },
+   { SDLK_PAGEUP,       "Page_Up",      "" },
+   { SDLK_PAGEDOWN,     "Page_Down",    "" },
+
+   /* Function keys */
+   { SDLK_F1,           "F1",           "" },
+   { SDLK_F2,           "F2",           "" },
+   { SDLK_F3,           "F3",           "" },
+   { SDLK_F4,           "F4",           "" },
+   { SDLK_F5,           "F5",           "" },
+   { SDLK_F6,           "F6",           "" },
+   { SDLK_F7,           "F7",           "" },
+   { SDLK_F8,           "F8",           "" },
+   { SDLK_F9,           "F9",           "" },
+   { SDLK_F10,          "F10",          "" },
+   { SDLK_F11,          "F11",          "" },
+   { SDLK_F12,          "F12",          "" },
+   { SDLK_F13,          "F13",          "" },
+   { SDLK_F14,          "F14",          "" },
+   { SDLK_F15,          "F15",          "" },
+
+   /* Key state modifier keys */
+   { SDLK_NUMLOCK,      "Num_Lock",     "" },
+   { SDLK_CAPSLOCK,     "Caps_Lock",    "" },
+   { SDLK_SCROLLOCK,    "Scroll_Lock",  "" },
+   { SDLK_RSHIFT,       "Shift_R",      "" },
+   { SDLK_LSHIFT,       "Shift_L",      "" },
+   { SDLK_RCTRL,        "Control_R",    "" },
+   { SDLK_LCTRL,        "Control_L",    "" },
+   { SDLK_RALT,         "Alt_R",        "" },
+   { SDLK_LALT,         "Alt_L",        "" },
+   { SDLK_RMETA,        "Meta_R",       "" },
+   { SDLK_LMETA,        "Meta_L",       "" },
+   { SDLK_LSUPER,       "Super_L",      "" },   /* Left "Windows" key */
+   { SDLK_RSUPER,       "Super_R",      "" },   /* Right "Windows" key */
+   { SDLK_MODE,         "Mode",         "" },   /* "Alt Gr" key */
+   { SDLK_COMPOSE,      "Compose",      "" },   /* Multi-key compose key */
+
+   /* Miscellaneous function keys */
+   { SDLK_HELP,         "Help",         "" },
+   { SDLK_PRINT,        "Print",        "" },
+   { SDLK_SYSREQ,       "SysReq",       "" },
+   { SDLK_BREAK,        "Break",        "" },
+   { SDLK_MENU,         "Menu",         "" },
+   { SDLK_POWER,        "Power",        "" },   /* Power Macintosh power key */
+   { SDLK_EURO,         "Euro",         "" },   /* Some european keyboards */
+   { SDLK_UNDO,         "Undo",         "" }    /* Atari keyboard has Undo */
+};
+
+#endif  /* ECORE_SDL_KEYS_H__ */
diff --git a/src/lib/ecore_sdl/Makefile.am b/src/lib/ecore_sdl/Makefile.am
new file mode 100644 (file)
index 0000000..6dd931e
--- /dev/null
@@ -0,0 +1,32 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore \
+@SDL_CFLAGS@
+
+if BUILD_ECORE_SDL
+
+lib_LTLIBRARIES = libecore_sdl.la
+include_HEADERS = \
+Ecore_Sdl.h
+
+libecore_sdl_la_SOURCES = \
+ecore_sdl.c \
+Ecore_Sdl_Keys.h
+
+libecore_sdl_la_LIBADD = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+@SDL_LIBS@
+
+libecore_sdl_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+libecore_sdl_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+endif
+
+EXTRA_DIST = \
+Ecore_Sdl.h \
+Ecore_Sdl_Keys.h \
+ecore_sdl.c
diff --git a/src/lib/ecore_sdl/ecore_sdl.c b/src/lib/ecore_sdl/ecore_sdl.c
new file mode 100644 (file)
index 0000000..2d9d316
--- /dev/null
@@ -0,0 +1,211 @@
+#include <SDL/SDL.h>
+
+#include "Ecore_Sdl.h"
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+#include "Ecore_Sdl_Keys.h"
+
+EAPI int ECORE_SDL_EVENT_KEY_DOWN = 0;
+EAPI int ECORE_SDL_EVENT_KEY_UP = 0;
+EAPI int ECORE_SDL_EVENT_MOUSE_BUTTON_DOWN = 0;
+EAPI int ECORE_SDL_EVENT_MOUSE_BUTTON_UP = 0;
+EAPI int ECORE_SDL_EVENT_MOUSE_MOVE = 0;
+EAPI int ECORE_SDL_EVENT_MOUSE_WHEEL = 0;
+EAPI int ECORE_SDL_EVENT_GOT_FOCUS = 0;
+EAPI int ECORE_SDL_EVENT_LOST_FOCUS = 0;
+EAPI int ECORE_SDL_EVENT_RESIZE = 0;
+EAPI int ECORE_SDL_EVENT_EXPOSE = 0;
+
+static int _ecore_sdl_init_count = 0;
+
+/**
+ * @defgroup Ecore_Sdl_Library_Group Framebuffer Library Functions
+ *
+ * Functions used to set up and shut down the Ecore_Framebuffer functions.
+ */
+
+/**
+ * Sets up the Ecore_Sdl library.
+ * @param   name device target name
+ * @return  @c 0 on failure.  Otherwise, the number of times the library has
+ *          been initialised without being shut down.
+ * @ingroup Ecore_SDL_Library_Group
+ */
+EAPI int
+ecore_sdl_init(const char *name __UNUSED__)
+{
+       if(!_ecore_sdl_init_count)
+       {
+               ECORE_SDL_EVENT_KEY_DOWN          = ecore_event_type_new();
+               ECORE_SDL_EVENT_KEY_UP            = ecore_event_type_new();
+               ECORE_SDL_EVENT_MOUSE_BUTTON_DOWN = ecore_event_type_new();
+               ECORE_SDL_EVENT_MOUSE_BUTTON_UP   = ecore_event_type_new();
+               ECORE_SDL_EVENT_MOUSE_MOVE        = ecore_event_type_new();
+               ECORE_SDL_EVENT_MOUSE_WHEEL       = ecore_event_type_new();
+                ECORE_SDL_EVENT_GOT_FOCUS         = ecore_event_type_new();
+                ECORE_SDL_EVENT_LOST_FOCUS        = ecore_event_type_new();
+                ECORE_SDL_EVENT_RESIZE            = ecore_event_type_new();
+                ECORE_SDL_EVENT_EXPOSE            = ecore_event_type_new();
+       }
+       return ++_ecore_sdl_init_count;
+}
+
+/**
+ * Shuts down the Ecore_Sdl library.
+ * @return  @c The number of times the system has been initialised without
+ *             being shut down.
+ * @ingroup Ecore_SDL_Library_Group
+ */
+EAPI int
+ecore_sdl_shutdown(void)
+{
+       _ecore_sdl_init_count--;
+       return _ecore_sdl_init_count;
+}
+
+EAPI void
+ecore_sdl_feed_events(void)
+{
+   SDL_Event    event;
+   unsigned int time;
+
+   while(SDL_PollEvent(&event))
+     {
+        time = (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff);
+        switch(event.type)
+          {
+          case SDL_MOUSEMOTION:
+          {
+             Ecore_Sdl_Event_Mouse_Move *ev;
+
+             ev = malloc(sizeof(Ecore_Sdl_Event_Mouse_Move));
+             ev->x = event.motion.x;
+             ev->y = event.motion.y;
+             ev->time = time;
+
+             ecore_event_add(ECORE_SDL_EVENT_MOUSE_MOVE, ev, NULL, NULL);
+             break;
+          }
+          case SDL_MOUSEBUTTONDOWN:
+          {
+             if (event.button.button == SDL_BUTTON_WHEELUP ||
+                 event.button.button == SDL_BUTTON_WHEELDOWN)
+               {
+                  Ecore_Sdl_Event_Mouse_Wheel   *ev;
+
+                  ev = malloc(sizeof (Ecore_Sdl_Event_Mouse_Wheel));
+                  ev->x = event.button.x;
+                  ev->y = event.button.y;
+                  ev->direction = 0;
+                  ev->wheel = event.button.button == SDL_BUTTON_WHEELDOWN ? -1 : 1;
+                  ev->time = time;
+
+                  ecore_event_add(ECORE_SDL_EVENT_MOUSE_WHEEL, ev, NULL, NULL);
+               }
+             else
+               {
+                  Ecore_Sdl_Event_Mouse_Button_Down  *ev;
+
+                  ev = malloc(sizeof (Ecore_Sdl_Event_Mouse_Button_Down));
+                  ev->x = event.button.x;
+                  ev->y = event.button.y;
+                  ev->button = event.button.button;
+                  ev->double_click = 0;
+                  ev->triple_click = 0;
+                  ev->time = time;
+
+                  ecore_event_add(ECORE_SDL_EVENT_MOUSE_BUTTON_DOWN, ev, NULL, NULL);
+               }
+             break;
+          }
+          case SDL_MOUSEBUTTONUP:
+          {
+             Ecore_Sdl_Event_Mouse_Button_Up  *ev;
+
+             ev = malloc(sizeof (Ecore_Sdl_Event_Mouse_Button_Up));
+             ev->x = event.button.x;
+             ev->y = event.button.y;
+             ev->button = event.button.button;
+             ev->double_click = 0;
+             ev->triple_click = 0;
+             ev->time = time;
+
+             ecore_event_add(ECORE_SDL_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL);
+             break;
+          }
+          case SDL_VIDEORESIZE:
+          {
+             Ecore_Sdl_Event_Video_Resize       *ev;
+
+             ev = malloc(sizeof (Ecore_Sdl_Event_Video_Resize));
+             ev->w = event.resize.w;
+             ev->h = event.resize.h;
+
+             ecore_event_add(ECORE_SDL_EVENT_RESIZE, ev, NULL, NULL);
+             break;
+          }
+          case SDL_VIDEOEXPOSE:
+             ecore_event_add(ECORE_SDL_EVENT_EXPOSE, NULL, NULL, NULL);
+             break;
+          case SDL_QUIT:
+             ecore_main_loop_quit();
+             break;
+
+          case SDL_KEYDOWN:
+          {
+             Ecore_Sdl_Event_Key_Down   *ev;
+             unsigned int               i;
+
+             ev = malloc(sizeof (Ecore_Sdl_Event_Key_Down));
+             ev->time = time;
+
+             for (i = 0; i < sizeof (keystable) / sizeof (struct _ecore_sdl_keys_s); ++i)
+               if (keystable[i].code == event.key.keysym.sym)
+                 {
+                    ev->keyname = keystable[i].name;
+                    ev->keycompose = keystable[i].compose;
+
+                    ecore_event_add(ECORE_SDL_EVENT_KEY_DOWN, ev, NULL, NULL);
+                    return ;
+                 }
+
+             free(ev);
+             break;
+          }
+          case SDL_KEYUP:
+          {
+             Ecore_Sdl_Event_Key_Up     *ev;
+             unsigned int               i;
+
+             ev = malloc(sizeof (Ecore_Sdl_Event_Key_Up));
+             ev->time = time;
+
+             for (i = 0; i < sizeof (keystable) / sizeof (struct _ecore_sdl_keys_s); ++i)
+               if (keystable[i].code == event.key.keysym.sym)
+                 {
+                    ev->keyname = keystable[i].name;
+                    ev->keycompose = keystable[i].compose;
+
+                    ecore_event_add(ECORE_SDL_EVENT_KEY_UP, ev, NULL, NULL);
+                    return ;
+                 }
+
+             free(ev);
+             break;
+          }
+          case SDL_ACTIVEEVENT:
+             /* FIXME: Focus gain. */
+             break;
+          case SDL_SYSWMEVENT:
+          case SDL_USEREVENT:
+          case SDL_JOYAXISMOTION:
+          case SDL_JOYBALLMOTION:
+          case SDL_JOYHATMOTION:
+          case SDL_JOYBUTTONDOWN:
+          case SDL_JOYBUTTONUP:
+          default:
+             break;
+          }
+     }
+}
diff --git a/src/lib/ecore_txt/.cvsignore b/src/lib/ecore_txt/.cvsignore
new file mode 100644 (file)
index 0000000..e599172
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+ecore_txt.lo
+libecore_txt.la
diff --git a/src/lib/ecore_txt/Ecore_Txt.h b/src/lib/ecore_txt/Ecore_Txt.h
new file mode 100644 (file)
index 0000000..734fa8a
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_TXT_H
+#define _ECORE_TXT_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_TXT_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_TXT_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file Ecore_Txt.h
+ * @brief Provides a text encoding conversion function.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EAPI char *ecore_txt_convert(const char *enc_from, const char *enc_to, const char *text);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_txt/Makefile.am b/src/lib/ecore_txt/Makefile.am
new file mode 100644 (file)
index 0000000..6b3a6e6
--- /dev/null
@@ -0,0 +1,31 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore \
+@iconv_cflags@
+
+if BUILD_ECORE_TXT
+
+lib_LTLIBRARIES = libecore_txt.la
+
+include_HEADERS = \
+Ecore_Txt.h
+
+libecore_txt_la_SOURCES = \
+ecore_txt.c \
+ecore_txt_private.h
+
+libecore_txt_la_LIBADD = @iconv_libs@
+
+libecore_txt_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+libecore_txt_la_DEPENDENCIES =
+
+
+endif
+
+EXTRA_DIST = \
+Ecore_Txt.h \
+ecore_txt.c \
+ecore_txt_private.h
diff --git a/src/lib/ecore_txt/ecore_txt.c b/src/lib/ecore_txt/ecore_txt.c
new file mode 100644 (file)
index 0000000..8f605ab
--- /dev/null
@@ -0,0 +1,85 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <iconv.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include "Ecore_Txt.h"
+#include "ecore_txt_private.h"
+
+
+/**
+ * To be documented.
+ * 
+ * FIXME: Finish this.
+ */
+EAPI char *
+ecore_txt_convert(const char *enc_from, const char *enc_to, const char *text)
+{
+   iconv_t ic;
+   char *new_txt, *inp, *outp;
+   size_t inb, outb, outlen, tob, outalloc;
+   
+   if (!text) return NULL;
+   ic = iconv_open(enc_to, enc_from);
+   if (ic == (iconv_t)(-1)) return NULL;
+   new_txt  = malloc(64);
+   inb      = strlen(text);
+   outb     = 64;
+   inp      = (char*)text;
+   outp     = new_txt;
+   outalloc = 64;
+   outlen   = 0;
+   tob      = 0;
+
+   for (;;)
+     {
+       size_t count;
+
+       tob = outb;
+       count = iconv(ic, &inp, &inb, &outp, &outb);
+       outlen += tob - outb;
+       if (count == (size_t)(-1))
+         {
+            if (errno == E2BIG)
+              {
+                 new_txt = realloc(new_txt, outalloc + 64);
+                 outp = new_txt + outlen;
+                 outalloc += 64;
+                 outb += 64;
+              }
+            else if (errno == EILSEQ)
+              {
+                 if (new_txt) free(new_txt);
+                 new_txt = NULL;
+                 break;
+              }
+            else if (errno == EINVAL)
+              {
+                 if (new_txt) free(new_txt);
+                 new_txt = NULL;
+                 break;
+              }
+            else
+              {
+                 if (new_txt) free(new_txt);
+                 new_txt = NULL;
+                 break;
+              }
+         }
+       if (inb == 0)
+         {
+            if (outalloc == outlen) new_txt = realloc(new_txt, outalloc + 1);
+            new_txt[outlen] = 0;
+            break;
+         }
+     }
+   iconv_close(ic);
+   return new_txt;
+}
diff --git a/src/lib/ecore_txt/ecore_txt_private.h b/src/lib/ecore_txt/ecore_txt_private.h
new file mode 100644 (file)
index 0000000..b3e975a
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef _ECORE_TXT_PRIVATE_H
+#define _ECORE_TXT_PRIVATE_H
+
+#endif
diff --git a/src/lib/ecore_win32/.cvsignore b/src/lib/ecore_win32/.cvsignore
new file mode 100644 (file)
index 0000000..6607302
--- /dev/null
@@ -0,0 +1,6 @@
+.libs
+.deps
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/lib/ecore_win32/Ecore_Win32.h b/src/lib/ecore_win32/Ecore_Win32.h
new file mode 100644 (file)
index 0000000..6c9e4a0
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef __ECORE_WIN32_H__
+#define __ECORE_WIN32_H__
+
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_ECORE_WIN32_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_WIN32_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+
+typedef void Ecore_Win32_Window;
+typedef void Ecore_Win32_Cursor;
+
+/* Window state */
+
+typedef enum
+{
+   /* The window is iconified. */
+   ECORE_WIN32_WINDOW_STATE_ICONIFIED,
+   /* The window is a modal dialog box. */
+   ECORE_WIN32_WINDOW_STATE_MODAL,
+   /* The window manager should keep the window's position fixed
+    * even if the virtual desktop scrolls. */
+   ECORE_WIN32_WINDOW_STATE_STICKY,
+   /* The window has the maximum vertical size. */
+   ECORE_WIN32_WINDOW_STATE_MAXIMIZED_VERT,
+   /* The window has the maximum horizontal size. */
+   ECORE_WIN32_WINDOW_STATE_MAXIMIZED_HORZ,
+   /* The window has the maximum horizontal and vertical size. */
+   ECORE_WIN32_WINDOW_STATE_MAXIMIZED,
+   /* The window is shaded. */
+   ECORE_WIN32_WINDOW_STATE_SHADED,
+   /* The window is invisible (i.e. minimized/iconified) */
+   ECORE_WIN32_WINDOW_STATE_HIDDEN,
+   /* The window should fill the entire screen and have no
+    * window border/decorations */
+   ECORE_WIN32_WINDOW_STATE_FULLSCREEN,
+   /* The following are not documented because they are not
+    * intended for use in applications. */
+   ECORE_WIN32_WINDOW_STATE_ABOVE,
+   ECORE_WIN32_WINDOW_STATE_BELOW,
+   /* FIXME: Documentation */
+   ECORE_WIN32_WINDOW_STATE_DEMANDS_ATTENTION,
+   /* Unknown state */
+   ECORE_WIN32_WINDOW_STATE_UNKNOWN
+} Ecore_Win32_Window_State;
+
+/* Window type */
+
+typedef enum
+{
+   /* Desktop feature*/
+   ECORE_WIN32_WINDOW_TYPE_DESKTOP,
+   /* Dock window (should be on top of other windows */
+   ECORE_WIN32_WINDOW_TYPE_DOCK,
+   /* Toolbar window */
+   ECORE_WIN32_WINDOW_TYPE_TOOLBAR,
+   /* Menu window */
+   ECORE_WIN32_WINDOW_TYPE_MENU,
+   /* Small persistent utility window, such as a palette or toolbox */
+   ECORE_WIN32_WINDOW_TYPE_UTILITY,
+   /* Splash screen window displayed as an application is starting up */
+   ECORE_WIN32_WINDOW_TYPE_SPLASH,
+   /* Dialog window */
+   ECORE_WIN32_WINDOW_TYPE_DIALOG,
+   /* Normal top-level window */
+   ECORE_WIN32_WINDOW_TYPE_NORMAL,
+   /* Unknown type */
+   ECORE_WIN32_WINDOW_TYPE_UNKNOWN
+} Ecore_Win32_Window_Type;
+
+/*cursor shapes */
+
+typedef enum
+{
+   ECORE_WIN32_CURSOR_SHAPE_APP_STARTING, /* Standard arrow and small hourglass */
+   ECORE_WIN32_CURSOR_SHAPE_ARROW,        /* Standard arrow */
+   ECORE_WIN32_CURSOR_SHAPE_CROSS,        /* Crosshair */
+   ECORE_WIN32_CURSOR_SHAPE_HAND,         /* Hand */
+   ECORE_WIN32_CURSOR_SHAPE_HELP,         /* Arrow and question mark */
+   ECORE_WIN32_CURSOR_SHAPE_I_BEAM,       /* I-beam */
+   ECORE_WIN32_CURSOR_SHAPE_NO,           /* Slashed circle */
+   ECORE_WIN32_CURSOR_SHAPE_SIZE_ALL,     /* Four-pointed arrow pointing north, south, east, and west */
+   ECORE_WIN32_CURSOR_SHAPE_SIZE_NESW,    /* Double-pointed arrow pointing northeast and southwest */
+   ECORE_WIN32_CURSOR_SHAPE_SIZE_NS,      /* Double-pointed arrow pointing north and south */
+   ECORE_WIN32_CURSOR_SHAPE_SIZE_NWSE,    /* Double-pointed arrow pointing northwest and southeast */
+   ECORE_WIN32_CURSOR_SHAPE_SIZE_WE,      /* Double-pointed arrow pointing west and east */
+   ECORE_WIN32_CURSOR_SHAPE_UP_ARROW,     /* Vertical arrow */
+   ECORE_WIN32_CURSOR_SHAPE_WAIT          /* Hourglass */
+} Ecore_Win32_Cursor_Shape;
+
+/* Events */
+
+typedef struct _Ecore_Win32_Event_Key_Down              Ecore_Win32_Event_Key_Down;
+typedef struct _Ecore_Win32_Event_Key_Up                Ecore_Win32_Event_Key_Up;
+typedef struct _Ecore_Win32_Event_Mouse_Button_Down     Ecore_Win32_Event_Mouse_Button_Down;
+typedef struct _Ecore_Win32_Event_Mouse_Button_Up       Ecore_Win32_Event_Mouse_Button_Up;
+typedef struct _Ecore_Win32_Event_Mouse_Move            Ecore_Win32_Event_Mouse_Move;
+typedef struct _Ecore_Win32_Event_Mouse_In              Ecore_Win32_Event_Mouse_In;
+typedef struct _Ecore_Win32_Event_Mouse_Out             Ecore_Win32_Event_Mouse_Out;
+typedef struct _Ecore_Win32_Event_Mouse_Wheel           Ecore_Win32_Event_Mouse_Wheel;
+typedef struct _Ecore_Win32_Event_Window_Focus_In       Ecore_Win32_Event_Window_Focus_In;
+typedef struct _Ecore_Win32_Event_Window_Focus_Out      Ecore_Win32_Event_Window_Focus_Out;
+typedef struct _Ecore_Win32_Event_Window_Damage         Ecore_Win32_Event_Window_Damage;
+typedef struct _Ecore_Win32_Event_Window_Create         Ecore_Win32_Event_Window_Create;
+typedef struct _Ecore_Win32_Event_Window_Destroy        Ecore_Win32_Event_Window_Destroy;
+typedef struct _Ecore_Win32_Event_Window_Hide           Ecore_Win32_Event_Window_Hide;
+typedef struct _Ecore_Win32_Event_Window_Show           Ecore_Win32_Event_Window_Show;
+typedef struct _Ecore_Win32_Event_Window_Configure      Ecore_Win32_Event_Window_Configure;
+typedef struct _Ecore_Win32_Event_Window_Resize         Ecore_Win32_Event_Window_Resize;
+typedef struct _Ecore_Win32_Event_Window_Delete_Request Ecore_Win32_Event_Window_Delete_Request;
+
+struct _Ecore_Win32_Event_Key_Down
+{
+   Ecore_Win32_Window *window;
+   char               *keyname;
+   char               *keysymbol;
+   char               *keycompose;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Key_Up
+{
+   Ecore_Win32_Window *window;
+   char               *keyname;
+   char               *keysymbol;
+   char               *keycompose;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Mouse_Button_Down
+{
+   Ecore_Win32_Window *window;
+   int                 button;
+   int                 x;
+   int                 y;
+   double              time;
+   unsigned int        double_click : 1;
+   unsigned int        triple_click : 1;
+};
+
+struct _Ecore_Win32_Event_Mouse_Button_Up
+{
+   Ecore_Win32_Window *window;
+   int                 button;
+   int                 x;
+   int                 y;
+   double              time;
+   unsigned int        double_click : 1;
+   unsigned int        triple_click : 1;
+};
+
+struct _Ecore_Win32_Event_Mouse_Move
+{
+   Ecore_Win32_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Mouse_In
+{
+   Ecore_Win32_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Mouse_Out
+{
+   Ecore_Win32_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Mouse_Wheel
+{
+   Ecore_Win32_Window *window;
+   int                 direction; /* 0 = default up/down wheel FIXME: more wheel types */
+   int                 z; /* ...,-2,-1 = down, 1,2,... = up */
+   int                 modifiers;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Focus_In
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Focus_Out
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Damage
+{
+   Ecore_Win32_Window *window;
+   int                 x;
+   int                 y;
+   int                 width;
+   int                 height;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Create
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Destroy
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Hide
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Show
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Configure
+{
+   Ecore_Win32_Window *window;
+   Ecore_Win32_Window *abovewin;
+   int                 x;
+   int                 y;
+   int                 width;
+   int                 height;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Resize
+{
+   Ecore_Win32_Window *window;
+   int                 width;
+   int                 height;
+   double              time;
+};
+
+struct _Ecore_Win32_Event_Window_Delete_Request
+{
+   Ecore_Win32_Window *window;
+   double              time;
+};
+
+EAPI extern int ECORE_WIN32_EVENT_KEY_DOWN;
+EAPI extern int ECORE_WIN32_EVENT_KEY_UP;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_BUTTON_UP;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_MOVE;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_IN;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_OUT;
+EAPI extern int ECORE_WIN32_EVENT_MOUSE_WHEEL;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_FOCUS_IN;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_DAMAGE;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_CREATE;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_DESTROY;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_HIDE;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_SHOW;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_CONFIGURE;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_RESIZE;
+EAPI extern int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST;
+
+
+/* Core */
+
+EAPI int    ecore_win32_init();
+EAPI int    ecore_win32_shutdown();
+EAPI int    ecore_win32_screen_depth_get();
+EAPI double ecore_win32_current_time_get(void);
+EAPI void   ecore_win32_message_loop_begin (void);
+
+/* Window */
+
+EAPI Ecore_Win32_Window *ecore_win32_window_new(Ecore_Win32_Window *parent,
+                                                int                 x,
+                                                int                 y,
+                                                int                 width,
+                                                int                 height);
+EAPI Ecore_Win32_Window *ecore_win32_window_override_new(Ecore_Win32_Window *parent,
+                                                         int                 x,
+                                                         int                 y,
+                                                         int                 width,
+                                                         int                 height);
+
+EAPI void ecore_win32_window_del(Ecore_Win32_Window *window);
+
+EAPI void *ecore_win32_window_hwnd_get(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_move(Ecore_Win32_Window *window,
+                                  int                 x,
+                                  int                 y);
+
+EAPI void ecore_win32_window_resize(Ecore_Win32_Window *window,
+                                    int                 width,
+                                    int                 height);
+
+EAPI void ecore_win32_window_move_resize(Ecore_Win32_Window *window,
+                                         int                 x,
+                                         int                 y,
+                                         int                 width,
+                                         int                 height);
+
+EAPI void ecore_win32_window_geometry_get(Ecore_Win32_Window *window,
+                                          int                *x,
+                                          int                *y,
+                                          int                *width,
+                                          int                *height);
+
+EAPI void ecore_win32_window_size_get(Ecore_Win32_Window *window,
+                                      int                *width,
+                                      int                *height);
+
+EAPI void ecore_win32_window_size_min_set(Ecore_Win32_Window *window,
+                                          unsigned int        min_width,
+                                          unsigned int        min_height);
+
+EAPI void ecore_win32_window_size_min_get(Ecore_Win32_Window *window,
+                                          unsigned int       *min_width,
+                                          unsigned int       *min_height);
+
+EAPI void ecore_win32_window_size_max_set(Ecore_Win32_Window *window,
+                                          unsigned int        max_width,
+                                          unsigned int        max_height);
+
+EAPI void ecore_win32_window_size_max_get(Ecore_Win32_Window *window,
+                                          unsigned int       *max_width,
+                                          unsigned int       *max_height);
+
+EAPI void ecore_win32_window_size_base_set(Ecore_Win32_Window *window,
+                                           unsigned int        base_width,
+                                           unsigned int        base_height);
+
+EAPI void ecore_win32_window_size_base_get(Ecore_Win32_Window *window,
+                                           unsigned int       *base_width,
+                                           unsigned int       *base_height);
+
+EAPI void ecore_win32_window_size_step_set(Ecore_Win32_Window *window,
+                                           unsigned int        step_width,
+                                           unsigned int        step_height);
+
+EAPI void ecore_win32_window_size_step_get(Ecore_Win32_Window *window,
+                                           unsigned int       *step_width,
+                                           unsigned int       *step_height);
+
+EAPI void ecore_win32_window_show(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_hide(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_raise(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_lower(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_title_set(Ecore_Win32_Window *window,
+                                       const char         *title);
+
+EAPI void ecore_win32_window_focus_set(Ecore_Win32_Window *window);
+
+EAPI void ecore_win32_window_iconified_set(Ecore_Win32_Window *window,
+                                           int                 on);
+
+EAPI void ecore_win32_window_borderless_set(Ecore_Win32_Window *window,
+                                            int                 on);
+
+EAPI void ecore_win32_window_fullscreen_set(Ecore_Win32_Window *window,
+                                            int                 on);
+
+EAPI void ecore_win32_window_cursor_set(Ecore_Win32_Window *window,
+                                        Ecore_Win32_Cursor *cursor);
+
+EAPI void ecore_win32_window_state_set(Ecore_Win32_Window       *window,
+                                       Ecore_Win32_Window_State *state,
+                                       unsigned int              num);
+
+EAPI void ecore_win32_window_state_request_send(Ecore_Win32_Window      *window,
+                                                Ecore_Win32_Window_State state,
+                                                unsigned int             set);
+
+EAPI void ecore_win32_window_type_set(Ecore_Win32_Window      *window,
+                                      Ecore_Win32_Window_Type  type);
+
+/* Cursor */
+
+EAPI Ecore_Win32_Cursor *ecore_win32_cursor_new(const void *pixels_and,
+                                                const void *pixels_xor,
+                                                int         width,
+                                                int         height,
+                                                int         hot_x,
+                                                int         hot_y);
+
+EAPI void                ecore_win32_cursor_free(Ecore_Win32_Cursor *cursor);
+
+EAPI Ecore_Win32_Cursor *ecore_win32_cursor_shape_get(Ecore_Win32_Cursor_Shape shape);
+
+EAPI int                 ecore_win32_cursor_size_get(void);
+
+
+#endif /* __ECORE_WIN32_H__ */
diff --git a/src/lib/ecore_win32/Makefile.am b/src/lib/ecore_win32/Makefile.am
new file mode 100644 (file)
index 0000000..1795c69
--- /dev/null
@@ -0,0 +1,31 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore
+
+
+if BUILD_ECORE_WIN32
+
+lib_LTLIBRARIES = libecore_win32.la
+
+include_HEADERS = \
+Ecore_Win32.h
+
+libecore_win32_la_SOURCES = \
+ecore_win32.c \
+ecore_win32_cursor.c \
+ecore_win32_event.c \
+ecore_win32_window.c
+
+libecore_win32_la_LIBADD = \
+@ecore_win32_libs@ \
+@WIN32_LIBS@ \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+libecore_win32_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+endif
+
+EXTRA_DIST = \
+ecore_win32_private.h
diff --git a/src/lib/ecore_win32/ecore_win32.c b/src/lib/ecore_win32/ecore_win32.c
new file mode 100644 (file)
index 0000000..2acc005
--- /dev/null
@@ -0,0 +1,412 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <windowsx.h>
+
+#include "Ecore.h"
+#include "Ecore_Win32.h"
+#include "ecore_win32_private.h"
+
+
+/***** Global declarations *****/
+
+HINSTANCE           _ecore_win32_instance = NULL;
+double              _ecore_win32_double_click_time = 0.25;
+double              _ecore_win32_event_last_time = 0.0;
+Ecore_Win32_Window *_ecore_win32_event_last_window = NULL;
+
+int ECORE_WIN32_EVENT_KEY_DOWN              = 0;
+int ECORE_WIN32_EVENT_KEY_UP                = 0;
+int ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN     = 0;
+int ECORE_WIN32_EVENT_MOUSE_BUTTON_UP       = 0;
+int ECORE_WIN32_EVENT_MOUSE_MOVE            = 0;
+int ECORE_WIN32_EVENT_MOUSE_IN              = 0;
+int ECORE_WIN32_EVENT_MOUSE_OUT             = 0;
+int ECORE_WIN32_EVENT_MOUSE_WHEEL           = 0;
+int ECORE_WIN32_EVENT_WINDOW_FOCUS_IN       = 0;
+int ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT      = 0;
+int ECORE_WIN32_EVENT_WINDOW_DAMAGE         = 0;
+int ECORE_WIN32_EVENT_WINDOW_CREATE         = 0;
+int ECORE_WIN32_EVENT_WINDOW_DESTROY        = 0;
+int ECORE_WIN32_EVENT_WINDOW_SHOW           = 0;
+int ECORE_WIN32_EVENT_WINDOW_HIDE           = 0;
+int ECORE_WIN32_EVENT_WINDOW_CONFIGURE      = 0;
+int ECORE_WIN32_EVENT_WINDOW_RESIZE         = 0;
+int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = 0;
+
+
+/***** Private declarations *****/
+
+static int       _ecore_win32_init_count = 0;
+
+LRESULT CALLBACK _ecore_win32_window_procedure(HWND   window,
+                                               UINT   message,
+                                               WPARAM window_param,
+                                               LPARAM data_param);
+
+
+/***** API *****/
+
+
+int
+ecore_win32_init()
+{
+   WNDCLASS wc;
+
+   if (_ecore_win32_init_count > 0)
+     {
+       _ecore_win32_init_count++;
+       return _ecore_win32_init_count;
+     }
+
+   printf (" *** ecore_win32_init\n");
+   _ecore_win32_instance = GetModuleHandle(NULL);
+   if (!_ecore_win32_instance)
+     return 0;
+
+   memset (&wc, 0, sizeof (WNDCLASS));
+   wc.style = CS_HREDRAW | CS_VREDRAW;
+   wc.lpfnWndProc = _ecore_win32_window_procedure;
+   wc.cbClsExtra = 0;
+   wc.cbWndExtra = 0;
+   wc.hInstance = _ecore_win32_instance;
+   wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
+   wc.hCursor = LoadCursor (NULL, IDC_ARROW);
+   wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
+   wc.lpszMenuName =  NULL;
+   wc.lpszClassName = ECORE_WIN32_WINDOW_CLASS;
+
+   if(!RegisterClass(&wc))
+     {
+        FreeLibrary(_ecore_win32_instance);
+        return 0;
+     }
+
+   if (!ECORE_WIN32_EVENT_KEY_DOWN)
+     {
+        ECORE_WIN32_EVENT_KEY_DOWN              = ecore_event_type_new();
+        ECORE_WIN32_EVENT_KEY_UP                = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN     = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_BUTTON_UP       = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_MOVE            = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_IN              = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_OUT             = ecore_event_type_new();
+        ECORE_WIN32_EVENT_MOUSE_WHEEL           = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_FOCUS_IN       = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT      = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_DAMAGE         = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_CREATE         = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_DESTROY        = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_SHOW           = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_HIDE           = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_CONFIGURE      = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_RESIZE         = ecore_event_type_new();
+        ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
+     }
+
+   _ecore_win32_init_count++;
+
+   return _ecore_win32_init_count;
+}
+
+int
+ecore_win32_shutdown()
+{
+   _ecore_win32_init_count++;
+   if (_ecore_win32_init_count > 0) return _ecore_win32_init_count;
+   if (!_ecore_win32_instance) return _ecore_win32_init_count;
+
+   UnregisterClass(ECORE_WIN32_WINDOW_CLASS, _ecore_win32_instance);
+   FreeLibrary(_ecore_win32_instance);
+   _ecore_win32_instance = NULL;
+
+   if (_ecore_win32_init_count < 0) _ecore_win32_init_count = 0;
+
+   return _ecore_win32_init_count;
+}
+
+int
+ecore_win32_screen_depth_get()
+{
+   HDC dc;
+   int depth;
+
+   dc = GetDC(NULL);
+   if (!dc)
+     return 0;
+
+   depth = GetDeviceCaps(dc, BITSPIXEL);
+   ReleaseDC(NULL, dc);
+
+   return depth;
+}
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ *
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param t The time in seconds
+ */
+void
+ecore_win32_double_click_time_set(double t)
+{
+   if (t < 0.0) t = 0.0;
+   _ecore_win32_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_win32_double_click_time_set for more information.
+ *
+ * @return The timeout for double clicks in seconds.
+ */
+double
+ecore_win32_double_click_time_get(void)
+{
+   return _ecore_win32_double_click_time;
+}
+
+/**
+ * Return the last event time
+ */
+double
+ecore_win32_current_time_get(void)
+{
+   return _ecore_win32_event_last_time;
+}
+
+
+/***** Private functions definitions *****/
+
+
+LRESULT CALLBACK
+_ecore_win32_window_procedure(HWND   window,
+                              UINT   message,
+                              WPARAM window_param,
+                              LPARAM data_param)
+{
+   Ecore_Win32_Callback_Data *data;
+   POINTS                     pt;
+   DWORD                      coord;
+
+   data = (Ecore_Win32_Callback_Data *)malloc(sizeof(Ecore_Win32_Callback_Data));
+   if (!data) return DefWindowProc(window, message, window_param, data_param);
+
+   data->window = window;
+   data->message = message;
+   data->window_param = window_param;
+   data->data_param = data_param;
+   data->time = GetMessageTime();
+   coord = GetMessagePos();
+   pt = MAKEPOINTS(coord);
+   data->x = pt.x;
+   data->y = pt.y;
+
+   switch (data->message)
+     {
+       /* Keyboard input notifications */
+     case WM_KEYDOWN:
+       printf (" * ecore message : keystroke down\n");
+       _ecore_win32_event_handle_key_press(data, 1);
+       return 0;
+     case WM_CHAR:
+       _ecore_win32_event_handle_key_press(data, 0);
+       return 0;
+     case WM_KEYUP:
+       printf (" * ecore message : keystroke up\n");
+       _ecore_win32_event_handle_key_release(data, 1);
+       return 0;
+     case WM_SETFOCUS:
+       printf (" * ecore message : focus in\n");
+       _ecore_win32_event_handle_focus_in(data);
+       return 0;
+     case WM_KILLFOCUS:
+       printf (" * ecore message : focus out\n");
+       _ecore_win32_event_handle_focus_out(data);
+       return 0;
+       /* Mouse input notifications */
+     case WM_LBUTTONDOWN:
+       printf (" * ecore message : lbuttondown\n");
+       _ecore_win32_event_handle_button_press(data, 1);
+       return 0;
+     case WM_MBUTTONDOWN:
+       printf (" * ecore message : mbuttondown\n");
+       _ecore_win32_event_handle_button_press(data, 2);
+       return 0;
+     case WM_RBUTTONDOWN:
+       printf (" * ecore message : rbuttondown\n");
+       _ecore_win32_event_handle_button_press(data, 3);
+       return 0;
+     case WM_LBUTTONUP:
+       printf (" * ecore message : lbuttonup\n");
+       _ecore_win32_event_handle_button_release(data, 1);
+       return 0;
+     case WM_MBUTTONUP:
+       printf (" * ecore message : mbuttonup\n");
+       _ecore_win32_event_handle_button_release(data, 2);
+       return 0;
+     case WM_RBUTTONUP:
+       printf (" * ecore message : rbuttonup\n");
+       _ecore_win32_event_handle_button_release(data, 3);
+       return 0;
+     case WM_MOUSEMOVE:
+       {
+          RECT                        rect;
+          struct _Ecore_Win32_Window *w = NULL;
+
+          w = (struct _Ecore_Win32_Window *)GetWindowLong(window, GWL_USERDATA);
+
+          if (GetClientRect(window, &rect))
+          {
+             POINT pt;
+
+             pt.x = GET_X_LPARAM(data_param);
+             pt.y = GET_Y_LPARAM(data_param);
+             if (!PtInRect(&rect, pt))
+               {
+                  if (w->pointer_is_in)
+                    {
+                       w->pointer_is_in = 0;
+                       _ecore_win32_event_handle_leave_notify(data);
+                    }
+               }
+             else
+               {
+                  if (!w->pointer_is_in)
+                    {
+                       w->pointer_is_in = 1;
+                       _ecore_win32_event_handle_enter_notify(data);
+                    }
+
+               }
+          }
+          _ecore_win32_event_handle_motion_notify(data);
+
+          return 0;
+       }
+     case WM_MOUSEWHEEL:
+       printf (" * ecore message : mouse wheel\n");
+       _ecore_win32_event_handle_button_press(data, 4);
+       return 0;
+       /* Window notifications */
+     case WM_CREATE:
+       {
+         RECT rect;
+         GetClientRect(window, &rect);
+         printf (" *** ecore message : create %ld %ld\n",
+                 rect.right - rect.left, rect.bottom - rect.top);
+       }
+       _ecore_win32_event_handle_create_notify(data);
+       return 0;
+     case WM_DESTROY:
+       printf (" * ecore message : destroy\n");
+       _ecore_win32_event_handle_destroy_notify(data);
+       return 0;
+     case WM_SHOWWINDOW:
+       {
+         RECT rect;
+         GetClientRect(window, &rect);
+         printf (" *** ecore message : show %ld %ld\n",
+                 rect.right - rect.left, rect.bottom - rect.top);
+       }
+       if ((data->data_param == SW_OTHERUNZOOM) ||
+           (data->data_param == SW_OTHERUNZOOM))
+         return 0;
+
+       if (data->window_param)
+         _ecore_win32_event_handle_map_notify(data);
+       else
+         _ecore_win32_event_handle_unmap_notify(data);
+
+       return 0;
+     case WM_CLOSE:
+       printf (" * ecore message : close\n");
+       _ecore_win32_event_handle_delete_request(data);
+       return 0;
+     case WM_MOVING:
+       printf (" * ecore message : moving\n");
+       return TRUE;
+     case WM_MOVE:
+       printf (" * ecore message : moved\n");
+       return 0;
+     case WM_SIZING:
+       printf (" * ecore message : sizing\n");
+       _ecore_win32_event_handle_resize(data);
+       _ecore_win32_event_handle_configure_notify(data);
+       return TRUE;
+     case WM_SIZE:
+       printf (" * ecore message : sized\n");
+       return 0;
+/*      case WM_WINDOWPOSCHANGING: */
+/*        { */
+/*          RECT rect; */
+/*          GetClientRect(window, &rect); */
+/*          printf (" *** ecore message : WINDOWPOSCHANGING %ld %ld\n", */
+/*                  rect.right - rect.left, rect.bottom - rect.top); */
+/*        } */
+/*        _ecore_win32_event_handle_configure_notify(data); */
+/*        return 0; */
+     case WM_WINDOWPOSCHANGED:
+       {
+         RECT rect;
+         GetClientRect(window, &rect);
+         printf (" *** ecore message : WINDOWPOSCHANGED %ld %ld\n",
+                 rect.right - rect.left, rect.bottom - rect.top);
+       }
+       _ecore_win32_event_handle_configure_notify(data);
+       return 0;
+     case WM_ENTERSIZEMOVE :
+       printf (" * ecore message : WM_ENTERSIZEMOVE \n");
+       return 0;
+     case WM_EXITSIZEMOVE:
+       printf (" * ecore message : WM_EXITSIZEMOVE\n");
+       return 0;
+       /* GDI notifications */
+     case WM_PAINT:
+       {
+         RECT rect;
+
+         printf (" * ecore message : paint\n");
+         if (GetUpdateRect(window, &rect, FALSE))
+           {
+              PAINTSTRUCT ps;
+              HDC         hdc;
+
+              hdc = BeginPaint(window, &ps);
+              data->update = rect;
+              _ecore_win32_event_handle_expose(data);
+              EndPaint(window, &ps);
+              printf (" *    %ld %ld %ld %ld\n",
+                      rect.left,
+                      rect.top,
+                      rect.right - rect.left,
+                      rect.bottom - rect.top);
+           }
+         return 0;
+       }
+     case WM_SETREDRAW:
+       printf (" * ecore message : WM_SETREDRAW\n");
+       return 0;
+     case WM_SYNCPAINT:
+       printf (" * ecore message : WM_SYNCPAINT\n");
+       return 0;
+     default:
+       return DefWindowProc(window, message, window_param, data_param);
+     }
+
+}
diff --git a/src/lib/ecore_win32/ecore_win32_cursor.c b/src/lib/ecore_win32/ecore_win32_cursor.c
new file mode 100644 (file)
index 0000000..7e89f9a
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "Ecore_Win32.h"
+#include "ecore_win32_private.h"
+
+
+/***** API *****/
+
+Ecore_Win32_Cursor *
+ecore_win32_cursor_new(const void *pixels_and,
+                       const void *pixels_xor,
+                       int         width,
+                       int         height,
+                       int         hot_x,
+                       int         hot_y)
+{
+   Ecore_Win32_Cursor *cursor = NULL;
+   int                 cursor_width;
+   int                 cursor_height;
+
+   cursor_width = GetSystemMetrics(SM_CXCURSOR);
+   cursor_height = GetSystemMetrics(SM_CYCURSOR);
+
+   if ((cursor_width != width) ||
+       (cursor_height != height))
+     return NULL;
+
+   if (!(cursor = CreateCursor(_ecore_win32_instance,
+                               hot_x, hot_y,
+                               width, height,
+                               pixels_and,
+                               pixels_xor)))
+     return NULL;
+
+   return cursor;
+}
+
+void
+ecore_win32_cursor_free(Ecore_Win32_Cursor *cursor)
+{
+   DestroyCursor(cursor);
+}
+
+Ecore_Win32_Cursor *
+ecore_win32_cursor_shape_get(Ecore_Win32_Cursor_Shape shape)
+{
+   Ecore_Win32_Cursor *cursor = NULL;
+   const char         *cursor_name;
+
+   switch (shape)
+     {
+       case ECORE_WIN32_CURSOR_SHAPE_APP_STARTING:
+         cursor_name = IDC_APPSTARTING;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_ARROW:
+         cursor_name = IDC_ARROW;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_CROSS:
+         cursor_name = IDC_CROSS;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_HAND:
+         cursor_name = IDC_HAND;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_HELP:
+         cursor_name = IDC_HELP;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_I_BEAM:
+         cursor_name = IDC_IBEAM;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_NO:
+         cursor_name = IDC_NO;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_SIZE_ALL:
+         cursor_name = IDC_SIZEALL;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_SIZE_NESW:
+         cursor_name = IDC_SIZENESW;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_SIZE_NS:
+         cursor_name = IDC_SIZENS;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_SIZE_NWSE:
+         cursor_name = IDC_SIZENWSE;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_SIZE_WE:
+         cursor_name = IDC_SIZEWE;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_UP_ARROW:
+         cursor_name = IDC_UPARROW;
+         break;
+       case ECORE_WIN32_CURSOR_SHAPE_WAIT:
+         cursor_name = IDC_WAIT;
+         break;
+     default:
+         return NULL;
+     }
+
+   if (!(cursor = LoadCursor(NULL, cursor_name)))
+     return NULL;
+
+   return cursor;
+}
+
+int
+ecore_win32_cursor_size_get(void)
+{
+   int width;
+   int height;
+
+   width = GetSystemMetrics(SM_CXCURSOR);
+   height = GetSystemMetrics(SM_CYCURSOR);
+   return (width > height) ? width : height;
+}
diff --git a/src/lib/ecore_win32/ecore_win32_event.c b/src/lib/ecore_win32/ecore_win32_event.c
new file mode 100644 (file)
index 0000000..4b0b342
--- /dev/null
@@ -0,0 +1,888 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <windowsx.h>
+
+#include "Ecore.h"
+#include "Ecore_Win32.h"
+#include "ecore_win32_private.h"
+
+
+/***** Private declarations *****/
+
+
+static Ecore_Win32_Window *_ecore_win32_mouse_down_last_window = NULL;
+static Ecore_Win32_Window *_ecore_win32_mouse_down_last_last_window = NULL;
+static double              _ecore_win32_mouse_down_last_time = 0;
+static double              _ecore_win32_mouse_down_last_last_time = 0;
+static int                 _ecore_win32_mouse_down_did_triple = 0;
+static int                 _ecore_win32_mouse_up_count = 0;
+
+static void _ecore_win32_event_free_key_down(void *data,
+                                             void *ev);
+
+static void _ecore_win32_event_free_key_up(void *data,
+                                           void *ev);
+
+static int  _ecore_win32_event_keystroke_get(int    key,
+                                             char **keyname,
+                                             char **keysymbol,
+                                             char **keycompose);
+
+static int  _ecore_win32_event_char_get(int    key,
+                                        char **keyname,
+                                        char **keysymbol,
+                                        char **keycompose);
+
+
+/***** Global functions definitions *****/
+
+void
+_ecore_win32_event_handle_key_press(Ecore_Win32_Callback_Data *msg,
+                                    int                        is_keystroke)
+{
+   Ecore_Win32_Event_Key_Down *e;
+
+   e = (Ecore_Win32_Event_Key_Down *)malloc(sizeof(Ecore_Win32_Event_Key_Down));
+   if (!e) return;
+
+   if (is_keystroke)
+     {
+        if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+                                              &e->keyname,
+                                              &e->keysymbol,
+                                              &e->keycompose))
+          {
+             free(e);
+             return;
+          }
+        goto store_key;
+     }
+   else
+     {
+        if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
+                                         &e->keyname,
+                                         &e->keysymbol,
+                                         &e->keycompose))
+          {
+             free(e);
+             return;
+          }
+     }
+
+ store_key:
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+   e->time = (double)msg->time / 1000.0;
+
+   _ecore_win32_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_KEY_DOWN, e, _ecore_win32_event_free_key_down, NULL);
+}
+
+void
+_ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg,
+                                      int                        is_keystroke)
+{
+   Ecore_Win32_Event_Key_Up *e;
+
+   e = (Ecore_Win32_Event_Key_Up *)calloc(1, sizeof(Ecore_Win32_Event_Key_Up));
+   if (!e) return;
+
+   if (is_keystroke)
+     {
+        if (!_ecore_win32_event_keystroke_get(LOWORD(msg->window_param),
+                                              &e->keyname,
+                                              &e->keysymbol,
+                                              &e->keycompose))
+          {
+             free(e);
+             return;
+          }
+        goto store_key;
+     }
+   else
+     {
+        if (!_ecore_win32_event_char_get(LOWORD(msg->window_param),
+                                         &e->keyname,
+                                         &e->keysymbol,
+                                         &e->keycompose))
+          {
+             free(e);
+             return;
+          }
+     }
+
+ store_key:
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+   e->time = (double)msg->time / 1000.0;
+
+   _ecore_win32_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_KEY_UP, e, _ecore_win32_event_free_key_up, NULL);
+}
+
+void
+_ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg,
+                                       int                        button)
+{
+   Ecore_Win32_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   if (button > 3)
+     {
+        Ecore_Win32_Event_Mouse_Wheel *e;
+
+        e = (Ecore_Win32_Event_Mouse_Wheel *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Wheel));
+        if (!e) return;
+
+        e->window = window;
+       e->direction = 0;
+        /* wheel delta is positive or negative, never 0 */
+       e->z = GET_WHEEL_DELTA_WPARAM(msg->window_param) > 0 ? -1 : 1;
+       e->x = GET_X_LPARAM(msg->data_param);
+       e->y = GET_Y_LPARAM(msg->data_param);
+        e->time = (double)msg->time / 1000.0;
+
+        _ecore_win32_event_last_time = e->time;
+        _ecore_win32_event_last_window = e->window;
+
+        ecore_event_add(ECORE_WIN32_EVENT_MOUSE_WHEEL, e, NULL, NULL);
+     }
+   else
+     {
+       {
+          Ecore_Win32_Event_Mouse_Move *e;
+
+          e = (Ecore_Win32_Event_Mouse_Move *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Move));
+          if (!e) return;
+
+          e->window = window;
+          e->x = GET_X_LPARAM(msg->data_param);
+          e->y = GET_Y_LPARAM(msg->data_param);
+          e->time = (double)msg->time / 1000.0;
+
+          _ecore_win32_event_last_time = e->time;
+          _ecore_win32_event_last_window = e->window;
+
+          ecore_event_add(ECORE_WIN32_EVENT_MOUSE_MOVE, e, NULL, NULL);
+       }
+
+       {
+          Ecore_Win32_Event_Mouse_Button_Down *e;
+
+          if (_ecore_win32_mouse_down_did_triple)
+            {
+               _ecore_win32_mouse_down_last_window = NULL;
+               _ecore_win32_mouse_down_last_last_window = NULL;
+               _ecore_win32_mouse_down_last_time = 0.0;
+               _ecore_win32_mouse_down_last_last_time = 0.0;
+            }
+
+          e = (Ecore_Win32_Event_Mouse_Button_Down *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Button_Down));
+          if (!e) return;
+
+          e->window = window;
+          e->button = button;
+          e->x = GET_X_LPARAM(msg->data_param);
+          e->y = GET_Y_LPARAM(msg->data_param);
+          e->time = (double)msg->time / 1000.0;
+
+          if (((e->time - _ecore_win32_mouse_down_last_time) <= _ecore_win32_double_click_time) &&
+              (e->window == _ecore_win32_mouse_down_last_window))
+            e->double_click = 1;
+
+          if (((e->time - _ecore_win32_mouse_down_last_last_time) <= (2.0 * _ecore_win32_double_click_time)) &&
+              (e->window == _ecore_win32_mouse_down_last_window) &&
+              (e->window == _ecore_win32_mouse_down_last_last_window))
+            {
+               e->triple_click = 1;
+               _ecore_win32_mouse_down_did_triple = 1;
+            }
+          else
+            _ecore_win32_mouse_down_did_triple = 0;
+
+          if (!e->double_click && !e->triple_click)
+            _ecore_win32_mouse_up_count = 0;
+
+          _ecore_win32_event_last_time = e->time;
+          _ecore_win32_event_last_window = e->window;
+
+          if (!_ecore_win32_mouse_down_did_triple)
+            {
+               _ecore_win32_mouse_down_last_last_window = _ecore_win32_mouse_down_last_window;
+               _ecore_win32_mouse_down_last_window = e->window;
+               _ecore_win32_mouse_down_last_last_time = _ecore_win32_mouse_down_last_time;
+               _ecore_win32_mouse_down_last_time = e->time;
+            }
+
+          ecore_event_add(ECORE_WIN32_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+       }
+     }
+/*    printf (" * ecore event button press\n"); */
+}
+
+void
+_ecore_win32_event_handle_button_release(Ecore_Win32_Callback_Data *msg,
+                                         int                          button)
+{
+   Ecore_Win32_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   {
+      Ecore_Win32_Event_Mouse_Move *e;
+
+      e = (Ecore_Win32_Event_Mouse_Move *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Move));
+      if (!e) return;
+
+      e->window = window;
+      e->x = GET_X_LPARAM(msg->data_param);
+      e->y = GET_Y_LPARAM(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_win32_event_last_time = e->time;
+      _ecore_win32_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WIN32_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   }
+
+   {
+      Ecore_Win32_Event_Mouse_Button_Up *e;
+
+      e = (Ecore_Win32_Event_Mouse_Button_Up *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Button_Up));
+      if (!e) return;
+
+      e->window = window;
+      e->button = button;
+      e->x = GET_X_LPARAM(msg->data_param);
+      e->y = GET_Y_LPARAM(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_win32_mouse_up_count++;
+
+      if ((_ecore_win32_mouse_up_count >= 2) &&
+          ((e->time - _ecore_win32_mouse_down_last_time) <= _ecore_win32_double_click_time) &&
+          (e->window == _ecore_win32_mouse_down_last_window))
+        e->double_click = 1;
+
+      if ((_ecore_win32_mouse_up_count >= 3) &&
+          ((e->time - _ecore_win32_mouse_down_last_last_time) <= (2.0 * _ecore_win32_double_click_time)) &&
+          (e->window == _ecore_win32_mouse_down_last_window) &&
+          (e->window == _ecore_win32_mouse_down_last_last_window))
+        e->triple_click = 1;
+
+      _ecore_win32_event_last_time = e->time;
+      _ecore_win32_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WIN32_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+   }
+
+/*    printf (" * ecore event button release\n"); */
+}
+
+void
+_ecore_win32_event_handle_motion_notify(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Mouse_Move *e;
+
+   e = (Ecore_Win32_Event_Mouse_Move *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Move));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   e->x = GET_X_LPARAM(msg->data_param);
+   e->y = GET_Y_LPARAM(msg->data_param);
+   e->time = (double)msg->time / 1000.0;
+
+   ecore_event_add(ECORE_WIN32_EVENT_MOUSE_MOVE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_enter_notify(Ecore_Win32_Callback_Data *msg)
+{
+  {
+     Ecore_Win32_Event_Mouse_Move *e;
+
+     e = (Ecore_Win32_Event_Mouse_Move *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Move));
+     if (!e) return;
+
+     e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+     e->x = msg->x;
+     e->y = msg->y;
+     e->time = (double)msg->time / 1000.0;
+
+     _ecore_win32_event_last_time = e->time;
+     _ecore_win32_event_last_window = e->window;
+
+     ecore_event_add(ECORE_WIN32_EVENT_MOUSE_MOVE, e, NULL, NULL);
+  }
+
+  {
+     Ecore_Win32_Event_Mouse_In *e;
+
+     e = (Ecore_Win32_Event_Mouse_In *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_In));
+     if (!e) return;
+
+     e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+     e->x = msg->x;
+     e->y = msg->y;
+     e->time = (double)msg->time / 1000.0;
+
+     _ecore_win32_event_last_time = e->time;
+
+     ecore_event_add(ECORE_WIN32_EVENT_MOUSE_IN, e, NULL, NULL);
+  }
+}
+
+void
+_ecore_win32_event_handle_leave_notify(Ecore_Win32_Callback_Data *msg)
+{
+  {
+     Ecore_Win32_Event_Mouse_Move *e;
+
+     e = (Ecore_Win32_Event_Mouse_Move *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Move));
+     if (!e) return;
+
+     e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+     e->x = msg->x;
+     e->y = msg->y;
+     e->time = (double)msg->time / 1000.0;
+
+     _ecore_win32_event_last_time = e->time;
+     _ecore_win32_event_last_window = e->window;
+
+     ecore_event_add(ECORE_WIN32_EVENT_MOUSE_MOVE, e, NULL, NULL);
+  }
+
+  {
+     Ecore_Win32_Event_Mouse_Out *e;
+
+     e = (Ecore_Win32_Event_Mouse_Out *)calloc(1, sizeof(Ecore_Win32_Event_Mouse_Out));
+     if (!e) return;
+
+     e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+     e->x = msg->x;
+     e->y = msg->y;
+     e->time = (double)msg->time / 1000.0;
+
+     _ecore_win32_event_last_time = e->time;
+
+     ecore_event_add(ECORE_WIN32_EVENT_MOUSE_OUT, e, NULL, NULL);
+  }
+}
+
+void
+_ecore_win32_event_handle_focus_in(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Focus_In *e;
+
+   e = (Ecore_Win32_Event_Window_Focus_In *)calloc(1, sizeof(Ecore_Win32_Event_Window_Focus_In));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+   _ecore_win32_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_focus_out(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Focus_Out *e;
+
+   e = (Ecore_Win32_Event_Window_Focus_Out *)calloc(1, sizeof(Ecore_Win32_Event_Window_Focus_Out));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+   _ecore_win32_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_expose(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Damage *e;
+
+   e = (Ecore_Win32_Event_Window_Damage *)calloc(1, sizeof(Ecore_Win32_Event_Window_Damage));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->x = msg->update.left;
+   e->y = msg->update.top;
+   e->width = msg->update.right - msg->update.left;
+   e->height = msg->update.bottom - msg->update.top;
+/*    printf (" * ecore : event expose %d %d\n", e->width, e->height); */
+
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_create_notify(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Create *e;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Create));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_CREATE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_destroy_notify(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Destroy *e;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Destroy));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+   if (e->window == _ecore_win32_event_last_window) _ecore_win32_event_last_window = NULL;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_DESTROY, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_map_notify(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Show *e;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Show));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_SHOW, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_unmap_notify(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Hide *e;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Hide));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_HIDE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_configure_notify(Ecore_Win32_Callback_Data *msg)
+{
+   WINDOWINFO                          wi;
+   Ecore_Win32_Event_Window_Configure *e;
+   WINDOWPOS                          *window_pos;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Configure));
+   if (!e) return;
+
+   window_pos = (WINDOWPOS *)msg->data_param;
+   wi.cbSize = sizeof(WINDOWINFO);
+   if (!GetWindowInfo(window_pos->hwnd, &wi))
+     {
+        free(e);
+        return;
+     }
+
+/*    printf ("_ecore_win32_event_handle_configure_notify\n"); */
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   e->abovewin = (void *)GetWindowLong(window_pos->hwndInsertAfter, GWL_USERDATA);
+   e->x = wi.rcClient.left;
+   e->y = wi.rcClient.top;
+   e->width = wi.rcClient.right - wi.rcClient.left;
+   e->height = wi.rcClient.bottom - wi.rcClient.top;
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_CONFIGURE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_resize(Ecore_Win32_Callback_Data *msg)
+{
+   RECT                             rect;
+   Ecore_Win32_Event_Window_Resize *e;
+
+   if (!GetClientRect(msg->window, &rect))
+     return;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Resize));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   e->width = rect.right - rect.left;
+   e->height = rect.bottom - rect.top;
+   e->time = _ecore_win32_event_last_time;
+/*    printf (" * _ecore_win32_event_handle_resize %d %d\n", e->width, e->height); */
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_RESIZE, e, NULL, NULL);
+}
+
+void
+_ecore_win32_event_handle_delete_request(Ecore_Win32_Callback_Data *msg)
+{
+   Ecore_Win32_Event_Window_Delete_Request *e;
+
+   e = calloc(1, sizeof(Ecore_Win32_Event_Window_Delete_Request));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   e->time = _ecore_win32_event_last_time;
+
+   ecore_event_add(ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
+}
+
+
+/***** Private functions definitions *****/
+
+static void
+_ecore_win32_event_free_key_down(void *data,
+                                 void *ev)
+{
+   Ecore_Win32_Event_Key_Down *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->keycompose) free(e->keycompose);
+   free(e);
+}
+
+static void
+_ecore_win32_event_free_key_up(void *data,
+                               void *ev)
+{
+   Ecore_Win32_Event_Key_Up *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->keycompose) free(e->keycompose);
+   free(e);
+}
+
+static int
+_ecore_win32_event_keystroke_get(int    key,
+                                 char **keyname,
+                                 char **keysymbol,
+                                 char **keycompose)
+{
+  char *kn;
+  char *ks;
+  char *kc;
+
+  *keyname = NULL;
+  *keysymbol = NULL;
+  *keycompose = NULL;
+
+   switch (key)
+     {
+       /* Keystroke */
+     case VK_PRIOR:
+       kn = "KP_Prior";
+       ks = "KP_Prior";
+       kc = "";
+       break;
+     case VK_NEXT:
+       kn = "KP_Next";
+       ks = "KP_Next";
+       kc = "";
+       break;
+     case VK_END:
+       kn = "KP_End";
+       ks = "KP_End";
+       kc = "";
+       break;
+     case VK_HOME:
+       kn = "KP_Home";
+       ks = "KP_Home";
+       kc = "";
+       break;
+     case VK_LEFT:
+       kn = "KP_Left";
+       ks = "KP_Left";
+       kc = "";
+       break;
+     case VK_UP:
+       kn = "KP_Up";
+       ks = "KP_Up";
+       kc = "";
+       break;
+     case VK_RIGHT:
+       kn = "KP_Right";
+       ks = "KP_Right";
+       kc = "";
+       break;
+     case VK_DOWN:
+       kn = "KP_Down";
+       ks = "KP_Down";
+       kc = "";
+       break;
+     case VK_INSERT:
+       kn = "KP_Insert";
+       ks = "KP_Insert";
+       kc = "";
+       break;
+     case VK_DELETE:
+       kn = "KP_Delete";
+       ks = "KP_Delete";
+       kc = "";
+       break;
+     case VK_F1:
+       kn = "F1";
+       ks = "F1";
+       kc = "";
+       break;
+     case VK_F2:
+       kn = "F2";
+       ks = "F2";
+       kc = "";
+       break;
+     case VK_F3:
+       kn = "F3";
+       ks = "F3";
+       kc = "";
+       break;
+     case VK_F4:
+       kn = "F4";
+       ks = "F4";
+       kc = "";
+       break;
+     case VK_F5:
+       kn = "F5";
+       ks = "F5";
+       kc = "";
+       break;
+     case VK_F6:
+       kn = "F6";
+       ks = "F6";
+       kc = "";
+       break;
+     case VK_F7:
+       kn = "F7";
+       ks = "F7";
+       kc = "";
+       break;
+     case VK_F8:
+       kn = "F8";
+       ks = "F8";
+       kc = "";
+       break;
+     case VK_F9:
+       kn = "F9";
+       ks = "F9";
+       kc = "";
+       break;
+     case VK_F10:
+       kn = "F10";
+       ks = "F10";
+       kc = "";
+       break;
+     case VK_F11:
+       kn = "F11";
+       ks = "F11";
+       kc = "";
+       break;
+     case VK_F12:
+       kn = "F12";
+       ks = "F12";
+       kc = "";
+       break;
+     case VK_F13:
+       kn = "F13";
+       ks = "F13";
+       kc = "";
+       break;
+     case VK_F14:
+       kn = "F14";
+       ks = "F14";
+       kc = "";
+       break;
+     case VK_F15:
+       kn = "F15";
+       ks = "F15";
+       kc = "";
+       break;
+     case VK_F16:
+       kn = "F16";
+       ks = "F16";
+       kc = "";
+       break;
+     case VK_F17:
+       kn = "F17";
+       ks = "F17";
+       kc = "";
+       break;
+     case VK_F18:
+       kn = "F18";
+       ks = "F18";
+       kc = "";
+       break;
+     case VK_F19:
+       kn = "F19";
+       ks = "F19";
+       kc = "";
+       break;
+     case VK_F20:
+       kn = "F20";
+       ks = "F20";
+       kc = "";
+       break;
+     case VK_F21:
+       kn = "F21";
+       ks = "F21";
+       kc = "";
+       break;
+     case VK_F22:
+       kn = "F22";
+       ks = "F22";
+       kc = "";
+       break;
+     case VK_F23:
+       kn = "F23";
+       ks = "F23";
+       kc = "";
+       break;
+     case VK_F24:
+       kn = "F24";
+       ks = "F24";
+       kc = "";
+       break;
+     default:
+       /* other non keystroke characters */
+       return 0;
+     }
+   *keyname = strdup(kn);
+   if (!*keyname) return 0;
+   *keysymbol = strdup(ks);
+   if (!*keysymbol)
+     {
+        free(*keyname);
+        *keyname = NULL;
+        return 0;
+     }
+   *keycompose = strdup(kc);
+   if (!*keycompose)
+     {
+        free(*keyname);
+        free(*keysymbol);
+        *keyname = NULL;
+        *keysymbol = NULL;
+        return 0;
+     }
+
+   return 1;
+}
+
+static int
+_ecore_win32_event_char_get(int    key,
+                            char **keyname,
+                            char **keysymbol,
+                            char **keycompose)
+{
+  char kn[32];
+  char ks[32];
+  char *kc;
+
+  *keyname = NULL;
+  *keysymbol = NULL;
+  *keycompose = NULL;
+
+   switch (key)
+     {
+     case VK_BACK:
+       strncpy(kn, "Backspace", 32);
+       strncpy(ks, "Backspace", 32);
+       kc = "";
+       break;
+     case VK_TAB:
+       strncpy(kn, "Tab", 32);
+       strncpy(ks, "Tab", 32);
+       kc = "";
+       break;
+     case 0x0a:
+       /* Line feed (Shift + Enter) */
+       strncpy(kn, "LineFeed", 32);
+       strncpy(ks, "LineFeed", 32);
+       kc = "";
+       break;
+     case VK_RETURN:
+       strncpy(kn, "Return", 32);
+       strncpy(ks, "Return", 32);
+       kc = "";
+       break;
+     case VK_ESCAPE:
+       strncpy(kn, "Escape", 32);
+       strncpy(ks, "Escape", 32);
+       kc = "";
+       break;
+     default:
+       /* displayable characters */
+       printf (" * key : %d\n", key);
+       kn[0] = (TCHAR)key;
+       kn[1] = '\0';
+       ks[0] = (TCHAR)key;
+       ks[1] = '\0';
+       kc = "";
+       break;
+     }
+   *keyname = strdup(kn);
+   if (!*keyname) return 0;
+   *keysymbol = strdup(ks);
+   if (!*keysymbol)
+     {
+        free(*keyname);
+        *keyname = NULL;
+        return 0;
+     }
+   *keycompose = strdup(kc);
+   if (!*keycompose)
+     {
+        free(*keyname);
+        free(*keysymbol);
+        *keyname = NULL;
+        *keysymbol = NULL;
+        return 0;
+     }
+
+   return 1;
+}
diff --git a/src/lib/ecore_win32/ecore_win32_private.h b/src/lib/ecore_win32/ecore_win32_private.h
new file mode 100644 (file)
index 0000000..93b6fa7
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef __ECORE_WIN32_PRIVATE_H__
+#define __ECORE_WIN32_PRIVATE_H__
+
+
+#define ECORE_WIN32_WINDOW_CLASS "Ecore_Win32_Window_Class"
+
+
+typedef struct _Ecore_Win32_Callback_Data Ecore_Win32_Callback_Data;
+
+struct _Ecore_Win32_Callback_Data
+{
+   RECT         update;
+   HWND         window;
+   unsigned int message;
+   WPARAM       window_param;
+   LPARAM       data_param;
+   long         time;
+   int          x;
+   int          y;
+};
+
+struct _Ecore_Win32_Window
+{
+   HWND                   window;
+
+   DWORD                  style;          /* used to go fullscreen to normal */
+   RECT                   rect;           /* used to go fullscreen to normal */
+
+   unsigned int           min_width;
+   unsigned int           min_height;
+   unsigned int           max_width;
+   unsigned int           max_height;
+   unsigned int           base_width;
+   unsigned int           base_height;
+   unsigned int           step_width;
+   unsigned int           step_height;
+
+   struct {
+      unsigned int        iconified         : 1;
+      unsigned int        modal             : 1;
+      unsigned int        sticky            : 1;
+      unsigned int        maximized_vert    : 1;
+      unsigned int        maximized_horz    : 1;
+      unsigned int        shaded            : 1;
+      unsigned int        hidden            : 1;
+      unsigned int        fullscreen        : 1;
+      unsigned int        above             : 1;
+      unsigned int        below             : 1;
+      unsigned int        demands_attention : 1;
+   } state;
+
+   struct {
+      unsigned int        desktop : 1;
+      unsigned int        dock    : 1;
+      unsigned int        toolbar : 1;
+      unsigned int        menu    : 1;
+      unsigned int        utility : 1;
+      unsigned int        splash  : 1;
+      unsigned int        dialog  : 1;
+      unsigned int        normal  : 1;
+   } type;
+
+   unsigned int           pointer_is_in : 1;
+   unsigned int           borderless    : 1;
+   unsigned int           iconified     : 1;
+   unsigned int           fullscreen    : 1;
+};
+
+
+extern HINSTANCE           _ecore_win32_instance;
+extern double              _ecore_win32_double_click_time;
+extern double              _ecore_win32_event_last_time;
+extern Ecore_Win32_Window *_ecore_win32_event_last_window;
+
+
+char *_ecore_win32_hwnd_str_get(HWND window);
+
+void  _ecore_win32_event_handle_key_press(Ecore_Win32_Callback_Data *msg, int is_keystroke);
+void  _ecore_win32_event_handle_key_release(Ecore_Win32_Callback_Data *msg, int is_keystroke);
+void  _ecore_win32_event_handle_button_press(Ecore_Win32_Callback_Data *msg, int button);
+void  _ecore_win32_event_handle_button_release(Ecore_Win32_Callback_Data *msg, int button);
+void  _ecore_win32_event_handle_motion_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_enter_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_leave_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_focus_in(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_focus_out(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_expose(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_create_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_destroy_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_map_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_unmap_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_configure_notify(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_resize(Ecore_Win32_Callback_Data *msg);
+void  _ecore_win32_event_handle_delete_request(Ecore_Win32_Callback_Data *msg);
+
+
+#endif /* __ECORE_WIN32_PRIVATE_H__ */
diff --git a/src/lib/ecore_win32/ecore_win32_window.c b/src/lib/ecore_win32/ecore_win32_window.c
new file mode 100644 (file)
index 0000000..a3129ee
--- /dev/null
@@ -0,0 +1,922 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "Ecore_Win32.h"
+#include "ecore_win32_private.h"
+
+
+/***** Private declarations *****/
+
+
+typedef enum _Ecore_Win32_Window_Z_Order Ecore_Win32_Window_Z_Order;
+enum _Ecore_Win32_Window_Z_Order
+{
+  ECORE_WIN32_WINDOW_Z_ORDER_BOTTOM,
+  ECORE_WIN32_WINDOW_Z_ORDER_NOTOPMOST,
+  ECORE_WIN32_WINDOW_Z_ORDER_TOP,
+  ECORE_WIN32_WINDOW_Z_ORDER_TOPMOST
+};
+
+static Ecore_Win32_Window *ecore_win32_window_internal_new(Ecore_Win32_Window *parent,
+                                                           int                 x,
+                                                           int                 y,
+                                                           int                 width,
+                                                           int                 height,
+                                                           DWORD               style);
+
+
+/***** API *****/
+
+Ecore_Win32_Window *
+ecore_win32_window_new(Ecore_Win32_Window *parent,
+                       int                 x,
+                       int                 y,
+                       int                 width,
+                       int                 height)
+{
+   return ecore_win32_window_internal_new(parent,
+                                          x, y,
+                                          width, height,
+                                          WS_OVERLAPPEDWINDOW | WS_SIZEBOX);
+}
+
+/* simulate X11 override windows */
+Ecore_Win32_Window *
+ecore_win32_window_override_new(Ecore_Win32_Window *parent,
+                                int                 x,
+                                int                 y,
+                                int                 width,
+                                int                 height)
+{
+   return ecore_win32_window_internal_new(parent,
+                                          x, y,
+                                          width, height,
+                                          WS_POPUP);
+}
+
+void
+ecore_win32_window_del(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   DestroyWindow(((struct _Ecore_Win32_Window *)window)->window);
+   free(window);
+   printf ("ecore_win32_window_del\n");
+}
+
+void *
+ecore_win32_window_hwnd_get(Ecore_Win32_Window *window)
+{
+   if (!window) return NULL;
+
+   return ((struct _Ecore_Win32_Window *)window)->window;
+}
+
+/*
+void
+ecore_win32_window_configure(Ecore_Win32_Window        *window,
+                             Ecore_Win32_Window_Z_Order order,
+                             int                        x,
+                             int                        y,
+                             int                        width,
+                             int                        height)
+{
+  HWND w;
+
+  switch (order)
+    {
+    case ECORE_WIN32_WINDOW_Z_ORDER_BOTTOM:
+      w = HWND_BOTTOM;
+      break;
+    case ECORE_WIN32_WINDOW_Z_ORDER_NOTOPMOST:
+      w = HWND_NOTOPMOST;
+      break;
+    case ECORE_WIN32_WINDOW_Z_ORDER_TOP:
+      w = HWND_TOP;
+      break;
+    case ECORE_WIN32_WINDOW_Z_ORDER_TOPMOST:
+      w = HWND_TOPMOST;
+      break;
+    default:
+      return;
+    }
+  SetWindowPos((struct _Ecore_Win32_Window *)window->window, w, x, y, width, height, ???);
+}
+*/
+
+void
+ecore_win32_window_move(Ecore_Win32_Window *window,
+                        int                 x,
+                        int                 y)
+{
+   RECT rect;
+   HWND w;
+
+   if (!window) return;
+
+   printf ("ecore_win32_window_move %p : %d %d\n", window, x, y);
+   w = ((struct _Ecore_Win32_Window *)window)->window;
+   if (!GetWindowRect(w, &rect))
+     return;
+
+   MoveWindow(w, x, y,
+              rect.right - rect.left,
+              rect.bottom - rect.top,
+              TRUE);
+}
+
+void
+ecore_win32_window_resize(Ecore_Win32_Window *window,
+                          int                 width,
+                          int                 height)
+{
+   RECT                        rect;
+   struct _Ecore_Win32_Window *w;
+   DWORD                       style;
+   int                         x;
+   int                         y;
+
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   if (!GetWindowRect(w->window, &rect)) return;
+
+   printf ("ecore_win32_window_resize 0 : %p (%d %d) (%d %d) (%d %d)\n",
+           w,
+           w->min_width,
+           w->min_height,
+           w->max_width,
+           w->max_height,
+           width,
+           height);
+
+   x = rect.left;
+   y = rect.top;
+   rect.left = 0;
+   rect.top = 0;
+/*    if (width < w->min_width) width = w->min_width; */
+/*    if (width > w->max_width) width = w->max_width; */
+/*    printf ("ecore_win32_window_resize 1 : %d %d %d\n", w->min_height, w->max_height, height); */
+/*    if (height < w->min_height) height = w->min_height; */
+/*    printf ("ecore_win32_window_resize 2 : %d %d\n", w->max_height, height); */
+/*    if (height > w->max_height) height = w->max_height; */
+/*    printf ("ecore_win32_window_resize 3 : %d %d\n", w->max_height, height); */
+   rect.right = width;
+   rect.bottom = height;
+   style = GetWindowLong(w->window, GWL_STYLE);
+   if (!AdjustWindowRect(&rect, style, FALSE))
+     return;
+
+   if (!MoveWindow(w->window, x, y,
+                   rect.right - rect.left,
+                   rect.bottom - rect.top,
+                   FALSE))
+     {
+       printf (" MEEERDE !!!\n");
+     }
+   printf ("ecore_win32_window_resize 4 : %d %d\n", width, height);
+}
+
+void
+ecore_win32_window_move_resize(Ecore_Win32_Window *window,
+                               int                 x,
+                               int                 y,
+                               int                 width,
+                               int                 height)
+{
+   RECT                        rect;
+   struct _Ecore_Win32_Window *w;
+   DWORD                       style;
+
+   if (!window) return;
+
+   printf ("ecore_win32_window_move_resize 0 : %p  %d %d\n", window, width, height);
+   w = ((struct _Ecore_Win32_Window *)window);
+   rect.left = 0;
+   rect.top = 0;
+   if ((unsigned int)width < w->min_width) width = w->min_width;
+   if ((unsigned int)width > w->max_width) width = w->max_width;
+   if ((unsigned int)height < w->min_height) height = w->min_height;
+   if ((unsigned int)height > w->max_height) height = w->max_height;
+   printf ("ecore_win32_window_move_resize 1 : %d %d\n", width, height);
+   rect.right = width;
+   rect.bottom = height;
+   style = GetWindowLong(w->window, GWL_STYLE);
+   if (!AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW | WS_SIZEBOX, FALSE))
+     return;
+
+   MoveWindow(w->window, x, y,
+              rect.right - rect.left,
+              rect.bottom - rect.top,
+              TRUE);
+}
+
+void
+ecore_win32_window_geometry_get(Ecore_Win32_Window *window,
+                                int                *x,
+                                int                *y,
+                                int                *width,
+                                int                *height)
+{
+   RECT rect;
+   int  w;
+   int  h;
+
+   printf ("ecore_win32_window_geometry_get %p\n", window);
+   if (!window)
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = GetSystemMetrics(SM_CXSCREEN);
+        if (height) *height = GetSystemMetrics(SM_CYSCREEN);
+
+        return;
+     }
+
+   if (!GetClientRect(((struct _Ecore_Win32_Window *)window)->window,
+                      &rect))
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = 0;
+        if (height) *height = 0;
+
+        return;
+     }
+
+   w = rect.right - rect.left;
+   h = rect.bottom - rect.top;
+
+   if (!GetWindowRect(((struct _Ecore_Win32_Window *)window)->window,
+                      &rect))
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = 0;
+        if (height) *height = 0;
+
+        return;
+     }
+
+   if (x) *x = rect.left;
+   if (y) *y = rect.top;
+   if (width) *width = w;
+   if (height) *height = h;
+}
+
+void
+ecore_win32_window_size_get(Ecore_Win32_Window *window,
+                            int                *width,
+                            int                *height)
+{
+   RECT rect;
+
+   printf ("ecore_win32_window_size_get %p\n", window);
+   if (!window)
+     {
+        if (width) *width = GetSystemMetrics(SM_CXSCREEN);
+        if (height) *height = GetSystemMetrics(SM_CYSCREEN);
+
+        return;
+     }
+
+   if (!GetClientRect(((struct _Ecore_Win32_Window *)window)->window,
+                      &rect))
+     {
+        if (width) *width = 0;
+        if (height) *height = 0;
+     }
+
+   if (width) *width = rect.right - rect.left;
+   if (height) *height = rect.bottom - rect.top;
+}
+
+void
+ecore_win32_window_size_min_set(Ecore_Win32_Window *window,
+                                unsigned int        min_width,
+                                unsigned int        min_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   printf ("ecore_win32_window_size_min_set : %p  %d %d\n", window, min_width, min_height);
+   w = (struct _Ecore_Win32_Window *)window;
+   w->min_width = min_width;
+   w->min_height = min_height;
+}
+
+void
+ecore_win32_window_size_min_get(Ecore_Win32_Window *window,
+                                unsigned int       *min_width,
+                                unsigned int       *min_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   printf ("ecore_win32_window_size_min_get : %p  %d %d\n", window, w->min_width, w->min_height);
+   if (min_width) *min_width = w->min_width;
+   if (min_height) *min_height = w->min_height;
+}
+
+void
+ecore_win32_window_size_max_set(Ecore_Win32_Window *window,
+                                unsigned int        max_width,
+                                unsigned int        max_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   printf ("ecore_win32_window_size_max_set : %p  %d %d\n", window, max_width, max_height);
+   w = (struct _Ecore_Win32_Window *)window;
+   w->max_width = max_width;
+   w->max_height = max_height;
+}
+
+void
+ecore_win32_window_size_max_get(Ecore_Win32_Window *window,
+                                unsigned int       *max_width,
+                                unsigned int       *max_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   printf ("ecore_win32_window_size_max_get : %p  %d %d\n", window, w->max_width, w->max_height);
+   if (max_width) *max_width = w->max_width;
+   if (max_height) *max_height = w->max_height;
+}
+
+void
+ecore_win32_window_size_base_set(Ecore_Win32_Window *window,
+                                 unsigned int        base_width,
+                                 unsigned int        base_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   printf ("ecore_win32_window_size_base_set : %p  %d %d\n", window, base_width, base_height);
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   w->base_width = base_width;
+   w->base_height = base_height;
+}
+
+void
+ecore_win32_window_size_base_get(Ecore_Win32_Window *window,
+                                 unsigned int       *base_width,
+                                 unsigned int       *base_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   printf ("ecore_win32_window_size_base_get : %p  %d %d\n", window, w->base_width, w->base_height);
+   if (base_width) *base_width = w->base_width;
+   if (base_height) *base_height = w->base_height;
+}
+
+void
+ecore_win32_window_size_step_set(Ecore_Win32_Window *window,
+                                 unsigned int        step_width,
+                                 unsigned int        step_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   printf ("ecore_win32_window_size_step_set : %p  %d %d\n", window, step_width, step_height);
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   w->step_width = step_width;
+   w->step_height = step_height;
+}
+
+void
+ecore_win32_window_size_step_get(Ecore_Win32_Window *window,
+                                 unsigned int       *step_width,
+                                 unsigned int       *step_height)
+{
+   struct _Ecore_Win32_Window *w;
+
+   if (!window) return;
+
+   w = (struct _Ecore_Win32_Window *)window;
+   printf ("ecore_win32_window_size_step_get : %p  %d %d\n", window, w->step_width, w->step_height);
+   if (step_width) *step_width = w->step_width;
+   if (step_height) *step_height = w->step_height;
+}
+
+/* TODO: ecore_win32_window_shaped_set */
+
+void
+ecore_win32_window_show(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   printf (" ** ecore_win32_window_show  %p\n", window);
+   ShowWindow(((struct _Ecore_Win32_Window *)window)->window, SW_SHOWNORMAL);
+   UpdateWindow(((struct _Ecore_Win32_Window *)window)->window);
+}
+
+/* FIXME: seems to block the taskbar */
+void
+ecore_win32_window_hide(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   printf (" ** ecore_win32_window_hide  %p\n", window);
+   ShowWindow(((struct _Ecore_Win32_Window *)window)->window, SW_HIDE);
+}
+
+void
+ecore_win32_window_raise(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   printf (" ** ecore_win32_window_raise  %p\n", window);
+   SetWindowPos(((struct _Ecore_Win32_Window *)window)->window,
+                HWND_TOP, 0, 0, 0, 0,
+                SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+}
+
+void
+ecore_win32_window_lower(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   printf (" ** ecore_win32_window_lower  %p\n", window);
+   SetWindowPos(((struct _Ecore_Win32_Window *)window)->window,
+                HWND_BOTTOM, 0, 0, 0, 0,
+                SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+}
+
+void
+ecore_win32_window_title_set(Ecore_Win32_Window *window,
+                             const char         *title)
+{
+   if (!window) return;
+
+   if (!title || !title[0]) return;
+
+   SetWindowText(((struct _Ecore_Win32_Window *)window)->window, title);
+}
+
+void
+ecore_win32_window_focus_set(Ecore_Win32_Window *window)
+{
+   if (!window) return;
+
+   SetFocus(((struct _Ecore_Win32_Window *)window)->window);
+}
+
+void
+ecore_win32_window_iconified_set(Ecore_Win32_Window *window,
+                                 int                 on)
+{
+   struct _Ecore_Win32_Window *ew;
+
+   if (!window) return;
+
+   ew = (struct _Ecore_Win32_Window *)window;
+   if (((ew->iconified) && (on)) ||
+       ((!ew->iconified) && (!on)))
+     return;
+
+   if (on)
+     {
+        ShowWindow(ew->window,
+                   SW_MINIMIZE);
+     }
+   else
+     {
+        ShowWindow(ew->window,
+                   SW_RESTORE);
+     }
+   ew->iconified = on;
+}
+
+void
+ecore_win32_window_borderless_set(Ecore_Win32_Window *window,
+                                  int                 on)
+{
+   RECT                        rect;
+   DWORD                       style;
+   struct _Ecore_Win32_Window *ew;
+   HWND                        w;
+
+   if (!window) return;
+
+   printf (" ** ecore_win32_window_borderless_set  %p  %d\n", window, on);
+   ew = (struct _Ecore_Win32_Window *)window;
+   if (((ew->borderless) && (on)) ||
+       ((!ew->borderless) && (!on)))
+     return;
+
+   w = ew->window;
+
+   style = GetWindowLong(w, GWL_STYLE);
+   if (on)
+     {
+        if (!GetClientRect(w, &rect)) return;
+        SetWindowLong(w, GWL_STYLE, style & ~WS_CAPTION);
+     }
+   else
+     {
+        if (!GetWindowRect(w, &rect)) return;
+        style |= WS_CAPTION;
+        AdjustWindowRect (&rect, style, FALSE);
+        SetWindowLong(w, GWL_STYLE, style);
+     }
+   SetWindowPos(w, HWND_TOPMOST,
+                rect.left, rect.top,
+                rect.right - rect.left, rect.bottom - rect.top,
+                SWP_NOMOVE | SWP_FRAMECHANGED);
+   ew->borderless = on;
+}
+
+void
+ecore_win32_window_fullscreen_set(Ecore_Win32_Window *window,
+                                  int                 on)
+{
+   struct _Ecore_Win32_Window *ew;
+   HWND                        w;
+   int                         width;
+   int                         height;
+
+   if (!window) return;
+
+   ew = (struct _Ecore_Win32_Window *)window;
+   if (((ew->fullscreen) && (on)) ||
+       ((!ew->fullscreen) && (!on)))
+     return;
+
+   ew->fullscreen = on;
+   w = ew->window;
+
+   if (on)
+     {
+        if (!GetWindowRect(w, &ew->rect)) return;
+        ew->style = GetWindowLong(w, GWL_STYLE);
+        width = GetSystemMetrics (SM_CXSCREEN);
+        height = GetSystemMetrics (SM_CYSCREEN);
+        if (!SetWindowLong(w, GWL_STYLE,
+                           (ew->style & ~WS_OVERLAPPEDWINDOW) | WS_POPUP))
+          return;
+        SetWindowPos(w, HWND_TOP, 0, 0, width, height,
+                     SWP_NOCOPYBITS | SWP_SHOWWINDOW);
+     }
+   else
+     {
+        if (!SetWindowLong(w, GWL_STYLE, ew->style))
+          return;
+        SetWindowPos(w, HWND_NOTOPMOST,
+                     ew->rect.left,
+                     ew->rect.top,
+                     ew->rect.right - ew->rect.left,
+                     ew->rect.bottom - ew->rect.top,
+                     SWP_NOCOPYBITS | SWP_SHOWWINDOW);
+     }
+}
+
+void
+ecore_win32_window_cursor_set(Ecore_Win32_Window *window,
+                              Ecore_Win32_Cursor *cursor)
+{
+   SetClassLong(((struct _Ecore_Win32_Window *)window)->window,
+                GCL_HCURSOR, (LONG)cursor);
+}
+
+void
+ecore_win32_window_state_set(Ecore_Win32_Window       *window,
+                             Ecore_Win32_Window_State *state,
+                             unsigned int              num)
+{
+   unsigned int i;
+
+   if (!num)
+     return;
+
+   for (i = 0; i < num; i++)
+     {
+        switch (state[i])
+          {
+          case ECORE_WIN32_WINDOW_STATE_ICONIFIED:
+            ((struct _Ecore_Win32_Window *)window)->state.iconified = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_MODAL:
+            ((struct _Ecore_Win32_Window *)window)->state.modal = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_STICKY:
+            ((struct _Ecore_Win32_Window *)window)->state.sticky = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_MAXIMIZED_VERT:
+            ((struct _Ecore_Win32_Window *)window)->state.maximized_vert = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_MAXIMIZED_HORZ:
+            ((struct _Ecore_Win32_Window *)window)->state.maximized_horz = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_MAXIMIZED:
+            ((struct _Ecore_Win32_Window *)window)->state.maximized_horz = 1;
+            ((struct _Ecore_Win32_Window *)window)->state.maximized_vert = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_SHADED:
+            ((struct _Ecore_Win32_Window *)window)->state.shaded = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_HIDDEN:
+            ((struct _Ecore_Win32_Window *)window)->state.hidden = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_FULLSCREEN:
+            ((struct _Ecore_Win32_Window *)window)->state.fullscreen = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_ABOVE:
+            ((struct _Ecore_Win32_Window *)window)->state.above = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_BELOW:
+            ((struct _Ecore_Win32_Window *)window)->state.below = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_DEMANDS_ATTENTION:
+            ((struct _Ecore_Win32_Window *)window)->state.demands_attention = 1;
+            break;
+          case ECORE_WIN32_WINDOW_STATE_UNKNOWN:
+            /* nothing to be done */
+            break;
+          }
+     }
+}
+
+void
+ecore_win32_window_state_request_send(Ecore_Win32_Window      *window,
+                                      Ecore_Win32_Window_State state,
+                                      unsigned int             set)
+{
+  if (!window)
+    return;
+
+   switch (state)
+     {
+     case ECORE_WIN32_WINDOW_STATE_ICONIFIED:
+       if (((struct _Ecore_Win32_Window *)window)->state.iconified)
+         ecore_win32_window_iconified_set(window, set);
+       break;
+     case ECORE_WIN32_WINDOW_STATE_MODAL:
+       ((struct _Ecore_Win32_Window *)window)->state.modal = 1;
+       break;
+     case ECORE_WIN32_WINDOW_STATE_STICKY:
+       ((struct _Ecore_Win32_Window *)window)->state.sticky = 1;
+       break;
+     case ECORE_WIN32_WINDOW_STATE_MAXIMIZED_VERT:
+       if (((struct _Ecore_Win32_Window *)window)->state.maximized_vert)
+         {
+            RECT rect;
+            int  y;
+            int  height;
+
+            if (!SystemParametersInfo(SPI_GETWORKAREA, 0,
+                                      &rect, 0))
+              break;
+            y = rect.top;
+            height = rect.bottom - rect.top;
+
+            if (!GetClientRect(((struct _Ecore_Win32_Window *)window)->window,
+                               &rect))
+              break;
+
+            MoveWindow(window, rect.left, y,
+                       rect.right - rect.left,
+                       height,
+                       TRUE);
+         }
+       break;
+     case ECORE_WIN32_WINDOW_STATE_MAXIMIZED_HORZ:
+       if (((struct _Ecore_Win32_Window *)window)->state.maximized_horz)
+         {
+            RECT rect;
+
+            if (!GetClientRect(((struct _Ecore_Win32_Window *)window)->window,
+                               &rect))
+              break;
+
+            MoveWindow(window, 0, rect.top,
+                       GetSystemMetrics(SM_CXSCREEN),
+                       rect.bottom - rect.top,
+                       TRUE);
+         }
+       break;
+     case ECORE_WIN32_WINDOW_STATE_MAXIMIZED:
+       if (((struct _Ecore_Win32_Window *)window)->state.maximized_vert &&
+           ((struct _Ecore_Win32_Window *)window)->state.maximized_horz)
+         {
+            RECT rect;
+
+            if (!SystemParametersInfo(SPI_GETWORKAREA, 0,
+                                      &rect, 0))
+              break;
+
+            MoveWindow(window, 0, 0,
+                       GetSystemMetrics(SM_CXSCREEN),
+                       rect.bottom - rect.top,
+                       TRUE);
+         }
+       break;
+     case ECORE_WIN32_WINDOW_STATE_SHADED:
+       ((struct _Ecore_Win32_Window *)window)->state.shaded = 1;
+       break;
+     case ECORE_WIN32_WINDOW_STATE_HIDDEN:
+       ((struct _Ecore_Win32_Window *)window)->state.hidden = 1;
+       break;
+     case ECORE_WIN32_WINDOW_STATE_FULLSCREEN:
+       if (((struct _Ecore_Win32_Window *)window)->state.fullscreen)
+         ecore_win32_window_fullscreen_set(window, set);
+       break;
+     case ECORE_WIN32_WINDOW_STATE_ABOVE:
+       if (((struct _Ecore_Win32_Window *)window)->state.above)
+         SetWindowPos(((struct _Ecore_Win32_Window *)window)->window,
+                      HWND_TOP,
+                      0, 0,
+                      0, 0,
+                      SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
+       break;
+     case ECORE_WIN32_WINDOW_STATE_BELOW:
+       if (((struct _Ecore_Win32_Window *)window)->state.below)
+         SetWindowPos(((struct _Ecore_Win32_Window *)window)->window,
+                      HWND_BOTTOM,
+                      0, 0,
+                      0, 0,
+                      SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
+       break;
+     case ECORE_WIN32_WINDOW_STATE_DEMANDS_ATTENTION:
+       ((struct _Ecore_Win32_Window *)window)->state.demands_attention = 1;
+       break;
+     case ECORE_WIN32_WINDOW_STATE_UNKNOWN:
+       /* nothing to be done */
+       break;
+     }
+}
+
+void
+ecore_win32_window_type_set(Ecore_Win32_Window      *window,
+                            Ecore_Win32_Window_Type  type)
+{
+   switch (type)
+     {
+     case ECORE_WIN32_WINDOW_TYPE_DESKTOP:
+       ((struct _Ecore_Win32_Window *)window)->type.desktop = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_DOCK:
+       ((struct _Ecore_Win32_Window *)window)->type.dock = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_TOOLBAR:
+       ((struct _Ecore_Win32_Window *)window)->type.toolbar = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_MENU:
+       ((struct _Ecore_Win32_Window *)window)->type.menu = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_UTILITY:
+       ((struct _Ecore_Win32_Window *)window)->type.utility = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_SPLASH:
+       ((struct _Ecore_Win32_Window *)window)->type.splash = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_DIALOG:
+       ((struct _Ecore_Win32_Window *)window)->type.dialog = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_NORMAL:
+       ((struct _Ecore_Win32_Window *)window)->type.normal = 1;
+       break;
+     case ECORE_WIN32_WINDOW_TYPE_UNKNOWN:
+       ((struct _Ecore_Win32_Window *)window)->type.normal = 1;
+       break;
+     }
+}
+
+
+/***** Private functions definitions *****/
+
+static Ecore_Win32_Window *
+ecore_win32_window_internal_new(Ecore_Win32_Window *parent,
+                                int                 x,
+                                int                 y,
+                                int                 width,
+                                int                 height,
+                                DWORD               style)
+{
+   RECT                        rect;
+   struct _Ecore_Win32_Window *w;
+   int                         minimal_width;
+   int                         minimal_height;
+
+   w = (struct _Ecore_Win32_Window *)calloc(1, sizeof(struct _Ecore_Win32_Window));
+   if (!w)
+     return NULL;
+
+   printf (" *** ecore_win32_window_new : %p  %d %d %d\n",
+           w,
+           width, height, GetSystemMetrics(SM_CXMIN));
+   rect.left = 0;
+   rect.top = 0;
+   rect.right = width;
+   rect.bottom = height;
+   if (!AdjustWindowRect(&rect, style, FALSE))
+     {
+        free(w);
+        return NULL;
+     }
+   printf (" * ecore : new debut : %ld %d %d\n",
+           rect.right - rect.left, GetSystemMetrics(SM_CXMIN), GetSystemMetrics(SM_CYMIN));
+
+   minimal_width = GetSystemMetrics(SM_CXMIN);
+   minimal_height = GetSystemMetrics(SM_CYMIN);
+/*    if (((rect.right - rect.left) < minimal_width) || */
+/*        ((rect.bottom - rect.top) < minimal_height)) */
+/*      { */
+/*         fprintf (stderr, "[Ecore] [Win32] ERROR !!\n"); */
+/*         fprintf (stderr, "                Wrong size %ld\n", rect.right - rect.left); */
+/*         free(w); */
+/*         return NULL; */
+/*      } */
+   if ((rect.right - rect.left) < minimal_width)
+     {
+       rect.right = rect.left + minimal_width;
+     }
+
+   w->window = CreateWindow(ECORE_WIN32_WINDOW_CLASS, "",
+                            style,
+                            x, y,
+                            rect.right - rect.left,
+                            rect.bottom - rect.top,
+                            parent ? ((struct _Ecore_Win32_Window *)parent)->window : NULL,
+                            NULL, _ecore_win32_instance, NULL);
+   if (!w->window)
+     {
+        free(w);
+        return NULL;
+     }
+
+   SetLastError(0);
+   if (!SetWindowLong(w->window, GWL_USERDATA, (LONG)w) && (GetLastError() != 0))
+     {
+        DestroyWindow(w->window);
+        free(w);
+        return NULL;
+     }
+
+   w->min_width   = 0;
+   w->min_height  = 0;
+   w->max_width   = 32767;
+   w->max_height  = 32767;
+   w->base_width  = -1;
+   w->base_height = -1;
+   w->step_width  = -1;
+   w->step_height = -1;
+
+   w->state.iconified         = 0;
+   w->state.modal             = 0;
+   w->state.sticky            = 0;
+   w->state.maximized_vert    = 0;
+   w->state.maximized_horz    = 0;
+   w->state.shaded            = 0;
+   w->state.hidden            = 0;
+   w->state.fullscreen        = 0;
+   w->state.above             = 0;
+   w->state.below             = 0;
+   w->state.demands_attention = 0;
+
+   w->type.desktop = 0;
+   w->type.dock    = 0;
+   w->type.toolbar = 0;
+   w->type.menu    = 0;
+   w->type.utility = 0;
+   w->type.splash  = 0;
+   w->type.dialog  = 0;
+   w->type.normal  = 0;
+
+   w->pointer_is_in = 0;
+   w->borderless    = 0;
+   w->iconified     = 0;
+   w->fullscreen    = 0;
+
+   printf (" *** ecore_win32_window_new fin : (%d %d) (%d %d)\n",
+           w->min_width,
+           w->min_height,
+           w->max_width,
+           w->max_height);
+
+   return w;
+}
diff --git a/src/lib/ecore_wince/.cvsignore b/src/lib/ecore_wince/.cvsignore
new file mode 100644 (file)
index 0000000..584f554
--- /dev/null
@@ -0,0 +1,4 @@
+.libs
+.deps
+Makefile
+Makefile.in
diff --git a/src/lib/ecore_wince/Ecore_WinCE.h b/src/lib/ecore_wince/Ecore_WinCE.h
new file mode 100644 (file)
index 0000000..0b6b46a
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef __ECORE_WINCE_H__
+#define __ECORE_WINCE_H__
+
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WINCE
+# ifdef EFL_ECORE_WINCE_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_ECORE_WINCE_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WINCE */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+typedef void Ecore_WinCE_Window;
+
+
+/* Events */
+
+typedef struct _Ecore_WinCE_Event_Key_Down              Ecore_WinCE_Event_Key_Down;
+typedef struct _Ecore_WinCE_Event_Key_Up                Ecore_WinCE_Event_Key_Up;
+typedef struct _Ecore_WinCE_Event_Mouse_Button_Down     Ecore_WinCE_Event_Mouse_Button_Down;
+typedef struct _Ecore_WinCE_Event_Mouse_Button_Up       Ecore_WinCE_Event_Mouse_Button_Up;
+typedef struct _Ecore_WinCE_Event_Mouse_Move            Ecore_WinCE_Event_Mouse_Move;
+typedef struct _Ecore_WinCE_Event_Mouse_In              Ecore_WinCE_Event_Mouse_In;
+typedef struct _Ecore_WinCE_Event_Mouse_Out             Ecore_WinCE_Event_Mouse_Out;
+typedef struct _Ecore_WinCE_Event_Window_Focus_In       Ecore_WinCE_Event_Window_Focus_In;
+typedef struct _Ecore_WinCE_Event_Window_Focus_Out      Ecore_WinCE_Event_Window_Focus_Out;
+typedef struct _Ecore_WinCE_Event_Window_Damage         Ecore_WinCE_Event_Window_Damage;
+typedef struct _Ecore_WinCE_Event_Window_Create         Ecore_WinCE_Event_Window_Create;
+typedef struct _Ecore_WinCE_Event_Window_Destroy        Ecore_WinCE_Event_Window_Destroy;
+typedef struct _Ecore_WinCE_Event_Window_Hide           Ecore_WinCE_Event_Window_Hide;
+typedef struct _Ecore_WinCE_Event_Window_Show           Ecore_WinCE_Event_Window_Show;
+typedef struct _Ecore_WinCE_Event_Window_Delete_Request Ecore_WinCE_Event_Window_Delete_Request;
+
+struct _Ecore_WinCE_Event_Key_Down
+{
+   Ecore_WinCE_Window *window;
+   char               *keyname;
+   char               *keysymbol;
+   char               *keycompose;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Key_Up
+{
+   Ecore_WinCE_Window *window;
+   char               *keyname;
+   char               *keysymbol;
+   char               *keycompose;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Mouse_Button_Down
+{
+   Ecore_WinCE_Window *window;
+   int                 button;
+   int                 x;
+   int                 y;
+   double              time;
+   unsigned int        double_click : 1;
+   unsigned int        triple_click : 1;
+};
+
+struct _Ecore_WinCE_Event_Mouse_Button_Up
+{
+   Ecore_WinCE_Window *window;
+   int                 button;
+   int                 x;
+   int                 y;
+   double              time;
+   unsigned int        double_click : 1;
+   unsigned int        triple_click : 1;
+};
+
+struct _Ecore_WinCE_Event_Mouse_Move
+{
+   Ecore_WinCE_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Mouse_In
+{
+   Ecore_WinCE_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Mouse_Out
+{
+   Ecore_WinCE_Window *window;
+   int                 x;
+   int                 y;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Focus_In
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Focus_Out
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Damage
+{
+   Ecore_WinCE_Window *window;
+   int                 x;
+   int                 y;
+   int                 width;
+   int                 height;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Create
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Destroy
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Hide
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Show
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+struct _Ecore_WinCE_Event_Window_Delete_Request
+{
+   Ecore_WinCE_Window *window;
+   double              time;
+};
+
+
+EAPI extern int ECORE_WINCE_EVENT_KEY_DOWN;
+EAPI extern int ECORE_WINCE_EVENT_KEY_UP;
+EAPI extern int ECORE_WINCE_EVENT_MOUSE_BUTTON_DOWN;
+EAPI extern int ECORE_WINCE_EVENT_MOUSE_BUTTON_UP;
+EAPI extern int ECORE_WINCE_EVENT_MOUSE_MOVE;
+EAPI extern int ECORE_WINCE_EVENT_MOUSE_IN;
+EAPI extern int ECORE_WINCE_EVENT_MOUSE_OUT;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_FOCUS_IN;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_FOCUS_OUT;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_DAMAGE;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_CREATE;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_DESTROY;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_HIDE;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_SHOW;
+EAPI extern int ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST;
+
+
+/* Core */
+
+EAPI int    ecore_wince_init();
+EAPI int    ecore_wince_shutdown();
+EAPI double ecore_wince_current_time_get(void);
+EAPI void   ecore_wince_message_loop_begin (void);
+
+/* Window */
+
+EAPI Ecore_WinCE_Window *ecore_wince_window_new(Ecore_WinCE_Window *parent,
+                                                int                 x,
+                                                int                 y,
+                                                int                 width,
+                                                int                 height);
+
+EAPI void ecore_wince_window_del(Ecore_WinCE_Window *window);
+
+EAPI void ecore_wince_window_show(Ecore_WinCE_Window *window);
+
+EAPI void ecore_wince_window_hide(Ecore_WinCE_Window *window);
+
+EAPI void ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend);
+
+EAPI void ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int));
+
+EAPI void ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(int));
+
+EAPI void ecore_wince_window_geometry_get(Ecore_WinCE_Window *window,
+                                          int                *x,
+                                          int                *y,
+                                          int                *width,
+                                          int                *height);
+
+EAPI void ecore_wince_window_size_get(Ecore_WinCE_Window *window,
+                                      int                *width,
+                                      int                *height);
+
+EAPI void *ecore_wince_window_window_get(Ecore_WinCE_Window *window);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __ECORE_WINCE_H__ */
diff --git a/src/lib/ecore_wince/Makefile.am b/src/lib/ecore_wince/Makefile.am
new file mode 100644 (file)
index 0000000..d5f3499
--- /dev/null
@@ -0,0 +1,31 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+
+if BUILD_ECORE_WINCE
+
+lib_LTLIBRARIES = libecore_wince.la
+
+include_HEADERS = \
+Ecore_WinCE.h
+
+libecore_wince_la_SOURCES = \
+ecore_wince.c \
+ecore_wince_event.c \
+ecore_wince_window.c
+
+libecore_wince_la_LIBADD = \
+@WIN32_LIBS@ \
+$(top_builddir)/src/lib/ecore/libecore.la
+
+libecore_wince_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
+endif
+
+EXTRA_DIST = \
+ecore_wince_private.h
diff --git a/src/lib/ecore_wince/ecore_wince.c b/src/lib/ecore_wince/ecore_wince.c
new file mode 100644 (file)
index 0000000..71ebf77
--- /dev/null
@@ -0,0 +1,323 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "Ecore.h"
+#include "Ecore_WinCE.h"
+#include "ecore_wince_private.h"
+
+
+/***** Global declarations *****/
+
+double              _ecore_wince_double_click_time = 0.25;
+double              _ecore_wince_event_last_time = 0.0;
+Ecore_WinCE_Window *_ecore_wince_event_last_window = NULL;
+HINSTANCE           _ecore_wince_instance = NULL;
+
+int ECORE_WINCE_EVENT_KEY_DOWN              = 0;
+int ECORE_WINCE_EVENT_KEY_UP                = 0;
+int ECORE_WINCE_EVENT_MOUSE_BUTTON_DOWN     = 0;
+int ECORE_WINCE_EVENT_MOUSE_BUTTON_UP       = 0;
+int ECORE_WINCE_EVENT_MOUSE_MOVE            = 0;
+int ECORE_WINCE_EVENT_MOUSE_IN              = 0;
+int ECORE_WINCE_EVENT_MOUSE_OUT             = 0;
+int ECORE_WINCE_EVENT_WINDOW_FOCUS_IN       = 0;
+int ECORE_WINCE_EVENT_WINDOW_FOCUS_OUT      = 0;
+int ECORE_WINCE_EVENT_WINDOW_DAMAGE         = 0;
+int ECORE_WINCE_EVENT_WINDOW_CREATE         = 0;
+int ECORE_WINCE_EVENT_WINDOW_DESTROY        = 0;
+int ECORE_WINCE_EVENT_WINDOW_SHOW           = 0;
+int ECORE_WINCE_EVENT_WINDOW_HIDE           = 0;
+int ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST = 0;
+
+
+/***** Private declarations *****/
+
+static int       _ecore_wince_init_count = 0;
+
+
+LRESULT CALLBACK _ecore_wince_window_procedure(HWND   window,
+                                               UINT   message,
+                                               WPARAM window_param,
+                                               LPARAM data_param);
+
+
+/***** API *****/
+
+int
+ecore_wince_init()
+{
+   WNDCLASS wc;
+
+   if (_ecore_wince_init_count > 0)
+     {
+       _ecore_wince_init_count++;
+       return _ecore_wince_init_count;
+     }
+
+   _ecore_wince_instance = GetModuleHandle(NULL);
+   if (!_ecore_wince_instance)
+     return 0;
+
+   memset (&wc, 0, sizeof (wc));
+   wc.style = CS_HREDRAW | CS_VREDRAW;
+   wc.lpfnWndProc = _ecore_wince_window_procedure;
+   wc.cbClsExtra = 0;
+   wc.cbWndExtra = 0;
+   wc.hInstance = _ecore_wince_instance;
+   wc.hIcon = NULL;
+   wc.hCursor = LoadCursor (NULL, IDC_ARROW);
+   wc.hbrBackground = GetSysColorBrush(COLOR_BTNFACE);
+   wc.lpszMenuName =  NULL;
+   wc.lpszClassName = ECORE_WINCE_WINDOW_CLASS;
+
+   if(!RegisterClass(&wc))
+     {
+        FreeLibrary(_ecore_wince_instance);
+        return 0;
+     }
+
+   if (!ECORE_WINCE_EVENT_KEY_DOWN)
+     {
+        ECORE_WINCE_EVENT_KEY_DOWN              = ecore_event_type_new();
+        ECORE_WINCE_EVENT_KEY_UP                = ecore_event_type_new();
+        ECORE_WINCE_EVENT_MOUSE_BUTTON_DOWN     = ecore_event_type_new();
+        ECORE_WINCE_EVENT_MOUSE_BUTTON_UP       = ecore_event_type_new();
+        ECORE_WINCE_EVENT_MOUSE_MOVE            = ecore_event_type_new();
+        ECORE_WINCE_EVENT_MOUSE_IN              = ecore_event_type_new();
+        ECORE_WINCE_EVENT_MOUSE_OUT             = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_FOCUS_IN       = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_FOCUS_OUT      = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_DAMAGE         = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_CREATE         = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_DESTROY        = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_SHOW           = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_HIDE           = ecore_event_type_new();
+        ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
+     }
+
+   _ecore_wince_init_count++;
+
+   printf ("ecore_wince : instance + class bon\n");
+
+   return _ecore_wince_init_count;
+}
+
+int
+ecore_wince_shutdown()
+{
+   _ecore_wince_init_count++;
+   if (_ecore_wince_init_count > 0) return _ecore_wince_init_count;
+   if (!_ecore_wince_instance) return _ecore_wince_init_count;
+
+   UnregisterClass(ECORE_WINCE_WINDOW_CLASS, _ecore_wince_instance);
+   FreeLibrary(_ecore_wince_instance);
+   _ecore_wince_instance = NULL;
+
+   if (_ecore_wince_init_count < 0) _ecore_wince_init_count = 0;
+
+   return _ecore_wince_init_count;
+}
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ *
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param t The time in seconds
+ */
+EAPI void
+ecore_wince_double_click_time_set(double t)
+{
+   if (t < 0.0) t = 0.0;
+   _ecore_wince_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_wince_double_click_time_set for more information.
+ *
+ * @return The timeout for double clicks in seconds.
+ */
+EAPI double
+ecore_wince_double_click_time_get(void)
+{
+   return _ecore_wince_double_click_time;
+}
+
+/**
+ * Return the last event time
+ */
+EAPI double
+ecore_wince_current_time_get(void)
+{
+   return _ecore_wince_event_last_time;
+}
+
+
+/***** Private functions definitions *****/
+
+LRESULT CALLBACK
+_ecore_wince_window_procedure(HWND   window,
+                              UINT   message,
+                              WPARAM window_param,
+                              LPARAM data_param)
+{
+   Ecore_WinCE_Callback_Data *data;
+   POINTS                     pt;
+   DWORD                      coord;
+
+   data = (Ecore_WinCE_Callback_Data *)malloc(sizeof(Ecore_WinCE_Callback_Data));
+   if (!data) return DefWindowProc(window, message, window_param, data_param);
+
+   data->window = window;
+   data->message = message;
+   data->window_param = window_param;
+   data->data_param = data_param;
+   data->time = GetTickCount();
+   coord = GetMessagePos();
+   pt = MAKEPOINTS(coord);
+   data->x = pt.x;
+   data->y = pt.y;
+
+   switch (data->message)
+     {
+       /* Keyboard input notifications */
+     case WM_HOTKEY:
+       printf (" * ecore message : keystroke down (hotkey)\n");
+       _ecore_wince_event_handle_key_press(data);
+       return 0;
+     case WM_KEYDOWN:
+       printf (" * ecore message : keystroke down\n");
+       _ecore_wince_event_handle_key_press(data);
+       return 0;
+     case WM_KEYUP:
+       printf (" * ecore message : keystroke up\n");
+       _ecore_wince_event_handle_key_release(data);
+       return 0;
+     case WM_SETFOCUS:
+       printf (" * ecore message : focus in\n");
+       _ecore_wince_event_handle_focus_in(data);
+       return 0;
+     case WM_KILLFOCUS:
+       printf (" * ecore message : focus out\n");
+       _ecore_wince_event_handle_focus_out(data);
+       return 0;
+       /* Mouse input notifications */
+     case WM_LBUTTONDOWN:
+       printf (" * ecore message : lbuttondown\n");
+       _ecore_wince_event_handle_button_press(data, 1);
+       return 0;
+     case WM_LBUTTONUP:
+       printf (" * ecore message : lbuttonup\n");
+       _ecore_wince_event_handle_button_release(data, 1);
+       return 0;
+     case WM_MOUSEMOVE:
+       {
+          RECT                        rect;
+          struct _Ecore_WinCE_Window *w = NULL;
+
+          w = (struct _Ecore_WinCE_Window *)GetWindowLong(window, GWL_USERDATA);
+          printf (" * ecore message : mouse move\n");
+
+          if (GetClientRect(window, &rect))
+            {
+               POINT pt;
+
+               printf ("GetClientRect !!\n");
+               pt.x = LOWORD(data_param);
+               pt.y = HIWORD(data_param);
+               if (!PtInRect(&rect, pt))
+                 {
+                    printf ("pas dans rect...\n");
+                    if (w->pointer_is_in)
+                      {
+                         w->pointer_is_in = 0;
+                         _ecore_wince_event_handle_leave_notify(data);
+                      }
+                 }
+               else
+                 {
+                    printf ("dans rect... %d\n", w->pointer_is_in);
+                    if (!w->pointer_is_in)
+                      {
+                         printf ("w->pointer_is_in a 0\n");
+                         w->pointer_is_in = 1;
+                         _ecore_wince_event_handle_enter_notify(data);
+                      }
+                 }
+            }
+          else
+            {
+               printf ("pas de GetClientRect !!\n");
+            }
+          _ecore_wince_event_handle_motion_notify(data);
+
+          return 0;
+       }
+       /* Window notifications */
+     case WM_CREATE:
+       {
+         RECT rect;
+         GetClientRect(window, &rect);
+         printf (" *** ecore message : create %ld %ld\n",
+                 rect.right - rect.left, rect.bottom - rect.top);
+       }
+       _ecore_wince_event_handle_create_notify(data);
+       return 0;
+     case WM_DESTROY:
+       printf (" * ecore message : destroy\n");
+       _ecore_wince_event_handle_destroy_notify(data);
+       return 0;
+     case WM_SHOWWINDOW:
+       {
+         RECT rect;
+         GetClientRect(window, &rect);
+         printf (" *** ecore message : show %ld %ld\n",
+                 rect.right - rect.left, rect.bottom - rect.top);
+       }
+       if ((data->data_param == SW_OTHERUNZOOM) ||
+           (data->data_param == SW_OTHERUNZOOM))
+         return 0;
+
+       if (data->window_param)
+         _ecore_wince_event_handle_map_notify(data);
+       else
+         _ecore_wince_event_handle_unmap_notify(data);
+
+       return 0;
+     case WM_CLOSE:
+       printf (" * ecore message : close\n");
+       _ecore_wince_event_handle_delete_request(data);
+       return 0;
+       /* GDI notifications */
+     case WM_PAINT:
+       {
+          RECT rect;
+          PAINTSTRUCT paint;
+
+          printf (" * ecore message : paint\n");
+          if (BeginPaint(window, &paint))
+            {
+               printf (" * ecore message : painting...\n");
+               data->update = paint.rcPaint;
+               _ecore_wince_event_handle_expose(data);
+               EndPaint(window, &paint);
+            }
+          return 0;
+       }
+     default:
+       return DefWindowProc(window, message, window_param, data_param);
+     }
+
+}
diff --git a/src/lib/ecore_wince/ecore_wince_event.c b/src/lib/ecore_wince/ecore_wince_event.c
new file mode 100644 (file)
index 0000000..73fcd56
--- /dev/null
@@ -0,0 +1,844 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "Ecore.h"
+#include "Ecore_WinCE.h"
+#include "ecore_wince_private.h"
+
+
+/***** Private declarations *****/
+
+static Ecore_WinCE_Window *_ecore_wince_mouse_down_last_window = NULL;
+static Ecore_WinCE_Window *_ecore_wince_mouse_down_last_last_window = NULL;
+static double              _ecore_wince_mouse_down_last_time = 0;
+static double              _ecore_wince_mouse_down_last_last_time = 0;
+static int                 _ecore_wince_mouse_down_did_triple = 0;
+static int                 _ecore_wince_mouse_up_count = 0;
+
+
+static void _ecore_wince_event_free_key_down(void *data,
+                                             void *ev);
+
+static void _ecore_wince_event_free_key_up(void *data,
+                                           void *ev);
+
+static int  _ecore_wince_event_keystroke_get(int    key,
+                                             char **keyname,
+                                             char **keysymbol,
+                                             char **keycompose);
+
+static int  _ecore_wince_event_char_get(int    key,
+                                        char **keyname,
+                                        char **keysymbol,
+                                        char **keycompose);
+
+
+/***** Global functions *****/
+
+void
+_ecore_wince_event_handle_key_press(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Key_Down *e;
+
+   e = (Ecore_WinCE_Event_Key_Down *)malloc(sizeof(Ecore_WinCE_Event_Key_Down));
+   if (!e) return;
+
+   if (!_ecore_wince_event_keystroke_get(LOWORD(msg->window_param),
+                                         &e->keyname,
+                                         &e->keysymbol,
+                                         &e->keycompose))
+     {
+        free(e);
+        return;
+     }
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+   e->time = (double)msg->time / 1000.0;
+
+   _ecore_wince_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_KEY_DOWN, e, _ecore_wince_event_free_key_down, NULL);
+}
+
+void
+_ecore_wince_event_handle_key_release(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Key_Up *e;
+
+   e = (Ecore_WinCE_Event_Key_Up *)calloc(1, sizeof(Ecore_WinCE_Event_Key_Up));
+   if (!e) return;
+
+   if (!_ecore_wince_event_keystroke_get(LOWORD(msg->window_param),
+                                         &e->keyname,
+                                         &e->keysymbol,
+                                         &e->keycompose))
+     {
+        free(e);
+        return;
+     }
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+   e->time = (double)msg->time / 1000.0;
+
+   _ecore_wince_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_KEY_UP, e, _ecore_wince_event_free_key_up, NULL);
+}
+
+void
+_ecore_wince_event_handle_button_press(Ecore_WinCE_Callback_Data *msg,
+                                       int                        button)
+{
+   Ecore_WinCE_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   {
+      Ecore_WinCE_Event_Mouse_Move *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Move *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Move));
+      if (!e) return;
+
+      e->window = window;
+      e->x = LOWORD(msg->data_param);
+      e->y = HIWORD(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   }
+
+   {
+      Ecore_WinCE_Event_Mouse_Button_Down *e;
+
+      if (_ecore_wince_mouse_down_did_triple)
+        {
+           _ecore_wince_mouse_down_last_window = NULL;
+           _ecore_wince_mouse_down_last_last_window = NULL;
+           _ecore_wince_mouse_down_last_time = 0.0;
+           _ecore_wince_mouse_down_last_last_time = 0.0;
+        }
+
+      e = (Ecore_WinCE_Event_Mouse_Button_Down *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Button_Down));
+      if (!e) return;
+
+      e->window = window;
+      e->button = button;
+      e->x = LOWORD(msg->data_param);
+      e->y = HIWORD(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      if (((e->time - _ecore_wince_mouse_down_last_time) <= _ecore_wince_double_click_time) &&
+          (e->window == _ecore_wince_mouse_down_last_window))
+        e->double_click = 1;
+
+      if (((e->time - _ecore_wince_mouse_down_last_last_time) <= (2.0 * _ecore_wince_double_click_time)) &&
+          (e->window == _ecore_wince_mouse_down_last_window) &&
+          (e->window == _ecore_wince_mouse_down_last_last_window))
+        {
+           e->triple_click = 1;
+           _ecore_wince_mouse_down_did_triple = 1;
+        }
+      else
+        _ecore_wince_mouse_down_did_triple = 0;
+
+      if (!e->double_click && !e->triple_click)
+        _ecore_wince_mouse_up_count = 0;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      if (!_ecore_wince_mouse_down_did_triple)
+        {
+           _ecore_wince_mouse_down_last_last_window = _ecore_wince_mouse_down_last_window;
+           _ecore_wince_mouse_down_last_window = e->window;
+           _ecore_wince_mouse_down_last_last_time = _ecore_wince_mouse_down_last_time;
+           _ecore_wince_mouse_down_last_time = e->time;
+        }
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+   }
+   printf (" * ecore event button press\n");
+}
+
+void
+_ecore_wince_event_handle_button_release(Ecore_WinCE_Callback_Data *msg,
+                                         int                          button)
+{
+   Ecore_WinCE_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   {
+      Ecore_WinCE_Event_Mouse_Move *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Move *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Move));
+      if (!e) return;
+
+      e->window = window;
+      e->x = LOWORD(msg->data_param);
+      e->y = HIWORD(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   }
+
+   {
+      Ecore_WinCE_Event_Mouse_Button_Up *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Button_Up *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Button_Up));
+      if (!e) return;
+
+      e->window = window;
+      e->button = button;
+      e->x = LOWORD(msg->data_param);
+      e->y = HIWORD(msg->data_param);
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_mouse_up_count++;
+
+      if ((_ecore_wince_mouse_up_count >= 2) &&
+          ((e->time - _ecore_wince_mouse_down_last_time) <= _ecore_wince_double_click_time) &&
+          (e->window == _ecore_wince_mouse_down_last_window))
+        e->double_click = 1;
+
+      if ((_ecore_wince_mouse_up_count >= 3) &&
+          ((e->time - _ecore_wince_mouse_down_last_last_time) <= (2.0 * _ecore_wince_double_click_time)) &&
+          (e->window == _ecore_wince_mouse_down_last_window) &&
+          (e->window == _ecore_wince_mouse_down_last_last_window))
+        e->triple_click = 1;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+   }
+
+   printf (" * ecore event button release\n");
+}
+
+void
+_ecore_wince_event_handle_motion_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Mouse_Move *e;
+
+   e = (Ecore_WinCE_Event_Mouse_Move *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Move));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   e->x = LOWORD(msg->data_param);
+   e->y = HIWORD(msg->data_param);
+   e->time = (double)msg->time / 1000.0;
+
+   ecore_event_add(ECORE_WINCE_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   printf (" * ecore event motion notify\n");
+}
+
+void
+_ecore_wince_event_handle_enter_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   printf (" * ecore event enter notify 0\n");
+
+   {
+      Ecore_WinCE_Event_Mouse_Move *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Move *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Move));
+      if (!e) return;
+
+      e->window = window;
+      e->x = msg->x;
+      e->y = msg->y;
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   }
+
+   {
+      Ecore_WinCE_Event_Mouse_In *e;
+
+      e = (Ecore_WinCE_Event_Mouse_In *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_In));
+      if (!e) return;
+
+      e->window = window;
+      e->x = msg->x;
+      e->y = msg->y;
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_IN, e, NULL, NULL);
+   }
+   printf (" * ecore event enter notify 1\n");
+}
+
+void
+_ecore_wince_event_handle_leave_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Window *window;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+
+   {
+      Ecore_WinCE_Event_Mouse_Move *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Move *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Move));
+      if (!e) return;
+
+      e->window = window;
+      e->x = msg->x;
+      e->y = msg->y;
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+      _ecore_wince_event_last_window = e->window;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_MOVE, e, NULL, NULL);
+   }
+
+   {
+      Ecore_WinCE_Event_Mouse_Out *e;
+
+      e = (Ecore_WinCE_Event_Mouse_Out *)calloc(1, sizeof(Ecore_WinCE_Event_Mouse_Out));
+      if (!e) return;
+
+      e->window = window;
+      e->x = msg->x;
+      e->y = msg->y;
+      e->time = (double)msg->time / 1000.0;
+
+      _ecore_wince_event_last_time = e->time;
+
+      ecore_event_add(ECORE_WINCE_EVENT_MOUSE_OUT, e, NULL, NULL);
+   }
+   printf (" * ecore event leave notify\n");
+}
+
+void
+_ecore_wince_event_handle_focus_in(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Focus_In *e;
+   struct _Ecore_WinCE_Window        *window;
+
+   e = (Ecore_WinCE_Event_Window_Focus_In *)calloc(1, sizeof(Ecore_WinCE_Event_Window_Focus_In));
+   if (!e) return;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   if (window->resume)
+     window->resume(window->backend);
+
+   e->window = window;
+
+   e->time = _ecore_wince_event_last_time;
+   _ecore_wince_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_focus_out(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Focus_Out *e;
+   struct _Ecore_WinCE_Window         *window;
+
+   e = (Ecore_WinCE_Event_Window_Focus_Out *)calloc(1, sizeof(Ecore_WinCE_Event_Window_Focus_Out));
+   if (!e) return;
+
+   window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+   if (window->suspend)
+     window->suspend(window->backend);
+
+   e->window = window;
+
+   e->time = _ecore_wince_event_last_time;
+   _ecore_wince_event_last_time = e->time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_expose(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Damage *e;
+
+   e = (Ecore_WinCE_Event_Window_Damage *)calloc(1, sizeof(Ecore_WinCE_Event_Window_Damage));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->x = msg->update.left;
+   e->y = msg->update.top;
+   e->width = msg->update.right - msg->update.left;
+   e->height = msg->update.bottom - msg->update.top;
+   printf (" * ecore : event expose %d %d\n", e->width, e->height);
+
+   e->time = _ecore_wince_event_last_time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_create_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Create *e;
+
+   e = calloc(1, sizeof(Ecore_WinCE_Event_Window_Create));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->time = _ecore_wince_event_last_time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_CREATE, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_destroy_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Destroy *e;
+
+   e = calloc(1, sizeof(Ecore_WinCE_Event_Window_Destroy));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->time = _ecore_wince_event_last_time;
+/*    if (e->window == _ecore_wince_event_last_window) _ecore_wince_event_last_window = NULL; */
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_DESTROY, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_map_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Show *e;
+
+   e = calloc(1, sizeof(Ecore_WinCE_Event_Window_Show));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->time = _ecore_wince_event_last_time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_SHOW, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_unmap_notify(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Hide *e;
+
+   e = calloc(1, sizeof(Ecore_WinCE_Event_Window_Hide));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->time = _ecore_wince_event_last_time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_HIDE, e, NULL, NULL);
+}
+
+void
+_ecore_wince_event_handle_delete_request(Ecore_WinCE_Callback_Data *msg)
+{
+   Ecore_WinCE_Event_Window_Delete_Request *e;
+
+   e = calloc(1, sizeof(Ecore_WinCE_Event_Window_Delete_Request));
+   if (!e) return;
+
+   e->window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
+   if (!e->window)
+     {
+        free(e);
+        return;
+     }
+
+   e->time = _ecore_wince_event_last_time;
+
+   ecore_event_add(ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
+}
+
+
+/***** Private functions definitions *****/
+
+static void
+_ecore_wince_event_free_key_down(void *data,
+                                 void *ev)
+{
+   Ecore_WinCE_Event_Key_Down *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->keycompose) free(e->keycompose);
+   free(e);
+}
+
+static void
+_ecore_wince_event_free_key_up(void *data,
+                               void *ev)
+{
+   Ecore_WinCE_Event_Key_Up *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->keycompose) free(e->keycompose);
+   free(e);
+}
+
+static int
+_ecore_wince_event_keystroke_get(int    key,
+                                 char **keyname,
+                                 char **keysymbol,
+                                 char **keycompose)
+{
+  char *kn;
+  char *ks;
+  char *kc;
+
+  *keyname = NULL;
+  *keysymbol = NULL;
+  *keycompose = NULL;
+
+   switch (key)
+     {
+       /* Keystroke */
+     case VK_PRIOR:
+       kn = "KP_Prior";
+       ks = "KP_Prior";
+       kc = "";
+       break;
+     case VK_NEXT:
+       kn = "KP_Next";
+       ks = "KP_Next";
+       kc = "";
+       break;
+     case VK_END:
+       kn = "KP_End";
+       ks = "KP_End";
+       kc = "";
+       break;
+     case VK_HOME:
+       kn = "KP_Home";
+       ks = "KP_Home";
+       kc = "";
+       break;
+     case VK_LEFT:
+       kn = "KP_Left";
+       ks = "KP_Left";
+       kc = "";
+       break;
+     case VK_UP:
+       kn = "KP_Up";
+       ks = "KP_Up";
+       kc = "";
+       break;
+     case VK_RIGHT:
+       kn = "KP_Right";
+       ks = "KP_Right";
+       kc = "";
+       break;
+     case VK_DOWN:
+       kn = "KP_Down";
+       ks = "KP_Down";
+       kc = "";
+       break;
+     case VK_INSERT:
+       kn = "KP_Insert";
+       ks = "KP_Insert";
+       kc = "";
+       break;
+     case VK_DELETE:
+       kn = "KP_Delete";
+       ks = "KP_Delete";
+       kc = "";
+       break;
+     case VK_F1:
+       kn = "F1";
+       ks = "F1";
+       kc = "";
+       break;
+     case VK_F2:
+       kn = "F2";
+       ks = "F2";
+       kc = "";
+       break;
+     case VK_F3:
+       kn = "F3";
+       ks = "F3";
+       kc = "";
+       break;
+     case VK_F4:
+       kn = "F4";
+       ks = "F4";
+       kc = "";
+       break;
+     case VK_F5:
+       kn = "F5";
+       ks = "F5";
+       kc = "";
+       break;
+     case VK_F6:
+       kn = "F6";
+       ks = "F6";
+       kc = "";
+       break;
+     case VK_F7:
+       kn = "F7";
+       ks = "F7";
+       kc = "";
+       break;
+     case VK_F8:
+       kn = "F8";
+       ks = "F8";
+       kc = "";
+       break;
+     case VK_F9:
+       kn = "F9";
+       ks = "F9";
+       kc = "";
+       break;
+     case VK_F10:
+       kn = "F10";
+       ks = "F10";
+       kc = "";
+       break;
+     case VK_F11:
+       kn = "F11";
+       ks = "F11";
+       kc = "";
+       break;
+     case VK_F12:
+       kn = "F12";
+       ks = "F12";
+       kc = "";
+       break;
+     case VK_F13:
+       kn = "F13";
+       ks = "F13";
+       kc = "";
+       break;
+     case VK_F14:
+       kn = "F14";
+       ks = "F14";
+       kc = "";
+       break;
+     case VK_F15:
+       kn = "F15";
+       ks = "F15";
+       kc = "";
+       break;
+     case VK_F16:
+       kn = "F16";
+       ks = "F16";
+       kc = "";
+       break;
+     case VK_F17:
+       kn = "F17";
+       ks = "F17";
+       kc = "";
+       break;
+     case VK_F18:
+       kn = "F18";
+       ks = "F18";
+       kc = "";
+       break;
+     case VK_F19:
+       kn = "F19";
+       ks = "F19";
+       kc = "";
+       break;
+     case VK_F20:
+       kn = "F20";
+       ks = "F20";
+       kc = "";
+       break;
+     case VK_F21:
+       kn = "F21";
+       ks = "F21";
+       kc = "";
+       break;
+     case VK_F22:
+       kn = "F22";
+       ks = "F22";
+       kc = "";
+       break;
+     case VK_F23:
+       kn = "F23";
+       ks = "F23";
+       kc = "";
+       break;
+     case VK_F24:
+       kn = "F24";
+       ks = "F24";
+       kc = "";
+       break;
+     default:
+       /* other non keystroke characters */
+       return 0;
+     }
+   *keyname = strdup(kn);
+   if (!*keyname) return 0;
+   *keysymbol = strdup(ks);
+   if (!*keysymbol)
+     {
+        free(*keyname);
+        *keyname = NULL;
+        return 0;
+     }
+   *keycompose = strdup(kc);
+   if (!*keycompose)
+     {
+        free(*keyname);
+        free(*keysymbol);
+        *keyname = NULL;
+        *keysymbol = NULL;
+        return 0;
+     }
+
+   return 1;
+}
+
+static int
+_ecore_wince_event_char_get(int    key,
+                            char **keyname,
+                            char **keysymbol,
+                            char **keycompose)
+{
+  char kn[32];
+  char ks[32];
+  char *kc;
+
+  *keyname = NULL;
+  *keysymbol = NULL;
+  *keycompose = NULL;
+
+   switch (key)
+     {
+     case VK_APP3:
+     case VK_BACK:
+       strncpy(kn, "Backspace", 32);
+       strncpy(ks, "Backspace", 32);
+       kc = "";
+       break;
+     case VK_APP4:
+     case VK_TAB:
+       strncpy(kn, "Tab", 32);
+       strncpy(ks, "Tab", 32);
+       kc = "";
+       break;
+     case VK_APP5:
+     case 0x0a:
+       /* Line feed (Shift + Enter) */
+       strncpy(kn, "LineFeed", 32);
+       strncpy(ks, "LineFeed", 32);
+       kc = "";
+       break;
+     case VK_APP2:
+     case VK_RETURN:
+       strncpy(kn, "Return", 32);
+       strncpy(ks, "Return", 32);
+       kc = "";
+       break;
+     case VK_APP1:
+     case VK_ESCAPE:
+       strncpy(kn, "Escape", 32);
+       strncpy(ks, "Escape", 32);
+       kc = "";
+       break;
+     default:
+       /* displayable characters */
+       printf (" * key : %d\n", key);
+       kn[0] = (TCHAR)key;
+       kn[1] = '\0';
+       ks[0] = (TCHAR)key;
+       ks[1] = '\0';
+       kc = "";
+       break;
+     }
+   *keyname = strdup(kn);
+   if (!*keyname) return 0;
+   *keysymbol = strdup(ks);
+   if (!*keysymbol)
+     {
+        free(*keyname);
+        *keyname = NULL;
+        return 0;
+     }
+   *keycompose = strdup(kc);
+   if (!*keycompose)
+     {
+        free(*keyname);
+        free(*keysymbol);
+        *keyname = NULL;
+        *keysymbol = NULL;
+        return 0;
+     }
+
+   return 1;
+}
diff --git a/src/lib/ecore_wince/ecore_wince_private.h b/src/lib/ecore_wince/ecore_wince_private.h
new file mode 100644 (file)
index 0000000..68aeed2
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef __ECORE_WINCE_PRIVATE_H__
+#define __ECORE_WINCE_PRIVATE_H__
+
+
+#define ECORE_WINCE_WINDOW_CLASS L"Ecore_WinCE_Window_Class"
+
+
+typedef struct _Ecore_WinCE_Callback_Data Ecore_WinCE_Callback_Data;
+
+struct _Ecore_WinCE_Callback_Data
+{
+   RECT         update;
+   HWND         window;
+   unsigned int message;
+   WPARAM       window_param;
+   LPARAM       data_param;
+   long         time;
+   int          x;
+   int          y;
+};
+
+
+typedef int (*ecore_wince_suspend) (int);
+typedef int (*ecore_wince_resume)  (int);
+
+
+struct _Ecore_WinCE_Window
+{
+   HWND                window;
+
+   int                 backend;
+   ecore_wince_suspend suspend;
+   ecore_wince_resume  resume;
+
+   unsigned int        pointer_is_in : 1;
+};
+
+extern double              _ecore_wince_double_click_time;
+extern double              _ecore_wince_event_last_time;
+extern Ecore_WinCE_Window *_ecore_wince_event_last_window;
+
+extern HINSTANCE           _ecore_wince_instance;
+
+
+void  _ecore_wince_event_handle_key_press(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_key_release(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_button_press(Ecore_WinCE_Callback_Data *msg, int button);
+void  _ecore_wince_event_handle_button_release(Ecore_WinCE_Callback_Data *msg, int button);
+void  _ecore_wince_event_handle_motion_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_enter_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_leave_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_focus_in(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_focus_out(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_expose(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_create_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_destroy_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_map_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_unmap_notify(Ecore_WinCE_Callback_Data *msg);
+void  _ecore_wince_event_handle_delete_request(Ecore_WinCE_Callback_Data *msg);
+
+
+#endif /* __ECORE_WINCE_PRIVATE_H__ */
diff --git a/src/lib/ecore_wince/ecore_wince_window.c b/src/lib/ecore_wince/ecore_wince_window.c
new file mode 100644 (file)
index 0000000..de97069
--- /dev/null
@@ -0,0 +1,275 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <stdlib.h>
+#include <stdio.h>   /* for printf */
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <aygshell.h>
+
+#include "Ecore_WinCE.h"
+#include "ecore_wince_private.h"
+
+
+/***** Private declarations *****/
+
+typedef BOOL (__stdcall *UnregisterFunc1Proc)(UINT, UINT);
+
+static int _ecore_wince_hardware_keys_register(HWND window);
+
+
+/***** API *****/
+
+Ecore_WinCE_Window *
+ecore_wince_window_new(Ecore_WinCE_Window *parent,
+                       int                 x,
+                       int                 y,
+                       int                 width,
+                       int                 height)
+{
+   struct _Ecore_WinCE_Window *w;
+   HWND                        window;
+   RECT                        rect;
+
+   w = (struct _Ecore_WinCE_Window *)calloc(1, sizeof(struct _Ecore_WinCE_Window));
+   if (!w)
+     return NULL;
+
+   SetRect(&rect, 0, 0,
+           GetSystemMetrics(SM_CXSCREEN),
+           GetSystemMetrics(SM_CYSCREEN));
+
+   window = CreateWindowEx(WS_EX_TOPMOST,
+                           ECORE_WINCE_WINDOW_CLASS,
+                           L"",
+                           WS_VISIBLE | WS_POPUP,
+                           rect.left, rect.top,
+                           rect.right - rect.left,
+                           rect.bottom - rect.top,
+                            parent ? ((struct _Ecore_WinCE_Window *)parent)->window : NULL,
+                           NULL, _ecore_wince_instance, NULL);
+   if (!window)
+     {
+        free(w);
+        return NULL;
+     }
+
+   SHFullScreen(window,
+                SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
+
+   if (!_ecore_wince_hardware_keys_register(window))
+     {
+        DestroyWindow(window);
+        free(w);
+        return NULL;
+     }
+
+   w->window = window;
+
+   SetLastError(0);
+   if (!SetWindowLong(window, GWL_USERDATA, (LONG)w) && (GetLastError() != 0))
+     {
+        DestroyWindow(window);
+        free(w);
+        return NULL;
+     }
+
+   w->pointer_is_in = 0;
+
+   return w;
+}
+
+void
+ecore_wince_window_del(Ecore_WinCE_Window *window)
+{
+   Ecore_WinCE_Window *w;
+
+   if (!window) return;
+
+   DestroyWindow(((struct _Ecore_WinCE_Window *)window)->window);
+   free(window);
+   fprintf (stderr, "ecore_wince_window_del\n");
+}
+
+void
+ecore_wince_window_show(Ecore_WinCE_Window *window)
+{
+   if (!window) return;
+
+   fprintf (stderr, " ** ecore_wince_window_show  %p\n", window);
+   ShowWindow(((struct _Ecore_WinCE_Window *)window)->window, SW_SHOWNORMAL);
+   UpdateWindow(((struct _Ecore_WinCE_Window *)window)->window);
+   SendMessage(((struct _Ecore_WinCE_Window *)window)->window, WM_SHOWWINDOW, 1, 0);
+}
+
+void
+ecore_wince_window_hide(Ecore_WinCE_Window *window)
+{
+   if (!window) return;
+
+   fprintf (stderr, " ** ecore_wince_window_hide  %p\n", window);
+   ShowWindow(((struct _Ecore_WinCE_Window *)window)->window, SW_HIDE);
+   SendMessage(((struct _Ecore_WinCE_Window *)window)->window, WM_SHOWWINDOW, 0, 0);
+}
+
+void
+ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend)
+{
+   struct _Ecore_WinCE_Window *w;
+
+   if (!window)
+     return;
+
+   w = (struct _Ecore_WinCE_Window *)window;
+   w->backend = backend;
+}
+
+void
+ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int))
+{
+   struct _Ecore_WinCE_Window *w;
+
+   if (!window)
+     return;
+
+   w = (struct _Ecore_WinCE_Window *)window;
+   w->suspend = suspend;
+}
+
+void
+ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(int))
+{
+   struct _Ecore_WinCE_Window *w;
+
+   if (!window)
+     return;
+
+   w = (struct _Ecore_WinCE_Window *)window;
+   w->resume = resume;
+}
+
+void
+ecore_wince_window_geometry_get(Ecore_WinCE_Window *window,
+                                int                *x,
+                                int                *y,
+                                int                *width,
+                                int                *height)
+{
+   RECT rect;
+   int  w;
+   int  h;
+
+   printf ("ecore_wince_window_geometry_get %p\n", window);
+   if (!window)
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = GetSystemMetrics(SM_CXSCREEN);
+        if (height) *height = GetSystemMetrics(SM_CYSCREEN);
+
+        return;
+     }
+
+   if (!GetClientRect(((struct _Ecore_WinCE_Window *)window)->window,
+                      &rect))
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = 0;
+        if (height) *height = 0;
+
+        return;
+     }
+
+   w = rect.right - rect.left;
+   h = rect.bottom - rect.top;
+
+   if (!GetWindowRect(((struct _Ecore_WinCE_Window *)window)->window,
+                      &rect))
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = 0;
+        if (height) *height = 0;
+
+        return;
+     }
+
+   if (x) *x = rect.left;
+   if (y) *y = rect.top;
+   if (width) *width = w;
+   if (height) *height = h;
+}
+
+void
+ecore_wince_window_size_get(Ecore_WinCE_Window *window,
+                            int                *width,
+                            int                *height)
+{
+   RECT rect;
+
+   printf ("ecore_wince_window_size_get %p\n", window);
+   if (!window)
+     {
+        if (width) *width = GetSystemMetrics(SM_CXSCREEN);
+        if (height) *height = GetSystemMetrics(SM_CYSCREEN);
+
+        return;
+     }
+
+   if (!GetClientRect(((struct _Ecore_WinCE_Window *)window)->window,
+                      &rect))
+     {
+        if (width) *width = 0;
+        if (height) *height = 0;
+     }
+
+   if (width) *width = rect.right - rect.left;
+   if (height) *height = rect.bottom - rect.top;
+}
+
+void *
+ecore_wince_window_window_get(Ecore_WinCE_Window *window)
+{
+   struct _Ecore_WinCE_Window *w;
+
+   if (!window)
+     return NULL;
+
+   return ((struct _Ecore_WinCE_Window *)window)->window;
+}
+
+
+/***** Private functions definitions *****/
+
+static int
+_ecore_wince_hardware_keys_register(HWND window)
+{
+   HINSTANCE           core_dll;
+   UnregisterFunc1Proc unregister_fct;
+   int                 i;
+
+   core_dll = LoadLibrary(L"coredll.dll");
+   if (!core_dll)
+     return 0;
+
+   unregister_fct = (UnregisterFunc1Proc)GetProcAddress(core_dll, L"UnregisterFunc1");
+   if (!unregister_fct)
+     {
+        FreeLibrary(core_dll);
+        return 0;
+     }
+
+   for (i = 0xc1; i <= 0xcf; i++)
+     {
+        unregister_fct(MOD_WIN, i);
+        RegisterHotKey(window, i, MOD_WIN, i);
+     }
+
+   FreeLibrary(core_dll);
+
+   return 1;
+}
diff --git a/src/lib/ecore_x/.cvsignore b/src/lib/ecore_x/.cvsignore
new file mode 100644 (file)
index 0000000..8728e80
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_x.la
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
new file mode 100644 (file)
index 0000000..050e9bc
--- /dev/null
@@ -0,0 +1,1730 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _ECORE_X_H
+#define _ECORE_X_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+#ifdef _MSC_VER
+# ifdef BUILDING_DLL
+#  define EAPI __declspec(dllexport)
+# else
+#  define EAPI __declspec(dllimport)
+# endif
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif
+
+#include <sys/types.h>
+
+/**
+ * @file
+ * @brief Ecore functions for dealing with the X Windows System
+ *
+ * Ecore_X provides a wrapper and convenience functions for using the
+ * X Windows System.  Function groups for this part of the library
+ * include the following:
+ * @li @ref Ecore_X_Init_Group
+ * @li @ref Ecore_X_Display_Attr_Group
+ * @li @ref Ecore_X_Flush_Group
+ */
+
+
+typedef unsigned int Ecore_X_ID;
+#  ifndef _ECORE_X_WINDOW_PREDEF
+typedef Ecore_X_ID   Ecore_X_Window;
+#  endif
+#ifdef HAVE_ECORE_X_XCB
+typedef Ecore_X_ID   Ecore_X_Visual;
+#else
+typedef void       * Ecore_X_Visual;
+#endif /* HAVE_ECORE_X_XCB */
+typedef Ecore_X_ID   Ecore_X_Pixmap;
+typedef Ecore_X_ID   Ecore_X_Drawable;
+#ifdef HAVE_ECORE_X_XCB
+typedef Ecore_X_ID   Ecore_X_GC;
+#else
+typedef void       * Ecore_X_GC;
+#endif /* HAVE_ECORE_X_XCB */
+typedef Ecore_X_ID   Ecore_X_Atom;
+typedef Ecore_X_ID   Ecore_X_Colormap;
+typedef Ecore_X_ID   Ecore_X_Time;
+typedef Ecore_X_ID   Ecore_X_Cursor;
+typedef void         Ecore_X_Display;
+typedef void         Ecore_X_Connection;
+typedef void         Ecore_X_Screen;
+typedef Ecore_X_ID   Ecore_X_Sync_Counter;
+typedef Ecore_X_ID   Ecore_X_Sync_Alarm;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _Ecore_X_Rectangle {
+   int x, y;
+   unsigned int width, height;
+} Ecore_X_Rectangle;
+
+typedef struct _Ecore_X_Icon {
+   unsigned int  width, height;
+   unsigned int *data;
+} Ecore_X_Icon;
+
+typedef enum _Ecore_X_Window_State {
+    /** The window is iconified. */
+    ECORE_X_WINDOW_STATE_ICONIFIED,
+    /** The window is a modal dialog box. */
+    ECORE_X_WINDOW_STATE_MODAL,
+    /** The window manager should keep the window's position fixed
+     * even if the virtual desktop scrolls. */
+    ECORE_X_WINDOW_STATE_STICKY,
+    /** The window has the maximum vertical size. */
+    ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
+    /** The window has the maximum horizontal size. */
+    ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
+    /** The window is shaded. */
+    ECORE_X_WINDOW_STATE_SHADED,
+    /** The window should not be included in the taskbar. */
+    ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
+    /** The window should not be included in the pager. */
+    ECORE_X_WINDOW_STATE_SKIP_PAGER,
+    /** The window is invisible (i.e. minimized/iconified) */
+    ECORE_X_WINDOW_STATE_HIDDEN,
+    /** The window should fill the entire screen and have no
+     * window border/decorations */
+    ECORE_X_WINDOW_STATE_FULLSCREEN,
+    /* The following are not documented because they are not
+     * intended for use in applications. */
+    ECORE_X_WINDOW_STATE_ABOVE,
+    ECORE_X_WINDOW_STATE_BELOW,
+    /* FIXME: Documentation */
+    ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION,
+    /* Unknown state */
+    ECORE_X_WINDOW_STATE_UNKNOWN
+} Ecore_X_Window_State;
+
+typedef enum _Ecore_X_Window_State_Action {
+     ECORE_X_WINDOW_STATE_ACTION_REMOVE,
+     ECORE_X_WINDOW_STATE_ACTION_ADD,
+     ECORE_X_WINDOW_STATE_ACTION_TOGGLE
+} Ecore_X_Window_State_Action;
+
+typedef enum _Ecore_X_Window_Stack_Mode {
+   ECORE_X_WINDOW_STACK_ABOVE = 0,
+   ECORE_X_WINDOW_STACK_BELOW = 1,
+   ECORE_X_WINDOW_STACK_TOP_IF = 2,
+   ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
+   ECORE_X_WINDOW_STACK_OPPOSITE = 4
+} Ecore_X_Window_Stack_Mode;
+
+typedef enum _Ecore_X_Randr_Rotation {
+   ECORE_X_RANDR_ROT_0 = (1 << 0),
+   ECORE_X_RANDR_ROT_90 = (1 << 1),
+   ECORE_X_RANDR_ROT_180 = (1 << 2),
+   ECORE_X_RANDR_ROT_270 = (1 << 3),
+   ECORE_X_RANDR_FLIP_X = (1 << 4),
+   ECORE_X_RANDR_FLIP_Y = (1 << 5)
+} Ecore_X_Randr_Rotation;
+
+#define ECORE_X_SELECTION_TARGET_TARGETS "TARGETS"
+#define ECORE_X_SELECTION_TARGET_TEXT "TEXT"
+#define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
+#define ECORE_X_SELECTION_TARGET_STRING "STRING"
+#define ECORE_X_SELECTION_TARGET_UTF8_STRING "UTF8_STRING"
+#define ECORE_X_SELECTION_TARGET_FILENAME "FILENAME"
+
+#define ECORE_X_DND_VERSION 5
+
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_COPY;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_MOVE;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_LINK;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_ASK;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE;
+
+typedef enum _Ecore_X_Selection {
+   ECORE_X_SELECTION_PRIMARY,
+   ECORE_X_SELECTION_SECONDARY,
+   ECORE_X_SELECTION_XDND,
+   ECORE_X_SELECTION_CLIPBOARD
+} Ecore_X_Selection;
+
+typedef enum _Ecore_X_Event_Mode
+{
+   ECORE_X_EVENT_MODE_NORMAL,
+   ECORE_X_EVENT_MODE_WHILE_GRABBED,
+   ECORE_X_EVENT_MODE_GRAB,
+   ECORE_X_EVENT_MODE_UNGRAB
+} Ecore_X_Event_Mode;
+
+typedef enum _Ecore_X_Event_Detail
+{
+   ECORE_X_EVENT_DETAIL_ANCESTOR,
+   ECORE_X_EVENT_DETAIL_VIRTUAL,
+   ECORE_X_EVENT_DETAIL_INFERIOR,
+   ECORE_X_EVENT_DETAIL_NON_LINEAR,
+   ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL,
+   ECORE_X_EVENT_DETAIL_POINTER,
+   ECORE_X_EVENT_DETAIL_POINTER_ROOT,
+   ECORE_X_EVENT_DETAIL_DETAIL_NONE
+} Ecore_X_Event_Detail;
+
+typedef enum _Ecore_X_Event_Mask
+{
+   ECORE_X_EVENT_MASK_NONE                   = 0L,
+   ECORE_X_EVENT_MASK_KEY_DOWN               = (1L << 0),
+   ECORE_X_EVENT_MASK_KEY_UP                 = (1L << 1),
+   ECORE_X_EVENT_MASK_MOUSE_DOWN             = (1L << 2),
+   ECORE_X_EVENT_MASK_MOUSE_UP               = (1L << 3),
+   ECORE_X_EVENT_MASK_MOUSE_IN               = (1L << 4),
+   ECORE_X_EVENT_MASK_MOUSE_OUT              = (1L << 5),
+   ECORE_X_EVENT_MASK_MOUSE_MOVE             = (1L << 6),
+   ECORE_X_EVENT_MASK_WINDOW_DAMAGE          = (1L << 15),
+   ECORE_X_EVENT_MASK_WINDOW_VISIBILITY      = (1L << 16),
+   ECORE_X_EVENT_MASK_WINDOW_CONFIGURE       = (1L << 17),
+   ECORE_X_EVENT_MASK_WINDOW_RESIZE_MANAGE   = (1L << 18),
+   ECORE_X_EVENT_MASK_WINDOW_MANAGE          = (1L << 19),
+   ECORE_X_EVENT_MASK_WINDOW_CHILD_CONFIGURE = (1L << 20),
+   ECORE_X_EVENT_MASK_WINDOW_FOCUS_CHANGE    = (1L << 21),
+   ECORE_X_EVENT_MASK_WINDOW_PROPERTY        = (1L << 22),
+   ECORE_X_EVENT_MASK_WINDOW_COLORMAP        = (1L << 23),
+   ECORE_X_EVENT_MASK_WINDOW_GRAB            = (1L << 24),
+   ECORE_X_EVENT_MASK_MOUSE_WHEEL            = (1L << 29),
+   ECORE_X_EVENT_MASK_WINDOW_FOCUS_IN        = (1L << 30),
+   ECORE_X_EVENT_MASK_WINDOW_FOCUS_OUT       = (1L << 31)
+} Ecore_X_Event_Mask;
+
+typedef enum _Ecore_X_Gravity {
+     ECORE_X_GRAVITY_FORGET = 0,
+     ECORE_X_GRAVITY_UNMAP = 0,
+     ECORE_X_GRAVITY_NW = 1,
+     ECORE_X_GRAVITY_N = 2,
+     ECORE_X_GRAVITY_NE = 3,
+     ECORE_X_GRAVITY_W = 4,
+     ECORE_X_GRAVITY_CENTER = 5,
+     ECORE_X_GRAVITY_E = 6,
+     ECORE_X_GRAVITY_SW = 7,
+     ECORE_X_GRAVITY_S = 8,
+     ECORE_X_GRAVITY_SE = 9,
+     ECORE_X_GRAVITY_STATIC = 10
+} Ecore_X_Gravity;
+
+/* Needed for ecore_x_region_window_shape_set */
+typedef enum _Ecore_X_Shape_Type
+{
+   ECORE_X_SHAPE_BOUNDING,
+   ECORE_X_SHAPE_CLIP
+} Ecore_X_Shape_Type;
+
+typedef struct _Ecore_X_Event_Key_Down                 Ecore_X_Event_Key_Down;
+typedef struct _Ecore_X_Event_Key_Up                   Ecore_X_Event_Key_Up;
+typedef struct _Ecore_X_Event_Mouse_Button_Down        Ecore_X_Event_Mouse_Button_Down;
+typedef struct _Ecore_X_Event_Mouse_Button_Up          Ecore_X_Event_Mouse_Button_Up;
+typedef struct _Ecore_X_Event_Mouse_Move               Ecore_X_Event_Mouse_Move;
+typedef struct _Ecore_X_Event_Mouse_In                 Ecore_X_Event_Mouse_In;
+typedef struct _Ecore_X_Event_Mouse_Out                Ecore_X_Event_Mouse_Out;
+typedef struct _Ecore_X_Event_Mouse_Wheel              Ecore_X_Event_Mouse_Wheel;
+typedef struct _Ecore_X_Event_Window_Focus_In          Ecore_X_Event_Window_Focus_In;
+typedef struct _Ecore_X_Event_Window_Focus_Out         Ecore_X_Event_Window_Focus_Out;
+typedef struct _Ecore_X_Event_Window_Keymap            Ecore_X_Event_Window_Keymap;
+typedef struct _Ecore_X_Event_Window_Damage            Ecore_X_Event_Window_Damage;
+typedef struct _Ecore_X_Event_Window_Visibility_Change Ecore_X_Event_Window_Visibility_Change;
+typedef struct _Ecore_X_Event_Window_Create            Ecore_X_Event_Window_Create;
+typedef struct _Ecore_X_Event_Window_Destroy           Ecore_X_Event_Window_Destroy;
+typedef struct _Ecore_X_Event_Window_Hide              Ecore_X_Event_Window_Hide;
+typedef struct _Ecore_X_Event_Window_Show              Ecore_X_Event_Window_Show;
+typedef struct _Ecore_X_Event_Window_Show_Request      Ecore_X_Event_Window_Show_Request;
+typedef struct _Ecore_X_Event_Window_Reparent          Ecore_X_Event_Window_Reparent;
+typedef struct _Ecore_X_Event_Window_Configure         Ecore_X_Event_Window_Configure;
+typedef struct _Ecore_X_Event_Window_Configure_Request Ecore_X_Event_Window_Configure_Request;
+typedef struct _Ecore_X_Event_Window_Gravity           Ecore_X_Event_Window_Gravity;
+typedef struct _Ecore_X_Event_Window_Resize_Request    Ecore_X_Event_Window_Resize_Request;
+typedef struct _Ecore_X_Event_Window_Stack             Ecore_X_Event_Window_Stack;
+typedef struct _Ecore_X_Event_Window_Stack_Request     Ecore_X_Event_Window_Stack_Request;
+typedef struct _Ecore_X_Event_Window_Property          Ecore_X_Event_Window_Property;
+typedef struct _Ecore_X_Event_Window_Colormap          Ecore_X_Event_Window_Colormap;
+typedef struct _Ecore_X_Event_Window_Mapping           Ecore_X_Event_Window_Mapping;
+typedef struct _Ecore_X_Event_Selection_Clear          Ecore_X_Event_Selection_Clear;
+typedef struct _Ecore_X_Event_Selection_Request        Ecore_X_Event_Selection_Request;
+typedef struct _Ecore_X_Event_Selection_Notify         Ecore_X_Event_Selection_Notify;
+typedef struct _Ecore_X_Selection_Data                 Ecore_X_Selection_Data;
+typedef struct _Ecore_X_Selection_Data_Files           Ecore_X_Selection_Data_Files;
+typedef struct _Ecore_X_Selection_Data_Text            Ecore_X_Selection_Data_Text;
+typedef struct _Ecore_X_Selection_Data_Targets         Ecore_X_Selection_Data_Targets;
+typedef struct _Ecore_X_Event_Xdnd_Enter               Ecore_X_Event_Xdnd_Enter;
+typedef struct _Ecore_X_Event_Xdnd_Position            Ecore_X_Event_Xdnd_Position;
+typedef struct _Ecore_X_Event_Xdnd_Status              Ecore_X_Event_Xdnd_Status;
+typedef struct _Ecore_X_Event_Xdnd_Leave               Ecore_X_Event_Xdnd_Leave;
+typedef struct _Ecore_X_Event_Xdnd_Drop                Ecore_X_Event_Xdnd_Drop;
+typedef struct _Ecore_X_Event_Xdnd_Finished            Ecore_X_Event_Xdnd_Finished;
+typedef struct _Ecore_X_Event_Client_Message           Ecore_X_Event_Client_Message;
+typedef struct _Ecore_X_Event_Window_Shape             Ecore_X_Event_Window_Shape;
+typedef struct _Ecore_X_Event_Screensaver_Notify       Ecore_X_Event_Screensaver_Notify;
+typedef struct _Ecore_X_Event_Sync_Counter             Ecore_X_Event_Sync_Counter;
+typedef struct _Ecore_X_Event_Sync_Alarm               Ecore_X_Event_Sync_Alarm;
+typedef struct _Ecore_X_Event_Screen_Change            Ecore_X_Event_Screen_Change;
+
+typedef struct _Ecore_X_Event_Window_Delete_Request                Ecore_X_Event_Window_Delete_Request;
+typedef struct _Ecore_X_Event_Window_Prop_Title_Change             Ecore_X_Event_Window_Prop_Title_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change     Ecore_X_Event_Window_Prop_Visible_Title_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change         Ecore_X_Event_Window_Prop_Icon_Name_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Client_Machine_Change    Ecore_X_Event_Window_Prop_Client_Machine_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change        Ecore_X_Event_Window_Prop_Name_Class_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Pid_Change               Ecore_X_Event_Window_Prop_Pid_Change;
+typedef struct _Ecore_X_Event_Window_Prop_Desktop_Change           Ecore_X_Event_Window_Prop_Desktop_Change;
+
+typedef struct _Ecore_X_Event_Window_Move_Resize_Request Ecore_X_Event_Window_Move_Resize_Request;
+typedef struct _Ecore_X_Event_Window_State_Request       Ecore_X_Event_Window_State_Request;
+typedef struct _Ecore_X_Event_Frame_Extents_Request      Ecore_X_Event_Frame_Extents_Request;
+typedef struct _Ecore_X_Event_Ping                       Ecore_X_Event_Ping;
+typedef struct _Ecore_X_Event_Desktop_Change             Ecore_X_Event_Desktop_Change;
+
+typedef struct _Ecore_X_Event_Startup_Sequence           Ecore_X_Event_Startup_Sequence;
+
+struct _Ecore_X_Event_Key_Down
+{
+   char   *keyname;
+   char   *keysymbol;
+   char   *key_compose;
+   int     modifiers;
+   int    same_screen;
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Key_Up
+{
+   char   *keyname;
+   char   *keysymbol;
+   char   *key_compose;
+   int     modifiers;
+   int    same_screen;
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Mouse_Button_Down
+{
+   int     button;
+   int     modifiers;
+   int     x, y;
+   int    same_screen;
+   struct {
+      int  x, y;
+   } root;
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
+   Ecore_X_Time    time;
+   unsigned int    double_click : 1;
+   unsigned int    triple_click : 1;
+};
+
+struct _Ecore_X_Event_Mouse_Button_Up
+{
+   int     button;
+   int     modifiers;
+   int     x, y;
+   int    same_screen;
+   struct {
+      int  x, y;
+   } root;
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
+   Ecore_X_Time    time;
+   unsigned int    double_click : 1;
+   unsigned int    triple_click : 1;
+};
+
+struct _Ecore_X_Event_Mouse_Move
+{
+   int     modifiers;
+   int     x, y;
+   int    same_screen;
+   struct {
+      int  x, y;
+   } root;
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window  root_win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Mouse_In
+{
+   int                  modifiers;
+   int                  x, y;
+   int                 same_screen;
+   struct {
+      int  x, y;
+   } root;
+   Ecore_X_Window               win;
+   Ecore_X_Window               event_win;
+   Ecore_X_Window              root_win;
+   Ecore_X_Event_Mode          mode;
+   Ecore_X_Event_Detail                detail;
+   Ecore_X_Time                 time;
+};
+
+struct _Ecore_X_Event_Mouse_Out
+{
+   int                  modifiers;
+   int                  x, y;
+   int                 same_screen;
+   struct {
+      int  x, y;
+   } root;
+   Ecore_X_Window               win;
+   Ecore_X_Window               event_win;
+   Ecore_X_Window              root_win;
+   Ecore_X_Event_Mode          mode;
+   Ecore_X_Event_Detail                detail;
+   Ecore_X_Time                 time;
+};
+
+struct _Ecore_X_Event_Mouse_Wheel
+{
+   int direction; /* 0 = default up/down wheel FIXME: more wheel types */
+   int z; /* ...,-2,-1 = down, 1,2,... = up */
+   int modifiers;
+   int x, y;
+   int same_screen;
+
+   struct {
+      int x, y;
+   } root;
+
+   Ecore_X_Window win;
+   Ecore_X_Window event_win;
+   Ecore_X_Window root_win;
+   Ecore_X_Time   time;
+};
+
+struct _Ecore_X_Event_Window_Focus_In
+{
+   Ecore_X_Window       win;
+   Ecore_X_Event_Mode   mode;
+   Ecore_X_Event_Detail detail;
+   Ecore_X_Time         time;
+};
+
+struct _Ecore_X_Event_Window_Focus_Out
+{
+   Ecore_X_Window       win;
+   Ecore_X_Event_Mode   mode;
+   Ecore_X_Event_Detail detail;
+   Ecore_X_Time         time;
+};
+
+struct _Ecore_X_Event_Window_Keymap
+{
+   Ecore_X_Window  win;
+};
+
+struct _Ecore_X_Event_Window_Damage
+{
+   Ecore_X_Window  win;
+   int             x, y, w, h;
+   int             count;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Visibility_Change
+{
+   Ecore_X_Window  win;
+   int             fully_obscured;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Create
+{
+   Ecore_X_Window  win;
+   int             override;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Destroy
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Hide
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Show
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Show_Request
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  parent;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Reparent
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  parent;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Configure
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  abovewin;
+   int             x, y, w, h;
+   int             border;
+   unsigned int    override : 1;
+   unsigned int    from_wm : 1;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Configure_Request
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  abovewin;
+   int             x, y, w, h;
+   int             border;
+   Ecore_X_Window_Stack_Mode detail;
+   unsigned long   value_mask;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Gravity
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Resize_Request
+{
+   Ecore_X_Window  win;
+   int             w, h;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Stack
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Window_Stack_Mode detail;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Stack_Request
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  parent;
+   Ecore_X_Window_Stack_Mode detail;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Property
+{
+   Ecore_X_Window  win;
+   Ecore_X_Atom    atom;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Colormap
+{
+   Ecore_X_Window   win;
+   Ecore_X_Colormap cmap;
+   int              installed;
+   Ecore_X_Time     time;
+};
+
+struct _Ecore_X_Event_Selection_Clear
+{
+   Ecore_X_Window    win;
+   Ecore_X_Selection selection;
+   Ecore_X_Time      time;
+};
+
+struct _Ecore_X_Event_Selection_Request
+{
+   Ecore_X_Window    owner;
+   Ecore_X_Window    requestor;
+   Ecore_X_Time      time;
+   Ecore_X_Atom      selection;
+   Ecore_X_Atom      target;
+   Ecore_X_Atom      property;
+};
+
+struct _Ecore_X_Event_Selection_Notify
+{
+   Ecore_X_Window             win;
+   Ecore_X_Time               time;
+   Ecore_X_Selection          selection;
+   char                      *target;
+   void                      *data;
+};
+
+struct _Ecore_X_Selection_Data
+{
+   enum {
+       ECORE_X_SELECTION_CONTENT_NONE,
+       ECORE_X_SELECTION_CONTENT_TEXT,
+       ECORE_X_SELECTION_CONTENT_FILES,
+       ECORE_X_SELECTION_CONTENT_TARGETS,
+       ECORE_X_SELECTION_CONTENT_CUSTOM
+   } content;
+   unsigned char    *data;
+   int               length;
+   int               format;
+
+   int             (*free)(void *data);
+};
+
+struct _Ecore_X_Selection_Data_Files
+{
+   Ecore_X_Selection_Data data;
+   char     **files;
+   int        num_files;
+};
+
+struct _Ecore_X_Selection_Data_Text
+{
+   Ecore_X_Selection_Data data;
+   char     *text;
+};
+
+struct _Ecore_X_Selection_Data_Targets
+{
+   Ecore_X_Selection_Data data;
+   char     **targets;
+   int        num_targets;
+};
+
+struct _Ecore_X_Event_Xdnd_Enter
+{
+   Ecore_X_Window       win, source;
+
+   char               **types;
+   int                  num_types;
+};
+
+struct _Ecore_X_Event_Xdnd_Position
+{
+   Ecore_X_Window       win, source;
+   struct {
+      int x, y;
+   } position;
+   Ecore_X_Atom         action;
+};
+
+struct _Ecore_X_Event_Xdnd_Status
+{
+   Ecore_X_Window       win, target;
+   int                  will_accept;
+   Ecore_X_Rectangle    rectangle;
+   Ecore_X_Atom         action;
+};
+
+struct _Ecore_X_Event_Xdnd_Leave
+{
+   Ecore_X_Window       win, source;
+};
+
+struct _Ecore_X_Event_Xdnd_Drop
+{
+   Ecore_X_Window       win, source;
+   Ecore_X_Atom         action;
+   struct {
+      int x, y;
+   } position;
+};
+
+struct _Ecore_X_Event_Xdnd_Finished
+{
+   Ecore_X_Window       win, target;
+   int                  completed;
+   Ecore_X_Atom         action;
+};
+
+struct _Ecore_X_Event_Client_Message
+{
+   Ecore_X_Window       win;
+   Ecore_X_Atom         message_type;
+   int                  format;
+   union {
+      char              b[20];
+      short             s[10];
+      long              l[5];
+   }                    data;
+   Ecore_X_Time         time;
+};
+
+struct _Ecore_X_Event_Window_Shape
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Screensaver_Notify
+{
+   Ecore_X_Window  win;
+   int             on;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Sync_Counter
+{
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Sync_Alarm
+{
+   Ecore_X_Time       time;
+   Ecore_X_Sync_Alarm alarm;
+};
+
+struct _Ecore_X_Event_Screen_Change
+{
+   Ecore_X_Window win, root;
+   int            width, height;
+};
+
+struct _Ecore_X_Event_Window_Delete_Request
+{
+   Ecore_X_Window  win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Title_Change
+{
+   Ecore_X_Window  win;
+   char   *title;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Visible_Title_Change
+{
+   Ecore_X_Window  win;
+   char   *title;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Icon_Name_Change
+{
+   Ecore_X_Window  win;
+   char   *name;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change
+{
+   Ecore_X_Window  win;
+   char   *name;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Client_Machine_Change
+{
+   Ecore_X_Window  win;
+   char   *name;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Name_Class_Change
+{
+   Ecore_X_Window  win;
+   char   *name;
+   char   *clas;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Pid_Change
+{
+   Ecore_X_Window  win;
+   pid_t   pid;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Window_Prop_Desktop_Change
+{
+   Ecore_X_Window  win;
+   long    desktop;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Startup_Sequence
+{
+   Ecore_X_Window  win;
+};
+
+struct _Ecore_X_Event_Window_Move_Resize_Request
+{
+   Ecore_X_Window win;
+   int            x, y;
+   int            direction;
+   int            button;
+   int            source;
+};
+
+struct _Ecore_X_Event_Window_State_Request
+{
+   Ecore_X_Window              win;
+   Ecore_X_Window_State_Action action;
+   Ecore_X_Window_State        state[2];
+   int                         source;
+};
+
+struct _Ecore_X_Event_Frame_Extents_Request
+{
+   Ecore_X_Window              win;
+};
+
+struct _Ecore_X_Event_Ping
+{
+   Ecore_X_Window  win;
+   Ecore_X_Window  event_win;
+   Ecore_X_Time    time;
+};
+
+struct _Ecore_X_Event_Desktop_Change
+{
+   Ecore_X_Window              win;
+   unsigned int                desk;
+   int                         source;
+};
+
+EAPI extern int ECORE_X_EVENT_KEY_DOWN;
+EAPI extern int ECORE_X_EVENT_KEY_UP;
+EAPI extern int ECORE_X_EVENT_MOUSE_BUTTON_DOWN;
+EAPI extern int ECORE_X_EVENT_MOUSE_BUTTON_UP;
+EAPI extern int ECORE_X_EVENT_MOUSE_MOVE;
+EAPI extern int ECORE_X_EVENT_MOUSE_IN;
+EAPI extern int ECORE_X_EVENT_MOUSE_OUT;
+EAPI extern int ECORE_X_EVENT_MOUSE_WHEEL;
+EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_IN;
+EAPI extern int ECORE_X_EVENT_WINDOW_FOCUS_OUT;
+EAPI extern int ECORE_X_EVENT_WINDOW_KEYMAP;
+EAPI extern int ECORE_X_EVENT_WINDOW_DAMAGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_CREATE;
+EAPI extern int ECORE_X_EVENT_WINDOW_DESTROY;
+EAPI extern int ECORE_X_EVENT_WINDOW_HIDE;
+EAPI extern int ECORE_X_EVENT_WINDOW_SHOW;
+EAPI extern int ECORE_X_EVENT_WINDOW_SHOW_REQUEST;
+EAPI extern int ECORE_X_EVENT_WINDOW_REPARENT;
+EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE;
+EAPI extern int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST;
+EAPI extern int ECORE_X_EVENT_WINDOW_GRAVITY;
+EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
+EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
+EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
+EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
+EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
+EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
+EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
+EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
+EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
+EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
+EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
+EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
+EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
+EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
+
+EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
+/*
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE;
+EAPI extern int ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE;
+*/
+
+EAPI extern int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST;
+EAPI extern int ECORE_X_EVENT_WINDOW_STATE_REQUEST;
+EAPI extern int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST;
+EAPI extern int ECORE_X_EVENT_PING;
+EAPI extern int ECORE_X_EVENT_DESKTOP_CHANGE;
+
+EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
+EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
+EAPI extern int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
+
+EAPI extern int ECORE_X_EVENT_XDND_ENTER;
+EAPI extern int ECORE_X_EVENT_XDND_POSITION;
+EAPI extern int ECORE_X_EVENT_XDND_STATUS;
+EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
+EAPI extern int ECORE_X_EVENT_XDND_DROP;
+EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
+
+EAPI extern int ECORE_X_MODIFIER_SHIFT;
+EAPI extern int ECORE_X_MODIFIER_CTRL;
+EAPI extern int ECORE_X_MODIFIER_ALT;
+EAPI extern int ECORE_X_MODIFIER_WIN;
+
+EAPI extern int ECORE_X_LOCK_SCROLL;
+EAPI extern int ECORE_X_LOCK_NUM;
+EAPI extern int ECORE_X_LOCK_CAPS;
+
+typedef enum _Ecore_X_WM_Protocol {
+       /**
+        * If enabled the window manager will be asked to send a
+        * delete message instead of just closing (destroying) the window.
+        */
+       ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
+
+       /**
+        * If enabled the window manager will be told that the window
+        * explicitly sets input focus.
+        */
+       ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
+
+       /**
+        * If enabled the window manager can ping the window to check
+        * if it is alive.
+        */
+       ECORE_X_NET_WM_PROTOCOL_PING,
+
+       /**
+        * If enabled the window manager can sync updating with the
+        * window (?)
+        */
+       ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
+
+       /* Number of defined items */
+       ECORE_X_WM_PROTOCOL_NUM
+} Ecore_X_WM_Protocol;
+
+typedef enum _Ecore_X_Window_Input_Mode {
+       /** The window can never be focused */
+       ECORE_X_WINDOW_INPUT_MODE_NONE,
+
+       /** The window can be focused by the WM but doesn't focus itself */
+       ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
+
+       /** The window sets the focus itself if one of its sub-windows
+        * already is focused
+        */
+       ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
+
+       /** The window sets the focus itself even if another window
+        * is currently focused
+        */
+       ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
+} Ecore_X_Window_Input_Mode;
+
+typedef enum _Ecore_X_Window_State_Hint {
+   /** Do not provide any state hint to the window manager */
+   ECORE_X_WINDOW_STATE_HINT_NONE = -1,
+
+   /** The window wants to remain hidden and NOT iconified */
+   ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
+
+   /** The window wants to be mapped normally */
+   ECORE_X_WINDOW_STATE_HINT_NORMAL,
+
+   /** The window wants to start in an iconified state */
+   ECORE_X_WINDOW_STATE_HINT_ICONIC,
+} Ecore_X_Window_State_Hint;
+
+typedef enum _Ecore_X_Window_Type {
+    ECORE_X_WINDOW_TYPE_DESKTOP,
+    ECORE_X_WINDOW_TYPE_DOCK,
+    ECORE_X_WINDOW_TYPE_TOOLBAR,
+    ECORE_X_WINDOW_TYPE_MENU,
+    ECORE_X_WINDOW_TYPE_UTILITY,
+    ECORE_X_WINDOW_TYPE_SPLASH,
+    ECORE_X_WINDOW_TYPE_DIALOG,
+    ECORE_X_WINDOW_TYPE_NORMAL,
+    ECORE_X_WINDOW_TYPE_UNKNOWN
+} Ecore_X_Window_Type;
+
+typedef enum _Ecore_X_Action {
+    ECORE_X_ACTION_MOVE,
+    ECORE_X_ACTION_RESIZE,
+    ECORE_X_ACTION_MINIMIZE,
+    ECORE_X_ACTION_SHADE,
+    ECORE_X_ACTION_STICK,
+    ECORE_X_ACTION_MAXIMIZE_HORZ,
+    ECORE_X_ACTION_MAXIMIZE_VERT,
+    ECORE_X_ACTION_FULLSCREEN,
+    ECORE_X_ACTION_CHANGE_DESKTOP,
+    ECORE_X_ACTION_CLOSE
+} Ecore_X_Action;
+
+typedef enum _Ecore_X_Window_Configure_Mask {
+   ECORE_X_WINDOW_CONFIGURE_MASK_X              = (1 << 0),
+   ECORE_X_WINDOW_CONFIGURE_MASK_Y              = (1 << 1),
+   ECORE_X_WINDOW_CONFIGURE_MASK_W              = (1 << 2),
+   ECORE_X_WINDOW_CONFIGURE_MASK_H              = (1 << 3),
+   ECORE_X_WINDOW_CONFIGURE_MASK_BORDER_WIDTH   = (1 << 4),
+   ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING        = (1 << 5),
+   ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE     = (1 << 6)
+} Ecore_X_Window_Configure_Mask;
+
+typedef enum _Ecore_X_Virtual_Keyboard_State {
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN = 0,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_ON,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL,
+    ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD
+} Ecore_X_Virtual_Keyboard_State;
+
+
+/* Window layer constants */
+#define ECORE_X_WINDOW_LAYER_BELOW 2
+#define ECORE_X_WINDOW_LAYER_NORMAL 4
+#define ECORE_X_WINDOW_LAYER_ABOVE 6
+
+/* Property list operations */
+#define ECORE_X_PROP_LIST_REMOVE    0
+#define ECORE_X_PROP_LIST_ADD       1
+#define ECORE_X_PROP_LIST_TOGGLE    2
+
+EAPI int              ecore_x_init(const char *name);
+EAPI int              ecore_x_shutdown(void);
+EAPI int              ecore_x_disconnect(void);
+EAPI Ecore_X_Display *ecore_x_display_get(void);
+EAPI Ecore_X_Connection *ecore_x_connection_get(void);
+EAPI int              ecore_x_fd_get(void);
+EAPI Ecore_X_Screen  *ecore_x_default_screen_get(void);
+EAPI void             ecore_x_double_click_time_set(double t);
+EAPI double           ecore_x_double_click_time_get(void);
+EAPI void             ecore_x_flush(void);
+EAPI void             ecore_x_sync(void);
+EAPI void             ecore_x_killall(Ecore_X_Window root);
+EAPI void             ecore_x_kill(Ecore_X_Window win);
+
+EAPI Ecore_X_Time     ecore_x_current_time_get(void);
+
+EAPI void             ecore_x_error_handler_set(void (*func) (void *data), const void *data);
+EAPI void             ecore_x_io_error_handler_set(void (*func) (void *data), const void *data);
+EAPI int              ecore_x_error_request_get(void);
+EAPI int              ecore_x_error_code_get(void);
+
+EAPI void             ecore_x_event_mask_set(Ecore_X_Window w, Ecore_X_Event_Mask mask);
+EAPI void             ecore_x_event_mask_unset(Ecore_X_Window w, Ecore_X_Event_Mask mask);
+
+EAPI int              ecore_x_selection_notify_send(Ecore_X_Window requestor, Ecore_X_Atom selection, Ecore_X_Atom target, Ecore_X_Atom property, Ecore_X_Time time);
+EAPI void             ecore_x_selection_primary_prefetch(void);
+EAPI void             ecore_x_selection_primary_fetch(void);
+EAPI int              ecore_x_selection_primary_set(Ecore_X_Window w, const void *data, int size);
+EAPI int              ecore_x_selection_primary_clear(void);
+EAPI void             ecore_x_selection_secondary_prefetch(void);
+EAPI void             ecore_x_selection_secondary_fetch(void);
+EAPI int              ecore_x_selection_secondary_set(Ecore_X_Window w, const void *data, int size);
+EAPI int              ecore_x_selection_secondary_clear(void);
+EAPI void             ecore_x_selection_xdnd_prefetch(void);
+EAPI void             ecore_x_selection_xdnd_fetch(void);
+EAPI int              ecore_x_selection_xdnd_set(Ecore_X_Window w, const void *data, int size);
+EAPI int              ecore_x_selection_xdnd_clear(void);
+EAPI void             ecore_x_selection_clipboard_prefetch(void);
+EAPI void             ecore_x_selection_clipboard_fetch(void);
+EAPI int              ecore_x_selection_clipboard_set(Ecore_X_Window w, const void *data, int size);
+EAPI int              ecore_x_selection_clipboard_clear(void);
+EAPI void             ecore_x_selection_primary_request(Ecore_X_Window w, const char *target);
+EAPI void             ecore_x_selection_secondary_request(Ecore_X_Window w, const char *target);
+EAPI void             ecore_x_selection_xdnd_request(Ecore_X_Window w, const char *target);
+EAPI void             ecore_x_selection_clipboard_request(Ecore_X_Window w, const char *target);
+EAPI int              ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret);
+EAPI void             ecore_x_selection_converter_add(char *target, int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret));
+EAPI void             ecore_x_selection_converter_atom_add(Ecore_X_Atom target, int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret));
+EAPI void             ecore_x_selection_converter_del(char *target);
+EAPI void             ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
+EAPI void             ecore_x_selection_parser_add(const char *target, void *(*func)(const char *target, void *data, int size, int format));
+EAPI void             ecore_x_selection_parser_del(const char *target);
+
+EAPI void             ecore_x_dnd_aware_set(Ecore_X_Window win, int on);
+EAPI void             ecore_x_dnd_version_get_prefetch(Ecore_X_Window window);
+EAPI void             ecore_x_dnd_version_get_fetch(void);
+EAPI int              ecore_x_dnd_version_get(Ecore_X_Window win);
+EAPI void             ecore_x_dnd_type_get_prefetch(Ecore_X_Window window);
+EAPI void             ecore_x_dnd_type_get_fetch(void);
+EAPI int              ecore_x_dnd_type_isset(Ecore_X_Window win, const char *type);
+EAPI void             ecore_x_dnd_type_set(Ecore_X_Window win, const char *type, int on);
+EAPI void             ecore_x_dnd_types_set(Ecore_X_Window win, char **types, unsigned int num_types);
+EAPI void             ecore_x_dnd_actions_set(Ecore_X_Window win, Ecore_X_Atom *actions, unsigned int num_actions);
+EAPI void             ecore_x_dnd_begin_prefetch(Ecore_X_Window source);
+EAPI void             ecore_x_dnd_begin_fetch(void);
+EAPI int              ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size);
+EAPI int              ecore_x_dnd_drop(void);
+EAPI void             ecore_x_dnd_send_status(int will_accept, int suppress, Ecore_X_Rectangle rectangle, Ecore_X_Atom action);
+EAPI void             ecore_x_dnd_send_finished(void);
+
+EAPI Ecore_X_Window   ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window   ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI int              ecore_x_window_argb_get(Ecore_X_Window win);
+EAPI Ecore_X_Window   ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window   ecore_x_window_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window   ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI Ecore_X_Window   ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h);
+EAPI void             ecore_x_window_configure(Ecore_X_Window win,
+                                              Ecore_X_Window_Configure_Mask mask,
+                                              int x, int y, int w, int h,
+                                              int border_width,
+                                              Ecore_X_Window sibling,
+                                              int stack_mode);
+EAPI void             ecore_x_window_cursor_set(Ecore_X_Window win, Ecore_X_Cursor c);
+EAPI void             ecore_x_window_del(Ecore_X_Window win);
+EAPI void             ecore_x_window_ignore_set(Ecore_X_Window win, int ignore);
+EAPI Ecore_X_Window  *ecore_x_window_ignore_list(int *num);
+
+EAPI void             ecore_x_window_delete_request_send(Ecore_X_Window win);
+EAPI void             ecore_x_window_show(Ecore_X_Window win);
+EAPI void             ecore_x_window_hide(Ecore_X_Window win);
+EAPI void             ecore_x_window_move(Ecore_X_Window win, int x, int y);
+EAPI void             ecore_x_window_resize(Ecore_X_Window win, int w, int h);
+EAPI void             ecore_x_window_move_resize(Ecore_X_Window win, int x, int y, int w, int h);
+EAPI void             ecore_x_window_focus(Ecore_X_Window win);
+EAPI void             ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t);
+EAPI void             ecore_x_get_input_focus_prefetch(void);
+EAPI void             ecore_x_get_input_focus_fetch(void);
+EAPI Ecore_X_Window   ecore_x_window_focus_get(void);
+EAPI void             ecore_x_window_raise(Ecore_X_Window win);
+EAPI void             ecore_x_window_lower(Ecore_X_Window win);
+EAPI void             ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y);
+EAPI void             ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h);
+EAPI void             ecore_x_window_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h);
+EAPI int              ecore_x_window_border_width_get(Ecore_X_Window win);
+EAPI void             ecore_x_window_border_width_set(Ecore_X_Window win, int width);
+EAPI int              ecore_x_window_depth_get(Ecore_X_Window win);
+EAPI void             ecore_x_window_cursor_show(Ecore_X_Window win, int show);
+EAPI void             ecore_x_window_defaults_set(Ecore_X_Window win);
+EAPI int              ecore_x_window_visible_get(Ecore_X_Window win);
+EAPI Ecore_X_Window   ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num);
+EAPI Ecore_X_Window   ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win);
+EAPI void             ecore_x_window_shadow_tree_flush(void);
+EAPI Ecore_X_Window   ecore_x_window_root_get(Ecore_X_Window win);
+EAPI Ecore_X_Window   ecore_x_window_at_xy_get(int x, int y);
+EAPI Ecore_X_Window   ecore_x_window_at_xy_with_skip_get(int x, int y, Ecore_X_Window *skip, int skip_num);
+EAPI Ecore_X_Window   ecore_x_window_at_xy_begin_get(Ecore_X_Window begin, int x, int y);
+EAPI void             ecore_x_query_tree_prefetch(Ecore_X_Window window);
+EAPI void             ecore_x_query_tree_fetch(void);
+EAPI Ecore_X_Window   ecore_x_window_parent_get(Ecore_X_Window win);
+
+EAPI void             ecore_x_window_background_color_set(Ecore_X_Window win,
+                                                         unsigned short r,
+                                                         unsigned short g,
+                                                         unsigned short b);
+EAPI void             ecore_x_window_gravity_set(Ecore_X_Window win,
+                                                Ecore_X_Gravity grav);
+EAPI void             ecore_x_window_pixel_gravity_set(Ecore_X_Window win,
+                                                      Ecore_X_Gravity grav);
+EAPI void             ecore_x_window_pixmap_set(Ecore_X_Window win,
+                                               Ecore_X_Pixmap pmap);
+EAPI void             ecore_x_window_area_clear(Ecore_X_Window win,
+                                               int x, int y, int w, int h);
+EAPI void             ecore_x_window_area_expose(Ecore_X_Window win,
+                                                int x, int y, int w, int h);
+EAPI void             ecore_x_window_override_set(Ecore_X_Window win, int override);
+
+EAPI void             ecore_x_window_prop_card32_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                                                    unsigned int *val, unsigned int num);
+EAPI void             ecore_x_window_prop_card32_get_prefetch(Ecore_X_Window window,
+                                                              Ecore_X_Atom atom);
+EAPI void             ecore_x_window_prop_card32_get_fetch(void);
+EAPI int              ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                                                    unsigned int *val, unsigned int len);
+EAPI int              ecore_x_window_prop_card32_list_get(Ecore_X_Window win,
+                                                          Ecore_X_Atom atom,
+                                                          unsigned int **plst);
+
+EAPI void             ecore_x_window_prop_xid_set(Ecore_X_Window win,
+                                                  Ecore_X_Atom atom,
+                                                  Ecore_X_Atom type,
+                                                  Ecore_X_ID * lst,
+                                                  unsigned int num);
+EAPI void             ecore_x_window_prop_xid_get_prefetch(Ecore_X_Window window,
+                                                           Ecore_X_Atom   atom,
+                                                           Ecore_X_Atom   type);
+EAPI void             ecore_x_window_prop_xid_get_fetch(void);
+EAPI int              ecore_x_window_prop_xid_get(Ecore_X_Window win,
+                                                  Ecore_X_Atom atom,
+                                                  Ecore_X_Atom type,
+                                                  Ecore_X_ID * lst,
+                                                  unsigned int len);
+EAPI int              ecore_x_window_prop_xid_list_get(Ecore_X_Window win,
+                                                       Ecore_X_Atom atom,
+                                                       Ecore_X_Atom type,
+                                                       Ecore_X_ID ** plst);
+EAPI void             ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
+                                                          Ecore_X_Atom atom,
+                                                          Ecore_X_Atom type,
+                                                          Ecore_X_ID item,
+                                                          int op);
+EAPI void             ecore_x_window_prop_atom_set(Ecore_X_Window win,
+                                                   Ecore_X_Atom atom,
+                                                   Ecore_X_Atom * val,
+                                                   unsigned int num);
+EAPI void             ecore_x_window_prop_atom_get_prefetch(Ecore_X_Window window,
+                                                            Ecore_X_Atom   atom);
+EAPI void             ecore_x_window_prop_atom_get_fetch(void);
+EAPI int              ecore_x_window_prop_atom_get(Ecore_X_Window win,
+                                                   Ecore_X_Atom atom,
+                                                   Ecore_X_Atom * val,
+                                                   unsigned int len);
+EAPI int              ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
+                                                        Ecore_X_Atom atom,
+                                                        Ecore_X_Atom ** plst);
+EAPI void             ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
+                                                           Ecore_X_Atom atom,
+                                                           Ecore_X_Atom item,
+                                                           int op);
+EAPI void             ecore_x_window_prop_window_set(Ecore_X_Window win,
+                                                     Ecore_X_Atom atom,
+                                                     Ecore_X_Window * val,
+                                                     unsigned int num);
+EAPI void             ecore_x_window_prop_window_get_prefetch(Ecore_X_Window window,
+                                                              Ecore_X_Atom   atom);
+EAPI void             ecore_x_window_prop_window_get_fetch(void);
+EAPI int              ecore_x_window_prop_window_get(Ecore_X_Window win,
+                                                     Ecore_X_Atom atom,
+                                                     Ecore_X_Window * val,
+                                                     unsigned int len);
+EAPI int              ecore_x_window_prop_window_list_get(Ecore_X_Window win,
+                                                          Ecore_X_Atom atom,
+                                                          Ecore_X_Window ** plst);
+
+EAPI Ecore_X_Atom     ecore_x_window_prop_any_type(void);
+EAPI void             ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number);
+EAPI void             ecore_x_window_prop_property_get_prefetch(Ecore_X_Window window,
+                                                                Ecore_X_Atom   property,
+                                                                Ecore_X_Atom   type);
+EAPI void             ecore_x_window_prop_property_get_fetch(void);
+EAPI int              ecore_x_window_prop_property_get(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size, unsigned char **data, int *num);
+EAPI void             ecore_x_window_prop_property_del(Ecore_X_Window win, Ecore_X_Atom property);
+EAPI void             ecore_x_window_prop_list_prefetch(Ecore_X_Window window);
+EAPI void             ecore_x_window_prop_list_fetch(void);
+EAPI Ecore_X_Atom    *ecore_x_window_prop_list(Ecore_X_Window win, int *num_ret);
+EAPI void             ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, const char *str);
+EAPI void             ecore_x_window_prop_string_get_prefetch(Ecore_X_Window window,
+                                                              Ecore_X_Atom   type);
+EAPI void             ecore_x_window_prop_string_get_fetch(void);
+EAPI char            *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type);
+EAPI int              ecore_x_window_prop_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
+EAPI Ecore_X_WM_Protocol *ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret);
+
+EAPI void               ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
+EAPI void               ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win);
+EAPI void               ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
+EAPI void               ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h);
+EAPI void               ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
+EAPI void               ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win);
+EAPI void               ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y);
+EAPI void               ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h);
+EAPI void               ecore_x_window_shape_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h);
+EAPI void               ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num);
+EAPI void               ecore_x_window_shape_rectangles_get_prefetch(Ecore_X_Window window);
+EAPI void               ecore_x_window_shape_rectangles_get_fetch(void);
+EAPI Ecore_X_Rectangle *ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret);
+EAPI void               ecore_x_window_shape_events_select(Ecore_X_Window win, int on);
+EAPI void               ecore_x_window_shape_input_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask);
+
+EAPI Ecore_X_Pixmap   ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int dep);
+EAPI void             ecore_x_pixmap_del(Ecore_X_Pixmap pmap);
+EAPI void             ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, Ecore_X_Drawable dest, Ecore_X_GC gc, int sx, int sy, int w, int h, int dx, int dy);
+EAPI void             ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h);
+EAPI int              ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
+
+EAPI Ecore_X_GC       ecore_x_gc_new(Ecore_X_Drawable draw);
+EAPI void             ecore_x_gc_del(Ecore_X_GC gc);
+
+EAPI int              ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Event_Mask mask, long d0, long d1, long d2, long d3, long d4);
+EAPI int              ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type, const void *data, int len);
+EAPI int              ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y);
+EAPI int              ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b);
+EAPI int              ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b);
+
+EAPI void            ecore_x_drawable_geometry_get_prefetch(Ecore_X_Drawable drawable);
+EAPI void            ecore_x_drawable_geometry_get_fetch(void);
+EAPI void            ecore_x_drawable_geometry_get(Ecore_X_Drawable d, int *x, int *y, int *w, int *h);
+EAPI int             ecore_x_drawable_border_width_get(Ecore_X_Drawable d);
+EAPI int             ecore_x_drawable_depth_get(Ecore_X_Drawable d);
+
+EAPI int  ecore_x_cursor_color_supported_get(void);
+EAPI Ecore_X_Cursor ecore_x_cursor_new(Ecore_X_Window win, int *pixels, int w, int h, int hot_x, int hot_y);
+EAPI void ecore_x_cursor_free(Ecore_X_Cursor c);
+EAPI Ecore_X_Cursor ecore_x_cursor_shape_get(int shape);
+EAPI void ecore_x_cursor_size_set(int size);
+EAPI int  ecore_x_cursor_size_get(void);
+
+
+/* FIXME: these funcs need categorising */
+EAPI Ecore_X_Window *ecore_x_window_root_list(int *num_ret);
+EAPI Ecore_X_Window  ecore_x_window_root_first_get(void);
+EAPI int             ecore_x_window_manage(Ecore_X_Window win);
+EAPI void            ecore_x_window_container_manage(Ecore_X_Window win);
+EAPI void            ecore_x_window_client_manage(Ecore_X_Window win);
+EAPI void            ecore_x_window_sniff(Ecore_X_Window win);
+EAPI void            ecore_x_window_client_sniff(Ecore_X_Window win);
+EAPI void            ecore_x_atom_get_prefetch(const char *name);
+EAPI void            ecore_x_atom_get_fetch(void);
+EAPI Ecore_X_Atom    ecore_x_atom_get(const char *name);
+EAPI void            ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms);
+       
+
+
+EAPI void            ecore_x_icccm_init(void);
+EAPI void            ecore_x_icccm_state_set(Ecore_X_Window win, Ecore_X_Window_State_Hint state);
+EAPI Ecore_X_Window_State_Hint ecore_x_icccm_state_get(Ecore_X_Window win);
+EAPI void            ecore_x_icccm_delete_window_send(Ecore_X_Window win, Ecore_X_Time t);
+EAPI void            ecore_x_icccm_take_focus_send(Ecore_X_Window win, Ecore_X_Time t);
+EAPI void            ecore_x_icccm_save_yourself_send(Ecore_X_Window win, Ecore_X_Time t);
+EAPI void            ecore_x_icccm_move_resize_send(Ecore_X_Window win, int x, int y, int w, int h);
+EAPI void  ecore_x_icccm_hints_set(Ecore_X_Window win,
+                                  int accepts_focus,
+                                  Ecore_X_Window_State_Hint initial_state,
+                                  Ecore_X_Pixmap icon_pixmap,
+                                  Ecore_X_Pixmap icon_mask,
+                                  Ecore_X_Window icon_window,
+                                  Ecore_X_Window window_group,
+                                  int is_urgent);
+EAPI int  ecore_x_icccm_hints_get(Ecore_X_Window win,
+                                 int *accepts_focus,
+                                 Ecore_X_Window_State_Hint *initial_state,
+                                 Ecore_X_Pixmap *icon_pixmap,
+                                 Ecore_X_Pixmap *icon_mask,
+                                 Ecore_X_Window *icon_window,
+                                 Ecore_X_Window *window_group,
+                                 int *is_urgent);
+EAPI void  ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
+                                           int request_pos,
+                                           Ecore_X_Gravity gravity,
+                                           int min_w, int min_h,
+                                           int max_w, int max_h,
+                                           int base_w, int base_h,
+                                           int step_x, int step_y,
+                                           double min_aspect,
+                                           double max_aspect);
+EAPI int   ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
+                                           int *request_pos,
+                                           Ecore_X_Gravity *gravity,
+                                           int *min_w, int *min_h,
+                                           int *max_w, int *max_h,
+                                           int *base_w, int *base_h,
+                                           int *step_x, int *step_y,
+                                           double *min_aspect,
+                                           double *max_aspect);
+EAPI void  ecore_x_icccm_title_set(Ecore_X_Window win, const char *t);
+EAPI char *ecore_x_icccm_title_get(Ecore_X_Window win);
+EAPI void  ecore_x_icccm_protocol_set(Ecore_X_Window win,
+                                     Ecore_X_WM_Protocol protocol,
+                                     int on);
+EAPI int   ecore_x_icccm_protocol_isset(Ecore_X_Window win,
+                                       Ecore_X_WM_Protocol protocol);
+EAPI void  ecore_x_icccm_name_class_set(Ecore_X_Window win,
+                                       const char *n,
+                                       const char *c);
+EAPI void  ecore_x_icccm_name_class_get(Ecore_X_Window win,
+                                       char **n,
+                                       char **c);
+EAPI char *ecore_x_icccm_client_machine_get(Ecore_X_Window win);
+EAPI void  ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
+EAPI void  ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
+EAPI char *ecore_x_icccm_icon_name_get(Ecore_X_Window win);
+EAPI void  ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t);
+EAPI void  ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin);
+EAPI void  ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin);
+EAPI void  ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin);
+EAPI void  ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
+EAPI Ecore_X_Window ecore_x_icccm_transient_for_get(Ecore_X_Window win);
+EAPI void  ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role);
+EAPI char *ecore_x_icccm_window_role_get(Ecore_X_Window win);
+EAPI void  ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l);
+EAPI Ecore_X_Window ecore_x_icccm_client_leader_get(Ecore_X_Window win);
+EAPI void ecore_x_icccm_iconic_request_send(Ecore_X_Window win, Ecore_X_Window root);
+
+
+typedef enum _Ecore_X_MWM_Hint_Func
+{
+   ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
+   ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
+   ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
+   ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
+   ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
+   ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
+} Ecore_X_MWM_Hint_Func;
+
+typedef enum _Ecore_X_MWM_Hint_Decor
+{
+   ECORE_X_MWM_HINT_DECOR_ALL = (1 << 0),
+   ECORE_X_MWM_HINT_DECOR_BORDER = (1 << 1),
+   ECORE_X_MWM_HINT_DECOR_RESIZEH = (1 << 2),
+   ECORE_X_MWM_HINT_DECOR_TITLE = (1 << 3),
+   ECORE_X_MWM_HINT_DECOR_MENU = (1 << 4),
+   ECORE_X_MWM_HINT_DECOR_MINIMIZE = (1 << 5),
+   ECORE_X_MWM_HINT_DECOR_MAXIMIZE = (1 << 6)
+} Ecore_X_MWM_Hint_Decor;
+
+typedef enum _Ecore_X_MWM_Hint_Input
+{
+   ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
+   ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
+   ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
+   ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3,
+} Ecore_X_MWM_Hint_Input;
+
+EAPI void ecore_x_mwm_hints_get_prefetch(Ecore_X_Window window);
+EAPI void ecore_x_mwm_hints_get_fetch(void);
+EAPI int  ecore_x_mwm_hints_get(Ecore_X_Window win,
+                                Ecore_X_MWM_Hint_Func *fhint,
+                                Ecore_X_MWM_Hint_Decor *dhint,
+                                Ecore_X_MWM_Hint_Input *ihint);
+EAPI void ecore_x_mwm_borderless_set(Ecore_X_Window win, int borderless);
+
+/* netwm */
+EAPI void                ecore_x_netwm_init(void);
+EAPI void                ecore_x_netwm_shutdown(void);
+EAPI void                ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check, const char *wm_name);
+EAPI void                ecore_x_netwm_supported_set(Ecore_X_Window root, Ecore_X_Atom *supported, int num);
+EAPI void                ecore_x_netwm_supported_get_prefetch(Ecore_X_Window root);
+EAPI void                ecore_x_netwm_supported_get_fetch(void);
+EAPI int                 ecore_x_netwm_supported_get(Ecore_X_Window root, Ecore_X_Atom **supported, int *num);
+EAPI void                ecore_x_netwm_desk_count_set(Ecore_X_Window root, unsigned int n_desks);
+EAPI void                ecore_x_netwm_desk_roots_set(Ecore_X_Window root, Ecore_X_Window *vroots, unsigned int n_desks);
+EAPI void                ecore_x_netwm_desk_names_set(Ecore_X_Window root, const char **names, unsigned int n_desks);
+EAPI void                ecore_x_netwm_desk_size_set(Ecore_X_Window root, unsigned int width, unsigned int height);
+EAPI void                ecore_x_netwm_desk_workareas_set(Ecore_X_Window root, unsigned int *areas, unsigned int n_desks);
+EAPI void                ecore_x_netwm_desk_current_set(Ecore_X_Window root, unsigned int desk);
+EAPI void                ecore_x_netwm_desk_viewports_set(Ecore_X_Window root, unsigned int *origins, unsigned int n_desks);
+EAPI void                ecore_x_netwm_desk_layout_set(Ecore_X_Window root, int orientation, int columns, int rows, int starting_corner);
+EAPI void                ecore_x_netwm_showing_desktop_set(Ecore_X_Window root, int on);
+EAPI void                ecore_x_netwm_client_list_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
+EAPI void                ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root, Ecore_X_Window *p_clients, unsigned int n_clients);
+EAPI void                ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win);
+EAPI void                ecore_x_netwm_client_active_request(Ecore_X_Window root, Ecore_X_Window win, int type, Ecore_X_Window current_win);
+EAPI void                ecore_x_netwm_name_set(Ecore_X_Window win, const char *name);
+EAPI void                ecore_x_netwm_name_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_name_get_fetch(void);
+EAPI int                 ecore_x_netwm_name_get(Ecore_X_Window win, char **name);
+EAPI void                ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id);
+EAPI void                ecore_x_netwm_startup_id_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_startup_id_get_fetch(void);
+EAPI int                 ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id);
+EAPI void                ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name);
+EAPI void                ecore_x_netwm_visible_name_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_visible_name_get_fetch(void);
+EAPI int                 ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name);
+EAPI void                ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name);
+EAPI void                ecore_x_netwm_icon_name_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_icon_name_get_fetch(void);
+EAPI int                 ecore_x_netwm_icon_name_get(Ecore_X_Window win, char **name);
+EAPI void                ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win, const char *name);
+EAPI void                ecore_x_netwm_visible_icon_name_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_visible_icon_name_get_fetch(void);
+EAPI int                 ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win, char **name);
+EAPI void                ecore_x_netwm_desktop_set(Ecore_X_Window win, unsigned int desk);
+EAPI void                ecore_x_netwm_desktop_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_desktop_get_fetch(void);
+EAPI int                 ecore_x_netwm_desktop_get(Ecore_X_Window win, unsigned int *desk);
+EAPI void                ecore_x_netwm_strut_set(Ecore_X_Window win, int left, int right, int top, int bottom);
+EAPI void                ecore_x_netwm_strut_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_strut_get_fetch(void);
+EAPI int                 ecore_x_netwm_strut_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom);
+EAPI void                ecore_x_netwm_strut_partial_set(Ecore_X_Window win, int left, int right, int top, int bottom, int left_start_y, int left_end_y, int right_start_y, int right_end_y, int top_start_x, int top_end_x, int bottom_start_x, int bottom_end_x);
+EAPI void                ecore_x_netwm_strut_partial_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_strut_partial_get_fetch(void);
+EAPI int                 ecore_x_netwm_strut_partial_get(Ecore_X_Window win, int *left, int *right, int *top, int *bottom, int *left_start_y, int *left_end_y, int *right_start_y, int *right_end_y, int *top_start_x, int *top_end_x, int *bottom_start_x, int *bottom_end_x);
+EAPI void                ecore_x_netwm_icons_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_icons_get_fetch(void);
+EAPI int                 ecore_x_netwm_icons_get(Ecore_X_Window win, Ecore_X_Icon **icon, int *num);
+EAPI void                ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, int x, int y, int width, int height);
+EAPI void                ecore_x_netwm_icon_geometry_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_icon_geometry_get_fetch(void);
+EAPI int                 ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, int *x, int *y, int *width, int *height);
+EAPI void                ecore_x_netwm_pid_set(Ecore_X_Window win, int pid);
+EAPI void                ecore_x_netwm_pid_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_pid_get_fetch(void);
+EAPI int                 ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid);
+EAPI void                ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
+EAPI void                ecore_x_netwm_handled_icons_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_handled_icons_get_fetch(void);
+EAPI int                 ecore_x_netwm_handled_icons_get(Ecore_X_Window win);
+EAPI void                ecore_x_netwm_user_time_set(Ecore_X_Window win, unsigned int time);
+EAPI void                ecore_x_netwm_user_time_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_user_time_get_fetch(void);
+EAPI int                 ecore_x_netwm_user_time_get(Ecore_X_Window win, unsigned int *time);
+EAPI void                ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State *state, unsigned int num);
+EAPI void                ecore_x_netwm_window_state_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_window_state_get_fetch(void);
+EAPI int                 ecore_x_netwm_window_state_get(Ecore_X_Window win, Ecore_X_Window_State **state, unsigned int *num);
+EAPI void                ecore_x_netwm_window_type_set(Ecore_X_Window win, Ecore_X_Window_Type type);
+EAPI void                ecore_x_netwm_window_type_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_window_type_get_fetch(void);
+EAPI int                 ecore_x_netwm_window_type_get(Ecore_X_Window win, Ecore_X_Window_Type *type);
+EAPI int                 ecore_x_netwm_window_types_get(Ecore_X_Window win, Ecore_X_Window_Type **types);
+EAPI int                 ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action);
+EAPI void                ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action *action, unsigned int num);
+EAPI void                ecore_x_netwm_allowed_action_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_allowed_action_get_fetch(void);
+EAPI int                 ecore_x_netwm_allowed_action_get(Ecore_X_Window win, Ecore_X_Action **action, unsigned int *num);
+EAPI void                ecore_x_netwm_opacity_set(Ecore_X_Window win, unsigned int opacity);
+EAPI void                ecore_x_netwm_opacity_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_opacity_get_fetch(void);
+EAPI int                 ecore_x_netwm_opacity_get(Ecore_X_Window win, unsigned int *opacity);
+EAPI void                ecore_x_netwm_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
+EAPI void                ecore_x_netwm_frame_size_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_frame_size_get_fetch(void);
+EAPI int                 ecore_x_netwm_frame_size_get(Ecore_X_Window win, int *fl, int *fr, int *ft, int *fb);
+EAPI void                ecore_x_netwm_sync_counter_get_prefetch(Ecore_X_Window window);
+EAPI void                ecore_x_netwm_sync_counter_get_fetch(void);
+EAPI int                 ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter *counter);
+EAPI void                ecore_x_netwm_ping_send(Ecore_X_Window win);
+EAPI void                ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial);
+EAPI void                ecore_x_netwm_state_request_send(Ecore_X_Window win, Ecore_X_Window root, Ecore_X_Window_State s1, Ecore_X_Window_State s2, int set);
+EAPI void                ecore_x_netwm_desktop_request_send(Ecore_X_Window win, Ecore_X_Window root, unsigned int desktop);
+
+
+
+
+EAPI void                ecore_x_e_init(void);
+EAPI void                ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb);
+EAPI void                ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, int is_keyboard);
+EAPI int                 ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
+EAPI void                ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
+EAPI Ecore_X_Virtual_Keyboard_State ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
+EAPI void                ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state);
+       
+
+EAPI void                ecore_x_xinerama_query_screens_prefetch(void);
+EAPI void                ecore_x_xinerama_query_screens_fetch(void);
+EAPI int                 ecore_x_xinerama_screen_count_get(void);
+EAPI int                 ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h);
+
+EAPI int                 ecore_x_screensaver_event_available_get(void);
+EAPI void                ecore_x_screensaver_idle_time_prefetch(void);
+EAPI void                ecore_x_screensaver_idle_time_fetch(void);
+EAPI int                 ecore_x_screensaver_idle_time_get(void);
+EAPI void                ecore_x_get_screensaver_prefetch(void);
+EAPI void                ecore_x_get_screensaver_fetch(void);
+EAPI void                ecore_x_screensaver_set(int timeout, int interval, int prefer_blanking, int allow_exposures);
+EAPI void                ecore_x_screensaver_timeout_set(int timeout);
+EAPI int                 ecore_x_screensaver_timeout_get(void);
+EAPI void                ecore_x_screensaver_blank_set(int timeout);
+EAPI int                 ecore_x_screensaver_blank_get(void);
+EAPI void                ecore_x_screensaver_expose_set(int timeout);
+EAPI int                 ecore_x_screensaver_expose_get(void);
+EAPI void                ecore_x_screensaver_interval_set(int timeout);
+EAPI int                 ecore_x_screensaver_interval_get(void);
+EAPI void                ecore_x_screensaver_event_listen_set(int on);
+
+/* FIXME: these funcs need categorising */
+
+typedef struct _Ecore_X_Window_Attributes
+{
+   Ecore_X_Window     root;
+   int                x, y, w, h;
+   int                border;
+   int                depth;
+   unsigned char      visible : 1;
+   unsigned char      viewable : 1;
+   unsigned char      override : 1;
+   unsigned char      input_only : 1;
+   unsigned char      save_under : 1;
+   struct {
+       Ecore_X_Event_Mask mine;
+       Ecore_X_Event_Mask all;
+       Ecore_X_Event_Mask no_propagate;
+   } event_mask;
+   Ecore_X_Gravity    window_gravity;
+   Ecore_X_Gravity    pixel_gravity;
+   Ecore_X_Colormap   colormap;
+   Ecore_X_Visual     visual;
+   /* FIXME: missing
+    * int map_installed;
+    * Screen *screen;
+    */
+} Ecore_X_Window_Attributes;
+
+EAPI void ecore_x_get_window_attributes_prefetch(Ecore_X_Window window);
+EAPI void ecore_x_get_window_attributes_fetch(void);
+EAPI int  ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att_ret);
+EAPI void ecore_x_window_save_set_add(Ecore_X_Window win);
+EAPI void ecore_x_window_save_set_del(Ecore_X_Window win);
+EAPI Ecore_X_Window *ecore_x_window_children_get(Ecore_X_Window win, int *num);
+
+EAPI int  ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold);
+EAPI void ecore_x_pointer_control_get_prefetch(void);
+EAPI void ecore_x_pointer_control_get_fetch(void);
+EAPI int  ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold);
+EAPI int  ecore_x_pointer_grab(Ecore_X_Window win);
+EAPI int  ecore_x_pointer_confine_grab(Ecore_X_Window win);
+EAPI void ecore_x_pointer_ungrab(void);
+EAPI int  ecore_x_pointer_warp(Ecore_X_Window win, int x, int y);
+EAPI int  ecore_x_keyboard_grab(Ecore_X_Window win);
+EAPI void ecore_x_keyboard_ungrab(void);
+EAPI void ecore_x_grab(void);
+EAPI void ecore_x_ungrab(void);
+EAPI void ecore_x_passive_grab_replay_func_set(int (*func) (void *data, int event_type, void *event), void *data);
+EAPI void ecore_x_window_button_grab(Ecore_X_Window win, int button,
+                                    Ecore_X_Event_Mask event_mask,
+                                    int mod, int any_mod);
+EAPI void ecore_x_window_button_ungrab(Ecore_X_Window win, int button,
+                                      int mod, int any_mod);
+EAPI void ecore_x_window_key_grab(Ecore_X_Window win, const char *key,
+                                 int mod, int any_mod);
+EAPI void ecore_x_window_key_ungrab(Ecore_X_Window win, const char *key,
+                                   int mod, int any_mod);
+
+EAPI void ecore_x_focus_reset(void);
+EAPI void ecore_x_events_allow_all(void);
+EAPI void ecore_x_pointer_last_xy_get(int *x, int *y);
+EAPI void ecore_x_pointer_xy_get_prefetch(Ecore_X_Window window);
+EAPI void ecore_x_pointer_xy_get_fetch(void);
+EAPI void ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y);
+
+/* ecore_x_sync.c */
+EAPI Ecore_X_Sync_Alarm ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
+EAPI int                ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
+
+/* ecore_x_randr.c */
+typedef struct _Ecore_X_Screen_Size Ecore_X_Screen_Size;
+struct _Ecore_X_Screen_Size
+{
+   int width, height;
+};
+
+typedef struct _Ecore_X_Screen_Refresh_Rate Ecore_X_Screen_Refresh_Rate;
+struct _Ecore_X_Screen_Refresh_Rate
+{
+   int rate;
+};
+
+EAPI int                     ecore_x_randr_query();
+EAPI int                     ecore_x_randr_events_select(Ecore_X_Window win, int on);
+EAPI void                    ecore_x_randr_get_screen_info_prefetch(Ecore_X_Window window);
+EAPI void                    ecore_x_randr_get_screen_info_fetch(void);
+EAPI Ecore_X_Randr_Rotation  ecore_x_randr_screen_rotations_get(Ecore_X_Window root);
+EAPI Ecore_X_Randr_Rotation  ecore_x_randr_screen_rotation_get(Ecore_X_Window root);
+EAPI void                    ecore_x_randr_screen_rotation_set(Ecore_X_Window root, Ecore_X_Randr_Rotation rot);
+EAPI Ecore_X_Screen_Size    *ecore_x_randr_screen_sizes_get(Ecore_X_Window root, int *num);
+EAPI Ecore_X_Screen_Size     ecore_x_randr_current_screen_size_get(Ecore_X_Window root);
+EAPI int                     ecore_x_randr_screen_size_set(Ecore_X_Window root, Ecore_X_Screen_Size size);
+
+EAPI Ecore_X_Screen_Refresh_Rate *ecore_x_randr_screen_refresh_rates_get(Ecore_X_Window root, int size_id, int *num);
+EAPI Ecore_X_Screen_Refresh_Rate  ecore_x_randr_current_screen_refresh_rate_get(Ecore_X_Window root);
+
+EAPI int ecore_x_randr_screen_refresh_rate_set(Ecore_X_Window root, Ecore_X_Screen_Size size, Ecore_X_Screen_Refresh_Rate rate);
+
+/* XRender Support (horrendously incomplete) */
+typedef Ecore_X_ID  Ecore_X_Picture;
+
+/* XFixes Extension Support */
+typedef Ecore_X_ID  Ecore_X_Region;
+
+typedef enum _Ecore_X_Region_Type {
+     ECORE_X_REGION_BOUNDING,
+     ECORE_X_REGION_CLIP
+} Ecore_X_Region_Type;
+
+EAPI Ecore_X_Region ecore_x_region_new(Ecore_X_Rectangle *rects, int num);
+EAPI Ecore_X_Region ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
+EAPI Ecore_X_Region ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type);
+EAPI Ecore_X_Region ecore_x_region_new_from_gc(Ecore_X_GC gc);
+EAPI Ecore_X_Region ecore_x_region_new_from_picture(Ecore_X_Picture picture);
+EAPI void           ecore_x_region_del(Ecore_X_Region region);
+EAPI void           ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num);
+EAPI void           ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source);
+EAPI void           ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
+EAPI void           ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
+EAPI void           ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2);
+EAPI void           ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source);
+EAPI void           ecore_x_region_translate(Ecore_X_Region region, int dx, int dy);
+EAPI void           ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source);
+EAPI void           ecore_x_region_fetch_prefetch(Ecore_X_Region region);
+EAPI void           ecore_x_region_fetch_fetch(void);
+EAPI Ecore_X_Rectangle * ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds);
+EAPI void           ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom);
+EAPI void           ecore_x_region_gc_clip_set(Ecore_X_Region region, Ecore_X_GC gc, int x_origin, int y_origin);
+EAPI void           ecore_x_region_window_shape_set(Ecore_X_Region region, Ecore_X_Window win, Ecore_X_Shape_Type type, int x_offset, int y_offset);
+EAPI void           ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore_X_Picture picture, int x_origin, int y_origin);
+
+/* XComposite Extension Support */
+EAPI int               ecore_x_composite_query(void);
+
+/* XDamage Extension Support */
+typedef Ecore_X_ID  Ecore_X_Damage;
+
+typedef enum _Ecore_X_Damage_Report_Level {
+     ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
+     ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
+     ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
+     ECORE_X_DAMAGE_REPORT_NON_EMPTY
+} Ecore_X_Damage_Report_Level;
+
+struct _Ecore_X_Event_Damage {
+     Ecore_X_Damage_Report_Level level;
+     Ecore_X_Drawable drawable;
+     Ecore_X_Damage   damage;
+     int              more;
+     Ecore_X_Time     time;
+     Ecore_X_Rectangle area;
+     Ecore_X_Rectangle  geometry;
+};
+
+typedef struct _Ecore_X_Event_Damage  Ecore_X_Event_Damage;
+
+EAPI int               ecore_x_damage_query(void);
+EAPI Ecore_X_Damage    ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level);
+EAPI void              ecore_x_damage_del(Ecore_X_Damage damage);
+EAPI void              ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts);
+
+EAPI int               ecore_x_screen_is_composited(int screen);
+
+EAPI int               ecore_x_dpms_query(void);
+EAPI void              ecore_x_dpms_capable_get_prefetch(void);
+EAPI void              ecore_x_dpms_capable_get_fetch(void);
+EAPI int               ecore_x_dpms_capable_get(void);
+EAPI void              ecore_x_dpms_enable_get_prefetch(void);
+EAPI void              ecore_x_dpms_enable_get_fetch(void);
+EAPI int               ecore_x_dpms_enabled_get(void);
+EAPI void              ecore_x_dpms_enabled_set(int enabled);
+EAPI void              ecore_x_dpms_timeouts_get_prefetch(void);
+EAPI void              ecore_x_dpms_timeouts_get_fetch(void);
+EAPI void              ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off);
+EAPI int               ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off);
+EAPI unsigned int      ecore_x_dpms_timeout_standby_get(void);
+EAPI unsigned int      ecore_x_dpms_timeout_suspend_get(void);
+EAPI unsigned int      ecore_x_dpms_timeout_off_get(void);
+EAPI void              ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
+EAPI void              ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
+EAPI void              ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
+
+EAPI int ecore_x_test_fake_key_down(const char *key);
+EAPI int ecore_x_test_fake_key_up(const char *key);
+EAPI int ecore_x_test_fake_key_press(const char *key);
+EAPI const char *ecore_x_keysym_string_get(int keysym);
+   
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/ecore_x/Ecore_X_Atoms.h b/src/lib/ecore_x/Ecore_X_Atoms.h
new file mode 100644 (file)
index 0000000..4d1253d
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef _ECORE_X_ATOMS_H
+#define _ECORE_X_ATOMS_H
+
+/**
+ * @file
+ * @brief Ecore X atoms
+ */
+
+/* generic atoms */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_ATOM;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_FILE_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_STRING;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_TEXT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_UTF8_STRING;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WINDOW;
+
+/* dnd atoms */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_XDND;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_XDND;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_AWARE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ENTER;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_TYPE_LIST;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_POSITION;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_COPY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_MOVE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_PRIVATE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_ASK;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LIST;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_LINK;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_DESCRIPTION;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_PROXY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_STATUS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_LEAVE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_DROP;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_FINISHED;
+
+/* dnd atoms that need to be exposed to the application interface */
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_COPY;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_MOVE;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_LINK;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_ASK;
+EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE;
+/* old E atom */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_FRAME_SIZE;
+
+/* old Gnome atom */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WIN_LAYER;
+
+/* ICCCM: client properties */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_ICON_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_NORMAL_HINTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_SIZE_HINTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_HINTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_CLASS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_TRANSIENT_FOR;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_PROTOCOLS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_COLORMAP_WINDOWS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_COMMAND;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_CLIENT_MACHINE;
+
+/* ICCCM: window manager properties */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_STATE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_ICON_SIZE;
+
+/* ICCCM: WM_STATEproperty */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_CHANGE_STATE;
+
+/* ICCCM: WM_PROTOCOLS properties */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_TAKE_FOCUS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_SAVE_YOURSELF;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_DELETE_WINDOW;
+
+/* ICCCM: WM_COLORMAP properties */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_COLORMAP_NOTIFY;
+
+/* ICCCM: session management properties */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SM_CLIENT_ID;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_CLIENT_LEADER;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_WM_WINDOW_ROLE;
+
+/* Motif WM atom */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_MOTIF_WM_HINTS;
+
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_SUPPORTED;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_CLIENT_LIST;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_CLIENT_LIST_STACKING;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_DESKTOP_GEOMETRY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_DESKTOP_VIEWPORT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_CURRENT_DESKTOP;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_DESKTOP_NAMES;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_ACTIVE_WINDOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WORKAREA;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_VIRTUAL_ROOTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_DESKTOP_LAYOUT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_SHOWING_DESKTOP;
+
+/* pager */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_CLOSE_WINDOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_MOVERESIZE_WINDOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_MOVERESIZE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_RESTACK_WINDOW;
+
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_VISIBLE_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_DESKTOP;
+
+/* window type */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
+
+/* state */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_MODAL;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_STICKY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_SHADED;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_ABOVE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_BELOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
+
+/* allowed actions */
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_MOVE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_RESIZE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_SHADE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_STICK;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ACTION_CLOSE;
+
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STRUT;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_STRUT_PARTIAL;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON_GEOMETRY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_ICON;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PID;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_HANDLED_ICONS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_USER_TIME;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_STARTUP_ID;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_FRAME_EXTENTS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_PING;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_OPACITY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_SHADOW;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_WM_WINDOW_SHADE;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_NET_STARTUP_INFO;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_TARGETS;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PRIMARY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_SECONDARY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_CLIPBOARD;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_PRIMARY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_SECONDARY;
+EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD;
+
+/* currenly E specific virtual keyboard extension, aim to submit to netwm spec
+ * later */
+
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
+EAPI extern Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
+
+#endif /* _ECORE_X_ATOMS_H */
diff --git a/src/lib/ecore_x/Ecore_X_Cursor.h b/src/lib/ecore_x/Ecore_X_Cursor.h
new file mode 100644 (file)
index 0000000..af2e97a
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ECORE_X_CURSOR_H
+#define _ECORE_X_CURSOR_H
+
+/**
+ * @file
+ * @brief Defines the various cursor types for the X Windows system.
+ */
+
+#define ECORE_X_CURSOR_X 0
+#define ECORE_X_CURSOR_ARROW 2
+#define ECORE_X_CURSOR_BASED_ARROW_DOWN 4
+#define ECORE_X_CURSOR_UP 6
+#define ECORE_X_CURSOR_BOAT 8
+#define ECORE_X_CURSOR_BOTTOM_LEFT_CORNER 12
+#define ECORE_X_CURSOR_BOTTOM_RIGHT_CORNER 14
+#define ECORE_X_CURSOR_BOTTOM_SIDE 16
+#define ECORE_X_CURSOR_BOTTOM_TEE 18
+#define ECORE_X_CURSOR_BOX_SPIRAL 20
+#define ECORE_X_CURSOR_CENTER_PTR 22
+#define ECORE_X_CURSOR_CIRCLE 24
+#define ECORE_X_CURSOR_CLOCK 26
+#define ECORE_X_CURSOR_COFFEE_MUG 28
+#define ECORE_X_CURSOR_CROSS 30
+#define ECORE_X_CURSOR_CROSS_REVERSE 32
+#define ECORE_X_CURSOR_CROSSHAIR 34
+#define ECORE_X_CURSOR_DIAMOND_CROSS 36
+#define ECORE_X_CURSOR_DOT 38
+#define ECORE_X_CURSOR_DOT_BOX_MASK 40
+#define ECORE_X_CURSOR_DOUBLE_ARROW 42
+#define ECORE_X_CURSOR_DRAFT_LARGE 44
+#define ECORE_X_CURSOR_DRAFT_SMALL 46
+#define ECORE_X_CURSOR_DRAPED_BOX 48
+#define ECORE_X_CURSOR_EXCHANGE 50
+#define ECORE_X_CURSOR_FLEUR 52
+#define ECORE_X_CURSOR_GOBBLER 54
+#define ECORE_X_CURSOR_GUMBY 56
+#define ECORE_X_CURSOR_HAND1 58
+#define ECORE_X_CURSOR_HAND2 60
+#define ECORE_X_CURSOR_HEART 62
+#define ECORE_X_CURSOR_ICON 64
+#define ECORE_X_CURSOR_IRON_CROSS 66
+#define ECORE_X_CURSOR_LEFT_PTR 68
+#define ECORE_X_CURSOR_LEFT_SIDE 70
+#define ECORE_X_CURSOR_LEFT_TEE 72
+#define ECORE_X_CURSOR_LEFTBUTTON 74
+#define ECORE_X_CURSOR_LL_ANGLE 76
+#define ECORE_X_CURSOR_LR_ANGLE 78
+#define ECORE_X_CURSOR_MAN 80
+#define ECORE_X_CURSOR_MIDDLEBUTTON 82
+#define ECORE_X_CURSOR_MOUSE 84
+#define ECORE_X_CURSOR_PENCIL 86
+#define ECORE_X_CURSOR_PIRATE 88
+#define ECORE_X_CURSOR_PLUS 90
+#define ECORE_X_CURSOR_QUESTION_ARROW 92
+#define ECORE_X_CURSOR_RIGHT_PTR 94
+#define ECORE_X_CURSOR_RIGHT_SIDE 96
+#define ECORE_X_CURSOR_RIGHT_TEE 98
+#define ECORE_X_CURSOR_RIGHTBUTTON 100
+#define ECORE_X_CURSOR_RTL_LOGO 102
+#define ECORE_X_CURSOR_SAILBOAT 104
+#define ECORE_X_CURSOR_SB_DOWN_ARROW 106
+#define ECORE_X_CURSOR_SB_H_DOUBLE_ARROW 108
+#define ECORE_X_CURSOR_SB_LEFT_ARROW 110
+#define ECORE_X_CURSOR_SB_RIGHT_ARROW 112
+#define ECORE_X_CURSOR_SB_UP_ARROW 114
+#define ECORE_X_CURSOR_SB_V_DOUBLE_ARROW 116
+#define ECORE_X_CURSOR_SHUTTLE 118
+#define ECORE_X_CURSOR_SIZING 120
+#define ECORE_X_CURSOR_SPIDER 122
+#define ECORE_X_CURSOR_SPRAYCAN 124
+#define ECORE_X_CURSOR_STAR 126
+#define ECORE_X_CURSOR_TARGET 128
+#define ECORE_X_CURSOR_TCROSS 130
+#define ECORE_X_CURSOR_TOP_LEFT_ARROW 132
+#define ECORE_X_CURSOR_TOP_LEFT_CORNER 134
+#define ECORE_X_CURSOR_TOP_RIGHT_CORNER 136
+#define ECORE_X_CURSOR_TOP_SIDE 138
+#define ECORE_X_CURSOR_TOP_TEE 140
+#define ECORE_X_CURSOR_TREK 142
+#define ECORE_X_CURSOR_UL_ANGLE 144
+#define ECORE_X_CURSOR_UMBRELLA 146
+#define ECORE_X_CURSOR_UR_ANGLE 148
+#define ECORE_X_CURSOR_WATCH 150
+#define ECORE_X_CURSOR_XTERM 152
+
+#endif
diff --git a/src/lib/ecore_x/Makefile.am b/src/lib/ecore_x/Makefile.am
new file mode 100644 (file)
index 0000000..9e6a8fd
--- /dev/null
@@ -0,0 +1,36 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_X
+
+SUBDIRS = xlib xcb
+
+if BUILD_ECORE_X_XCB
+DEP = xcb/libecore_x_xcb.la
+else
+DEP = xlib/libecore_x_xlib.la
+endif
+
+AM_CPPFLAGS = \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_txt \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_txt
+
+lib_LTLIBRARIES = libecore_x.la
+
+libecore_x_la_SOURCES =
+
+libecore_x_la_LIBADD = $(DEP)
+
+libecore_x_la_LDFLAGS = -version-info @version_info@
+
+libecore_x_la_DEPENDENCIES = $(DEP)
+
+include_HEADERS = \
+Ecore_X.h \
+Ecore_X_Atoms.h \
+Ecore_X_Cursor.h
+
+endif
+
+EXTRA_DIST = ecore_x_atoms_decl.h
diff --git a/src/lib/ecore_x/ecore_x_atoms_decl.h b/src/lib/ecore_x/ecore_x_atoms_decl.h
new file mode 100644 (file)
index 0000000..08e9b2f
--- /dev/null
@@ -0,0 +1,219 @@
+/* generic atoms */
+EAPI Ecore_X_Atom ECORE_X_ATOM_ATOM                     = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_CARDINAL                 = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT            = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_FILE_NAME                = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_STRING                   = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_TEXT                     = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_UTF8_STRING              = 0;
+EAPI Ecore_X_Atom ECORE_X_ATOM_WINDOW                   = 0;
+
+/* dnd atoms */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_PROP_XDND     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_XDND          = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_AWARE              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ENTER              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_TYPE_LIST          = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_POSITION           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_COPY        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_MOVE        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_PRIVATE     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_ASK         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_LIST        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_LINK        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_ACTION_DESCRIPTION = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_PROXY              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_STATUS             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_LEAVE              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_DROP               = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_XDND_FINISHED           = 0;
+
+/* dnd atoms that need to be exposed to the application interface */
+EAPI Ecore_X_Atom  ECORE_X_DND_ACTION_COPY              = 0;
+EAPI Ecore_X_Atom  ECORE_X_DND_ACTION_MOVE              = 0;
+EAPI Ecore_X_Atom  ECORE_X_DND_ACTION_LINK              = 0;
+EAPI Ecore_X_Atom  ECORE_X_DND_ACTION_ASK               = 0;
+EAPI Ecore_X_Atom  ECORE_X_DND_ACTION_PRIVATE           = 0;
+
+/* old E atom */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_FRAME_SIZE            = 0;
+
+/* old Gnome atom */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WIN_LAYER               = 0;
+
+/* ICCCM atoms */
+
+/* ICCCM: client properties */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_NAME                 = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_ICON_NAME            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_NORMAL_HINTS         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_SIZE_HINTS           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_HINTS                = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_CLASS                = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_TRANSIENT_FOR        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_PROTOCOLS            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_COLORMAP_WINDOWS     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_COMMAND              = 0; /* obsolete */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_CLIENT_MACHINE       = 0; /* obsolete */
+
+/* ICCCM: window manager properties */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_STATE                = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_ICON_SIZE            = 0;
+
+/* ICCCM: WM_STATE  property */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_CHANGE_STATE         = 0;
+
+/* ICCCM: WM_PROTOCOLS properties */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_TAKE_FOCUS           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_SAVE_YOURSELF        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_DELETE_WINDOW        = 0;
+
+/* ICCCM: WM_COLORMAP properties */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_COLORMAP_NOTIFY      = 0;
+
+/* ICCCM: session management properties */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SM_CLIENT_ID            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_CLIENT_LEADER        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_WM_WINDOW_ROLE          = 0;
+
+/* Motif WM atom */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_MOTIF_WM_HINTS          = 0;
+
+/* NetWM 1.3 atoms (http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html) */
+
+/*
+ * NetWM: Root Window Properties and related messages (complete)
+ */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_SUPPORTED                  = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_CLIENT_LIST                = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_CLIENT_LIST_STACKING       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_DESKTOP_GEOMETRY           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_DESKTOP_VIEWPORT           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_CURRENT_DESKTOP            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_DESKTOP_NAMES              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_ACTIVE_WINDOW              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WORKAREA                   = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_VIRTUAL_ROOTS              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_DESKTOP_LAYOUT             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_SHOWING_DESKTOP            = 0;
+
+/*
+ * NetWM: Other Root Window Messages (complete)
+ */
+
+/* pager */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_CLOSE_WINDOW               = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_MOVERESIZE_WINDOW          = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_MOVERESIZE              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_RESTACK_WINDOW             = 0;
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS      = 0;
+
+/*
+ * NetWM: Application Window Properties (complete)
+ */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_NAME                    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_VISIBLE_NAME            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ICON_NAME               = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_DESKTOP                 = 0;
+
+/* window type */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH      = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG      = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL      = 0;
+
+/* state */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE                   = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_MODAL             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_STICKY            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_SHADED            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR      = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_HIDDEN            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN        = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_ABOVE             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_BELOW             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION = 0;
+
+/* allowed actions */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_MOVE             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_RESIZE           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_SHADE            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_STICK            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP   = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ACTION_CLOSE            = 0;
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STRUT                   = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_STRUT_PARTIAL           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ICON_GEOMETRY           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_ICON                    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_PID                     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_HANDLED_ICONS           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_USER_TIME               = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_STARTUP_ID                 = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_FRAME_EXTENTS              = 0;
+
+/*
+ * NetWM: Window Manager Protocols (complete)
+ */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_PING                    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_SYNC_REQUEST            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER    = 0;
+
+/*
+ * NetWM: Not in the spec
+ */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_OPACITY          = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_SHADOW           = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_WM_WINDOW_SHADE            = 0;
+
+/*
+ * Startup Notification (http://standards.freedesktop.org/startup-notification-spec/startup-notification-0.1.txt)
+ */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_NET_STARTUP_INFO               = 0;
+
+/* selection atoms */
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_TARGETS              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_PRIMARY              = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_SECONDARY            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_CLIPBOARD            = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_PROP_PRIMARY         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_PROP_SECONDARY       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD       = 0;
+
+/* currenly E specific virtual keyboard extension, aim to submit to netwm spec
+ * later */
+
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD             = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON          = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA       = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC     = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER= 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX         = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL    = 0;
+EAPI Ecore_X_Atom  ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD    = 0;
diff --git a/src/lib/ecore_x/xcb/.cvsignore b/src/lib/ecore_x/xcb/.cvsignore
new file mode 100644 (file)
index 0000000..5fba3e8
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_x_xcb.la
diff --git a/src/lib/ecore_x/xcb/Makefile.am b/src/lib/ecore_x/xcb/Makefile.am
new file mode 100644 (file)
index 0000000..39dde65
--- /dev/null
@@ -0,0 +1,82 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_X_XCB
+
+AM_CPPFLAGS = \
+@XCB_DAMAGE_CFLAGS@ \
+@XCB_COMPOSITE_CFLAGS@ \
+@XCB_DPMS_CFLAGS@ \
+@XCB_RANDR_CFLAGS@ \
+@XCB_RENDER_CFLAGS@ \
+@XCB_SCREENSAVER_CFLAGS@ \
+@XCB_SHAPE_CFLAGS@ \
+@XCB_SYNC_CFLAGS@ \
+@XCB_XFIXES_CFLAGS@ \
+@XCB_XINERAMA_CFLAGS@ \
+@XCB_XPRINT_CFLAGS@ \
+@XCB_XTEST_CFLAGS@ \
+@XCB_CFLAGS@ \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_txt \
+-I$(top_srcdir)/src/lib/ecore_x \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_txt \
+-I$(top_builddir)/src/lib/ecore_x
+
+noinst_LTLIBRARIES      = libecore_x_xcb.la
+
+libecore_x_xcb_la_SOURCES  = \
+ecore_xcb_atom.c \
+ecore_xcb_cursor.c \
+ecore_xcb_damage.c \
+ecore_xcb_composite.c \
+ecore_xcb_dnd.c \
+ecore_xcb_dpms.c \
+ecore_xcb_drawable.c \
+ecore_xcb_e.c \
+ecore_xcb_events.c \
+ecore_xcb_fixes.c \
+ecore_xcb_gc.c \
+ecore_xcb_icccm.c \
+ecore_xcb_mwm.c \
+ecore_xcb_netwm.c \
+ecore_xcb_pixmap.c \
+ecore_xcb_randr.c \
+ecore_xcb_reply.c \
+ecore_xcb_screensaver.c \
+ecore_xcb_selection.c \
+ecore_xcb_shape.c \
+ecore_xcb_sync.c \
+ecore_xcb_window.c \
+ecore_xcb_window_prop.c \
+ecore_xcb_window_shadow.c \
+ecore_xcb_xinerama.c \
+ecore_xcb.c
+
+libecore_x_xcb_la_LIBADD = \
+@XCB_DAMAGE_LIBS@ \
+@XCB_COMPOSITE_LIBS@ \
+@XCB_DPMS_LIBS@ \
+@XCB_RANDR_LIBS@ \
+@XCB_RENDER_LIBS@ \
+@XCB_SCREENSAVER_LIBS@ \
+@XCB_SHAPE_LIBS@ \
+@XCB_SYNC_LIBS@ \
+@XCB_XFIXES_LIBS@ \
+@XCB_XINERAMA_LIBS@ \
+@XCB_XPRINT_LIBS@ \
+@XCB_XTEST_LIBS@ \
+@XCB_LIBS@ \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
+
+libecore_x_xcb_la_LDFLAGS = -version-info @version_info@
+
+libecore_x_xcb_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
+
+endif
+
+EXTRA_DIST = ecore_xcb_private.h
diff --git a/src/lib/ecore_x/xcb/ecore_xcb.c b/src/lib/ecore_x/xcb/ecore_xcb.c
new file mode 100644 (file)
index 0000000..9ccf5f7
--- /dev/null
@@ -0,0 +1,1841 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <X11/keysym.h>
+
+#include "Ecore.h"
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+static int _ecore_xcb_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_xcb_fd_handler_buf(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_xcb_key_mask_get(xcb_keysym_t sym);
+static void *_ecore_xcb_event_filter_start(void *data);
+static int   _ecore_xcb_event_filter_filter(void *data, void *loop_data,int type, void *event);
+static void  _ecore_xcb_event_filter_end(void *data, void *loop_data);
+
+static Ecore_Fd_Handler *_ecore_xcb_fd_handler_handle = NULL;
+static Ecore_Event_Filter *_ecore_xcb_filter_handler = NULL;
+
+#ifdef ECORE_XCB_DAMAGE
+static int _ecore_xcb_event_damage_id = 0;
+#endif /* ECORE_XCB_DAMAGE */
+#ifdef ECORE_XCB_RANDR
+static int _ecore_xcb_event_randr_id = 0;
+#endif /* ECORE_XCB_RANDR */
+#ifdef ECORE_XCB_SCREENSAVER
+static int _ecore_xcb_event_screensaver_id = 0;
+#endif /* ECORE_XCB_SCREENSAVER */
+#ifdef ECORE_XCB_SHAPE
+static int _ecore_xcb_event_shape_id = 0;
+#endif /* ECORE_XCB_SHAPE */
+#ifdef ECORE_XCB_SYNC
+static int _ecore_xcb_event_sync_id = 0;
+#endif /* ECORE_XCB_SYNC */
+#ifdef ECORE_XCB_FIXES
+static int _ecore_xcb_event_fixes_selection_id = 0;
+#endif /* ECORE_XCB_FIXES */
+
+static int _ecore_xcb_event_handlers_num = 0;
+static void (**_ecore_xcb_event_handlers) (xcb_generic_event_t * event) = NULL;
+static xcb_generic_event_t *_ecore_xcb_event_buffered = NULL;
+
+static int _ecore_xcb_init_count = 0;
+static int _ecore_xcb_grab_count = 0;
+
+Ecore_X_Connection *_ecore_xcb_conn = NULL;
+Ecore_X_Screen     *_ecore_xcb_screen = NULL;
+double              _ecore_xcb_double_click_time = 0.25;
+Ecore_X_Time        _ecore_xcb_event_last_time = XCB_NONE;
+Ecore_X_Window      _ecore_xcb_event_last_window = XCB_NONE;
+int16_t             _ecore_xcb_event_last_root_x = 0;
+int16_t             _ecore_xcb_event_last_root_y = 0;
+int                 _ecore_xcb_xcursor = 0;
+
+Ecore_X_Window      _ecore_xcb_private_window = 0;
+
+/* FIXME - These are duplicates after making ecore atoms public */
+
+Ecore_X_Atom        _ecore_xcb_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
+
+
+EAPI int ECORE_X_EVENT_KEY_DOWN                 = 0;
+EAPI int ECORE_X_EVENT_KEY_UP                   = 0;
+EAPI int ECORE_X_EVENT_MOUSE_BUTTON_DOWN        = 0;
+EAPI int ECORE_X_EVENT_MOUSE_BUTTON_UP          = 0;
+EAPI int ECORE_X_EVENT_MOUSE_MOVE               = 0;
+EAPI int ECORE_X_EVENT_MOUSE_IN                 = 0;
+EAPI int ECORE_X_EVENT_MOUSE_OUT                = 0;
+EAPI int ECORE_X_EVENT_MOUSE_WHEEL              = 0;
+EAPI int ECORE_X_EVENT_WINDOW_FOCUS_IN          = 0;
+EAPI int ECORE_X_EVENT_WINDOW_FOCUS_OUT         = 0;
+EAPI int ECORE_X_EVENT_WINDOW_KEYMAP            = 0;
+EAPI int ECORE_X_EVENT_WINDOW_DAMAGE            = 0;
+EAPI int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CREATE            = 0;
+EAPI int ECORE_X_EVENT_WINDOW_DESTROY           = 0;
+EAPI int ECORE_X_EVENT_WINDOW_HIDE              = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHOW              = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHOW_REQUEST      = 0;
+EAPI int ECORE_X_EVENT_WINDOW_REPARENT          = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE         = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_GRAVITY           = 0;
+EAPI int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST    = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STACK             = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STACK_REQUEST     = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROPERTY          = 0;
+EAPI int ECORE_X_EVENT_WINDOW_COLORMAP          = 0;
+EAPI int ECORE_X_EVENT_WINDOW_MAPPING           = 0;
+EAPI int ECORE_X_EVENT_SELECTION_CLEAR          = 0;
+EAPI int ECORE_X_EVENT_SELECTION_REQUEST        = 0;
+EAPI int ECORE_X_EVENT_SELECTION_NOTIFY         = 0;
+EAPI int ECORE_X_EVENT_CLIENT_MESSAGE           = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHAPE             = 0;
+EAPI int ECORE_X_EVENT_SCREENSAVER_NOTIFY       = 0;
+EAPI int ECORE_X_EVENT_SYNC_COUNTER             = 0;
+EAPI int ECORE_X_EVENT_SYNC_ALARM               = 0;
+EAPI int ECORE_X_EVENT_SCREEN_CHANGE            = 0;
+EAPI int ECORE_X_EVENT_DAMAGE_NOTIFY            = 0;
+
+EAPI int ECORE_X_EVENT_WINDOW_DELETE_REQUEST    = 0;
+/*
+EAPI int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE = 0;
+*/
+
+EAPI int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STATE_REQUEST       = 0;
+EAPI int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST      = 0;
+EAPI int ECORE_X_EVENT_PING                       = 0;
+EAPI int ECORE_X_EVENT_DESKTOP_CHANGE             = 0;
+
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW       = 0;
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE    = 0;
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE    = 0;
+
+EAPI int ECORE_X_MODIFIER_SHIFT                   = 0;
+EAPI int ECORE_X_MODIFIER_CTRL                    = 0;
+EAPI int ECORE_X_MODIFIER_ALT                     = 0;
+EAPI int ECORE_X_MODIFIER_WIN                     = 0;
+
+EAPI int ECORE_X_LOCK_SCROLL                      = 0;
+EAPI int ECORE_X_LOCK_NUM                         = 0;
+EAPI int ECORE_X_LOCK_CAPS                        = 0;
+
+/**
+ * @defgroup Ecore_Xcb_Init_Group X Library Init and Shutdown Functions
+ *
+ * Functions that start and shut down the Ecore X Library.
+ */
+
+/**
+ * Initialize the X display connection to the given display.
+ *
+ * @param   name Display target name.  If @c NULL, the default display is
+ *               assumed.
+ * @return  The number of times the library has been initialized without
+ *          being shut down.  0 is returned if an error occurs.
+ * @ingroup Ecore_Xcb_Init_Group
+ */
+EAPI int
+ecore_x_init(const char *name)
+{
+   xcb_screen_iterator_t              iter;
+   int                                screen;
+   uint32_t                           max_request_length;
+   const xcb_query_extension_reply_t *reply_big_requests;
+#ifdef ECORE_XCB_DAMAGE
+   const xcb_query_extension_reply_t *reply_damage;
+#endif /* ECORE_XCB_DAMAGE */
+#ifdef ECORE_XCB_COMPOSITE
+   const xcb_query_extension_reply_t *reply_composite;
+#endif /* ECORE_XCB_COMPOSITE */
+#ifdef ECORE_XCB_DPMS
+   const xcb_query_extension_reply_t *reply_dpms;
+#endif /* ECORE_XCB_DPMS */
+#ifdef ECORE_XCB_RANDR
+   const xcb_query_extension_reply_t *reply_randr;
+#endif /* ECORE_XCB_RANDR */
+#ifdef ECORE_XCB_SCREENSAVER
+   const xcb_query_extension_reply_t *reply_screensaver;
+#endif /* ECORE_XCB_SCREENSAVER */
+#ifdef ECORE_XCB_SHAPE
+   const xcb_query_extension_reply_t *reply_shape;
+#endif /* ECORE_XCB_SHAPE */
+#ifdef ECORE_XCB_SYNC
+   xcb_sync_initialize_cookie_t       cookie_sync_init;
+   xcb_sync_initialize_reply_t       *reply_sync_init;
+   const xcb_query_extension_reply_t *reply_sync;
+#endif /* ECORE_XCB_SYNC */
+#ifdef ECORE_XCB_FIXES
+   const xcb_query_extension_reply_t *reply_xfixes;
+#endif /* ECORE_XCB_FIXES */
+#ifdef ECORE_XCB_XINERAMA
+   const xcb_query_extension_reply_t *reply_xinerama;
+#endif /* ECORE_XCB_XINERAMA */
+#ifdef ECORE_XCB_XPRINT
+   const xcb_query_extension_reply_t *reply_xprint;
+#endif /* ECORE_XCB_XPRINT */
+
+   xcb_intern_atom_cookie_t           atom_cookies[ECORE_X_ATOMS_COUNT];
+
+   if (_ecore_xcb_init_count > 0)
+     {
+       _ecore_xcb_init_count++;
+       return _ecore_xcb_init_count;
+     }
+   _ecore_xcb_conn = xcb_connect(name, &screen);
+   if (!_ecore_xcb_conn) return 0;
+
+   /* FIXME: no error code right now */
+   /* _ecore_xcb_error_handler_init(); */
+
+   /********************/
+   /* First round trip */
+   /********************/
+
+   /*
+    * Non blocking stuff:
+    *
+    * 1. We request the atoms
+    * 2. We Prefetch the extension data
+    *
+    */
+
+
+   /* We request the atoms (non blocking) */
+   _ecore_x_atom_init(atom_cookies);
+
+   /* We prefetch all the extension data (non blocking) */
+
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_big_requests_id);
+
+#ifdef ECORE_XCB_DAMAGE
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_damage_id);
+#endif /* ECORE_XCB_DAMAGE */
+
+#ifdef ECORE_XCB_COMPOSITE
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_composite_id);
+#endif /* ECORE_XCB_COMPOSITE */
+
+#ifdef ECORE_XCB_DPMS
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_dpms_id);
+#endif /* ECORE_XCB_DPMS */
+
+#ifdef ECORE_XCB_RANDR
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_randr_id);
+#endif /* ECORE_XCB_RANDR */
+
+#ifdef ECORE_XCB_SCREENSAVER
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_screensaver_id);
+#endif /* ECORE_XCB_SCREENSAVER */
+
+#ifdef ECORE_XCB_SHAPE
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_shape_id);
+#endif /* ECORE_XCB_SHAPE */
+
+#ifdef ECORE_XCB_SYNC
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_sync_id);
+   cookie_sync_init = xcb_sync_initialize_unchecked(_ecore_xcb_conn,
+                                                    XCB_SYNC_MAJOR_VERSION,
+                                                    XCB_SYNC_MINOR_VERSION);
+#endif /* ECORE_XCB_SYNC */
+
+#ifdef ECORE_XCB_FIXES
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_xfixes_id);
+#endif /* ECORE_XCB_FIXES */
+
+#ifdef ECORE_XCB_XINERAMA
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_xinerama_id);
+#endif /* ECORE_XCB_XINERAMA */
+
+#ifdef ECORE_XCB_XPRINT
+   xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_x_print_id);
+#endif /* ECORE_XCB_XPRINT */
+
+   /* We init some components (not related to XCB) */
+   _ecore_x_reply_init();
+   _ecore_x_dnd_init();
+   ecore_x_netwm_init();
+   _ecore_x_selection_init();
+
+   /* There is no LASTEvent constant in XCB */
+   /* LASTevent is equal to 35 */
+   _ecore_xcb_event_handlers_num = 35;
+
+   /* We get the default screen */
+   iter = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn));
+   for (; iter.rem; --screen, xcb_screen_next (&iter))
+     if (screen == 0)
+       {
+          _ecore_xcb_screen = iter.data;
+          break;
+       }
+
+   /*
+    * Blocking stuff:
+    *
+    * 1. We get the atoms
+    * 2. We ask for the extension data
+    *
+    */
+
+   /* We get the atoms (blocking) */
+   _ecore_x_atom_init_finalize(atom_cookies);
+
+   /* We then ask for the extension data (blocking) */
+   reply_big_requests = xcb_get_extension_data(_ecore_xcb_conn, &xcb_big_requests_id);
+
+#ifdef ECORE_XCB_DAMAGE
+   reply_damage = xcb_get_extension_data(_ecore_xcb_conn, &xcb_damage_id);
+   if (reply_damage)
+     _ecore_xcb_event_damage_id = reply_damage->first_event + XCB_DAMAGE_NOTIFY;
+   if (_ecore_xcb_event_damage_id >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_damage_id + 1;
+#endif /* ECORE_XCB_DAMAGE */
+
+#ifdef ECORE_XCB_COMPOSITE
+   reply_composite = xcb_get_extension_data(_ecore_xcb_conn, &xcb_composite_id);
+#endif /* ECORE_XCB_COMPOSITE */
+
+#ifdef ECORE_XCB_DPMS
+   reply_dpms = xcb_get_extension_data(_ecore_xcb_conn, &xcb_dpms_id);
+#endif /* ECORE_XCB_DPMS */
+
+#ifdef ECORE_XCB_RANDR
+   reply_randr = xcb_get_extension_data(_ecore_xcb_conn, &xcb_randr_id);
+   if (reply_randr)
+     _ecore_xcb_event_randr_id = reply_randr->first_event + XCB_RANDR_SCREEN_CHANGE_NOTIFY;
+   if (_ecore_xcb_event_randr_id >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_randr_id + 1;
+#endif /* ECORE_XCB_RANDR */
+
+#ifdef ECORE_XCB_SCREENSAVER
+   reply_screensaver = xcb_get_extension_data(_ecore_xcb_conn, &xcb_screensaver_id);
+   if (reply_screensaver)
+     _ecore_xcb_event_screensaver_id = reply_screensaver->first_event + XCB_SCREENSAVER_NOTIFY;
+   if (_ecore_xcb_event_screensaver_id >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_screensaver_id + 1;
+#endif /* ECORE_XCB_SCREENSAVER */
+
+#ifdef ECORE_XCB_SHAPE
+   reply_shape = xcb_get_extension_data(_ecore_xcb_conn, &xcb_shape_id);
+   if (reply_shape)
+     _ecore_xcb_event_shape_id = reply_shape->first_event + XCB_SHAPE_NOTIFY;
+   if (_ecore_xcb_event_shape_id >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_shape_id + 1;
+#endif /* ECORE_XCB_SHAPE */
+
+#ifdef ECORE_XCB_SYNC
+   reply_sync = xcb_get_extension_data(_ecore_xcb_conn, &xcb_sync_id);
+   if (reply_sync)
+     {
+       _ecore_xcb_event_sync_id = reply_sync->first_event;
+        reply_sync_init = xcb_sync_initialize_reply(_ecore_xcb_conn,
+                                                    cookie_sync_init, NULL);
+       if (!reply_sync_init)
+         _ecore_xcb_event_sync_id = 0;
+        else
+          free(reply_sync_init);
+     }
+   if (_ecore_xcb_event_sync_id + XCB_SYNC_ALARM_NOTIFY >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_sync_id + XCB_SYNC_ALARM_NOTIFY + 1;
+#endif /* ECORE_XCB_SYNC */
+
+#ifdef ECORE_XCB_FIXES
+   reply_xfixes = xcb_get_extension_data(_ecore_xcb_conn, &xcb_xfixes_id);
+   if (reply_xfixes)
+     _ecore_xcb_event_fixes_selection_id = reply_xfixes->first_event + XCB_XFIXES_SELECTION_NOTIFY;
+   if (_ecore_xcb_event_fixes_selection_id >= _ecore_xcb_event_handlers_num)
+     _ecore_xcb_event_handlers_num = _ecore_xcb_event_fixes_selection_id + 1;
+#endif /* ECORE_XCB_FIXES */
+
+#ifdef ECORE_XCB_XINERAMA
+   reply_xinerama = xcb_get_extension_data(_ecore_xcb_conn, &xcb_xinerama_id);
+#endif /* ECORE_XCB_XINERAMA */
+
+#ifdef ECORE_XCB_XPRINT
+   reply_xprint = xcb_get_extension_data(_ecore_xcb_conn, &xcb_x_print_id);
+#endif /* ECORE_XCB_XPRINT */
+
+   /*********************/
+   /* Second round trip */
+   /*********************/
+
+   /* We ask for the QueryVersion request of the extensions */
+   _ecore_x_damage_init(reply_damage);
+   _ecore_x_composite_init(reply_composite);
+   _ecore_x_dpms_init(reply_dpms);
+   _ecore_x_randr_init(reply_randr);
+   _ecore_x_shape_init(reply_shape);
+   _ecore_x_sync_init(reply_sync);
+   _ecore_x_xfixes_init(reply_xfixes);
+   _ecore_x_xinerama_init(reply_xinerama);
+
+   /* we enable the Big Request extension if present */
+   max_request_length = xcb_get_maximum_request_length(_ecore_xcb_conn);
+
+   _ecore_xcb_event_handlers = calloc(_ecore_xcb_event_handlers_num, sizeof(void *));
+   if (!_ecore_xcb_event_handlers)
+     {
+        /* We get the replies of the QueryVersion request because we leave */
+        _ecore_x_damage_init_finalize();
+        _ecore_x_composite_init_finalize();
+        _ecore_x_dpms_init_finalize();
+        _ecore_x_randr_init_finalize();
+        _ecore_x_shape_init_finalize();
+        _ecore_x_sync_init_finalize();
+        _ecore_x_xfixes_init_finalize();
+        _ecore_x_xinerama_init_finalize();
+
+        xcb_disconnect(_ecore_xcb_conn);
+       _ecore_xcb_fd_handler_handle = NULL;
+       _ecore_xcb_conn = NULL;
+       return 0;
+     }
+
+#ifdef ECORE_XCB_CURSOR
+   _ecore_xcb_xcursor = XcursorSupportsARGB(_ecore_xcb_conn);
+#endif /* ECORE_XCB_CURSOR */
+
+   _ecore_xcb_event_handlers[XCB_KEY_PRESS]         = _ecore_x_event_handle_key_press;
+   _ecore_xcb_event_handlers[XCB_KEY_RELEASE]       = _ecore_x_event_handle_key_release;
+   _ecore_xcb_event_handlers[XCB_BUTTON_PRESS]      = _ecore_x_event_handle_button_press;
+   _ecore_xcb_event_handlers[XCB_BUTTON_RELEASE]    = _ecore_x_event_handle_button_release;
+   _ecore_xcb_event_handlers[XCB_MOTION_NOTIFY]     = _ecore_x_event_handle_motion_notify;
+   _ecore_xcb_event_handlers[XCB_ENTER_NOTIFY]      = _ecore_x_event_handle_enter_notify;
+   _ecore_xcb_event_handlers[XCB_LEAVE_NOTIFY]      = _ecore_x_event_handle_leave_notify;
+   _ecore_xcb_event_handlers[XCB_FOCUS_IN]          = _ecore_x_event_handle_focus_in;
+   _ecore_xcb_event_handlers[XCB_FOCUS_OUT]         = _ecore_x_event_handle_focus_out;
+   _ecore_xcb_event_handlers[XCB_KEYMAP_NOTIFY]     = _ecore_x_event_handle_keymap_notify;
+   _ecore_xcb_event_handlers[XCB_EXPOSE]            = _ecore_x_event_handle_expose;
+   _ecore_xcb_event_handlers[XCB_GRAPHICS_EXPOSURE] = _ecore_x_event_handle_graphics_expose;
+   _ecore_xcb_event_handlers[XCB_VISIBILITY_NOTIFY] = _ecore_x_event_handle_visibility_notify;
+   _ecore_xcb_event_handlers[XCB_CREATE_NOTIFY]     = _ecore_x_event_handle_create_notify;
+   _ecore_xcb_event_handlers[XCB_DESTROY_NOTIFY]    = _ecore_x_event_handle_destroy_notify;
+   _ecore_xcb_event_handlers[XCB_UNMAP_NOTIFY]      = _ecore_x_event_handle_unmap_notify;
+   _ecore_xcb_event_handlers[XCB_MAP_NOTIFY]        = _ecore_x_event_handle_map_notify;
+   _ecore_xcb_event_handlers[XCB_MAP_REQUEST]       = _ecore_x_event_handle_map_request;
+   _ecore_xcb_event_handlers[XCB_REPARENT_NOTIFY]   = _ecore_x_event_handle_reparent_notify;
+   _ecore_xcb_event_handlers[XCB_CONFIGURE_NOTIFY]  = _ecore_x_event_handle_configure_notify;
+   _ecore_xcb_event_handlers[XCB_CONFIGURE_REQUEST] = _ecore_x_event_handle_configure_request;
+   _ecore_xcb_event_handlers[XCB_GRAVITY_NOTIFY]    = _ecore_x_event_handle_gravity_notify;
+   _ecore_xcb_event_handlers[XCB_RESIZE_REQUEST]    = _ecore_x_event_handle_resize_request;
+   _ecore_xcb_event_handlers[XCB_CIRCULATE_NOTIFY]  = _ecore_x_event_handle_circulate_notify;
+   _ecore_xcb_event_handlers[XCB_CIRCULATE_REQUEST] = _ecore_x_event_handle_circulate_request;
+   _ecore_xcb_event_handlers[XCB_PROPERTY_NOTIFY]   = _ecore_x_event_handle_property_notify;
+   _ecore_xcb_event_handlers[XCB_SELECTION_CLEAR]   = _ecore_x_event_handle_selection_clear;
+   _ecore_xcb_event_handlers[XCB_SELECTION_REQUEST] = _ecore_x_event_handle_selection_request;
+   _ecore_xcb_event_handlers[XCB_SELECTION_NOTIFY]  = _ecore_x_event_handle_selection_notify;
+   _ecore_xcb_event_handlers[XCB_COLORMAP_NOTIFY]   = _ecore_x_event_handle_colormap_notify;
+   _ecore_xcb_event_handlers[XCB_CLIENT_MESSAGE]    = _ecore_x_event_handle_client_message;
+   _ecore_xcb_event_handlers[XCB_MAPPING_NOTIFY]    = _ecore_x_event_handle_mapping_notify;
+#ifdef ECORE_XCB_DAMAGE
+   if (_ecore_xcb_event_damage_id)
+     _ecore_xcb_event_handlers[_ecore_xcb_event_damage_id] = _ecore_x_event_handle_damage_notify;
+#endif /* ECORE_XCB_DAMAGE */
+#ifdef ECORE_XCB_RANDR
+   if (_ecore_xcb_event_randr_id)
+     _ecore_xcb_event_handlers[_ecore_xcb_event_randr_id] = _ecore_x_event_handle_randr_change;
+#endif /* ECORE_XCB_RANDR */
+#ifdef ECORE_XCB_SCREENSAVER
+   if (_ecore_xcb_event_screensaver_id)
+     _ecore_xcb_event_handlers[_ecore_xcb_event_screensaver_id] = _ecore_x_event_handle_screensaver_notify;
+#endif /* ECORE_XCB_SCREENSAVER */
+#ifdef ECORE_XCB_SHAPE
+   if (_ecore_xcb_event_shape_id)
+     _ecore_xcb_event_handlers[_ecore_xcb_event_shape_id] = _ecore_x_event_handle_shape_change;
+#endif /* ECORE_XCB_SHAPE */
+#ifdef ECORE_XCB_SYNC
+   if (_ecore_xcb_event_sync_id)
+     {
+       _ecore_xcb_event_handlers[_ecore_xcb_event_sync_id + XCB_SYNC_COUNTER_NOTIFY] =
+          _ecore_x_event_handle_sync_counter;
+       _ecore_xcb_event_handlers[_ecore_xcb_event_sync_id + XCB_SYNC_ALARM_NOTIFY] =
+          _ecore_x_event_handle_sync_alarm;
+     }
+#endif /* ECORE_XCB_SYNC */
+#ifdef ECORE_XCB_FIXES
+   if (_ecore_xcb_event_fixes_selection_id)
+     _ecore_xcb_event_handlers[_ecore_xcb_event_fixes_selection_id] = _ecore_x_event_handle_fixes_selection_notify;
+#endif /* ECORE_XCB_FIXES */
+
+   if (!ECORE_X_EVENT_KEY_DOWN)
+     {
+       ECORE_X_EVENT_KEY_DOWN                 = ecore_event_type_new();
+       ECORE_X_EVENT_KEY_UP                   = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_BUTTON_DOWN        = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_BUTTON_UP          = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_MOVE               = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_IN                 = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_OUT                = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_WHEEL              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_FOCUS_IN          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_FOCUS_OUT         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_KEYMAP            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_DAMAGE            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CREATE            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_DESTROY           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_HIDE              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHOW              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHOW_REQUEST      = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_REPARENT          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CONFIGURE         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_GRAVITY           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_RESIZE_REQUEST    = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STACK             = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STACK_REQUEST     = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROPERTY          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_COLORMAP          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_MAPPING           = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_CLEAR          = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_REQUEST        = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_NOTIFY         = ecore_event_type_new();
+       ECORE_X_EVENT_CLIENT_MESSAGE           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHAPE             = ecore_event_type_new();
+       ECORE_X_EVENT_SCREENSAVER_NOTIFY       = ecore_event_type_new();
+       ECORE_X_EVENT_SYNC_COUNTER             = ecore_event_type_new();
+       ECORE_X_EVENT_SYNC_ALARM               = ecore_event_type_new();
+       ECORE_X_EVENT_SCREEN_CHANGE            = ecore_event_type_new();
+       ECORE_X_EVENT_DAMAGE_NOTIFY            = ecore_event_type_new();
+
+       ECORE_X_EVENT_WINDOW_DELETE_REQUEST                = ecore_event_type_new();
+       /*
+       ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE             = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE     = ecore_event_type_new();
+        ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE        = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE    = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE               = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE           = ecore_event_type_new();
+       */
+
+       ECORE_X_EVENT_DESKTOP_CHANGE             = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STATE_REQUEST       = ecore_event_type_new();
+       ECORE_X_EVENT_FRAME_EXTENTS_REQUEST      = ecore_event_type_new();
+       ECORE_X_EVENT_PING                       = ecore_event_type_new();
+
+       ECORE_X_EVENT_STARTUP_SEQUENCE_NEW       = ecore_event_type_new();
+       ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE    = ecore_event_type_new();
+       ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE    = ecore_event_type_new();
+     }
+
+   /* everything has these... unless its like a pda... :) */
+   ECORE_X_MODIFIER_SHIFT = _ecore_xcb_key_mask_get(XK_Shift_L);
+   ECORE_X_MODIFIER_CTRL  = _ecore_xcb_key_mask_get(XK_Control_L);
+
+   /* apple's xdarwin has no alt!!!! */
+   ECORE_X_MODIFIER_ALT   = _ecore_xcb_key_mask_get(XK_Alt_L);
+   if (!ECORE_X_MODIFIER_ALT)
+     ECORE_X_MODIFIER_ALT = _ecore_xcb_key_mask_get(XK_Meta_L);
+   if (!ECORE_X_MODIFIER_ALT)
+     ECORE_X_MODIFIER_ALT = _ecore_xcb_key_mask_get(XK_Super_L);
+
+   /* the windows key... a valid modifier :) */
+   ECORE_X_MODIFIER_WIN   = _ecore_xcb_key_mask_get(XK_Super_L);
+   if (!ECORE_X_MODIFIER_WIN)
+     ECORE_X_MODIFIER_WIN = _ecore_xcb_key_mask_get(XK_Mode_switch);
+   if (!ECORE_X_MODIFIER_WIN)
+     ECORE_X_MODIFIER_WIN = _ecore_xcb_key_mask_get(XK_Meta_L);
+
+   if (ECORE_X_MODIFIER_WIN == ECORE_X_MODIFIER_ALT)
+     ECORE_X_MODIFIER_WIN = 0;
+   if (ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_CTRL)
+     ECORE_X_MODIFIER_ALT = 0;
+
+   ECORE_X_LOCK_SCROLL    = _ecore_xcb_key_mask_get(XK_Scroll_Lock);
+   ECORE_X_LOCK_NUM       = _ecore_xcb_key_mask_get(XK_Num_Lock);
+   ECORE_X_LOCK_CAPS      = _ecore_xcb_key_mask_get(XK_Caps_Lock);
+
+   _ecore_xcb_fd_handler_handle =
+     ecore_main_fd_handler_add(xcb_get_file_descriptor(_ecore_xcb_conn),
+                              ECORE_FD_READ,
+                              _ecore_xcb_fd_handler, _ecore_xcb_conn,
+                              _ecore_xcb_fd_handler_buf, _ecore_xcb_conn);
+   if (!_ecore_xcb_fd_handler_handle)
+     {
+        /* We get the replies of the QueryVersion request because we leave */
+        _ecore_x_damage_init_finalize();
+        _ecore_x_composite_init_finalize();
+        _ecore_x_dpms_init_finalize();
+        _ecore_x_randr_init_finalize();
+        _ecore_x_shape_init_finalize();
+        _ecore_x_sync_init_finalize();
+        _ecore_x_xfixes_init_finalize();
+        _ecore_x_xinerama_init_finalize();
+
+       xcb_disconnect(_ecore_xcb_conn);
+       free(_ecore_xcb_event_handlers);
+       _ecore_xcb_fd_handler_handle = NULL;
+       _ecore_xcb_conn = NULL;
+       _ecore_xcb_event_handlers = NULL;
+       return 0;
+     }
+   _ecore_xcb_filter_handler = ecore_event_filter_add(_ecore_xcb_event_filter_start, _ecore_xcb_event_filter_filter, _ecore_xcb_event_filter_end, NULL);
+
+   /* This is just to be anal about naming conventions */
+
+   _ecore_xcb_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = ECORE_X_ATOM_WM_DELETE_WINDOW;
+   _ecore_xcb_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = ECORE_X_ATOM_WM_TAKE_FOCUS;
+   _ecore_xcb_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_PING] = ECORE_X_ATOM_NET_WM_PING;
+   _ecore_xcb_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+
+   _ecore_xcb_init_count++;
+
+   _ecore_xcb_private_window = ecore_x_window_override_new(0, -77, -777, 123, 456);
+
+   /* We finally get the replies of the QueryVersion request */
+   _ecore_x_damage_init_finalize();
+   _ecore_x_composite_init_finalize();
+   _ecore_x_dpms_init_finalize();
+   _ecore_x_randr_init_finalize();
+   _ecore_x_shape_init_finalize();
+   _ecore_x_sync_init_finalize();
+   _ecore_x_xfixes_init_finalize();
+   _ecore_x_xinerama_init_finalize();
+
+   return _ecore_xcb_init_count;
+}
+
+static int
+_ecore_x_shutdown(int close_display)
+{
+   _ecore_xcb_init_count--;
+   if (_ecore_xcb_init_count > 0) return _ecore_xcb_init_count;
+   if (!_ecore_xcb_conn) return _ecore_xcb_init_count;
+   if (close_display)
+      xcb_disconnect(_ecore_xcb_conn);
+   else
+      close(xcb_get_file_descriptor(_ecore_xcb_conn));
+   free(_ecore_xcb_event_handlers);
+   ecore_main_fd_handler_del(_ecore_xcb_fd_handler_handle);
+   ecore_event_filter_del(_ecore_xcb_filter_handler);
+   _ecore_xcb_fd_handler_handle = NULL;
+   _ecore_xcb_filter_handler = NULL;
+   _ecore_xcb_conn = NULL;
+   _ecore_xcb_event_handlers = NULL;
+   _ecore_x_selection_shutdown();
+   _ecore_x_dnd_shutdown();
+   ecore_x_netwm_shutdown();
+   _ecore_x_reply_shutdown();
+   if (_ecore_xcb_init_count < 0) _ecore_xcb_init_count = 0;
+   return _ecore_xcb_init_count;
+}
+
+/**
+ * Shuts down the Ecore X library.
+ *
+ * In shutting down the library, the X display connection is terminated
+ * and any event handlers for it are removed.
+ *
+ * @return  The number of times the library has been initialized without
+ *          being shut down.
+ * @ingroup Ecore_Xcb_Init_Group
+ */
+EAPI int
+ecore_x_shutdown(void)
+{
+   return _ecore_x_shutdown(1);
+}
+
+/**
+ * Shuts down the Ecore X library.
+ *
+ * As ecore_xcb_shutdown, except do not close Display, only connection.
+ *
+ * @ingroup Ecore_Xcb_Init_Group
+ */
+EAPI int
+ecore_x_disconnect(void)
+{
+   return _ecore_x_shutdown(0);
+}
+
+/**
+ * @defgroup Ecore_Xcb_Display_Attr_Group X Display Attributes
+ *
+ * Functions that set and retrieve X display attributes.
+ */
+
+EAPI Ecore_X_Display *
+ecore_x_display_get(void)
+{
+   return NULL;
+}
+
+/**
+ * Retrieves the Ecore_X_Connection handle used for the current X connection.
+ * @return  The current X connection.
+ * @ingroup Ecore_Xcb_Display_Attr_Group
+ */
+EAPI Ecore_X_Connection *
+ecore_x_connection_get(void)
+{
+   return (Ecore_X_Connection *)_ecore_xcb_conn;
+}
+
+/**
+ * Retrieves the X display file descriptor.
+ * @return  The current X display file descriptor.
+ * @ingroup Ecore_Xcb_Display_Attr_Group
+ */
+EAPI int
+ecore_x_fd_get(void)
+{
+   return xcb_get_file_descriptor(_ecore_xcb_conn);
+}
+
+/**
+ * Retrieves the Ecore_X_Screen handle used for the current X connection.
+ * @return  The current default screen.
+ * @ingroup Ecore_Xcb_Display_Attr_Group
+ */
+EAPI Ecore_X_Screen *
+ecore_x_default_screen_get(void)
+{
+   return (Ecore_X_Screen *)_ecore_xcb_screen;
+}
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ *
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param   t The time in seconds
+ * @ingroup Ecore_Xcb_Display_Attr_Group
+ */
+EAPI void
+ecore_x_double_click_time_set(double t)
+{
+   if (t < 0.0) t = 0.0;
+   _ecore_xcb_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_xcb_double_click_time_set for more information.
+ *
+ * @return  The timeout for double clicks in seconds.
+ * @ingroup Ecore_Xcb_Display_Attr_Group
+ */
+EAPI double
+ecore_x_double_click_time_get(void)
+{
+   return _ecore_xcb_double_click_time;
+}
+
+/**
+ * @defgroup Ecore_Xcb_Flush_Group X Synchronization Functions
+ *
+ * Functions that ensure that all commands that have been issued by the
+ * Ecore X library have been sent to the server.
+ */
+
+/**
+ * Sends all X commands in the X Display buffer.
+ * @ingroup Ecore_Xcb_Flush_Group
+ */
+EAPI void
+ecore_x_flush(void)
+{
+   xcb_flush(_ecore_xcb_conn);
+}
+
+/**
+ * Flushes the command buffer and waits until all requests have been
+ * processed by the server.
+ * @ingroup Ecore_Xcb_Flush_Group
+ */
+EAPI void
+ecore_x_sync(void)
+{
+   free(xcb_get_input_focus_reply(_ecore_xcb_conn, xcb_get_input_focus(_ecore_xcb_conn), NULL));
+}
+
+/**
+ * Kill all clients with subwindows under a given window.
+ *
+ * You can kill all clients connected to the X server by using
+ * @ref ecore_x_window_root_list to get a list of root windows, and
+ * then passing each root window to this function.
+ *
+ * @param root The window whose children will be killed.
+ */
+EAPI void
+ecore_x_killall(Ecore_X_Window root)
+{
+   int screens;
+   int i;
+
+   xcb_grab_server(_ecore_xcb_conn);
+   screens = xcb_setup_roots_iterator (xcb_get_setup (_ecore_xcb_conn)).rem;
+
+   /* Tranverse window tree starting from root, and drag each
+    * before the firing squad */
+   for (i = 0; i < screens; ++i)
+     {
+        xcb_query_tree_cookie_t cookie;
+        xcb_query_tree_reply_t *reply;
+
+        cookie = xcb_query_tree_unchecked(_ecore_xcb_conn, root);
+        reply = xcb_query_tree_reply(_ecore_xcb_conn, cookie, NULL);
+        if (reply)
+          {
+            xcb_window_iterator_t iter;
+
+            iter = xcb_query_tree_children_iterator(reply);
+            for (; iter.rem; xcb_window_next(&iter))
+               xcb_kill_client(_ecore_xcb_conn, *iter.data);
+            free(reply);
+          }
+     }
+
+   xcb_ungrab_server(_ecore_xcb_conn);
+   free(xcb_get_input_focus_reply(_ecore_xcb_conn, xcb_get_input_focus(_ecore_xcb_conn), NULL));
+}
+
+/**
+ * Kill a specific client
+ *
+ * You can kill a specific client woning window @p window
+ *
+ * @param window Window of the client to be killed
+ */
+EAPI void
+ecore_x_kill(Ecore_X_Window window)
+{
+   xcb_kill_client(_ecore_xcb_conn, window);
+}
+
+/**
+ * Return the last event time
+ */
+EAPI Ecore_X_Time
+ecore_x_current_time_get(void)
+{
+   return _ecore_xcb_event_last_time;
+}
+
+static void
+handle_event(xcb_generic_event_t *ev)
+{
+   uint8_t response_type = ev->response_type & ~0x80;
+
+   if (response_type < _ecore_xcb_event_handlers_num)
+     {
+       if (_ecore_xcb_event_handlers[response_type])
+         _ecore_xcb_event_handlers[response_type] (ev);
+     }
+}
+
+static int
+_ecore_xcb_fd_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   xcb_connection_t    *c;
+   xcb_generic_event_t *ev;
+
+   c = (xcb_connection_t *)data;
+
+/*    printf ("nbr events: %d\n", _ecore_xcb_event_handlers_num); */
+
+   /* We check if _ecore_xcb_event_buffered is NULL or not */
+   if (_ecore_xcb_event_buffered)
+     handle_event(_ecore_xcb_event_buffered);
+
+   while ((ev = xcb_poll_for_event(c)))
+     handle_event(ev);
+
+   return 1;
+}
+
+static int
+_ecore_xcb_fd_handler_buf(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   xcb_connection_t *c;
+
+   c = (xcb_connection_t *)data;
+
+   _ecore_xcb_event_buffered = xcb_poll_for_event(c);
+   if (!_ecore_xcb_event_buffered)
+     return 0;
+
+   return 1;
+}
+
+/* FIXME: possible roundtrip */
+/* FIXME: fix xcb_keysyms. It's ugly !! (reply in xcb_key_symbols_get_keysym) */
+static int
+_ecore_xcb_key_mask_get(xcb_keysym_t sym)
+{
+   xcb_keycode_iterator_t            iter;
+   xcb_get_modifier_mapping_cookie_t cookie;
+   xcb_get_modifier_mapping_reply_t *reply;
+   xcb_key_symbols_t                *symbols;
+   xcb_keysym_t                      sym2;
+   int                               i, j;
+   const int                         masks[8] =
+     {
+        XCB_MOD_MASK_SHIFT,
+        XCB_MOD_MASK_LOCK,
+        XCB_MOD_MASK_CONTROL,
+        XCB_MOD_MASK_1,
+        XCB_MOD_MASK_2,
+        XCB_MOD_MASK_3,
+        XCB_MOD_MASK_4,
+        XCB_MOD_MASK_5
+     };
+
+   cookie = xcb_get_modifier_mapping_unchecked(_ecore_xcb_conn);
+   symbols = xcb_key_symbols_alloc(_ecore_xcb_conn);
+
+   reply = xcb_get_modifier_mapping_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply)
+     {
+        xcb_key_symbols_free(symbols);
+
+        return 0;
+     }
+
+   iter = xcb_get_modifier_mapping_keycodes_iterator(reply);
+
+   for (i = 0; iter.rem; xcb_keycode_next(&iter), i++)
+     {
+       for (j = 0; j < 8; j++)
+         {
+            sym2 = xcb_key_symbols_get_keysym(symbols, *iter.data, j);
+            if (sym2 != 0) break;
+         }
+       if (sym2 == sym)
+         {
+            int mask;
+
+            mask = masks[i];
+            free(reply);
+            xcb_key_symbols_free(symbols);
+            return mask;
+         }
+     }
+
+   free(reply);
+   xcb_key_symbols_free(symbols);
+
+  return 0;
+}
+
+typedef struct _Ecore_X_Filter_Data Ecore_X_Filter_Data;
+
+struct _Ecore_X_Filter_Data
+{
+   int last_event_type;
+};
+
+static void *
+_ecore_xcb_event_filter_start(void *data __UNUSED__)
+{
+   Ecore_X_Filter_Data *filter_data;
+
+   filter_data = calloc(1, sizeof(Ecore_X_Filter_Data));
+   return filter_data;
+}
+
+static int
+_ecore_xcb_event_filter_filter(void *data __UNUSED__, void *loop_data,int type, void *event __UNUSED__)
+{
+   Ecore_X_Filter_Data *filter_data;
+
+   filter_data = loop_data;
+   if (!filter_data) return 1;
+   if (type == ECORE_X_EVENT_MOUSE_MOVE)
+     {
+       if ((filter_data->last_event_type) == ECORE_X_EVENT_MOUSE_MOVE)
+         {
+            filter_data->last_event_type = type;
+            return 0;
+         }
+     }
+   filter_data->last_event_type = type;
+   return 1;
+}
+
+static void
+_ecore_xcb_event_filter_end(void *data __UNUSED__, void *loop_data)
+{
+   Ecore_X_Filter_Data *filter_data;
+
+   filter_data = loop_data;
+   if (filter_data) free(filter_data);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+/* FIXME: these funcs need categorising */
+/*****************************************************************************/
+
+
+
+
+/**
+ * Get a list of all the root windows on the server.
+ *
+ * @note   The returned array will need to be freed after use.
+ * @param  num_ret Pointer to integer to put number of windows returned in.
+ * @return An array of all the root windows.  @c NULL is returned if memory
+ *         could not be allocated for the list, or if @p num_ret is @c NULL.
+ */
+EAPI Ecore_X_Window *
+ecore_x_window_root_list(int *num_ret)
+{
+   xcb_screen_iterator_t iter;
+   const xcb_setup_t    *setup;
+   uint8_t               i;
+   uint8_t               num;
+   Ecore_X_Window     *roots;
+/* #ifdef ECORE_XCBXPRINT */
+/*    int xp_base, xp_err_base; */
+/* #endif /\* ECORE_XCBXPRINT *\/ */
+
+   if (!num_ret) return NULL;
+   *num_ret = 0;
+
+   /* FIXME: todo... */
+/* #ifdef ECORE_XCBXPRINT */
+/*    num = ScreenCount(_ecore_xcb_conn); */
+/*    if (ecore_xcb_xprint_query()) */
+/*      { */
+/*     Screen **ps = NULL; */
+/*     int psnum = 0; */
+
+/*     ps = XpQueryScreens(_ecore_xcb_conn, &psnum); */
+/*     if (ps) */
+/*       { */
+/*          int overlap, j; */
+
+/*          overlap = 0; */
+/*          for (i = 0; i < num; i++) */
+/*            { */
+/*               for (j = 0; j < psnum; j++) */
+/*                 { */
+/*                    if (ScreenOfDisplay(_ecore_xcb_conn, i) == ps[j]) */
+/*                      overlap++; */
+/*                 } */
+/*            } */
+/*          roots = malloc((num - overlap) * sizeof(Ecore_X_Window)); */
+/*          if (roots) */
+/*            { */
+/*               int k; */
+
+/*               k = 0; */
+/*               for (i = 0; i < num; i++) */
+/*                 { */
+/*                    int is_print; */
+
+/*                    is_print = 0; */
+/*                    for (j = 0; j < psnum; j++) */
+/*                      { */
+/*                         if (ScreenOfDisplay(_ecore_xcb_conn, i) == ps[j]) */
+/*                           { */
+/*                              is_print = 1; */
+/*                              break; */
+/*                           } */
+/*                      } */
+/*                    if (!is_print) */
+/*                      { */
+/*                         roots[k] = RootWindow(_ecore_xcb_conn, i); */
+/*                         k++; */
+/*                      } */
+/*                 } */
+/*               *num_ret = k; */
+/*            } */
+/*          XFree(ps); */
+/*       } */
+/*     else */
+/*       { */
+/*          roots = malloc(num * sizeof(Ecore_X_Window)); */
+/*          if (!roots) return NULL; */
+/*          *num_ret = num; */
+/*          for (i = 0; i < num; i++) */
+/*            roots[i] = RootWindow(_ecore_xcb_conn, i); */
+/*       } */
+/*      } */
+/*    else */
+/*      { */
+/*     roots = malloc(num * sizeof(Ecore_X_Window)); */
+/*     if (!roots) return NULL; */
+/*     *num_ret = num; */
+/*     for (i = 0; i < num; i++) */
+/*       roots[i] = RootWindow(_ecore_xcb_conn, i); */
+/*      } */
+/* #else */
+   setup = xcb_get_setup (_ecore_xcb_conn);
+   iter = xcb_setup_roots_iterator (setup);
+   num = setup->roots_len;
+   roots = malloc(num * sizeof(Ecore_X_Window));
+   if (!roots) return NULL;
+
+   *num_ret = num;
+   for (i = 0; iter.rem; xcb_screen_next(&iter), i++)
+     roots[i] = iter.data->root;
+/* #endif /\* ECORE_XCBXPRINT *\/ */
+
+   return roots;
+}
+
+EAPI Ecore_X_Window
+ecore_x_window_root_first_get(void)
+{
+   Ecore_X_Window *roots = NULL;
+   Ecore_X_Window  root;
+   int             num;
+
+   roots = ecore_x_window_root_list(&num);
+   if(!(roots)) return 0;
+
+   if (num > 0)
+      root = roots[0];
+   else
+      root = 0;
+
+   free(roots);
+   return root;
+}
+
+/* FIXME: todo */
+
+static void _ecore_x_window_manage_error(void *data);
+
+static int _ecore_xcb_window_manage_failed = 0;
+static void
+_ecore_x_window_manage_error(void *data __UNUSED__)
+{
+/*    if ((ecore_xcb_error_request_get() == X_ChangeWindowAttributes) && */
+/*        (ecore_xcb_error_code_get() == BadAccess)) */
+/*      _ecore_xcb_window_manage_failed = 1; */
+}
+
+/* FIXME: round trip */
+EAPI int
+ecore_x_window_manage(Ecore_X_Window window)
+{
+   xcb_get_window_attributes_cookie_t cookie_attr;
+   xcb_get_input_focus_cookie_t       cookie_sync;
+   xcb_get_window_attributes_reply_t *reply_attr;
+   xcb_get_input_focus_reply_t       *reply_sync;
+   uint32_t                           value_list;
+
+   cookie_attr = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, window);
+   cookie_sync = xcb_get_input_focus_unchecked(_ecore_xcb_conn);
+
+   reply_attr = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie_attr, NULL);
+   if (!reply_attr)
+     {
+        reply_sync = xcb_get_input_focus_reply(_ecore_xcb_conn, cookie_sync, NULL);
+        if (reply_sync) free(reply_sync);
+        return 0;
+     }
+
+   reply_sync = xcb_get_input_focus_reply(_ecore_xcb_conn, cookie_sync, NULL);
+   if (reply_sync) free(reply_sync);
+
+   _ecore_xcb_window_manage_failed = 0;
+   /* FIXME: no error code yet */
+   /* ecore_xcb_error_handler_set(_ecore_xcb_window_manage_error, NULL); */
+
+   value_list =
+     XCB_EVENT_MASK_KEY_PRESS             |
+     XCB_EVENT_MASK_KEY_RELEASE           |
+     XCB_EVENT_MASK_ENTER_WINDOW          |
+     XCB_EVENT_MASK_LEAVE_WINDOW          |
+     XCB_EVENT_MASK_STRUCTURE_NOTIFY      |
+     XCB_EVENT_MASK_RESIZE_REDIRECT       |
+     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY   |
+     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
+     XCB_EVENT_MASK_PROPERTY_CHANGE       |
+     reply_attr->your_event_mask;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_EVENT_MASK,
+                                &value_list);
+   free(reply_attr);
+
+   cookie_sync = xcb_get_input_focus_unchecked(_ecore_xcb_conn);
+   if (reply_sync) free(reply_sync);
+
+   /* FIXME: no error code yet */
+   /* ecore_xcb_error_handler_set(NULL, NULL); */
+   if (_ecore_xcb_window_manage_failed)
+     {
+       _ecore_xcb_window_manage_failed = 0;
+       return 0;
+     }
+
+   return 1;
+}
+
+
+
+
+
+
+
+
+EAPI int
+ecore_x_pointer_control_set(int accel_num,
+                            int accel_denom,
+                            int threshold)
+{
+   xcb_change_pointer_control(_ecore_xcb_conn, 
+                              accel_num, accel_denom, threshold,
+                              1, 1);
+   return 1;
+}
+
+EAPI void
+ecore_x_pointer_control_get_prefetch(void)
+{
+   xcb_get_pointer_control_cookie_t cookie;
+
+   cookie = xcb_get_pointer_control_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+EAPI void
+ecore_x_pointer_control_get_fetch(void)
+{
+   xcb_get_pointer_control_cookie_t cookie;
+   xcb_get_pointer_control_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_pointer_control_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+EAPI int
+ecore_x_pointer_control_get(int *accel_num,
+                            int *accel_denom,
+                            int *threshold)
+{
+   xcb_get_pointer_control_reply_t *reply;
+
+   if (accel_num) *accel_num = 0;
+   if (accel_denom) *accel_denom = 1;
+   if (threshold) *threshold = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   if (accel_num) *accel_num = reply->acceleration_numerator;
+   if (accel_denom) *accel_denom = reply->acceleration_denominator;
+   if (threshold) *threshold = reply->threshold;
+
+   return 1;
+}
+
+EAPI int
+ecore_x_pointer_grab(Ecore_X_Window window)
+{
+   xcb_grab_pointer_cookie_t cookie;
+   xcb_grab_pointer_reply_t *reply;
+
+   cookie = xcb_grab_pointer_unchecked(_ecore_xcb_conn, 0, window,
+                                       XCB_EVENT_MASK_BUTTON_PRESS   |
+                                       XCB_EVENT_MASK_BUTTON_RELEASE |
+                                       XCB_EVENT_MASK_ENTER_WINDOW   |
+                                       XCB_EVENT_MASK_LEAVE_WINDOW   |
+                                       XCB_EVENT_MASK_POINTER_MOTION,
+                                       XCB_GRAB_MODE_ASYNC,
+                                       XCB_GRAB_MODE_ASYNC,
+                                       XCB_NONE, XCB_NONE,
+                                       XCB_CURRENT_TIME);
+   reply = xcb_grab_pointer_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply)
+      return 0;
+
+   free(reply);
+
+   return 1;
+}
+
+EAPI int
+ecore_x_pointer_confine_grab(Ecore_X_Window window)
+{
+   xcb_grab_pointer_cookie_t cookie;
+   xcb_grab_pointer_reply_t *reply;
+
+   cookie = xcb_grab_pointer_unchecked(_ecore_xcb_conn, 0, window,
+                                       XCB_EVENT_MASK_BUTTON_PRESS   |
+                                       XCB_EVENT_MASK_BUTTON_RELEASE |
+                                       XCB_EVENT_MASK_ENTER_WINDOW   |
+                                       XCB_EVENT_MASK_LEAVE_WINDOW   |
+                                       XCB_EVENT_MASK_POINTER_MOTION,
+                                       XCB_GRAB_MODE_ASYNC,
+                                       XCB_GRAB_MODE_ASYNC,
+                                       window, XCB_NONE,
+                                       XCB_CURRENT_TIME);
+   reply = xcb_grab_pointer_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply)
+      return 0;
+
+   free(reply);
+
+   return 1;
+}
+
+EAPI void
+ecore_x_pointer_ungrab(void)
+{
+   xcb_ungrab_pointer(_ecore_xcb_conn, XCB_CURRENT_TIME);
+}
+
+EAPI int
+ecore_x_pointer_warp(Ecore_X_Window window,
+                     int            x,
+                     int            y)
+{
+  xcb_warp_pointer(_ecore_xcb_conn, XCB_NONE, window, 0, 0, 0, 0, x, y);
+
+  return 1;
+}
+
+EAPI int
+ecore_x_keyboard_grab(Ecore_X_Window window)
+{
+   xcb_grab_keyboard_cookie_t cookie;
+   xcb_grab_keyboard_reply_t *reply;
+
+   cookie = xcb_grab_keyboard_unchecked(_ecore_xcb_conn, 0, window,
+                                        XCB_CURRENT_TIME,
+                                        XCB_GRAB_MODE_ASYNC,
+                                        XCB_GRAB_MODE_ASYNC);
+   reply = xcb_grab_keyboard_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply)
+      return 0;
+
+   free(reply);
+
+   return 1;
+}
+
+EAPI void
+ecore_x_keyboard_ungrab(void)
+{
+   xcb_ungrab_keyboard(_ecore_xcb_conn, XCB_CURRENT_TIME);
+}
+
+EAPI void
+ecore_x_grab(void)
+{
+   _ecore_xcb_grab_count++;
+
+   if (_ecore_xcb_grab_count == 1)
+      xcb_grab_server(_ecore_xcb_conn);
+}
+
+EAPI void
+ecore_x_ungrab(void)
+{
+   _ecore_xcb_grab_count--;
+   if (_ecore_xcb_grab_count < 0)
+      _ecore_xcb_grab_count = 0;
+
+   if (_ecore_xcb_grab_count == 0)
+   {
+      xcb_ungrab_server(_ecore_xcb_conn);
+      free(xcb_get_input_focus_reply(_ecore_xcb_conn, xcb_get_input_focus(_ecore_xcb_conn), NULL));
+   }
+}
+
+int      _ecore_window_grabs_num = 0;
+Ecore_X_Window  *_ecore_window_grabs = NULL;
+int    (*_ecore_window_grab_replay_func) (void *data, int event_type, void *event);
+void    *_ecore_window_grab_replay_data;
+
+EAPI void
+ecore_x_passive_grab_replay_func_set(int (*func) (void *data,
+                                                  int   event_type,
+                                                  void *event),
+                                     void *data)
+{
+   _ecore_window_grab_replay_func = func;
+   _ecore_window_grab_replay_data = data;
+}
+
+EAPI void
+ecore_x_window_button_grab(Ecore_X_Window     window,
+                           int                button,
+                           Ecore_X_Event_Mask event_mask,
+                           int                mod,
+                           int                any_mod)
+{
+   int      i;
+   uint16_t m;
+   uint16_t locks[8];
+   uint16_t ev;
+
+   m = mod;
+   if (any_mod) m = XCB_BUTTON_MASK_ANY;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   ev = event_mask;
+   for (i = 0; i < 8; i++)
+     xcb_grab_button(_ecore_xcb_conn, 0, window, ev,
+                     XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC,
+                     XCB_NONE, XCB_NONE, button, m | locks[i]);
+   _ecore_window_grabs_num++;
+   _ecore_window_grabs = realloc(_ecore_window_grabs,
+                                _ecore_window_grabs_num * sizeof(Ecore_X_Window));
+   _ecore_window_grabs[_ecore_window_grabs_num - 1] = window;
+}
+
+void
+_ecore_x_sync_magic_send(int            val,
+                         Ecore_X_Window swindow)
+{
+   xcb_client_message_event_t ev;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.window = _ecore_xcb_private_window;
+   ev.type = 27777;
+   ev.data.data32[0] = 0x7162534;
+   ev.data.data32[1] = 0x10000000 + val;
+   ev.data.data32[2] = swindow;
+
+   xcb_send_event(_ecore_xcb_conn, 0, _ecore_xcb_private_window,
+                  XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
+}
+
+void
+_ecore_x_window_grab_remove(Ecore_X_Window window)
+{
+   int i, shuffle = 0;
+
+   if (_ecore_window_grabs_num > 0)
+     {
+       for (i = 0; i < _ecore_window_grabs_num; i++)
+         {
+            if (shuffle) _ecore_window_grabs[i - 1] = _ecore_window_grabs[i];
+            if ((!shuffle) && (_ecore_window_grabs[i] == window))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_window_grabs_num--;
+            _ecore_window_grabs = realloc(_ecore_window_grabs,
+                                          _ecore_window_grabs_num * sizeof(Ecore_X_Window));
+         }
+     }
+}
+
+EAPI void
+ecore_x_window_button_ungrab(Ecore_X_Window window,
+                             int            button,
+                             int            mod,
+                             int            any_mod)
+{
+   int      i;
+   uint16_t m;
+   uint16_t locks[8];
+
+   m = mod;
+   if (any_mod) m = XCB_BUTTON_MASK_ANY;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     xcb_ungrab_button(_ecore_xcb_conn, button, window, m | locks[i]);
+   _ecore_x_sync_magic_send(1, window);
+}
+
+int                _ecore_key_grabs_num = 0;
+Ecore_X_Window  *_ecore_key_grabs = NULL;
+
+EAPI void
+ecore_x_window_key_grab(Ecore_X_Window window,
+                        const char    *key,
+                        int            mod,
+                        int            any_mod)
+{
+   xcb_keycode_t keycode = 0;
+   uint16_t      m;
+   uint16_t      locks[8];
+   int           i;
+
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   /* FIXME: TODO... */
+
+/*    else */
+/*      { */
+/*         KeySym              keysym; */
+
+/*     keysym = XStringToKeysym(key); */
+/*     if (keysym == NoSymbol) return; */
+/*     keycode  = XKeysymToKeycode(_ecore_xcb_conn, XStringToKeysym(key)); */
+/*      } */
+   if (keycode == 0) return;
+
+   m = mod;
+   if (any_mod) m = XCB_BUTTON_MASK_ANY;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     xcb_grab_key(_ecore_xcb_conn, 1, window, m | locks[i], keycode,
+                  XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC);
+   _ecore_key_grabs_num++;
+   _ecore_key_grabs = realloc(_ecore_key_grabs,
+                             _ecore_key_grabs_num * sizeof(Ecore_X_Window));
+   _ecore_key_grabs[_ecore_key_grabs_num - 1] = window;
+}
+
+void
+_ecore_x_key_grab_remove(Ecore_X_Window window)
+{
+   int i, shuffle = 0;
+
+   if (_ecore_key_grabs_num > 0)
+     {
+       for (i = 0; i < _ecore_key_grabs_num; i++)
+         {
+            if (shuffle) _ecore_key_grabs[i - 1] = _ecore_key_grabs[i];
+            if ((!shuffle) && (_ecore_key_grabs[i] == window))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_key_grabs_num--;
+            _ecore_key_grabs = realloc(_ecore_key_grabs,
+                                       _ecore_key_grabs_num * sizeof(Ecore_X_Window));
+         }
+     }
+}
+
+EAPI void
+ecore_x_window_key_ungrab(Ecore_X_Window window,
+                          const char    *key,
+                          int            mod,
+                          int            any_mod)
+{
+   xcb_keycode_t keycode = 0;
+   uint16_t      m;
+   uint16_t      locks[8];
+   int           i;
+
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   /* FIXME: todo... */
+
+/*    else */
+/*      { */
+/*         KeySym              keysym; */
+
+/*     keysym = XStringToKeysym(key); */
+/*     if (keysym == NoSymbol) return; */
+/*     keycode  = XKeysymToKeycode(_ecore_xcb_conn, XStringToKeysym(key)); */
+/*      } */
+   if (keycode == 0) return;
+
+   m = mod;
+   if (any_mod) m = XCB_BUTTON_MASK_ANY;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     xcb_ungrab_key(_ecore_xcb_conn, keycode, window, m | locks[i]);
+   _ecore_x_sync_magic_send(2, window);
+}
+
+/**
+ * Send client message with given type and format 32.
+ *
+ * @param window  The window the message is sent to.
+ * @param type    The client message type.
+ * @param mask    The client message mask.
+ * @param d0      The client message data item 1
+ * @param d1      The client message data item 2
+ * @param d2      The client message data item 3
+ * @param d3      The client message data item 4
+ * @param d4      The client message data item 5
+ *
+ * @return !0 on success.
+ */
+EAPI int
+ecore_x_client_message32_send(Ecore_X_Window     window,
+                              Ecore_X_Atom       type,
+                              Ecore_X_Event_Mask mask,
+                              long               d0,
+                              long               d1,
+                              long               d2,
+                              long               d3,
+                              long               d4)
+{
+    xcb_client_message_event_t ev;
+
+    ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+    ev.format = 32;
+    ev.window = window;
+    ev.type = type;
+    ev.data.data32[0] = d0;
+    ev.data.data32[1] = d1;
+    ev.data.data32[2] = d2;
+    ev.data.data32[3] = d3;
+    ev.data.data32[4] = d4;
+
+    xcb_send_event(_ecore_xcb_conn, 0, window, mask, (const char *)&ev);
+
+    return 1;
+}
+
+/**
+ * Send client message with given type and format 8.
+ *
+ * @param window  The window the message is sent to.
+ * @param type    The client message type.
+ * @param data    Data to be sent.
+ * @param len     Number of data bytes, max 20.
+ *
+ * @return !0 on success.
+ */
+EAPI int
+ecore_x_client_message8_send(Ecore_X_Window window,
+                             Ecore_X_Atom   type,
+                             const void    *data,
+                             int            len)
+{
+   xcb_client_message_event_t ev;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 8;
+   ev.window = window;
+   ev.type = type;
+   if (len > 20)
+      len = 20;
+   memcpy(ev.data.data8, data, len);
+   memset(ev.data.data8 + len, 0, 20 - len);
+
+   xcb_send_event(_ecore_xcb_conn, 0, window, XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
+
+   return 1;
+}
+
+/* FIXME: round trip */
+EAPI int
+ecore_x_mouse_move_send(Ecore_X_Window window,
+                        int            x,
+                        int            y)
+{
+   xcb_motion_notify_event_t          ev;
+   xcb_get_geometry_cookie_t          cookie_geom;
+   xcb_translate_coordinates_cookie_t cookie_trans;
+   xcb_get_geometry_reply_t          *reply_geom;
+   xcb_translate_coordinates_reply_t *reply_trans;
+
+   cookie_geom = xcb_get_geometry_unchecked(_ecore_xcb_conn, window);
+   reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+   if (!reply_geom) return 0;
+
+   cookie_trans = xcb_translate_coordinates_unchecked(_ecore_xcb_conn, window, reply_geom->root, x, y);
+   reply_trans = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie_trans, NULL);
+   if (!reply_trans)
+     {
+        free(reply_geom);
+        return 0;
+     }
+
+   ev.response_type = XCB_MOTION_NOTIFY;
+   ev.detail = 0;
+   ev.time = _ecore_xcb_event_last_time;
+   ev.root = reply_geom->root;
+   ev.event = window;
+   ev.child = window;
+   ev.root_x = reply_trans->dst_x;
+   ev.root_y = reply_trans->dst_y;
+   ev.event_x = x;
+   ev.event_y = y;
+   ev.state = 0;
+   ev.same_screen = 1;
+
+   xcb_send_event(_ecore_xcb_conn, 1, window, XCB_EVENT_MASK_POINTER_MOTION, (const char *)&ev);
+
+   free(reply_geom);
+   free(reply_trans);
+
+   return 1;
+}
+
+/* FIXME: round trip */
+EAPI int
+ecore_x_mouse_down_send(Ecore_X_Window window,
+                        int            x,
+                        int            y,
+                        int              button)
+{
+   xcb_button_press_event_t           ev;
+   xcb_get_geometry_cookie_t          cookie_geom;
+   xcb_translate_coordinates_cookie_t cookie_trans;
+   xcb_get_geometry_reply_t          *reply_geom;
+   xcb_translate_coordinates_reply_t *reply_trans;
+
+   cookie_geom = xcb_get_geometry_unchecked(_ecore_xcb_conn, window);
+   reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+   if (!reply_geom) return 0;
+
+   cookie_trans = xcb_translate_coordinates_unchecked(_ecore_xcb_conn, window, reply_geom->root, x, y);
+   reply_trans = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie_trans, NULL);
+   if (!reply_trans)
+     {
+        free(reply_geom);
+        return 0;
+     }
+
+   ev.response_type = XCB_BUTTON_PRESS;
+   ev.detail = button;
+   ev.time = _ecore_xcb_event_last_time;
+   ev.root = reply_geom->root;
+   ev.event = window;
+   ev.child = window;
+   ev.root_x = reply_trans->dst_x;
+   ev.root_y = reply_trans->dst_y;
+   ev.event_x = x;
+   ev.event_y = y;
+   ev.state = 1 << button;
+   ev.same_screen = 1;
+
+   xcb_send_event(_ecore_xcb_conn, 1, window, XCB_EVENT_MASK_BUTTON_PRESS, (const char *)&ev);
+
+   free(reply_geom);
+   free(reply_trans);
+
+   return 1;
+}
+
+/* FIXME: round trip */
+EAPI int
+ecore_x_mouse_up_send(Ecore_X_Window window,
+                      int            x,
+                      int            y,
+                      int            button)
+{
+   xcb_button_release_event_t         ev;
+   xcb_get_geometry_cookie_t          cookie_geom;
+   xcb_translate_coordinates_cookie_t cookie_trans;
+   xcb_get_geometry_reply_t          *reply_geom;
+   xcb_translate_coordinates_reply_t *reply_trans;
+
+   cookie_geom = xcb_get_geometry_unchecked(_ecore_xcb_conn, window);
+   reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+   if (!reply_geom) return 0;
+
+   cookie_trans = xcb_translate_coordinates_unchecked(_ecore_xcb_conn, window, reply_geom->root, x, y);
+   reply_trans = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie_trans, NULL);
+   if (!reply_trans)
+     {
+        free(reply_geom);
+        return 0;
+     }
+
+   ev.response_type = XCB_BUTTON_RELEASE;
+   ev.detail = button;
+   ev.time = _ecore_xcb_event_last_time;
+   ev.root = reply_geom->root;
+   ev.event = window;
+   ev.child = window;
+   ev.root_x = reply_trans->dst_x;
+   ev.root_y = reply_trans->dst_y;
+   ev.event_x = x;
+   ev.event_y = y;
+   ev.state = 0;
+   ev.same_screen = 1;
+
+   xcb_send_event(_ecore_xcb_conn, 1, window, XCB_EVENT_MASK_BUTTON_RELEASE, (const char *)&ev);
+
+   free(reply_geom);
+   free(reply_trans);
+
+   return 1;
+}
+
+EAPI void
+ecore_x_focus_reset(void)
+{
+   xcb_set_input_focus(_ecore_xcb_conn,
+                       (uint8_t)XCB_INPUT_FOCUS_POINTER_ROOT,
+                       XCB_INPUT_FOCUS_POINTER_ROOT,
+                       XCB_CURRENT_TIME);
+}
+
+EAPI void
+ecore_x_events_allow_all(void)
+{
+   xcb_allow_events(_ecore_xcb_conn, XCB_ALLOW_ASYNC_BOTH, XCB_CURRENT_TIME);
+}
+
+EAPI void
+ecore_x_pointer_last_xy_get(int *x,
+                            int *y)
+{
+   if (x) *x = _ecore_xcb_event_last_root_x;
+   if (y) *y = _ecore_xcb_event_last_root_y;
+}
+
+
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_atom.c b/src/lib/ecore_x/xcb/ecore_xcb_atom.c
new file mode 100644 (file)
index 0000000..deece9c
--- /dev/null
@@ -0,0 +1,417 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Atom_Group XCB Atom Functions
+ *
+ * Functions that operate on atoms.
+ */
+
+/*********/
+/* Atoms */
+/*********/
+
+#include "ecore_x_atoms_decl.h"
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_atom_init and
+   _ecore_xcb_atom_init_finalize. The first one gets the cookies and
+   the second one gets the replies and set the atoms. */
+
+#define FETCH_ATOM(s) \
+   atom_cookies[i] = xcb_intern_atom(_ecore_xcb_conn, 0, strlen(s), s); \
+   i++
+
+#define FETCH_ATOM_FINALIZE(x) \
+   reply = xcb_intern_atom_reply(_ecore_xcb_conn, atom_cookies[i], NULL); \
+   x = reply->atom; \
+   free(reply); \
+   i++;
+
+void
+_ecore_x_atom_init(xcb_intern_atom_cookie_t *atom_cookies)
+{
+   int i = 0;
+
+   /* generic atoms */
+   FETCH_ATOM("COMPOUND_TEXT");
+   FETCH_ATOM("FILE_NAME");
+   FETCH_ATOM("TEXT");
+   FETCH_ATOM("UTF8_STRING");
+
+   /* dnd atoms */
+   FETCH_ATOM("JXSelectionWindowProperty");
+   FETCH_ATOM("XdndSelection");
+   FETCH_ATOM("XdndAware");
+   FETCH_ATOM("XdndEnter");
+   FETCH_ATOM("XdndTypeList");
+   FETCH_ATOM("XdndPosition");
+   FETCH_ATOM("XdndActionCopy");
+   FETCH_ATOM("XdndActionMove");
+   FETCH_ATOM("XdndActionPrivate");
+   FETCH_ATOM("XdndActionAsk");
+   FETCH_ATOM("XdndActionList");
+   FETCH_ATOM("XdndActionLink");
+   FETCH_ATOM("XdndActionDescription");
+   FETCH_ATOM("XdndProxy");
+   FETCH_ATOM("XdndStatus");
+   FETCH_ATOM("XdndLeave");
+   FETCH_ATOM("XdndDrop");
+   FETCH_ATOM("XdndFinished");
+
+   /* old E atom */
+   FETCH_ATOM("_E_FRAME_SIZE");
+
+   /* old Gnome atom */
+   FETCH_ATOM("_WIN_LAYER");
+
+   /* ICCCM */
+   FETCH_ATOM("WM_PROTOCOLS");
+   FETCH_ATOM("WM_COLORMAP_WINDOWS");
+
+   FETCH_ATOM("WM_STATE");
+
+   FETCH_ATOM("WM_CHANGE_STATE");
+
+   FETCH_ATOM("WM_TAKE_FOCUS");
+   FETCH_ATOM("WM_SAVE_YOURSELF");
+   FETCH_ATOM("WM_DELETE_WINDOW");
+
+   FETCH_ATOM("WM_COLORMAP_NOTIFY");
+
+   FETCH_ATOM("SM_CLIENT_ID");
+   FETCH_ATOM("WM_CLIENT_LEADER");
+   FETCH_ATOM("WM_WINDOW_ROLE");
+
+   /* Motif WM atom */
+   FETCH_ATOM("_MOTIF_WM_HINTS");
+
+   /* NetWM atoms */
+   FETCH_ATOM("_NET_SUPPORTED");
+   FETCH_ATOM("_NET_CLIENT_LIST");
+   FETCH_ATOM("_NET_CLIENT_LIST_STACKING");
+   FETCH_ATOM("_NET_NUMBER_OF_DESKTOPS");
+   FETCH_ATOM("_NET_DESKTOP_GEOMETRY");
+   FETCH_ATOM("_NET_DESKTOP_VIEWPORT");
+   FETCH_ATOM("_NET_CURRENT_DESKTOP");
+   FETCH_ATOM("_NET_DESKTOP_NAMES");
+   FETCH_ATOM("_NET_ACTIVE_WINDOW");
+   FETCH_ATOM("_NET_WORKAREA");
+   FETCH_ATOM("_NET_SUPPORTING_WM_CHECK");
+   FETCH_ATOM("_NET_VIRTUAL_ROOTS");
+   FETCH_ATOM("_NET_DESKTOP_LAYOUT");
+   FETCH_ATOM("_NET_SHOWING_DESKTOP");
+
+   FETCH_ATOM("_NET_CLOSE_WINDOW");
+   FETCH_ATOM("_NET_MOVERESIZE_WINDOW");
+   FETCH_ATOM("_NET_WM_MOVERESIZE");
+   FETCH_ATOM("_NET_RESTACK_WINDOW");
+   FETCH_ATOM("_NET_REQUEST_FRAME_EXTENTS");
+
+   FETCH_ATOM("_NET_WM_NAME");
+   FETCH_ATOM("_NET_WM_VISIBLE_NAME");
+   FETCH_ATOM("_NET_WM_ICON_NAME");
+   FETCH_ATOM("_NET_WM_VISIBLE_ICON_NAME");
+   FETCH_ATOM("_NET_WM_DESKTOP");
+
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_DESKTOP");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_DOCK");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_TOOLBAR");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_MENU");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_UTILITY");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_SPLASH");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_DIALOG");
+   FETCH_ATOM("_NET_WM_WINDOW_TYPE_NORMAL");
+
+   FETCH_ATOM("_NET_WM_STATE");
+   FETCH_ATOM("_NET_WM_STATE_MODAL");
+   FETCH_ATOM("_NET_WM_STATE_STICKY");
+   FETCH_ATOM("_NET_WM_STATE_MAXIMIZED_VERT");
+   FETCH_ATOM("_NET_WM_STATE_MAXIMIZED_HORZ");
+   FETCH_ATOM("_NET_WM_STATE_SHADED");
+   FETCH_ATOM("_NET_WM_STATE_SKIP_TASKBAR");
+   FETCH_ATOM("_NET_WM_STATE_SKIP_PAGER");
+   FETCH_ATOM("_NET_WM_STATE_HIDDEN");
+   FETCH_ATOM("_NET_WM_STATE_FULLSCREEN");
+   FETCH_ATOM("_NET_WM_STATE_ABOVE");
+   FETCH_ATOM("_NET_WM_STATE_BELOW");
+   FETCH_ATOM("_NET_WM_STATE_DEMANDS_ATTENTION");
+
+   FETCH_ATOM("_NET_WM_ALLOWED_ACTIONS");
+   FETCH_ATOM("_NET_WM_ACTION_MOVE");
+   FETCH_ATOM("_NET_WM_ACTION_RESIZE");
+   FETCH_ATOM("_NET_WM_ACTION_MINIMIZE");
+   FETCH_ATOM("_NET_WM_ACTION_SHADE");
+   FETCH_ATOM("_NET_WM_ACTION_STICK");
+   FETCH_ATOM("_NET_WM_ACTION_MAXIMIZE_HORZ");
+   FETCH_ATOM("_NET_WM_ACTION_MAXIMIZE_VERT");
+   FETCH_ATOM("_NET_WM_ACTION_FULLSCREEN");
+   FETCH_ATOM("_NET_WM_ACTION_CHANGE_DESKTOP");
+   FETCH_ATOM("_NET_WM_ACTION_CLOSE");
+
+   FETCH_ATOM("_NET_WM_STRUT");
+   FETCH_ATOM("_NET_WM_STRUT_PARTIAL");
+   FETCH_ATOM("_NET_WM_ICON_GEOMETRY");
+   FETCH_ATOM("_NET_WM_ICON");
+   FETCH_ATOM("_NET_WM_PID");
+   FETCH_ATOM("_NET_WM_HANDLED_ICONS");
+   FETCH_ATOM("_NET_WM_USER_TIME");
+   FETCH_ATOM("_NET_STARTUP_ID");
+   FETCH_ATOM("_NET_FRAME_EXTENTS");
+
+   FETCH_ATOM("_NET_WM_PING");
+   FETCH_ATOM("_NET_WM_SYNC_REQUEST");
+   FETCH_ATOM("_NET_WM_SYNC_REQUEST_COUNTER");
+
+   FETCH_ATOM("_NET_WM_WINDOW_OPACITY");
+   FETCH_ATOM("_NET_WM_WINDOW_SHADOW");
+   FETCH_ATOM("_NET_WM_WINDOW_SHADE");
+
+   FETCH_ATOM("_NET_STARTUP_INFO_BEGIN");
+   FETCH_ATOM("_NET_STARTUP_INFO");
+
+   /* selection atoms */
+   FETCH_ATOM("TARGETS");
+   FETCH_ATOM("CLIPBOARD");
+   FETCH_ATOM("_ECORE_SELECTION_PRIMARY");
+   FETCH_ATOM("_ECORE_SELECTION_SECONDARY");
+   FETCH_ATOM("_ECORE_SELECTION_CLIPBOARD");
+
+   /* These atoms are already internally defined */
+   ECORE_X_ATOM_SELECTION_PRIMARY   = 1;
+   ECORE_X_ATOM_SELECTION_SECONDARY = 2;
+   ECORE_X_ATOM_ATOM                = 4;
+   ECORE_X_ATOM_CARDINAL            = 6;
+   ECORE_X_ATOM_STRING              = 31;
+   ECORE_X_ATOM_WINDOW              = 33;
+   ECORE_X_ATOM_WM_NAME             = 39;
+   ECORE_X_ATOM_WM_ICON_NAME        = 37;
+   ECORE_X_ATOM_WM_NORMAL_HINTS     = 40;
+   ECORE_X_ATOM_WM_SIZE_HINTS       = 41;
+   ECORE_X_ATOM_WM_HINTS            = 35;
+   ECORE_X_ATOM_WM_CLASS            = 67;
+   ECORE_X_ATOM_WM_TRANSIENT_FOR    = 68;
+   ECORE_X_ATOM_WM_COMMAND          = 34;
+   ECORE_X_ATOM_WM_CLIENT_MACHINE   = 36;
+   ECORE_X_ATOM_WM_ICON_SIZE        = 38;
+
+   /* Initialize the globally defined xdnd atoms */
+   ECORE_X_DND_ACTION_COPY          = ECORE_X_ATOM_XDND_ACTION_COPY;
+   ECORE_X_DND_ACTION_MOVE          = ECORE_X_ATOM_XDND_ACTION_MOVE;
+   ECORE_X_DND_ACTION_LINK          = ECORE_X_ATOM_XDND_ACTION_LINK;
+   ECORE_X_DND_ACTION_ASK           = ECORE_X_ATOM_XDND_ACTION_ASK;
+   ECORE_X_DND_ACTION_PRIVATE       = ECORE_X_ATOM_XDND_ACTION_PRIVATE;
+}
+
+void
+_ecore_x_atom_init_finalize(xcb_intern_atom_cookie_t *atom_cookies)
+{
+   xcb_intern_atom_reply_t *reply = NULL;
+   int i = 0;
+
+   /* generic atoms */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_COMPOUND_TEXT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_FILE_NAME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_TEXT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_UTF8_STRING);
+
+   /* dnd atoms */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_XDND);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_XDND);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_AWARE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ENTER);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_TYPE_LIST);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_POSITION);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_COPY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_MOVE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_PRIVATE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_ASK);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_LIST);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_LINK);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_ACTION_DESCRIPTION);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_PROXY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_STATUS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_LEAVE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_DROP);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_XDND_FINISHED);
+
+   /* old E atom */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_E_FRAME_SIZE);
+
+   /* old Gnome atom */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WIN_LAYER);
+
+   /* ICCCM */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_PROTOCOLS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_COLORMAP_WINDOWS);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_STATE);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_CHANGE_STATE);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_TAKE_FOCUS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_SAVE_YOURSELF);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_DELETE_WINDOW);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_COLORMAP_NOTIFY);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SM_CLIENT_ID);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_CLIENT_LEADER);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_WM_WINDOW_ROLE);
+
+   /* Motif WM atom */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_MOTIF_WM_HINTS);
+
+   /* NetWM atoms */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SUPPORTED);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLIENT_LIST);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLIENT_LIST_STACKING);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_GEOMETRY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_VIEWPORT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CURRENT_DESKTOP);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_NAMES);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_ACTIVE_WINDOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WORKAREA);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_VIRTUAL_ROOTS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_DESKTOP_LAYOUT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_SHOWING_DESKTOP);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_CLOSE_WINDOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_MOVERESIZE_WINDOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_MOVERESIZE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_RESTACK_WINDOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_NAME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_VISIBLE_NAME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON_NAME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_DESKTOP);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MODAL);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_STICKY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SHADED);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_HIDDEN);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_ABOVE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_BELOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MOVE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_RESIZE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_SHADE);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_STICK);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ACTION_CLOSE);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STRUT);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_STRUT_PARTIAL);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON_GEOMETRY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_ICON);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_PID);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_HANDLED_ICONS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_USER_TIME);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_ID);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_FRAME_EXTENTS);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_PING);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_SYNC_REQUEST);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_OPACITY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_SHADOW);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_WM_WINDOW_SHADE);
+
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_NET_STARTUP_INFO);
+
+   /* selection atoms */
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_TARGETS);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_CLIPBOARD);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_PRIMARY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_SECONDARY);
+   FETCH_ATOM_FINALIZE(ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD);
+}
+
+
+/**
+ * Sends the InternAtom request.
+ * @param name Name of the requested atom.
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI void
+ecore_x_atom_get_prefetch(const char *name)
+{
+   xcb_intern_atom_cookie_t cookie;
+
+   cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(name), name);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the InternAtom request sent by ecore_x_atom_get_prefetch().
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI void
+ecore_x_atom_get_fetch(void)
+{
+   xcb_intern_atom_cookie_t cookie;
+   xcb_intern_atom_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieves the atom value associated to a name.
+ * @param  name Unused.
+ * @return      Associated atom value.
+ *
+ * Retrieves the atom value associated to a name. The reply is the
+ * returned value of the function ecore_xcb_intern_atom_reply(). If
+ * @p reply is @c NULL, the NULL atom is returned. Otherwise, the atom
+ * associated to the name is returned.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_atom_get_prefetch(), which sends the InternAtom request,
+ * then ecore_x_atom_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Atom_Group
+ */
+EAPI Ecore_X_Atom
+ecore_x_atom_get(const char *name __UNUSED__)
+{
+   xcb_intern_atom_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return XCB_NONE;
+
+   return reply->atom;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_composite.c b/src/lib/ecore_x/xcb/ecore_xcb_composite.c
new file mode 100644 (file)
index 0000000..eefacba
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+/**
+ * @defgroup Ecore_X_Composite_Group X Composite Extension Functions
+ *
+ * Functions related to the X Composite extension.
+ */
+
+#ifdef ECORE_XCB_COMPOSITE
+static uint8_t _composite_available = 0;
+static xcb_composite_query_version_cookie_t _ecore_xcb_composite_init_cookie;
+#endif /* ECORE_XCB_COMPOSITE */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_composite_init and
+   _ecore_xcb_composite_init_finalize. The first one gets the cookies and
+   the second one gets the replies. */
+
+void
+_ecore_x_composite_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_COMPOSITE
+   if (reply && reply->present)
+      _ecore_xcb_composite_init_cookie = xcb_composite_query_version_unchecked(_ecore_xcb_conn, XCB_COMPOSITE_MAJOR_VERSION, XCB_COMPOSITE_MINOR_VERSION);
+#endif /* ECORE_XCB_COMPOSITE */
+}
+
+void
+_ecore_x_composite_init_finalize(void)
+{
+#ifdef ECORE_XCB_COMPOSITE
+   xcb_composite_query_version_reply_t *reply;
+
+   reply = xcb_composite_query_version_reply(_ecore_xcb_conn,
+                                          _ecore_xcb_composite_init_cookie,
+                                          NULL);
+   if (reply)
+     {
+        if (reply->major_version = XCB_COMPOSITE_MAJOR_VERSION &&
+           reply->minor_version >= XCB_COMPOSITE_MINOR_VERSION)
+          _composite_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_COMPOSITE */
+}
+
+/**
+ * Return whether the Composite Extension is available.
+ * @return 1 if the Composite Extension is available, 0 if not.
+ *
+ * Return 1 if the X server supports the Composite Extension version 0.4
+ * or greater, 0 otherwise.
+ * @ingroup Ecore_X_Composite_Group
+ */
+EAPI int
+ecore_x_composite_query(void)
+{
+#ifdef ECORE_XCB_COMPOSITE
+   return _composite_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_COMPOSITE */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_cursor.c b/src/lib/ecore_x/xcb/ecore_xcb_cursor.c
new file mode 100644 (file)
index 0000000..1dcea4d
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+#include <xcb/shm.h>
+#include <xcb/xcb_image.h>
+
+
+extern int _ecore_xcb_xcursor;
+
+
+EAPI int
+ecore_x_cursor_color_supported_get(void)
+{
+   return _ecore_xcb_xcursor;
+}
+
+EAPI Ecore_X_Cursor
+ecore_x_cursor_new(Ecore_X_Window window,
+                   int           *pixels,
+                   int            w,
+                   int            h,
+                   int            hot_x,
+                   int            hot_y)
+{
+   Ecore_X_Cursor cursor = 0;
+
+#ifdef ECORE_XCB_CURSOR
+   if (_ecore_x_xcursor)
+     {
+       Cursor c;
+       XcursorImage *xci;
+
+       xci = XcursorImageCreate(w, h);
+       if (xci)
+         {
+            int i;
+
+            xci->xhot = hot_x;
+            xci->yhot = hot_y;
+            xci->delay = 0;
+            for (i = 0; i < (w * h); i++)
+              {
+//               int r, g, b, a;
+//
+//               a = (pixels[i] >> 24) & 0xff;
+//               r = (((pixels[i] >> 16) & 0xff) * a) / 0xff;
+//               g = (((pixels[i] >> 8 ) & 0xff) * a) / 0xff;
+//               b = (((pixels[i]      ) & 0xff) * a) / 0xff;
+                 xci->pixels[i] = pixels[i];
+//                 (a << 24) | (r << 16) | (g << 8) | (b);
+              }
+            c = XcursorImageLoadCursor(_ecore_x_disp, xci);
+            XcursorImageDestroy(xci);
+            return c;
+         }
+     }
+   else
+#endif /* ECORE_XCB_CURSOR */
+     {
+       const uint32_t dither[2][2] =
+         {
+              {0, 2},
+              {3, 1}
+         };
+        Ecore_X_Drawable draw;
+        Ecore_X_Pixmap   pixmap;
+        Ecore_X_Pixmap   mask;
+        Ecore_X_GC       gc;
+        xcb_image_t     *image;
+        uint32_t        *pix;
+        uint8_t          fr;
+        uint8_t          fg;
+        uint8_t          fb;
+        uint8_t          br;
+        uint8_t          bg;
+        uint8_t          bb;
+       uint32_t         brightest = 0;
+       uint32_t         darkest = 255 * 3;
+        uint16_t         x;
+        uint16_t         y;
+
+        draw = window;
+        pixmap = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_pixmap(_ecore_xcb_conn,
+                          1, pixmap, draw,
+                          1, 1);
+        mask = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_pixmap(_ecore_xcb_conn,
+                          1, mask, draw,
+                          1, 1);
+
+        image = xcb_image_create_native(_ecore_xcb_conn, w, h,
+                                 XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                 32, NULL, ~0, NULL);
+        image->data = malloc(image->size);
+
+       fr = 0x00; fg = 0x00; fb = 0x00;
+       br = 0xff; bg = 0xff; bb = 0xff;
+        pix = (uint32_t *)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 uint8_t r, g, b, a;
+
+                 a = (pix[0] >> 24) & 0xff;
+                 r = (pix[0] >> 16) & 0xff;
+                 g = (pix[0] >> 8 ) & 0xff;
+                 b = (pix[0]      ) & 0xff;
+                 if (a > 0)
+                   {
+                      if ((uint32_t)(r + g + b) > brightest)
+                        {
+                           brightest = r + g + b;
+                           br = r;
+                           bg = g;
+                           bb = b;
+                        }
+                      if ((uint32_t)(r + g + b) < darkest)
+                        {
+                           darkest = r + g + b;
+                           fr = r;
+                           fg = g;
+                           fb = b;
+                        }
+                   }
+                 pix++;
+              }
+         }
+
+       pix = (uint32_t *)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 uint32_t v;
+                 uint8_t  r, g, b;
+                 int32_t  d1, d2;
+
+                 r = (pix[0] >> 16) & 0xff;
+                 g = (pix[0] >> 8 ) & 0xff;
+                 b = (pix[0]      ) & 0xff;
+                 d1 =
+                   ((r - fr) * (r - fr)) +
+                   ((g - fg) * (g - fg)) +
+                   ((b - fb) * (b - fb));
+                 d2 =
+                   ((r - br) * (r - br)) +
+                   ((g - bg) * (g - bg)) +
+                   ((b - bb) * (b - bb));
+                 if (d1 + d2)
+                   {
+                      v = (((d2 * 255) / (d1 + d2)) * 5) / 256;
+                      if (v > dither[x & 0x1][y & 0x1]) v = 1;
+                      else v = 0;
+                   }
+                 else
+                   {
+                      v = 0;
+                   }
+                 xcb_image_put_pixel(image, x, y, v);
+                 pix++;
+              }
+         }
+        draw = pixmap;
+        gc = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_gc(_ecore_xcb_conn, gc, draw, 0, NULL);
+        xcb_image_put(_ecore_xcb_conn, draw, gc, image, 0, 0, 0);
+        xcb_free_gc(_ecore_xcb_conn, gc);
+
+       pix = (uint32_t *)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 uint32_t v;
+
+                 v = (((pix[0] >> 24) & 0xff) * 5) / 256;
+                 if (v > dither[x & 0x1][y & 0x1]) v = 1;
+                 else v = 0;
+                 xcb_image_put_pixel(image, x, y, v);
+                 pix++;
+              }
+         }
+        draw = mask;
+        gc = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_gc (_ecore_xcb_conn, gc, draw, 0, NULL);
+        xcb_image_put(_ecore_xcb_conn, draw, gc, image, 0, 0, 0);
+        xcb_free_gc(_ecore_xcb_conn, gc);
+
+       free(image->data);
+       image->data = NULL;
+       xcb_image_destroy(image);
+
+        cursor = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_cursor (_ecore_xcb_conn, cursor,
+                           pixmap, mask,
+                           fr << 8 | fr,
+                           fg << 8 | fg,
+                           fb << 8 | fb,
+                           br << 8 | br,
+                           bg << 8 | bg,
+                           bb << 8 | bb,
+                           hot_x,
+                           hot_y);
+       xcb_free_pixmap(_ecore_xcb_conn, pixmap);
+       xcb_free_pixmap(_ecore_xcb_conn, mask);
+
+       return cursor;
+     }
+   return 0;
+}
+
+EAPI void
+ecore_x_cursor_free(Ecore_X_Cursor cursor)
+{
+   xcb_free_cursor(_ecore_xcb_conn, cursor);
+}
+
+/*
+ * Returns the cursor for the given shape.
+ * Note that the return value must not be freed with
+ * ecore_x_cursor_free()!
+ */
+EAPI Ecore_X_Cursor
+ecore_x_cursor_shape_get(int shape)
+{
+   Ecore_X_Cursor cursor;
+   xcb_font_t     font;
+
+   /* Shapes are defined in Ecore_X_Cursor.h */
+   font = xcb_generate_id(_ecore_xcb_conn);
+   xcb_open_font(_ecore_xcb_conn, font, strlen("cursor"), "cursor");
+
+   cursor = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_glyph_cursor (_ecore_xcb_conn,
+                            cursor,
+                            font,
+                            font,
+                            shape,
+                            shape + 1,
+                            0, 0, 0,
+                            65535, 65535, 65535);
+
+   xcb_close_font(_ecore_xcb_conn, font);
+
+   return cursor;
+}
+
+EAPI void
+ecore_x_cursor_size_set(int size)
+{
+#ifdef ECORE_XCB_CURSOR
+   XcursorSetDefaultSize(_ecore_x_disp, size);
+#else
+   size = 0;
+#endif /* ECORE_XCB_CURSOR */
+}
+
+EAPI int
+ecore_x_cursor_size_get(void)
+{
+#ifdef ECORE_XCB_CURSOR
+   return XcursorGetDefaultSize(_ecore_x_disp);
+#else
+   return 0;
+#endif /* ECORE_XCB_CURSOR */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_damage.c b/src/lib/ecore_x/xcb/ecore_xcb_damage.c
new file mode 100644 (file)
index 0000000..d5b0c66
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Damage_Group X Damage Extension Functions
+ *
+ * Functions related to the X Damage extension.
+ */
+
+
+#ifdef ECORE_XCB_DAMAGE
+static uint8_t _damage_available = 0;
+static xcb_damage_query_version_cookie_t _ecore_xcb_damage_init_cookie;
+#endif /* ECORE_XCB_DAMAGE */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_damage_init and
+   _ecore_xcb_damage_init_finalize. The first one gets the cookies and
+   the second one gets the replies. */
+
+void
+_ecore_x_damage_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_DAMAGE
+   if (reply && (reply->present))
+      _ecore_xcb_damage_init_cookie = xcb_damage_query_version_unchecked(_ecore_xcb_conn, 1, 1);
+#endif /* ECORE_XCB_DAMAGE */
+}
+
+void
+_ecore_x_damage_init_finalize(void)
+{
+#ifdef ECORE_XCB_DAMAGE
+   xcb_damage_query_version_reply_t *reply;
+
+   reply = xcb_damage_query_version_reply(_ecore_xcb_conn,
+                                          _ecore_xcb_damage_init_cookie,
+                                          NULL);
+   if (reply)
+     {
+        if (reply->major_version >= 1)
+          _damage_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_DAMAGE */
+}
+
+
+/**
+ * Return whether the Damage Extension is available.
+ * @return 1 if the Damage Extension is available, 0 if not.
+ *
+ * Return 1 if the X server supports the Damage Extension version 1.0,
+ * 0 otherwise.
+ * @ingroup Ecore_X_Damage_Group
+ */
+EAPI int
+ecore_x_damage_query(void)
+{
+#ifdef ECORE_XCB_DAMAGE
+   return _damage_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_DAMAGE */
+}
+
+
+/**
+ * Creates a damage object.
+ * @param drawable The drawable to monotor.
+ * @param level    The level of the damage report.
+ * @return         The damage object.
+ *
+ * Creates a damage object to monitor changes to @p drawable, with the
+ * level @p level.
+ * @ingroup Ecore_X_Damage_Group
+ */
+EAPI Ecore_X_Damage
+ecore_x_damage_new(Ecore_X_Drawable            drawable,
+                   Ecore_X_Damage_Report_Level level)
+{
+   Ecore_X_Damage damage = 0;
+
+#ifdef ECORE_XCB_DAMAGE
+   damage = xcb_generate_id(_ecore_xcb_conn);
+   xcb_damage_create(_ecore_xcb_conn, damage, drawable, level);
+#endif /* ECORE_XCB_DAMAGE */
+
+   return damage;
+}
+
+
+/**
+ * Destroys a damage object.
+ * @param damage The damage object to destroy.
+ *
+ * Destroys the damage object @p damage.
+ * @ingroup Ecore_X_Damage_Group
+ */
+EAPI void
+ecore_x_damage_del(Ecore_X_Damage damage)
+{
+#ifdef ECORE_XCB_DAMAGE
+   xcb_damage_destroy(_ecore_xcb_conn, damage);
+#endif /* ECORE_XCB_DAMAGE */
+}
+
+
+/**
+ * Synchronously modifies the region.
+ * @param damage The damage object to destroy.
+ * @param repair The repair region.
+ * @param parts  The parts region.
+ *
+ * Synchronously modifies the regions in the following manner:
+ * If @p repair is @c XCB_NONE:
+ *   1) parts = damage
+ *   2) damage = <empty>
+ * Otherwise:
+ *   1) parts = damage INTERSECT repair
+ *   2) damage = damage - parts
+ *   3) Generate DamageNotify for remaining damage areas
+ * @ingroup Ecore_X_Damage_Group
+ */
+EAPI void
+ecore_x_damage_subtract(Ecore_X_Damage damage,
+                        Ecore_X_Region repair,
+                        Ecore_X_Region parts)
+{
+#ifdef ECORE_XCB_DAMAGE
+   xcb_damage_subtract(_ecore_xcb_conn, damage, repair, parts);
+#endif /* ECORE_XCB_DAMAGE */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_dnd.c b/src/lib/ecore_x/xcb/ecore_xcb_dnd.c
new file mode 100644 (file)
index 0000000..b270d3d
--- /dev/null
@@ -0,0 +1,751 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "Ecore.h"
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+EAPI int ECORE_X_EVENT_XDND_ENTER    = 0;
+EAPI int ECORE_X_EVENT_XDND_POSITION = 0;
+EAPI int ECORE_X_EVENT_XDND_STATUS   = 0;
+EAPI int ECORE_X_EVENT_XDND_LEAVE    = 0;
+EAPI int ECORE_X_EVENT_XDND_DROP     = 0;
+EAPI int ECORE_X_EVENT_XDND_FINISHED = 0;
+
+static Ecore_X_DND_Source *_source = NULL;
+static Ecore_X_DND_Target *_target = NULL;
+static int _ecore_x_dnd_init_count = 0;
+
+
+void
+_ecore_x_dnd_init(void)
+{
+   if (!_ecore_x_dnd_init_count)
+     {
+
+       _source = calloc(1, sizeof(Ecore_X_DND_Source));
+       _source->version = ECORE_X_DND_VERSION;
+       _source->win = XCB_NONE;
+       _source->dest = XCB_NONE;
+       _source->state = ECORE_X_DND_SOURCE_IDLE;
+
+       _target = calloc(1, sizeof(Ecore_X_DND_Target));
+       _target->win = XCB_NONE;
+       _target->source = XCB_NONE;
+       _target->state = ECORE_X_DND_TARGET_IDLE;
+
+       ECORE_X_EVENT_XDND_ENTER    = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_POSITION = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_STATUS   = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_LEAVE    = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_DROP     = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_FINISHED = ecore_event_type_new();
+     }
+
+   _ecore_x_dnd_init_count++;
+}
+
+void
+_ecore_x_dnd_shutdown(void)
+{
+   _ecore_x_dnd_init_count--;
+   if (_ecore_x_dnd_init_count > 0)
+     return;
+
+   if (_source)
+     free(_source);
+   _source = NULL;
+
+   if (_target)
+     free(_target);
+   _target = NULL;
+
+   _ecore_x_dnd_init_count = 0;
+}
+
+EAPI void
+ecore_x_dnd_aware_set(Ecore_X_Window window,
+                      int            on)
+{
+   Ecore_X_Atom prop_data = ECORE_X_DND_VERSION;
+
+   if (on)
+     ecore_x_window_prop_property_set(window, ECORE_X_ATOM_XDND_AWARE,
+                                     ECORE_X_ATOM_ATOM, 32, &prop_data, 1);
+   else
+     ecore_x_window_prop_property_del(window, ECORE_X_ATOM_XDND_AWARE);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ */
+EAPI void
+ecore_x_dnd_version_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_XDND_AWARE,
+                                       ECORE_X_ATOM_ATOM,
+                                       0, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_dnd_version_get_prefetch().
+ */
+EAPI void
+ecore_x_dnd_version_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the DnD version.
+ * @param  window Unused.
+ * @return        0 on failure, the version otherwise.
+ *
+ * Get the DnD version. Returns 0 on failure, the version otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dnd_version_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_dnd_version_get_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_dnd_version_get(Ecore_X_Window window)
+{
+   unsigned char            *prop_data;
+   int                       num;
+
+   if (ecore_x_window_prop_property_get(window, ECORE_X_ATOM_XDND_AWARE,
+                                        ECORE_X_ATOM_ATOM, 32, &prop_data, &num))
+     {
+       int version = (int) *prop_data;
+       free(prop_data);
+       return version;
+     }
+   else
+     return 0;
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ */
+EAPI void
+ecore_x_dnd_type_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_XDND_TYPE_LIST,
+                                       ECORE_X_ATOM_ATOM,
+                                       0, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_dnd_type_get_prefetch().
+ */
+EAPI void
+ecore_x_dnd_type_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/* FIXME: round trip (InternAtomGet request) */
+
+/**
+ * Check if the type is set.
+ * @param   window Unused.
+ * @param   type   The type to check
+ * @return         0 on failure, 1 otherwise.
+ *
+ * Check if the type is set. 0 on failure, 1 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dnd_type_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_dnd_type_get_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_dnd_type_isset(Ecore_X_Window window,
+                       const char    *type)
+{
+   xcb_intern_atom_cookie_t cookie;
+   xcb_intern_atom_reply_t *reply;
+   Ecore_X_Atom            *atoms;
+   unsigned char           *data;
+   int                      num;
+   int                      i;
+   uint8_t                  ret = 0;
+
+   cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
+                                      strlen(type), type);
+
+   if (!ecore_x_window_prop_property_get(window, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                        ECORE_X_ATOM_ATOM, 32, &data, &num))
+     {
+        reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+        if (reply) free(reply);
+        return ret;
+     }
+
+   reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply)
+     {
+        free(data);
+        return 0;
+     }
+   atoms = (Ecore_X_Atom *)data;
+
+   for (i = 0; i < num; ++i)
+     {
+       if (reply->atom == atoms[i])
+         {
+            ret = 1;
+            break;
+         }
+     }
+
+   free(data);
+   free(reply);
+
+   return ret;
+}
+
+/* FIXME: round trip (InternAtomGet request) */
+
+/**
+ * Set the type.
+ * @param   window Unused.
+ * @param   type   The type to set
+ * @param   on     0 or non 0...
+ *
+ * Set the type.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dnd_type_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_dnd_type_get_fetch(), which gets the reply.
+ */
+EAPI void
+ecore_x_dnd_type_set(Ecore_X_Window window,
+                     const char    *type,
+                     int            on)
+{
+   xcb_intern_atom_cookie_t cookie;
+   xcb_intern_atom_reply_t *reply;
+   Ecore_X_Atom            *oldset = NULL;
+   Ecore_X_Atom            *newset = NULL;
+   unsigned char           *data = NULL;
+   unsigned char           *old_data = NULL;
+   Ecore_X_Atom             atom;
+   int                      i, j = 0, num = 0;
+
+   cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
+                                      strlen(type), type);
+
+   atom = ecore_x_atom_get(type);
+   if (!ecore_x_window_prop_property_get(window, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                         ECORE_X_ATOM_ATOM,
+                                         32, &old_data, &num))
+     {
+        reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+        if (reply) free(reply);
+        return;
+     }
+   oldset = (Ecore_X_Atom *)old_data;
+
+   if (on)
+     {
+       if (ecore_x_dnd_type_isset(window, type))
+         {
+            free(old_data);
+             reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+             if (reply) free(reply);
+            return;
+         }
+       data = calloc(num + 1, sizeof(Ecore_X_Atom));
+       if (!data)
+          {
+            free(old_data);
+             reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+             if (reply) free(reply);
+             return;
+          }
+       newset = (Ecore_X_Atom *)data;
+
+       for (i = 0; i < num; i++)
+         newset[i + 1] = oldset[i];
+       /* prepend the new type */
+
+        reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+        if (!reply)
+          {
+            free(old_data);
+            return;
+          }
+       newset[0] = reply->atom;
+        free(reply);
+
+       ecore_x_window_prop_property_set(window,
+                                         ECORE_X_ATOM_XDND_TYPE_LIST,
+                                         ECORE_X_ATOM_ATOM,
+                                         32, data, num + 1);
+     }
+   else
+     {
+       if (!ecore_x_dnd_type_isset(window, type))
+         {
+            free(old_data);
+            return;
+         }
+       newset = calloc(num - 1, sizeof(Ecore_X_Atom));
+       if (!newset)
+         {
+            free(old_data);
+            return;
+         }
+       data = (unsigned char *)newset;
+       for (i = 0; i < num; i++)
+         if (oldset[i] != atom)
+           newset[j++] = oldset[i];
+
+       ecore_x_window_prop_property_set(window,
+                                         ECORE_X_ATOM_XDND_TYPE_LIST,
+                                         ECORE_X_ATOM_ATOM,
+                                         32, data, num - 1);
+     }
+
+   free(oldset);
+   free(newset);
+}
+
+/* FIXME: round trips, but I don't think we can do much, here */
+
+/**
+ * Set the types.
+ * @param   window Unused.
+ * @param   types  The types to set
+ * @param   num_types The number of types
+ *
+ * Set the types.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dnd_type_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_dnd_type_get_fetch(), which gets the reply.
+ */
+EAPI void
+ecore_x_dnd_types_set(Ecore_X_Window window,
+                      char         **types,
+                      unsigned int   num_types)
+{
+   Ecore_X_Atom *newset = NULL;
+   void         *data = NULL;
+   uint32_t      i;
+
+   if (!num_types)
+     {
+       ecore_x_window_prop_property_del(window, ECORE_X_ATOM_XDND_TYPE_LIST);
+     }
+   else
+     {
+        xcb_intern_atom_cookie_t *cookies;
+        xcb_intern_atom_reply_t  *reply;
+
+        cookies = (xcb_intern_atom_cookie_t *)malloc(sizeof(xcb_intern_atom_cookie_t));
+        if (!cookies) return;
+       for (i = 0; i < num_types; i++)
+         cookies[i] = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
+                                                 strlen(types[i]), types[i]);
+        data = calloc(num_types, sizeof(Ecore_X_Atom));
+       if (!data)
+          {
+            for (i = 0; i < num_types; i++)
+              {
+                 reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], NULL);
+                 if (reply) free(reply);
+              }
+            free(cookies);
+            return;
+          }
+       newset = data;
+       for (i = 0; i < num_types; i++)
+          {
+             reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], NULL);
+             if (reply)
+               {
+                  newset[i] = reply->atom;
+                  free(reply);
+               }
+             else
+               newset[i] = XCB_NONE;
+          }
+        free(cookies);
+       ecore_x_window_prop_property_set(window, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                         ECORE_X_ATOM_ATOM, 32, data, num_types);
+       free(data);
+     }
+}
+
+Ecore_X_DND_Source *
+_ecore_x_dnd_source_get(void)
+{
+   return _source;
+}
+
+Ecore_X_DND_Target *
+_ecore_x_dnd_target_get(void)
+{
+   return _target;
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param source Window whose properties are requested.
+ */
+EAPI void
+ecore_x_dnd_begin_prefetch(Ecore_X_Window source)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       source ? source : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_XDND_AWARE,
+                                       ECORE_X_ATOM_ATOM,
+                                       0, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_dnd_begin_prefetch().
+ */
+EAPI void
+ecore_x_dnd_begin_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/* FIXME: round trip */
+
+/**
+ * Begins the DnD.
+ * @param  source Unused.
+ * @param  data   The data.
+ * @param  size   The size of the data.
+ * @return        0 on failure, 1 otherwise.
+ *
+ * Begins the DnD. Returns 0 on failure, 1 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dnd_begin_prefetch(), which sends the GetProperty request,
+ * then ecore_x_dnd_begin_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_dnd_begin(Ecore_X_Window source,
+                  unsigned char *data,
+                  int            size)
+{
+   ecore_x_selection_xdnd_prefetch();
+   if (!ecore_x_dnd_version_get(source))
+     {
+        ecore_x_selection_xdnd_fetch();
+        return 0;
+     }
+
+   /* Take ownership of XdndSelection */
+   ecore_x_selection_xdnd_prefetch();
+   ecore_x_selection_xdnd_fetch();
+   if (!ecore_x_selection_xdnd_set(source, data, size))
+     return 0;
+
+   _source->win = source;
+   ecore_x_window_ignore_set(_source->win, 1);
+   _source->state = ECORE_X_DND_SOURCE_DRAGGING;
+   _source->time = _ecore_xcb_event_last_time;
+
+   /* Default Accepted Action: ask */
+   _source->action = ECORE_X_ATOM_XDND_ACTION_COPY;
+   _source->accepted_action = XCB_NONE;
+   return 1;
+}
+
+EAPI int
+ecore_x_dnd_drop(void)
+{
+   uint8_t status = 0;
+
+   if (_source->dest)
+     {
+        xcb_client_message_event_t ev;
+
+       ev.response_type = XCB_CLIENT_MESSAGE;
+       ev.format = 32;
+       ev.window = _source->dest;
+
+       if (_source->will_accept)
+         {
+            ev.type = ECORE_X_ATOM_XDND_DROP;
+            ev.data.data32[0] = _source->win;
+            ev.data.data32[1] = 0;
+            ev.data.data32[2] = _source->time;
+            xcb_send_event(_ecore_xcb_conn, 0, _source->dest, 0, (const char *)&ev);
+            _source->state = ECORE_X_DND_SOURCE_DROPPED;
+            status = 1;
+         }
+       else
+         {
+            ev.type = ECORE_X_ATOM_XDND_LEAVE;
+            ev.data.data32[0] = _source->win;
+            ev.data.data32[1] = 0;
+            xcb_send_event(_ecore_xcb_conn, 0, _source->dest, 0, (const char *)&ev);
+            _source->state = ECORE_X_DND_SOURCE_IDLE;
+         }
+     }
+   else
+     {
+       /* Dropping on nothing */
+       ecore_x_selection_xdnd_clear();
+       _source->state = ECORE_X_DND_SOURCE_IDLE;
+     }
+   ecore_x_window_ignore_set(_source->win, 0);
+
+   _source->dest = XCB_NONE;
+
+   return status;
+}
+
+EAPI void
+ecore_x_dnd_send_status(int               will_accept,
+                        int               suppress,
+                        Ecore_X_Rectangle rectangle,
+                        Ecore_X_Atom      action)
+{
+   xcb_client_message_event_t ev;
+
+   if (_target->state == ECORE_X_DND_TARGET_IDLE)
+     return;
+
+   _target->will_accept = will_accept;
+
+   ev.response_type = XCB_CLIENT_MESSAGE;
+   ev.format = 32;
+   ev.window = _target->source;
+   ev.type = ECORE_X_ATOM_XDND_STATUS;
+
+   ev.data.data32[0] = _target->win;
+   ev.data.data32[1] = 0;
+   if (will_accept)
+     ev.data.data32[1] |= 0x1UL;
+   if (!suppress)
+     ev.data.data32[1] |= 0x2UL;
+
+   /* Set rectangle information */
+   ev.data.data32[2] = rectangle.x;
+   ev.data.data32[2] <<= 16;
+   ev.data.data32[2] |= rectangle.y;
+   ev.data.data32[3] = rectangle.width;
+   ev.data.data32[3] <<= 16;
+   ev.data.data32[3] |= rectangle.height;
+
+   if (will_accept)
+     {
+       ev.data.data32[4] = action;
+       _target->accepted_action = action;
+     }
+   else
+     {
+       ev.data.data32[4] = XCB_NONE;
+       _target->accepted_action = action;
+     }
+
+   xcb_send_event(_ecore_xcb_conn, 0, _target->source, 0, (const char *)&ev);
+}
+
+EAPI void
+ecore_x_dnd_send_finished(void)
+{
+   xcb_client_message_event_t ev;
+
+   if (_target->state == ECORE_X_DND_TARGET_IDLE)
+     return;
+
+   ev.response_type = XCB_CLIENT_MESSAGE;
+   ev.format = 32;
+   ev.window = _target->source;
+   ev.type = ECORE_X_ATOM_XDND_FINISHED;
+
+   ev.data.data32[0] = _target->win;
+   ev.data.data32[1] = 0;
+   ev.data.data32[2] = 0;
+   if (_target->will_accept)
+     {
+       ev.data.data32[1] |= 0x1UL;
+       ev.data.data32[2] = _target->accepted_action;
+     }
+   xcb_send_event(_ecore_xcb_conn, 0, _target->source, 0, (const char *)&ev);
+
+   _target->state = ECORE_X_DND_TARGET_IDLE;
+}
+
+void
+_ecore_x_dnd_drag(Ecore_X_Window root,
+                 int x,
+                  int y)
+{
+   xcb_client_message_event_t ev;
+   Ecore_X_Window             win;
+   Ecore_X_Window            *skip;
+   int                        num;
+
+   if (_source->state != ECORE_X_DND_SOURCE_DRAGGING)
+     return;
+
+   ev.response_type = XCB_CLIENT_MESSAGE;
+   ev.format = 32;
+
+   /* Attempt to find a DND-capable window under the cursor */
+   skip = ecore_x_window_ignore_list(&num);
+//   win = ecore_x_window_at_xy_with_skip_get(x, y, skip, num);
+   win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x, y, skip, num);
+   while (win)
+     {
+        xcb_query_tree_cookie_t cookie_tree;
+        xcb_query_tree_reply_t *reply_tree;
+
+        ecore_x_dnd_version_get_prefetch(win);
+        cookie_tree = xcb_query_tree_unchecked(_ecore_xcb_conn, win);
+
+        ecore_x_dnd_version_get_fetch();
+        /* We found the correct window ? */
+        if (ecore_x_dnd_version_get(win))
+          {
+             reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+             if (reply_tree) free(reply_tree);
+             break;
+          }
+        reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+        if (reply_tree)
+          {
+            win = reply_tree->parent;
+            free(reply_tree);
+          }
+     }
+
+   /* Send XdndLeave to current destination window if we have left it */
+   if ((_source->dest) && (win != _source->dest))
+     {
+       ev.window = _source->dest;
+       ev.type = ECORE_X_ATOM_XDND_LEAVE;
+       ev.data.data32[0] = _source->win;
+       ev.data.data32[1] = 0;
+
+       xcb_send_event(_ecore_xcb_conn, 0, _source->dest, 0, (const char *)&ev);
+       _source->suppress = 0;
+     }
+
+   if (win)
+     {
+       int16_t                   x1;
+       int16_t                   x2;
+       int16_t                   y1;
+       int16_t                   y2;
+
+        ecore_x_dnd_version_get_prefetch(win);
+        ecore_x_dnd_type_get_prefetch(_source->win);
+
+        ecore_x_dnd_version_get_fetch();
+        if (!ecore_x_dnd_version_get(win))
+          {
+            ecore_x_dnd_type_get_fetch();
+            return;
+          }
+
+       _source->version = MIN(ECORE_X_DND_VERSION,
+                               ecore_x_dnd_version_get(win));
+       if (win != _source->dest)
+         {
+            unsigned char *data;
+            Ecore_X_Atom  *types;
+            int            num;
+            int            i;
+
+             ecore_x_dnd_type_get_fetch();
+             if (!ecore_x_window_prop_property_get(_source->win,
+                                                   ECORE_X_ATOM_XDND_TYPE_LIST,
+                                                   ECORE_X_ATOM_ATOM,
+                                                   32, &data, &num))
+               return;
+
+            types = (Ecore_X_Atom *)data;
+
+            /* Entered new window, send XdndEnter */
+            ev.window = win;
+            ev.type = ECORE_X_ATOM_XDND_ENTER;
+            ev.data.data32[0] = _source->win;
+            ev.data.data32[1] = 0;
+            if (num > 3)
+              ev.data.data32[1] |= 0x1UL;
+            else
+              ev.data.data32[1] &= 0xfffffffeUL;
+            ev.data.data32[1] |= ((unsigned long) _source->version) << 24;
+
+            for (i = 2; i < 5; i++)
+              ev.data.data32[i] = 0;
+            for (i = 0; i < MIN(num, 3); ++i)
+              ev.data.data32[i + 2] = types[i];
+            free(data);
+            xcb_send_event(_ecore_xcb_conn, 0, win, 0, (const char *)&ev);
+            _source->await_status = 0;
+            _source->will_accept = 0;
+         }
+        else
+          ecore_x_dnd_type_get_fetch();
+
+       /* Determine if we're still in the rectangle from the last status */
+       x1 = _source->rectangle.x;
+       x2 = _source->rectangle.x + _source->rectangle.width;
+       y1 = _source->rectangle.y;
+       y2 = _source->rectangle.y + _source->rectangle.height;
+
+       if ((!_source->await_status) ||
+           (!_source->suppress) ||
+           ((x < x1) || (x > x2) || (y < y1) || (y > y2)))
+         {
+            ev.window = win;
+            ev.type = ECORE_X_ATOM_XDND_POSITION;
+            ev.data.data32[0] = _source->win;
+            ev.data.data32[1] = 0; /* Reserved */
+            ev.data.data32[2] = ((x << 16) & 0xffff0000) | (y & 0xffff);
+            ev.data.data32[3] = _source->time; /* Version 1 */
+            ev.data.data32[4] = _source->action; /* Version 2, Needs to be pre-set */
+            xcb_send_event(_ecore_xcb_conn, 0, win, 0, (const char *)&ev);
+
+            _source->await_status = 1;
+         }
+     }
+
+   _source->dest = win;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_dpms.c b/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
new file mode 100644 (file)
index 0000000..cb61d45
--- /dev/null
@@ -0,0 +1,451 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_DPMS_Group X DPMS Extension Functions
+ *
+ * Functions related to the X DPMS extension.
+ */
+
+
+#ifdef ECORE_XCB_DPMS
+static int _dpms_available = 0;
+static xcb_dpms_get_version_cookie_t _ecore_xcb_dpms_init_cookie;
+#endif /* ECORE_XCB_DPMS */
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_dpms_init and
+   _ecore_xcb_dpms_init_finalize. The first one gets the cookies and
+   the second one gets the replies. */
+
+void
+_ecore_x_dpms_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_DPMS
+   if (reply && (reply->present))
+      _ecore_xcb_dpms_init_cookie = xcb_dpms_get_version_unchecked(_ecore_xcb_conn, 0, 0);
+#endif /* ECORE_XCB_DPMS */
+}
+
+void
+_ecore_x_dpms_init_finalize(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_version_reply_t *reply;
+
+   reply = xcb_dpms_get_version_reply(_ecore_xcb_conn,
+                                      _ecore_xcb_dpms_init_cookie, NULL);
+
+   if (reply)
+     {
+        if (reply->server_major_version >= 1)
+          _dpms_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Checks if the DPMS extension is available or not.
+ * @return @c 1 if the DPMS extension is available, @c 0 otherwise.
+ *
+ * Return 1 if the X server supports the DPMS Extension version 1.0,
+ * 0 otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_query(void)
+{
+#ifdef ECORE_XCB_DPMS
+   return _dpms_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Sends the DPMSCapable request.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_capable_get_prefetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_capable_cookie_t cookie;
+
+   cookie = xcb_dpms_capable_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Gets the reply of the DPMSCapable request sent by ecore_x_dpms_capable_get_prefetch().
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_capable_get_fetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_capable_cookie_t cookie;
+   xcb_dpms_capable_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_dpms_capable_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Checks if the X server is capable of DPMS.
+ * @return @c 1 if the X server is capable of DPMS, @c 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_capable_get_prefetch(), which sends the DPMSCapable request,
+ * then ecore_x_dpms_capable_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_capable_get(void)
+{
+   int                       capable = 0;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_capable_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   capable = reply->capable;
+#endif /* ECORE_XCB_DPMS */
+
+   return capable;
+}
+
+
+/**
+ * Sends the DPMSInfo request.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_enable_get_prefetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_info_cookie_t cookie;
+
+   cookie = xcb_dpms_info_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Gets the reply of the DPMSInfo request sent by ecore_x_dpms_enable_get_prefetch().
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_enable_get_fetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_info_cookie_t cookie;
+   xcb_dpms_info_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_dpms_info_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Checks the DPMS state of the display.
+ * @return @c 1 if DPMS is enabled, @c 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_enapable_get_prefetch(), which sends the DPMSInfo request,
+ * then ecore_x_dpms_enapable_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_enable_get(void)
+{
+   int                    enable = 0;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_info_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   enable = reply->state;
+#endif /* ECORE_XCB_DPMS */
+
+   return enable;
+}
+
+
+/**
+ * Sets the DPMS state of the display.
+ * @param enabled @c 0 to disable DPMS characteristics of the server, enable it otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_enabled_set(int enabled)
+{
+#ifdef ECORE_XCB_DPMS
+   if (enabled)
+      xcb_dpms_enable(_ecore_xcb_conn);
+   else
+      xcb_dpms_disable(_ecore_xcb_conn);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Sets the timeouts. The values are in unit of seconds.
+ * @param standby Amount of time of inactivity before standby mode will be invoked.
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ * @return        Returns always 1.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_timeouts_set(unsigned int standby,
+                          unsigned int suspend,
+                          unsigned int off)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_set_timeouts(_ecore_xcb_conn, standby, suspend, off);
+#endif /* ECORE_XCB_DPMS */
+
+   return 1;
+}
+
+
+/**
+ * Sends the DPMSGetTimeouts request.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeouts_get_prefetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_cookie_t cookie;
+
+   cookie = xcb_dpms_get_timeouts_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Gets the reply of the DPMSGetTimeouts request sent by ecore_x_dpms_timeouts_get_prefetch().
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeouts_get_fetch(void)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_cookie_t cookie;
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_dpms_get_timeouts_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Gets the timeouts. The values are in unit of seconds.
+ * @param standby Amount of time of inactivity before standby mode will be invoked.
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeouts_get(unsigned int *standby,
+                          unsigned int *suspend,
+                          unsigned int *off)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (reply)
+     {
+        if (standby) *standby = reply->standby_timeout;
+        if (suspend) *suspend = reply->suspend_timeout;
+        if (off) *off = 0;
+     }
+   else
+#endif /* ECORE_XCB_DPMS */
+     {
+        if (standby) *standby = 0;
+        if (suspend) *suspend = 0;
+        if (off) *off = 0;
+     }
+}
+
+
+/**
+ * Returns the amount of time of inactivity before standby mode is invoked.
+ * @return The standby timeout value.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_standby_get(void)
+{
+   int                            standby = 0;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   standby = reply->standby_timeout;
+#endif /* ECORE_XCB_DPMS */
+
+   return standby;
+}
+
+
+/**
+ * Returns the amount of time of inactivity before the second level of
+ * power saving is invoked.
+ * @return The suspend timeout value.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_suspend_get(void)
+{
+   int                            suspend = 0;;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   suspend = reply->suspend_timeout;
+#endif /* ECORE_XCB_DPMS */
+
+   return suspend;
+}
+
+
+/**
+ * Returns the amount of time of inactivity before the third and final
+ * level of power saving is invoked.
+ * @return The off timeout value.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_off_get(void)
+{
+   int                            off = 0;
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   off = reply->off_timeout;
+#endif /* ECORE_XCB_DPMS */
+
+   return off;
+}
+
+
+/**
+ * Sets the standby timeout (in unit of seconds).
+ * @param new_standby Amount of time of inactivity before standby mode will be invoked.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_standby_set(unsigned int new_standby)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_dpms_set_timeouts(_ecore_xcb_conn,
+                         new_standby,
+                         reply->suspend_timeout,
+                         reply->off_timeout);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Sets the suspend timeout (in unit of seconds).
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_suspend_set(unsigned int new_suspend)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_dpms_set_timeouts(_ecore_xcb_conn,
+                         reply->standby_timeout,
+                         new_suspend,
+                         reply->off_timeout);
+#endif /* ECORE_XCB_DPMS */
+}
+
+
+/**
+ * Sets the off timeout (in unit of seconds).
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_dpms_timeouts_get_prefetch(), which sends the DPMSGetTimeouts request,
+ * then ecore_x_dpms_timeouts_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_off_set(unsigned int new_off)
+{
+#ifdef ECORE_XCB_DPMS
+   xcb_dpms_get_timeouts_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_dpms_set_timeouts(_ecore_xcb_conn,
+                         reply->standby_timeout,
+                         reply->suspend_timeout,
+                         new_off);
+#endif /* ECORE_XCB_DPMS */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_drawable.c b/src/lib/ecore_x/xcb/ecore_xcb_drawable.c
new file mode 100644 (file)
index 0000000..3a1bb5b
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+#include <xcb/xcb.h>
+
+
+/**
+ * @defgroup Ecore_X_Drawable_Group X Drawable Functions
+ *
+ * Functions that operate on drawables.
+ */
+
+
+/**
+ * Sends the GetGeometry request.
+ * @param drawable Drawable whose characteristics are sought.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI void
+ecore_x_drawable_geometry_get_prefetch(Ecore_X_Drawable drawable)
+{
+   xcb_get_geometry_cookie_t cookie;
+
+   cookie = xcb_get_geometry_unchecked(_ecore_xcb_conn, drawable);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetGeometry request sent by ecore_x_atom_get_prefetch().
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI void
+ecore_x_drawable_geometry_get_fetch(void)
+{
+   xcb_get_geometry_cookie_t cookie;
+   xcb_get_geometry_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_geometry_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+
+/**
+ * Retrieves the geometry of the given drawable.
+ * @param drawable Unused.
+ * @param x        Pointer to an integer into which the X position is to be stored.
+ * @param y        Pointer to an integer into which the Y position is to be stored.
+ * @param width    Pointer to an integer into which the width is to be stored.
+ * @param height   Pointer to an integer into which the height is to be stored.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_drawable_geometry_get_prefetch(), which sends the GetGeometry request,
+ * then ecore_x_drawable_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI void
+ecore_x_drawable_geometry_get(Ecore_X_Drawable drawable __UNUSED__,
+                              int             *x,
+                              int             *y,
+                              int             *width,
+                              int             *height)
+{
+   xcb_get_geometry_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = 0;
+        if (height) *height = 0;
+        return;
+     }
+
+   if (x) *x = reply->x;
+   if (y) *y = reply->y;
+   if (width) *width = reply->width;
+   if (height) *height = reply->height;
+}
+
+
+/**
+ * Retrieves the width of the border of the given drawable.
+ * @param  drawable Unused.
+ * @return          The border width of the given drawable.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_drawable_geometry_get_prefetch(), which sends the GetGeometry request,
+ * then ecore_x_drawable_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI int
+ecore_x_drawable_border_width_get(Ecore_X_Drawable drawable __UNUSED__)
+{
+   xcb_get_geometry_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   return reply->border_width;
+}
+
+
+/**
+ * Retrieves the depth of the given drawable.
+ * @param  drawable Unused.
+ * @return          The depth of the given drawable.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_drawable_geometry_get_prefetch(), which sends the GetGeometry request,
+ * then ecore_x_drawable_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI int
+ecore_x_drawable_depth_get(Ecore_X_Drawable drawable __UNUSED__)
+{
+   xcb_get_geometry_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   return reply->depth;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_e.c b/src/lib/ecore_x/xcb/ecore_xcb_e.c
new file mode 100644 (file)
index 0000000..4c82617
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+/*
+ * OLD E hints
+ */
+
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+EAPI void
+ecore_x_e_frame_size_set(Ecore_X_Window window,
+                         int            fl,
+                         int            fr,
+                         int            ft,
+                         int            fb)
+{
+   uint32_t frames[4];
+
+   frames[0] = fl;
+   frames[1] = fr;
+   frames[2] = ft;
+   frames[3] = fb;
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_E_FRAME_SIZE, ECORE_X_ATOM_CARDINAL, 32,
+                       4, (const void *)frames);
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_events.c b/src/lib/ecore_x/xcb/ecore_xcb_events.c
new file mode 100644 (file)
index 0000000..bf6799a
--- /dev/null
@@ -0,0 +1,2083 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "Ecore.h"
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+/** OpenBSD does not define CODESET
+ * FIXME ??
+ */
+
+#ifndef CODESET
+#define CODESET "INVALID"
+#endif
+
+#if 0
+static void _ecore_x_event_free_window_prop_name_class_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_title_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev);
+#endif
+static void _ecore_x_event_free_key_down(void *data, void *ev);
+static void _ecore_x_event_free_key_up(void *data, void *ev);
+
+static Ecore_X_Window _ecore_xcb_mouse_down_last_window = 0;
+static Ecore_X_Window _ecore_xcb_mouse_down_last_last_window = 0;
+static Ecore_X_Window _ecore_xcb_mouse_down_last_event_window = 0;
+static Ecore_X_Window _ecore_xcb_mouse_down_last_last_event_window = 0;
+static Ecore_X_Time   _ecore_xcb_mouse_down_last_time = 0;
+static Ecore_X_Time   _ecore_xcb_mouse_down_last_last_time = 0;
+static int            _ecore_xcb_mouse_up_count = 0;
+static int            _ecore_xcb_mouse_down_did_triple = 0;
+
+
+/* FIXME: roundtrip */
+EAPI void
+ecore_x_event_mask_set(Ecore_X_Window     window,
+                       Ecore_X_Event_Mask mask)
+{
+   xcb_get_window_attributes_cookie_t cookie;
+   xcb_get_window_attributes_reply_t *reply;
+   uint32_t                           value_list;
+
+   if (!window)
+      window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, window);
+   reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply) return;
+
+   value_list = mask | reply->your_event_mask;
+   xcb_change_window_attributes(_ecore_xcb_conn, window, XCB_CW_EVENT_MASK, &value_list);
+   free(reply);
+}
+
+/* FIXME: roundtrip */
+EAPI void
+ecore_x_event_mask_unset(Ecore_X_Window     window,
+                         Ecore_X_Event_Mask mask)
+{
+   xcb_get_window_attributes_cookie_t cookie;
+   xcb_get_window_attributes_reply_t *reply;
+   uint32_t value_list;
+
+   if (!window)
+      window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, window);
+   reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply) return;
+
+   value_list = reply->your_event_mask & ~mask;
+   xcb_change_window_attributes(_ecore_xcb_conn, window, XCB_CW_EVENT_MASK, &value_list);
+   free(reply);
+}
+
+#if 0
+static void
+_ecore_x_event_free_window_prop_name_class_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Name_Class_Change *e;
+
+   e = ev;
+   if (e->name) free(e->name);
+   if (e->clas) free(e->clas);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_title_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Title_Change *e;
+
+   e = ev;
+   if (e->title) free(e->title);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Visible_Title_Change *e;
+
+   e = ev;
+   if (e->title) free(e->title);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Icon_Name_Change *e;
+
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e;
+
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Client_Machine_Change *e;
+
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+#endif
+
+static void
+_ecore_x_event_free_key_down(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Key_Down *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_key_up(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Key_Up *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_xdnd_enter(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Xdnd_Enter *e;
+   int                       i;
+
+   e = ev;
+   for (i = 0; i < e->num_types; i++)
+     free(e->types[i]);
+   free(e->types);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_selection_notify(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Selection_Notify *e;
+   Ecore_X_Selection_Data         *sel;
+
+   e = ev;
+   sel = e->data;
+   if (sel->free)
+     sel->free(sel);
+   free(e->target);
+   free(e);
+}
+
+/* FIXME: handle this event */
+void
+_ecore_x_event_handle_key_press(xcb_generic_event_t *event)
+{
+   xcb_key_press_event_t  *ev;
+/*    Ecore_X_Event_Key_Down *e; */
+/*    char                   *keyname; */
+/*    int                     val; */
+/*    char                    buf[256]; */
+/*    KeySym                  sym; */
+/*    XComposeStatus          status; */
+
+   ev = (xcb_key_press_event_t *)event;
+/*    e = calloc(1, sizeof(Ecore_X_Event_Key_Down)); */
+/*    if (!e) return; */
+/*    keyname = XKeysymToString(XKeycodeToKeysym(xevent->xkey.display,  */
+/*                                           xevent->xkey.keycode, 0)); */
+/*    if (!keyname) */
+/*      { */
+/*     snprintf(buf, sizeof(buf), "Keycode-%i", xevent->xkey.keycode); */
+/*     keyname = buf; */
+/*      } */
+/*    e->keyname = strdup(keyname); */
+/*    if (!e->keyname) */
+/*      { */
+/*     free(e); */
+/*     return; */
+/*      } */
+/*    val = XLookupString((XKeyEvent *)xevent, buf, sizeof(buf), &sym, &status); */
+/*    if (val > 0) */
+/*      { */
+/*     buf[val] = 0; */
+/*     e->key_compose = ecore_txt_convert(nl_langinfo(CODESET), "UTF-8", buf); */
+/*      } */
+/*    else e->key_compose = NULL; */
+/*    keyname = XKeysymToString(sym); */
+/*    if (keyname) e->keysymbol = strdup(keyname); */
+/*    else e->keysymbol = strdup(e->keyname); */
+/*    if (!e->keysymbol) */
+/*      { */
+/*     if (e->keyname) free(e->keyname); */
+/*     if (e->key_compose) free(e->key_compose); */
+/*     free(e); */
+/*     return; */
+/*      } */
+/*    if (xevent->xkey.subwindow) e->win = xevent->xkey.subwindow; */
+/*    else e->win = xevent->xkey.window; */
+/*    e->event_win = xevent->xkey.window; */
+/*    e->time = xevent->xkey.time; */
+/*    e->modifiers = xevent->xkey.state; */
+/*    _ecore_x_event_last_time = e->time; */
+/*    ecore_event_add(ECORE_X_EVENT_KEY_DOWN, e, _ecore_x_event_free_key_down, NULL); */
+}
+
+/* FIXME: handle this event */
+void
+_ecore_x_event_handle_key_release(xcb_generic_event_t *event)
+{
+   xcb_key_release_event_t *ev;
+/*    Ecore_X_Event_Key_Up    *e; */
+/*    char                   *keyname; */
+/*    int                     val; */
+/*    char                    buf[256]; */
+/*    KeySym                  sym; */
+/*    XComposeStatus          status; */
+
+   ev = (xcb_key_release_event_t *)event;
+/*    e = calloc(1, sizeof(Ecore_X_Event_Key_Up)); */
+/*    if (!e) return; */
+/*    keyname = XKeysymToString(XKeycodeToKeysym(xevent->xkey.display,  */
+/*                                           xevent->xkey.keycode, 0)); */
+/*    if (!keyname) */
+/*      { */
+/*     snprintf(buf, sizeof(buf), "Keycode-%i", xevent->xkey.keycode); */
+/*     keyname = buf; */
+/*      } */
+/*    e->keyname = strdup(keyname); */
+/*    if (!e->keyname) */
+/*      { */
+/*     free(e); */
+/*     return; */
+/*      } */
+/*    val = XLookupString((XKeyEvent *)xevent, buf, sizeof(buf), &sym, &status); */
+/*    if (val > 0) */
+/*      { */
+/*     buf[val] = 0; */
+/*     e->key_compose = ecore_txt_convert("ISO8859-1", "UTF-8", buf); */
+/*      } */
+/*    else e->key_compose = NULL; */
+/*    keyname = XKeysymToString(sym); */
+/*    if (keyname) e->keysymbol = strdup(keyname); */
+/*    else e->keysymbol = strdup(e->keyname); */
+/*    if (!e->keysymbol) */
+/*      { */
+/*     if (e->keyname) free(e->keyname); */
+/*     if (e->key_compose) free(e->key_compose); */
+/*     free(e); */
+/*     return; */
+/*      } */
+/*    if (xevent->xkey.subwindow) e->win = xevent->xkey.subwindow; */
+/*    else e->win = xevent->xkey.window; */
+/*    e->event_win = xevent->xkey.window; */
+/*    e->time = xevent->xkey.time; */
+/*    e->modifiers = xevent->xkey.state; */
+/*    _ecore_x_event_last_time = e->time; */
+/*    ecore_event_add(ECORE_X_EVENT_KEY_UP, e, _ecore_x_event_free_key_up, NULL); */
+}
+
+void
+_ecore_x_event_handle_button_press(xcb_generic_event_t *event)
+{
+   xcb_button_press_event_t *ev;
+   int                       i;
+
+   ev = (xcb_button_press_event_t *)event;
+   if ((ev->detail > 3) && (ev->detail < 8))
+     {
+       Ecore_X_Event_Mouse_Wheel *e;
+
+       e = malloc(sizeof(Ecore_X_Event_Mouse_Wheel));
+
+       if (!e)
+         return;
+
+       e->modifiers = ev->state;
+       e->direction = 0;
+       e->z = 0;
+       if      (ev->detail == 4)
+         {
+            e->direction = 0;
+            e->z = -1;
+         }
+       else if (ev->detail == 5)
+         {
+            e->direction = 0;
+            e->z = 1;
+         }
+       else if (ev->detail == 6)
+         {
+            e->direction = 1;
+            e->z = -1;
+         }
+       else if (ev->detail == 7)
+         {
+            e->direction = 1;
+            e->z = 1;
+         }
+       e->x = ev->event_x;
+       e->y = ev->event_y;
+       e->root.x = ev->root_x;
+       e->root.y = ev->root_y;
+
+       if (ev->child)
+         e->win = ev->child;
+       else
+         e->win = ev->event;
+
+       e->event_win = ev->event;
+       e->same_screen = ev->same_screen;
+       e->root_win = ev->root;
+       e->time = ev->time;
+       _ecore_xcb_event_last_time = e->time;
+       _ecore_xcb_event_last_window = e->win;
+       _ecore_xcb_event_last_root_x = e->root.x;
+       _ecore_xcb_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_WHEEL, e, NULL, NULL);
+       for (i = 0; i < _ecore_window_grabs_num; i++)
+         {
+            if ((_ecore_window_grabs[i] == ev->event) ||
+                (_ecore_window_grabs[i] == ev->child))
+              {
+                 int replay = 0;
+
+                 if (_ecore_window_grab_replay_func)
+                   replay = _ecore_window_grab_replay_func(_ecore_window_grab_replay_data,
+                                                           ECORE_X_EVENT_MOUSE_WHEEL,
+                                                           e);
+                  /* FIXME: xcb_key_press_event_t does not save the */
+                  /* connection. So I use the current one */
+                 if (replay)
+                   xcb_allow_events(_ecore_xcb_conn,
+                                     XCB_ALLOW_REPLAY_POINTER,
+                                     ev->time);
+                 else
+                   xcb_allow_events(_ecore_xcb_conn,
+                                     XCB_ALLOW_ASYNC_POINTER,
+                                     ev->time);
+                 break;
+              }
+         }
+     }
+   else
+     {
+         {
+            Ecore_X_Event_Mouse_Move *e;
+
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+            if (!e) return;
+            e->modifiers = ev->state;
+            e->x = ev->event_x;
+            e->y = ev->event_y;
+            e->root.x = ev->root_x;
+            e->root.y = ev->root_y;
+            if (ev->child) e->win = ev->child;
+            else e->win = ev->event;
+            e->same_screen = ev->same_screen;
+            e->root_win = ev->root;
+            e->event_win = ev->event;
+            e->time = ev->time;
+            _ecore_xcb_event_last_time = e->time;
+            _ecore_xcb_event_last_window = e->win;
+            _ecore_xcb_event_last_root_x = e->root.x;
+            _ecore_xcb_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+         {
+            Ecore_X_Event_Mouse_Button_Down *e;
+
+            if (_ecore_xcb_mouse_down_did_triple)
+              {
+                 _ecore_xcb_mouse_down_last_window = 0;
+                 _ecore_xcb_mouse_down_last_last_window = 0;
+                 _ecore_xcb_mouse_down_last_event_window = 0;
+                 _ecore_xcb_mouse_down_last_last_event_window = 0;
+                 _ecore_xcb_mouse_down_last_time = 0;
+                 _ecore_xcb_mouse_down_last_last_time = 0;
+              }
+
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Button_Down));
+            if (!e) return;
+            e->button = ev->detail;
+            e->modifiers = ev->state;
+            e->x = ev->event_x;
+            e->y = ev->event_y;
+            e->root.x = ev->root_x;
+            e->root.y = ev->root_y;
+            if (ev->child) e->win = ev->child;
+            else e->win = ev->event;
+            e->same_screen = ev->same_screen;
+            e->root_win = ev->root;
+            e->event_win = ev->event;
+            e->time = ev->time;
+            if (e->win == e->event_win)
+              {
+                 if (((int)(e->time - _ecore_xcb_mouse_down_last_time) <=
+                      (int)(1000 * _ecore_xcb_double_click_time)) &&
+                     (e->win == _ecore_xcb_mouse_down_last_window) &&
+                     (e->event_win == _ecore_xcb_mouse_down_last_event_window)
+                     )
+                   e->double_click = 1;
+                 if (((int)(e->time - _ecore_xcb_mouse_down_last_last_time) <=
+                      (int)(2 * 1000 * _ecore_xcb_double_click_time)) &&
+                     (e->win == _ecore_xcb_mouse_down_last_window) &&
+                      (e->win == _ecore_xcb_mouse_down_last_last_window) &&
+                     (e->event_win == _ecore_xcb_mouse_down_last_event_window) &&
+                      (e->event_win == _ecore_xcb_mouse_down_last_last_event_window)
+                     )
+                   {
+                        e->triple_click = 1;
+                      _ecore_xcb_mouse_down_did_triple = 1;
+                   }
+                  else
+                    _ecore_xcb_mouse_down_did_triple = 0;
+              }
+             if (!e->double_click && !e->triple_click)
+               _ecore_xcb_mouse_up_count = 0;
+            _ecore_xcb_event_last_time = e->time;
+            _ecore_xcb_event_last_window = e->win;
+            _ecore_xcb_event_last_root_x = e->root.x;
+            _ecore_xcb_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+            for (i = 0; i < _ecore_window_grabs_num; i++)
+              {
+                 if ((_ecore_window_grabs[i] == ev->event) ||
+                     (_ecore_window_grabs[i] == ev->child))
+                   {
+                      int replay = 0;
+
+                      if (_ecore_window_grab_replay_func)
+                        replay = _ecore_window_grab_replay_func(_ecore_window_grab_replay_data,
+                                                                ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
+                                                                e);
+                       /* FIXME: xcb_key_press_event_t does not save the */
+                       /* connection. So I use the current one */
+                      if (replay)
+                        xcb_allow_events(_ecore_xcb_conn,
+                                          XCB_ALLOW_REPLAY_POINTER,
+                                          ev->time);
+                      else
+                        xcb_allow_events(_ecore_xcb_conn,
+                                          XCB_ALLOW_ASYNC_POINTER,
+                                          ev->time);
+                      break;
+                   }
+              }
+            if (e->win == e->event_win)
+              {
+                 if (!_ecore_xcb_mouse_down_did_triple)
+                   {
+                      _ecore_xcb_mouse_down_last_last_window = _ecore_xcb_mouse_down_last_window;
+                      if (ev->child)
+                        _ecore_xcb_mouse_down_last_window = ev->child;
+                      else
+                        _ecore_xcb_mouse_down_last_window = ev->event;
+                      _ecore_xcb_mouse_down_last_last_event_window = _ecore_xcb_mouse_down_last_event_window;
+                      _ecore_xcb_mouse_down_last_event_window = ev->event;
+                      _ecore_xcb_mouse_down_last_last_time = _ecore_xcb_mouse_down_last_time;
+                      _ecore_xcb_mouse_down_last_time = ev->time;
+                   }
+              }
+         }
+     }
+}
+
+void
+_ecore_x_event_handle_button_release(xcb_generic_event_t *event)
+{
+   xcb_button_release_event_t *ev;
+
+   ev = (xcb_button_release_event_t *)event;
+   /* filter out wheel buttons */
+   if ((ev->detail <= 3) || (ev->detail > 7))
+     {
+         {
+            Ecore_X_Event_Mouse_Move *e;
+
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+            if (!e) return;
+            e->modifiers = ev->state;
+            e->x = ev->event_x;
+            e->y = ev->event_y;
+            e->root.x = ev->root_x;
+            e->root.y = ev->root_y;
+            if (ev->child) e->win = ev->child;
+            else e->win = ev->event;
+            e->same_screen = ev->same_screen;
+            e->root_win = ev->root;
+            e->event_win = ev->event;
+            e->time = ev->time;
+            _ecore_xcb_event_last_time = e->time;
+            _ecore_xcb_event_last_window = e->win;
+            _ecore_xcb_event_last_root_x = e->root.x;
+            _ecore_xcb_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+         {
+            Ecore_X_Event_Mouse_Button_Up *e;
+
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Button_Up));
+            if (!e) return;
+            e->button = ev->detail;
+            e->modifiers = ev->state;
+            e->x = ev->event_x;
+            e->y = ev->event_y;
+            e->root.x = ev->root_x;
+            e->root.y = ev->root_y;
+            if (ev->child) e->win = ev->child;
+            else e->win = ev->event;
+            e->same_screen = ev->same_screen;
+            e->root_win = ev->root;
+            e->event_win = ev->event;
+            e->time = ev->time;
+             _ecore_xcb_mouse_up_count++;
+            if (e->win == e->event_win)
+              {
+                 if ((_ecore_xcb_mouse_up_count >= 2) &&
+                      ((int)(e->time - _ecore_xcb_mouse_down_last_time) <=
+                      (int)(1000 * _ecore_xcb_double_click_time)) &&
+                     (e->win == _ecore_xcb_mouse_down_last_window) &&
+                     (e->event_win == _ecore_xcb_mouse_down_last_event_window)
+                     )
+                   e->double_click = 1;
+                 if ((_ecore_xcb_mouse_up_count >= 3) &&
+                     ((int)(e->time - _ecore_xcb_mouse_down_last_last_time) <=
+                      (int)(2 * 1000 * _ecore_xcb_double_click_time)) &&
+                     (e->win == _ecore_xcb_mouse_down_last_window) &&
+                      (e->win == _ecore_xcb_mouse_down_last_last_window) &&
+                     (e->event_win == _ecore_xcb_mouse_down_last_event_window) &&
+                      (e->event_win == _ecore_xcb_mouse_down_last_last_event_window)
+                     )
+                    e->triple_click = 1;
+              }
+            _ecore_xcb_event_last_time = e->time;
+            _ecore_xcb_event_last_window = e->win;
+            _ecore_xcb_event_last_root_x = e->root.x;
+            _ecore_xcb_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+         }
+     }
+}
+
+void
+_ecore_x_event_handle_motion_notify(xcb_generic_event_t *event)
+{
+   xcb_motion_notify_event_t *ev;
+   Ecore_X_Event_Mouse_Move  *e;
+
+   ev = (xcb_motion_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+   if (!e) return;
+   e->modifiers = ev->state;
+   e->x = ev->event_x;
+   e->y = ev->event_y;
+   e->root.x = ev->root_x;
+   e->root.y = ev->root_y;
+   if (ev->child) e->win = ev->child;
+   else e->win = ev->event;
+   e->same_screen = ev->same_screen;
+   e->root_win = ev->root;
+   e->event_win = ev->event;
+   e->time = ev->time;
+   _ecore_xcb_event_last_time = e->time;
+   _ecore_xcb_event_last_window = e->win;
+   _ecore_xcb_event_last_root_x = e->root.x;
+   _ecore_xcb_event_last_root_y = e->root.y;
+
+   /* Xdnd handling */
+   _ecore_x_dnd_drag(e->root_win, e->root.x, e->root.y);
+
+   ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_enter_notify(xcb_generic_event_t *event)
+{
+   xcb_enter_notify_event_t *ev;
+
+   ev = (xcb_enter_notify_event_t *)event;
+
+     {
+       Ecore_X_Event_Mouse_Move *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+       if (!e) return;
+       e->modifiers = ev->state;
+       e->x = ev->event_x;
+       e->y = ev->event_y;
+       e->root.x = ev->root_x;
+       e->root.y = ev->root_y;
+       if (ev->child) e->win = ev->child;
+       else e->win = ev->event;
+       e->same_screen = ev->same_screen_focus;
+       e->root_win = ev->root;
+       e->event_win = ev->event;
+       e->time = ev->time;
+       _ecore_xcb_event_last_time = e->time;
+       _ecore_xcb_event_last_window = e->win;
+       _ecore_xcb_event_last_root_x = e->root.x;
+       _ecore_xcb_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+     }
+     {
+       Ecore_X_Event_Mouse_In *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_In));
+       if (!e) return;
+       e->modifiers = ev->state;
+       e->x = ev->event_x;
+       e->y = ev->event_y;
+       e->root.x = ev->root_x;
+       e->root.y = ev->root_y;
+       if (ev->child) e->win = ev->child;
+       else e->win = ev->event;
+       e->same_screen = ev->same_screen_focus;
+       e->root_win = ev->root;
+       e->event_win = ev->event;
+        switch (ev->mode) {
+        case XCB_NOTIFY_MODE_NORMAL:
+          e->mode = ECORE_X_EVENT_MODE_NORMAL;
+          break;
+        case XCB_NOTIFY_MODE_GRAB:
+          e->mode = ECORE_X_EVENT_MODE_GRAB;
+          break;
+        case XCB_NOTIFY_MODE_UNGRAB:
+          e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+          break;
+        default:
+          e->mode = ECORE_X_EVENT_MODE_NORMAL;
+          break;
+        }
+        switch (ev->detail) {
+        case XCB_NOTIFY_DETAIL_ANCESTOR:
+          e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+          break;
+        case XCB_NOTIFY_DETAIL_VIRTUAL:
+          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+          break;
+        case XCB_NOTIFY_DETAIL_INFERIOR:
+          e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+          break;
+        case XCB_NOTIFY_DETAIL_NONLINEAR:
+          e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+          break;
+        case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
+          e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+          break;
+        default:
+          e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+          break;
+        }
+       e->time = ev->time;
+       _ecore_xcb_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_IN, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_leave_notify(xcb_generic_event_t *event)
+{
+   xcb_leave_notify_event_t *ev;
+
+   ev = (xcb_leave_notify_event_t *)event;
+     {
+       Ecore_X_Event_Mouse_Move *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+       if (!e) return;
+       e->modifiers = ev->state;
+       e->x = ev->event_x;
+       e->y = ev->event_y;
+       e->root.x = ev->root_x;
+       e->root.y = ev->root_y;
+       if (ev->child) e->win = ev->child;
+       else e->win = ev->event;
+       e->same_screen = ev->same_screen_focus;
+       e->root_win = ev->root;
+       e->event_win = ev->event;
+       e->time = ev->time;
+       _ecore_xcb_event_last_time = e->time;
+       _ecore_xcb_event_last_window = e->win;
+       _ecore_xcb_event_last_root_x = e->root.x;
+       _ecore_xcb_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+     }
+     {
+       Ecore_X_Event_Mouse_Out *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Out));
+       if (!e) return;
+       e->modifiers = ev->state;
+       e->x = ev->event_x;
+       e->y = ev->event_y;
+       e->root.x = ev->root_x;
+       e->root.y = ev->root_y;
+       if (ev->child) e->win = ev->child;
+       else e->win = ev->event;
+       e->same_screen = ev->same_screen_focus;
+       e->root_win = ev->root;
+       e->event_win = ev->event;
+        switch (ev->mode) {
+        case XCB_NOTIFY_MODE_NORMAL:
+          e->mode = ECORE_X_EVENT_MODE_NORMAL;
+          break;
+        case XCB_NOTIFY_MODE_GRAB:
+          e->mode = ECORE_X_EVENT_MODE_GRAB;
+          break;
+        case XCB_NOTIFY_MODE_UNGRAB:
+          e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+          break;
+        default:
+          e->mode = ECORE_X_EVENT_MODE_NORMAL;
+          break;
+        }
+        switch (ev->detail) {
+        case XCB_NOTIFY_DETAIL_ANCESTOR:
+          e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+          break;
+        case XCB_NOTIFY_DETAIL_VIRTUAL:
+          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+          break;
+        case XCB_NOTIFY_DETAIL_INFERIOR:
+          e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+          break;
+        case XCB_NOTIFY_DETAIL_NONLINEAR:
+          e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+          break;
+        case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
+          e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+          break;
+        default:
+          e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+          break;
+        }
+       e->time = ev->time;
+       _ecore_xcb_event_last_time = e->time;
+       _ecore_xcb_event_last_window = e->win;
+       _ecore_xcb_event_last_root_x = e->root.x;
+       _ecore_xcb_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_OUT, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_focus_in(xcb_generic_event_t *event)
+{
+   xcb_focus_in_event_t          *ev;
+   Ecore_X_Event_Window_Focus_In *e;
+
+   ev = (xcb_focus_in_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_In));
+   if (!e) return;
+   e->win = ev->event;
+   switch (ev->mode) {
+   case XCB_NOTIFY_MODE_NORMAL:
+     e->mode = ECORE_X_EVENT_MODE_NORMAL;
+     break;
+   case XCB_NOTIFY_MODE_GRAB:
+     e->mode = ECORE_X_EVENT_MODE_GRAB;
+     break;
+   case XCB_NOTIFY_MODE_UNGRAB:
+     e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+     break;
+   case XCB_NOTIFY_MODE_WHILE_GRABBED:
+     e->mode = ECORE_X_EVENT_MODE_WHILE_GRABBED;
+     break;
+   }
+   switch (ev->detail) {
+   case XCB_NOTIFY_DETAIL_ANCESTOR:
+     e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+     break;
+   case XCB_NOTIFY_DETAIL_VIRTUAL:
+     e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+     break;
+   case XCB_NOTIFY_DETAIL_INFERIOR:
+     e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+     break;
+   case XCB_NOTIFY_DETAIL_NONLINEAR:
+     e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+     break;
+   case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
+     e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+     break;
+   case XCB_NOTIFY_DETAIL_POINTER:
+     e->detail = ECORE_X_EVENT_DETAIL_POINTER;
+     break;
+   case XCB_NOTIFY_DETAIL_POINTER_ROOT:
+     e->detail = ECORE_X_EVENT_DETAIL_POINTER_ROOT;
+     break;
+   case XCB_NOTIFY_DETAIL_NONE:
+     e->detail = ECORE_X_EVENT_DETAIL_DETAIL_NONE;
+     break;
+   }
+   e->time = _ecore_xcb_event_last_time;
+   _ecore_xcb_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_focus_out(xcb_generic_event_t *event)
+{
+   xcb_focus_out_event_t            *ev;
+   Ecore_X_Event_Window_Focus_Out *e;
+
+   ev = (xcb_focus_out_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_Out));
+   if (!e) return;
+   e->win = ev->event;
+   switch (ev->mode) {
+   case XCB_NOTIFY_MODE_NORMAL:
+     e->mode = ECORE_X_EVENT_MODE_NORMAL;
+     break;
+   case XCB_NOTIFY_MODE_GRAB:
+     e->mode = ECORE_X_EVENT_MODE_GRAB;
+     break;
+   case XCB_NOTIFY_MODE_UNGRAB:
+     e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+     break;
+   case XCB_NOTIFY_MODE_WHILE_GRABBED:
+     e->mode = ECORE_X_EVENT_MODE_WHILE_GRABBED;
+     break;
+   }
+   switch (ev->detail) {
+   case XCB_NOTIFY_DETAIL_ANCESTOR:
+     e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+     break;
+   case XCB_NOTIFY_DETAIL_VIRTUAL:
+     e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+     break;
+   case XCB_NOTIFY_DETAIL_INFERIOR:
+     e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+     break;
+   case XCB_NOTIFY_DETAIL_NONLINEAR:
+     e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+     break;
+   case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
+     e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+     break;
+   case XCB_NOTIFY_DETAIL_POINTER:
+     e->detail = ECORE_X_EVENT_DETAIL_POINTER;
+     break;
+   case XCB_NOTIFY_DETAIL_POINTER_ROOT:
+     e->detail = ECORE_X_EVENT_DETAIL_POINTER_ROOT;
+     break;
+   case XCB_NOTIFY_DETAIL_NONE:
+     e->detail = ECORE_X_EVENT_DETAIL_DETAIL_NONE;
+     break;
+   }
+   e->time = _ecore_xcb_event_last_time;
+   _ecore_xcb_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_keymap_notify(xcb_generic_event_t *event __UNUSED__)
+{
+   /* FIXME: handle this event type */
+}
+
+void
+_ecore_x_event_handle_expose(xcb_generic_event_t *event)
+{
+   xcb_expose_event_t            *ev;
+   Ecore_X_Event_Window_Damage *e;
+
+   ev = (xcb_expose_event_t *)event,
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Damage));
+   if (!e) return;
+   e->win = ev->window;
+   e->time = _ecore_xcb_event_last_time;
+   e->x = ev->x;
+   e->y = ev->y;
+   e->w = ev->width;
+   e->h = ev->height;
+   e->count = ev->count;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_graphics_expose(xcb_generic_event_t *event)
+{
+   xcb_graphics_exposure_event_t *ev;
+   Ecore_X_Event_Window_Damage *e;
+
+   ev = (xcb_graphics_exposure_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Damage));
+   if (!e) return;
+   e->win = ev->drawable;
+   e->time = _ecore_xcb_event_last_time;
+   e->x = ev->x;
+   e->y = ev->y;
+   e->w = ev->width;
+   e->h = ev->height;
+   e->count = ev->count;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_visibility_notify(xcb_generic_event_t *event)
+{
+   xcb_visibility_notify_event_t *ev;
+
+   ev = (xcb_visibility_notify_event_t *)event;
+   if (ev->state != XCB_VISIBILITY_PARTIALLY_OBSCURED)
+   {
+      Ecore_X_Event_Window_Visibility_Change *e;
+
+      e = calloc(1, sizeof(Ecore_X_Event_Window_Visibility_Change));
+      if (!e) return;
+      e->win = ev->window;
+      e->time = _ecore_xcb_event_last_time;
+      if (ev->state == XCB_VISIBILITY_FULLY_OBSCURED)
+        e->fully_obscured = 1;
+      else
+        e->fully_obscured = 0;
+      ecore_event_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, e, NULL, NULL);
+   }
+}
+
+void
+_ecore_x_event_handle_create_notify(xcb_generic_event_t *event)
+{
+   xcb_create_notify_event_t     *ev;
+   Ecore_X_Event_Window_Create *e;
+
+   ev = (xcb_create_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Create));
+   if (!e) return;
+   e->win = ev->window;
+   if (ev->override_redirect)
+      e->override = 1;
+   else
+      e->override = 0;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CREATE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_destroy_notify(xcb_generic_event_t *event)
+{
+   xcb_destroy_notify_event_t     *ev;
+   Ecore_X_Event_Window_Destroy *e;
+
+   ev = (xcb_destroy_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Destroy));
+   if (!e) return;
+   e->win =  ev->window;
+   e->time = _ecore_xcb_event_last_time;
+   if (e->win == _ecore_xcb_event_last_window) _ecore_xcb_event_last_window = 0;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DESTROY, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_unmap_notify(xcb_generic_event_t *event)
+{
+   xcb_unmap_notify_event_t    *ev;
+   Ecore_X_Event_Window_Hide *e;
+
+   ev = (xcb_unmap_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Hide));
+   if (!e) return;
+   e->win = ev->window;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_HIDE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_map_notify(xcb_generic_event_t *event)
+{
+   xcb_map_notify_event_t      *ev;
+   Ecore_X_Event_Window_Show *e;
+
+   ev = (xcb_map_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Show));
+   if (!e) return;
+   e->win = ev->window;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_map_request(xcb_generic_event_t *event)
+{
+   xcb_map_request_event_t             *ev;
+   Ecore_X_Event_Window_Show_Request *e;
+
+   ev = (xcb_map_request_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Show_Request));
+   if (!e) return;
+   e->win = ev->window;
+   e->parent = ev->parent;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_reparent_notify(xcb_generic_event_t *event)
+{
+   xcb_reparent_notify_event_t     *ev;
+   Ecore_X_Event_Window_Reparent *e;
+
+   ev = (xcb_reparent_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Reparent));
+   if (!e) return;
+   e->win = ev->window;
+   e->parent = ev->parent;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_REPARENT, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_configure_notify(xcb_generic_event_t *event)
+{
+   xcb_configure_notify_event_t     *ev;
+   Ecore_X_Event_Window_Configure *e;
+
+   ev = (xcb_configure_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Configure));
+   if (!e) return;
+   e->win = ev->window;
+   e->abovewin = ev->above_sibling;
+   e->x = ev->x;
+   e->y = ev->y;
+   e->w = ev->width;
+   e->h = ev->height;
+   e->border = ev->border_width;
+   e->override = ev->override_redirect;
+   /* send_event is bit 7 (0x80) of response_type */
+   e->from_wm = (ev->response_type & 0x80) ? 1 : 0;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_configure_request(xcb_generic_event_t *event)
+{
+   xcb_configure_request_event_t            *ev;
+   Ecore_X_Event_Window_Configure_Request *e;
+
+   ev = (xcb_configure_request_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Configure_Request));
+   if (!e) return;
+   e->win = ev->window;
+   e->abovewin = ev->sibling;
+   e->x = ev->x;
+   e->y = ev->y;
+   e->w = ev->width;
+   e->h = ev->height;
+   e->border = ev->border_width;
+   e->value_mask = ev->value_mask;
+   switch (ev->stack_mode) {
+   case XCB_STACK_MODE_ABOVE:
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+     break;
+   case XCB_STACK_MODE_BELOW:
+     e->detail = ECORE_X_WINDOW_STACK_BELOW;
+     break;
+   case XCB_STACK_MODE_TOP_IF:
+     e->detail = ECORE_X_WINDOW_STACK_TOP_IF;
+     break;
+   case XCB_STACK_MODE_BOTTOM_IF:
+     e->detail = ECORE_X_WINDOW_STACK_BOTTOM_IF;
+     break;
+   case XCB_STACK_MODE_OPPOSITE:
+     e->detail = ECORE_X_WINDOW_STACK_OPPOSITE;
+     break;
+   }
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_gravity_notify(xcb_generic_event_t *event __UNUSED__)
+{
+   /* FIXME: handle this event type */
+}
+
+void
+_ecore_x_event_handle_resize_request(xcb_generic_event_t *event)
+{
+   xcb_resize_request_event_t            *ev;
+   Ecore_X_Event_Window_Resize_Request *e;
+
+   ev = (xcb_resize_request_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Resize_Request));
+   if (!e) return;
+   e->win = ev->window;
+   e->w = ev->width;
+   e->h = ev->height;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_RESIZE_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_circulate_notify(xcb_generic_event_t *event)
+{
+   xcb_circulate_notify_event_t *ev;
+   Ecore_X_Event_Window_Stack *e;
+
+   ev = (xcb_circulate_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Stack));
+   if (!e) return;
+   e->win = ev->window;
+   e->event_win = ev->event;
+   if (ev->place == XCB_PLACE_ON_TOP)
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+   else
+     e->detail = ECORE_X_WINDOW_STACK_BELOW;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_STACK, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_circulate_request(xcb_generic_event_t *event)
+{
+   xcb_circulate_request_event_t        *ev;
+   Ecore_X_Event_Window_Stack_Request *e;
+
+   ev = (xcb_circulate_request_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Stack_Request));
+   if (!e) return;
+   e->win = ev->window;
+   e->parent = ev->event;
+   if (ev->place == XCB_PLACE_ON_TOP)
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+   else
+     e->detail = ECORE_X_WINDOW_STACK_BELOW;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_STACK_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_property_notify(xcb_generic_event_t *event)
+{
+#if 0 /* for now i disabled this. nice idea though this is - it leaves a lot
+       * to be desired for efficiency that is better left to the app layer
+       */
+   if (xevent->xproperty.atom == ECORE_X_ATOM_WM_CLASS)
+     {
+       Ecore_X_Event_Window_Prop_Name_Class_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Name_Class_Change));
+       if (!e) return;
+       ecore_x_window_prop_name_class_get(xevent->xproperty.window,
+                                          &(e->name), &(e->clas));
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, e, _ecore_x_event_free_window_prop_name_class_change, NULL);
+     }
+   else if ((xevent->xproperty.atom == ECORE_X_ATOM_WM_NAME) || (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_NAME))
+     {
+       Ecore_X_Event_Window_Prop_Title_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Title_Change));
+       if (!e) return;
+       e->title = ecore_x_window_prop_title_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_title_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_VISIBLE_NAME)
+     {
+       Ecore_X_Event_Window_Prop_Visible_Title_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Title_Change));
+       if (!e) return;
+       e->title = ecore_x_window_prop_visible_title_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_visible_title_change, NULL);
+     }
+   else if ((xevent->xproperty.atom == ECORE_X_ATOM_WM_ICON_NAME) || (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_ICON_NAME))
+     {
+       Ecore_X_Event_Window_Prop_Icon_Name_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Icon_Name_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_icon_name_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_icon_name_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME)
+     {
+       Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_visible_icon_name_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_visible_icon_name_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_WM_CLIENT_MACHINE)
+     {
+       Ecore_X_Event_Window_Prop_Client_Machine_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Client_Machine_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_client_machine_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, e, _ecore_x_event_free_window_prop_client_machine_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_PID)
+     {
+       Ecore_X_Event_Window_Prop_Pid_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Pid_Change));
+       if (!e) return;
+       e->pid = ecore_x_window_prop_pid_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, e, NULL, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_DESKTOP)
+     {
+       Ecore_X_Event_Window_Prop_Desktop_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Desktop_Change));
+       if (!e) return;
+       e->desktop = ecore_x_window_prop_desktop_get(xevent->xproperty.window);
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, e, NULL, NULL);
+     }
+   else
+#endif
+   {
+      xcb_property_notify_event_t     *ev;
+      Ecore_X_Event_Window_Property *e;
+
+      ev = (xcb_property_notify_event_t *)event;
+      e = calloc(1,sizeof(Ecore_X_Event_Window_Property));
+      if (!e) return;
+      e->win = ev->window;
+      e->atom = ev->atom;
+      e->time = ev->time;
+      _ecore_xcb_event_last_time = e->time;
+      ecore_event_add(ECORE_X_EVENT_WINDOW_PROPERTY, e, NULL, NULL);
+   }
+}
+
+void
+_ecore_x_event_handle_selection_clear(xcb_generic_event_t *event)
+{
+   xcb_selection_clear_event_t     *ev;
+   Ecore_X_Selection_Intern      *d;
+   Ecore_X_Event_Selection_Clear *e;
+   Ecore_X_Atom                   sel;
+
+   ev = (xcb_selection_clear_event_t *)event;
+   if (!(d = _ecore_x_selection_get(ev->selection)))
+     return;
+   if (ev->time > d->time)
+     {
+       _ecore_x_selection_set(XCB_NONE, NULL, 0,
+                               ev->selection);
+     }
+
+   /* Generate event for app cleanup */
+   e = malloc(sizeof(Ecore_X_Event_Selection_Clear));
+   e->win = ev->owner;
+   e->time = ev->time;
+   sel = ev->selection;
+   if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
+     e->selection = ECORE_X_SELECTION_PRIMARY;
+   else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
+     e->selection = ECORE_X_SELECTION_SECONDARY;
+   else
+     e->selection = ECORE_X_SELECTION_CLIPBOARD;
+   ecore_event_add(ECORE_X_EVENT_SELECTION_CLEAR, e, NULL, NULL);
+
+}
+
+void
+_ecore_x_event_handle_selection_request(xcb_generic_event_t *event)
+{
+   xcb_selection_request_event_t *ev;
+   Ecore_X_Selection_Intern    *sd;
+   xcb_selection_notify_event_t   sn_event;
+   void                          *data;
+
+   ev = (xcb_selection_request_event_t *)event;
+   /* FIXME: is it the correct value ? */
+   sn_event.response_type = XCB_SELECTION_NOTIFY;
+   sn_event.pad0 = 0;
+   /* FIXME: is it the correct value ? */
+   sn_event.sequence = 0;
+   sn_event.time = XCB_CURRENT_TIME;
+   sn_event.requestor = ev->requestor;
+   sn_event.selection = ev->selection;
+   sn_event.target = ev->target;
+
+   if ((sd = _ecore_x_selection_get(ev->selection)) &&
+       (sd->win == ev->owner))
+     {
+       if (!ecore_x_selection_convert(ev->selection, ev->target,
+                                       &data))
+         {
+            /* Refuse selection, conversion to requested target failed */
+            sn_event.property = XCB_NONE;
+         }
+       else
+         {
+            /* FIXME: This does not properly handle large data transfers */
+            ecore_x_window_prop_property_set(ev->requestor,
+                                              ev->property,
+                                              ev->target,
+                                              8, data, sd->length);
+            sn_event.property = ev->property;
+            free(data);
+         }
+     }
+   else
+     {
+       sn_event.property = XCB_NONE;
+       return;
+     }
+
+   /* FIXME: I use _ecore_xcb_conn, as ev has no information on the connection */
+   xcb_send_event(_ecore_xcb_conn, 0,
+                  ev->requestor, 0, (const char *)&sn_event);
+}
+
+/* FIXME: round trip */
+void
+_ecore_x_event_handle_selection_notify(xcb_generic_event_t *event)
+{
+   xcb_selection_notify_event_t   *ev;
+   Ecore_X_Event_Selection_Notify *e;
+   unsigned char                 *data = NULL;
+   Ecore_X_Atom                   selection;
+   int                            num_ret;
+   uint8_t                        format;
+
+   ev = (xcb_selection_notify_event_t *)event;
+   selection = ev->selection;
+
+   if (ev->target == ECORE_X_ATOM_SELECTION_TARGETS)
+     {
+        ecore_x_window_prop_property_get_prefetch(ev->requestor,
+                                                  ev->property,
+                                                  ECORE_X_ATOM_ATOM);
+        ecore_x_window_prop_property_get_fetch();
+        format = ecore_x_window_prop_property_get(ev->requestor,
+                                                  ev->property,
+                                                  ECORE_X_ATOM_ATOM,
+                                                  32,
+                                                  &data,
+                                                  &num_ret);
+       if (!format) return;
+     }
+   else
+     {
+        ecore_x_window_prop_property_get_prefetch(ev->requestor,
+                                                  ev->property,
+                                                  XCB_GET_PROPERTY_TYPE_ANY);
+        ecore_x_window_prop_property_get_fetch();
+        format = ecore_x_window_prop_property_get(ev->requestor,
+                                                  ev->property,
+                                                  ECORE_X_ATOM_ATOM,
+                                                  8,
+                                                  &data,
+                                                  &num_ret);
+       if (!format) return;
+     }
+
+   e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
+   if (!e) return;
+   e->win = ev->requestor;
+   e->time = ev->time;
+   e->target = _ecore_x_selection_target_get(ev->target);
+
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     e->selection = ECORE_X_SELECTION_PRIMARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     e->selection = ECORE_X_SELECTION_SECONDARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     e->selection = ECORE_X_SELECTION_XDND;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     e->selection = ECORE_X_SELECTION_CLIPBOARD;
+   else
+     {
+       free(e);
+       return;
+     }
+   e->data = _ecore_x_selection_parse(e->target, data, num_ret, format);
+
+   ecore_event_add(ECORE_X_EVENT_SELECTION_NOTIFY, e, _ecore_x_event_free_selection_notify, NULL);
+}
+
+void
+_ecore_x_event_handle_colormap_notify(xcb_generic_event_t *event)
+{
+   xcb_colormap_notify_event_t     *ev;
+   Ecore_X_Event_Window_Colormap *e;
+
+   ev = (xcb_colormap_notify_event_t *)event;
+   e = calloc(1,sizeof(Ecore_X_Event_Window_Colormap));
+   if (!e) return;
+   e->win = ev->window;
+   e->cmap = ev->colormap;
+   if (ev->state == XCB_COLORMAP_STATE_INSTALLED)
+      e->installed = 1;
+   else
+      e->installed = 0;
+   e->time = _ecore_xcb_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_COLORMAP, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_client_message(xcb_generic_event_t *event)
+{
+   /* Special client message event handling here. need to put LOTS of if */
+   /* checks here and generate synthetic events per special message known */
+   /* otherwise generate generic client message event. this would handle*/
+   /* netwm, ICCCM, gnomewm, old kde and mwm hint client message protocols */
+
+   xcb_client_message_event_t *ev;
+
+   ev = (xcb_client_message_event_t *)event;
+   if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS) &&
+       (ev->format == 32) &&
+       (ev->data.data32[0] == (uint32_t)ECORE_X_ATOM_WM_DELETE_WINDOW))
+     {
+       Ecore_X_Event_Window_Delete_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Delete_Request));
+       if (!e) return;
+       e->win = ev->window;
+       e->time = _ecore_xcb_event_last_time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
+     }
+
+   else if ((ev->type == ECORE_X_ATOM_NET_WM_MOVERESIZE) &&
+           (ev->format == 32) &&
+           /* Ignore move and resize with keyboard */
+           (ev->data.data32[2] < 9))
+     {
+       Ecore_X_Event_Window_Move_Resize_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Move_Resize_Request));
+       if (!e) return;
+       e->win = ev->window;
+       e->x = ev->data.data32[0];
+       e->y = ev->data.data32[1];
+       e->direction = ev->data.data32[2];
+       e->button = ev->data.data32[3];
+       e->source = ev->data.data32[4];
+       ecore_event_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST, e, NULL, NULL);
+     }
+
+   /* Xdnd Client Message Handling Begin */
+   /* Message Type: XdndEnter target */
+   else if (ev->type == ECORE_X_ATOM_XDND_ENTER)
+     {
+       Ecore_X_Event_Xdnd_Enter *e;
+       Ecore_X_DND_Target       *target;
+       uint32_t                  three;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Enter));
+       if (!e) return;
+
+       target = _ecore_x_dnd_target_get();
+       target->state = ECORE_X_DND_TARGET_ENTERED;
+
+       target = _ecore_x_dnd_target_get();
+       target->source = ev->data.data32[0];
+       target->win = ev->window;
+       target->version = ev->data.data32[1] >> 24;
+       if (target->version > ECORE_X_DND_VERSION)
+         {
+             printf("DND: Requested version %d, we only support up to %d\n", target->version,
+                    ECORE_X_DND_VERSION);
+            return;
+         }
+
+        /* FIXME: roud trip, but I don't know how to suppress it */
+       if ((three = ev->data.data32[1] & 0x1UL))
+         {
+            /* source supports more than 3 types, fetch property */
+            unsigned char *data;
+            Ecore_X_Atom  *types;
+            int            num_ret;
+            int            i;
+             uint8_t        format;
+
+             ecore_x_window_prop_property_get_prefetch(target->source,
+                                                       ECORE_X_ATOM_XDND_TYPE_LIST,
+                                                       ECORE_X_ATOM_ATOM);
+             ecore_x_window_prop_property_get_fetch();
+             format = ecore_x_window_prop_property_get(target->source,
+                                                       ECORE_X_ATOM_XDND_TYPE_LIST,
+                                                       ECORE_X_ATOM_ATOM,
+                                                       32,
+                                                       &data,
+                                                       &num_ret);
+             if (!format)
+              {
+                 printf("DND: Could not fetch data type list from source window, aborting.\n");
+                 return;
+              }
+            types = (Ecore_X_Atom *)data;
+            e->types = calloc(num_ret, sizeof(char *));
+            if (e->types)
+              {
+                  xcb_get_atom_name_cookie_t *cookies;
+
+                  cookies = (xcb_get_atom_name_cookie_t *)malloc(sizeof(xcb_get_atom_name_cookie_t) * num_ret);
+                  for (i = 0; i < num_ret; i++)
+                    cookies[i] = xcb_get_atom_name_unchecked(_ecore_xcb_conn, types[i]);
+                 for (i = 0; i < num_ret; i++)
+                    {
+                       xcb_get_atom_name_reply_t *reply;
+                       char                      *name;
+
+                       reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookies[i], NULL);
+                       if (reply)
+                         {
+                            name = (char *)malloc(sizeof (char) * (reply->name_len + 1));
+                            memcpy(name,
+                                   xcb_get_atom_name_name(reply),
+                                   reply->name_len);
+                            name[reply->name_len] = '\0';
+                            e->types[i] = name;
+                            free(reply);
+                         }
+                    }
+                  free(cookies);
+              }
+            e->num_types = num_ret;
+         }
+       else
+         {
+            int i = 0;
+
+            e->types = calloc(3, sizeof(char *));
+            if (e->types)
+              {
+                  xcb_get_atom_name_cookie_t cookies[3];
+
+                  for (i = 0; i < 3; i++)
+                    cookies[i] = xcb_get_atom_name_unchecked(_ecore_xcb_conn, ev->data.data32[i + 2]);
+                  for (i = 0; i < 3; i++)
+                    {
+                       xcb_get_atom_name_reply_t *reply;
+                       char                      *name;
+
+                       reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookies[i], NULL);
+                       if (reply && (ev->data.data32[i + 2]))
+                         {
+                            name = (char *)malloc(sizeof (char) * (reply->name_len + 1));
+                            memcpy(name,
+                                   xcb_get_atom_name_name(reply),
+                                   reply->name_len);
+                            name[reply->name_len] = '\0';
+                            e->types[i] = name;
+                         }
+                       if (reply) free(reply);
+                    }
+              }
+            e->num_types = i;
+         }
+
+       e->win = target->win;
+       e->source = target->source;
+       ecore_event_add(ECORE_X_EVENT_XDND_ENTER, e, _ecore_x_event_free_xdnd_enter, NULL);
+     }
+
+   /* Message Type: XdndPosition target */
+   else if (ev->type == ECORE_X_ATOM_XDND_POSITION)
+     {
+       Ecore_X_Event_Xdnd_Position *e;
+       Ecore_X_DND_Target          *target;
+
+       target = _ecore_x_dnd_target_get();
+       if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
+           (target->win != ev->window))
+         return;
+
+       target->pos.x = (int16_t)ev->data.data32[2] >> 16;
+       target->pos.y = (int16_t)ev->data.data32[2] & 0xFFFFUL;
+       target->action = ev->data.data32[4]; /* Version 2 */
+
+       target->time = (target->version >= 1) ?
+          ev->data.data32[3] : XCB_CURRENT_TIME;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Position));
+       if (!e) return;
+       e->win = target->win;
+       e->source = target->source;
+       e->position.x = target->pos.x;
+       e->position.y = target->pos.y;
+       e->action = target->action;
+       ecore_event_add(ECORE_X_EVENT_XDND_POSITION, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndStatus source */
+   else if (ev->type == ECORE_X_ATOM_XDND_STATUS)
+     {
+       Ecore_X_Event_Xdnd_Status *e;
+       Ecore_X_DND_Source        *source;
+
+       source = _ecore_x_dnd_source_get();
+       /* Make sure source/target match */
+       if ((source->win != ev->window ) ||
+           (source->dest != ev->data.data32[0]))
+         return;
+
+       source->await_status = 0;
+
+       source->will_accept = ev->data.data32[1] & 0x1UL;
+       source->suppress = (ev->data.data32[1] & 0x2UL) ? 0 : 1;
+
+       source->rectangle.x = (int16_t)ev->data.data32[2] >> 16;
+       source->rectangle.y = (int16_t)ev->data.data32[2] & 0xFFFFUL;
+       source->rectangle.width = (uint16_t)ev->data.data32[3] >> 16;
+       source->rectangle.height = (uint16_t)ev->data.data32[3] & 0xFFFFUL;
+
+       source->accepted_action = ev->data.data32[4];
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Status));
+       if (!e) return;
+       e->win = source->win;
+       e->target = source->dest;
+       e->will_accept = source->will_accept;
+       e->rectangle.x = source->rectangle.x;
+       e->rectangle.y = source->rectangle.y;
+       e->rectangle.width = source->rectangle.width;
+       e->rectangle.height = source->rectangle.height;
+       e->action = source->accepted_action;
+
+       ecore_event_add(ECORE_X_EVENT_XDND_STATUS, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndLeave target */
+   /* Pretend the whole thing never happened, sort of */
+   else if (ev->type == ECORE_X_ATOM_XDND_LEAVE)
+     {
+       Ecore_X_Event_Xdnd_Leave *e;
+       Ecore_X_DND_Target       *target;
+
+       target = _ecore_x_dnd_target_get();
+       if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
+           (target->win != ev->window))
+         return;
+
+       target->state = ECORE_X_DND_TARGET_IDLE;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Leave));
+       if (!e) return;
+       e->win = ev->window;
+       e->source = ev->data.data32[0];
+       ecore_event_add(ECORE_X_EVENT_XDND_LEAVE, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndDrop target */
+   else if (ev->type == ECORE_X_ATOM_XDND_DROP)
+     {
+       Ecore_X_Event_Xdnd_Drop *e;
+       Ecore_X_DND_Target      *target;
+
+       target = _ecore_x_dnd_target_get();
+       /* Match source/target */
+       if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
+           (target->win != ev->window))
+         return;
+
+       target->time = (target->version >= 1) ?
+          ev->data.data32[2] : _ecore_xcb_event_last_time;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Drop));
+       if (!e) return;
+       e->win = target->win;
+       e->source = target->source;
+       e->action = target->action;
+       e->position.x = target->pos.x;
+       e->position.y = target->pos.y;
+       ecore_event_add(ECORE_X_EVENT_XDND_DROP, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndFinished source */
+   else if (ev->type == ECORE_X_ATOM_XDND_FINISHED)
+     {
+       Ecore_X_Event_Xdnd_Finished *e;
+       Ecore_X_DND_Source          *source;
+       uint8_t                        completed = 1;
+
+       source = _ecore_x_dnd_source_get();
+       /* Match source/target */
+       if ((source->win != ev->window) ||
+           (source->dest != ev->data.data32[0]))
+         return;
+
+       if ((source->version >= 5) && (ev->data.data32[1] & 0x1UL))
+         {
+            /* Target successfully performed drop action */
+            ecore_x_selection_xdnd_clear();
+            source->state = ECORE_X_DND_SOURCE_IDLE;
+         }
+       else
+         {
+              completed = 0;
+              source->state = ECORE_X_DND_SOURCE_CONVERTING;
+
+              /* FIXME: Probably need to add a timer to switch back to idle
+               * and discard the selection data */
+         }
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Finished));
+       if (!e) return;
+       e->win = source->win;
+       e->target = source->dest;
+       e->completed = completed;
+       if (source->version >= 5)
+         {
+            source->accepted_action = ev->data.data32[2];
+            e->action = source->accepted_action;
+         }
+       else
+         {
+            source->accepted_action = 0;
+            e->action = source->action;
+         }
+
+       ecore_event_add(ECORE_X_EVENT_XDND_FINISHED, e, NULL, NULL);
+     }
+   else if (ev->type == ECORE_X_ATOM_NET_WM_STATE)
+     {
+       Ecore_X_Event_Window_State_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request));
+       if (!e) return;
+       e->win = ev->window;
+       if (ev->data.data32[0] == 0)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_REMOVE;
+       else if (ev->data.data32[0] == 1)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
+       else if (ev->data.data32[0] == 2)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_TOGGLE;
+       else
+         {
+            free(e);
+            return;
+         }
+       e->state[0] = _ecore_x_netwm_state_get(ev->data.data32[1]);
+       if (e->state[0] == ECORE_X_WINDOW_STATE_UNKNOWN)
+         {
+             xcb_get_atom_name_reply_t *reply;
+            char                      *name;
+
+             /* FIXME: round trip */
+             reply = xcb_get_atom_name_reply(_ecore_xcb_conn,
+                                             xcb_get_atom_name_unchecked(_ecore_xcb_conn, ev->data.data32[1]),
+                                             NULL);
+            if (reply)
+               {
+                 name = (char *)malloc(sizeof (char) * (reply->name_len + 1));
+                 memcpy(name,
+                        xcb_get_atom_name_name(reply),
+                        reply->name_len);
+                 name[reply->name_len] = '\0';
+                 printf("Unknown state: %s\n", name);
+                 free(name);
+                 free(reply);
+               }
+         }
+       e->state[1] = _ecore_x_netwm_state_get(ev->data.data32[2]);
+       if (e->state[1] == ECORE_X_WINDOW_STATE_UNKNOWN)
+         {
+             xcb_get_atom_name_reply_t *reply;
+            char                      *name;
+
+             reply = xcb_get_atom_name_reply(_ecore_xcb_conn,
+                                             xcb_get_atom_name_unchecked(_ecore_xcb_conn, ev->data.data32[2]),
+                                             NULL);
+            if (reply)
+               {
+                 name = (char *)malloc(sizeof (char) * (reply->name_len + 1));
+                 memcpy(name,
+                        xcb_get_atom_name_name(reply),
+                        reply->name_len);
+                 name[reply->name_len] = '\0';
+                 printf("Unknown state: %s\n", name);
+                 free(name);
+               }
+         }
+       e->source = ev->data.data32[3];
+
+       ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
+     }
+   else if ((ev->type == ECORE_X_ATOM_WM_CHANGE_STATE)
+           && (ev->format == 32)
+           && (ev->data.data32[0] == XCB_WM_ICONIC_STATE))
+     {
+       Ecore_X_Event_Window_State_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request));
+       if (!e) return;
+       e->win = ev->window;
+       e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
+       e->state[0] = ECORE_X_WINDOW_STATE_ICONIFIED;
+
+       ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
+     }
+   else if ((ev->type == ECORE_X_ATOM_NET_WM_DESKTOP)
+           && (ev->format == 32))
+     {
+       Ecore_X_Event_Desktop_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Desktop_Change));
+       if (!e) return;
+       e->win = ev->window;
+       e->desk = ev->data.data32[0];
+       e->source = ev->data.data32[1];
+
+       ecore_event_add(ECORE_X_EVENT_DESKTOP_CHANGE, e, NULL, NULL);
+     }
+   else if ((ev->type == ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS))
+     {
+       Ecore_X_Event_Frame_Extents_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Frame_Extents_Request));
+       if (!e) return;
+       e->win = ev->window;
+
+       ecore_event_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, e, NULL, NULL);
+     }
+   else if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS)
+           && ((Ecore_X_Atom)ev->data.data32[0] == ECORE_X_ATOM_NET_WM_PING)
+           && (ev->format == 32))
+     {
+       Ecore_X_Event_Ping *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Ping));
+       if (!e) return;
+       e->win = ev->window;
+       e->time = ev->data.data32[1];
+       e->event_win = ev->data.data32[2];
+
+       ecore_event_add(ECORE_X_EVENT_PING, e, NULL, NULL);
+     }
+   else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) &&
+           (ev->format == 8))
+     {
+       _ecore_x_netwm_startup_info_begin(ev->window, (char *)ev->data.data8);
+     }
+   else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO) &&
+           (ev->format == 8))
+     {
+       _ecore_x_netwm_startup_info(ev->window, (char *)ev->data.data8);
+     }
+   else if ((ev->type == 27777)
+           && (ev->data.data32[0] == 0x7162534)
+           && (ev->format == 32)
+           && (ev->window == _ecore_xcb_private_window))
+     {
+       /* a grab sync marker */
+       if (ev->data.data32[1] == 0x10000001)
+         _ecore_x_window_grab_remove(ev->data.data32[2]);
+       else if (ev->data.data32[1] == 0x10000002)
+         _ecore_x_key_grab_remove(ev->data.data32[2]);
+     }
+   else
+     {
+       Ecore_X_Event_Client_Message *e;
+       int i;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Client_Message));
+       if (!e) return;
+       e->win = ev->window;
+       e->message_type = ev->type;
+       e->format = ev->format;
+       for (i = 0; i < 5; i++)
+         e->data.l[i] = ev->data.data32[i];
+
+       ecore_event_add(ECORE_X_EVENT_CLIENT_MESSAGE, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_mapping_notify(xcb_generic_event_t *event __UNUSED__)
+{
+   /* FIXME: handle this event type */
+}
+
+void
+_ecore_x_event_handle_shape_change(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_SHAPE
+   xcb_shape_notify_event_t     *ev;
+   Ecore_X_Event_Window_Shape *e;
+
+   ev = (xcb_shape_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Shape));
+   if (!e) return;
+   e->win = ev->affected_window;
+   e->time = ev->server_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHAPE, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_X_SHAPE */
+}
+
+void
+_ecore_x_event_handle_screensaver_notify(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_SCREENSAVER
+   xcb_screensaver_notify_event_t     *ev;
+   Ecore_X_Event_Screensaver_Notify *e;
+
+   ev = (xcb_screensaver_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Screensaver_Notify));
+   if (!e) return;
+   e->win = ev->window;
+   if (ev->state == XCB_SCREENSAVER_STATE_ON)
+     e->on = 1;
+   else
+     e->on = 0;
+   e->time = ev->time;
+   ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_X_SCREENSAVER */
+}
+
+void
+_ecore_x_event_handle_sync_counter(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_SYNC
+   xcb_sync_counter_notify_event_t *ev;
+   Ecore_X_Event_Sync_Counter    *e;
+
+   ev = (xcb_sync_counter_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Sync_Counter));
+   if (!e) return;
+   e->time = ev->timestamp;
+   ecore_event_add(ECORE_X_EVENT_SYNC_COUNTER, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_X_SYNC */
+}
+
+void
+_ecore_x_event_handle_sync_alarm(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_SYNC
+   xcb_sync_alarm_notify_event_t *ev;
+   Ecore_X_Event_Sync_Alarm    *e;
+
+   ev = (xcb_sync_alarm_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Sync_Alarm));
+   if (!e) return;
+   e->time = ev->timestamp;
+   e->alarm = ev->alarm;
+   ecore_event_add(ECORE_X_EVENT_SYNC_ALARM, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_X_SYNC */
+}
+
+/* FIXME: round trip */
+void
+_ecore_x_event_handle_randr_change(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_RANDR
+   xcb_randr_screen_change_notify_event_t *ev;
+   Ecore_X_Event_Screen_Change            *e;
+
+   ev = (xcb_randr_screen_change_notify_event_t *)event;
+
+   if ((ev->response_type & ~0x80) != XCB_CONFIGURE_NOTIFY)
+     {
+       xcb_query_extension_reply_t *rep;
+
+       rep = xcb_query_extension_reply(_ecore_xcb_conn,
+                                       xcb_query_extension_unchecked(_ecore_xcb_conn,
+                                                                     strlen("randr"),
+                                                                     "randr"),
+                                       NULL);
+
+     if ((!rep) ||
+         (((ev->response_type & ~0x80) - rep->first_event) != XCB_RANDR_SCREEN_CHANGE_NOTIFY))
+       printf("ERROR: Can't update RandR config!\n");
+     if (rep)
+       free(rep);
+     }
+
+   e = calloc(1, sizeof(Ecore_X_Event_Screen_Change));
+   if (!e) return;
+   e->win = ev->request_window;
+   e->root = ev->root;
+   e->width = ev->width;
+   e->height = ev->height;
+   ecore_event_add(ECORE_X_EVENT_SCREEN_CHANGE, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_X_RANDR */
+}
+
+void
+_ecore_x_event_handle_fixes_selection_notify(xcb_generic_event_t *event)
+{
+#ifdef ECORE_X_FIXES
+   /* Nothing here yet */
+#else
+   event = NULL;
+#endif /* ECORE_X_FIXES */
+}
+
+void
+_ecore_x_event_handle_damage_notify(xcb_generic_event_t *event)
+{
+#ifdef ECORE_XCBDAMAGE
+   xcb_damage_notify_event_t *ev;
+   Ecore_X_Event_Damage      *e;
+
+   ev = (xcb_damage_notify_event_t *)event;
+   e = calloc(1, sizeof(Ecore_X_Event_Damage));
+   if (!e) return;
+
+   e->level = ev->level;
+   e->drawable = ev->drawable;
+   e->damage = ev->damage;
+   /* FIXME: XCB has no 'more' member in xcb_damage_notify_event_t */
+/*    e->more = ev->more; */
+   e->time = ev->timestamp;
+   e->area.x = ev->area.x;
+   e->area.y = ev->area.y;
+   e->area.width = ev->area.width;
+   e->area.height = ev->area.height;
+   e->geometry.x = ev->geometry.x;
+   e->geometry.y = ev->geometry.y;
+   e->geometry.width = ev->geometry.width;
+   e->geometry.height = ev->geometry.height;
+
+   ecore_event_add(ECORE_X_EVENT_DAMAGE_NOTIFY, e, NULL, NULL);
+#else
+   event = NULL;
+#endif /* ECORE_XCBDAMAGE */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_fixes.c b/src/lib/ecore_x/xcb/ecore_xcb_fixes.c
new file mode 100644 (file)
index 0000000..db3d462
--- /dev/null
@@ -0,0 +1,581 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Fixes_Group X Fixes Extension Functions
+ *
+ * Functions related to the X Fixes extension.
+ */
+
+
+#ifdef ECORE_XCB_FIXES
+static int _xfixes_available = 0;
+static xcb_xfixes_query_version_cookie_t _ecore_xcb_xfixes_init_cookie;
+#endif /* ECORE_XCB_FIXES */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_xfixes_init and
+   _ecore_xcb_xfixes_init_finalize. The first one gets the cookies and
+   the second one gets the replies and set the atoms. */
+
+void
+_ecore_x_xfixes_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_FIXES
+   if (reply && (reply->present))
+      _ecore_xcb_xfixes_init_cookie = xcb_xfixes_query_version_unchecked(_ecore_xcb_conn, 4, 0);
+#endif /* ECORE_XCB_FIXES */
+}
+
+void
+_ecore_x_xfixes_init_finalize(void)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_query_version_reply_t *reply;
+
+   reply = xcb_xfixes_query_version_reply(_ecore_xcb_conn,
+                                          _ecore_xcb_xfixes_init_cookie, NULL);
+
+   if (reply)
+     {
+        if (reply->major_version >= 3)
+          _xfixes_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Return whether the X server supports the Fixes Extension.
+ * @return 1 if the X Fixes Extension is available, 0 otherwise.
+ *
+ * Return 1 if the X server supports the Fixes Extension version 3.0,
+ * 0 otherwise.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI int
+ecore_x_xfixes_query(void)
+{
+#ifdef ECORE_XCB_FIXES
+   return _xfixes_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Create a region from rectangles.
+ * @param rects The rectangles used to initialize the region.
+ * @param num   The number of rectangles.
+ * @return      The newly created region.
+ *
+ * Create a region initialized to the specified list of rectangles
+ * @p rects. The rectangles may be specified in any order, their union
+ * becomes the region.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Region
+ecore_x_region_new(Ecore_X_Rectangle *rects,
+                   int                num)
+{
+   Ecore_X_Region region = XCB_NONE;
+
+#ifdef ECORE_XCB_FIXES
+   region = xcb_generate_id(_ecore_xcb_conn);
+   xcb_xfixes_create_region(_ecore_xcb_conn, region, num, (xcb_rectangle_t *)rects);
+#endif /* ECORE_XCB_FIXES */
+
+   return region;
+}
+
+
+/**
+ * Create a region from a pixmap.
+ * @param bitmap The bitmap used to initialize the region.
+ * @return       The newly created region.
+ *
+ * Creates a region initialized to the set of 'one' pixels in @p bitmap
+ * (which must be of depth 1, else Match error).
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Region
+ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap)
+{
+   Ecore_X_Region region = XCB_NONE;
+
+#ifdef ECORE_XCB_FIXES
+   region = xcb_generate_id(_ecore_xcb_conn);
+   xcb_xfixes_create_region_from_bitmap(_ecore_xcb_conn, region, bitmap);
+#endif /* ECORE_XCB_FIXES */
+
+   return region;
+}
+
+
+/**
+ * Create a region from a window.
+ * @param window The window used to initialize the region.
+ * @param type   The type of the region.
+ * @return       The newly created region.
+ *
+ * Creates a region initialized to the specified @p window region. See
+ * the Shape extension for the definition of Bounding and Clip
+ * regions.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Region
+ecore_x_region_new_from_window(Ecore_X_Window      window,
+                               Ecore_X_Region_Type type)
+{
+   Ecore_X_Region region = XCB_NONE;
+
+#ifdef ECORE_XCB_FIXES
+   region = xcb_generate_id(_ecore_xcb_conn);
+   xcb_xfixes_create_region_from_window(_ecore_xcb_conn, region, window, type);
+#endif /* ECORE_XCB_FIXES */
+
+   return region;
+}
+
+
+/**
+ * Create a region from a graphic context.
+ * @param gc The graphic context used to initialize the region.
+ * @return   The newly created region.
+ *
+ * Creates a region initialized from the clip list of @p gc.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Region
+ecore_x_region_new_from_gc(Ecore_X_GC gc)
+{
+   Ecore_X_Region region = XCB_NONE;
+
+#ifdef ECORE_XCB_FIXES
+   region = xcb_generate_id(_ecore_xcb_conn);
+   xcb_xfixes_create_region_from_gc(_ecore_xcb_conn, region, gc);
+#endif /* ECORE_XCB_FIXES */
+
+   return region;
+}
+
+
+/**
+ * Create a region from a picture.
+ * @param picture The picture used to initialize the region.
+ * @return        The newly created region.
+ *
+ * Creates a region initialized from the clip list of @p picture.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Region
+ecore_x_region_new_from_picture(Ecore_X_Picture picture)
+{
+   Ecore_X_Region region = XCB_NONE;
+
+#ifdef ECORE_XCB_FIXES
+   region = xcb_generate_id(_ecore_xcb_conn);
+   xcb_xfixes_create_region_from_picture(_ecore_xcb_conn, region, picture);
+#endif /* ECORE_XCB_FIXES */
+
+   return region;
+}
+
+
+/**
+ * Destroy a region.
+ * @param region The region to destroy.
+ *
+ * Destroy the specified @p region.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_del(Ecore_X_Region region)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_destroy_region(_ecore_xcb_conn, region);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Set the content of a region.
+ * @param region The region to destroy.
+ * @param rects  The rectangles used to set the region.
+ * @param num    The number of rectangles.
+ *
+ * Replace the current contents of @p region with the region formed
+ * by the union of the rectangles @p rects.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_set(Ecore_X_Region     region,
+                   Ecore_X_Rectangle *rects,
+                   int                num)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_set_region(_ecore_xcb_conn, region, num, (xcb_rectangle_t *)rects);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Copy the content of a region.
+ * @param dest   The destination region.
+ * @param source The source region.
+ *
+ * Replace the contents of @p dest with the contents of @p source.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_copy(Ecore_X_Region dest,
+                    Ecore_X_Region source)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_copy_region(_ecore_xcb_conn, source, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Make the union of two regions.
+ * @param dest    The destination region.
+ * @param source1 The first source region.
+ * @param source2 The second source region.
+ *
+ * Replace the contents of @p dest with the union of @p source1 and
+ * @p source2.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_combine(Ecore_X_Region dest,
+                       Ecore_X_Region source1,
+                       Ecore_X_Region source2)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_union_region(_ecore_xcb_conn, source1, source2, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Make the intersection of two regions.
+ * @param dest    The destination region.
+ * @param source1 The first source region.
+ * @param source2 The second source region.
+ *
+ * Replace the contents of @p dest with the intersection of @p source1 and
+ * @p source2.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_intersect(Ecore_X_Region dest,
+                         Ecore_X_Region source1,
+                         Ecore_X_Region source2)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_intersect_region(_ecore_xcb_conn, source1, source2, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Make the substraction of two regions.
+ * @param dest    The destination region.
+ * @param source1 The first source region.
+ * @param source2 The second source region.
+ *
+ * Replace the contents of @p dest with the substraction of @p source1 by
+ * @p source2.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_subtract(Ecore_X_Region dest,
+                        Ecore_X_Region source1,
+                        Ecore_X_Region source2)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_subtract_region(_ecore_xcb_conn, source1, source2, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Make the substraction of regions by bounds.
+ * @param dest   The destination region.
+ * @param bounds The bounds.
+ * @param source The source region.
+ *
+ * The @p source region is subtracted from the region specified by
+ * @p bounds.  The result is placed in @p dest, replacing its
+ * contents.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_invert(Ecore_X_Region     dest,
+                      Ecore_X_Rectangle *bounds,
+                      Ecore_X_Region     source)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_rectangle_t rect;
+
+   rect.x = bounds->x;
+   rect.y = bounds->y;
+   rect.width = bounds->width;
+   rect.height = bounds->height;
+   xcb_xfixes_invert_region(_ecore_xcb_conn, source, rect, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Translate a region.
+ * @param region The region to translate.
+ * @param dx     The horizontal translation.
+ * @param dy     The vertical translation.
+ *
+ * The @p region is translated by @p dx and @p dy in place.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_translate(Ecore_X_Region region,
+                         int            dx,
+                         int            dy)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_translate_region(_ecore_xcb_conn, region, dx, dy);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Extent a region.
+ * @param dest   The destination region.
+ * @param source The source region.
+ *
+ * The extents of the @p source region are placed in @p dest.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_extents(Ecore_X_Region dest,
+                       Ecore_X_Region source)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_region_extents(_ecore_xcb_conn, source, dest);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Sends the XFixesFetchRegion request.
+ * @param region Requested region.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_fetch_prefetch(Ecore_X_Region region)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_fetch_region_cookie_t cookie;
+
+   cookie = xcb_xfixes_fetch_region_unchecked(_ecore_xcb_conn, region);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Gets the reply of the XFixesFetchRegion request sent by ecore_xcb_region_fetch_prefetch().
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_fetch_fetch(void)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_fetch_region_cookie_t cookie;
+   xcb_xfixes_fetch_region_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_xfixes_fetch_region_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Return the rectangles that compose a region.
+ * @param  region The region (Unused).
+ * @param  num    The number of returned rectangles.
+ * @param  bounds The returned bounds of the region.
+ * @return        The returned rectangles.
+ *
+ * The @p region passed to ecore_xcb_region_fetch_prefetch() is
+ * returned as a list of rectagles in XY-banded order.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_xcb_region_fetch_prefetch(), which sends the XFixesFetchRegion request,
+ * then ecore_xcb_region_fetch_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI Ecore_X_Rectangle *
+ecore_x_region_fetch(Ecore_X_Region     region __UNUSED__,
+                     int               *num,
+                     Ecore_X_Rectangle *bounds)
+{
+   Ecore_X_Rectangle  extents = { 0, 0, 0, 0};
+   Ecore_X_Rectangle *rects = NULL;
+#ifdef ECORE_XCB_FIXES
+   int                n;
+   xcb_xfixes_fetch_region_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     {
+       if (num) *num = 0;
+       if (bounds) *bounds = extents;
+       return NULL;
+     }
+   n = xcb_xfixes_fetch_region_rectangles_length(reply);
+   rects = (Ecore_X_Rectangle *)malloc(n * sizeof(Ecore_X_Rectangle));
+   if (!rects)
+     {
+       if (num) *num = 0;
+       if (bounds) *bounds = extents;
+
+       return NULL;
+     }
+
+   if (num) *num = n;
+   if (bounds)
+     {
+        bounds->x = reply->extents.x;
+        bounds->y = reply->extents.y;
+        bounds->width = reply->extents.width;
+        bounds->height = reply->extents.height;
+     }
+   memcpy(rects,
+          xcb_xfixes_fetch_region_rectangles(reply),
+          sizeof(Ecore_X_Rectangle) * n);
+
+   return rects;
+#else
+   if (num) *num = 0;
+   if (bounds) *bounds = extents;
+   return NULL;
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Expand a region.
+ * @param dest   The destination region.
+ * @param source The source region.
+ * @param left   The number of pixels to add on the left.
+ * @param right  The number of pixels to add on the right.
+ * @param top    The number of pixels to add at the top.
+ * @param bottom The number of pixels to add at the bottom.
+ *
+ * Put in @p dest the area specified by expanding each rectangle in
+ * the @p source  region by the specified number of pixels to the
+ * @p left, @p right, @p top and @p bottom.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_expand(Ecore_X_Region dest,
+                      Ecore_X_Region source,
+                      unsigned int   left,
+                      unsigned int   right,
+                      unsigned int   top,
+                      unsigned int   bottom)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_expand_region(_ecore_xcb_conn, source, dest, left, right, top, bottom);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Change clip-mask in a graphic context to the specified region.
+ * @param region   The region to change.
+ * @param gc       The clip-mask graphic context.
+ * @param x_origin The horizontal translation.
+ * @param y_origin The vertical translation.
+ *
+ * Changes clip-mask in @p gc to the specified @p region and
+ * sets the clip origin with the values of @p x_origin and @p y_origin.
+ * Output will be clippped to remain contained within the region. The
+ * clip origin is interpreted relative to the origin of whatever
+ * destination drawable is specified in a graphics request. The
+ * region is interpreted relative to the clip origin. Future changes
+ * to region have no effect on the gc clip-mask.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_gc_clip_set(Ecore_X_Region region,
+                           Ecore_X_GC     gc,
+                           int            x_origin,
+                           int            y_origin)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_set_gc_clip_region(_ecore_xcb_conn, gc, region, x_origin, y_origin);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Change the shape extension of a window.
+ * @param region   The region.
+ * @param dest     The window whose shape is changed.
+ * @param type     The kind of shape.
+ * @param x_offset The horizontal offset.
+ * @param y_offset The vertical offset.
+ *
+ * Set the specified Shape extension region of @p window to @p region,
+ * offset by @p x_offset and @p y_offset. Future changes to region
+ * have no effect on the window shape.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_window_shape_set(Ecore_X_Region     region,
+                                Ecore_X_Window     dest,
+                                Ecore_X_Shape_Type type,
+                                int                x_offset,
+                                int                y_offset)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_set_window_shape_region(_ecore_xcb_conn, dest, type, x_offset, y_offset, region);
+#endif /* ECORE_XCB_FIXES */
+}
+
+
+/**
+ * Change clip-mask in picture to the specified region.
+ * @param region   The region.
+ * @param picture  The picture.
+ * @param x_origin The X coordinate of the origin.
+ * @param y_origin The Y coordinate of the origin.
+ *
+ * Changes clip-mask in picture to the specified @p region
+ * and sets the clip origin.  Input and output will be clipped to
+ * remain contained within the region.  The clip origin is interpreted
+ * relative to the origin of the drawable associated with @p picture.  The
+ * region is interpreted relative to the clip origin.  Future changes
+ * to region have no effect on the picture clip-mask.
+ * @ingroup Ecore_X_Fixes_Group
+ */
+EAPI void
+ecore_x_region_picture_clip_set(Ecore_X_Region  region,
+                                Ecore_X_Picture picture,
+                                int             x_origin,
+                                int             y_origin)
+{
+#ifdef ECORE_XCB_FIXES
+   xcb_xfixes_set_picture_clip_region(_ecore_xcb_conn, picture, region, x_origin, y_origin);
+#endif /* ECORE_XCB_FIXES */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_gc.c b/src/lib/ecore_x/xcb/ecore_xcb_gc.c
new file mode 100644 (file)
index 0000000..0a4ec22
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * Creates a new default graphics context associated with the given
+ * drawable.
+ * @param  drawable Drawable to create graphics context with.  If @c 0 is
+ *                  given instead, the default root window is used.
+ * @return          The new default graphics context.
+ *
+ * Creates a new default graphics context associated with @p
+ * drawable. The graphic context can be used with any destination
+ * drawable having the same root and depth as @p drawable. Use with
+ * other drawables results in a BadMatch error.
+ */
+EAPI Ecore_X_GC
+ecore_x_gc_new(Ecore_X_Drawable drawable)
+{
+   xcb_gcontext_t gc;
+
+   if (!drawable) drawable = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   gc = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_gc(_ecore_xcb_conn, gc, drawable, 0, NULL);
+
+   return gc;
+}
+
+
+/**
+ * Deletes and frees the given graphics context.
+ * @param gc The given graphics context.
+ *
+ * Destroyes the graphic context @p gc as well as the associated
+ * storage.
+ */
+EAPI void
+ecore_x_gc_del(Ecore_X_GC gc)
+{
+   xcb_free_gc(_ecore_xcb_conn, gc);
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_icccm.c b/src/lib/ecore_x/xcb/ecore_xcb_icccm.c
new file mode 100644 (file)
index 0000000..c5b0113
--- /dev/null
@@ -0,0 +1,1913 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+/*
+ * Various ICCCM related functions.
+ *
+ * This is ALL the code involving anything ICCCM related, for both WM and
+ * client.
+ */
+
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+#include <xcb/xcb_icccm.h>
+
+
+/**
+ * @defgroup Ecore_X_ICCCM_Group ICCCM related functions.
+ *
+ * Functions related to ICCCM.
+ */
+
+
+static int _ecore_x_icccm_size_hints_get (const void       *reply,
+                                          Ecore_X_Atom      property,
+                                          xcb_size_hints_t *hints)
+{
+   uint32_t s;
+
+   if (!hints) return 0;
+
+   if (!reply) return 0;
+   if ((((xcb_get_property_reply_t *)reply)->type != ECORE_X_ATOM_WM_SIZE_HINTS) &&
+       ((((xcb_get_property_reply_t *)reply)->format != 8)  ||
+        (((xcb_get_property_reply_t *)reply)->format != 16) ||
+        (((xcb_get_property_reply_t *)reply)->format != 32))                &&
+       (((xcb_get_property_reply_t *)reply)->value_len < 15)) /* OldNumPropSizeElements = 15 (pre-ICCCM) */
+      return 0;
+
+   memcpy(hints,
+          xcb_get_property_value((xcb_get_property_reply_t *)reply),
+          ((xcb_get_property_reply_t *)reply)->value_len);
+
+   s = (XCB_SIZE_US_POSITION_HINT  | XCB_SIZE_US_SIZE_HINT   |
+        XCB_SIZE_P_POSITION_HINT   | XCB_SIZE_P_SIZE_HINT    |
+        XCB_SIZE_P_MIN_SIZE_HINT   | XCB_SIZE_P_MAX_SIZE_HINT |
+        XCB_SIZE_P_RESIZE_INC_HINT | XCB_SIZE_P_ASPECT_HINT);
+
+   if (((xcb_get_property_reply_t *)reply)->value_len >= 18) /* NumPropSizeElements = 18 (ICCCM version 1) */
+      s |= (XCB_SIZE_BASE_SIZE_HINT | XCB_SIZE_P_WIN_GRAVITY_HINT);
+   else
+     {
+        xcb_size_hints_set_base_size(hints, 0, 0);
+        xcb_size_hints_set_win_gravity(hints, 0);
+     }
+   /* FIXME: is it necessary ? */
+   /* hints->flags &= s; */         /* get rid of unwanted bits */
+
+   return 1;
+}
+
+
+/**
+ * Sets the state of a window.
+ * @param window The window.
+ * @param state  The state.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_state_set(Ecore_X_Window            window,
+                        Ecore_X_Window_State_Hint state)
+{
+   uint32_t c[2];
+
+   if (state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
+      c[0] = XCB_WM_WITHDRAWN_STATE;
+   else if (state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
+      c[0] = XCB_WM_NORMAL_STATE;
+   else if (state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
+      c[0] = XCB_WM_ICONIC_STATE;
+   c[1] = 0;
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_STATE, ECORE_X_ATOM_WM_STATE, 32,
+                       2, c);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_state_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_STATE,
+                                       ECORE_X_ATOM_WM_STATE,
+                                       0L, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_state_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_state_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Gets the state of a window.
+ * @param window The window.
+ * @return       The state of the window
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_state_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_state_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI Ecore_X_Window_State_Hint
+ecore_x_icccm_state_get(Ecore_X_Window window __UNUSED__)
+{
+   xcb_get_property_reply_t   *reply;
+   uint8_t                    *prop;
+   Ecore_X_Window_State_Hint hint = ECORE_X_WINDOW_STATE_HINT_NONE;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return hint;
+
+   if ((reply->type == 0) ||
+       (reply->format != 8) ||
+       (reply->value_len != 2))
+      return hint;
+
+   prop = (uint8_t *)xcb_get_property_value(reply);
+   switch (prop[0]) {
+   case XCB_WM_WITHDRAWN_STATE:
+     hint = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+     break;
+   case XCB_WM_NORMAL_STATE:
+     hint = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+     break;
+   case XCB_WM_ICONIC_STATE:
+     hint = ECORE_X_WINDOW_STATE_HINT_ICONIC;
+     break;
+   default:
+     hint = ECORE_X_WINDOW_STATE_HINT_NONE;
+     break;
+   }
+
+   return hint;
+}
+
+/**
+ * Sends the ClientMessage event with the DeleteWindow property.
+ * @param window The window.
+ * @param time   The time.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_delete_window_send(Ecore_X_Window window,
+                                 Ecore_X_Time   time)
+{
+   ecore_x_client_message32_send(window, ECORE_X_ATOM_WM_PROTOCOLS,
+                                 ECORE_X_EVENT_MASK_NONE,
+                                 ECORE_X_ATOM_WM_DELETE_WINDOW,
+                                 time, 0, 0, 0);
+}
+
+/**
+ * Sends the ClientMessage event with the TakeFocus property.
+ * @param window The window.
+ * @param time   The time.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_take_focus_send(Ecore_X_Window window,
+                              Ecore_X_Time   time)
+{
+   ecore_x_client_message32_send(window, ECORE_X_ATOM_WM_PROTOCOLS,
+                                 ECORE_X_EVENT_MASK_NONE,
+                                 ECORE_X_ATOM_WM_TAKE_FOCUS,
+                                 time, 0, 0, 0);
+}
+
+/**
+ * Sends the ClientMessage event with the SaveYourself property.
+ * @param window The window.
+ * @param time   The time.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_save_yourself_send(Ecore_X_Window window,
+                                 Ecore_X_Time   time)
+{
+   ecore_x_client_message32_send(window, ECORE_X_ATOM_WM_PROTOCOLS,
+                                 ECORE_X_EVENT_MASK_NONE,
+                                 ECORE_X_ATOM_WM_SAVE_YOURSELF,
+                                 time, 0, 0, 0);
+}
+
+/**
+ * Sends the ConfigureNotify event with the StructureNotify property.
+ * @param window The window.
+ * @param x      The X coordinate.
+ * @param y      The Y coordinate.
+ * @param width  The width.
+ * @param height The height.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_move_resize_send(Ecore_X_Window window,
+                               int            x,
+                               int            y,
+                               int            width,
+                               int            height)
+{
+   xcb_configure_notify_event_t ev;
+
+   ev.response_type = XCB_CONFIGURE_NOTIFY | 0x80;
+   ev.pad0 = 0;
+   ev.sequence = 0;
+   ev.event = window;
+   ev.window = window;
+   ev.above_sibling = 0;
+   ev.x = x;
+   ev.y = y;
+   ev.width = width;
+   ev.height = height;
+   ev.border_width = 0;
+   ev.override_redirect = 0;
+   xcb_send_event(_ecore_xcb_conn, 0, window,
+                  XCB_EVENT_MASK_STRUCTURE_NOTIFY, (const char *)&ev);
+}
+
+/**
+ * Sets the hints of a window.
+ * @param window        The window.
+ * @param accepts_focus AcceptFocus hint
+ * @param initial_state Initial state flags.
+ * @param icon_pixmap   Icon pixmap.
+ * @param icon_mask     Icon mask.
+ * @param icon_window   Icon window.
+ * @param window_group  Group window.
+ * @param is_urgent     IsUrgent flag.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_hints_set(Ecore_X_Window            window,
+                       int                       accepts_focus,
+                       Ecore_X_Window_State_Hint initial_state,
+                       Ecore_X_Pixmap            icon_pixmap,
+                       Ecore_X_Pixmap            icon_mask,
+                       Ecore_X_Window            icon_window,
+                       Ecore_X_Window            window_group,
+                        int                       is_urgent)
+{
+   xcb_wm_hints_t *hints;
+
+   hints = xcb_alloc_wm_hints();
+   if (!hints)
+      return;
+
+   xcb_wm_hints_set_input(hints, accepts_focus);
+   if (initial_state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
+      xcb_wm_hints_set_withdrawn(hints);
+   else if (initial_state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
+      xcb_wm_hints_set_normal(hints);
+   else if (initial_state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
+      xcb_wm_hints_set_iconic(hints);
+   if (icon_pixmap != 0)
+     xcb_wm_hints_set_icon_pixmap(hints, icon_pixmap);
+   if (icon_mask != 0)
+     xcb_wm_hints_set_icon_mask(hints, icon_mask);
+   if (icon_window != 0)
+     xcb_wm_hints_set_icon_window(hints, icon_window);
+   if (window_group != 0)
+     xcb_wm_hints_set_window_group(hints, window_group);
+   if (is_urgent)
+     xcb_wm_hints_set_urgency(hints);
+   xcb_set_wm_hints(_ecore_xcb_conn, window, hints);
+   free(hints);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_hints_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_HINTS,
+                                       ECORE_X_ATOM_WM_HINTS,
+                                       0L, XCB_NUM_WM_HINTS_ELEMENTS);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_hints_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_hints_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Gets the hints of a window.
+ * @param window        The window.
+ * @param accepts_focus AcceptFocus hint
+ * @param initial_state Initial state flags.
+ * @param icon_pixmap   Icon pixmap.
+ * @param icon_mask     Icon mask.
+ * @param icon_window   Icon window.
+ * @param window_group  Group window.
+ * @param is_urgent     IsUrgent flag.
+ * @return              1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_hints_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_hints_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI int
+ecore_x_icccm_hints_get(Ecore_X_Window             window __UNUSED__,
+                       int                       *accepts_focus,
+                       Ecore_X_Window_State_Hint *initial_state,
+                       Ecore_X_Pixmap            *icon_pixmap,
+                       Ecore_X_Pixmap            *icon_mask,
+                       Ecore_X_Window            *icon_window,
+                       Ecore_X_Window            *window_group,
+                        int                       *is_urgent)
+{
+   xcb_wm_hints_t           *hints;
+   xcb_get_property_reply_t *reply;
+   uint32_t                  flags;
+
+   if (accepts_focus)
+      *accepts_focus = 1;
+   if (initial_state)
+      *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+   if (icon_pixmap)
+      *icon_pixmap = 0;
+   if (icon_mask)
+      *icon_mask = 0;
+   if (icon_window)
+      *icon_window = 0;
+   if (window_group)
+      *window_group = 0;
+   if (is_urgent)
+      *is_urgent = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return 0;
+
+   if ((reply->type != ECORE_X_ATOM_WM_HINTS) ||
+       (reply->value_len < (XCB_NUM_WM_HINTS_ELEMENTS - 1)) ||
+       (reply->format != 32))
+      return 0;
+
+   hints = xcb_alloc_wm_hints();
+   if (!hints)
+      return 0;
+
+   memcpy(hints, xcb_get_property_value(reply), reply->value_len);
+
+   flags = xcb_wm_hints_get_flags(hints);
+   if ((flags & XCB_WM_INPUT_HINT) && (accepts_focus))
+     {
+        if (xcb_wm_hints_get_input(hints))
+           *accepts_focus = 1;
+        else
+           *accepts_focus = 0;
+     }
+   if ((flags & XCB_WM_STATE_HINT) && (initial_state))
+     {
+       if (xcb_wm_hints_get_initial_state(hints) == XCB_WM_WITHDRAWN_STATE)
+           *initial_state = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+        else if (xcb_wm_hints_get_initial_state(hints) == XCB_WM_NORMAL_STATE)
+           *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+        else if (xcb_wm_hints_get_initial_state(hints) == XCB_WM_ICONIC_STATE)
+           *initial_state = ECORE_X_WINDOW_STATE_HINT_ICONIC;
+     }
+   if ((flags & XCB_WM_ICON_PIXMAP_HINT) && (icon_pixmap))
+     {
+        *icon_pixmap = xcb_wm_hints_get_icon_pixmap(hints);
+     }
+   if ((flags & XCB_WM_ICON_MASK_HINT) && (icon_mask))
+     {
+        *icon_mask = xcb_wm_hints_get_icon_mask(hints);
+     }
+   if ((flags & XCB_WM_ICON_WINDOW_HINT) && (icon_window))
+     {
+        *icon_window = xcb_wm_hints_get_icon_window(hints);
+     }
+   if ((flags & XCB_WM_WINDOW_GROUP_HINT) && (window_group))
+     {
+        if (reply->value_len < XCB_NUM_WM_HINTS_ELEMENTS)
+           *window_group = 0;
+        else
+           *window_group = xcb_wm_hints_get_window_group(hints);
+     }
+   if ((flags & XCB_WM_X_URGENCY_HINT) && (is_urgent))
+     {
+        *is_urgent = 1;
+     }
+
+   free(hints);
+
+   return 1;
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_size_pos_hints_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_NORMAL_HINTS,
+                                       ECORE_X_ATOM_WM_SIZE_HINTS,
+                                       0L, 18);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_size_pos_hints_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_size_pos_hints_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Sets the hints of a window.
+ * @param window      The window.
+ * @param request_pos Request position flag.
+ * @param gravity     Gravity.
+ * @param min_w       Minimum width.
+ * @param min_h       Minimum height.
+ * @param max_w       Maximum width.
+ * @param max_h       Maximum height.
+ * @param base_w      Base width
+ * @param base_h      Base height
+ * @param step_x      X step coordinate.
+ * @param step_y      Y step coordinate.
+ * @param min_aspect  Minimum aspect ratio.
+ * @param max_aspect  Maximum aspect ratio.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_size_pos_hints_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_size_pos_hints_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_size_pos_hints_set(Ecore_X_Window  window,
+                                 int             request_pos,
+                                Ecore_X_Gravity gravity,
+                                int             min_w,
+                                 int             min_h,
+                                int             max_w,
+                                 int             max_h,
+                                int             base_w,
+                                 int             base_h,
+                                int             step_x,
+                                 int             step_y,
+                                double          min_aspect,
+                                 double          max_aspect)
+{
+   xcb_size_hints_t         *hint;
+   xcb_get_property_reply_t *reply;
+
+   hint = xcb_alloc_size_hints();
+   if (!hint)
+      return;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply                                      ||
+       (reply->type != ECORE_X_ATOM_WM_SIZE_HINTS) ||
+       ((reply->format != 8)   &&
+        (reply->format != 16)  &&
+        (reply->format != 32))                     ||
+       (reply->value_len < 15))
+      return;
+
+   xcb_size_hints_set_flags(hint, 0);
+   if (request_pos)
+     {
+       xcb_size_hints_set_flags(hint, XCB_SIZE_US_POSITION_HINT);
+     }
+   if (gravity != ECORE_X_GRAVITY_NW)
+     {
+       xcb_size_hints_set_win_gravity(hint, (uint8_t)gravity);
+     }
+   if ((min_w > 0) || (min_h > 0))
+     {
+       xcb_size_hints_set_min_size(hint, min_w, min_h);
+     }
+   if ((max_w > 0) || (max_h > 0))
+     {
+       xcb_size_hints_set_max_size(hint, max_w, max_h);
+     }
+   if ((base_w > 0) || (base_h > 0))
+     {
+       xcb_size_hints_set_base_size(hint, base_w, base_h);
+     }
+   if ((step_x > 1) || (step_y > 1))
+     {
+       xcb_size_hints_set_resize_inc(hint, step_x, step_y);
+     }
+   if ((min_aspect > 0.0) || (max_aspect > 0.0))
+     {
+       xcb_size_hints_set_aspect(hint,
+                                  (int32_t)(min_aspect * 10000),
+                                  10000,
+                                  (int32_t)(max_aspect * 10000),
+                                  10000);
+     }
+   xcb_set_wm_normal_hints(_ecore_xcb_conn, window, hint);
+
+   free(hint);
+}
+
+/**
+ * Gets the hints of a window.
+ * @param window      The window.
+ * @param request_pos Request position flag.
+ * @param gravity     Gravity.
+ * @param min_w       Minimum width.
+ * @param min_h       Minimum height.
+ * @param max_w       Maximum width.
+ * @param max_h       Maximum height.
+ * @param base_w      Base width
+ * @param base_h      Base height
+ * @param step_x      X step coordinate.
+ * @param step_y      Y step coordinate.
+ * @param min_aspect  Minimum aspect ratio.
+ * @param max_aspect  M
+ * @return            1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_size_pos_hints_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_size_pos_hints_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI int
+ecore_x_icccm_size_pos_hints_get(Ecore_X_Window   window __UNUSED__,
+                                 int             *request_pos,
+                                 Ecore_X_Gravity *gravity,
+                                 int             *min_w,
+                                 int             *min_h,
+                                 int             *max_w,
+                                 int             *max_h,
+                                 int             *base_w,
+                                 int             *base_h,
+                                 int             *step_x,
+                                 int             *step_y,
+                                 double          *min_aspect,
+                                 double          *max_aspect)
+{
+   xcb_size_hints_t         *hint;
+   xcb_get_property_reply_t *reply;
+   uint32_t                  flags;
+   int32_t                   minw = 0;
+   int32_t                   minh = 0;
+   int32_t                   maxw = 32767;
+   int32_t                   maxh = 32767;
+   int32_t                   basew = -1;
+   int32_t                   baseh = -1;
+   int32_t                   stepx = -1;
+   int32_t                   stepy = -1;
+   double                    mina = 0.0;
+   double                    maxa = 0.0;
+
+   if (request_pos) *request_pos = 0;
+   if (gravity) *gravity = ECORE_X_GRAVITY_NW;
+   if (min_w) *min_w = minw;
+   if (min_h) *min_h = minh;
+   if (max_w) *max_w = maxw;
+   if (max_h) *max_h = maxh;
+   if (base_w) *base_w = basew;
+   if (base_h) *base_h = baseh;
+   if (step_x) *step_x = stepx;
+   if (step_y) *step_y = stepy;
+   if (min_aspect) *min_aspect = mina;
+   if (max_aspect) *max_aspect = maxa;
+
+
+   hint = xcb_alloc_size_hints();
+   if (!hint) return 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   if (!_ecore_x_icccm_size_hints_get(reply, ECORE_X_ATOM_WM_NORMAL_HINTS, hint))
+     return 0;
+
+   flags = xcb_size_hints_get_flags(hint);
+     if ((flags & XCB_SIZE_US_POSITION_HINT) || (flags & XCB_SIZE_P_POSITION_HINT))
+     {
+       if (request_pos)
+          *request_pos = 1;
+     }
+   if (flags & XCB_SIZE_P_WIN_GRAVITY_HINT)
+     {
+       if (gravity)
+          *gravity = xcb_size_hints_get_win_gravity(hint);
+     }
+   if (flags & XCB_SIZE_P_MIN_SIZE_HINT)
+     {
+       xcb_size_hints_get_min_size(hint, &minw, &minh);
+     }
+   if (flags & XCB_SIZE_P_MAX_SIZE_HINT)
+     {
+       xcb_size_hints_get_max_size(hint, &maxw, &maxh);
+       if (maxw < minw)
+          maxw = minw;
+       if (maxh < minh)
+          maxh = minh;
+     }
+   if (flags & XCB_SIZE_BASE_SIZE_HINT)
+     {
+       xcb_size_hints_get_base_size(hint, &basew, &baseh);
+       if (basew > minw)
+          minw = basew;
+       if (baseh > minh)
+          minh = baseh;
+     }
+   if (flags & XCB_SIZE_P_RESIZE_INC_HINT)
+     {
+       xcb_size_hints_get_increase(hint, &stepx, &stepy);
+       if (stepx < 1)
+          stepx = 1;
+       if (stepy < 1)
+          stepy = 1;
+     }
+   if (flags & XCB_SIZE_P_ASPECT_HINT)
+     {
+        int32_t min_aspect_num;
+        int32_t min_aspect_den;
+        int32_t max_aspect_num;
+        int32_t max_aspect_den;
+
+        xcb_size_hints_get_min_aspect(hint, &min_aspect_num, &min_aspect_den);
+       if (min_aspect_den > 0)
+          mina = ((double)min_aspect_num) / ((double)min_aspect_den);
+        xcb_size_hints_get_max_aspect(hint, &max_aspect_num, &max_aspect_den);
+       if (max_aspect_den > 0)
+          maxa = ((double)max_aspect_num) / ((double)max_aspect_den);
+     }
+
+   if (min_w)
+      *min_w = minw;
+   if (min_h)
+      *min_h = minh;
+   if (max_w)
+      *max_w = maxw;
+   if (max_h)
+      *max_h = maxh;
+   if (base_w)
+      *base_w = basew;
+   if (base_h)
+      *base_h = baseh;
+   if (step_x)
+      *step_x = stepx;
+   if (step_y)
+      *step_y = stepy;
+   if (min_aspect)
+      *min_aspect = mina;
+   if (max_aspect)
+      *max_aspect = maxa;
+
+   free(hint);
+
+   return 1;
+}
+
+/**
+ * Set the title of a window
+ * @param window The window.
+ * @param title  The title.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_title_set(Ecore_X_Window window,
+                        const char    *title)
+{
+   /* FIXME: to do:  utf8 */
+
+/*    xprop.value = NULL; */
+/* #ifdef X_HAVE_UTF8_STRING */
+/*    list[0] = strdup(t); */
+/*    ret = */
+/*       Xutf8TextListToTextProperty(_ecore_xcb_conn, list, 1, XUTF8StringStyle, */
+/*                               &xprop); */
+/* #else */
+/*    list[0] = strdup(t); */
+/*    ret = */
+/*       XmbTextListToTextProperty(_ecore_xcb_conn, list, 1, XStdICCTextStyle, */
+/*                             &xprop); */
+/* #endif */
+
+  xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                      ECORE_X_ATOM_WM_NAME, ECORE_X_ATOM_STRING, 8,
+                      strlen(title), title);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_title_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_NAME,
+                                       XCB_GET_PROPERTY_TYPE_ANY,
+                                       0L, 128);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_title_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_title_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Gets the title of a window.
+ * @param window The window (Unused).
+ * @return       The title of the window
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_title_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_title_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI char *
+ecore_x_icccm_title_get(Ecore_X_Window window __UNUSED__)
+{
+   char                     *title = NULL;
+   xcb_get_property_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return NULL;
+
+   if (reply->type == ECORE_X_ATOM_UTF8_STRING)
+     {
+        int length;
+
+        /* FIXME: verify the value of length */
+        length = (reply->value_len * reply->format) / 8;
+        title = (char *)malloc((length + 1) * sizeof(char));
+        memcpy(title, xcb_get_property_value(reply), length);
+        title[length] = '\0';
+     }
+   /* not in UTF8, so we convert */
+   else
+     {
+       /* convert to utf8 */
+
+       /* FIXME: to do... */
+
+/* #ifdef X_HAVE_UTF8_STRING */
+/*              ret = Xutf8TextPropertyToTextList(_ecore_xcb_conn, &xprop, */
+/*                                                &list, &num); */
+/* #else */
+/*              ret = XmbTextPropertyToTextList(_ecore_xcb_conn, &xprop, */
+/*                                              &list, &num); */
+/* #endif */
+
+/*              if ((ret == XLocaleNotSupported) || */
+/*                  (ret == XNoMemory) || (ret == XConverterNotFound)) */
+/*                { */
+/*                   t = strdup((char *)xprop.value); */
+/*                } */
+/*              else if ((ret >= Success) && (num > 0)) */
+/*                { */
+/*                   t = strdup(list[0]); */
+/*                } */
+/*              if (list) */
+/*                XFreeStringList(list); */
+/*           } */
+
+/*         if (xprop.value) XFree(xprop.value); */
+     }
+
+   return title;
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_protocol_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_PROTOCOLS,
+                                       ECORE_X_ATOM_ATOM, 0, 1000000L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_protocol_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_protocol_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Set or unset a wm protocol property.
+ * @param window   The Window
+ * @param protocol The protocol to enable/disable
+ * @param on       On/Off
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_protocol_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_protocol_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_protocol_set(Ecore_X_Window      window,
+                          Ecore_X_WM_Protocol protocol,
+                           int                 on)
+{
+   xcb_get_property_reply_t *reply;
+   Ecore_X_Atom             *protos = NULL;
+   Ecore_X_Atom              proto;
+   uint32_t                  protos_count = 0;
+   uint8_t                   already_set = 0;
+
+   /* Check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+      return;
+
+   proto = _ecore_xcb_atoms_wm_protocols[protocol];
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   if ((reply->type == ECORE_X_ATOM_ATOM) && (reply->format == 32))
+     {
+        uint32_t i;
+
+        protos_count = reply->value_len / sizeof(Ecore_X_Atom);
+        protos = (Ecore_X_Atom *)xcb_get_property_value(reply);
+        for (i = 0; i < protos_count; i++)
+          {
+             if (protos[i] == proto)
+               {
+                  already_set = 1;
+                  break;
+               }
+          }
+     }
+
+   if (on)
+     {
+       Ecore_X_Atom *new_protos = NULL;
+
+       if (already_set)
+          return;
+       new_protos = (Ecore_X_Atom *)malloc((protos_count + 1) * sizeof(Ecore_X_Atom));
+       if (!new_protos)
+          return;
+        memcpy(new_protos, protos, reply->value_len);
+       new_protos[protos_count] = proto;
+       xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                            ECORE_X_ATOM_WM_PROTOCOLS,
+                            ECORE_X_ATOM_ATOM, 32,
+                            protos_count + 1, new_protos);
+       free(new_protos);
+     }
+   else
+     {
+        uint32_t i;
+
+       if (!already_set)
+          return;
+       for (i = 0; i < protos_count; i++)
+         {
+            if (protos[i] == proto)
+              {
+                 uint32_t j;
+
+                 for (j = i + 1; j < protos_count; j++)
+                    protos[j - 1] = protos[j];
+                 if (protos_count > 1)
+                     xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                                         ECORE_X_ATOM_WM_PROTOCOLS,
+                                         ECORE_X_ATOM_ATOM, 32,
+                                         protos_count - 1, protos);
+                 else
+                    xcb_delete_property(_ecore_xcb_conn, window,
+                                         ECORE_X_ATOM_WM_PROTOCOLS);
+                 return;
+              }
+         }
+     }
+}
+
+/**
+ * Determines whether a protocol is set for a window.
+ * @param window   The Window (Unused).
+ * @param protocol The protocol to query.
+ * @return         1 if the protocol is set, else 0.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_protocol_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_protocol_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI int
+ecore_x_icccm_protocol_isset(Ecore_X_Window      window __UNUSED__,
+                             Ecore_X_WM_Protocol protocol)
+{
+   xcb_get_property_reply_t *reply;
+   Ecore_X_Atom           *protos = NULL;
+   Ecore_X_Atom            proto;
+   uint32_t                  i;
+   uint8_t                   ret = 0;
+
+   /* check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+      return 0;
+
+   proto = _ecore_xcb_atoms_wm_protocols[protocol];
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply || (reply->type != ECORE_X_ATOM_ATOM) || (reply->format != 32))
+     {
+        return 0;
+     }
+
+   protos = (Ecore_X_Atom *)xcb_get_property_value(reply);
+   for (i = 0; i < reply->value_len; i++)
+      if (protos[i] == proto)
+       {
+          ret = 1;
+          break;
+       }
+
+   return ret;
+}
+
+/**
+ * Set a window name & class.
+ * @param window The window
+ * @param name   The name string
+ * @param class  The class string
+ *
+ * Set the name and class of @p window to respectively @p name and @p class.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_name_class_set(Ecore_X_Window window,
+                             const char    *name,
+                             const char    *class)
+{
+   char *class_string;
+   char *s;
+   int   length_name;
+   int   length_class;
+
+   length_name = strlen(name);
+   length_class = strlen(class);
+   class_string = (char *)malloc(sizeof(char) * (length_name + length_class + 2));
+   if (!class_string)
+     return;
+   s = class_string;
+   if (length_name)
+     {
+       strcpy(s, name);
+       s += length_name + 1;
+     }
+   else
+     *s++ = '\0';
+   if(length_class)
+     strcpy(s, class);
+   else
+     *s = '\0';
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_CLASS, ECORE_X_ATOM_STRING, 8,
+                       length_name + length_class + 2, (void *)class_string);
+   free(class_string);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_name_class_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_CLASS,
+                                       ECORE_X_ATOM_STRING,
+                                       0, 2048L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_name_class_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_name_class_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get a window name and class.
+ * @param window The window (Unused).
+ * @param name   The name string.
+ * @param class  The class string.
+ *
+ * Store the name and class of @p window into respectively @p name and
+ * @p class.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_name_class_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_name_class_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_name_class_get(Ecore_X_Window window __UNUSED__,
+                             char         **name,
+                             char         **class)
+{
+   xcb_get_property_reply_t *reply;
+   void                     *data;
+   char                     *n = NULL;
+   char                     *c = NULL;
+   int                       length;
+   int                       length_name;
+   int                       length_class;
+
+
+   if (name) *name = NULL;
+   if (class) *class = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return;
+
+   if ((reply->type != ECORE_X_ATOM_STRING) ||
+       (reply->format != 8))
+      return;
+
+   length = reply->value_len;
+   data = xcb_get_property_value(reply);
+   /* data contains the name string and the class string */
+   /* separated by the NULL character. data is not NULL-terminated */
+   length_name = strlen(data);
+   n = (char *)malloc(sizeof(char) * (length_name + 1));
+   if (!n)
+      return;
+   length_class = length - length_name - 1;
+   c = (char *)malloc(sizeof(char) * (length_class + 1));
+   if (!c)
+     {
+        free(n);
+        return;
+     }
+
+   memcpy(n, data, length_name);
+   n[length_name] = '\0';
+   length_class = length - length_name - 1;
+   data += length_name + 1;
+   memcpy(c, data, length_class);
+   c[length_class] = '\0';
+
+   if (name)
+      *name = n;
+   if (class)
+      *class = c;
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_client_machine_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_WM_CLIENT_MACHINE,
+                                       XCB_GET_PROPERTY_TYPE_ANY,
+                                       0L, 1000000L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_client_machine_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_client_machine_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get a window client machine string.
+ * @param window The window
+ * @return The windows client machine string
+ *
+ * Return the client machine of a window. String must be free'd when done with.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_client_machine_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_client_machine_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI char *
+ecore_x_icccm_client_machine_get(Ecore_X_Window window)
+{
+   char *name;
+
+   name = ecore_x_window_prop_string_get(window, ECORE_X_ATOM_WM_CLIENT_MACHINE);
+   return name;
+}
+
+/**
+ * Sets the WM_COMMAND property for @a win.
+ *
+ * @param window The window.
+ * @param argc   Number of arguments.
+ * @param argv   Arguments.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_command_set(Ecore_X_Window window,
+                          int            argc,
+                          char         **argv)
+{
+   void *buf;
+   char *b;
+   int   nbytes;
+   int   i;
+
+   for (i = 0, nbytes = 0; i < argc; i++)
+     {
+        nbytes += strlen(argv[i]) + 1;
+     }
+   buf = malloc(sizeof(char) * nbytes);
+   if (!buf)
+     return;
+   b = (char *)buf;
+   for (i = 0; i < argc; i++)
+     {
+        if (argv[i])
+          {
+             strcpy(b, argv[i]);
+             b += strlen(argv[i]) + 1;
+          }
+        else
+          *b++ = '\0';
+     }
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_COMMAND, ECORE_X_ATOM_STRING, 8,
+                       nbytes, buf);
+   free(buf);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_command_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_COMMAND,
+                                       XCB_GET_PROPERTY_TYPE_ANY,
+                                       0L, 1000000L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_command_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_command_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the WM_COMMAND property for a window.
+ *
+ * @param win  The window.
+ * @param argc Number of arguments.
+ * @param argv Arguments.
+ *
+ * Return the command of @p window and store it in @p argv. @p argc
+ * contains the number of arguments. String must be free'd when done with.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_command_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_command_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_command_get(Ecore_X_Window window __UNUSED__,
+                          int           *argc,
+                          char        ***argv)
+{
+   xcb_get_property_reply_t *reply;
+   char                    **v;
+   char                     *data;
+   char                     *cp;
+   char                     *start;
+   uint32_t                  value_len;
+   int                       c;
+   int                       i;
+   int                       j;
+
+   if (argc) *argc = 0;
+   if (argv) *argv = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return;
+
+   if ((reply->type != ECORE_X_ATOM_STRING) ||
+       (reply->format != 8))
+      return;
+
+   value_len = reply->value_len;
+   data = (char *)xcb_get_property_value(reply);
+   if (value_len && (data[value_len - 1] == '\0'))
+     value_len--;
+
+   c = 1;
+   for (cp = (char *)data, i = value_len; i > 0; cp++, i--)
+     {
+        if (*cp == '\0') c++;
+     }
+   v = (char **)malloc((c + 1) * sizeof(char *));
+   if (!v)
+      return;
+
+   start = (char *)malloc((value_len + 1) * sizeof(char));
+   if (!start)
+     {
+       free(v);
+       return;
+     }
+
+    memcpy (start, (char *) data, value_len);
+    start[value_len] = '\0';
+    for (cp = start, i = value_len + 1, j = 0; i > 0; cp++, i--) {
+       if (*cp == '\0') {
+           v[j] = start;
+           start = (cp + 1);
+           j++;
+       }
+    }
+
+   if (c < 1)
+     {
+       if (v)
+         free(v);
+       return;
+     }
+
+   if (argc) *argc = c;
+   if (argv)
+     {
+       (*argv) = malloc(c * sizeof(char *));
+       if (!*argv)
+         {
+            free(v);
+            if (argc) *argc = 0;
+            return;
+         }
+       for (i = 0; i < c; i++)
+         {
+            if (v[i])
+              (*argv)[i] = strdup(v[i]);
+            else
+              (*argv)[i] = strdup("");
+         }
+     }
+
+   free(v);
+}
+
+/**
+ * Set a window icon name.
+ * @param window The window.
+ * @param title  The icon name string.
+ *
+ * Set @p window icon name.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_icon_name_set(Ecore_X_Window window,
+                            const char    *title)
+{
+   /* FIXME: do the UTF8 conversion... */
+
+/* #ifdef X_HAVE_UTF8_STRING */
+/*    list[0] = strdup(t); */
+/*    ret = Xutf8TextListToTextProperty(_ecore_xcb_conn, list, 1, */
+/*                                  XUTF8StringStyle, &xprop); */
+/* #else */
+/*    list[0] = strdup(t); */
+/*    ret = XmbTextListToTextProperty(_ecore_xcb_conn, list, 1, */
+/*                                XStdICCTextStyle, &xprop); */
+/* #endif */
+
+  xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                      ECORE_X_ATOM_WM_ICON_NAME, ECORE_X_ATOM_WM_ICON_NAME,
+                      8, strlen(title), title);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_icon_name_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_ICON_NAME,
+                                       XCB_GET_PROPERTY_TYPE_ANY,
+                                       0L, 128L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_icon_name_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_icon_name_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get a window icon name.
+ * @param window The window.
+ * @return       The windows icon name string.
+ *
+ * Return the icon name of @p window. String must be free'd when done with.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_icon_name_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_icon_name_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI char *
+ecore_x_icccm_icon_name_get(Ecore_X_Window window __UNUSED__)
+{
+   xcb_get_property_reply_t *reply;
+   char                     *title = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return NULL;
+
+   printf ("[XCB] reply->bytes_afer (should be 0): %d\n", ((xcb_get_property_reply_t *)reply)->bytes_after);
+
+   if (reply->type == ECORE_X_ATOM_UTF8_STRING)
+     {
+        int length;
+
+        /* FIXME: verify the value of length */
+        length = reply->value_len * reply->format / 8;
+        title = (char *)malloc((length + 1) * sizeof(char));
+        memcpy(title, xcb_get_property_value(reply), length);
+        title[length] = '\0';
+     }
+   /* not in UTF8, so we convert */
+   else
+     {
+        /* FIXME: do the UTF8... */
+
+       /* convert to utf8 */
+/* #ifdef X_HAVE_UTF8_STRING */
+/*               ret = Xutf8TextPropertyToTextList(_ecore_xcb_conn, &xprop, */
+/*                                                 &list, &num); */
+/* #else */
+/*               ret = XmbTextPropertyToTextList(_ecore_xcb_conn, &xprop, */
+/*                                               &list, &num); */
+/* #endif */
+
+/*               if ((ret == XLocaleNotSupported) || */
+/*                   (ret == XNoMemory) || (ret == XConverterNotFound)) */
+/*                 { */
+/*                    t = strdup((char *)xprop.value); */
+/*                 } */
+/*               else if (ret >= Success) */
+/*                 { */
+/*                    if ((num >= 1) && (list)) */
+/*                      { */
+/*                         t = strdup(list[0]); */
+/*                      } */
+/*                    if (list) */
+/*                      XFreeStringList(list); */
+/*                 } */
+/*            } */
+
+/*          if (xprop.value) XFree(xprop.value); */
+     }
+
+   return title;
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_colormap_window_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? ((xcb_screen_t *)_ecore_xcb_screen)->root : window,
+                                       ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                       ECORE_X_ATOM_WINDOW,
+                                       0L, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_colormap_window_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_colormap_window_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Add a subwindow to the list of windows that need a different colormap installed.
+ * @param window     The toplevel window
+ * @param sub_window The subwindow to be added to the colormap windows list
+ *
+ * Add @p sub_window to the list of windows that need a different
+ * colormap installed.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_colormap_window_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_colormap_window_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_colormap_window_set(Ecore_X_Window window,
+                                  Ecore_X_Window sub_window)
+{
+   void                     *data = NULL;
+   xcb_get_property_reply_t *reply;
+   uint32_t                  num;
+
+   if (window == 0)
+     window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply || (reply->format != 32) || (reply->value_len == 0))
+     {
+        data = calloc(1, sizeof(Ecore_X_Window));
+        if (!data)
+          {
+             if (reply) free(reply);
+             return;
+          }
+        num = 1;
+     }
+   else
+     {
+        Ecore_X_Window *newset = NULL;
+        Ecore_X_Window *oldset = NULL;
+        uint32_t          i;
+
+        num = reply->value_len;
+        data = calloc(num + 1, sizeof(Ecore_X_Window));
+        if (!data)
+          return;
+
+        newset = (Ecore_X_Window *)data;
+        oldset = (Ecore_X_Window *)xcb_get_property_value(reply);
+        for (i = 0; i < num; ++i)
+          {
+             if (oldset[i] == sub_window)
+               {
+                  free(newset);
+                  return;
+               }
+
+             newset[i] = oldset[i];
+          }
+
+        newset[num++] = sub_window;
+     }
+
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                       ECORE_X_ATOM_WINDOW,
+                       32, num, data);
+   free(data);
+}
+
+/**
+ * Remove a window from the list of colormap windows.
+ * @param window     The toplevel window
+ * @param sub_window The window to be removed from the colormap window list.
+ *
+ * Remove @p sub_window from the list of colormap windows.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_colormap_window_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_colormap_window_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_colormap_window_unset(Ecore_X_Window window,
+                                    Ecore_X_Window sub_window)
+{
+   void                     *data = NULL;
+   Ecore_X_Window           *oldset = NULL;
+   Ecore_X_Window           *newset = NULL;
+   xcb_get_property_reply_t *reply;
+   uint32_t                  num;
+   uint32_t                  i;
+   uint32_t                  j;
+   uint32_t                  k = 0;
+
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply || (reply->format != 32) || (reply->value_len == 0))
+     return;
+
+   num = reply->value_len;
+   oldset = (Ecore_X_Window *)xcb_get_property_value(reply);
+   for (i = 0; i < num; i++)
+     {
+       if (oldset[i] == sub_window)
+         {
+            if (num == 1)
+              {
+                 xcb_delete_property(_ecore_xcb_conn, window,
+                                      ECORE_X_ATOM_WM_COLORMAP_WINDOWS);
+                 return;
+              }
+            else
+              {
+                 data = calloc(num - 1, sizeof(Ecore_X_Window));
+                 newset = (Ecore_X_Window *)data;
+                 for (j = 0; j < num; ++j)
+                    if (oldset[j] != sub_window)
+                       newset[k++] = oldset[j];
+                  xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                                      ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                      ECORE_X_ATOM_WINDOW,
+                                      32, k, data);
+                 free(newset);
+                 return;
+              }
+         }
+     }
+}
+
+/**
+ * Specify that a window is transient for another top-level window and should be handled accordingly.
+ * @param window    The transient window
+ * @param forwindow The toplevel window
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_transient_for_set(Ecore_X_Window window,
+                                Ecore_X_Window forwindow)
+{
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_TRANSIENT_FOR, ECORE_X_ATOM_WINDOW, 32,
+                       1, (void *)&forwindow);
+}
+
+/**
+ * Remove the transient_for setting from a window.
+ * @param window The window.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_transient_for_unset(Ecore_X_Window window)
+{
+   xcb_delete_property(_ecore_xcb_conn, window, ECORE_X_ATOM_WM_TRANSIENT_FOR);
+}
+
+/*
+ * Sends the GetProperty request.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_transient_for_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_WM_TRANSIENT_FOR,
+                                       ECORE_X_ATOM_WINDOW,
+                                       0L, 1L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_transient_for_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_transient_for_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the window this window is transient for, if any.
+ * @param window The window to check (Unused).
+ * @return       The window ID of the top-level window, or 0 if the property does not exist.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_transient_for_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_transient_for_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_icccm_transient_for_get(Ecore_X_Window window __UNUSED__)
+{
+   xcb_get_property_reply_t *reply;
+   Ecore_X_Window            forwin = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return forwin;
+
+   if ((reply->format != 32) ||
+       (reply->value_len == 0) ||
+       (reply->type != ECORE_X_ATOM_WINDOW))
+      return forwin;
+   
+   forwin = *(Ecore_X_Window *)xcb_get_property_value(reply);
+
+   return forwin;
+}
+
+/**
+ * Set the window role hint.
+ * @param window The window
+ * @param role   The role string.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_window_role_set(Ecore_X_Window window,
+                              const char    *role)
+{
+   ecore_x_window_prop_string_set(window, ECORE_X_ATOM_WM_WINDOW_ROLE,
+                                 (char *)role);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_window_role_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_WM_WINDOW_ROLE, XCB_GET_PROPERTY_TYPE_ANY,
+                                       0L, 1000000L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_window_role_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_window_role_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the window role.
+ * @param window The window.
+ * @return       The window's role string.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_window_role_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_window_role_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI char *
+ecore_x_icccm_window_role_get(Ecore_X_Window window)
+{
+   return ecore_x_window_prop_string_get(window, ECORE_X_ATOM_WM_WINDOW_ROLE);
+}
+
+/**
+ * Set the window's client leader.
+ * @param window The window
+ * @param leader The client leader window
+ *
+ * All non-transient top-level windows created by an app other than
+ * the main window must have this property set to the app's main window.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_client_leader_set(Ecore_X_Window window,
+                                Ecore_X_Window leader)
+{
+   ecore_x_window_prop_window_set(window, ECORE_X_ATOM_WM_CLIENT_LEADER,
+                                 &leader, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_client_leader_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window,
+                                       ECORE_X_ATOM_WM_CLIENT_LEADER,
+                                       ECORE_X_ATOM_WINDOW,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_icccm_client_leader_get_prefetch().
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_client_leader_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the window's client leader.
+ * @param window The window
+ * @return       The window's client leader window, or 0 if unset.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_icccm_client_leader_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_icccm_client_leader_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_icccm_client_leader_get(Ecore_X_Window window)
+{
+   Ecore_X_Window leader;
+
+   if (ecore_x_window_prop_window_get(window, ECORE_X_ATOM_WM_CLIENT_LEADER,
+                                     &leader, 1) > 0)
+      return leader;
+
+   return 0;
+}
+
+/**
+ * Send the ClientMessage event with the ChangeState property.
+ * @param window The window.
+ * @param root   The root window.
+ * @ingroup Ecore_X_ICCCM_Group
+ */
+EAPI void
+ecore_x_icccm_iconic_request_send(Ecore_X_Window window,
+                                  Ecore_X_Window root)
+{
+   xcb_client_message_event_t ev;
+
+   if (!window) return;
+   if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   /* send_event is bit 7 (0x80) of response_type */
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.sequence = 0;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_WM_CHANGE_STATE;
+   ev.data.data32[0] = XCB_WM_ICONIC_STATE;
+
+   xcb_send_event(_ecore_xcb_conn, 0, root,
+                  XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
+                  (const char *)&ev);
+}
+
+/* FIXME: there are older E hints, gnome hints and mwm hints and new netwm */
+/*        hints. each should go in their own file/section so we know which */
+/*        is which. also older kde hints too. we should try support as much */
+/*        as makese sense to support */
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_mwm.c b/src/lib/ecore_x/xcb/ecore_xcb_mwm.c
new file mode 100644 (file)
index 0000000..f96c4cf
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Various MWM related functions.
+ * 
+ * This is ALL the code involving anything MWM related. for both WM and
+ * client.
+ */
+
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+/**
+ * @defgroup Ecore_X_MWM_Group MWM related functions.
+ *
+ * Functions related to MWM.
+ */
+
+#define ECORE_X_MWM_HINTS_FUNCTIONS           (1 << 0)
+#define ECORE_X_MWM_HINTS_DECORATIONS         (1 << 1)
+#define ECORE_X_MWM_HINTS_INPUT_MODE          (1 << 2)
+#define ECORE_X_MWM_HINTS_STATUS              (1 << 3)
+
+typedef struct _mwmhints
+{
+   uint32_t flags;
+   uint32_t functions;
+   uint32_t decorations;
+   int32_t  inputmode;
+   uint32_t status;
+}
+MWMHints;
+
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose MWM hints are requested.
+ * @ingroup Ecore_X_MWM_Group
+ */
+EAPI void
+ecore_x_mwm_hints_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                       ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                       0, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_mwm_hints_get_prefetch().
+ * @ingroup Ecore_X_MWM_Group
+ */
+EAPI void
+ecore_x_mwm_hints_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * To document.
+ * @param  window Unused.
+ * @param  fhint To document.
+ * @param  dhint To document.
+ * @param  ihint To document.
+ * @return       1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_mwm_hints_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_mwm_hints_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_MWM_Group
+ */
+EAPI int
+ecore_x_mwm_hints_get(Ecore_X_Window          window __UNUSED__,
+                     Ecore_X_MWM_Hint_Func  *fhint,
+                     Ecore_X_MWM_Hint_Decor *dhint,
+                     Ecore_X_MWM_Hint_Input *ihint)
+{
+   MWMHints                 *mwmhints = NULL;
+   int                       ret = 0;
+   xcb_get_property_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return 0;
+
+   if ((reply->format != 32) ||
+       (reply->value_len == 0))
+      return 0;
+
+   mwmhints = xcb_get_property_value(reply);
+   if (reply->value_len >= 4)
+     {
+        if (dhint)
+          {
+             if (mwmhints->flags & ECORE_X_MWM_HINTS_DECORATIONS)
+               *dhint = mwmhints->decorations;
+             else
+               *dhint = ECORE_X_MWM_HINT_DECOR_ALL;
+          }
+        if (fhint)
+          {
+             if (mwmhints->flags & ECORE_X_MWM_HINTS_FUNCTIONS)
+               *fhint = mwmhints->functions;
+             else
+               *fhint = ECORE_X_MWM_HINT_FUNC_ALL;
+          }
+        if (ihint)
+          {
+             if (mwmhints->flags & ECORE_X_MWM_HINTS_INPUT_MODE)
+               *ihint = mwmhints->inputmode;
+             else
+               *ihint = ECORE_X_MWM_HINT_INPUT_MODELESS;
+          }
+        ret = 1;
+     }
+
+   return ret;
+}
+
+/**
+ * Sets the borderless flag of a window using MWM.
+ * @param window     The window.
+ * @param borderless The borderless flag.
+ * @ingroup Ecore_X_MWM_Group
+ */
+EAPI void
+ecore_x_mwm_borderless_set(Ecore_X_Window window,
+                           int            borderless)
+{
+   uint32_t data[5] = {0, 0, 0, 0, 0};
+
+   data[0] = 2; /* just set the decorations hint! */
+   data[2] = !borderless;
+   
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_MOTIF_WM_HINTS, ECORE_X_ATOM_MOTIF_WM_HINTS,
+                       32, 5, data);
+}
+
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_netwm.c b/src/lib/ecore_x/xcb/ecore_xcb_netwm.c
new file mode 100644 (file)
index 0000000..13026b1
--- /dev/null
@@ -0,0 +1,3197 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+/*
+ * _NET_WM... aka Extended Window Manager Hint (EWMH) functions.
+ */
+
+#include "Ecore_Data.h"
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+/**
+ * @defgroup Ecore_X_NetWM_Group Extended Window Manager Hint (EWMH) functions
+ *
+ * Functions related to the Extended Window Manager Hint (EWMH).
+ */
+
+
+typedef struct _Ecore_X_Startup_Info Ecore_X_Startup_Info;
+
+struct _Ecore_X_Startup_Info
+{
+   Ecore_X_Window win;
+
+   int   init;
+
+   int   buffer_size;
+   char *buffer;
+
+   int   length;
+
+   /* These are the sequence info fields */
+   char *id;
+   char *name;
+   int   screen;
+   char *bin;
+   char *icon;
+   int   desktop;
+   int   timestamp;
+   char *description;
+   char *wmclass;
+   int   silent;
+};
+
+#if 0
+static void  _ecore_x_window_prop_string_utf8_get_prefetch(Ecore_X_Window window, Ecore_X_Atom atom);
+static void  _ecore_x_window_prop_string_utf8_get_fetch(void);
+#endif
+static void  _ecore_x_window_prop_string_utf8_set(Ecore_X_Window window, Ecore_X_Atom atom, const char *str);
+static char *_ecore_x_window_prop_string_utf8_get(Ecore_X_Window window, Ecore_X_Atom atom);
+#if 0 /* Unused */
+static int   _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info);
+static int   _ecore_x_netwm_startup_info_parse(Ecore_X_Startup_Info *info, char *data);
+#endif
+static void  _ecore_x_netwm_startup_info_free(void *data);
+
+/*
+ * Local variables
+ */
+
+static Ecore_Hash *startup_info = NULL;
+
+/**
+ * Initialize the NetWM module
+ */
+EAPI void
+ecore_x_netwm_init(void)
+{
+   startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
+   if (startup_info)
+     {
+       ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
+     }
+}
+
+/**
+ * Shutdown the NetWM module
+ */
+EAPI void
+ecore_x_netwm_shutdown(void)
+{
+   if (startup_info)
+     ecore_hash_destroy(startup_info);
+   startup_info = NULL;
+}
+
+/**
+ * Set the _NET_SUPPORTING_WM_CHECK property.
+ * @param root    The root window.
+ * @param check   The child window.
+ * @param wm_name The name of the Window Manager.
+ *
+ * Set the _NET_SUPPORTING_WM_CHECK property on the @p root window to be
+ * the ID of the child window @p check created by the Window Manager.
+ * @p check also have the _NET_WM_NAME property set to the name
+ * @p wm_name of the Window Manager.
+ *
+ * The Window MUST call that function to indicate that a compliant
+ * window manager is active.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_wm_identify(Ecore_X_Window root,
+                          Ecore_X_Window check,
+                         const char    *wm_name)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK, &check, 1);
+   ecore_x_window_prop_window_set(check, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK, &check, 1);
+   _ecore_x_window_prop_string_utf8_set(check, ECORE_X_ATOM_NET_WM_NAME, wm_name);
+   /* This one isn't mandatory */
+   _ecore_x_window_prop_string_utf8_set(root, ECORE_X_ATOM_NET_WM_NAME, wm_name);
+}
+
+/**
+ * Set the _NET_SUPPORTED property.
+ * @param root      The root window.
+ * @param supported The supported hints.
+ * @param num       The number of hints.
+ *
+ * Set the _NET_SUPPORTED property on the @p root window. The hints
+ * that the Window Manager supports are stored in @p supported.
+ *
+ * The Window Manager MUST set this property to indicate which hints
+ * it supports.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_supported_set(Ecore_X_Window root,
+                            Ecore_X_Atom  *supported,
+                            int            num)
+{
+   ecore_x_window_prop_atom_set(root, ECORE_X_ATOM_NET_SUPPORTED, supported, num);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param root The root window
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_supported_get_prefetch(Ecore_X_Window root)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, root,
+                                       ECORE_X_ATOM_NET_SUPPORTED, ECORE_X_ATOM_ATOM,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_supported_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_supported_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the hints supported by the Window Manager.
+ * @param root      The root window.
+ * @param supported The supported hints.
+ * @param num       The number of atoms.
+ * @return          1 on success, 0 otherwise.
+ *
+ * Get the hints supported by the Window Manager. @p root is the root
+ * window. The hints are stored in @p supported. The number of hints
+ * is stored in @p num.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_supported_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_supported_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_supported_get(Ecore_X_Window root,
+                            Ecore_X_Atom **supported,
+                            int           *num)
+{
+   int num_ret;
+
+   if (num) *num = 0UL;
+   if (supported) *supported = NULL;
+
+   num_ret = ecore_x_window_prop_xid_list_get(root,
+                                              ECORE_X_ATOM_NET_SUPPORTED,
+                                              ECORE_X_ATOM_ATOM,
+                                              supported);
+   if (num_ret <= 0)
+      return 0;
+
+   if (num) *num = (uint32_t)num_ret;
+   return 1;
+}
+
+/**
+ * Set the _NET_NUMBER_OF_DESKTOPS property.
+ * @param root The root window.
+ * @param n_desks The number of desktops.
+ *
+ * Set the number of desktops @p n_desks of the Window Manager by
+ * sending the _NET_NUMBER_OF_DESKTOPS to the @p root window.
+ *
+ * The Window Manager SHOULD set and update this property to indicate
+ * the number of virtual desktops. A Pager can request a change in the
+ * number of desktops by using that function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_count_set(Ecore_X_Window root,
+                             unsigned int   n_desks)
+{
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS,
+                                 &n_desks, 1);
+}
+
+/**
+ * Set the _NET_VIRTUAL_ROOTS property.
+ * @param root    The root window.
+ * @param vroots  The virtual root windows.
+ * @param n_desks The number of desks.
+ *
+ * Set the number of virtual desktops by sending the
+ * _NET_VIRTUAL_ROOTS property to the @p root window. @p vroots is an
+ * array of window and @p n_desks is the number of windows.
+ *
+ * A Window Manager that implements virtual desktops by reparent
+ * client windows to a child of the root window MUST use that
+ * function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_roots_set(Ecore_X_Window  root,
+                            Ecore_X_Window *vroots,
+                             unsigned int    n_desks)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_VIRTUAL_ROOTS, vroots, n_desks);
+}
+
+/**
+ * Set the _NET_DESKTOP_NAMES property.
+ * @param root    The root window.
+ * @param names   The names of the virtual desktops.
+ * @param n_desks The number of virtual desktops.
+ *
+ * Set the name of each virtual desktop by sending the
+ * _NET_DESKTOP_NAMES to the @p root window. @p names are the names of
+ * the virtual desktops and @p n_desks is the number of virtual
+ * desktops.
+ *
+ * A Pager MAY use that function. @p n_desks may be different from the
+ * one passed to ecore_x_netwm_desk_count_set().  If it less or equal,
+ * then the desktops with high numbers are unnamed. If it is larger,
+ * then the excess names are considered to be reserved in case the
+ * number of desktops is increased.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_names_set(Ecore_X_Window root,
+                            const char   **names,
+                             unsigned int   n_desks)
+{
+   char        ss[32];
+   char       *buf;
+   const char *s;
+   uint32_t    i;
+   uint32_t    len;
+   uint32_t    l;
+
+   buf = NULL;
+   len = 0;
+
+   for (i = 0; i < n_desks; i++)
+     {
+       s = (names) ? names[i] : NULL;
+       if (!s)
+         {
+            /* Default to "Desk-<number>" */
+            sprintf(ss, "Desk-%d", i);
+            s = ss;
+         }
+
+       l = strlen(s) + 1;
+       buf = realloc(buf, len + l);
+       memcpy(buf + len, s, l);
+       len += l;
+     }
+
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, root,
+                       ECORE_X_ATOM_NET_DESKTOP_NAMES,
+                       ECORE_X_ATOM_UTF8_STRING,
+                       8, len, (const void *)buf);
+   free(buf);
+}
+
+/**
+ * Set the _NET_DESKTOP_GEOMETRY property.
+ * @param root   The root window.
+ * @param width  The width of the desktop.
+ * @param height The height of the desktop.
+ *
+ * Set the common @p width and @p height of all desktops by sending
+ * the _NET_DESKTOP_GEOMETRY to the @p root window.
+ *
+ * This size is equal to the screen size if the Window Manager doesn't
+ * support large desktops, otherwise it's equal to the virtual size of
+ * the desktop. The Window Manager SHOULD set this property. A Pager
+ * can request a change in the desktop geometry by using this
+ * function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_size_set(Ecore_X_Window root,
+                            unsigned int   width,
+                            unsigned int   height)
+{
+   uint32_t size[2];
+
+   size[0] = width;
+   size[1] = height;
+   ecore_x_window_prop_card32_set(root,
+                                  ECORE_X_ATOM_NET_DESKTOP_GEOMETRY,
+                                  size, 2);
+}
+
+/**
+ * Set the _NET_DESKTOP_VIEWPORT property.
+ * @param root    The root window.
+ * @param origins An array of paris of coordiantes.
+ * @param n_desks The number of virtual desktops.
+ *
+ * Set the top left corner of each desktop's viewport by sending the
+ * _NET_DESKTOP_VIEWPORT property to the @p root window. @p origins
+ * contains each pair of X coordinate and Y coordinate of the top left
+ * corner of each desktop's viewport.
+ *
+ * If the Window Manager does not support large desktops, the
+ * coordinates MUST be (0,0). A Pager can request to change the
+ * viewport for the current desktop by using this function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_viewports_set(Ecore_X_Window root,
+                                 unsigned int  *origins,
+                                 unsigned int   n_desks)
+{
+   ecore_x_window_prop_card32_set(root,
+                                  ECORE_X_ATOM_NET_DESKTOP_VIEWPORT,
+                                  origins, 2 * n_desks);
+}
+
+/**
+ * Set the _NET_DESKTOP_LAYOUT property.
+ * @param root The root window.
+ * @param orientation
+ * @param columns
+ * @param rows
+ * @param starting_corner
+ *
+ * Set the layout of virtual desktops relative to each other by
+ * sending the _NET_DESKTOP_LAYOUT to the @p root window.
+ * @p orientation defines the orientation of the virtual desktop. 0
+ * means horizontal layout, 1 means vertical layout. @p columns is
+ * the number of desktops in the X direction and @p rows is the number
+ * in the Y direction. @p starting_corner is the corner containing the
+ * first desktop. The values for @p starting_corner are 0 (top-left),
+ * 1 (top-right), 2 (bottom-right) and 3 (bottom-left).
+ *
+ * When the orientation is horizontal the desktops are laid out in
+ * rows, with the first desktop in the specified starting corner. So a
+ * layout with four columns and three rows starting in
+ * the top-left corner looks like this:
+ *
+ * +--+--+--+--+
+ * | 0| 1| 2| 3|
+ * +--+--+--+--+
+ * | 4| 5| 6| 7|
+ * +--+--+--+--+
+ * | 8| 9|10|11|
+ * +--+--+--+--+
+ *
+ * With @p starting_corner being bottom-right, it looks like this:
+ *
+ * +--+--+--+--+
+ * |11|10| 9| 8|
+ * +--+--+--+--+
+ * | 7| 6| 5| 4|
+ * +--+--+--+--+
+ * | 3| 2| 1| 0|
+ * +--+--+--+--+
+ *
+ * When the orientation is vertical the layout with four columns and
+ * three rows starting in the top-left corner looks like:
+ *
+ * +--+--+--+--+
+ * | 0| 3| 6| 9|
+ * +--+--+--+--+
+ * | 1| 4| 7|10|
+ * +--+--+--+--+
+ * | 2| 5| 8|11|
+ * +--+--+--+--+
+ *
+ * With @p starting_corner  being top-right, it looks like:
+ *
+ * +--+--+--+--+
+ * | 9| 6| 3| 0|
+ * +--+--+--+--+
+ * |10| 7| 4| 1|
+ * +--+--+--+--+
+ * |11| 8| 5| 2|
+ * +--+--+--+--+
+ *
+ * This function MUST be used by a Pager and NOT by the Window
+ * Manager. When using this function, the Pager must own a manager
+ * selection.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_layout_set(Ecore_X_Window root,
+                              int            orientation,
+                              int            columns,
+                              int            rows,
+                              int            starting_corner)
+{
+   uint32_t layout[4];
+
+   layout[0] = orientation;
+   layout[1] = columns;
+   layout[2] = rows;
+   layout[3] = starting_corner;
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_LAYOUT, layout, 4);
+}
+
+/**
+ * Set the _NET_WORKAREA property.
+ * @param root    The root window.
+ * @param areas   An array of areas.
+ * @param n_desks The number of desks.
+ *
+ * Set the work area for each desktop by sending the _NET_WORKAREA
+ * property to the @p root window. An area contains the geometry (X
+ * and Y coordinates, width and height). These geometries are
+ * specified relative to the viewport on each desktop and specify an
+ * area that is completely contained within the viewport. @p areas
+ * stores these geometries. @p n_desks is the number of geometry to
+ * set.
+ *
+ * This function MUST be set by the Window Manager. It is used by
+ * desktop applications to place desktop icons appropriately.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
+                                 unsigned int  *areas,
+                                 unsigned int   n_desks)
+{
+   ecore_x_window_prop_card32_set(root,
+                                  ECORE_X_ATOM_NET_WORKAREA,
+                                  areas, 4 * n_desks);
+}
+
+/**
+ * Set the _NET_CURRENT_DESKTOP property.
+ * @param root The root window.
+ * @param desk The index of the current desktop.
+ *
+ * Set the current desktop by sending the _NET_CURRENT_DESKTOP to the
+ * @p root window. @p deskmust be an integer number between 0 and the
+ * number of desks (set by ecore_x_netwm_desk_count_set()) -1.
+ *
+ * This function MUST be called by the Window Manager. If a Pagerwants
+ * to switch to naother desktop, it MUST call that function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desk_current_set(Ecore_X_Window root,
+                               unsigned int   desk)
+{
+   ecore_x_window_prop_card32_set(root,
+                                  ECORE_X_ATOM_NET_CURRENT_DESKTOP,
+                                  &desk, 1);
+}
+
+/**
+ * Set the _NET_SHOWING_DESKTOP property.
+ * @param root The root window
+ * @param on   0 to hide the desktop, non 0 to show it.
+ *
+ * Set or unset the desktop in a "showing mode" by sending the
+ * _NET_SHOWING_DESKTOP property to the @p root window. If @p on is 0,
+ * the windows are hidden and the desktop background is displayed and
+ * focused.
+ *
+ * If a Pager wants to enter or leave the mode, it MUST use this
+ * function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_showing_desktop_set(Ecore_X_Window root,
+                                  int            on)
+{
+   uint32_t val;
+
+   val = (on) ? 1 : 0;
+   ecore_x_window_prop_card32_set(root,
+                                  ECORE_X_ATOM_NET_SHOWING_DESKTOP,
+                                  &val, 1);
+}
+
+/*
+ * Client status
+ */
+
+/**
+ * Set the _NET_CLIENT_LIST property.
+ * @param root The root window.
+ * @param p_clients An array of windows.
+ * @param n_clients The number of windows.
+ *
+ * Map all the X windows managed by the window manager from the oldest
+ * to the newest by sending the _NET_CLIENT_LIST property to the
+ * @p root window. The X windows are stored in @p p_clients and their
+ * number in @p n_clients.
+ *
+ * This function SHOULD be called by the Window Manager.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_client_list_set(Ecore_X_Window  root,
+                              Ecore_X_Window *p_clients,
+                              unsigned int    n_clients)
+{
+   ecore_x_window_prop_window_set(root,
+                                  ECORE_X_ATOM_NET_CLIENT_LIST,
+                                  p_clients, n_clients);
+}
+
+/**
+ * Set the _NET_CLIENT_LIST_STACKING property.
+ * @param root The root window.
+ * @param p_clients An array of windows.
+ * @param n_clients The number of windows.
+ *
+ * Stack all the X windows managed by the window manager from bottom
+ * to top order by sending the _NET_CLIENT_LIST_STACKING property to the
+ * @p root window. The X windows are stored in @p p_clients and their
+ * number in @p n_clients.
+ *
+ * This function SHOULD be called by the Window Manager.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_client_list_stacking_set(Ecore_X_Window  root,
+                                       Ecore_X_Window *p_clients,
+                                       unsigned int    n_clients)
+{
+   ecore_x_window_prop_window_set(root,
+                                  ECORE_X_ATOM_NET_CLIENT_LIST_STACKING,
+                                  p_clients, n_clients);
+}
+
+/**
+ * Set the _NET_ACTIVE_WINDOW property.
+ * @param root   The root window.
+ * @param window The widow to activate.
+ *
+ * Activate @p window by sending the _NET_ACTIVE_WINDOW property to
+ * the @p root window.
+ *
+ * If a Client wants to activate another window, it MUST call this
+ * function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_client_active_set(Ecore_X_Window root,
+                                Ecore_X_Window window)
+{
+   ecore_x_window_prop_window_set(root,
+                                  ECORE_X_ATOM_NET_ACTIVE_WINDOW,
+                                  &window, 1);
+}
+
+/**
+ * Set the _NET_WM_NAME property.
+ * @param window The widow to activate.
+ * @param name   The title name of the window.
+ *
+ * Set the title name of @p window to @p name by sending the
+ * _NET_WM_NAME property to @p window.
+ *
+ * The Client SHOULD set the title of @p window in UTF-8 encoding. If
+ * set, the Window Manager should use this in preference to WM_NAME.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_name_set(Ecore_X_Window window,
+                       const char    *name)
+{
+   _ecore_x_window_prop_string_utf8_set(window, ECORE_X_ATOM_NET_WM_NAME, name);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_name_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_NAME, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_name_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_name_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the title of a window.
+ * @param window The window.
+ * @param name   The title name.
+ * @return       Returns always 1.
+ *
+ * Retrieve the title name of @p window and store it in @p name. The
+ * function returns always 1.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_name_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_name_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_name_get(Ecore_X_Window window,
+                       char         **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(window, ECORE_X_ATOM_NET_WM_NAME);
+   return 1;
+}
+
+/**
+ * Set the _NET_STARTUP_ID property.
+ * @param window The window.
+ * @param id     The ID name.
+ *
+ * Set the ID @p id used for the startup sequence by sending the
+ * property _NET_STARTUP_ID to @p window. The ID name should be
+ * encoded in UTF-8.
+ *
+ * If a new value for the property is set, the Window Manager
+ * should update the window's status accordingly (update its virtual
+ * desktop, etc.).
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_startup_id_set(Ecore_X_Window window,
+                             const char    *id)
+{
+   _ecore_x_window_prop_string_utf8_set(window, ECORE_X_ATOM_NET_STARTUP_ID, id);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_startup_id_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_STARTUP_ID, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_startup_id_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_startup_id_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the startup ID name of a window.
+ * @param window The window
+ * @param id     The ID name
+ * @return       Return always 1.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_startup_id_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_startup_id_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_startup_id_get(Ecore_X_Window window,
+                             char         **id)
+{
+   if (id)
+     *id = _ecore_x_window_prop_string_utf8_get(window, ECORE_X_ATOM_NET_STARTUP_ID);
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_VISIBLE_NAME property.
+ * @param window The widow to activate.
+ * @param name   The title name of the window.
+ *
+ * Set the title name of @p window to @p name by sending the
+ * _NET_WM_VISIBLE_NAME property to @p window, when the Window Manager
+ * displays a window name other than by calling
+ * ecore_x_netwm_name_set().
+ *
+ * The Client SHOULD set the title of @p window in UTF-8
+ * encoding. This function is used for displaying title windows like
+ * [xterm1], [xterm2], ... thereby allowing Pagers to display the same
+ * title as the Window Manager.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_name_set(Ecore_X_Window window,
+                               const char    *name)
+{
+   _ecore_x_window_prop_string_utf8_set(window, ECORE_X_ATOM_NET_WM_VISIBLE_NAME,
+                                        name);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_name_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_VISIBLE_NAME, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_visible_name_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_name_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the visible title of a window.
+ * @param window The window.
+ * @param name   The title name.
+ * @return       Returns always 1.
+ *
+ * Retrieve the visible title name of @p window and store it in @p name. The
+ * function returns always 1.
+ * @param window The window
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_visible_name_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_visible_name_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_visible_name_get(Ecore_X_Window window,
+                               char         **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(window,
+                                                  ECORE_X_ATOM_NET_WM_VISIBLE_NAME);
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_ICON_NAME property.
+ * @param window The widow to activate.
+ * @param name   The icon name of the window.
+ *
+ * Set the icon name of @p window to @p name by sending the
+ * _NET_WM_ICON_NAME property to @p window.
+ *
+ * The Client SHOULD set the title of @p window in UTF-8 encoding. If
+ * set, the Window Manager should use this in preference to WM_ICON_NAME.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_name_set(Ecore_X_Window window,
+                            const char    *name)
+{
+   _ecore_x_window_prop_string_utf8_set(window, ECORE_X_ATOM_NET_WM_ICON_NAME,
+                                        name);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_name_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_ICON_NAME, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_icon_name_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_name_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the icon name of a window.
+ * @param window The window.
+ * @param name   The icon name.
+ * @return       Returns always 1.
+ *
+ * Retrieve the icon name of @p window and store it in @p name. The
+ * function returns always 1.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_icon_name_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_icon_name_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_icon_name_get(Ecore_X_Window window,
+                            char         **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(window,
+                                                 ECORE_X_ATOM_NET_WM_ICON_NAME);
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_VISIBLE_ICON_NAME property.
+ * @param window The widow to activate.
+ * @param name   The title name of the window.
+ *
+ * Set the icon name of @p window to @p name by sending the
+ * _NET_WM_VISIBLE_ICON_NAME property to @p window, when the Window Manager
+ * displays a icon name other than by calling
+ * ecore_x_netwm_icon_name_set().
+ *
+ * The Client SHOULD set the icon name in UTF-8
+ * encoding. The Window Manager MUST use this function is it display
+ * an icon name other than with ecore_x_netwm_icon_name_set().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_icon_name_set(Ecore_X_Window window,
+                                    const char    *name)
+{
+   _ecore_x_window_prop_string_utf8_set(window,
+                                        ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME,
+                                        name);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_icon_name_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_visible_icon_name_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_visible_icon_name_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the visible icon name of a window.
+ * @param window The window.
+ * @param name   The icon name.
+ * @return       Returns always 1.
+ *
+ * Retrieve the visible icon name of @p window and store it in
+ * @p name. The function returns always 1.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_visible_icon_name_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_visible_icon_name_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_visible_icon_name_get(Ecore_X_Window window,
+                                    char         **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(window,
+                                                  ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME);
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_DESKTOP property.
+ * @param window The window.
+ * @param desk   The desktop index.
+ *
+ * Set on which desktop the @p window is in by sending the
+ * _NET_WM_DESKTOP property to @p window. @p desk is the index of
+ * the desktop, starting from 0. To indicate that the window should
+ * appear on all desktops, @p desk must be equal to 0xFFFFFFFF.
+ *
+ * A Client MAY choose not to set this property, in which case the
+ * Window Manager SHOULD place it as it wishes.
+ *
+ * The Window Manager should honor _NET_WM_DESKTOP whenever a
+ * withdrawn window requests to be mapped.
+ *
+ * A Client can request a change of desktop for a non-withdrawn window
+ * by sending a _NET_WM_DESKTOP client message to the root window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desktop_set(Ecore_X_Window window,
+                          unsigned int   desk)
+{
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_DESKTOP, &desk, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desktop_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_DESKTOP, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_desktop_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desktop_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the visible icon name of a window.
+ * @param window The window.
+ * @param desk   The desktop index.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the desktop index in which @p window is displayed and
+ * store it in @p desk. If @p desk value is 0xFFFFFFFF, the window
+ * appears on all desktops. The function returns 1 on success, 0
+ * otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_desktop_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_desktop_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_desktop_get(Ecore_X_Window window,
+                          unsigned int *desk)
+{
+   int      ret;
+   uint32_t tmp;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_DESKTOP,
+                                       &tmp, 1);
+
+   if (desk) *desk = tmp;
+   return (ret == 1) ? 1 : 0;
+}
+
+/**
+ * Set the _NET_WM_STRUT property.
+ * @param window The window
+ * @param left   The number of pixels at the left of the screen.
+ * @param right  The number of pixels at the right of the screen.
+ * @param top    The number of pixels at the top of the screen.
+ * @param bottom The number of pixels at the bottom of the screen.
+ *
+ * Set space at the edje of the screen by sending the _NET_WM_STRUT
+ * property to @p window if @p window is to reserve that space.
+ * @p left, @p right, @p top and @p bottom are respectively the number
+ * of pixels at the left, right, top and bottom of the screen.
+ *
+ * This property is deprecated and ecore_x_netwm_strut_partial_set()
+ * should be used instead. However, Clients MAY set this property in
+ * addition to _NET_WM_STRUT_PARTIAL to ensure backward compatibility
+ * with Window Managers supporting older versions of the
+ * Specification.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_set(Ecore_X_Window window,
+                        int            left,
+                        int            right,
+                        int            top,
+                        int            bottom)
+{
+   uint32_t strut[4];
+
+   strut[0] = left;
+   strut[1] = right;
+   strut[2] = top;
+   strut[3] = bottom;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_STRUT, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_strut_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * _NET_WM_STRUT is deprecated
+ */
+
+/**
+ * Get the space at the edje of the screen.
+ * @param window The window
+ * @param left   The number of pixels at the left of the screen.
+ * @param right  The number of pixels at the right of the screen.
+ * @param top    The number of pixels at the top of the screen.
+ * @param bottom The number of pixels at the bottom of the screen.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the space at the edje of the screen if @p window is to
+ * reserve such space. The number of pixels at the left, right, top
+ * and bottom of the screen are respectively stored in @p left,
+ * @p right, @p top and @p bottom. This function returns 1 on success,
+ * 0 otherwise.
+ *
+ * This property is deprecated. See ecore_x_netwm_strut_set() for more
+ * informations.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_strut_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_strut_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_strut_get(Ecore_X_Window window,
+                        int           *left,
+                        int           *right,
+                        int           *top,
+                        int           *bottom)
+{
+   uint32_t strut[4];
+   int      ret = 0;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
+   if (ret != 4)
+     return 0;
+
+   if (left)   *left   = strut[0];
+   if (right)  *right  = strut[1];
+   if (top)    *top    = strut[2];
+   if (bottom) *bottom = strut[3];
+
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_STRUT_PARTIAL property.
+ * @param window         The window
+ * @param left           The number of pixels at the left of the screen.
+ * @param right          The number of pixels at the right of the screen.
+ * @param top            The number of pixels at the top of the screen.
+ * @param bottom         The number of pixels at the bottom of the screen.
+ * @param left_start_y   The number of pixels.
+ * @param left_end_y     The number of pixels.
+ * @param right_start_y  The number of pixels.
+ * @param right_end_y    The number of pixels.
+ * @param top_start_x    The number of pixels.
+ * @param top_end_x      The number of pixels.
+ * @param bottom_start_x The number of pixels.
+ * @param bottom_end_x   The number of pixels.
+ *
+ * Set space at the edje of the screen by sending the
+ * _NET_WM_STRUT_PARTIAL property to @p window if @p window is to
+ * reserve that space. @p left, @p right, @p top and @p bottom are
+ * respectively the number of pixels at the left, right, top and
+ * bottom of the screen.
+ *
+ * TODO: more description for that function.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_partial_set(Ecore_X_Window window,
+                                int            left,
+                                int            right,
+                                int            top,
+                                int            bottom,
+                                int            left_start_y,
+                                int            left_end_y,
+                                int            right_start_y,
+                                int            right_end_y,
+                                int            top_start_x,
+                                int            top_end_x,
+                                int            bottom_start_x,
+                                int            bottom_end_x)
+{
+   unsigned int strut[12];
+
+   strut[0] = left;
+   strut[1] = right;
+   strut[2] = top;
+   strut[3] = bottom;
+   strut[4] = left_start_y;
+   strut[5] = left_end_y;
+   strut[6] = right_start_y;
+   strut[7] = right_end_y;
+   strut[8] = top_start_x;
+   strut[9] = top_end_x;
+   strut[10] = bottom_start_x;
+   strut[11] = bottom_end_x;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, strut, 12);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_partial_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_strut_partial_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_strut_partial_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the space at the edje of the screen of a window.
+ * @param window         The window
+ * @param left           The number of pixels at the left of the screen.
+ * @param right          The number of pixels at the right of the screen.
+ * @param top            The number of pixels at the top of the screen.
+ * @param bottom         The number of pixels at the bottom of the screen.
+ * @param left_start_y   The number of pixels.
+ * @param left_end_y     The number of pixels.
+ * @param right_start_y  The number of pixels.
+ * @param right_end_y    The number of pixels.
+ * @param top_start_x    The number of pixels.
+ * @param top_end_x      The number of pixels.
+ * @param bottom_start_x The number of pixels.
+ * @param bottom_end_x   The number of pixels.
+ *
+ * Retrieve the space at the edje of the screen if @p window is to
+ * reserve such space. The number of pixels at the left, right, top
+ * and bottom of the screen are respectively stored in @p left,
+ * @p right, @p top and @p bottom. This function returns 1 on success,
+ * 0 otherwise.
+ *
+ * TODO: more description for that function.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_strut_partial_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_strut_partial_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_strut_partial_get(Ecore_X_Window window,
+                                int           *left,
+                                int           *right,
+                                int           *top,
+                                int           *bottom,
+                                int           *left_start_y,
+                                int           *left_end_y,
+                                int           *right_start_y,
+                                int           *right_end_y,
+                                int           *top_start_x,
+                                int           *top_end_x,
+                                int           *bottom_start_x,
+                                int           *bottom_end_x)
+{
+   uint32_t strut[12];
+   int      ret = 0;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, strut, 12);
+   if (ret != 12)
+     return 0;
+
+   if (left)           *left           = strut[0];
+   if (right)          *right          = strut[1];
+   if (top)            *top            = strut[2];
+   if (bottom)         *bottom         = strut[3];
+   if (left_start_y)   *left_start_y   = strut[4];
+   if (left_end_y)     *left_end_y     = strut[5];
+   if (right_start_y)  *right_start_y  = strut[6];
+   if (right_end_y)    *right_end_y    = strut[7];
+   if (top_start_x)    *top_start_x    = strut[8];
+   if (top_end_x)      *top_end_x      = strut[9];
+   if (bottom_start_x) *bottom_start_x = strut[10];
+   if (bottom_end_x)   *bottom_end_x   = strut[11];
+   return 1;
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icons_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_ICON, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_icons_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icons_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieve hte possible icons of a window.
+ * @param window The window
+ * @param icon   An array of icons.
+ * @param num    The number of icons.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve an array of possible icons of @p window. The icons are
+ * stored in @p icon and their number in @p num.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_icons_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_icons_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_icons_get(Ecore_X_Window window,
+                        Ecore_X_Icon **icon,
+                        int           *num)
+{
+   uint32_t *data;
+   uint32_t *p;
+   uint32_t *src;
+   uint32_t  icons;
+   uint32_t  len;
+   uint32_t  i;
+   int       num_ret;
+
+   if (num) *num = 0UL;
+   if (icon) *icon = NULL;
+
+   num_ret = ecore_x_window_prop_card32_list_get(window,
+                                                 ECORE_X_ATOM_NET_WM_ICON,
+                                                 &data);
+   if ((num_ret <= 0) || !data)
+     return 0;
+
+   if (num_ret < 2)
+     {
+       free(data);
+       return 0;
+     }
+
+   /* Check how many icons there are */
+   icons = 0;
+   p = data;
+   while (p)
+     {
+       len = p[0] * p[1];
+       p += (len + 2);
+       if ((p - data) > num_ret)
+         {
+            free(data);
+            return 0;
+         }
+       icons++;
+
+       if ((p - data) == num_ret)
+         p = NULL;
+     }
+   if (num) *num = icons;
+
+   /* If the user doesn't want the icons, return */
+   if (!icon)
+     {
+       free(data);
+       return 1;
+     }
+
+   /* Allocate memory */
+   *icon = malloc(icons * sizeof(Ecore_X_Icon));
+   if (!(*icon))
+     {
+       free(data);
+       return 0;
+     }
+
+   /* Fetch the icons */
+   p = data;
+   for (i = 0; i < icons; i++)
+     {
+       uint32_t *ps, *pd, *pe;
+
+       len = p[0] * p[1];
+       ((*icon)[i]).width = p[0];
+       ((*icon)[i]).height = p[1];
+       src = &(p[2]);
+       ((*icon)[i]).data = malloc(len * sizeof(uint32_t));
+       if (!((*icon)[i]).data)
+         {
+            while (i)
+              free(((*icon)[--i]).data);
+            free(*icon);
+            free(data);
+            return 0;
+         }
+
+       pd = ((*icon)[i]).data;
+       ps = src;
+       pe = ps + len;
+       for (; ps < pe; ps++)
+         {
+            uint32_t r, g, b, a;
+
+            a = (*ps >> 24) & 0xff;
+            r = (((*ps >> 16) & 0xff) * a) / 255;
+            g = (((*ps >>  8) & 0xff) * a) / 255;
+            b = (((*ps      ) & 0xff) * a) / 255;
+            *pd = (a << 24) | (r << 16) | (g << 8) | (b);
+            pd++;
+         }
+       p += (len + 2);
+     }
+
+   free(data);
+
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_ICON_GEOMETRY property.
+ * @param window The window.
+ * @param x      The X coordinate of the icon.
+ * @param y      The Y coordinate of the icon.
+ * @param width  The width of the icon.
+ * @param height The height of the icon.
+ *
+ * Set the geometry of the icon of @p window by sending the
+ * _NET_WM_ICON_GEOMETRY property to @p window. @p x, @p y, @p width
+ * and @p height specify respectively the X coordinate, the Y
+ * coordinate, the width and the height of the icon.
+ *
+ * Stand alone tools like a taskbar or an iconbox MAY use this
+ * function. This functions makes possible for a Window Manager to
+ * display a nice animation like morphing the window into its icon.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_geometry_set(Ecore_X_Window window,
+                                int            x,
+                                int            y,
+                                int            width,
+                                int            height)
+{
+   uint32_t geometry[4];
+
+   geometry[0] = (uint32_t)x;
+   geometry[1] = (uint32_t)y;
+   geometry[2] = (uint32_t)width;
+   geometry[3] = (uint32_t)height;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, geometry, 4);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_geometry_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_icon_geometry_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_icon_geometry_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the geometry of an icon.
+ * @param window The window
+ * @param x      x
+ * @param x      The X coordinate of the icon.
+ * @param y      The Y coordinate of the icon.
+ * @param width  The width of the icon.
+ * @param height The height of the icon.
+ * @return       1 on success, 0 othrwise.
+ *
+ * Retrieve the geometry of the icon of @p window. The geometry is
+ * stored in @p x, @p y, @p width and @p height. The function returns
+ * 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_icon_geometry_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_icon_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_icon_geometry_get(Ecore_X_Window window,
+                                int           *x,
+                                int           *y,
+                                int           *width,
+                                int           *height)
+{
+   uint32_t geometry[4];
+   int      ret;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, geometry, 4);
+   if (ret != 4)
+     return 0;
+
+   if (x)      *x      = geometry[0];
+   if (y)      *y      = geometry[1];
+   if (width)  *width  = geometry[2];
+   if (height) *height = geometry[3];
+
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_PID property.
+ * @param window The window.
+ * @param pid    The process ID.
+ *
+ * Set the process ID of the client owning @p window by sending the
+ * _NET_WM_PID property to @p window.
+ *
+ * This function MAY be used by the Window Manager to kill windows
+ * which do not respond to the _NET_WM_PING protocol.
+ *
+ * If _NET_WM_PID is set, the ICCCM-specified property
+ * WM_CLIENT_MACHINE MUST also be set.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_pid_set(Ecore_X_Window window,
+                      int            pid)
+{
+   unsigned int tmp;
+
+   tmp = pid;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_PID,
+                                 &tmp, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_pid_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_PID, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_pid_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_pid_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the process ID of a client window.
+ * @param window The window.
+ * @param pid    The process ID.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the process ID of @p window and store it in @p pid. This
+ * function returns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_pid_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_pid_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_pid_get(Ecore_X_Window window,
+                      int           *pid)
+{
+   int ret;
+   uint32_t tmp;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_PID,
+                                       &tmp, 1);
+   if (pid) *pid = tmp;
+
+   return (ret == 1) ? 1 : 0;
+}
+
+/**
+ * Set the _NET_WM_HANDLED_ICONS property.
+ * @param window The window.
+ *
+ * Indicate to the Window Manager that it does not need to provide
+ * icons for the iconified @p window by sending the
+ * _NET_WM_HANDLED_ICONS property to @p window.
+ *
+ * This function can be used by a Pager on one of its own toplevel
+ * windows (for example if the Client is a taskbar and provides
+ * buttons for iconified windows).
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_handled_icons_set(Ecore_X_Window window)
+{
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
+                                 NULL, 0);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_handled_icons_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_HANDLED_ICONS, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_handled_icons_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_handled_icons_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Return wheter the Client handles icons or not.
+ * @param window The window.
+ * @return       1 if icons are handled, 0 otherwise.
+ *
+ * Return whether the client handles icons or not if @p window is
+ * iconified.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_handled_icons_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_handled_icons_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_handled_icons_get(Ecore_X_Window window)
+{
+   int ret = 0;
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
+                                       NULL, 0);
+   return (ret == 0) ? 1 : 0;
+}
+
+/**
+ * Set the _NET_WM_USER_TIME property.
+ * @param window The window.
+ * @param time   The last user activity time in the window.
+ *
+ * Set the XServer time at which last user activity in @p window took
+ * place by sending the _NET_WM_USER_TIME property to @p window. @p
+ * time contains that XServer time in seconds.
+ *
+ * This function allows a Window Manager to alter the focus, stacking,
+ * and/or placement behavior of windows when they are mapped depending
+ * on whether the new window was created by a user action or is a
+ * "pop-up" window activated by a timer or some other event.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_user_time_set(Ecore_X_Window window,
+                            unsigned int   time)
+{
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_USER_TIME,
+                                 &time, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_user_time_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_USER_TIME, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_user_time_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_user_time_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the last user activity time in the window.
+ * @param window The window.
+ * @param time   The returned time.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Return the XServer time at which last user activity in @p window
+ * took place. The time is stored in @p time.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_user_time_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_user_time_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_user_time_get(Ecore_X_Window window,
+                            unsigned int  *time)
+{
+   int ret;
+   uint32_t tmp;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_USER_TIME,
+                                       &tmp, 1);
+   if (time) *time = tmp;
+   return (ret == 1) ? 1 : 0;
+}
+
+Ecore_X_Window_State
+_ecore_x_netwm_state_get(Ecore_X_Atom a)
+{
+   if (a == ECORE_X_ATOM_NET_WM_STATE_MODAL)
+     return ECORE_X_WINDOW_STATE_MODAL;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_STICKY)
+     return ECORE_X_WINDOW_STATE_STICKY;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT)
+     return ECORE_X_WINDOW_STATE_MAXIMIZED_VERT;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ)
+     return ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SHADED)
+     return ECORE_X_WINDOW_STATE_SHADED;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR)
+     return ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER)
+     return ECORE_X_WINDOW_STATE_SKIP_PAGER;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_HIDDEN)
+     return ECORE_X_WINDOW_STATE_HIDDEN;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN)
+     return ECORE_X_WINDOW_STATE_FULLSCREEN;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_ABOVE)
+     return ECORE_X_WINDOW_STATE_ABOVE;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_BELOW)
+     return ECORE_X_WINDOW_STATE_BELOW;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION)
+     return ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION;
+   else
+     return ECORE_X_WINDOW_STATE_UNKNOWN;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_state_atom_get(Ecore_X_Window_State s)
+{
+   switch(s)
+     {
+      case ECORE_X_WINDOW_STATE_MODAL:
+        return ECORE_X_ATOM_NET_WM_STATE_MODAL;
+      case ECORE_X_WINDOW_STATE_STICKY:
+        return ECORE_X_ATOM_NET_WM_STATE_STICKY;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
+        return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
+        return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
+      case ECORE_X_WINDOW_STATE_SHADED:
+        return ECORE_X_ATOM_NET_WM_STATE_SHADED;
+      case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
+        return ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR;
+      case ECORE_X_WINDOW_STATE_SKIP_PAGER:
+        return ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER;
+      case ECORE_X_WINDOW_STATE_HIDDEN:
+        return ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
+      case ECORE_X_WINDOW_STATE_FULLSCREEN:
+        return ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
+      case ECORE_X_WINDOW_STATE_ABOVE:
+        return ECORE_X_ATOM_NET_WM_STATE_ABOVE;
+      case ECORE_X_WINDOW_STATE_BELOW:
+        return ECORE_X_ATOM_NET_WM_STATE_BELOW;
+      case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
+        return ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
+      default:
+        return 0;
+     }
+}
+
+/**
+ * Set the _NET_WM_STATE property.
+ * @param window The window.
+ * @param state  An array of window hints.
+ * @param num    The number of hints.
+ *
+ * Set a list of hints describing @p window state by sending the
+ * _NET_WM_STATE property to @p window. The hints are stored in the
+ * array @p state. @p num must contain the number of hints.
+ *
+ * The Window Manager SHOULD honor _NET_WM_STATE whenever a withdrawn
+ * window requests to be mapped. A Client wishing to change the state
+ * of a window MUST send a _NET_WM_STATE client message to the root
+ * window. The Window Manager MUST keep this property updated to
+ * reflect the current state of the window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_state_set(Ecore_X_Window        window,
+                               Ecore_X_Window_State *state,
+                               unsigned int          num)
+{
+   Ecore_X_Atom  *set;
+   uint32_t       i;
+
+   if (!num)
+     {
+       ecore_x_window_prop_property_del(window, ECORE_X_ATOM_NET_WM_STATE);
+       return;
+     }
+
+   set = malloc(num * sizeof(Ecore_X_Atom));
+   if (!set) return;
+
+   for (i = 0; i < num; i++)
+     set[i] = _ecore_x_netwm_state_atom_get(state[i]);
+
+   ecore_x_window_prop_atom_set(window, ECORE_X_ATOM_NET_WM_STATE, set, num);
+
+   free(set);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_state_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_STATE, ECORE_X_ATOM_ATOM,
+                                       0, 0x7fffffff);;
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_state_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_state_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the hints describing the window state.
+ * @param window The window.
+ * @param state  The returned hins.
+ * @param num    The number of hints.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the hints describing @p window state. The state is
+ * returned in @p state. The nummber of hints is stored in @p
+ * num. This function returns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_window_state_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_window_state_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_window_state_get(Ecore_X_Window         window,
+                               Ecore_X_Window_State **state,
+                               unsigned int          *num)
+{
+   Ecore_X_Atom *atoms;
+   int           num_ret;
+   int           i;
+
+   if (num) *num = 0;
+   if (state) *state = NULL;
+
+   num_ret = ecore_x_window_prop_atom_list_get(window, ECORE_X_ATOM_NET_WM_STATE,
+                                              &atoms);
+   if (num_ret <= 0)
+      return 0;
+
+   if (state)
+     {
+       *state = malloc(num_ret * sizeof(Ecore_X_Window_State));
+       if (*state)
+         for (i = 0; i < num_ret; ++i)
+           (*state)[i] = _ecore_x_netwm_state_get(atoms[i]);
+
+       if (num) *num = num_ret;
+     }
+
+   free(atoms);
+
+   return 1;
+}
+
+static Ecore_X_Window_Type
+_ecore_x_netwm_window_type_type_get(Ecore_X_Atom atom)
+{
+   if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP)
+     return ECORE_X_WINDOW_TYPE_DESKTOP;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK)
+     return ECORE_X_WINDOW_TYPE_DOCK;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR)
+     return ECORE_X_WINDOW_TYPE_TOOLBAR;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU)
+     return ECORE_X_WINDOW_TYPE_MENU;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY)
+     return ECORE_X_WINDOW_TYPE_UTILITY;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH)
+     return ECORE_X_WINDOW_TYPE_SPLASH;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG)
+     return ECORE_X_WINDOW_TYPE_DIALOG;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL)
+     return ECORE_X_WINDOW_TYPE_NORMAL;
+   else
+     return ECORE_X_WINDOW_TYPE_UNKNOWN;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_window_type_atom_get(Ecore_X_Window_Type type)
+{
+   switch (type)
+     {
+      case ECORE_X_WINDOW_TYPE_DESKTOP:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
+      case ECORE_X_WINDOW_TYPE_DOCK:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
+      case ECORE_X_WINDOW_TYPE_TOOLBAR:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
+      case ECORE_X_WINDOW_TYPE_MENU:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
+      case ECORE_X_WINDOW_TYPE_UTILITY:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
+      case ECORE_X_WINDOW_TYPE_SPLASH:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
+      case ECORE_X_WINDOW_TYPE_DIALOG:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
+      case ECORE_X_WINDOW_TYPE_NORMAL:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
+      default:
+        return 0;
+     }
+}
+
+/*
+ * FIXME: We should set WM_TRANSIENT_FOR if type is ECORE_X_WINDOW_TYPE_TOOLBAR
+ * , ECORE_X_WINDOW_TYPE_MENU or ECORE_X_WINDOW_TYPE_DIALOG
+ */
+
+/**
+ * Set the _NET_WM_WINDOW_TYPE property.
+ * @param window The window.
+ * @param type   The functional type of the window.
+ *
+ * Set the functional @p type of @p window by sending _NET_WM_WINDOW_TYPE
+ * property to @p window.
+ *
+ * This property SHOULD be set by the Client before mapping. This
+ * property SHOULD be used by the window manager in determining the
+ * decoration, stacking position and other behavior of the window. The
+ * Client SHOULD specify window types in order of preference (the first
+ * being most preferable).
+ *
+ * This hint is intended to replace the MOTIF hints.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_type_set(Ecore_X_Window      window,
+                              Ecore_X_Window_Type type)
+{
+   Ecore_X_Atom atom;
+
+   atom = _ecore_x_netwm_window_type_atom_get(type);
+   ecore_x_window_prop_atom_set(window, ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                               &atom, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_type_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_WINDOW_TYPE, ECORE_X_ATOM_ATOM,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_type_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_window_type_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/* FIXME: Maybe return 0 on some conditions? */
+
+/**
+ * Get the functional type of a window.
+ * @param window The window.
+ * @param type   The function type of the window.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the functional type of @p window. The type is stored in
+ * @p type. This function returns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_window_type_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_window_type_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_window_type_get(Ecore_X_Window       window,
+                              Ecore_X_Window_Type *type)
+{
+   Ecore_X_Atom *atoms;
+   int           num;
+   int           i;
+
+   if (type) *type = ECORE_X_WINDOW_TYPE_NORMAL;
+
+   num = ecore_x_window_prop_atom_list_get(window, ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                                          &atoms);
+   if (num < 0)
+     {
+       /* IMO this is not the place to mix netwm and icccm /kwo */
+       /* Check if WM_TRANSIENT_FOR is set */
+
+        /* Disable it for xcb */
+
+/*     if ((type) && (ecore_x_icccm_transient_for_get(window))) */
+/*       *type = ECORE_X_WINDOW_TYPE_DIALOG; */
+/*     return 1; */
+     }
+
+   if (type)
+     {
+       for (i = 0; i < num; ++i)
+         {
+            *type = _ecore_x_netwm_window_type_type_get(atoms[i]);
+            if (*type != ECORE_X_WINDOW_TYPE_UNKNOWN)
+              break;
+         }
+     }
+
+   free(atoms);
+
+   return 1;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_action_atom_get(Ecore_X_Action action)
+{
+   switch (action)
+     {
+      case ECORE_X_ACTION_MOVE:
+        return ECORE_X_ATOM_NET_WM_ACTION_MOVE;
+      case ECORE_X_ACTION_RESIZE:
+        return ECORE_X_ATOM_NET_WM_ACTION_RESIZE;
+      case ECORE_X_ACTION_MINIMIZE:
+        return ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE;
+      case ECORE_X_ACTION_SHADE:
+        return ECORE_X_ATOM_NET_WM_ACTION_SHADE;
+      case ECORE_X_ACTION_STICK:
+        return ECORE_X_ATOM_NET_WM_ACTION_STICK;
+      case ECORE_X_ACTION_MAXIMIZE_HORZ:
+        return ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ;
+      case ECORE_X_ACTION_MAXIMIZE_VERT:
+        return ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT;
+      case ECORE_X_ACTION_FULLSCREEN:
+        return ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN;
+      case ECORE_X_ACTION_CHANGE_DESKTOP:
+        return ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP;
+      case ECORE_X_ACTION_CLOSE:
+        return ECORE_X_ATOM_NET_WM_ACTION_CLOSE;
+      default:
+        return 0;
+     }
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_allowed_action_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS, ECORE_X_ATOM_ATOM,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_allowed_action_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_allowed_action_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/* FIXME: Get complete list */
+
+/**
+ * Check whether an action is supported by a window.
+ * @param window The window
+ * @param action The action
+ * @return       1 if set, 0 otherwise.
+ *
+ * Return whether the user operation @p action is supported by the
+ * Window Manager for @p window.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_allowed_action_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_allowed_action_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_allowed_action_isset(Ecore_X_Window window,
+                                   Ecore_X_Action action)
+{
+   Ecore_X_Atom *atoms;
+   Ecore_X_Atom  atom;
+   int           num;
+   int           ret = 0;
+   int           i;
+
+   num = ecore_x_window_prop_atom_list_get(window, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
+                                          &atoms);
+   if (num <= 0)
+     return ret;
+
+   atom = _ecore_x_netwm_action_atom_get(action);
+
+   for (i = 0; i < num; ++i)
+     {
+       if (atom == atoms[i])
+         {
+            ret = 1;
+            break;
+         }
+     }
+
+   free(atoms);
+
+   return ret;
+}
+
+/* FIXME: Set complete list */
+/**
+ * Set the _NET_WM_ALLOWED_ACTIONS property.
+ * @param window The window.
+ * @param action An array of allowed actions.
+ * @param num    The number of actions.
+ *
+ * Set the user operations that the Window Manager supports for
+ * @p window by sending the _NET_WM_ALLOWED_ACTIONS property to
+ * @p window. @p action stores @p num actions.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_allowed_action_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_allowed_action_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_allowed_action_set(Ecore_X_Window  window,
+                                 Ecore_X_Action *action,
+                                 unsigned int    num)
+{
+   Ecore_X_Atom  *set;
+   unsigned int   i;
+
+   if (!num)
+     {
+       ecore_x_window_prop_property_del(window, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS);
+       return;
+     }
+
+   set = malloc(num * sizeof(Ecore_X_Atom));
+   if (!set) return;
+
+   for (i = 0; i < num; i++)
+     set[i] = _ecore_x_netwm_action_atom_get(action[i]);
+
+   ecore_x_window_prop_atom_set(window, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS, set, num);
+
+   free(set);
+}
+
+/**
+ * Get the allowed actions supported by a window.
+ * @param window The window.
+ * @param action The returned array of the actions.
+ * @param num    The number of actions.
+ * @return       1 on success, 0 otherwise.
+ *
+ * Retrieve the user operations that the Window Manager supports for
+ * @p window and store them in @p action. The number of actions is
+ * stored in @p num. This function returns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_allowed_action_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_allowed_action_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_allowed_action_get(Ecore_X_Window   window,
+                                 Ecore_X_Action **action,
+                                 unsigned int    *num)
+{
+   Ecore_X_Atom *atoms;
+   int           num_ret;
+   int           i;
+
+   if (num) *num = 0;
+   if (action) *action = NULL;
+
+   num_ret = ecore_x_window_prop_atom_list_get(window, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
+                                              &atoms);
+   if (num_ret <= 0)
+      return 0;
+
+   if (action)
+     {
+       *action = malloc(num_ret * sizeof(Ecore_X_Action));
+       if (*action)
+         for (i = 0; i < num_ret; ++i)
+           (*action)[i] = _ecore_x_netwm_action_atom_get(atoms[i]);
+
+       if (num) *num = num_ret;
+     }
+
+   free(atoms);
+
+   return 1;
+}
+
+/**
+ * Set the _NET_WM_WINDOW_OPACITY property.
+ * @param window  The window.
+ * @param opacity The opacity value.
+ *
+ * Set the desired opacity of @p window by sending the
+ * _NET_WM_WINDOW_OPACITY property to @p window. @p opacity is 0 for a
+ * transparent window and 0xffffffff for an opaque window. @p opacity
+ * must be multiplied with the original alpha value of @p window
+ * (which is 1 for visuals not including an alpha component) so that
+ * @p window content is modulated by the opacity value.
+ *
+ * Window Managers acting as compositing managers MAY take this into
+ * account when displaying a window. Window Managers MUST forward the
+ * value of this property to any enclosing frame window.  This
+ * property MAY change while the window is mapped and the Window
+ * Manager MUST respect changes while the window is mapped.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_opacity_set(Ecore_X_Window window,
+                          unsigned int   opacity)
+{
+   uint32_t op = opacity;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
+                                 &op, 1);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_opacity_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_WINDOW_OPACITY, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_opacity_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_opacity_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the opacity value of a window.
+ * @param window  The window.
+ * @param opacity The returned opacity.
+ * @return        1 on success, 0 otherwise.
+ *
+ * Retriee the opacity value of @p window and store it in
+ * @p opacity. This function returns 1 on sucess, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_opacity_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_opacity_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_opacity_get(Ecore_X_Window window,
+                          unsigned int  *opacity)
+{
+   int ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
+                                       &tmp, 1);
+   if (opacity) *opacity = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+/**
+ * Set the _NET_FRAME_EXTENTS property.
+ * @param window The window.
+ * @param fl     The number of pixels of the left border of the window.
+ * @param fr     The number of pixels of the right border of the window.
+ * @param ft     The number of pixels of the top border of the window.
+ * @param fb     The number of pixels of the bottom border of the window.
+ *
+ * Set the border witdh of @p window by sending the _NET_FRAME_EXTENTS
+ * property to @p window. @p fl, @p fr, @p ft and @p fb are respectively
+ * the number of pixels of the left, right, top and bottom border of
+ * @p window.
+ *
+ * The Window Manager MUST set _NET_FRAME_EXTENTS to the extents of
+ * the window's frame.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_frame_size_set(Ecore_X_Window window,
+                             int            fl,
+                             int            fr,
+                             int            ft,
+                             int            fb)
+{
+   uint32_t frames[4];
+
+   frames[0] = fl;
+   frames[1] = fr;
+   frames[2] = ft;
+   frames[3] = fb;
+   ecore_x_window_prop_card32_set(window, ECORE_X_ATOM_NET_FRAME_EXTENTS, frames, 4);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_frame_size_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_FRAME_EXTENTS, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_frame_size_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_frame_size_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the frame extent of a window.
+ * @param window  The window.
+ * @param fl      The number of pixels of the left border of the window.
+ * @param fr      The number of pixels of the right border of the window.
+ * @param ft      The number of pixels of the top border of the window.
+ * @param fb      The number of pixels of the bottom border of the window.
+ * @return        1 on success, 0 otherwise.
+ *
+ * Retrieve the frame extents of @p window. The number of pixels of
+ * the left, right, top and bottom border of @p window are
+ * respectively stored in @p fl, @p fr, @p ft anfd @p fb. TYhis
+ * function retuirns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_frame_size_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_frame_size_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_frame_size_get(Ecore_X_Window window,
+                             int           *fl,
+                             int           *fr,
+                             int           *ft,
+                             int           *fb)
+{
+   uint32_t frames[4];
+   int      ret = 0;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_FRAME_EXTENTS, frames, 4);
+   if (ret != 4)
+     return 0;
+
+   if (fl) *fl = frames[0];
+   if (fr) *fr = frames[1];
+   if (ft) *ft = frames[2];
+   if (fb) *fb = frames[3];
+   return 1;
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window The window.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_sync_counter_get_prefetch(Ecore_X_Window window)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER, ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_netwm_sync_counter_get_prefetch().
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_sync_counter_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the X ID of a X Sync counter.
+ * @param window  The window.
+ * @param counter The X ID of the Sync counter.
+ * @return        1 on success, 0 otherwise.
+ *
+ * Retrieve the X ID of the X Sync counter of @p window and store it
+ * in @p counter. This function returns 1 on success, 0 otherwise.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_netwm_frame_size_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_netwm_frame_size_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_netwm_sync_counter_get(Ecore_X_Window        window,
+                               Ecore_X_Sync_Counter *counter)
+{
+   int          ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(window, ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER,
+                                       &tmp, 1);
+
+   if (counter) *counter = tmp;
+   return (ret == 1) ? 1 : 0;
+}
+
+/**
+ * Send a _NET_WM_PING property event.
+ * @param window The window.
+ *
+ * Send a ClientMessage event from @p window with the _NET_WM_PING
+ * property set.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_ping_send(Ecore_X_Window window)
+{
+   xcb_client_message_event_t ev;
+
+   if (!window) return;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.sequence = 0;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_WM_PROTOCOLS;
+   ev.data.data32[0] = ECORE_X_ATOM_NET_WM_PING;
+   ev.data.data32[1] = XCB_CURRENT_TIME;
+   ev.data.data32[2] = window;
+   ev.data.data32[3] = 0;
+   ev.data.data32[4] = 0;
+   ev.data.data32[5] = 0;
+
+   xcb_send_event(_ecore_xcb_conn, 0, window, XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
+}
+
+/**
+ * Send a _NET_WM_SYNC_REQUEST property event.
+ * @param window The window.
+ * @param serial The update request number.
+ *
+ * Send a ClientMessage event from @p window with the _NET_WM_SYNC_REQUEST
+ * property set.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_sync_request_send(Ecore_X_Window window,
+                                unsigned int   serial)
+{
+   xcb_client_message_event_t ev;
+
+   if (!window) return;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_WM_PROTOCOLS;
+   ev.data.data32[0] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+   ev.data.data32[1] = XCB_CURRENT_TIME;
+   ev.data.data32[2] = serial;
+   /* FIXME: imho, the following test is useless as serial is non negative */
+   /* should we remove it ? */
+   ev.data.data32[3] = (serial < 0) ? ~0L : 0L;
+   ev.data.data32[4] = 0;
+
+   xcb_send_event(_ecore_xcb_conn, 0, window, 0, (const char *)&ev);
+}
+
+/**
+ * Send a _NET_WM_STATE property event.
+ * @param window The window.
+ * @param root   The root window.
+ * @param s1     The first state to alter.
+ * @param s2     The second state to alter.
+ * @param set    0 to unset the property, set it otherwise.
+ *
+ * Send a ClientMessage event from @p window to the @p root window
+ * with the _NET_WM_STATE property set. This change the state of a
+ * mapped window. @p s1 is the first state to alter. @p s2 is the
+ * second state to alter. If @p set value is 0, the property is
+ * removed (or unset), otherwise, the property is set.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_state_request_send(Ecore_X_Window       window,
+                                 Ecore_X_Window       root,
+                                 Ecore_X_Window_State s1,
+                                 Ecore_X_Window_State s2,
+                                 int                  set)
+{
+   xcb_client_message_event_t ev;
+
+   if (!window) return;
+   if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_NET_WM_STATE;
+   ev.data.data32[0] = !!set;
+   ev.data.data32[1] = _ecore_x_netwm_state_atom_get(s1);
+   ev.data.data32[2] = _ecore_x_netwm_state_atom_get(s2);
+   /* 1 == normal client, if someone wants to use this
+    * function in a pager, this should be 2 */
+   ev.data.data32[3] = 1;
+   ev.data.data32[4] = 0;
+
+   xcb_send_event(_ecore_xcb_conn, 0, root,
+                  XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
+                  (const char *)&ev);
+}
+
+/**
+ * Send a _NET_WM_DESKTOP property event.
+ * @param window  The window.
+ * @param root    The root window.
+ * @param desktop The new desktop index.
+ *
+ * Send a ClientMessage event from @p window to the @p root window
+ * with the _NET_WM_DESKTOP property set. This change the state of a
+ * non-withdrawn window. @p desktop is the new desktop index to set.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI void
+ecore_x_netwm_desktop_request_send(Ecore_X_Window window,
+                                   Ecore_X_Window root,
+                                   unsigned int   desktop)
+{
+   xcb_client_message_event_t ev;
+
+   if (!window) return;
+   if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ev.response_type = XCB_CLIENT_MESSAGE | 0x80;
+   ev.format = 32;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_NET_WM_DESKTOP;
+   ev.data.data32[0] = desktop;
+
+   xcb_send_event(_ecore_xcb_conn, 0, root,
+                  XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
+                  (const char *)&ev);
+}
+
+int
+_ecore_x_netwm_startup_info_begin(Ecore_X_Window window,
+                                  char          *data)
+{
+#if 0
+   Ecore_X_Startup_Info *info;
+
+   if (!startup_info) return 0;
+   info = ecore_hash_get(startup_info, (void *)window);
+   if (info)
+     {
+       printf("Already got info for win: 0x%x\n", window);
+       _ecore_x_netwm_startup_info_free(info);
+     }
+   info = calloc(1, sizeof(Ecore_X_Startup_Info));
+   if (!info) return 0;
+   info->win = win;
+   info->length = 0;
+   info->buffer_size = 161;
+   info->buffer = calloc(info->buffer_size, sizeof(char));
+   if (!info->buffer)
+     {
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+   memcpy(info->buffer, data, 20);
+   info->length += 20;
+   info->buffer[info->length] = 0;
+   ecore_hash_set(startup_info, (void *)info->win, info);
+   if (strlen(info->buffer) != 20)
+     {
+       /* We have a '\0' in there, the message is done */
+       _ecore_x_netwm_startup_info_process(info);
+     }
+#else
+   window = XCB_NONE;
+   data = NULL;
+#endif
+
+   return 1;
+}
+
+int
+_ecore_x_netwm_startup_info(Ecore_X_Window window,
+                            char          *data)
+{
+#if 0
+   Ecore_X_Startup_Info *info;
+   char *p;
+
+   if (!startup_info) return 0;
+   info = ecore_hash_get(startup_info, (void *)window);
+   if (!info) return 0;
+   if ((info->length + 20) > info->buffer_size)
+     {
+       info->buffer_size += 160;
+       info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
+       if (!info->buffer)
+         {
+            ecore_hash_remove(startup_info, (void *)info->win);
+            _ecore_x_netwm_startup_info_free(info);
+            return 0;
+         }
+     }
+   memcpy(info->buffer + info->length, data, 20);
+   p = info->buffer + info->length;
+   info->length += 20;
+   info->buffer[info->length] = 0;
+   if (strlen(p) != 20)
+     {
+       /* We have a '\0' in there, the message is done */
+       _ecore_x_netwm_startup_info_process(info);
+     }
+#else
+   window = XCB_NONE;
+   data = NULL;
+#endif
+
+   return 1;
+}
+
+/*
+ * Set UTF-8 string property
+ */
+static void
+_ecore_x_window_prop_string_utf8_set(Ecore_X_Window window,
+                                     Ecore_X_Atom   atom,
+                                     const char    *str)
+{
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       atom, ECORE_X_ATOM_UTF8_STRING,
+                       8, strlen(str), str);
+}
+
+#if 0
+static void
+_ecore_x_window_prop_string_utf8_get_prefetch(Ecore_X_Window window,
+                                              Ecore_X_Atom atom)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, window,
+                                       atom, ECORE_X_ATOM_UTF8_STRING,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+static void
+_ecore_x_window_prop_string_utf8_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+#endif
+
+/*
+ * Get UTF-8 string property
+ */
+static char *
+_ecore_x_window_prop_string_utf8_get(Ecore_X_Window window __UNUSED__,
+                                     Ecore_X_Atom   atom __UNUSED__)
+{
+   xcb_get_property_reply_t *reply;
+   char                     *str;
+   int                       length;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return NULL;
+
+   if ((reply->format != 8) ||
+       (reply->value_len <= 0))
+      return NULL;
+
+   length = reply->value_len;
+   str = (char *)malloc (sizeof (char) * (length + 1));
+   if (!str)
+     {
+        return NULL;
+     }
+   memcpy(str, xcb_get_property_value(reply), length);
+   str[length] = '\0';
+
+   return str;
+}
+
+#if 0 /* Unused */
+/*
+ * Process startup info
+ */
+static int
+_ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
+{
+   Ecore_X_Event_Startup_Sequence *e;
+   int                             event;
+   char                           *p;
+
+   p = strchr(info->buffer, ':');
+   if (!p)
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+   *p = 0;
+   if (!strcmp(info->buffer, "new"))
+     {
+       if (info->init)
+         event = ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
+       else
+         event = ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
+       info->init = 1;
+     }
+   else if (!strcmp(info->buffer, "change"))
+     {
+       event = ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
+     }
+   else if (!strcmp(info->buffer, "remove"))
+     event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
+   else
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+
+   p++;
+
+   if (!_ecore_x_netwm_startup_info_parse(info, p))
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+
+   if (info->init)
+     {
+       e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
+       if (!e)
+         {
+            ecore_hash_remove(startup_info, (void *)info->win);
+            _ecore_x_netwm_startup_info_free(info);
+            return 0;
+         }
+       e->win = info->win;
+       ecore_event_add(event, e, NULL, NULL);
+     }
+
+   if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+     }
+   else
+     {
+       /* Discard buffer */
+       info->length = 0;
+       info->buffer[0] = 0;
+     }
+   return 1;
+}
+
+/*
+ * Parse startup info
+ */
+static int
+_ecore_x_netwm_startup_info_parse(Ecore_X_Startup_Info *info,
+                                  char                 *data)
+{
+
+   while (*data)
+     {
+       int in_quot_sing, in_quot_dbl, escaped;
+       char *p, *pp;
+       char *key;
+       char value[1024];
+
+       /* Skip space */
+       while (*data == ' ') data++;
+       /* Get key */
+       key = data;
+       data = strchr(key, '=');
+       if (!data) return 0;
+       *data = 0;
+       data++;
+
+       /* Get value */
+       p = data;
+       pp = value;
+       in_quot_dbl = 0;
+       in_quot_sing = 0;
+       escaped = 0;
+       while (*p)
+         {
+            if ((pp - value) >= 1024) return 0;
+            if (escaped)
+              {
+                 *pp = *p;
+                 pp++;
+                 escaped = 0;
+              }
+            else if (in_quot_sing)
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\'')
+                   in_quot_sing = 0;
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            else if (in_quot_dbl)
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\"')
+                   in_quot_dbl = 0;
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            else
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\'')
+                   in_quot_sing = 1;
+                 else if (*p == '\"')
+                   in_quot_dbl = 1;
+                 else if (*p == ' ')
+                   {
+                      break;
+                   }
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            p++;
+         }
+       if ((in_quot_dbl) || (in_quot_sing)) return 0;
+       data = p;
+       *pp = 0;
+
+       /* Parse info */
+       if (!strcmp(key, "ID"))
+         {
+            if ((info->id) && (strcmp(info->id, value))) return 0;
+            info->id = strdup(value);
+            p = strstr(value, "_TIME");
+            if (p)
+              {
+                 info->timestamp = atoi(p + 5);
+              }
+         }
+       else if (!strcmp(key, "NAME"))
+         {
+            if (info->name) free(info->name);
+            info->name = strdup(value);
+         }
+       else if (!strcmp(key, "SCREEN"))
+         {
+            info->screen = atoi(value);
+         }
+       else if (!strcmp(key, "BIN"))
+         {
+            if (info->bin) free(info->bin);
+            info->bin = strdup(value);
+         }
+       else if (!strcmp(key, "ICON"))
+         {
+            if (info->icon) free(info->icon);
+            info->icon = strdup(value);
+         }
+       else if (!strcmp(key, "DESKTOP"))
+         {
+            info->desktop = atoi(value);
+         }
+       else if (!strcmp(key, "TIMESTAMP"))
+         {
+            if (!info->timestamp)
+              info->timestamp = atoi(value);
+         }
+       else if (!strcmp(key, "DESCRIPTION"))
+         {
+            if (info->description) free(info->description);
+            info->description = strdup(value);
+         }
+       else if (!strcmp(key, "WMCLASS"))
+         {
+            if (info->wmclass) free(info->wmclass);
+            info->wmclass = strdup(value);
+         }
+       else if (!strcmp(key, "SILENT"))
+         {
+            info->silent = atoi(value);
+         }
+       else
+         {
+            printf("Ecore X Sequence, Unknown: %s=%s\n", key, value);
+         }
+     }
+   if (!info->id) return 0;
+   return 1;
+}
+#endif
+
+/*
+ * Free startup info struct
+ */
+static void
+_ecore_x_netwm_startup_info_free(void *data)
+{
+   Ecore_X_Startup_Info *info;
+
+   info = data;
+   if (!info) return;
+   if (info->buffer) free(info->buffer);
+   if (info->id) free(info->id);
+   if (info->name) free(info->name);
+   if (info->bin) free(info->bin);
+   if (info->icon) free(info->icon);
+   if (info->description) free(info->description);
+   if (info->wmclass) free(info->wmclass);
+   free(info);
+}
+
+/*
+ * Is screen composited?
+ */
+
+/* FIXME: one round trip can be removed. Can we keep it ? */
+
+/**
+ * Check whether a screen is composited or not.
+ * @param screen The screen index.
+ *
+ * Return 1 if @p screen is composited, 0 otherwise.
+ * @ingroup Ecore_X_NetWM_Group
+ */
+EAPI int
+ecore_x_screen_is_composited(int screen)
+{
+   char                             buf[32];
+   xcb_intern_atom_cookie_t         cookie_atom;
+   xcb_get_selection_owner_cookie_t cookie_owner;
+   xcb_intern_atom_reply_t         *reply_atom;
+   xcb_get_selection_owner_reply_t *reply_owner;
+   Ecore_X_Window                   window;
+   Ecore_X_Atom                     atom;
+
+   snprintf(buf, sizeof(buf), "_NET_WM_CM_S%d", screen);
+   cookie_atom = xcb_intern_atom_unchecked(_ecore_xcb_conn, 1,
+                                           strlen(buf), buf);
+   reply_atom = xcb_intern_atom_reply(_ecore_xcb_conn, cookie_atom, NULL);
+   if (!reply_atom) return 0;
+   atom = reply_atom->atom;
+   free(reply_atom);
+
+   cookie_owner = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, atom);
+   reply_owner = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie_owner, NULL);
+   if (!reply_owner) return 0;
+
+   window = reply_owner->owner;
+   free(reply_owner);
+
+   return window != XCB_NONE;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_pixmap.c b/src/lib/ecore_x/xcb/ecore_xcb_pixmap.c
new file mode 100644 (file)
index 0000000..f976f93
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Pixmap_Group X Pixmap Functions
+ *
+ * Functions that operate on pixmaps.
+ */
+
+
+/**
+ * Creates a new pixmap.
+ * @param   win Window used to determine which screen of the display the
+ *              pixmap should be created on.  If 0, the default root window
+ *              is used.
+ * @param   w   Width of the new pixmap.
+ * @param   h   Height of the new pixmap.
+ * @param   dep Depth of the pixmap.  If 0, the default depth of the default
+ *              screen is used.
+ * @return  New pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI Ecore_X_Pixmap
+ecore_x_pixmap_new(Ecore_X_Window win,
+                   int            w,
+                   int            h,
+                   int            dep)
+{
+   Ecore_X_Pixmap pmap;
+
+   if (win == 0) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   if (dep == 0) dep = ((xcb_screen_t *)_ecore_xcb_screen)->root_depth;
+
+   pmap = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_pixmap(_ecore_xcb_conn, dep, pmap, win, w, h);
+
+   return pmap;
+}
+
+
+/**
+ * Deletes the reference to the given pixmap.
+ *
+ * If no other clients have a reference to the given pixmap, the server
+ * will destroy it.
+ *
+ * @param   pmap The given pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_del(Ecore_X_Pixmap pmap)
+{
+   xcb_free_pixmap(_ecore_xcb_conn, pmap);
+}
+
+
+/**
+ * Pastes a rectangular area of the given pixmap onto the given drawable.
+ * @param   pmap The given pixmap.
+ * @param   dest The given drawable.
+ * @param   gc   The graphics context which governs which operation will
+ *               be used to paste the area onto the drawable.
+ * @param   sx   The X position of the area on the pixmap.
+ * @param   sy   The Y position of the area on the pixmap.
+ * @param   w    The width of the area.
+ * @param   h    The height of the area.
+ * @param   dx   The X position at which to paste the area on @p dest.
+ * @param   dy   The Y position at which to paste the area on @p dest.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_paste(Ecore_X_Pixmap   pmap,
+                     Ecore_X_Drawable dest,
+                    Ecore_X_GC       gc,
+                     int              sx,
+                     int              sy,
+                    int              w,
+                     int              h,
+                     int              dx,
+                     int              dy)
+{
+   xcb_copy_area(_ecore_xcb_conn, pmap, dest, gc, sx, sy, dx, dy, w, h);
+}
+
+
+/**
+ * Retrieves the size of the given pixmap.
+ * @param   pmap The given pixmap.
+ * @param   x    Pointer to an integer in which to store the X position.
+ * @param   y    Pointer to an integer in which to store the Y position.
+ * @param   w    Pointer to an integer in which to store the width.
+ * @param   h    Pointer to an integer in which to store the height.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h)
+{
+   if (pmap)
+      ecore_x_drawable_geometry_get(pmap, x, y, w, h);
+}
+
+
+/**
+ * Retrieves the depth of the given pixmap.
+ * @param   pmap The given pixmap.
+ * @return  The depth of the pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI int
+ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap)
+{
+   return ecore_x_drawable_depth_get(pmap);
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_private.h b/src/lib/ecore_x/xcb/ecore_xcb_private.h
new file mode 100644 (file)
index 0000000..180010c
--- /dev/null
@@ -0,0 +1,319 @@
+#ifndef __ECORE_XCB_PRIVATE_H__
+#define __ECORE_XCB_PRIVATE_H__
+
+#include "config.h"
+
+#include <sys/param.h>
+
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN 256
+#endif
+
+#ifndef XK_MISCELLANY
+# define XK_MISCELLANY 1
+#endif /* XK_MISCELLANY */
+
+#include <xcb/xcb.h>
+#include <xcb/xcb_icccm.h>
+#include <xcb/xcb_keysyms.h>
+#include <xcb/bigreq.h>
+#ifdef ECORE_XCB_CURSOR
+# include <xcb/cursor.h>
+#endif /* ECORE_XCB_CURSOR */
+#ifdef ECORE_XCB_DAMAGE
+# include <xcb/damage.h>
+#endif /* ECORE_XCB_DAMAGE */
+#ifdef ECORE_XCB_COMPOSITE
+# include <xcb/composite.h>
+#endif /* ECORE_XCB_COMPOSITE */
+#ifdef ECORE_XCB_DPMS
+# include <xcb/dpms.h>
+#endif /* ECORE_XCB_DPMS */
+#ifdef ECORE_XCB_RANDR
+# include <xcb/randr.h>
+#endif /* ECORE_XCB_RANDR */
+#ifdef ECORE_XCB_RENDER
+# include <xcb/render.h>
+#endif /* ECORE_XCB_RENDER */
+#ifdef ECORE_XCB_SCREENSAVER
+# include <xcb/screensaver.h>
+#endif /* ECORE_XCB_SCREENSAVER */
+#ifdef ECORE_XCB_SHAPE
+# include <xcb/shape.h>
+#endif /* ECORE_XCB_SHAPE */
+#ifdef ECORE_XCB_SYNC
+# include <xcb/sync.h>
+#endif /* ECORE_XCB_SYNC */
+#ifdef ECORE_XCB_XFIXES
+# include <xcb/xfixes.h>
+#endif /* ECORE_XCB_XFIXES */
+#ifdef ECORE_XCB_XINERAMA
+# include <xcb/xinerama.h>
+#endif /* ECORE_XCB_XINERAMA */
+#ifdef ECORE_XCB_XPRINT
+# include <xcb/xprint.h>
+#endif /* ECORE_XCB_XPRINT */
+
+#include "ecore_private.h"
+#include "Ecore_X.h"
+
+/* FIXME: this is for simulation only */
+#include "Ecore_Txt.h"
+
+typedef struct _Ecore_X_Selection_Intern Ecore_X_Selection_Intern;
+
+struct _Ecore_X_Selection_Intern
+{
+   Ecore_X_Window    win;
+   Ecore_X_Atom      selection;
+   unsigned char     *data;
+   int               length;
+   Ecore_X_Time      time;
+};
+
+typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
+
+struct _Ecore_X_Selection_Converter
+{
+   Ecore_X_Atom target;
+   int (*convert)(char *target, void *data, int size,
+                  void **data_ret, int *size_ret);
+   Ecore_X_Selection_Converter *next;
+};
+
+typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
+
+struct _Ecore_X_Selection_Parser
+{
+   char     *target;
+   void *(*parse)(const char *target, void *data, int size, int format);
+   Ecore_X_Selection_Parser *next;
+};
+
+typedef struct _Ecore_X_DND_Source
+{
+   int version;
+   Ecore_X_Window win, dest;
+
+   enum {
+      ECORE_X_DND_SOURCE_IDLE,
+      ECORE_X_DND_SOURCE_DRAGGING,
+      ECORE_X_DND_SOURCE_DROPPED,
+      ECORE_X_DND_SOURCE_CONVERTING
+   } state;
+
+   struct {
+      short x, y;
+      unsigned short width, height;
+   } rectangle;
+
+   Ecore_X_Time time;
+
+   Ecore_X_Atom action, accepted_action;
+
+   int will_accept;
+   int suppress;
+
+   int await_status;
+} Ecore_X_DND_Source;
+
+typedef struct _Ecore_X_DND_Target
+{
+   int version;
+   Ecore_X_Window win, source;
+
+   enum {
+      ECORE_X_DND_TARGET_IDLE,
+      ECORE_X_DND_TARGET_ENTERED
+   } state;
+
+   struct {
+      int x, y;
+   } pos;
+
+   Ecore_X_Time time;
+
+   Ecore_X_Atom action, accepted_action;
+
+   int will_accept;
+} Ecore_X_DND_Target;
+
+
+extern Ecore_X_Connection *_ecore_xcb_conn;
+extern Ecore_X_Screen     *_ecore_xcb_screen;
+extern double              _ecore_xcb_double_click_time;
+extern Ecore_X_Time        _ecore_xcb_event_last_time;
+extern Ecore_X_Window      _ecore_xcb_event_last_window;
+extern int16_t             _ecore_xcb_event_last_root_x;
+extern int16_t             _ecore_xcb_event_last_root_y;
+extern int                 _ecore_xcb_xcursor;
+
+extern Ecore_X_Atom        _ecore_xcb_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
+
+extern int                 _ecore_window_grabs_num;
+extern Ecore_X_Window     *_ecore_window_grabs;
+extern int               (*_ecore_window_grab_replay_func) (void *data, int event_type, void *event);
+extern void               *_ecore_window_grab_replay_data;
+
+extern Ecore_X_Window      _ecore_xcb_private_window;
+
+
+void _ecore_x_error_handler_init(void);
+
+void _ecore_x_event_handle_key_press          (xcb_generic_event_t *event);
+void _ecore_x_event_handle_key_release        (xcb_generic_event_t *event);
+void _ecore_x_event_handle_button_press       (xcb_generic_event_t *event);
+void _ecore_x_event_handle_button_release     (xcb_generic_event_t *event);
+void _ecore_x_event_handle_motion_notify      (xcb_generic_event_t *event);
+void _ecore_x_event_handle_enter_notify       (xcb_generic_event_t *event);
+void _ecore_x_event_handle_leave_notify       (xcb_generic_event_t *event);
+void _ecore_x_event_handle_focus_in           (xcb_generic_event_t *event);
+void _ecore_x_event_handle_focus_out          (xcb_generic_event_t *event);
+void _ecore_x_event_handle_keymap_notify      (xcb_generic_event_t *event);
+void _ecore_x_event_handle_expose             (xcb_generic_event_t *event);
+void _ecore_x_event_handle_graphics_expose    (xcb_generic_event_t *event);
+void _ecore_x_event_handle_visibility_notify  (xcb_generic_event_t *event);
+void _ecore_x_event_handle_create_notify      (xcb_generic_event_t *event);
+void _ecore_x_event_handle_destroy_notify     (xcb_generic_event_t *event);
+void _ecore_x_event_handle_unmap_notify       (xcb_generic_event_t *event);
+void _ecore_x_event_handle_map_notify         (xcb_generic_event_t *event);
+void _ecore_x_event_handle_map_request        (xcb_generic_event_t *event);
+void _ecore_x_event_handle_reparent_notify    (xcb_generic_event_t *event);
+void _ecore_x_event_handle_configure_notify   (xcb_generic_event_t *event);
+void _ecore_x_event_handle_configure_request  (xcb_generic_event_t *event);
+void _ecore_x_event_handle_gravity_notify     (xcb_generic_event_t *event);
+void _ecore_x_event_handle_resize_request     (xcb_generic_event_t *event);
+void _ecore_x_event_handle_circulate_notify   (xcb_generic_event_t *event);
+void _ecore_x_event_handle_circulate_request  (xcb_generic_event_t *event);
+void _ecore_x_event_handle_property_notify    (xcb_generic_event_t *event);
+void _ecore_x_event_handle_selection_clear    (xcb_generic_event_t *event);
+void _ecore_x_event_handle_selection_request  (xcb_generic_event_t *event);
+void _ecore_x_event_handle_selection_notify   (xcb_generic_event_t *event);
+void _ecore_x_event_handle_colormap_notify    (xcb_generic_event_t *event);
+void _ecore_x_event_handle_client_message     (xcb_generic_event_t *event);
+void _ecore_x_event_handle_mapping_notify     (xcb_generic_event_t *event);
+#ifdef ECORE_XCB_DAMAGE
+void _ecore_x_event_handle_damage_notify      (xcb_generic_event_t *event);
+#endif /* ECORE_XCB_DAMAGE */
+#ifdef ECORE_XCB_RANDR
+void _ecore_x_event_handle_randr_change       (xcb_generic_event_t *event);
+#endif /* ECORE_XCB_RANDR */
+#ifdef ECORE_XCB_SCREENSAVER
+void _ecore_x_event_handle_screensaver_notify (xcb_generic_event_t *event);
+#endif /* ECORE_XCB_SCREENSAVER */
+#ifdef ECORE_XCB_SHAPE
+void _ecore_x_event_handle_shape_change       (xcb_generic_event_t *event);
+#endif /* ECORE_XCB_SHAPE */
+#ifdef ECORE_XCB_SYNC
+void _ecore_x_event_handle_sync_counter       (xcb_generic_event_t *event);
+void _ecore_x_event_handle_sync_alarm         (xcb_generic_event_t *event);
+#endif /* ECORE_XCB_SYNC */
+#ifdef ECORE_XCB_FIXES
+void _ecore_x_event_handle_fixes_selection_notify(xcb_generic_event_t *event);
+#endif /* ECORE_XCB_FIXES */
+
+
+/* requests / replies */
+int          _ecore_x_reply_init ();
+void         _ecore_x_reply_shutdown ();
+void         _ecore_xcb_cookie_cache (unsigned int cookie);
+unsigned int _ecore_xcb_cookie_get (void);
+void         _ecore_xcb_reply_cache (void *reply);
+void        *_ecore_xcb_reply_get (void);
+
+
+/* atoms */
+extern Ecore_X_Atom ECORE_X_ATOM_ATOM;
+extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL;
+extern Ecore_X_Atom ECORE_X_ATOM_STRING;
+extern Ecore_X_Atom ECORE_X_ATOM_WINDOW;
+extern Ecore_X_Atom ECORE_X_ATOM_E_FRAME_SIZE;
+extern Ecore_X_Atom ECORE_X_ATOM_WM_SIZE_HINTS;
+
+#define ECORE_X_ATOMS_COUNT 115
+
+void _ecore_x_atom_init          (xcb_intern_atom_cookie_t *);
+void _ecore_x_atom_init_finalize (xcb_intern_atom_cookie_t *);
+
+
+/* damage */
+void _ecore_x_damage_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_damage_init_finalize (void);
+
+/* composite */
+void _ecore_x_composite_init       (const xcb_query_extension_reply_t *reply);
+void _ecore_x_composite_init_finalize (void);
+
+/* from dnd */
+void                _ecore_x_dnd_init       (void);
+void                _ecore_x_dnd_shutdown   (void);
+Ecore_X_DND_Source *_ecore_x_dnd_source_get (void);
+Ecore_X_DND_Target *_ecore_x_dnd_target_get (void);
+void                _ecore_x_dnd_drag       (Ecore_X_Window root,
+                                             int x,
+                                             int y);
+
+
+/* dpms */
+void _ecore_x_dpms_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_dpms_init_finalize (void);
+
+
+/* netwm */
+Ecore_X_Window_State _ecore_x_netwm_state_get(Ecore_X_Atom a);
+int                  _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data);
+int                  _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data);
+
+
+/* randr */
+void _ecore_x_randr_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_randr_init_finalize (void);
+
+
+/* selection */
+void                      _ecore_x_selection_init(void);
+void                      _ecore_x_selection_shutdown(void);
+Ecore_X_Atom              _ecore_x_selection_target_atom_get(const char *target);
+char                     *_ecore_x_selection_target_get(Ecore_X_Atom target);
+Ecore_X_Selection_Intern *_ecore_x_selection_get(Ecore_X_Atom selection);
+int                       _ecore_x_selection_set(Ecore_X_Window w, const void *data, int len, Ecore_X_Atom selection);
+int                       _ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret);
+void                     *_ecore_x_selection_parse(const char *target, void *data, int size, int format);
+
+
+/* screensaver */
+void _ecore_x_screensaver_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_screensaver_init_finalize (void);
+
+
+/* shape */
+void _ecore_x_shape_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_shape_init_finalize (void);
+
+
+/* sync */
+void _ecore_x_sync_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_sync_init_finalize (void);
+
+
+/* xfixes */
+void _ecore_x_xfixes_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_xfixes_init_finalize (void);
+
+
+/* xinerama */
+void _ecore_x_xinerama_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_xinerama_init_finalize (void);
+
+
+/* xprint */
+void _ecore_x_xprint_init          (const xcb_query_extension_reply_t *reply);
+void _ecore_x_xprint_init_finalize (void);
+
+/* to categorize */
+void _ecore_x_sync_magic_send(int val, Ecore_X_Window swin);
+void _ecore_x_window_grab_remove(Ecore_X_Window win);
+void _ecore_x_key_grab_remove(Ecore_X_Window win);
+
+
+#endif /* __ECORE_XCB_PRIVATE_H__*/
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_randr.c b/src/lib/ecore_x/xcb/ecore_xcb_randr.c
new file mode 100644 (file)
index 0000000..d2e0b9d
--- /dev/null
@@ -0,0 +1,544 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_RandR_Group X RandR Extension Functions
+ *
+ * Functions related to the X RandR extension.
+ */
+
+
+#ifdef ECORE_XCB_RANDR
+static int _randr_available = 0;
+static xcb_randr_query_version_cookie_t _ecore_xcb_randr_init_cookie;
+#endif /* ECORE_XCB_RANDR */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_randr_init and
+   _ecore_xcb_randr_init_finalize. The first one gets the cookies and
+   the second one gets the replies and set the atoms. */
+
+void
+_ecore_x_randr_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_RANDR
+   if (reply && (reply->present))
+      _ecore_xcb_randr_init_cookie = xcb_randr_query_version_unchecked(_ecore_xcb_conn, 1, 2);
+#endif /* ECORE_XCB_RANDR */
+}
+
+void
+_ecore_x_randr_init_finalize(void)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_query_version_reply_t *reply;
+
+   reply = xcb_randr_query_version_reply(_ecore_xcb_conn,
+                                         _ecore_xcb_randr_init_cookie, NULL);
+
+   if (reply)
+     {
+        if ((reply->major_version >= 1) &&
+            (reply->minor_version >= 1))
+          _randr_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_RANDR */
+}
+
+/**
+ * Return whether the X server supports the RandR Extension.
+ * @return 1 if the X RandR Extension is available, 0 otherwise.
+ *
+ * Return 1 if the X server supports the RandR Extension version 1.1,
+ * 0 otherwise.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI int
+ecore_x_randr_query(void)
+{
+#ifdef ECORE_XCB_RANDR
+   return _randr_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
+
+
+static Ecore_X_Window
+_xcb_randr_root_to_screen(Ecore_X_Window root)
+{
+   xcb_screen_iterator_t iter;
+
+   iter = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn));
+   for (; iter.rem; xcb_screen_next(&iter))
+     {
+        if (iter.data->root == root)
+          return iter.data->root;
+     }
+
+   return XCB_NONE;
+}
+
+/**
+ * Select if the ScreenChangeNotify events  will be sent.
+ * @param window The window.
+ * @param on     1 to enable, 0 to disable.
+ * @return       1 on success, 0 otherwise.
+ *
+ * If @p on value is @c 1, ScreenChangeNotify events
+ * will be sent when the screen configuration changes, either from
+ * this protocol extension, or due to detected external screen
+ * configuration changes. ScreenChangeNotify may also be sent when
+ * this request executes if the screen configuration has changed since
+ * the client connected, to avoid race conditions.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI int
+ecore_x_randr_events_select(Ecore_X_Window window,
+                            int            on)
+{
+#ifdef ECORE_XCB_RANDR
+     xcb_randr_select_input(_ecore_xcb_conn, window,
+                            on ? XCB_RANDR_SCREEN_CHANGE_NOTIFY : 0);
+     return 1;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/**
+ * Sends the GetScreenInfo request.
+ * @param window Window whose properties are requested.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI void
+ecore_x_randr_get_screen_info_prefetch(Ecore_X_Window window)
+{
+   xcb_randr_get_screen_info_cookie_t cookie;
+
+   cookie = xcb_randr_get_screen_info_unchecked(_ecore_xcb_conn,
+                                                _xcb_randr_root_to_screen(window));
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetScreenInfo request sent by ecore_x_randr_get_screen_info_prefetch().
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI void
+ecore_x_randr_get_screen_info_fetch(void)
+{
+   xcb_randr_get_screen_info_cookie_t cookie;
+   xcb_randr_get_screen_info_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply =xcb_randr_get_screen_info_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get the set of rotations and reflections.
+ * @param root The window (Unused).
+ * @return     The set of rotations and reflections.
+ *
+ * Get the set of rotations and reflections supported by the screen
+ * associated to @p window (passed to
+ * ecore_x_randr_get_screen_info_prefetch()).
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Randr_Rotation
+ecore_x_randr_screen_rotations_get(Ecore_X_Window root __UNUSED__)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   return reply->rotations;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/**
+ * Get the rotation.
+ * @param root The window (Unused).
+ * @return     The rotation.
+ *
+ * Get the rotation supported by the screen
+ * associated to @p window (passed to
+ * ecore_x_randr_get_screen_info_prefetch()).
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Randr_Rotation
+ecore_x_randr_screen_rotation_get(Ecore_X_Window root __UNUSED__)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   return reply->rotation;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/**
+ * Get the frame buffer sizes.
+ * @param root The window (Unused).
+ * @param num  The number of sizes.
+ * @return     The sizes.
+ *
+ * Get the list of possible frame buffer sizes (at the normal
+ * orientation supported by the screen associated to @p window (passed
+ * to ecore_x_randr_get_screen_info_prefetch()). Each size indicates
+ * both the linear physical size of the screen and the pixel size.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Screen_Size *
+ecore_x_randr_screen_sizes_get(Ecore_X_Window root __UNUSED__,
+                               int           *num)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+   xcb_randr_screen_size_t           *sizes;
+   Ecore_X_Screen_Size               *ret;
+   int                                n;
+   int                                i;
+
+   if (num) *num = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return NULL;
+
+   n = xcb_randr_get_screen_info_sizes_length(reply);
+   ret = calloc(n, sizeof(Ecore_X_Screen_Size));
+   if (!ret) return NULL;
+
+   if (num) *num = n;
+   sizes = xcb_randr_get_screen_info_sizes(reply);
+   for (i = 0; i < n; i++)
+     {
+        ret[i].width = sizes[i].width;
+        ret[i].height = sizes[i].height;
+     }
+
+   return ret;
+#else
+   if (num) *num = 0;
+   return NULL;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/**
+ * Get the current frame buffer size.
+ * @param root The window (Unused).
+ * @return     The active size.
+ *
+ * Get the active frame buffer size supported by the screen associated
+ * to @p window (passed to
+ * ecore_x_randr_get_screen_info_prefetch()).
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Screen_Size
+ecore_x_randr_current_screen_size_get(Ecore_X_Window root __UNUSED__)
+{
+   Ecore_X_Screen_Size ret = { -1, -1 };
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+   xcb_randr_screen_size_t           *sizes;
+   uint16_t                           size_index;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return ret;
+
+   size_index = reply->sizeID;
+   sizes = xcb_randr_get_screen_info_sizes(reply);
+   if (size_index < reply->nSizes)
+     {
+        ret.width = sizes[size_index].mwidth;
+        ret.height = sizes[size_index].mheight;
+     }
+#endif /* ECORE_XCB_RANDR */
+
+   return ret;
+}
+
+/**
+ * Get the current refresh rate.
+ * @param root The window (Unused).
+ * @return     The current refresh rate.
+ *
+ * Get the current refresh rate supported by the screen associated
+ * to @p window (passed to
+ * ecore_x_randr_get_screen_info_prefetch()).
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Screen_Refresh_Rate
+ecore_x_randr_current_screen_refresh_rate_get(Ecore_X_Window root __UNUSED__)
+{
+   Ecore_X_Screen_Refresh_Rate        ret = { -1 };
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return ret;
+
+   ret.rate = reply->rate;
+#endif /* ECORE_XCB_RANDR */
+
+   return ret;
+}
+
+/**
+ * Get the refresh rates.
+ * @param root The window (Unused).
+ * @param num  The number of refresh rates.
+ * @return     The refresh rates.
+ *
+ * Get the list of refresh rates for each size supported by the screen
+ * associated to @p window (passed to
+ * ecore_x_randr_get_screen_info_prefetch()). Each element
+ * of 'sizes' has a corresponding element in 'refresh'. An empty list
+ * indicates no known rates, or a device for which refresh is not
+ * relevant.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_randr_get_screen_info_prefetch(), which sends the GetScreenInfo request,
+ * then ecore_x_randr_get_screen_info_fetch(), which gets the reply.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI Ecore_X_Screen_Refresh_Rate *
+ecore_x_randr_screen_refresh_rates_get(Ecore_X_Window root __UNUSED__,
+                                       int            size_id __UNUSED__,
+                                       int           *num)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_get_screen_info_reply_t *reply;
+   Ecore_X_Screen_Refresh_Rate       *ret;
+   Ecore_X_Screen_Refresh_Rate       *tmp;
+   xcb_randr_refresh_rates_iterator_t iter;
+   uint16_t                           n;
+
+   if (num) *num = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return NULL;
+
+   n = reply->nSizes;
+   ret = calloc(n, sizeof(Ecore_X_Screen_Refresh_Rate));
+   if (!ret)
+     return NULL;
+
+   if (num) *num = n;
+
+   /* FIXME: maybe there's a missing function in xcb randr implementation */
+   iter = xcb_randr_get_screen_info_rates_iterator(reply);
+   tmp = ret;
+   for (; iter.rem; xcb_randr_refresh_rates_next(&iter), tmp++)
+     {
+       tmp->rate = iter.data->nRates;;
+     }
+
+   return ret;
+#else
+   if (num) *num = 0;
+   return NULL;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/* FIXME: round trip. Should we remove it ? */
+
+/**
+ * Set the screen rotation.
+ * @param root The root window.
+ * @param rot  The rotation.
+ *
+ * Set the rotation of the screen associated to @p root.
+ *
+ * Note that that function is blocking.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI void
+ecore_x_randr_screen_rotation_set(Ecore_X_Window         root,
+                                  Ecore_X_Randr_Rotation rot)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_set_screen_config_cookie_t cookie;
+   xcb_randr_set_screen_config_reply_t *reply_config;
+   xcb_randr_get_screen_info_reply_t   *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return;
+
+   cookie = xcb_randr_set_screen_config_unchecked(_ecore_xcb_conn, root,
+                                                  XCB_CURRENT_TIME,
+                                                  reply->config_timestamp,
+                                                  reply->sizeID,
+                                                  rot,
+                                                  0);
+   reply_config = xcb_randr_set_screen_config_reply(_ecore_xcb_conn, cookie, NULL);
+   if (reply_config)
+     free(reply_config);
+#endif /* ECORE_XCB_RANDR */
+}
+
+/* FIXME: round trip. Should we remove it ? */
+
+/**
+ * Set the screen size.
+ * @param root The root window.
+ * @param size The size.
+ *
+ * Set the size of the screen associated to @p root.
+ *
+ * Note that that function is blocking.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI int
+ecore_x_randr_screen_size_set(Ecore_X_Window      root,
+                              Ecore_X_Screen_Size size)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_set_screen_config_cookie_t cookie;
+   xcb_randr_set_screen_config_reply_t *reply_config;
+   xcb_randr_get_screen_info_reply_t   *reply;
+   xcb_randr_screen_size_iterator_t     iter;
+   int                                  size_index = -1;
+   int                                  i;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   iter = xcb_randr_get_screen_info_sizes_iterator(reply);
+   for (i = 0; iter.rem; xcb_randr_screen_size_next(&iter), i++)
+     {
+        if ((iter.data->width = size.width) &&
+            (iter.data->height = size.height) &&
+            (iter.data->mwidth = size.width) &&
+            (iter.data->mheight = size.height))
+          {
+            size_index = i;
+            break;
+          }
+     }
+   if (size_index == -1) return 0;
+
+   cookie = xcb_randr_set_screen_config_unchecked(_ecore_xcb_conn, root,
+                                                  XCB_CURRENT_TIME,
+                                                  reply->config_timestamp,
+                                                  size_index,
+                                                  XCB_RANDR_ROTATION_ROTATE_0,
+                                                  0);
+   reply_config = xcb_randr_set_screen_config_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply_config)
+     return 0;
+
+   free(reply_config);
+
+   return 1;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
+
+/* FIXME: round trip. Should we remove it ? */
+
+/**
+ * Set the screen refresh rate.
+ * @param root The root window.
+ * @param size The size.
+ * @param rate The refresh rate.
+ *
+ * Set the size and the refresh rate of the screen associated to
+ * @p root.
+ *
+ * Note that that function is blocking.
+ * @ingroup Ecore_X_RandR_Group
+ */
+EAPI int
+ecore_x_randr_screen_refresh_rate_set(Ecore_X_Window              root,
+                                      Ecore_X_Screen_Size         size,
+                                      Ecore_X_Screen_Refresh_Rate rate)
+{
+#ifdef ECORE_XCB_RANDR
+   xcb_randr_set_screen_config_cookie_t cookie;
+   xcb_randr_set_screen_config_reply_t *reply_config;
+   xcb_randr_get_screen_info_reply_t   *reply;
+   xcb_randr_screen_size_iterator_t     iter;
+   int                                  size_index = -1;
+   int                                  i;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   iter = xcb_randr_get_screen_info_sizes_iterator(reply);
+   for (i = 0; iter.rem; xcb_randr_screen_size_next(&iter), i++)
+     {
+        if ((iter.data->width = size.width) &&
+            (iter.data->height = size.height) &&
+            (iter.data->mwidth = size.width) &&
+            (iter.data->mheight = size.height))
+          {
+            size_index = i;
+            break;
+          }
+     }
+   if (size_index == -1) return 0;
+
+   cookie = xcb_randr_set_screen_config_unchecked(_ecore_xcb_conn, root,
+                                                  XCB_CURRENT_TIME,
+                                                  reply->config_timestamp,
+                                                  size_index,
+                                                  XCB_RANDR_ROTATION_ROTATE_0,
+                                                  rate.rate);
+   reply_config = xcb_randr_set_screen_config_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!reply_config)
+     return 0;
+
+   free(reply_config);
+
+   return 1;
+#else
+   return 0;
+#endif /* ECORE_XCB_RANDR */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_reply.c b/src/lib/ecore_x/xcb/ecore_xcb_reply.c
new file mode 100644 (file)
index 0000000..f27f3b0
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <stdlib.h>
+
+#include <Ecore_Data.h>
+
+
+/* 
+ * FIXME:
+ * - in ecore_xcb_cookie_cache, should provide better error management
+ *   when memory allocation fails
+ * - Use an array instead of a list
+ * - Is ecore_xcb_reply_free really needed ?
+ *   _ecore_xcb_reply_cache frees the current reply and
+ *   _ecore_x_reply_shutdown frees the last reply to free.
+ *   I keep it in case it is need for memory improvements,
+ *   but its code is commented.
+ */
+
+static Ecore_List *_ecore_xcb_cookies = NULL;
+static void       *_ecore_xcb_reply = NULL;
+
+typedef struct _Ecore_Xcb_Data Ecore_Xcb_Data;
+
+struct _Ecore_Xcb_Data
+{
+  unsigned int         cookie;
+};
+
+
+int
+_ecore_x_reply_init ()
+{
+   _ecore_xcb_cookies = ecore_list_new();
+   if (!_ecore_xcb_cookies)
+     return 0;
+
+   if (!ecore_list_init(_ecore_xcb_cookies))
+     {
+        ecore_list_destroy(_ecore_xcb_cookies);
+        return 0;
+     }
+
+   if (!ecore_list_free_cb_set(_ecore_xcb_cookies, ECORE_FREE_CB(free)))
+     {
+        ecore_list_destroy(_ecore_xcb_cookies);
+        return 0;
+     }
+
+   return 1;
+}
+
+void
+_ecore_x_reply_shutdown ()
+{
+  if (_ecore_xcb_reply)
+    free(_ecore_xcb_reply);
+
+   if (!_ecore_xcb_cookies)
+     return;
+
+   ecore_list_destroy(_ecore_xcb_cookies);
+}
+
+void
+_ecore_xcb_cookie_cache (unsigned int cookie)
+{
+   Ecore_Xcb_Data *data;
+
+   if (!_ecore_xcb_cookies)
+     return;
+
+   data = (Ecore_Xcb_Data *)malloc(sizeof(Ecore_Xcb_Data));
+   if (!data)
+     return;
+
+   data->cookie = cookie;
+
+   if (!ecore_list_append(_ecore_xcb_cookies, data))
+     {
+        free(data);
+        return;
+     }
+}
+
+unsigned int
+_ecore_xcb_cookie_get (void)
+{
+   Ecore_Xcb_Data *data;
+   unsigned int    cookie;
+
+   if (!_ecore_xcb_cookies)
+     return 0;
+
+   data = ecore_list_first_remove(_ecore_xcb_cookies);
+   if (data)
+     {
+        cookie = data->cookie;
+        free(data);
+
+        return cookie;
+     }
+
+   return 0;
+}
+
+void
+_ecore_xcb_reply_cache (void *reply)
+{
+   if (_ecore_xcb_reply)
+     free(_ecore_xcb_reply);
+   _ecore_xcb_reply = reply;
+}
+
+void *
+_ecore_xcb_reply_get (void)
+{
+   return _ecore_xcb_reply;
+}
+
+EAPI void
+ecore_xcb_reply_free()
+{
+/*   if (_ecore_xcb_reply) */
+/*     { */
+/*        free(_ecore_xcb_reply); */
+/*        _ecore_xcb_reply = NULL; */
+/*     } */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_screensaver.c b/src/lib/ecore_x/xcb/ecore_xcb_screensaver.c
new file mode 100644 (file)
index 0000000..6fdf8c4
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_ScrenSaver_Group X Shape extension
+ *
+ * These functions use the shape extension of the X server to change
+ * shape of given windows.
+ */
+
+
+/**
+ * Return whether the X server supports the ScrenSaver Extension.
+ * @return 1 if the X ScrenSaver Extension is available, 0 otherwise.
+ *
+ * Return 1 if the X server supports the ScrenSaver Extension version 1.0,
+ * 0 otherwise.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_event_available_get(void)
+{
+   return 1;
+}
+
+
+/**
+ * Sends the QueryInfo request.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_idle_time_prefetch(void)
+{
+#ifdef ECORE_XCB_SCREENSAVER
+   xcb_screensaver_query_info_cookie_t cookie;
+
+   cookie = xcb_screensaver_query_info_unchecked(_ecore_xcb_conn, ((xcb_screen_t *)_ecore_xcb_screen)->root);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_SCREENSAVER */
+}
+
+
+/**
+ * Gets the reply of the QueryInfo request sent by ecore_x_get_screensaver_prefetch().
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_idle_time_fetch(void)
+{
+#ifdef ECORE_XCB_SCREENSAVER
+   xcb_screensaver_query_info_cookie_t cookie;
+   xcb_screensaver_query_info_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_screensaver_query_info_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_SCREENSAVER */
+}
+
+
+/**
+ * Get the number of seconds since the last input was received.
+ * @return The number of seconds.
+ *
+ * Get the number of milliseconds since the last input was received
+ * from the user on any of the input devices.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_idle_time_get(void)
+{
+  int idle = 0;
+#ifdef ECORE_XCB_SCREENSAVER
+   xcb_screensaver_query_info_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+
+   if (!reply) return 0;
+
+   /* FIXME: check if it is ms_since_user_input or ms_until_server */
+   idle = reply->ms_since_user_input / 1000;
+#endif /* ECORE_XCB_SCREENSAVER */
+
+   return idle;
+}
+
+
+/**
+ * Set the parameters of the screen saver.
+ * @param timeout  The timeout, in second.
+ * @param interval The interval, in seconds.
+ * @param blank    0 to disable screen blanking, otherwise enable it.
+ * @param expose   Allow Expose generation event or not.
+ *
+ * Set the parameters of the screen saver. @p timeout is the timeout,
+ * in seconds, until the screen saver turns on. @p interval is the
+ * interval, in seconds, between screen saver alterations. @p blank
+ * specifies how to enable screen blanking. @p expose specifies the
+ * screen save control values.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_set(int timeout,
+                        int interval,
+                        int blank,
+                        int expose)
+{
+   xcb_set_screen_saver(_ecore_xcb_conn,
+                        (int16_t)timeout,
+                        (int16_t)interval,
+                        (uint8_t)blank,
+                        (uint8_t)expose);
+}
+
+
+/**
+ * Sends the GetScreenSaver request.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_get_screensaver_prefetch(void)
+{
+   xcb_get_screen_saver_cookie_t cookie;
+
+   cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetScreenSaver request sent by ecore_x_get_screensaver_prefetch().
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_get_screensaver_fetch(void)
+{
+   xcb_get_screen_saver_cookie_t cookie;
+   xcb_get_screen_saver_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+
+/**
+ * Set the timeout of the screen saver.
+ * @param  timeout The timeout to set.
+ *
+ * Set the @p timeout, in seconds, until the screen saver turns on.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_timeout_set(int timeout)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_set_screen_saver(_ecore_xcb_conn,
+                        (int16_t)timeout,
+                        reply->interval,
+                        reply->prefer_blanking,
+                        reply->allow_exposures);
+}
+
+
+/**
+ * Get the timeout of the screen saver.
+ * @return The timeout.
+ *
+ * Get the @p timeout, in seconds, until the screen saver turns on.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_timeout_get(void)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0.0;
+
+   return (int)reply->timeout;
+}
+
+
+/**
+ * Set the interval of the screen saver.
+ * @param  interval The interval to set.
+ *
+ * Set the @p interval, in seconds, between screen saver alterations.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_interval_set(int interval)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_set_screen_saver(_ecore_xcb_conn,
+                        reply->timeout,
+                        (int16_t)interval,
+                        reply->prefer_blanking,
+                        reply->allow_exposures);
+}
+
+
+/**
+ * Get the interval of the screen saver.
+ * @return The interval.
+ *
+ * Get the @p interval, in seconds, between screen saver alterations.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_interval_get(void)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0.0;
+
+   return (int)reply->interval;
+}
+
+
+/**
+ * Set the screen blanking.
+ * @param  blank The blank to set.
+ *
+ * @p blank specifies how to enable screen blanking.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_blank_set(int blank)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_set_screen_saver(_ecore_xcb_conn,
+                        reply->timeout,
+                        reply->interval,
+                        (uint8_t)blank,
+                        reply->allow_exposures);
+}
+
+
+/**
+ * Get the screen blanking.
+ * @return The blanking.
+ *
+ * Get the screen blanking.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_blank_get(void)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0.0;
+
+   return (int)reply->prefer_blanking;
+}
+
+
+/**
+ * Set the screen save control values.
+ * @param  expose The expose to set.
+ *
+ * Set the screen save control values.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_expose_set(int expose)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return;
+
+   xcb_set_screen_saver(_ecore_xcb_conn,
+                        reply->timeout,
+                        reply->interval,
+                        reply->prefer_blanking,
+                        (uint8_t)expose);
+}
+
+
+/**
+ * Get the screen save control values.
+ * @return The expose.
+ *
+ * Get the screen save control values.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_screensaver_prefetch(), which sends the GetScreenSaver request,
+ * then ecore_x_get_screensaver_fetch(), which gets the reply.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI int
+ecore_x_screensaver_expose_get(void)
+{
+   xcb_get_screen_saver_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0.0;
+
+   return (int)reply->allow_exposures;
+}
+
+
+/**
+ * Specifies if the Screen Saver NotifyMask event should be generated.
+ * @param on 0 to disable the generation of the event, otherwise enable it.
+ *
+ * Specifies if the Screen Saver NotifyMask event on the screen
+ * associated with drawable should be generated for this client. If
+ * @p on is set to @c 0, the generation is disabled, otherwise, it is
+ * enabled.
+ * @ingroup Ecore_X_ScrenSaver_Group
+ */
+EAPI void
+ecore_x_screensaver_event_listen_set(int on)
+{
+#ifdef ECORE_XCB_SCREENSAVER
+   xcb_screensaver_select_input(_ecore_xcb_conn,
+                                ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                on ? XCB_SCREENSAVER_EVENT_NOTIFY_MASK : 0);
+#endif /* ECORE_XCB_SCREENSAVER */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_selection.c b/src/lib/ecore_x/xcb/ecore_xcb_selection.c
new file mode 100644 (file)
index 0000000..dd4d075
--- /dev/null
@@ -0,0 +1,1062 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+static Ecore_X_Selection_Intern     selections[4];
+static Ecore_X_Selection_Converter *converters = NULL;
+static Ecore_X_Selection_Parser    *parsers = NULL;
+
+static int _ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret);
+static int _ecore_x_selection_data_default_free(void *data);
+static void *_ecore_x_selection_parser_files(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_files_free(void *data);
+static void *_ecore_x_selection_parser_text(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_text_free(void *data);
+static void *_ecore_x_selection_parser_targets(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_targets_free(void *data);
+
+#define ECORE_X_SELECTION_DATA(x) ((Ecore_X_Selection_Data *)(x))
+
+void
+_ecore_x_selection_init(void)
+{
+   /* Initialize global data */
+   memset(selections, 0, sizeof(selections));
+
+   /* Initialize converters */
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_TEXT,
+                                       _ecore_x_selection_converter_text);
+#ifdef X_HAVE_UTF8_STRING
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_UTF8_STRING,
+                                       _ecore_x_selection_converter_text);
+#endif
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_COMPOUND_TEXT,
+                                       _ecore_x_selection_converter_text);
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_STRING,
+                                       _ecore_x_selection_converter_text);
+
+   /* Initialize parsers */
+   ecore_x_selection_parser_add("text/plain",
+                               _ecore_x_selection_parser_text);
+   ecore_x_selection_parser_add(ECORE_X_SELECTION_TARGET_UTF8_STRING,
+                               _ecore_x_selection_parser_text);
+   ecore_x_selection_parser_add("text/uri-list",
+                               _ecore_x_selection_parser_files);
+   ecore_x_selection_parser_add("_NETSCAPE_URL",
+                               _ecore_x_selection_parser_files);
+   ecore_x_selection_parser_add(ECORE_X_SELECTION_TARGET_TARGETS,
+                               _ecore_x_selection_parser_targets);
+}
+
+void
+_ecore_x_selection_shutdown(void)
+{
+   Ecore_X_Selection_Converter *cnv;
+   Ecore_X_Selection_Parser *prs;
+
+   /* free the selection converters */
+   cnv = converters;
+   while (cnv)
+     {
+       Ecore_X_Selection_Converter *tmp;
+
+       tmp = cnv->next;
+       free(cnv);
+       cnv = tmp;
+     }
+   converters = NULL;
+
+   /* free the selection parsers */
+   prs = parsers;
+   while (prs)
+     {
+       Ecore_X_Selection_Parser *tmp;
+
+       tmp = prs;
+       prs = prs->next;
+       free(tmp->target);
+       free(tmp);
+     }
+   parsers = NULL;
+}
+
+Ecore_X_Selection_Intern *
+_ecore_x_selection_get(Ecore_X_Atom selection)
+{
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     return &selections[0];
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     return &selections[1];
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     return &selections[2];
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     return &selections[3];
+   else
+     return NULL;
+}
+
+
+/*
+ * Sends the GetSelectionOwner request.
+ */
+void
+_ecore_xcb_get_selection_owner_prefetch(Ecore_X_Atom selection)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+
+   cookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, selection);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/*
+ * Gets the reply of the GetSelectionOwner request sent by _ecore_xcb_get_selection_owner_prefetch().
+ */
+void
+_ecore_xcb_get_selection_owner_fetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+   xcb_get_selection_owner_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * To use this function, you must call before, and in order,
+ * _ecore_xcb_get_selection_owner_prefetch(), which sends the GetSelectionOwner request,
+ * then _ecore_xcb_get_selection_owner_fetch(), which gets the reply.
+ */
+int
+_ecore_x_selection_set(Ecore_X_Window window,
+                       const void    *data,
+                       int            size,
+                       Ecore_X_Atom   selection)
+{
+   xcb_get_selection_owner_reply_t *reply;
+   unsigned char                   *buf = NULL;
+   int                              in;
+
+   xcb_set_selection_owner(_ecore_xcb_conn, window, selection, _ecore_xcb_event_last_time);
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply || (reply->owner != window)) return 0;
+
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     in = 0;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     in = 1;
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     in = 2;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     in = 3;
+   else
+     return 0;
+
+   if (data)
+     {
+       selections[in].win = window;
+       selections[in].selection = selection;
+       selections[in].length = size;
+       selections[in].time = _ecore_xcb_event_last_time;
+
+       buf = malloc(size);
+       memcpy(buf, data, size);
+       selections[in].data = buf;
+     }
+   else
+     {
+       if (selections[in].data)
+         {
+            free(selections[in].data);
+            memset(&selections[in], 0, sizeof(Ecore_X_Selection_Data));
+         }
+     }
+
+   return 1;
+}
+
+
+/**
+ * Sends the GetSelectionOwner request.
+ */
+EAPI void
+ecore_x_selection_primary_prefetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+
+   cookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, ECORE_X_ATOM_SELECTION_PRIMARY);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetSelectionOwner request sent by ecore_x_selection_primary_prefetch().
+ */
+EAPI void
+ecore_x_selection_primary_fetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+   xcb_get_selection_owner_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Claim ownership of the PRIMARY selection and set its data.
+ * @param window The window to which this selection belongs
+ * @param data   The data associated with the selection
+ * @param size   The size of the data buffer in bytes
+ * @return       Returns 1 if the ownership of the selection was successfully
+ *               claimed, or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_primary_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_primary_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_primary_set(Ecore_X_Window window,
+                              const void    *data,
+                              int            size)
+{
+   return _ecore_x_selection_set(window, data, size, ECORE_X_ATOM_SELECTION_PRIMARY);
+}
+
+/**
+ * Release ownership of the primary selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_primary_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_primary_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_primary_clear(void)
+{
+   return _ecore_x_selection_set(XCB_NONE, NULL, 0, ECORE_X_ATOM_SELECTION_PRIMARY);
+}
+
+
+/**
+ * Sends the GetSelectionOwner request.
+ */
+EAPI void
+ecore_x_selection_secondary_prefetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+
+   cookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, ECORE_X_ATOM_SELECTION_SECONDARY);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetSelectionOwner request sent by ecore_x_selection_secondary_prefetch().
+ */
+EAPI void
+ecore_x_selection_secondary_fetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+   xcb_get_selection_owner_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+
+/**
+ * Claim ownership of the SECONDARY selection and set its data.
+ * @param window The window to which this selection belongs
+ * @param data   The data associated with the selection
+ * @param size   The size of the data buffer in bytes
+ * @return       Returns 1 if the ownership of the selection was successfully
+ *               claimed, or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_secondary_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_secondary_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_secondary_set(Ecore_X_Window window,
+                                const void    *data,
+                                int            size)
+{
+   return _ecore_x_selection_set(window, data, size, ECORE_X_ATOM_SELECTION_SECONDARY);
+}
+
+/**
+ * Release ownership of the secondary selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_secondary_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_secondary_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_secondary_clear(void)
+{
+   return _ecore_x_selection_set(XCB_NONE, NULL, 0, ECORE_X_ATOM_SELECTION_SECONDARY);
+}
+
+
+/**
+ * Sends the GetSelectionOwner request.
+ */
+EAPI void
+ecore_x_selection_xdnd_prefetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+
+   cookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, ECORE_X_ATOM_SELECTION_XDND);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetSelectionOwner request sent by ecore_x_selection_xdnd_prefetch().
+ */
+EAPI void
+ecore_x_selection_xdnd_fetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+   xcb_get_selection_owner_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Claim ownership of the XDND selection and set its data.
+ * @param window The window to which this selection belongs
+ * @param data   The data associated with the selection
+ * @param size   The size of the data buffer in bytes
+ * @return       Returns 1 if the ownership of the selection was successfully
+ *               claimed, or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_xdnd_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_xdnd_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_xdnd_set(Ecore_X_Window window,
+                           const void    *data,
+                           int            size)
+{
+   return _ecore_x_selection_set(window, data, size, ECORE_X_ATOM_SELECTION_XDND);
+}
+
+/**
+ * Release ownership of the XDND selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_xdnd_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_xdnd_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_xdnd_clear(void)
+{
+   return _ecore_x_selection_set(XCB_NONE, NULL, 0, ECORE_X_ATOM_SELECTION_XDND);
+}
+
+
+/**
+ * Sends the GetSelectionOwner request.
+ */
+EAPI void
+ecore_x_selection_clipboard_prefetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+
+   cookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, ECORE_X_ATOM_SELECTION_CLIPBOARD);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetSelectionOwner request sent by ecore_x_selection_clipboard_prefetch().
+ */
+EAPI void
+ecore_x_selection_clipboard_fetch(void)
+{
+   xcb_get_selection_owner_cookie_t cookie;
+   xcb_get_selection_owner_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_selection_owner_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Claim ownership of the CLIPBOARD selection and set its data.
+ * @param window The window to which this selection belongs
+ * @param data   The data associated with the selection
+ * @param size   The size of the data buffer in bytes
+ * @return       Returns 1 if the ownership of the selection was successfully
+ *               claimed, or 0 if unsuccessful.
+ *
+ * Get the converted data from a previous CLIPBOARD selection
+ * request. The buffer must be freed when done with.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_clipboard_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_clipboard_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_clipboard_set(Ecore_X_Window window,
+                                const void    *data,
+                                int            size)
+{
+   return _ecore_x_selection_set(window, data, size, ECORE_X_ATOM_SELECTION_CLIPBOARD);
+}
+
+/**
+ * Release ownership of the clipboard selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_selection_clipboard_prefetch(), which sends the GetSelectionOwner request,
+ * then ecore_x_selection_clipboard_fetch(), which gets the reply.
+ */
+EAPI int
+ecore_x_selection_clipboard_clear(void)
+{
+   return _ecore_x_selection_set(XCB_NONE, NULL, 0, ECORE_X_ATOM_SELECTION_CLIPBOARD);
+}
+
+
+/* FIXME: roundtrip if target is not handled in the tests */
+Ecore_X_Atom
+_ecore_x_selection_target_atom_get(const char *target)
+{
+   Ecore_X_Atom x_target = XCB_NONE;
+
+   if (!strcmp(target, ECORE_X_SELECTION_TARGET_TEXT))
+     x_target = ECORE_X_ATOM_TEXT;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_COMPOUND_TEXT))
+     x_target = ECORE_X_ATOM_COMPOUND_TEXT;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_STRING))
+     x_target = ECORE_X_ATOM_STRING;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_UTF8_STRING))
+     x_target = ECORE_X_ATOM_UTF8_STRING;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_FILENAME))
+     x_target = ECORE_X_ATOM_FILE_NAME;
+   else
+     {
+        xcb_intern_atom_cookie_t cookie;
+        xcb_intern_atom_reply_t *reply;
+
+        cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
+                                           strlen(target), target);
+        reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
+        if (!reply)
+          return XCB_NONE;
+       x_target = reply->atom;
+        free(reply);
+     }
+
+   return x_target;
+}
+
+
+/* FIXME: roundtrip if target is not handled in the tests */
+char *
+_ecore_x_selection_target_get(Ecore_X_Atom target)
+{
+   if (target == ECORE_X_ATOM_FILE_NAME)
+     return strdup(ECORE_X_SELECTION_TARGET_FILENAME);
+   else if (target == ECORE_X_ATOM_STRING)
+     return strdup(ECORE_X_SELECTION_TARGET_STRING);
+   else if (target == ECORE_X_ATOM_UTF8_STRING)
+     return strdup(ECORE_X_SELECTION_TARGET_UTF8_STRING);
+   else if (target == ECORE_X_ATOM_TEXT)
+     return strdup(ECORE_X_SELECTION_TARGET_TEXT);
+   else
+     {
+        xcb_get_atom_name_cookie_t cookie;
+        xcb_get_atom_name_reply_t *reply;
+        char                      *name;
+
+        cookie = xcb_get_atom_name_unchecked(_ecore_xcb_conn, target);
+        reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookie, NULL);
+        if (!reply)
+          return NULL;
+        name = (char *)malloc(sizeof(char) * (reply->length + 1));
+        if (!name)
+          {
+             free(reply);
+             return NULL;
+          }
+        memcpy(name, xcb_get_atom_name_name(reply), reply->length);
+        name[reply->length] = '\0';
+        free(reply);
+        return name;
+     }
+}
+
+static void
+_ecore_x_selection_request(Ecore_X_Window window,
+                           Ecore_X_Atom   selection,
+                           const char    *target_str)
+{
+   Ecore_X_Atom target, prop;
+
+   target = _ecore_x_selection_target_atom_get(target_str);
+
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     prop = ECORE_X_ATOM_SELECTION_PROP_PRIMARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     prop = ECORE_X_ATOM_SELECTION_PROP_SECONDARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     prop = ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD;
+   else
+     return;
+
+   xcb_convert_selection(_ecore_xcb_conn, window,
+                         selection, target, prop,
+                         XCB_CURRENT_TIME);
+}
+
+EAPI void
+ecore_x_selection_primary_request(Ecore_X_Window window,
+                                  const char    *target)
+{
+   _ecore_x_selection_request(window, ECORE_X_ATOM_SELECTION_PRIMARY, target);
+}
+
+EAPI void
+ecore_x_selection_secondary_request(Ecore_X_Window window,
+                                    const char    *target)
+{
+   _ecore_x_selection_request(window, ECORE_X_ATOM_SELECTION_SECONDARY, target);
+}
+
+EAPI void
+ecore_x_selection_xdnd_request(Ecore_X_Window window,
+                               const char    *target)
+{
+   Ecore_X_Atom        atom;
+   Ecore_X_DND_Target *_target;
+
+   _target = _ecore_x_dnd_target_get();
+   atom = _ecore_x_selection_target_atom_get(target);
+   xcb_convert_selection(_ecore_xcb_conn, window,
+                         ECORE_X_ATOM_SELECTION_XDND, atom,
+                         ECORE_X_ATOM_SELECTION_PROP_XDND,
+                         _target->time);
+}
+
+EAPI void
+ecore_x_selection_clipboard_request(Ecore_X_Window window, const char *target)
+{
+   _ecore_x_selection_request(window, ECORE_X_ATOM_SELECTION_CLIPBOARD, target);
+}
+
+EAPI void
+ecore_x_selection_converter_atom_add(Ecore_X_Atom target,
+                                     int        (*func)(char  *target,
+                                                        void  *data,
+                                                        int    size,
+                                                        void **data_ret,
+                                                        int   *size_ret))
+{
+   Ecore_X_Selection_Converter *cnv;
+
+   cnv = converters;
+   if (converters)
+     {
+       while (1)
+         {
+            if (cnv->target == target)
+              {
+                 cnv->convert = func;
+                 return;
+              }
+            if (cnv->next)
+              cnv = cnv->next;
+            else
+              break;
+         }
+
+       cnv->next = calloc(1, sizeof(Ecore_X_Selection_Converter));
+       cnv = cnv->next;
+     }
+   else
+     {
+       converters = calloc(1, sizeof(Ecore_X_Selection_Converter));
+       cnv = converters;
+     }
+   cnv->target = target;
+   cnv->convert = func;
+}
+
+EAPI void
+ecore_x_selection_converter_add(char *target,
+                                int (*func)(char  *target,
+                                            void  *data,
+                                            int    size,
+                                            void **data_ret,
+                                            int   *size_ret))
+{
+   Ecore_X_Atom x_target;
+
+   if (!func || !target)
+     return;
+
+   x_target = _ecore_x_selection_target_atom_get(target);
+
+   ecore_x_selection_converter_atom_add(x_target, func);
+}
+
+EAPI void
+ecore_x_selection_converter_atom_del(Ecore_X_Atom target)
+{
+   Ecore_X_Selection_Converter *cnv, *prev_cnv;
+
+   prev_cnv = NULL;
+   cnv = converters;
+
+   while (cnv)
+     {
+       if (cnv->target == target)
+         {
+            if (prev_cnv)
+              prev_cnv->next = cnv->next;
+            else
+              converters = cnv->next; /* This was the first converter */
+            free(cnv);
+
+            return;
+         }
+       prev_cnv = cnv;
+       cnv = cnv->next;
+     }
+}
+
+EAPI void
+ecore_x_selection_converter_del(char *target)
+{
+   Ecore_X_Atom x_target;
+
+   if (!target)
+     return;
+
+   x_target = _ecore_x_selection_target_atom_get(target);
+   ecore_x_selection_converter_atom_del(x_target);
+}
+
+EAPI int
+ecore_x_selection_notify_send(Ecore_X_Window requestor,
+                              Ecore_X_Atom   selection,
+                              Ecore_X_Atom   target,
+                              Ecore_X_Atom   property,
+                              Ecore_X_Time   time)
+{
+   xcb_selection_notify_event_t ev;
+
+   ev.time = time;
+   ev.requestor = requestor;
+   ev.selection = selection;
+   ev.target = target;
+   ev.property = property;
+   /* send_event is bit 7 (0x80) of response_type */
+   ev.response_type = 0x80;
+
+   xcb_send_event(_ecore_xcb_conn, 0,
+                  requestor, 0, (const char *)&ev);
+   return 1;
+}
+
+/* Locate and run conversion callback for specified selection target */
+EAPI int
+ecore_x_selection_convert(Ecore_X_Atom selection,
+                          Ecore_X_Atom target,
+                          void       **data_ret)
+{
+   Ecore_X_Selection_Intern    *sel;
+   Ecore_X_Selection_Converter *cnv;
+   void                        *data;
+   char                        *tgt_str;
+   int                          size;
+
+   sel = _ecore_x_selection_get(selection);
+   tgt_str = _ecore_x_selection_target_get(target);
+
+   for (cnv = converters; cnv; cnv = cnv->next)
+     {
+       if (cnv->target == target)
+         {
+            int r;
+            r = cnv->convert(tgt_str, sel->data, sel->length, &data, &size);
+            free(tgt_str);
+            if (r)
+              {
+                 *data_ret = data;
+                 return r;
+              }
+            else
+              return 0;
+         }
+     }
+
+   /* Default, just return the data */
+   *data_ret = malloc(sel->length);
+   memcpy(*data_ret, sel->data, sel->length);
+   free(tgt_str);
+   return 1;
+}
+
+/* TODO: We need to work out a mechanism for automatic conversion to any requested
+ * locale using Ecore_Txt functions */
+/* Converter for standard non-utf8 text targets */
+static int
+_ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret)
+{
+
+  /* FIXME: to do... */
+
+/*    XTextProperty text_prop; */
+/*    char *mystr; */
+/*    XICCEncodingStyle style; */
+
+/*    if (!data || !size) */
+/*      return 0; */
+
+/*    if (!strcmp(target, ECORE_X_SELECTION_TARGET_TEXT)) */
+/*      style = XTextStyle; */
+/*    else if (!strcmp(target, ECORE_X_SELECTION_TARGET_COMPOUND_TEXT)) */
+/*      style = XCompoundTextStyle; */
+/*    else if (!strcmp(target, ECORE_X_SELECTION_TARGET_STRING)) */
+/*      style = XStringStyle; */
+/* #ifdef X_HAVE_UTF8_STRING */
+/*    else if (!strcmp(target, ECORE_X_SELECTION_TARGET_UTF8_STRING)) */
+/*      style = XUTF8StringStyle; */
+/* #endif */
+/*    else */
+/*      return 0; */
+
+/*    if (!(mystr = strdup(data))) */
+/*      return 0; */
+
+/* #ifdef X_HAVE_UTF8_STRING */
+/*    if (Xutf8TextListToTextProperty(_ecore_x_disp, &mystr, 1, style, &text_prop) == Success) */
+/*      { */
+/*     int bufsize = strlen((char *)text_prop.value) + 1; */
+/*     *data_ret = malloc(bufsize); */
+/*     memcpy(*data_ret, text_prop.value, bufsize); */
+/*     *size_ret = bufsize; */
+/*     XFree(text_prop.value); */
+/*     free(mystr); */
+/*     return 1; */
+/*      } */
+/* #else */
+/*    if (XmbTextListToTextProperty(_ecore_x_disp, &mystr, 1, style, &text_prop) == Success) */
+/*      { */
+/*     int bufsize = strlen(text_prop.value) + 1; */
+/*     *data_ret = malloc(bufsize); */
+/*     memcpy(*data_ret, text_prop.value, bufsize); */
+/*     *size_ret = bufsize; */
+/*     XFree(text_prop.value); */
+/*     free(mystr); */
+/*     return 1; */
+/*      } */
+/* #endif */
+/*    else */
+/*      { */
+/*     free(mystr); */
+/*     return 0; */
+/*      } */
+
+  return 0;
+}
+
+EAPI void
+ecore_x_selection_parser_add(const char *target,
+                             void     *(*func)(const char *target,
+                                               void       *data,
+                                               int         size,
+                                               int         format))
+{
+   Ecore_X_Selection_Parser *prs;
+
+   if (!target)
+     return;
+
+   prs = parsers;
+   if (parsers)
+     {
+       while (prs->next)
+         {
+            if (!strcmp(prs->target, target))
+              {
+                 prs->parse = func;
+                 return;
+              }
+            prs = prs->next;
+         }
+
+       prs->next = calloc(1, sizeof(Ecore_X_Selection_Parser));
+       prs = prs->next;
+     }
+   else
+     {
+       parsers = calloc(1, sizeof(Ecore_X_Selection_Parser));
+       prs = parsers;
+     }
+   prs->target = strdup(target);
+   prs->parse = func;
+}
+
+EAPI void
+ecore_x_selection_parser_del(const char *target)
+{
+   Ecore_X_Selection_Parser *prs, *prev_prs;
+
+   if (!target)
+     return;
+
+   prev_prs = NULL;
+   prs = parsers;
+
+   while (prs)
+     {
+       if (!strcmp(prs->target, target))
+         {
+            if (prev_prs)
+              prev_prs->next = prs->next;
+            else
+              parsers = prs->next; /* This was the first parser */
+            free(prs->target);
+            free(prs);
+
+            return;
+         }
+       prev_prs = prs;
+       prs = prs->next;
+     }
+}
+
+/* Locate and run conversion callback for specified selection target */
+void *
+_ecore_x_selection_parse(const char *target, void *data, int size, int format)
+{
+   Ecore_X_Selection_Parser *prs;
+   Ecore_X_Selection_Data *sel;
+
+   for (prs = parsers; prs; prs = prs->next)
+     {
+       if (!strcmp(prs->target, target))
+         {
+            sel = prs->parse(target, data, size, format);
+            return sel;
+         }
+     }
+
+   /* Default, just return the data */
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data));
+   sel->free = _ecore_x_selection_data_default_free;
+   sel->length = size;
+   sel->format = format;
+   sel->data = data;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_default_free(void *data)
+{
+   Ecore_X_Selection_Data *sel;
+
+   sel = data;
+   free(sel->data);
+   free(sel);
+   return 1;
+}
+
+static void *
+_ecore_x_selection_parser_files(const char *target, void *_data, int size, int format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Files *sel;
+   char *data = _data;
+   int i, is;
+   char *tmp;
+
+   if (strcmp(target, "text/uri-list") &&
+       strcmp(target, "_NETSCAPE_URL"))
+     return NULL;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Files));
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_files_free;
+
+   if (data[size - 1])
+     {
+       /* Isn't nul terminated */
+       size++;
+       data = realloc(data, size);
+       data[size - 1] = 0;
+     }
+
+   tmp = malloc(size);
+   i = 0;
+   is = 0;
+   while ((is < size) && (data[is]))
+     {
+       if ((i == 0) && (data[is] == '#'))
+         {
+            for (; ((data[is]) && (data[is] != '\n')); is++);
+         }
+       else
+         {
+            if ((data[is] != '\r') &&
+                (data[is] != '\n'))
+              {
+                 tmp[i++] = data[is++];
+              }
+            else
+              {
+                 while ((data[is] == '\r') || (data[is] == '\n')) is++;
+                 tmp[i] = 0;
+                 sel->num_files++;
+                 sel->files = realloc(sel->files, sel->num_files * sizeof(char *));
+                 sel->files[sel->num_files - 1] = strdup(tmp);
+                 tmp[0] = 0;
+                 i = 0;
+              }
+         }
+     }
+   if (i > 0)
+     {
+       tmp[i] = 0;
+       sel->num_files++;
+       sel->files = realloc(sel->files, sel->num_files * sizeof(char *));
+       sel->files[sel->num_files - 1] = strdup(tmp);
+     }
+   free(tmp);
+   free(data);
+
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_FILES;
+   ECORE_X_SELECTION_DATA(sel)->length = sel->num_files;
+
+   return ECORE_X_SELECTION_DATA(sel);
+}
+
+static int
+_ecore_x_selection_data_files_free(void *data)
+{
+   Ecore_X_Selection_Data_Files *sel;
+   int i;
+
+   sel = data;
+   if (sel->files)
+     {
+       for (i = 0; i < sel->num_files; i++)
+         free(sel->files[i]);
+       free(sel->files);
+     }
+   free(sel);
+   return 0;
+}
+
+static void *
+_ecore_x_selection_parser_text(const char *target __UNUSED__,
+                               void       *_data,
+                               int         size,
+                               int         format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Text *sel;
+   char                        *data = _data;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Text));
+
+   if (data[size - 1])
+     {
+       /* Isn't nul terminated */
+       size++;
+       data = realloc(data, size);
+       data[size - 1] = 0;
+     }
+
+   sel->text = (char *)data;
+   ECORE_X_SELECTION_DATA(sel)->length = size;
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_TEXT;
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_text_free;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_text_free(void *data)
+{
+   Ecore_X_Selection_Data_Text *sel;
+
+   sel = data;
+   free(sel->text);
+   free(sel);
+   return 1;
+}
+
+static void *
+_ecore_x_selection_parser_targets(const char *target __UNUSED__,
+                                  void       *data,
+                                  int         size,
+                                  int         format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Targets *sel;
+   uint32_t                       *targets;
+   xcb_get_atom_name_cookie_t     *cookies;
+   int                             i;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Targets));
+   targets = (uint32_t *)data;
+
+   sel->num_targets = size - 2;
+   sel->targets = malloc((size - 2) * sizeof(char *));
+   cookies = (xcb_get_atom_name_cookie_t *)malloc ((size - 2) * sizeof (xcb_get_atom_name_cookie_t));
+   for (i = 0; i < size - 2; i++)
+     cookies[i] = xcb_get_atom_name_unchecked(_ecore_xcb_conn, targets[i + 2]);
+
+   /* FIXME: do we let the declaration of reply inside the loop ? */
+   for (i = 0; i < size - 2; i++)
+     {
+       xcb_get_atom_name_reply_t *reply;
+       char                      *name;
+       int                        length;
+
+       reply =xcb_get_atom_name_reply(_ecore_xcb_conn, cookies[i], NULL);
+       length = xcb_get_atom_name_name_length(reply);
+       name = (char *)malloc (length + 1);
+       memcpy(name, xcb_get_atom_name_name(reply), length);
+       name[length] = '\0';
+       sel->targets[i - 2] = name;
+     }
+   free(cookies);
+   free(data);
+
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_targets_free;
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_TARGETS;
+   ECORE_X_SELECTION_DATA(sel)->length = size;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_targets_free(void *data)
+{
+   Ecore_X_Selection_Data_Targets *sel;
+   int i;
+
+   sel = data;
+
+   if (sel->targets)
+     {
+       for (i = 0; i < sel->num_targets; i++)
+         free(sel->targets[i]);
+       free(sel->targets);
+     }
+   free(sel);
+   return 1;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_shape.c b/src/lib/ecore_x/xcb/ecore_xcb_shape.c
new file mode 100644 (file)
index 0000000..a85b2b7
--- /dev/null
@@ -0,0 +1,290 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Shape_Group X Shape extension
+ *
+ * Functions that use the shape extension of the X server to change shape of given windows.
+ */
+
+
+#ifdef ECORE_XCB_SHAPE
+static int _shape_available = 0;
+static xcb_shape_query_version_cookie_t _ecore_xcb_shape_init_cookie;
+#endif /* ECORE_XCB_SHAPE */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_shape_init and
+   _ecore_xcb_shape_init_finalize. The first one gets the cookies and
+   the second one gets the replies. */
+
+void
+_ecore_x_shape_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_SHAPE
+   if (reply && (reply->present))
+      _ecore_xcb_shape_init_cookie = xcb_shape_query_version_unchecked(_ecore_xcb_conn);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+void
+_ecore_x_shape_init_finalize(void)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_query_version_reply_t *reply;
+
+   reply = xcb_shape_query_version_reply(_ecore_xcb_conn,
+                                         _ecore_xcb_shape_init_cookie,
+                                         NULL);
+   if (reply)
+     {
+        _shape_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_SHAPE */
+}
+
+
+/**
+ * Sets the shape of the given window to the given pixmap.
+ * @param dest_win    The given window.
+ * @param source_mask A 2-bit depth pixmap that provides the new shape of the window.
+ *
+ * Sets the shape of the window @p dest_win to the pixmap @p source_mask.
+ * @ingroup Ecore_X_Shape_Group
+ */
+EAPI void
+ecore_x_window_shape_mask_set(Ecore_X_Window dest_win,
+                              Ecore_X_Pixmap source_mask)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_mask(_ecore_xcb_conn, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, dest_win, 0, 0, source_mask);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_window_set(Ecore_X_Window dest_win,
+                                Ecore_X_Window shape_win)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_combine(_ecore_xcb_conn, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING, dest_win, 0, 0, shape_win);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_window_set_xy(Ecore_X_Window dest_win,
+                                   Ecore_X_Window shape_win,
+                                   int            x,
+                                   int            y)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_combine(_ecore_xcb_conn, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING, dest_win, x, y, shape_win);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+
+/**
+ * Sets the shape of the given window to a rectangle.
+ * @param dest_win The given window.
+ * @param x        The X coordinate of the top left corner of the rectangle.
+ * @param y        The Y coordinate of the top left corner of the rectangle.
+ * @param width    The width of the rectangle.
+ * @param height   The height of the rectangle.
+ *
+ * Sets the shape of the window @p dest_win to a rectangle defined  by
+ * @p x, @p y, @p width and @p height.
+ * @ingroup Ecore_X_Shape_Group
+ */
+EAPI void
+ecore_x_window_shape_rectangle_set(Ecore_X_Window dest_win,
+                                   int            x,
+                                   int            y,
+                                   int            width,
+                                   int            height)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_rectangle_t rect;
+
+   rect.x = x;
+   rect.y = y;
+   rect.width = width;
+   rect.height = height;
+   xcb_shape_rectangles(_ecore_xcb_conn, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, 0, dest_win, 0, 0, 1, &rect);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_rectangles_set(Ecore_X_Window     dest_win,
+                                    Ecore_X_Rectangle *rects,
+                                    int                num)
+{
+#ifdef ECORE_XCB_SHAPE
+   if (num > 0)
+     xcb_shape_rectangles(_ecore_xcb_conn,
+                          XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING,
+                          0, dest_win, 0, 0, num, (xcb_rectangle_t *)rects);
+   else
+     xcb_shape_rectangles(_ecore_xcb_conn, XCB_SHAPE_SO_SET, XCB_SHAPE_SK_BOUNDING, 0, dest_win, 0, 0, 0, NULL);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_window_add(Ecore_X_Window dest_win,
+                                Ecore_X_Window shape_win)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_combine(_ecore_xcb_conn, XCB_SHAPE_SO_UNION, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING, dest_win, 0, 0, shape_win);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_window_add_xy(Ecore_X_Window dest_win,
+                                   Ecore_X_Window shape_win,
+                                   int            x,
+                                   int            y)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_combine(_ecore_xcb_conn, XCB_SHAPE_SO_UNION, XCB_SHAPE_SK_BOUNDING, XCB_SHAPE_SK_BOUNDING, dest_win, x, y, shape_win);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_rectangle_add(Ecore_X_Window dest_win,
+                                   int            x,
+                                   int            y,
+                                   int            width,
+                                   int            height)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_rectangle_t rect;
+
+   rect.x = x;
+   rect.y = y;
+   rect.width = width;
+   rect.height = height;
+   xcb_shape_rectangles(_ecore_xcb_conn, XCB_SHAPE_SO_UNION, XCB_SHAPE_SK_BOUNDING, 0, dest_win, 0, 0, 1, &rect);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+EAPI void
+ecore_x_window_shape_rectangle_clip(Ecore_X_Window dest_win,
+                                    int            x,
+                                    int            y,
+                                    int            width,
+                                    int            height)
+{
+   xcb_rectangle_t rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = width;
+   rect.height = height;
+   xcb_shape_rectangles(_ecore_xcb_conn,
+                        XCB_SHAPE_SO_INTERSECT, XCB_SHAPE_SK_BOUNDING,
+                        0, dest_win, 0, 0, 1, &rect);
+}
+
+EAPI void
+ecore_x_window_shape_rectangles_add(Ecore_X_Window     dest_win,
+                                    Ecore_X_Rectangle *rects,
+                                    int                num)
+{
+#ifdef ECORE_XCB_SHAPE
+   if (num > 0)
+     xcb_shape_rectangles(_ecore_xcb_conn, XCB_SHAPE_SO_UNION, XCB_SHAPE_SK_BOUNDING, 0, dest_win, 0, 0, num, (const xcb_rectangle_t *)rects);
+   else
+     xcb_shape_rectangles(_ecore_xcb_conn, XCB_SHAPE_SO_UNION, XCB_SHAPE_SK_BOUNDING, 0, dest_win, 0, 0, 0, NULL);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+
+/**
+ * Sends the ShapeGetRectangles request.
+ * @param window Requested window.
+ * @ingroup Ecore_X_Shape_Group
+ */
+EAPI void
+ecore_x_window_shape_rectangles_get_prefetch(Ecore_X_Window window)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_get_rectangles_cookie_t cookie;
+
+   cookie = xcb_shape_get_rectangles_unchecked(_ecore_xcb_conn, window, XCB_SHAPE_SK_BOUNDING);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+
+/**
+ * Gets the reply of the ShapeGetRectangles request sent by ecore_x_window_shape_rectangles_get_prefetch().
+ * @ingroup Ecore_X_Shape_Group
+ */
+EAPI void
+ecore_x_window_shape_rectangles_get_fetch(void)
+{
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_get_rectangles_cookie_t cookie;
+   xcb_shape_get_rectangles_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_shape_get_rectangles_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+
+/**
+ * To document.
+ * @param  window  Unused.
+ * @param  num_ret To document.
+ * @return         To document.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_window_shape_rectangles_get_prefetch(), which sends the ShapeGetRectangles request,
+ * then ecore_x_window_shape_rectangles_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Shape_Group
+ */
+EAPI Ecore_X_Rectangle *
+ecore_x_window_shape_rectangles_get(Ecore_X_Window window __UNUSED__,
+                                    int           *num_ret)
+{
+   Ecore_X_Rectangle *rects = NULL;
+   uint32_t           num = 0;
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_get_rectangles_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     {
+       if (num_ret) *num_ret = 0;
+       return NULL;
+     }
+
+   num = reply->rectangles_len;
+   rects = malloc(sizeof(Ecore_X_Rectangle) * num);
+   if (rects)
+     memcpy (rects,
+             xcb_shape_get_rectangles_rectangles(reply),
+             num * sizeof (Ecore_X_Rectangle));
+   else
+     num = 0;
+#endif /* ECORE_XCB_SHAPE */
+
+   if (num_ret) *num_ret = num;
+
+   return rects;
+}
+
+EAPI void
+ecore_x_window_shape_events_select(Ecore_X_Window dest_win,
+                                   int            on)
+{
+#ifdef ECORE_XCB_SHAPE
+     xcb_shape_select_input(_ecore_xcb_conn, dest_win, on ? 1 : 0);
+#endif /* ECORE_XCB_SHAPE */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_sync.c b/src/lib/ecore_x/xcb/ecore_xcb_sync.c
new file mode 100644 (file)
index 0000000..5b1fd0b
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Sync_Group X Sync Extension Functions
+ *
+ * Functions related to the X Sync extension.
+ */
+
+
+#ifdef ECORE_XCB_SYNC
+static int _sync_available = 0;
+static xcb_sync_initialize_cookie_t _ecore_xcb_sync_init_cookie;
+#endif /* ECORE_XCB_SYNC */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_sync_init and
+   _ecore_xcb_sync_init_finalize. The first one gets the cookies and
+   the second one gets the replies and set the atoms. */
+
+void
+_ecore_x_sync_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_SYNC
+   if (reply && (reply->present))
+     _ecore_xcb_sync_init_cookie = xcb_sync_initialize_unchecked(_ecore_xcb_conn,
+                                                                 XCB_SYNC_MAJOR_VERSION,
+                                                                 XCB_SYNC_MINOR_VERSION);
+#endif /* ECORE_XCB_SYNC */
+}
+
+void
+_ecore_x_sync_init_finalize(void)
+{
+#ifdef ECORE_XCB_SYNC
+   xcb_sync_initialize_reply_t *reply;
+
+   reply = xcb_sync_initialize_reply(_ecore_xcb_conn,
+                                     _ecore_xcb_sync_init_cookie, NULL);
+
+   if (reply)
+     {
+       if (reply->major_version >= 3)
+        _sync_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_SYNC */
+}
+
+
+/**
+ * Return whether the X server supports the Sync Extension.
+ * @return 1 if the X Sync Extension is available, 0 otherwise.
+ *
+ * Return 1 if the X server supports the Sync Extension version 3.0,
+ * 0 otherwise.
+ * @ingroup Ecore_X_Sync_Group
+ */
+EAPI int
+ecore_x_sync_query(void)
+{
+#ifdef ECORE_XCB_SYNC
+   return _sync_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_SYNC */
+}
+
+
+/**
+ * Create a new alarm.
+ * @param counter A counter.
+ * @return        A newly created alarm.
+ *
+ * Create a new alarm.
+ * @ingroup Ecore_X_Sync_Group
+ */
+EAPI Ecore_X_Sync_Alarm
+ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter)
+{
+#ifdef ECORE_XCB_SYNC
+   uint32_t           value_list[6];
+   xcb_sync_int64_t   init;
+   Ecore_X_Sync_Alarm alarm;
+   uint32_t           value_mask;
+
+   init.lo = 0;
+   init.hi = 0;
+   xcb_sync_set_counter(_ecore_xcb_conn, counter, init);
+
+   value_mask =
+     XCB_SYNC_CA_COUNTER | XCB_SYNC_CA_VALUE_TYPE |
+     XCB_SYNC_CA_VALUE   | XCB_SYNC_CA_TEST_TYPE  |
+     XCB_SYNC_CA_DELTA   | XCB_SYNC_CA_EVENTS;
+   value_list[0] = counter;
+   value_list[1] = XCB_SYNC_VALUETYPE_ABSOLUTE;
+   value_list[2] = 1;
+   value_list[3] = XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON;
+   value_list[4] = 1;
+   value_list[5] = 1;
+   alarm = xcb_generate_id(_ecore_xcb_conn);
+   xcb_sync_create_alarm(_ecore_xcb_conn,
+                         alarm,
+                         value_mask,
+                         (const uint32_t *)value_list);
+
+   ecore_x_sync();
+   return alarm;
+#else
+   return 0;
+#endif /* ECORE_XCB_SYNC */
+}
+
+
+/**
+ * Delete an alarm.
+ * @param alarm The alarm to delete.
+ * @return      1 on success, 0 otherwise.
+ *
+ * Delete the @p alarm. Returns 1 on success, 0 otherwise.
+ * @ingroup Ecore_X_Sync_Group
+ */
+EAPI int
+ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm)
+{
+#ifdef ECORE_XCB_SYNC
+   xcb_sync_destroy_alarm(_ecore_xcb_conn, alarm);
+   return 1;
+#else
+   return 0;
+#endif /* ECORE_XCB_SYNC */
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window.c b/src/lib/ecore_x/xcb/ecore_xcb_window.c
new file mode 100644 (file)
index 0000000..b02eb7a
--- /dev/null
@@ -0,0 +1,2021 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "Ecore.h"
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+static int             ignore_num = 0;
+static Ecore_X_Window *ignore_list = NULL;
+
+static Ecore_X_Window _ecore_x_window_at_xy_get(Ecore_X_Window  base,
+                                                int16_t         base_x,
+                                                int16_t         base_y,
+                                                int16_t         x,
+                                                int16_t         y,
+                                                Ecore_X_Window *skip,
+                                                int             skip_num);
+
+#ifdef ECORE_XCB_RENDER
+static Ecore_X_Window _ecore_x_window_argb_internal_new(Ecore_X_Window parent,
+                                                        int16_t        x,
+                                                        int16_t        y,
+                                                        uint16_t       w,
+                                                        uint16_t       h,
+                                                        uint8_t        override_redirect,
+                                                        uint8_t        save_under);
+#endif /* ECORE_XCB_RENDER */
+
+
+/**
+ * @defgroup Ecore_X_Window_Create_Group X Window Creation Functions
+ *
+ * Functions that can be used to create an X window.
+ */
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_new(Ecore_X_Window parent,
+                   int            x,
+                   int            y,
+                   int            width,
+                   int            height)
+{
+   uint32_t       value_list[9];
+   Ecore_X_Window window;
+   xcb_visualid_t vis = { XCB_WINDOW_CLASS_COPY_FROM_PARENT };
+   uint32_t       value_mask;
+
+   if (parent == 0) parent = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   value_mask =
+     XCB_CW_BACK_PIXMAP | XCB_CW_BORDER_PIXEL  | XCB_CW_BIT_GRAVITY       |
+     XCB_CW_WIN_GRAVITY | XCB_CW_BACKING_STORE | XCB_CW_OVERRIDE_REDIRECT |
+     XCB_CW_SAVE_UNDER  | XCB_CW_EVENT_MASK    | XCB_CW_DONT_PROPAGATE;
+
+   value_list[0]  = XCB_NONE;
+   value_list[1]  = 0;
+   value_list[2]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[3]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[4]  = XCB_BACKING_STORE_NOT_USEFUL;
+   value_list[5]  = 0;
+   value_list[6]  = 0;
+   value_list[7]  =
+     XCB_EVENT_MASK_KEY_PRESS         | XCB_EVENT_MASK_KEY_RELEASE      |
+     XCB_EVENT_MASK_BUTTON_PRESS      | XCB_EVENT_MASK_BUTTON_RELEASE   |
+     XCB_EVENT_MASK_ENTER_WINDOW      | XCB_EVENT_MASK_LEAVE_WINDOW     |
+     XCB_EVENT_MASK_POINTER_MOTION    | XCB_EVENT_MASK_EXPOSURE        |
+     XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE      | XCB_EVENT_MASK_PROPERTY_CHANGE  |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   value_list[8]  = XCB_EVENT_MASK_NO_EVENT;
+
+   window = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_window(_ecore_xcb_conn,
+                   XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                   window, parent, x, y, width, height, 0,
+                   XCB_WINDOW_CLASS_INPUT_OUTPUT,
+                   vis,
+                   value_mask,
+                   value_list);
+
+   if (parent == ((xcb_screen_t *)_ecore_xcb_screen)->root) ecore_x_window_defaults_set(window);
+   return window;
+}
+
+/**
+ * Creates a window with the override redirect attribute set to @c True.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_override_new(Ecore_X_Window parent,
+                            int            x,
+                            int            y,
+                            int            width,
+                            int            height)
+{
+   uint32_t         value_list[9];
+   Ecore_X_Window window;
+   xcb_visualid_t   vis = { XCB_WINDOW_CLASS_COPY_FROM_PARENT };
+   uint32_t         value_mask;
+
+   if (parent == 0) parent = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   value_mask =
+     XCB_CW_BACK_PIXMAP | XCB_CW_BORDER_PIXEL  | XCB_CW_BIT_GRAVITY       |
+     XCB_CW_WIN_GRAVITY | XCB_CW_BACKING_STORE | XCB_CW_OVERRIDE_REDIRECT |
+     XCB_CW_SAVE_UNDER  | XCB_CW_EVENT_MASK    | XCB_CW_DONT_PROPAGATE;
+
+   value_list[0]  = XCB_NONE;
+   value_list[1]  = 0;
+   value_list[2]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[3]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[4]  = XCB_BACKING_STORE_NOT_USEFUL;
+   value_list[5]  = 1;
+   value_list[6]  = 0;
+   value_list[7]  =
+     XCB_EVENT_MASK_KEY_PRESS         | XCB_EVENT_MASK_KEY_RELEASE      |
+     XCB_EVENT_MASK_BUTTON_PRESS      | XCB_EVENT_MASK_BUTTON_RELEASE   |
+     XCB_EVENT_MASK_ENTER_WINDOW      | XCB_EVENT_MASK_LEAVE_WINDOW     |
+     XCB_EVENT_MASK_POINTER_MOTION    | XCB_EVENT_MASK_EXPOSURE        |
+     XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE      | XCB_EVENT_MASK_PROPERTY_CHANGE  |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   value_list[8]  = XCB_EVENT_MASK_NO_EVENT;
+
+   window = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_window(_ecore_xcb_conn,
+                   XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                   window, parent, x, y, width, height, 0,
+                   XCB_WINDOW_CLASS_INPUT_OUTPUT,
+                   vis,
+                   value_mask,
+                   value_list);
+   return window;
+}
+
+/**
+ * Creates a new input window.
+ * @param   parent The parent window to use.    If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_input_new(Ecore_X_Window parent,
+                         int            x,
+                         int            y,
+                         int            width,
+                         int            height)
+{
+   uint32_t         value_list[3];
+   Ecore_X_Window window;
+   xcb_visualid_t   vis = { XCB_WINDOW_CLASS_COPY_FROM_PARENT };
+   uint32_t         value_mask;
+
+   if (parent == 0) parent = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   value_mask = XCB_CW_OVERRIDE_REDIRECT | XCB_CW_EVENT_MASK | XCB_CW_DONT_PROPAGATE;
+
+   value_list[0]  = 1;
+   value_list[1]  =
+     XCB_EVENT_MASK_KEY_PRESS         | XCB_EVENT_MASK_KEY_RELEASE      |
+     XCB_EVENT_MASK_BUTTON_PRESS      | XCB_EVENT_MASK_BUTTON_RELEASE   |
+     XCB_EVENT_MASK_ENTER_WINDOW      | XCB_EVENT_MASK_LEAVE_WINDOW     |
+     XCB_EVENT_MASK_POINTER_MOTION    | XCB_EVENT_MASK_EXPOSURE        |
+     XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE      | XCB_EVENT_MASK_PROPERTY_CHANGE  |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   value_list[2]  = XCB_EVENT_MASK_NO_EVENT;
+
+   window = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_window(_ecore_xcb_conn,
+                   XCB_WINDOW_CLASS_COPY_FROM_PARENT,
+                   window, parent, x, y, width, height, 0,
+                   XCB_WINDOW_CLASS_INPUT_OUTPUT,
+                   vis,
+                   value_mask,
+                   value_list);
+
+   if (parent == ((xcb_screen_t *)_ecore_xcb_screen)->root)
+     {
+     }
+
+   return window;
+}
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   width  Width.
+ * @param   height Height.
+ * @return         The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_manager_argb_new(Ecore_X_Window parent,
+                                int            x,
+                                int            y,
+                                int            width,
+                                int            height)
+{
+   Ecore_X_Window window = 0;
+
+#ifdef ECORE_XCB_RENDER
+   window = _ecore_x_window_argb_internal_new(parent,
+                                              x, y, width, height,
+                                              1, 0);
+#endif /* ECORE_XCB_RENDER */
+
+   return window;
+}
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   width  Width.
+ * @param   height Height.
+ * @return         The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_argb_new(Ecore_X_Window parent,
+                        int            x,
+                        int            y,
+                        int            width,
+                        int            height)
+{
+   Ecore_X_Window window = 0;
+
+#ifdef ECORE_XCB_RENDER
+   window = _ecore_x_window_argb_internal_new(parent,
+                                              x, y, width, height,
+                                              0, 0);
+#endif /* ECORE_XCB_RENDER */
+
+   return window;
+}
+
+/**
+ * Creates a window with the override redirect attribute set to @c True.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   width  Width.
+ * @param   height Height.
+ * @return         The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_override_argb_new(Ecore_X_Window parent,
+                                 int            x,
+                                 int            y,
+                                 int            width,
+                                 int            height)
+{
+   Ecore_X_Window window = 0;
+
+#ifdef ECORE_XCB_RENDER
+   window = _ecore_x_window_argb_internal_new(parent,
+                                              x, y, width, height,
+                                              1, 0);
+#endif /* ECORE_XCB_RENDER */
+
+   return window;
+}
+
+/**
+ * @defgroup Ecore_X_Window_Destroy_Group X Window Destroy Functions
+ *
+ * Functions to destroy X windows.
+ */
+
+/**
+ * Deletes the given window.
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Destroy_Group
+ */
+EAPI void
+ecore_x_window_del(Ecore_X_Window window)
+{
+   /* sorry sir, deleting the root window doesn't sound like
+    * a smart idea.
+    */
+   if (window)
+      xcb_destroy_window(_ecore_xcb_conn, window);
+}
+
+/**
+ * Sends a delete request to the given window.
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Destroy_Group
+ */
+EAPI void
+ecore_x_window_delete_request_send(Ecore_X_Window window)
+{
+   xcb_client_message_event_t ev;
+
+   /* sorry sir, deleting the root window doesn't sound like
+    * a smart idea.
+    */
+   if (window == 0)
+      return;
+
+   ev.response_type = XCB_CLIENT_MESSAGE;
+   ev.format = 32;
+   ev.sequence = 0;
+   ev.window = window;
+   ev.type = ECORE_X_ATOM_WM_PROTOCOLS;
+   ev.data.data32[0] = ECORE_X_ATOM_WM_DELETE_WINDOW;
+   ev.data.data32[1] = XCB_CURRENT_TIME;
+
+   xcb_send_event(_ecore_xcb_conn, 0, window,
+                  XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Configure_Group X Window Configure Functions
+ *
+ * Functions to configure X windows.
+ */
+
+
+/**
+ * Configures the given window with the given mask.
+ * @param   window       The given window.
+ * @param   mask         The given mask.
+ * @param   x            The X coordinate of the window.
+ * @param   y            The Y coordinate of the window.
+ * @param   width        The width of the window.
+ * @param   height       The height of the window.
+ * @param   border_width The border width of the window.
+ * @param   sibling      The sibling window of the window.
+ * @param   stack_mode   The stack mode of the window.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_configure(Ecore_X_Window                window,
+                         Ecore_X_Window_Configure_Mask mask,
+                         int                           x,
+                         int                           y,
+                         int                           width,
+                         int                           height,
+                         int                           border_width,
+                         Ecore_X_Window                sibling,
+                         int                           stack_mode)
+{
+   uint32_t *value_list;
+   uint32_t  value_mask;
+   int       length = 0;
+
+   if (!window)
+      return;
+
+   value_mask = mask;
+   for ( ; value_mask; value_mask >>= 1)
+     if (value_mask & 1)
+       length++;
+   value_list = (uint32_t *)malloc(sizeof(uint32_t) * length);
+   if (!value_list)
+      return;
+
+   value_mask = mask;
+   for ( ; value_mask; value_mask >>= 1, value_list++)
+      if (value_mask & 1)
+        {
+          switch (value_mask) {
+          case XCB_CONFIG_WINDOW_X:
+            *value_list = x;
+            break;
+          case XCB_CONFIG_WINDOW_Y:
+            *value_list = y;
+            break;
+          case XCB_CONFIG_WINDOW_WIDTH:
+            *value_list = width;
+            break;
+          case XCB_CONFIG_WINDOW_HEIGHT:
+            *value_list = height;
+            break;
+          case XCB_CONFIG_WINDOW_BORDER_WIDTH:
+            *value_list = border_width;
+            break;
+          case XCB_CONFIG_WINDOW_SIBLING:
+            *value_list = sibling;
+            break;
+          case XCB_CONFIG_WINDOW_STACK_MODE:
+            *value_list = stack_mode;
+            break;
+          }
+        }
+
+   xcb_configure_window(_ecore_xcb_conn, window, mask, value_list);
+   free(value_list);
+}
+
+/**
+ * Moves a window to the position @p x, @p y.
+ *
+ * The position is relative to the upper left hand corner of the
+ * parent window.
+ *
+ * @param   window The window to move.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_move(Ecore_X_Window window,
+                    int            x,
+                    int            y)
+{
+   uint32_t value_list[2];
+   uint32_t value_mask;
+
+   if (!window)
+      return;
+
+   value_mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y;
+
+   value_list[0] = x;
+   value_list[1] = y;
+
+   xcb_configure_window(_ecore_xcb_conn, window, value_mask, value_list);
+}
+
+/**
+ * Resizes a window.
+ * @param   window The window to resize.
+ * @param   width  New width of the window.
+ * @param   height New height of the window.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_resize(Ecore_X_Window window,
+                      int            width,
+                      int            height)
+{
+   uint32_t value_list[2];
+   uint32_t value_mask;
+
+   if (!window)
+      return;
+
+   if (width < 1) width = 1;
+   if (height < 1) height = 1;
+
+   value_mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
+
+   value_list[0] = width;
+   value_list[1] = height;
+
+   xcb_configure_window(_ecore_xcb_conn, window, value_mask, value_list);
+}
+
+/**
+ * Moves and resizes a window.
+ * @param   window The window to move and resize.
+ * @param   x      New X position of the window.
+ * @param   y      New Y position of the window.
+ * @param   width  New width of the window.
+ * @param   height New height of the window.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_move_resize(Ecore_X_Window window,
+                           int            x,
+                           int            y,
+                           int            width,
+                           int            height)
+{
+   uint32_t value_list[4];
+   uint32_t value_mask;
+
+   if (!window)
+      return;
+
+   if (width < 1) width = 1;
+   if (height < 1) height = 1;
+
+   value_mask =
+     XCB_CONFIG_WINDOW_X     | XCB_CONFIG_WINDOW_Y     |
+     XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
+
+   value_list[0] = x;
+   value_list[1] = y;
+   value_list[2] = width;
+   value_list[3] = height;
+
+   xcb_configure_window(_ecore_xcb_conn, window, value_mask, value_list);
+}
+
+/**
+ * Sets the width of the border of the given window.
+ * @param   window       The given window.
+ * @param   border_width The new border width.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_border_width_set(Ecore_X_Window window,
+                                int            border_width)
+{
+   uint32_t value_list;
+
+   /* doesn't make sense to call this on a root window */
+   if (!window)
+      return;
+
+   value_list = border_width;
+
+   xcb_configure_window(_ecore_xcb_conn, window, XCB_CONFIG_WINDOW_BORDER_WIDTH, &value_list);
+}
+
+/**
+ * Raises the given window.
+ * @param   window The window to raise.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_raise(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   if (!window)
+      return;
+
+   value_list = XCB_STACK_MODE_ABOVE;
+
+   xcb_configure_window(_ecore_xcb_conn, window, XCB_CONFIG_WINDOW_STACK_MODE, &value_list);
+}
+
+/**
+ * Lowers the given window.
+ * @param   window The window to lower.
+ * @ingroup Ecore_X_Window_Configure_Group
+ */
+EAPI void
+ecore_x_window_lower(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   if (!window)
+      return;
+
+   value_list = XCB_STACK_MODE_BELOW;
+
+   xcb_configure_window(_ecore_xcb_conn, window, XCB_CONFIG_WINDOW_STACK_MODE, &value_list);
+}
+
+/**
+ * @defgroup Evas_X_Window_Change_Properties_Group X Window Change Property Functions
+ *
+ * Functions that change window properties.
+ */
+
+/**
+ * Sets the default properties for the given window.
+ *
+ * The default properties set for the window are @c WM_CLIENT_MACHINE and
+ * @c _NET_WM_PID.
+ *
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Change_Property_Group
+ */
+EAPI void
+ecore_x_window_defaults_set(Ecore_X_Window window)
+{
+   char   buf[MAXHOSTNAMELEN];
+   pid_t  pid;
+   int    argc;
+   char **argv;
+
+   /*
+    * Set WM_CLIENT_MACHINE.
+    */
+   gethostname(buf, MAXHOSTNAMELEN);
+   buf[MAXHOSTNAMELEN - 1] = '\0';
+   /* The ecore function uses UTF8 which Xlib may not like (especially
+    * with older clients) */
+   /* ecore_xcb_window_prop_string_set(win, ECORE_X_ATOM_WM_CLIENT_MACHINE,
+                                 (char *)buf); */
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       ECORE_X_ATOM_WM_CLIENT_MACHINE,
+                       ECORE_X_ATOM_STRING,
+                       8, strlen(buf), buf);
+
+   /*
+    * Set _NET_WM_PID
+    */
+   pid = getpid();
+   ecore_x_netwm_pid_set(window, pid);
+
+   ecore_x_netwm_window_type_set(window, ECORE_X_WINDOW_TYPE_NORMAL);
+
+   ecore_app_args_get(&argc, &argv);
+   ecore_x_icccm_command_set(window, argc, argv);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Visibility_Group X Window Visibility Functions
+ *
+ * Functions to change the visibility of X windows.
+ */
+
+/**
+ * Shows a window.
+ *
+ * Synonymous to "mapping" a window in X Window System terminology.
+ *
+ * @param   window The window to show.
+ * @ingroup Ecore_X_Window_Visibility_Group
+ */
+EAPI void
+ecore_x_window_show(Ecore_X_Window window)
+{
+   xcb_map_window(_ecore_xcb_conn, window);
+}
+
+/**
+ * Hides a window.
+ *
+ * Synonymous to "unmapping" a window in X Window System terminology.
+ *
+ * @param   window The window to hide.
+ * @ingroup Ecore_X_Window_Visibility_Group
+ */
+EAPI void
+ecore_x_window_hide(Ecore_X_Window window)
+{
+   xcb_unmap_notify_event_t ev;
+   Ecore_X_Window           root;
+
+   /* ICCCM: SEND unmap event... */
+   root = window;
+   /* FIXME: is it correct ? */
+   if (xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).rem == 1)
+     root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   else
+     {
+        xcb_get_geometry_cookie_t   cookie;
+        xcb_get_geometry_reply_t   *rep;
+        Ecore_X_Drawable            draw;
+
+        /* FIXME: can we avoid round trips, here ? */
+        draw = window;
+        cookie = xcb_get_geometry_unchecked(_ecore_xcb_conn, draw);
+        rep = xcb_get_geometry_reply(_ecore_xcb_conn, cookie, NULL);
+        if (!rep)
+           return;
+        root = rep->root;
+        free(rep);
+     }
+   ev.response_type = XCB_UNMAP_NOTIFY;
+   ev.pad0 = 0;
+   ev.sequence = 0;
+   ev.event = root;
+   ev.window = window;
+   ev.from_configure = 0;
+
+   xcb_send_event(_ecore_xcb_conn, 0, root,
+                  XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT,
+                  (const char *)&ev);
+   xcb_unmap_window(_ecore_xcb_conn, window);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Input_Focus_Group X Window Input Focus Functions
+ *
+ * Functions that manage the focus of an X Window.
+ */
+
+/**
+ * Sets the focus to the window @p window.
+ * @param   window The window to focus.
+ * @ingroup Ecore_X_Window_Input_Focus_Group
+ */
+EAPI void
+ecore_x_window_focus(Ecore_X_Window window)
+{
+   Ecore_X_Time time = XCB_CURRENT_TIME;
+
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   /* xcb_set_input_focus(_ecore_xcb_conn, XCB_INPUT_FOCUS_NONE, win, time); */
+   xcb_set_input_focus(_ecore_xcb_conn,
+                       XCB_INPUT_FOCUS_POINTER_ROOT, window, time);
+}
+
+/**
+ * Sets the focus to the given window at a specific time.
+ * @param   window The window to focus.
+ * @param   time   When to set the focus to the window.
+ * @ingroup Ecore_X_Window_Input_Focus_Group
+ */
+EAPI void
+ecore_x_window_focus_at_time(Ecore_X_Window window,
+                             Ecore_X_Time   time)
+{
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   /* xcb_set_input_focus(_ecore_xcb_conn, XCB_INPUT_FOCUS_NONE, win, time); */
+   xcb_set_input_focus(_ecore_xcb_conn,
+                       XCB_INPUT_FOCUS_POINTER_ROOT, window, time);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Reparent_Group X Window Reparent Functions
+ *
+ * Functions that retrieve or changes the parent window of a window.
+ */
+
+/**
+ * Moves a window to within another window at a given position.
+ * @param   window     The window to reparent.
+ * @param   new_parent The new parent window.
+ * @param   x          X position within new parent window.
+ * @param   y          Y position within new parent window.
+ * @ingroup Ecore_X_Window_Reparent_Group
+ */
+EAPI void
+ecore_x_window_reparent(Ecore_X_Window window,
+                        Ecore_X_Window new_parent,
+                        int            x,
+                        int            y)
+{
+   if (new_parent == 0) new_parent = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   xcb_reparent_window(_ecore_xcb_conn, window, new_parent, x, y);
+}
+
+
+/**
+ * @defgroup Ecore_X_Window_Change_Attributes_Group X Window Change Attributes Functions
+ *
+ * Functions that change the attributes of a window.
+ */
+
+/**
+ * Sets the background pixmap of the given window.
+ * @param   window The given window.
+ * @param   pixmap The pixmap to set to.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_pixmap_set(Ecore_X_Window window,
+                          Ecore_X_Pixmap pixmap)
+{
+   uint32_t value_list;
+
+   value_list = pixmap;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_BACK_PIXMAP, &value_list);
+}
+
+/**
+ * Sets the background color of the given window.
+ * @param   window The given window.
+ * @param   red    The red component of the color to set to.
+ * @param   green  The green component of the color to set to.
+ * @param   blue   The blue component of the color to set to.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_background_color_set(Ecore_X_Window window,
+                                    unsigned short red,
+                                    unsigned short green,
+                                    unsigned short blue)
+{
+   xcb_alloc_color_cookie_t cookie;
+   xcb_alloc_color_reply_t *rep;
+   uint32_t                 value_list;
+
+   /* FIXME: should I provide a reply, and not the color components, here ? */
+   /*        (because of roundtrips) */
+   cookie = xcb_alloc_color_unchecked(_ecore_xcb_conn,
+                                      ((xcb_screen_t *)_ecore_xcb_screen)->default_colormap,
+                                      red, green, blue);
+   rep = xcb_alloc_color_reply(_ecore_xcb_conn, cookie, NULL);
+   if (!rep)
+     return;
+
+   value_list = rep->pixel;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_BACK_PIXEL, &value_list);
+   free(rep);
+}
+
+/**
+ * Sets the bit gravity of the given window.
+ * @param   window  The given window.
+ * @param   gravity The gravity.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_pixel_gravity_set(Ecore_X_Window  window,
+                                 Ecore_X_Gravity gravity)
+{
+   uint32_t value_list;
+
+   value_list = gravity;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_BIT_GRAVITY, &value_list);
+}
+
+/**
+ * Sets the gravity of the given window.
+ * @param   window  The given window.
+ * @param   gravity The gravity.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_gravity_set(Ecore_X_Window  window,
+                           Ecore_X_Gravity gravity)
+{
+   uint32_t value_list;
+
+   value_list = gravity;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_WIN_GRAVITY, &value_list);
+}
+
+/**
+ * Sets the override attribute of the given window.
+ * @param   window            The given window.
+ * @param   override_redirect The override_redirect boolean.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_override_set(Ecore_X_Window window,
+                            int            override_redirect)
+{
+   uint32_t value_list;
+
+   value_list = override_redirect;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_OVERRIDE_REDIRECT, &value_list);
+}
+
+/**
+ * Shows the cursor of the given window.
+ * @param   window The given window.
+ * @param   show   If set to @c 0, hide the cursor. Show it otherwise.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_cursor_show(Ecore_X_Window window,
+                           int            show)
+{
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   if (!show)
+     {
+        Ecore_X_Cursor   cursor;
+        Ecore_X_Drawable draw;
+        Ecore_X_Pixmap   pixmap;
+        Ecore_X_Pixmap   mask;
+        Ecore_X_GC       gc;
+        xcb_point_t      point;
+        uint32_t         value_list;
+
+        draw = window;
+        pixmap = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_pixmap(_ecore_xcb_conn,
+                          1, pixmap, draw,
+                          1, 1);
+        mask = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_pixmap(_ecore_xcb_conn,
+                          1, mask, draw,
+                          1, 1);
+
+        gc = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_gc (_ecore_xcb_conn, gc, draw, 0, NULL);
+        value_list = 0;
+        xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_FOREGROUND, &value_list);
+
+        draw = mask;
+        point.x = 0;
+        point.y = 0;
+        xcb_poly_point(_ecore_xcb_conn, XCB_COORD_MODE_ORIGIN, draw,
+                       gc, 1, &point);
+
+        xcb_free_gc(_ecore_xcb_conn, gc);
+
+        cursor = xcb_generate_id(_ecore_xcb_conn);
+        xcb_create_cursor(_ecore_xcb_conn, cursor,
+                          pixmap, mask,
+                          0, 0, 0,
+                          0, 0, 0,
+                          0, 0);
+        value_list = cursor;
+        xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                     XCB_CW_CURSOR, &value_list);
+
+        xcb_free_cursor(_ecore_xcb_conn, cursor);
+        xcb_free_pixmap(_ecore_xcb_conn, mask);
+        xcb_free_pixmap(_ecore_xcb_conn, pixmap);
+     }
+   else
+     {
+        uint32_t value_list;
+
+        value_list = 0;
+        xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                     XCB_CW_CURSOR, &value_list);
+     }
+}
+
+/**
+ * Sets the cursor of the given window.
+ * @param   window The given window.
+ * @param   cursor The given cursor.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_cursor_set(Ecore_X_Window window,
+                          Ecore_X_Cursor cursor)
+{
+   uint32_t value_list;
+
+   value_list = cursor;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_CURSOR, &value_list);
+}
+
+/**
+ * Todo
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_container_manage(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   value_list =
+     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_EVENT_MASK, &value_list);
+
+}
+
+/**
+ * Todo
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_client_manage(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   value_list =
+     XCB_EVENT_MASK_VISIBILITY_CHANGE |
+/*      XCB_EVENT_MASK_RESIZE_REDIRECT | */
+     XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE |
+     XCB_EVENT_MASK_PROPERTY_CHANGE |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_EVENT_MASK, &value_list);
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_select_input(_ecore_xcb_conn, window, 1);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+/**
+ * Todo
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_sniff(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   value_list =
+     XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_PROPERTY_CHANGE;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_EVENT_MASK, &value_list);
+}
+
+/**
+ * Todo
+ * @param   window The given window.
+ * @ingroup Ecore_X_Window_Change_Attributes_Group
+ */
+EAPI void
+ecore_x_window_client_sniff(Ecore_X_Window window)
+{
+   uint32_t value_list;
+
+   value_list =
+     XCB_EVENT_MASK_VISIBILITY_CHANGE |
+     XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE |
+     XCB_EVENT_MASK_PROPERTY_CHANGE |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   xcb_change_window_attributes(_ecore_xcb_conn, window,
+                                XCB_CW_EVENT_MASK, &value_list);
+#ifdef ECORE_XCB_SHAPE
+   xcb_shape_select_input(_ecore_xcb_conn, window, 1);
+#endif /* ECORE_XCB_SHAPE */
+}
+
+/**
+ * Clears an area of the given window.
+ * @param   window  The given window.
+ * @param   x            The X coordinate of the area.
+ * @param   y            The Y coordinate of the area.
+ * @param   width        The width of the area.
+ * @param   height       The height of the area.
+ * @ingroup Ecore_X_Window_Clear_Area_Group
+ */
+EAPI void
+ecore_x_window_area_clear(Ecore_X_Window window,
+                          int            x,
+                          int            y,
+                          int            width,
+                          int            height)
+{
+   xcb_clear_area(_ecore_xcb_conn, 0, window, x, y, width, height);
+}
+
+/**
+ * Exposes an area of the given window.
+ * @param   window  The given window.
+ * @param   x            The X coordinate of the area.
+ * @param   y            The Y coordinate of the area.
+ * @param   width        The width of the area.
+ * @param   height       The height of the area.
+ * @ingroup Ecore_X_Window_Clear_Area_Group
+ */
+EAPI void
+ecore_x_window_area_expose(Ecore_X_Window window,
+                           int            x,
+                           int            y,
+                           int            width,
+                           int            height)
+{
+   xcb_clear_area(_ecore_xcb_conn, 1, window, x, y, width, height);
+}
+
+
+/**
+ * @defgroup Ecore_X_Window_Save_Set_Group X Window Change Save Set Functions
+ *
+ * Functions that either inserts or deletes the specified window from
+ * the client's save-set.
+ */
+
+/**
+ * Inserts the window in the client's save-set.
+ * @param   window The window to insert in the client's save-set.
+ * @ingroup Ecore_X_Window_Save_Set_Group
+ */
+EAPI void
+ecore_x_window_save_set_add(Ecore_X_Window window)
+{
+   xcb_change_save_set(_ecore_xcb_conn, XCB_SET_MODE_INSERT, window);
+}
+
+/**
+ * Deletes the window from the client's save-set.
+ * @param   window The window to delete from the client's save-set.
+ * @ingroup Ecore_X_Window_Save_Set_Group
+ */
+EAPI void
+ecore_x_window_save_set_del(Ecore_X_Window window)
+{
+   xcb_change_save_set(_ecore_xcb_conn, XCB_SET_MODE_DELETE, window);
+}
+
+/******************************
+ *
+ * Request that have a reply
+ *
+ ******************************/
+
+
+/**
+ * Sends the GetInputFocus request.
+ * @ingroup Ecore_X_Window_Input_Focus_Group
+ */
+EAPI void
+ecore_x_get_input_focus_prefetch(void)
+{
+   xcb_get_input_focus_cookie_t cookie;
+
+   cookie = xcb_get_input_focus_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetInputFocus request sent by ecore_x_get_input_focus_prefetch().
+ * @ingroup Ecore_X_Window_Input_Focus_Group
+ */
+EAPI void
+ecore_x_get_input_focus_fetch(void)
+{
+   xcb_get_input_focus_cookie_t cookie;
+   xcb_get_input_focus_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_input_focus_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Gets the window that has focus.
+ * @return  The window that has focus.
+ *
+ * Returns the window that has the focus. If an error aoocured, @c 0
+ * is returned, otherwise the function returns the window that has focus.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_input_focus_prefetch(), which sends the GetInputFocus request,
+ * then ecore_x_get_input_focus_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Input_Focus_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_focus_get(void)
+{
+   xcb_get_input_focus_reply_t *reply;
+   Ecore_X_Window               window = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return window;
+
+   return reply->focus;
+}
+
+
+/**
+ * @defgroup Ecore_X_Window_Get_Attributes_Group X Window Get Attributes Functions
+ *
+ * Functions that get the attributes of a window.
+ */
+
+
+/**
+ * Sends the GetWindowAttributes request.
+ * @ingroup Ecore_X_Window_Get_Attributes_Group
+ */
+EAPI void
+ecore_x_get_window_attributes_prefetch(Ecore_X_Window window)
+{
+   xcb_get_window_attributes_cookie_t cookie;
+
+   cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, window);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the GetWindowAttributes request sent by ecore_x_get_window_attributes_prefetch().
+ * @ingroup Ecore_X_Window_Get_Attributes_Group
+ */
+EAPI void
+ecore_x_get_window_attributes_fetch(void)
+{
+   xcb_get_window_attributes_cookie_t cookie;
+   xcb_get_window_attributes_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieves the attributes of a window.
+ * @param windows Unused.
+ * @param att_ret Pointer to an Ecore_X_Window_Attributes
+ *                  structure in which the attributes of a window
+ *                  are to be stored.
+ *
+ * Retrieves the attributes of a window. If
+ * @p att_ret is @c NULL, the function does nothing. If an error
+ * occurred, @p att_ret is set to 0. Otherwise, the @p att_ret structure
+ * is filled with the attributes os the requested window.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_window_attributes_prefetch(), which sends the GetWindowAttributes request,
+ * then ecore_x_get_window_attributes_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Get_Attributes_Group
+ */
+EAPI int
+ecore_x_window_attributes_get(Ecore_X_Window             window __UNUSED__,
+                              Ecore_X_Window_Attributes *att_ret)
+{
+   xcb_get_window_attributes_reply_t *reply;
+
+   if (!att_ret) return 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   memset(att_ret, 0, sizeof(Ecore_X_Window_Attributes));
+
+   if (reply->map_state != XCB_MAP_STATE_UNMAPPED) att_ret->visible = 1;
+   if (reply->map_state == XCB_MAP_STATE_VIEWABLE) att_ret->viewable = 1;
+   if (reply->override_redirect) att_ret->override = 1;
+   if (reply->_class == XCB_WINDOW_CLASS_INPUT_ONLY) att_ret->input_only = 1;
+   if (reply->save_under) att_ret->save_under = 1;
+
+   att_ret->event_mask.mine         = reply->your_event_mask;
+   att_ret->event_mask.all          = reply->all_event_masks;
+   att_ret->event_mask.no_propagate = reply->do_not_propagate_mask;
+   att_ret->window_gravity          = reply->win_gravity;
+   att_ret->pixel_gravity           = reply->bit_gravity;
+   att_ret->colormap                = reply->colormap;
+   att_ret->visual                  = reply->visual;
+
+   return 1;
+}
+
+/**
+ * Finds out whether the given window is currently visible.
+ * @param  window Unused.
+ * @return        1 if the window is visible, otherwise 0.
+ *
+ * Finds out whether the given window is currently visible.
+ * If an error occurred, or if the window is not visible, 0 is
+ * returned. Otherwise 1 is returned.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_get_window_attributes_prefetch(), which sends the GetWindowAttributes request,
+ * then ecore_x_get_window_attributes_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Get_Attributes_Group
+ */
+EAPI int
+ecore_x_window_visible_get(Ecore_X_Window window __UNUSED__)
+{
+   xcb_get_window_attributes_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   return (reply->map_state == XCB_MAP_STATE_VIEWABLE) ? 1 : 0;
+}
+
+
+/**
+ * Sends the QueryPointer request.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_pointer_xy_get_prefetch(Ecore_X_Window window)
+{
+   xcb_query_pointer_cookie_t cookie;
+
+   cookie = xcb_query_pointer_unchecked(_ecore_xcb_conn, window);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the QueryPointer request sent by ecore_x_query_pointer_prefetch().
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_pointer_xy_get_fetch(void)
+{
+   xcb_query_pointer_cookie_t cookie;
+   xcb_query_pointer_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_query_pointer_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieves the coordinates of the pointer.
+ * @param window Unused.
+ * @param x      The X coordinate of the pointer.
+ * @param y      The Y coordinate of the pointer.
+ *
+ * Retrieves the coordinates of the pointer.
+ * If the window used in
+ * ecore_x_query_pointer_prefetch() is not on the same screen than
+ * the root window or if an error occured, @p x and @p y  are set
+ * to 0. Otherwise, they are respectively set to the X and Y
+ * coordinates of the pointer.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_query_pointer_prefetch(), which sends the QueryPointer request,
+ * then ecore_x_query_pointer_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_pointer_xy_get(Ecore_X_Window window __UNUSED__,
+                       int           *x,
+                       int           *y)
+{
+   xcb_query_pointer_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     {
+       if (x) *x = 0;
+       if (y) *y = 0;
+
+       return;
+     }
+
+   if (x) *x = reply->win_x;
+   if (y) *y = reply->win_y;
+}
+
+
+/**
+ * Sends the QueryTree request.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_query_tree_prefetch(Ecore_X_Window window)
+{
+   xcb_query_tree_cookie_t cookie;
+
+   cookie = xcb_query_tree_unchecked(_ecore_xcb_conn, window);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+/**
+ * Gets the reply of the QueryTree request sent by ecore_x_query_tree_prefetch().
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_query_tree_fetch(void)
+{
+   xcb_query_tree_cookie_t cookie;
+   xcb_query_tree_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_query_tree_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Retrieves the parent window of the given window.
+ * @param   window Unused.
+ * @return         The parent window of @p window.
+ *
+ * Retrieves the parent window of the given window. If
+ * an error occured, @c 0 is returned.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_query_tree_prefetch(), which sends the QueryTree request,
+ * then ecore_x_query_tree_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_parent_get(Ecore_X_Window window __UNUSED__)
+{
+   xcb_query_tree_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   return reply->parent;
+}
+
+
+/**
+ * Retrieves the children windows of the given window.
+ * @param   window Unused.
+ * @param   num    children windows count.
+ * @return         The children windows.
+ *
+ * Retrieves the children windows of the given window. If
+ * an error occured, @c 0 is returned.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_query_tree_prefetch(), which sends the QueryTree request,
+ * then ecore_x_query_tree_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI Ecore_X_Window *
+ecore_x_window_children_get(Ecore_X_Window window __UNUSED__,
+                            int           *num)
+{
+   xcb_query_tree_reply_t *reply;
+   Ecore_X_Window         *windows = NULL;
+
+   if (num) *num = 0;
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return NULL;
+
+   windows = malloc(reply->children_len);
+   if (!windows)
+     return NULL;
+
+   if (num) *num = reply->children_len;
+   memcpy(windows,
+          xcb_query_tree_children(reply),
+          sizeof(Ecore_X_Window) * reply->children_len);
+
+   return windows;
+}
+
+/* FIXME: I've tried to remove the round trips. 3 cookies are */
+/*        created at the beginning of the function. Because of */
+/*        the recursivity of the algo, I can't find better trick */
+static Ecore_X_Window
+_ecore_x_window_at_xy_get(Ecore_X_Window  base,
+                          int16_t         base_x,
+                          int16_t         base_y,
+                          int16_t         x,
+                          int16_t         y,
+                          Ecore_X_Window *skip,
+                          int             skip_num)
+{
+   xcb_window_iterator_t              iter_children;
+   xcb_get_window_attributes_cookie_t cookie_get_window_attributes;
+   xcb_get_geometry_cookie_t          cookie_get_geometry;
+   xcb_query_tree_cookie_t            cookie_query_tree;
+   xcb_get_window_attributes_reply_t *reply_get_window_attributes;
+   xcb_get_geometry_reply_t          *reply_get_geometry;
+   xcb_query_tree_reply_t            *reply_query_tree;
+   Ecore_X_Window                     window = 0;
+   Ecore_X_Window                     child = 0;
+   int16_t                            win_x;
+   int16_t                            win_y;
+   uint16_t                           win_width;
+   uint16_t                           win_height;
+
+   cookie_get_window_attributes = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, base);
+   cookie_get_geometry = xcb_get_geometry_unchecked(_ecore_xcb_conn, base);
+   cookie_query_tree = xcb_query_tree_unchecked(_ecore_xcb_conn, base);
+
+   reply_get_window_attributes = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie_get_window_attributes, NULL);
+   if (!reply_get_window_attributes)
+     {
+       reply_get_geometry = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_get_geometry, NULL);
+       if (reply_get_geometry) free(reply_get_geometry);
+       reply_query_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_query_tree, NULL);
+       if (reply_query_tree) free(reply_query_tree);
+       return window;
+     }
+
+   if (reply_get_window_attributes->map_state != XCB_MAP_STATE_VIEWABLE)
+     {
+       free(reply_get_window_attributes);
+       reply_get_geometry = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_get_geometry, NULL);
+       if (reply_get_geometry) free(reply_get_geometry);
+       reply_query_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_query_tree, NULL);
+       if (reply_query_tree) free(reply_query_tree);
+       return window;
+     }
+
+   free(reply_get_window_attributes);
+
+   reply_get_geometry = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_get_geometry, NULL);
+   if (!reply_get_geometry)
+     {
+       reply_query_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_query_tree, NULL);
+       if (reply_query_tree) free(reply_query_tree);
+       return window;
+     }
+
+   win_x = reply_get_geometry->x;
+   win_y = reply_get_geometry->y;
+   win_width = reply_get_geometry->width;
+   win_height = reply_get_geometry->height;
+
+   free(reply_get_geometry);
+
+   win_x += base_x;
+   win_y += base_y;
+
+   if (!((x >= win_x) &&
+         (y >= win_y) &&
+         (x < (int16_t)(win_x + win_width)) &&
+         (y < (int16_t)(win_y + win_height))))
+     {
+       reply_query_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_query_tree, NULL);
+       if (reply_query_tree) free(reply_query_tree);
+       return window;
+     }
+
+   reply_query_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_query_tree, NULL);
+   if (!reply_query_tree)
+     {
+        if (skip)
+         {
+             int i;
+
+            for (i = 0; i < skip_num; i++)
+              if (base == skip[i])
+                return window;
+         }
+       return base;
+     }
+
+   iter_children = xcb_query_tree_children_iterator(reply_query_tree);
+   for (; iter_children.rem; xcb_window_next(&iter_children))
+     {
+        if (skip)
+          {
+             int j;
+
+             for (j = 0; j < skip_num; j++)
+               if (*iter_children.data == skip[j])
+                 continue;
+          }
+        child = _ecore_x_window_at_xy_get(*iter_children.data, win_x, win_y, x, y, skip, skip_num);
+        if (child)
+          {
+             free(reply_query_tree);
+
+             return child;
+          }
+     }
+
+   if (skip)
+     {
+        int i;
+
+       for (i = 0; i < skip_num; i++)
+         if (base == skip[i])
+            {
+               /* We return 0. child has an xid equal to 0 */
+               free(reply_query_tree);
+               return child;
+            }
+     }
+
+   free(reply_query_tree);
+
+   return base;
+}
+
+/**
+ * @defgroup Ecore_X_Window_Geometry_Group X Window Geometry Functions
+ *
+ * Functions that change or retrieve the geometry of X windows.
+ */
+
+/**
+ * Retrieves the top, visible window at the given location.
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return    The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_get(int x,
+                           int y)
+{
+   Ecore_X_Window window;
+   Ecore_X_Window root;
+
+   /* FIXME: Proper function to determine current root/virtual root
+    * window missing here */
+   root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ecore_x_grab();
+   window = _ecore_x_window_at_xy_get(root, 0, 0, x, y, NULL, 0);
+   ecore_x_ungrab();
+
+   return window ? window : root;
+}
+
+/**
+ * Retrieves the top, visible window at the given location,
+ * but skips the windows in the list.
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return    The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_with_skip_get(int             x,
+                                     int             y,
+                                     Ecore_X_Window *skip,
+                                     int             skip_num)
+{
+   Ecore_X_Window window;
+   Ecore_X_Window root;
+
+   /* FIXME: Proper function to determine current root/virtual root
+    * window missing here */
+   root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ecore_x_grab();
+   window = _ecore_x_window_at_xy_get(root, 0, 0, x, y, skip, skip_num);
+   ecore_x_ungrab();
+
+   return window ? window : root;
+}
+
+/**
+ * Retrieves the top, visible window at the given location,
+ * but begins at the @p begin window instead of the root one.
+ * @param   begin The window from which we begin.
+ * @param   x     The given X position.
+ * @param   y     The given Y position.
+ * @return        The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_begin_get(Ecore_X_Window begin,
+                               int            x,
+                               int            y)
+{
+   Ecore_X_Window window;
+
+   ecore_x_grab();
+   window = _ecore_x_window_at_xy_get(begin, 0, 0, x, y, NULL, 0);
+   ecore_x_ungrab();
+
+   return window ? window : begin;
+}
+
+
+
+/* FIXME: Should I provide the replies (or the cookies), instead of
+          creating them in the function ? */
+#ifdef ECORE_XCB_RENDER
+static Ecore_X_Window
+_ecore_x_window_argb_internal_new(Ecore_X_Window parent,
+                                  int16_t        x,
+                                  int16_t        y,
+                                  uint16_t       w,
+                                  uint16_t       h,
+                                  uint8_t        override_redirect,
+                                  uint8_t        save_under)
+{
+   uint32_t                               value_list[10];
+   xcb_depth_iterator_t                   iter_depth;
+   xcb_visualtype_iterator_t              iter_visualtype;
+   xcb_render_query_pict_formats_cookie_t cookie_pict_format;
+   xcb_render_query_pict_formats_reply_t *rep_pict_format;
+   Ecore_X_Screen                        *screen = NULL;
+   Ecore_X_Window                         win = { 0 };
+   xcb_visualid_t                         vis = { 0 };
+   Ecore_X_Colormap                       colormap;
+   uint32_t                               value_mask;
+
+   cookie_pict_format = xcb_render_query_pict_formats_unchecked(_ecore_xcb_conn);
+
+   if (parent == 0)
+     {
+        parent = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+       screen = ((xcb_screen_t *)_ecore_xcb_screen);
+     }
+   else
+     {
+        xcb_screen_iterator_t     iter_screen;
+        xcb_get_geometry_reply_t *rep;
+        Ecore_X_Drawable        draw;
+        Ecore_X_Window          root;
+
+        draw = parent;
+        rep = xcb_get_geometry_reply(_ecore_xcb_conn,
+                                     xcb_get_geometry_unchecked(_ecore_xcb_conn,
+                                                                draw),
+                                     NULL);
+        if (!rep)
+          return win;
+
+        root = rep->root;
+
+        free(rep);
+
+        for (; iter_screen.rem; xcb_screen_next(&iter_screen))
+          {
+             if (iter_screen.data->root == root)
+               {
+                 screen = iter_screen.data;
+               }
+          }
+     }
+   if (!screen)
+     return win;
+
+   /* we get the X visual types */
+   iter_depth = xcb_screen_allowed_depths_iterator(screen);
+   for (; iter_depth.rem; xcb_depth_next(&iter_depth)) {
+       if (iter_depth.data->depth == 32) {
+            iter_visualtype = xcb_depth_visuals_iterator(iter_depth.data);
+            break;
+       }
+   }
+
+   /* we get the X render visual id */
+   rep_pict_format = xcb_render_query_pict_formats_reply(_ecore_xcb_conn,
+                                                         cookie_pict_format,
+                                                         NULL);
+   if (!rep_pict_format)
+     return win;
+
+   for (; iter_visualtype.rem; xcb_visualtype_next(&iter_visualtype)) {
+      if (iter_visualtype.data->_class == XCB_VISUAL_CLASS_TRUE_COLOR) {
+         xcb_render_pictforminfo_iterator_t iter_forminfo;
+         xcb_render_pictscreen_iterator_t   iter_pictscreen;
+         xcb_render_pictformat_t            pict_format = { 0 };
+
+         iter_forminfo = xcb_render_query_pict_formats_formats_iterator(rep_pict_format);
+         for (; iter_forminfo.rem; xcb_render_pictforminfo_next(&iter_forminfo)) {
+            if (iter_forminfo.data->type == XCB_RENDER_PICT_TYPE_DIRECT &&
+                iter_forminfo.data->direct.alpha_mask && iter_forminfo.data->depth == 32) {
+               pict_format = iter_forminfo.data->id;
+               break;
+            }
+         }
+         if (pict_format == 0) {
+            free(rep_pict_format);
+            return win;
+         }
+         iter_pictscreen = xcb_render_query_pict_formats_screens_iterator(rep_pict_format);
+         for (; iter_pictscreen.rem; xcb_render_pictscreen_next(&iter_pictscreen)) {
+            xcb_render_pictdepth_iterator_t iter_depth;
+
+            iter_depth = xcb_render_pictscreen_depths_iterator(iter_pictscreen.data);
+            for (; iter_depth.rem; xcb_render_pictdepth_next(&iter_depth)) {
+               xcb_render_pictvisual_iterator_t iter_visual;
+
+               iter_visual = xcb_render_pictdepth_visuals_iterator(iter_depth.data);
+               for (; iter_visual.rem; xcb_render_pictvisual_next(&iter_visual)) {
+                  if ((iter_visual.data->visual == iter_visualtype.data->visual_id) &&
+                      (pict_format == iter_visual.data->format)) {
+                    vis = iter_visual.data->visual;
+                    break;
+                  }
+               }
+            }
+         }
+      }
+   }
+
+   free(rep_pict_format);
+
+   if (vis == 0)
+     return win;
+
+   colormap = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_colormap(_ecore_xcb_conn, XCB_COLORMAP_ALLOC_NONE, colormap, parent, vis);
+
+   value_mask =
+     XCB_CW_BACK_PIXMAP | XCB_CW_BORDER_PIXEL  | XCB_CW_BIT_GRAVITY       |
+     XCB_CW_WIN_GRAVITY | XCB_CW_BACKING_STORE | XCB_CW_OVERRIDE_REDIRECT |
+     XCB_CW_SAVE_UNDER  | XCB_CW_EVENT_MASK    | XCB_CW_DONT_PROPAGATE    |
+     XCB_CW_COLORMAP;
+
+   value_list[0]  = XCB_NONE;
+   value_list[1]  = 0;
+   value_list[2]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[3]  = XCB_GRAVITY_NORTH_WEST;
+   value_list[4]  = XCB_BACKING_STORE_NOT_USEFUL;
+   value_list[5]  = override_redirect;
+   value_list[6]  = save_under;
+   value_list[7]  =
+     XCB_EVENT_MASK_KEY_PRESS         | XCB_EVENT_MASK_KEY_RELEASE      |
+     XCB_EVENT_MASK_BUTTON_PRESS      | XCB_EVENT_MASK_BUTTON_RELEASE   |
+     XCB_EVENT_MASK_ENTER_WINDOW      | XCB_EVENT_MASK_LEAVE_WINDOW     |
+     XCB_EVENT_MASK_POINTER_MOTION    | XCB_EVENT_MASK_EXPOSURE        |
+     XCB_EVENT_MASK_VISIBILITY_CHANGE | XCB_EVENT_MASK_STRUCTURE_NOTIFY |
+     XCB_EVENT_MASK_FOCUS_CHANGE      | XCB_EVENT_MASK_PROPERTY_CHANGE  |
+     XCB_EVENT_MASK_COLOR_MAP_CHANGE;
+   value_list[8]  = XCB_EVENT_MASK_NO_EVENT;
+   value_list[9]  = colormap;
+
+   win = xcb_generate_id(_ecore_xcb_conn);
+   xcb_create_window(_ecore_xcb_conn,
+                     32, /* depth */
+                     win, parent,
+                     x, y, w, h, 0,
+                     XCB_WINDOW_CLASS_INPUT_OUTPUT,
+                     vis,
+                     value_mask,
+                     value_list);
+
+   xcb_free_colormap(_ecore_xcb_conn, colormap);
+
+   if (parent == ((xcb_screen_t *)_ecore_xcb_screen)->root)
+     ecore_x_window_defaults_set(win);
+
+   return win;
+}
+#endif /* ECORE_XCB_RENDER */
+
+
+
+/* FIXME: round trip */
+EAPI int
+ecore_x_window_argb_get(Ecore_X_Window win)
+{
+   uint8_t                                ret = 0;
+#ifdef ECORE_XCB_RENDER
+   xcb_render_pictforminfo_iterator_t     iter_forminfo;
+   xcb_render_pictscreen_iterator_t       iter_pictscreen;
+   xcb_render_pictformat_t                pict_format = { 0 };
+   xcb_render_query_pict_formats_reply_t *rep_pictformat;
+   xcb_get_window_attributes_reply_t     *rep;
+   xcb_visualid_t                         visual;
+
+   rep = xcb_get_window_attributes_reply(_ecore_xcb_conn,
+                                         xcb_get_window_attributes_unchecked(_ecore_xcb_conn,
+                                                                             win),
+                                         NULL);
+   if (!rep)
+     return ret;
+
+   visual = rep->visual;
+
+   free(rep);
+
+   rep_pictformat = xcb_render_query_pict_formats_reply(_ecore_xcb_conn,
+                                                        xcb_render_query_pict_formats_unchecked(_ecore_xcb_conn),
+                                                        NULL);
+   if (!rep_pictformat)
+     return ret;
+
+   iter_forminfo = xcb_render_query_pict_formats_formats_iterator(rep_pictformat);
+   for (; iter_forminfo.rem; xcb_render_pictforminfo_next(&iter_forminfo))
+     {
+        if ((iter_forminfo.data->type == XCB_RENDER_PICT_TYPE_DIRECT) &&
+            (iter_forminfo.data->direct.alpha_mask))
+          {
+             pict_format = iter_forminfo.data->id;
+             break;
+          }
+     }
+   if (pict_format == 0)
+     {
+        free(rep_pictformat);
+
+        return ret;
+     }
+
+   iter_pictscreen = xcb_render_query_pict_formats_screens_iterator(rep_pictformat);
+   for (; iter_pictscreen.rem; xcb_render_pictscreen_next(&iter_pictscreen))
+     {
+        xcb_render_pictdepth_iterator_t iter_depth;
+
+        iter_depth = xcb_render_pictscreen_depths_iterator(iter_pictscreen.data);
+        for (; iter_depth.rem; xcb_render_pictdepth_next(&iter_depth))
+          {
+             xcb_render_pictvisual_iterator_t iter_visual;
+
+             iter_visual = xcb_render_pictdepth_visuals_iterator(iter_depth.data);
+             for (; iter_visual.rem; xcb_render_pictvisual_next(&iter_visual))
+               {
+                  if ((iter_visual.data->visual == visual) &&
+                      (pict_format == iter_visual.data->format))
+                    {
+                       ret = 1;
+                       break;
+                    }
+               }
+          }
+     }
+
+   free(rep_pictformat);
+#endif /* ECORE_XCB_RENDER */
+
+   return ret;
+}
+
+
+
+
+/**
+ * Set if a window should be ignored.
+ * @param   window The given window.
+ * @param   ignore if to ignore
+ */
+EAPI void
+ecore_x_window_ignore_set(Ecore_X_Window window,
+                          int            ignore)
+{
+   int i, j;
+
+   if (ignore)
+     {
+       if (ignore_list)
+         {
+            for (i = 0; i < ignore_num; i++)
+              {
+                 if (window == ignore_list[i])
+                   return;
+              }
+            ignore_list = realloc(ignore_list, (ignore_num + 1) * sizeof(Ecore_X_Window));
+            if (!ignore_list) return;
+            ignore_list[ignore_num++] = window;
+         }
+       else
+         {
+            ignore_num = 0;
+            ignore_list = malloc(sizeof(Ecore_X_Window));
+            ignore_list[ignore_num++] = window;
+         }
+     }
+   else
+     {
+       if (!ignore_list) return;
+       for (i = 0, j = 0; i < ignore_num; i++)
+         {
+            if (window != ignore_list[i])
+              ignore_list[i] = ignore_list[j++];
+            else
+              ignore_num--;
+         }
+       ignore_list = realloc(ignore_list, ignore_num * sizeof(Ecore_X_Window));
+     }
+}
+
+/**
+ * Get the ignore list
+ * @param   num number of windows in the list
+ * @return  list of windows to ignore
+ */
+EAPI Ecore_X_Window *
+ecore_x_window_ignore_list(int *num)
+{
+   if (num) *num = ignore_num;
+   return ignore_list;
+}
+
+/**
+ * Retrieves the size of the given window.
+ * @param   win The given window.
+ * @param   w   Pointer to an integer into which the width is to be stored.
+ * @param   h   Pointer to an integer into which the height is to be stored.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_drawable_geometry_get_prefetch(), which sends the GetGeometry request,
+ * then ecore_x_drawable_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_size_get(Ecore_X_Window window,
+                        int           *width,
+                        int           *height)
+{
+   if (window == 0)
+      window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ecore_x_drawable_geometry_get(window, NULL, NULL, width, height);
+}
+
+/**
+ * Retrieves the geometry of the given window.
+ * @param   win The given window.
+ * @param   x   Pointer to an integer in which the X position is to be stored.
+ * @param   y   Pointer to an integer in which the Y position is to be stored.
+ * @param   w   Pointer to an integer in which the width is to be stored.
+ * @param   h   Pointer to an integer in which the height is to be stored.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_drawable_geometry_get_prefetch(), which sends the GetGeometry request,
+ * then ecore_x_drawable_geometry_get_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_geometry_get(Ecore_X_Window window,
+                            int           *x,
+                            int           *y,
+                            int           *width,
+                            int           *height)
+{
+   if (!window)
+      window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+
+   ecore_x_drawable_geometry_get(window, x, y, width, height);
+}
+
+/**
+ * Retrieves the width of the border of the given window.
+ * @param   win The given window.
+ * @return  Width of the border of @p win.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI int
+ecore_x_window_border_width_get(Ecore_X_Window win)
+{
+   /* doesn't make sense to call this on a root window */
+   if (!win)
+      return 0;
+
+   return ecore_x_drawable_border_width_get(win);
+}
+
+/**
+ * Retrieves the depth of the given window.
+ * @param  win The given window.
+ * @return Depth of the window.
+ */
+EAPI int
+ecore_x_window_depth_get(Ecore_X_Window win)
+{
+   return ecore_x_drawable_depth_get(win);
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c b/src/lib/ecore_x/xcb/ecore_xcb_window_prop.c
new file mode 100644 (file)
index 0000000..c7b81af
--- /dev/null
@@ -0,0 +1,871 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+#include "Ecore_X_Atoms.h"
+
+
+/*
+ * Set CARD32 (array) property
+ */
+EAPI void
+ecore_x_window_prop_card32_set(Ecore_X_Window win,
+                               Ecore_X_Atom   atom,
+                              unsigned int  *val,
+                               unsigned int   num)
+{
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
+                       atom, ECORE_X_ATOM_CARDINAL, 32, num, (const void *)val);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @param atom   The atom.
+ */
+EAPI void
+ecore_x_window_prop_card32_get_prefetch(Ecore_X_Window window,
+                                        Ecore_X_Atom atom)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window,
+                                       atom,
+                                       ECORE_X_ATOM_CARDINAL,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_card32_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_card32_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * Get CARD32 (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_card32_get(Ecore_X_Window win __UNUSED__,
+                               Ecore_X_Atom   atom __UNUSED__,
+                              unsigned int  *val,
+                               unsigned int   len)
+{
+   xcb_get_property_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply ||
+       (reply->type != ECORE_X_ATOM_CARDINAL) ||
+       (reply->format != 32))
+      return -1;
+
+   if (reply->value_len < len)
+     len = xcb_get_property_value_length(reply);
+
+   if (val)
+      memcpy(val, xcb_get_property_value(reply), len);
+
+   return (int)len;
+}
+
+/*
+ * Get CARD32 (array) property of any length
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_card32_list_get(Ecore_X_Window win __UNUSED__,
+                                    Ecore_X_Atom   atom __UNUSED__,
+                                   unsigned int **plist)
+{
+   xcb_get_property_reply_t *reply;
+   int                       num = -1;
+
+   if (plist)
+      *plist = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return -1;
+
+   if ((reply->type == XCB_NONE) ||
+       (reply->value_len == 0))
+      num = 0;
+   else if ((reply->type == ECORE_X_ATOM_CARDINAL) &&
+            (reply->format == 32))
+     {
+       uint32_t *val;
+
+       num = xcb_get_property_value_length(reply);
+       if (plist)
+         {
+            val = (uint32_t *)malloc (num);
+            if (!val)
+               goto error;
+
+            memcpy(val, xcb_get_property_value(reply), num);
+            *plist = val;
+         }
+     }
+
+ error:
+
+   return num;
+}
+
+/*
+ * Set X ID (array) property
+ */
+EAPI void
+ecore_x_window_prop_xid_set(Ecore_X_Window win,
+                            Ecore_X_Atom   atom,
+                           Ecore_X_Atom   type,
+                            Ecore_X_ID    *xids,
+                           unsigned int   num)
+{
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
+                       atom, type, 32, num, xids);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @param atom   The atom.
+ * @param type   The atom type.
+ */
+EAPI void
+ecore_x_window_prop_xid_get_prefetch(Ecore_X_Window window,
+                                     Ecore_X_Atom   atom,
+                                     Ecore_X_Atom   type)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window,
+                                       atom,
+                                       type,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_xid_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_xid_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * Get X ID (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_xid_get(Ecore_X_Window win __UNUSED__,
+                            Ecore_X_Atom   atom __UNUSED__,
+                           Ecore_X_Atom   type __UNUSED__,
+                            Ecore_X_ID    *xids,
+                           unsigned int   len)
+{
+   xcb_get_property_reply_t *reply;
+   int                       num = len;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return -1;
+
+   if (reply->type == XCB_NONE)
+      num = 0;
+   else if (reply->format == 32)
+     {
+        if (reply->value_len < len)
+          num = xcb_get_property_value_length(reply);
+
+        if (xids)
+           memcpy(xids, xcb_get_property_value(reply), num);
+     }
+
+   return num;
+}
+
+/*
+ * Get X ID (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_xid_list_get(Ecore_X_Window win __UNUSED__,
+                                 Ecore_X_Atom   atom __UNUSED__,
+                                Ecore_X_Atom   type __UNUSED__,
+                                 Ecore_X_ID   **pxids)
+{
+   xcb_get_property_reply_t *reply;
+   int                       num = -1;
+
+   if (pxids)
+      *pxids = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return -1;
+
+   if ((reply->type == XCB_NONE) ||
+       (reply->value_len == 0))
+      num = 0;
+   else if ((reply->type == ECORE_X_ATOM_CARDINAL) &&
+            (reply->format == 32))
+     {
+       uint32_t *val;
+
+       num = xcb_get_property_value_length(reply);
+       if (pxids)
+         {
+            val = (uint32_t *)malloc (num);
+            if (!val)
+               return -1;
+
+            memcpy(val, xcb_get_property_value(reply), num);
+            *pxids = val;
+         }
+     }
+
+   return num;
+}
+
+/*
+ * Remove/add/toggle X ID list item.
+ */
+EAPI void
+ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
+                                    Ecore_X_Atom   atom,
+                                    Ecore_X_Atom   type,
+                                    Ecore_X_ID     item,
+                                    int            op)
+{
+   Ecore_X_ID *lst;
+   int         i;
+   int         num;
+
+   num = ecore_x_window_prop_xid_list_get(win, atom, type, &lst);
+   if (num < 0)
+      return;                  /* Error - assuming invalid window */
+
+   /* Is it there? */
+   for (i = 0; i < num; i++)
+     {
+       if (lst[i] == item)
+          break;
+     }
+
+   if (i < num)
+     {
+       /* Was in list */
+       if (op == ECORE_X_PROP_LIST_ADD)
+          goto done;
+       /* Remove it */
+       num--;
+       for (; i < num; i++)
+          lst[i] = lst[i + 1];
+     }
+   else
+     {
+       /* Was not in list */
+       if (op == ECORE_X_PROP_LIST_REMOVE)
+          goto done;
+       /* Add it */
+       num++;
+       lst = realloc(lst, num * sizeof(Ecore_X_ID));
+       lst[i] = item;
+     }
+
+   ecore_x_window_prop_xid_set(win, atom, type, lst, num);
+
+ done:
+   if (lst)
+      free(lst);
+}
+
+/*
+ * Set Atom (array) property
+ */
+EAPI void
+ecore_x_window_prop_atom_set(Ecore_X_Window win,
+                             Ecore_X_Atom   atom,
+                             Ecore_X_Atom  *list,
+                             unsigned int   num)
+{
+   ecore_x_window_prop_xid_set(win, atom, ECORE_X_ATOM_ATOM, list, num);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @param atom   Property atom.
+ */
+EAPI void
+ecore_x_window_prop_atom_get_prefetch(Ecore_X_Window window,
+                                      Ecore_X_Atom   atom)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window,
+                                       atom,
+                                       ECORE_X_ATOM_ATOM,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_atom_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_atom_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * Get Atom (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_atom_get(Ecore_X_Window win,
+                             Ecore_X_Atom   atom,
+                             Ecore_X_Atom  *list,
+                             unsigned int len)
+{
+   return ecore_x_window_prop_xid_get(win, atom, ECORE_X_ATOM_ATOM, list, len);
+}
+
+/*
+ * Get Atom (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
+                                  Ecore_X_Atom   atom,
+                                  Ecore_X_Atom **plist)
+{
+   return ecore_x_window_prop_xid_list_get(win, atom, ECORE_X_ATOM_ATOM, plist);
+}
+
+/*
+ * Remove/add/toggle atom list item.
+ */
+EAPI void
+ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
+                                     Ecore_X_Atom   atom,
+                                     Ecore_X_Atom   item,
+                                     int            op)
+{
+   ecore_x_window_prop_xid_list_change(win, atom, ECORE_X_ATOM_ATOM, item, op);
+}
+
+/*
+ * Set Window (array) property
+ */
+EAPI void
+ecore_x_window_prop_window_set(Ecore_X_Window  win,
+                               Ecore_X_Atom    atom,
+                               Ecore_X_Window *list,
+                               unsigned int    num)
+{
+   ecore_x_window_prop_xid_set(win, atom, ECORE_X_ATOM_WINDOW, list, num);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @param atom   The atom.
+ */
+EAPI void
+ecore_x_window_prop_window_get_prefetch(Ecore_X_Window window,
+                                        Ecore_X_Atom   atom)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window,
+                                       atom,
+                                       ECORE_X_ATOM_WINDOW,
+                                       0, 0x7fffffff);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_window_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_window_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/*
+ * Get Window (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_window_get(Ecore_X_Window  win,
+                               Ecore_X_Atom    atom,
+                               Ecore_X_Window *list,
+                               unsigned int    len)
+{
+   return ecore_x_window_prop_xid_get(win, atom, ECORE_X_ATOM_WINDOW, list, len);
+}
+
+/*
+ * Get Window (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_window_list_get(Ecore_X_Window   win,
+                                    Ecore_X_Atom     atom,
+                                    Ecore_X_Window **plist)
+{
+   return ecore_x_window_prop_xid_list_get(win, atom, ECORE_X_ATOM_WINDOW, plist);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Atom
+ecore_x_window_prop_any_type(void)
+{
+   return XCB_GET_PROPERTY_TYPE_ANY;
+}
+
+/**
+ * To be documented.
+ * @param window   The window.
+ * @param property The property atom.
+ * @param type     The type atom.
+ * @param size     The size.
+ * @param data     The data.
+ * @param number   The size of the data.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_x_window_prop_property_set(Ecore_X_Window window,
+                                 Ecore_X_Atom   property,
+                                 Ecore_X_Atom   type,
+                                 int            size,
+                                 void          *data,
+                                 int            number)
+{
+   if (window == 0) window = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, window,
+                       property, type,
+                       size, number, data);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window   Window whose properties are requested.
+ * @param property Property atom.
+ * @param type     Type atom.
+ */
+EAPI void
+ecore_x_window_prop_property_get_prefetch(Ecore_X_Window window,
+                                          Ecore_X_Atom   property,
+                                          Ecore_X_Atom   type)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       property, type, 0, LONG_MAX);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_property_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_property_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * To be documented.
+ * @param window   The window (Unused).
+ * @param property The property atom (Unused).
+ * @param type     The type atom (Unused).
+ * @param size     The size (Unused).
+ * @param data     The returned data.
+ * @param num      The size of the data.
+ * @return         1 on success, 0 otherwise.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_x_window_prop_property_get(Ecore_X_Window  window __UNUSED__,
+                                 Ecore_X_Atom    property __UNUSED__,
+                                 Ecore_X_Atom    type __UNUSED__,
+                                 int             size __UNUSED__,
+                                 unsigned char **data,
+                                 int            *num)
+{
+   xcb_get_property_reply_t *reply;
+
+   /* make sure these are initialized */
+   if (num) *num = 0L;
+
+   if (data)
+     *data = NULL;
+   else /* we can't store the retrieved data, so just return */
+     return 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return 0;
+
+   if ((reply->format != size) ||
+       (reply->value_len == 0))
+      return 0;
+
+   *data = malloc(reply->value_len);
+   if (!*data)
+      return 0;
+
+   memcpy(*data, xcb_get_property_value(reply), 
+          xcb_get_property_value_length(reply));
+
+   if (num)
+      *num = reply->value_len;
+
+   return reply->format;
+}
+
+EAPI void
+ecore_x_window_prop_property_del(Ecore_X_Window window,
+                                 Ecore_X_Atom   property)
+{
+   xcb_delete_property(_ecore_xcb_conn, window, property);
+}
+
+/**
+ * Sends the ListProperties request.
+ * @param window Window whose properties are requested.
+ */
+EAPI void
+ecore_x_window_prop_list_prefetch(Ecore_X_Window window)
+{
+   xcb_list_properties_cookie_t cookie;
+
+   cookie = xcb_list_properties_unchecked(_ecore_xcb_conn, window);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the ListProperties request sent by ecore_x_window_prop_list_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_list_fetch(void)
+{
+   xcb_list_properties_cookie_t cookie;
+   xcb_list_properties_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_list_properties_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+
+/**
+ * To be documented.
+ * @param window  The window (Unused).
+ * @param num_ret The number of atoms.
+ * @return        The returned atoms.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Atom *
+ecore_x_window_prop_list(Ecore_X_Window window __UNUSED__,
+                         int           *num_ret)
+{
+   xcb_list_properties_reply_t *reply;
+   Ecore_X_Atom                *atoms;
+
+   if (num_ret) *num_ret = 0;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+      return NULL;
+
+   atoms = (Ecore_X_Atom *)malloc(reply->atoms_len * sizeof(Ecore_X_Atom));
+   if (!atoms)
+      return NULL;
+   memcpy(atoms,
+          xcb_list_properties_atoms(reply),
+          reply->atoms_len * sizeof(Ecore_X_Atom));
+   if(num_ret)
+     *num_ret = reply->atoms_len;
+
+   return atoms;
+}
+
+/**
+ * Set a window string property.
+ * @param win The window
+ * @param type The property
+ * @param str The string
+ *
+ * Set a window string property
+ */
+EAPI void
+ecore_x_window_prop_string_set(Ecore_X_Window win,
+                               Ecore_X_Atom   type,
+                               const char    *str)
+{
+   if (win == 0) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
+   xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
+                     type, ECORE_X_ATOM_UTF8_STRING,
+                     8, strlen(str), str);
+}
+
+/**
+ * Sends the GetProperty request.
+ * @param window Window whose properties are requested.
+ * @param type   The atom.
+ */
+EAPI void
+ecore_x_window_prop_string_get_prefetch(Ecore_X_Window window,
+                                        Ecore_X_Atom   type)
+{
+   xcb_get_property_cookie_t cookie;
+
+   cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0,
+                                       window ? window : ((xcb_screen_t *)_ecore_xcb_screen)->root,
+                                       type, XCB_GET_PROPERTY_TYPE_ANY, 0L, 1000000L);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+}
+
+
+/**
+ * Gets the reply of the GetProperty request sent by ecore_x_window_prop_string_get_prefetch().
+ */
+EAPI void
+ecore_x_window_prop_string_get_fetch(void)
+{
+   xcb_get_property_cookie_t cookie;
+   xcb_get_property_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+}
+
+/**
+ * Get a window string property.
+ * @param window The window
+ * @param type The property
+ *
+ * Return window string property of a window. String must be free'd when done.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_window_prop_string_get_prefetch(), which sends the GetProperty request,
+ * then ecore_x_window_prop_string_get_fetch(), which gets the reply.
+ */
+EAPI char *
+ecore_x_window_prop_string_get(Ecore_X_Window window __UNUSED__,
+                               Ecore_X_Atom   type __UNUSED__)
+{
+   xcb_get_property_reply_t *reply;
+   char                     *str = NULL;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     return NULL;
+
+   if (reply->type == ECORE_X_ATOM_UTF8_STRING)
+     {
+        int length;
+
+        length = reply->value_len;
+        str = (char *)malloc(length + 1);
+        memcpy(str,
+               xcb_get_property_value(reply),
+               length);
+        str[length] = '\0';
+     }
+   else
+     {
+       /* FIXME: to be done... */
+
+/* #ifdef X_HAVE_UTF8_STRING */
+/*         s = Xutf8TextPropertyToTextList(_ecore_xcb_conn, &xtp, */
+/*                                         &list, &items); */
+/* #else */
+/*         s = XmbTextPropertyToTextList(_ecore_xcb_conn, &xtp, */
+/*                                       &list, &items); */
+/* #endif */
+/*         if ((s == XLocaleNotSupported) || */
+/*             (s == XNoMemory) || (s == XConverterNotFound)) */
+/*           { */
+/*              str = strdup((char *)xtp.value); */
+/*           } */
+/*         else if ((s >= Success) && (items > 0)) */
+/*           { */
+/*              str = strdup(list[0]); */
+/*           } */
+/*         if (list) */
+/*            XFreeStringList(list); */
+     }
+
+   return str;
+}
+
+/* FIXME : round trips because of GetWMProtocols */
+/*         should we rewrite its code ? */
+EAPI int
+ecore_x_window_prop_protocol_isset(Ecore_X_Window      window,
+                                   Ecore_X_WM_Protocol protocol)
+{
+   Ecore_X_Atom *protos;
+   Ecore_X_Atom  proto;
+   uint32_t      protos_count;
+   uint32_t      i;
+   uint8_t       ret = 0;
+
+   /* check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+       return ret;
+
+   proto = _ecore_xcb_atoms_wm_protocols[protocol];
+
+   if (!xcb_get_wm_protocols(_ecore_xcb_conn, window, &protos_count, &protos))
+       return ret;
+
+   for (i = 0; i < protos_count; i++)
+       if (protos[i] == proto)
+         {
+            ret = 1;
+            break;
+         }
+
+   free(protos);
+
+   return ret;
+}
+
+/**
+ * To be documented.
+ * @param window  The window.
+ * @param num_ret The number of WM protocols.
+ * @return        The returned WM protocols.
+ *
+ * FIXME: To be fixed.
+ */
+
+/* FIXME : round trips because of get_wm_protocols */
+/*         should we rewrite its code ? */
+
+EAPI Ecore_X_WM_Protocol *
+ecore_x_window_prop_protocol_list_get(Ecore_X_Window window,
+                                      int           *num_ret)
+{
+   Ecore_X_WM_Protocol *prot_ret = NULL;
+   Ecore_X_Atom        *protos;
+   uint32_t             protos_count;
+   uint32_t             i;
+
+   if (!xcb_get_wm_protocols(_ecore_xcb_conn, window, &protos_count, &protos))
+     return NULL;
+
+   if ((!protos) || (protos_count <= 0)) return NULL;
+
+   prot_ret = calloc(1, protos_count * sizeof(Ecore_X_WM_Protocol));
+   if (!prot_ret)
+     {
+       free(protos);
+       return NULL;
+     }
+   for (i = 0; i < protos_count; i++)
+     {
+       Ecore_X_WM_Protocol j;
+
+       prot_ret[i] = -1;
+       for (j = 0; j < ECORE_X_WM_PROTOCOL_NUM; j++)
+         {
+            if (_ecore_xcb_atoms_wm_protocols[j] == protos[i])
+              prot_ret[i] = j;
+         }
+     }
+   free(protos);
+   *num_ret = protos_count;
+
+   return prot_ret;
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window_shadow.c b/src/lib/ecore_x/xcb/ecore_xcb_window_shadow.c
new file mode 100644 (file)
index 0000000..c025673
--- /dev/null
@@ -0,0 +1,355 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+/* #include "Ecore.h" */
+#include "ecore_xcb_private.h"
+#include "Ecore_X.h"
+
+
+typedef struct _Shadow Shadow;
+struct _Shadow
+{
+   Shadow         *parent;
+   Shadow        **children;
+   Ecore_X_Window  win;
+   int             children_num;
+   short           x, y;
+   unsigned short  w, h;
+};
+
+static int shadow_count = 0;
+static Shadow **shadow_base = NULL;
+static int shadow_num = 0;
+
+
+/* FIXME: round trips */
+static Shadow *
+_ecore_x_window_tree_walk(Ecore_X_Window window)
+{
+   Shadow                            *s;
+   Shadow                           **sl;
+   xcb_get_window_attributes_reply_t *reply_attr;
+   xcb_get_geometry_reply_t          *reply_geom;
+   xcb_query_tree_reply_t            *reply_tree;
+   xcb_get_window_attributes_cookie_t cookie_attr;
+   xcb_get_geometry_cookie_t          cookie_geom;
+   xcb_query_tree_cookie_t            cookie_tree;
+   int                                i;
+   int                                j;
+
+   cookie_attr = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, window);
+   cookie_geom = xcb_get_geometry_unchecked(_ecore_xcb_conn, window);
+   cookie_tree = xcb_query_tree_unchecked(_ecore_xcb_conn, window);
+
+   reply_attr = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie_attr, NULL);
+   if (!reply_attr)
+     {
+        reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+        if (reply_geom) free(reply_geom);
+        reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+        if (reply_tree) free(reply_tree);
+        return NULL;
+     }
+
+   if (reply_attr->map_state != XCB_MAP_STATE_VIEWABLE)
+     {
+        reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+        if (reply_geom) free(reply_geom);
+        reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+        if (reply_tree) free(reply_tree);
+        return NULL;
+     }
+
+   free(reply_attr);
+
+   s = calloc(1, sizeof(Shadow));
+   if (!s) return NULL;
+
+   reply_geom = xcb_get_geometry_reply(_ecore_xcb_conn, cookie_geom, NULL);
+   if (!reply_geom)
+     {
+        reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+        if (reply_tree) free(reply_tree);
+        return NULL;
+     }
+
+   s->win = window;
+   s->x = reply_geom->x;
+   s->y = reply_geom->y;
+   s->w = reply_geom->width;
+   s->h = reply_geom->height;
+
+   free(reply_geom);
+
+   reply_tree = xcb_query_tree_reply(_ecore_xcb_conn, cookie_tree, NULL);
+   if (reply_tree)
+/*    if (XQueryTree(_ecore_xcb_conn, s->win, &root_win, &parent_win, */
+/*                &list, &num)) */
+     {
+        xcb_window_t *list;
+        int           num;
+
+        num = xcb_query_tree_children_length(reply_tree);
+        list = xcb_query_tree_children(reply_tree);
+
+       s->children = calloc(1, sizeof(Shadow *) * num);
+       if (s->children)
+         {
+            s->children_num = num;
+            for (i = 0; i < num; i++)
+              {
+                 s->children[i] = _ecore_x_window_tree_walk(list[i]);
+                 if (s->children[i]) s->children[i]->parent = s;
+              }
+            /* compress list down */
+            j = 0;
+            for (i = 0; i < num; i++)
+              {
+                 if (s->children[i])
+                   {
+                      s->children[j] = s->children[i];
+                      j++;
+                   }
+              }
+            if (j == 0)
+              {
+                 free(s->children);
+                 s->children = NULL;
+                 s->children_num = 0;
+              }
+            else
+              {
+                 s->children_num = j;
+                 sl = realloc(s->children, sizeof(Shadow *) * j);
+                 if (sl) s->children = sl;
+              }
+         }
+        free(reply_tree);
+     }
+   return s;
+}
+
+static void
+_ecore_x_window_tree_shadow_free1(Shadow *s)
+{
+   int i;
+
+   if (!s) return;
+   if (s->children)
+     {
+       for (i = 0; i < s->children_num; i++)
+         {
+            if (s->children[i])
+              _ecore_x_window_tree_shadow_free1(s->children[i]);
+         }
+       free(s->children);
+     }
+   free(s);
+}
+
+static void
+_ecore_x_window_tree_shadow_free(void)
+{
+   int i;
+
+   if (!shadow_base) return;
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       _ecore_x_window_tree_shadow_free1(shadow_base[i]);
+     }
+   free(shadow_base);
+   shadow_base = NULL;
+   shadow_num = 0;
+}
+
+static void
+_ecore_x_window_tree_shadow_populate(void)
+{
+   Ecore_X_Window   *roots;
+   int               i, num;
+
+   roots = ecore_x_window_root_list(&num);
+   if (roots)
+     {
+       shadow_base = calloc(1, sizeof(Shadow *) * num);
+       if (shadow_base)
+         {
+            shadow_num = num;
+            for (i = 0; i < num; i++)
+              shadow_base[i] = _ecore_x_window_tree_walk(roots[i]);
+         }
+       free(roots);
+     }
+}
+
+static void
+_ecore_x_window_tree_shadow_start(void)
+{
+   shadow_count++;
+   if (shadow_count > 1) return;
+   _ecore_x_window_tree_shadow_populate();
+}
+
+static void
+_ecore_x_window_tree_shadow_stop(void)
+{
+   shadow_count--;
+   if (shadow_count != 0) return;
+   _ecore_x_window_tree_shadow_free();
+}
+
+Shadow *
+_ecore_x_window_shadow_tree_find_shadow(Shadow *s, Ecore_X_Window win)
+{
+   Shadow *ss;
+   int i;
+
+   if (s->win == win) return s;
+   if (s->children)
+     {
+       for (i = 0; i < s->children_num; i++)
+         {
+            if (!s->children[i]) continue;
+            if ((ss = _ecore_x_window_shadow_tree_find_shadow(s->children[i], win)))
+              return ss;
+         }
+     }
+   return NULL;
+}
+
+Shadow *
+_ecore_x_window_shadow_tree_find(Ecore_X_Window base)
+{
+   Shadow *s;
+   int i;
+
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       if ((s = _ecore_x_window_shadow_tree_find_shadow(shadow_base[i], base)))
+         return s;
+     }
+   return NULL;
+}
+
+static Ecore_X_Window
+_ecore_x_window_shadow_tree_at_xy_get_shadow(Shadow *s, int bx, int by, int x, int y,
+                                            Ecore_X_Window *skip, int skip_num)
+{
+   Ecore_X_Window child;
+   int i, j;
+   int wx, wy;
+
+   wx = s->x + bx;
+   wy = s->y + by;
+   if (!((x >= wx) && (y >= wy) && (x < (wx + s->w)) && (y < (wy + s->h))))
+     return 0;
+   if (s->children)
+     {
+       int skipit = 0;
+
+       for (i = s->children_num - 1; i >= 0; --i)
+         {
+            if (!s->children[i]) continue;
+            skipit = 0;
+            if (skip)
+              {
+                 for (j = 0; j < skip_num; j++)
+                   {
+                      if (s->children[i]->win == skip[j])
+                        {
+                           skipit = 1;
+                           goto onward;
+                        }
+                   }
+              }
+            onward:
+            if (!skipit)
+              {
+                 if ((child = _ecore_x_window_shadow_tree_at_xy_get_shadow(s->children[i], wx, wy, x, y, skip, skip_num)))
+                   {
+                      return child;
+                   }
+              }
+         }
+     }
+   return s->win;
+}
+
+static Ecore_X_Window
+_ecore_x_window_shadow_tree_at_xy_get(Ecore_X_Window base, int bx, int by, int x, int y,
+                                     Ecore_X_Window *skip, int skip_num)
+{
+   Shadow *s;
+
+   if (!shadow_base)
+     {
+       _ecore_x_window_tree_shadow_populate();
+       if (!shadow_base) return 0;
+     }
+   s = _ecore_x_window_shadow_tree_find(base);
+   if (!s) return 0;
+   return _ecore_x_window_shadow_tree_at_xy_get_shadow(s, bx, by, x, y, skip, skip_num);
+}
+
+/**
+ * Retrieves the top, visible window at the given location,
+ * but skips the windows in the list. This uses a shadow tree built from the
+ * window tree that is only updated the first time
+ * ecore_x_window_shadow_tree_at_xy_with_skip_get() is called, or the next time
+ * it is called after a  ecore_x_window_shadow_tree_flush()
+ * @param   base The base window to start searching from (normally root).
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return  The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num)
+{
+   return _ecore_x_window_shadow_tree_at_xy_get(base, 0, 0, x, y, skip, skip_num);
+}
+
+/**
+ * Retrieves the parent window a given window has. This uses the shadow window
+ * tree.
+ * @param   root The root window of @p win - if 0, this will be automatically determined with extra processing overhead
+ * @param   win The window to get the parent window of
+ * @return  The parent window of @p win
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win)
+{
+   Shadow *s;
+   int     i;
+
+   if (!shadow_base)
+     {
+       _ecore_x_window_tree_shadow_populate();
+       if (!shadow_base) return 0;
+     }
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       s = _ecore_x_window_shadow_tree_find_shadow(shadow_base[i], win);
+       if (s)
+         {
+            if (!s->parent) return 0;
+            return s->parent->win;
+         }
+     }
+   return 0;
+}
+
+/**
+ * Flushes the window shadow tree so nothing is stored.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_shadow_tree_flush(void)
+{
+   _ecore_x_window_tree_shadow_free();
+}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_xinerama.c b/src/lib/ecore_x/xcb/ecore_xcb_xinerama.c
new file mode 100644 (file)
index 0000000..52aaf96
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_xcb_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Xinerama_Group X Xinerama Extension Functions
+ *
+ * Functions related to the X Xinerama extension.
+ */
+
+
+#ifdef ECORE_XCB_XINERAMA
+static int _xinerama_available = 0;
+static xcb_xinerama_query_version_cookie_t _ecore_xcb_xinerama_init_cookie;
+#endif /* ECORE_XCB_XINERAMA */
+
+
+/* To avoid round trips, the initialization is separated in 2
+   functions: _ecore_xcb_xinerama_init and
+   _ecore_xcb_xinerama_init_finalize. The first one gets the cookies and
+   the second one gets the replies. */
+
+void
+_ecore_x_xinerama_init(const xcb_query_extension_reply_t *reply)
+{
+#ifdef ECORE_XCB_XINERAMA
+   if (reply && (reply->present))
+      _ecore_xcb_xinerama_init_cookie = xcb_xinerama_query_version_unchecked(_ecore_xcb_conn, 1, 2);
+#endif /* ECORE_XCB_XINERAMA */
+}
+
+void
+_ecore_x_xinerama_init_finalize(void)
+{
+#ifdef ECORE_XCB_XINERAMA
+   xcb_xinerama_query_version_reply_t *reply;
+
+   reply = xcb_xinerama_query_version_reply(_ecore_xcb_conn,
+                                          _ecore_xcb_xinerama_init_cookie, NULL);
+
+   if (reply)
+     {
+        if ((reply->major >= 1) &&
+            (reply->minor >= 1))
+          _xinerama_available = 1;
+        free(reply);
+     }
+#endif /* ECORE_XCB_XINERAMA */
+}
+
+
+/**
+ * Return whether the X server supports the Xinerama Extension.
+ * @return 1 if the X Xinerama Extension is available, 0 otherwise.
+ *
+ * Return 1 if the X server supports the Fixes Xinerama version 1.1,
+ * 0 otherwise.
+ * @ingroup Ecore_X_Xinerama_Group
+ */
+EAPI int
+ecore_x_xinerama_query(void)
+{
+#ifdef ECORE_XCB_XINERAMA
+   return _xinerama_available;
+#else
+   return 0;
+#endif /* ECORE_XCB_XINERAMA */
+}
+
+
+/**
+ * Sends the XineramaQueryScreens request.
+ * @ingroup Ecore_X_Xinerama_Group
+ */
+EAPI void
+ecore_x_xinerama_query_screens_prefetch(void)
+{
+#ifdef ECORE_XCB_XINERAMA
+   xcb_xinerama_query_screens_cookie_t cookie;
+
+   cookie = xcb_xinerama_query_screens_unchecked(_ecore_xcb_conn);
+   _ecore_xcb_cookie_cache(cookie.sequence);
+#endif /* ECORE_XCB_XINERAMA */
+}
+
+
+/**
+ * Gets the reply of the XineramaQueryScreens request sent by ecore_x_xinerama_query_screens_prefetch().
+ * @ingroup Ecore_X_Xinerama_Group
+ */
+EAPI void
+ecore_x_xinerama_query_screens_fetch(void)
+{
+#ifdef ECORE_XCB_XINERAMA
+   xcb_xinerama_query_screens_cookie_t cookie;
+   xcb_xinerama_query_screens_reply_t *reply;
+
+   cookie.sequence = _ecore_xcb_cookie_get();
+   reply = xcb_xinerama_query_screens_reply(_ecore_xcb_conn, cookie, NULL);
+   _ecore_xcb_reply_cache(reply);
+#endif /* ECORE_XCB_XINERAMA */
+}
+
+
+/**
+ * Return the number of screens.
+ * @return The screen count.
+ *
+ * Return the number of screens.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_xinerama_query_screens_prefetch(), which sends the XineramaQueryScreens request,
+ * then ecore_x_xinerama_query_screens_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Xinerama_Group
+ */
+EAPI int
+ecore_x_xinerama_screen_count_get(void)
+{
+   int                                 screen_count = 0;
+#ifdef ECORE_XCB_XINERAMA
+   xcb_xinerama_screen_info_iterator_t iter;
+   xcb_xinerama_query_screens_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply) return 0;
+
+   iter = xcb_xinerama_query_screens_screen_info_iterator(reply);
+   screen_count = iter.rem;
+#endif /* ECORE_XCB_XINERAMA */
+
+   return screen_count;
+}
+
+
+/**
+ * Get the geometry of the screen.
+ * @param screen The screen (Unused).
+ * @param x      The X coordinate of the screen.
+ * @param y      The Y coordinate of the screen
+ * @param width  The width of the screen
+ * @param height The height of the screen
+ * @return       1 on success, 0 otherwise.
+ *
+ * Get the geometry of the screen whose number is @p screen. The
+ * returned values are stored in @p x, @p y, @p width and @p height.
+ *
+ * To use this function, you must call before, and in order,
+ * ecore_x_xinerama_query_screens_prefetch(), which sends the XineramaQueryScreens request,
+ * then ecore_x_xinerama_query_screens_fetch(), which gets the reply.
+ * @ingroup Ecore_X_Xinerama_Group
+ */
+EAPI int
+ecore_x_xinerama_screen_geometry_get(int  screen,
+                                     int *x,
+                                     int *y,
+                                     int *width,
+                                     int *height)
+{
+#ifdef ECORE_XCB_XINERAMA
+   xcb_xinerama_screen_info_iterator_t iter;
+   xcb_xinerama_query_screens_reply_t *reply;
+
+   reply = _ecore_xcb_reply_get();
+   if (!reply)
+     {
+        if (x) *x = 0;
+        if (y) *y = 0;
+        if (width) *width = ((xcb_screen_t *)_ecore_xcb_screen)->width_in_pixels;
+        if (height) *height = ((xcb_screen_t *)_ecore_xcb_screen)->height_in_pixels;
+
+        return 0;
+     }
+
+   iter = xcb_xinerama_query_screens_screen_info_iterator(reply);
+   for (; iter.rem; screen--, xcb_xinerama_screen_info_next(&iter))
+     {
+        if (screen == 0)
+          {
+             if (x) *x = iter.data->x_org;
+             if (y) *y = iter.data->y_org;
+             if (width) *width = iter.data->width;
+             if (height) *height = iter.data->height;
+             return 1;
+          }
+     }
+#endif /* ECORE_XCB_XINERAMA */
+
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (width) *width = ((xcb_screen_t *)_ecore_xcb_screen)->width_in_pixels;
+   if (height) *height = ((xcb_screen_t *)_ecore_xcb_screen)->height_in_pixels;
+
+   return 0;
+}
diff --git a/src/lib/ecore_x/xlib/.cvsignore b/src/lib/ecore_x/xlib/.cvsignore
new file mode 100644 (file)
index 0000000..39b336e
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+libecore_x_xlib.la
diff --git a/src/lib/ecore_x/xlib/Makefile.am b/src/lib/ecore_x/xlib/Makefile.am
new file mode 100644 (file)
index 0000000..4cb9f8b
--- /dev/null
@@ -0,0 +1,80 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_ECORE_X_XLIB
+
+AM_CPPFLAGS = \
+@Xcursor_cflags@ \
+@XDAMAGE_CFLAGS@ \
+@XCOMPOSITE_CFLAGS@ \
+@XDPMS_CFLAGS@ \
+@XFIXES_CFLAGS@ \
+@XINERAMA_CFLAGS@ \
+@XPRINT_CFLAGS@ \
+@XRANDR_CFLAGS@ \
+@XRENDER_CFLAGS@ \
+@XSS_CFLAGS@ \
+@XTEST_CFLAGS@ \
+@x_cflags@ \
+-I$(top_srcdir)/src/lib/ecore \
+-I$(top_srcdir)/src/lib/ecore_txt \
+-I$(top_srcdir)/src/lib/ecore_x \
+-I$(top_builddir)/src/lib/ecore \
+-I$(top_builddir)/src/lib/ecore_txt \
+-I$(top_builddir)/src/lib/ecore_x
+
+noinst_LTLIBRARIES      = libecore_x_xlib.la
+
+libecore_x_xlib_la_SOURCES  = \
+ecore_x.c \
+ecore_x_dnd.c \
+ecore_x_sync.c \
+ecore_x_randr.c \
+ecore_x_fixes.c \
+ecore_x_damage.c \
+ecore_x_composite.c \
+ecore_x_error.c \
+ecore_x_events.c \
+ecore_x_icccm.c \
+ecore_x_netwm.c \
+ecore_x_mwm.c \
+ecore_x_e.c \
+ecore_x_selection.c \
+ecore_x_window.c \
+ecore_x_window_prop.c \
+ecore_x_window_shape.c \
+ecore_x_pixmap.c \
+ecore_x_gc.c \
+ecore_x_xinerama.c \
+ecore_x_screensaver.c \
+ecore_x_dpms.c \
+ecore_x_drawable.c \
+ecore_x_cursor.c \
+ecore_x_test.c \
+ecore_x_atoms.c
+
+libecore_x_xlib_la_LIBADD = \
+@Xcursor_libs@ \
+@XDAMAGE_LIBS@ \
+@XCOMPOSITE_LIBS@ \
+@XDPMS_LIBS@ \
+@XFIXES_LIBS@ \
+@XINERAMA_LIBS@ \
+@XPRINT_LIBS@ \
+@XRANDR_LIBS@ \
+@XRENDER_LIBS@ \
+@XSS_LIBS@ \
+@XTEST_LIBS@ \
+@x_libs@ \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
+
+libecore_x_xlib_la_LDFLAGS = -version-info @version_info@
+
+libecore_x_xlib_la_DEPENDENCIES = \
+$(top_builddir)/src/lib/ecore/libecore.la \
+$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
+
+endif
+
+EXTRA_DIST = ecore_x_private.h
diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/xlib/ecore_x.c
new file mode 100644 (file)
index 0000000..9be563f
--- /dev/null
@@ -0,0 +1,1474 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+static int _ecore_x_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_x_fd_handler_buf(void *data, Ecore_Fd_Handler *fd_handler);
+static int _ecore_x_key_mask_get(KeySym sym);
+
+static Ecore_Fd_Handler *_ecore_x_fd_handler_handle = NULL;
+static int _ecore_x_event_shape_id = 0;
+static int _ecore_x_event_screensaver_id = 0;
+static int _ecore_x_event_sync_id = 0;
+#ifdef ECORE_XRANDR
+static int _ecore_x_event_randr_id = 0;
+#endif
+#ifdef ECORE_XFIXES
+static int _ecore_x_event_fixes_selection_id = 0;
+#endif
+#ifdef ECORE_XDAMAGE
+static int _ecore_x_event_damage_id = 0;
+#endif
+static int _ecore_x_event_handlers_num = 0;
+static void (**_ecore_x_event_handlers) (XEvent * event) = NULL;
+
+static int _ecore_x_init_count = 0;
+static int _ecore_x_grab_count = 0;
+
+Display *_ecore_x_disp = NULL;
+double   _ecore_x_double_click_time = 0.25;
+Time     _ecore_x_event_last_time = 0;
+Window   _ecore_x_event_last_win = 0;
+int      _ecore_x_event_last_root_x = 0;
+int      _ecore_x_event_last_root_y = 0;
+int      _ecore_x_xcursor = 0;
+
+Ecore_X_Window _ecore_x_private_win = 0;
+
+Ecore_X_Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
+
+EAPI int ECORE_X_EVENT_KEY_DOWN = 0;
+EAPI int ECORE_X_EVENT_KEY_UP = 0;
+EAPI int ECORE_X_EVENT_MOUSE_BUTTON_DOWN = 0;
+EAPI int ECORE_X_EVENT_MOUSE_BUTTON_UP = 0;
+EAPI int ECORE_X_EVENT_MOUSE_MOVE = 0;
+EAPI int ECORE_X_EVENT_MOUSE_IN = 0;
+EAPI int ECORE_X_EVENT_MOUSE_OUT = 0;
+EAPI int ECORE_X_EVENT_MOUSE_WHEEL = 0;
+EAPI int ECORE_X_EVENT_WINDOW_FOCUS_IN = 0;
+EAPI int ECORE_X_EVENT_WINDOW_FOCUS_OUT = 0;
+EAPI int ECORE_X_EVENT_WINDOW_KEYMAP = 0;
+EAPI int ECORE_X_EVENT_WINDOW_DAMAGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CREATE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_DESTROY = 0;
+EAPI int ECORE_X_EVENT_WINDOW_HIDE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHOW = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHOW_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_REPARENT = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_GRAVITY = 0;
+EAPI int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STACK = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STACK_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROPERTY = 0;
+EAPI int ECORE_X_EVENT_WINDOW_COLORMAP = 0;
+EAPI int ECORE_X_EVENT_WINDOW_MAPPING = 0;
+EAPI int ECORE_X_EVENT_SELECTION_CLEAR = 0;
+EAPI int ECORE_X_EVENT_SELECTION_REQUEST = 0;
+EAPI int ECORE_X_EVENT_SELECTION_NOTIFY = 0;
+EAPI int ECORE_X_EVENT_CLIENT_MESSAGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_SHAPE = 0;
+EAPI int ECORE_X_EVENT_SCREENSAVER_NOTIFY = 0;
+EAPI int ECORE_X_EVENT_SYNC_COUNTER = 0;
+EAPI int ECORE_X_EVENT_SYNC_ALARM = 0;
+EAPI int ECORE_X_EVENT_SCREEN_CHANGE = 0;
+EAPI int ECORE_X_EVENT_DAMAGE_NOTIFY = 0;
+
+EAPI int ECORE_X_EVENT_WINDOW_DELETE_REQUEST = 0;
+/*
+EAPI int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE = 0;
+EAPI int ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE = 0;
+*/
+
+EAPI int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_WINDOW_STATE_REQUEST = 0;
+EAPI int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST = 0;
+EAPI int ECORE_X_EVENT_PING = 0;
+EAPI int ECORE_X_EVENT_DESKTOP_CHANGE = 0;
+
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = 0;
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = 0;
+EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = 0;
+
+EAPI int ECORE_X_MODIFIER_SHIFT = 0;
+EAPI int ECORE_X_MODIFIER_CTRL = 0;
+EAPI int ECORE_X_MODIFIER_ALT = 0;
+EAPI int ECORE_X_MODIFIER_WIN = 0;
+
+EAPI int ECORE_X_LOCK_SCROLL = 0;
+EAPI int ECORE_X_LOCK_NUM = 0;
+EAPI int ECORE_X_LOCK_CAPS = 0;
+
+/**
+ * @defgroup Ecore_X_Init_Group X Library Init and Shutdown Functions
+ *
+ * Functions that start and shut down the Ecore X Library.
+ */
+
+/**
+ * Initialize the X display connection to the given display.
+ *
+ * @param   name Display target name.  If @c NULL, the default display is
+ *               assumed.
+ * @return  The number of times the library has been initialized without
+ *          being shut down.  0 is returned if an error occurs.
+ * @ingroup Ecore_X_Init_Group
+ */
+EAPI int
+ecore_x_init(const char *name)
+{
+   int shape_base = 0;
+   int shape_err_base = 0;
+#ifdef ECORE_XSS
+   int screensaver_base = 0;
+   int screensaver_err_base = 0;
+#endif
+   int sync_base = 0;
+   int sync_err_base = 0;
+#ifdef ECORE_XRANDR
+   int randr_base = 0;
+   int randr_err_base = 0;
+#endif
+#ifdef ECORE_XFIXES
+   int fixes_base = 0;
+   int fixes_err_base = 0;
+#endif
+#ifdef ECORE_XDAMAGE
+   int damage_base = 0;
+   int damage_err_base = 0;
+#endif
+   
+   if (_ecore_x_init_count > 0) 
+     {
+       _ecore_x_init_count++;
+       return _ecore_x_init_count;
+     }
+   _ecore_x_disp = XOpenDisplay((char *)name);
+   if (!_ecore_x_disp) return 0;
+   _ecore_x_error_handler_init();
+   _ecore_x_event_handlers_num = LASTEvent;
+   
+   if (XShapeQueryExtension(_ecore_x_disp, &shape_base, &shape_err_base))
+     _ecore_x_event_shape_id = shape_base + ShapeNotify;
+   if (_ecore_x_event_shape_id >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_shape_id + 1;
+   
+#ifdef ECORE_XSS
+   if (XScreenSaverQueryExtension(_ecore_x_disp, &screensaver_base, &screensaver_err_base))
+     _ecore_x_event_screensaver_id = screensaver_base + ScreenSaverNotify;
+#endif   
+   if (_ecore_x_event_screensaver_id >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_screensaver_id + 1;
+   
+   if (XSyncQueryExtension(_ecore_x_disp, &sync_base, &sync_err_base))
+     {
+       int major, minor;
+
+       _ecore_x_event_sync_id = sync_base;
+       if (!XSyncInitialize(_ecore_x_disp, &major, &minor))
+         _ecore_x_event_sync_id = 0;
+     }
+   if (_ecore_x_event_sync_id + XSyncAlarmNotify >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_sync_id + XSyncAlarmNotify + 1;
+   
+#ifdef ECORE_XRANDR
+   if (XRRQueryExtension(_ecore_x_disp, &randr_base, &randr_err_base))
+     _ecore_x_event_randr_id = randr_base + RRScreenChangeNotify;
+   if (_ecore_x_event_randr_id >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_randr_id + 1;
+#endif
+
+#ifdef ECORE_XFIXES
+   if (XFixesQueryExtension(_ecore_x_disp, &fixes_base, &fixes_err_base))
+     _ecore_x_event_fixes_selection_id = fixes_base + XFixesSelectionNotify;
+   if (_ecore_x_event_fixes_selection_id >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_fixes_selection_id + 1;
+#endif
+
+#ifdef ECORE_XDAMAGE
+   if (XDamageQueryExtension(_ecore_x_disp, &damage_base, &damage_err_base))
+     _ecore_x_event_damage_id = damage_base + XDamageNotify;
+   if (_ecore_x_event_damage_id >= _ecore_x_event_handlers_num)
+     _ecore_x_event_handlers_num = _ecore_x_event_damage_id + 1;
+#endif
+
+   _ecore_x_event_handlers = calloc(_ecore_x_event_handlers_num, sizeof(void *));
+   if (!_ecore_x_event_handlers)
+     {
+        XCloseDisplay(_ecore_x_disp);
+       _ecore_x_fd_handler_handle = NULL;
+       _ecore_x_disp = NULL;
+       return 0;       
+     }
+#ifdef ECORE_XCURSOR   
+   _ecore_x_xcursor = XcursorSupportsARGB(_ecore_x_disp);
+#endif
+   _ecore_x_event_handlers[KeyPress]         = _ecore_x_event_handle_key_press;
+   _ecore_x_event_handlers[KeyRelease]       = _ecore_x_event_handle_key_release;
+   _ecore_x_event_handlers[ButtonPress]      = _ecore_x_event_handle_button_press;
+   _ecore_x_event_handlers[ButtonRelease]    = _ecore_x_event_handle_button_release;
+   _ecore_x_event_handlers[MotionNotify]     = _ecore_x_event_handle_motion_notify;
+   _ecore_x_event_handlers[EnterNotify]      = _ecore_x_event_handle_enter_notify;
+   _ecore_x_event_handlers[LeaveNotify]      = _ecore_x_event_handle_leave_notify;
+   _ecore_x_event_handlers[FocusIn]          = _ecore_x_event_handle_focus_in;
+   _ecore_x_event_handlers[FocusOut]         = _ecore_x_event_handle_focus_out;
+   _ecore_x_event_handlers[KeymapNotify]     = _ecore_x_event_handle_keymap_notify;
+   _ecore_x_event_handlers[Expose]           = _ecore_x_event_handle_expose;
+   _ecore_x_event_handlers[GraphicsExpose]   = _ecore_x_event_handle_graphics_expose;
+   _ecore_x_event_handlers[VisibilityNotify] = _ecore_x_event_handle_visibility_notify;
+   _ecore_x_event_handlers[CreateNotify]     = _ecore_x_event_handle_create_notify;
+   _ecore_x_event_handlers[DestroyNotify]    = _ecore_x_event_handle_destroy_notify;
+   _ecore_x_event_handlers[UnmapNotify]      = _ecore_x_event_handle_unmap_notify;
+   _ecore_x_event_handlers[MapNotify]        = _ecore_x_event_handle_map_notify;
+   _ecore_x_event_handlers[MapRequest]       = _ecore_x_event_handle_map_request;
+   _ecore_x_event_handlers[ReparentNotify]   = _ecore_x_event_handle_reparent_notify;
+   _ecore_x_event_handlers[ConfigureNotify]  = _ecore_x_event_handle_configure_notify;
+   _ecore_x_event_handlers[ConfigureRequest] = _ecore_x_event_handle_configure_request;
+   _ecore_x_event_handlers[GravityNotify]    = _ecore_x_event_handle_gravity_notify;
+   _ecore_x_event_handlers[ResizeRequest]    = _ecore_x_event_handle_resize_request;
+   _ecore_x_event_handlers[CirculateNotify]  = _ecore_x_event_handle_circulate_notify;
+   _ecore_x_event_handlers[CirculateRequest] = _ecore_x_event_handle_circulate_request;
+   _ecore_x_event_handlers[PropertyNotify]   = _ecore_x_event_handle_property_notify;
+   _ecore_x_event_handlers[SelectionClear]   = _ecore_x_event_handle_selection_clear;
+   _ecore_x_event_handlers[SelectionRequest] = _ecore_x_event_handle_selection_request;
+   _ecore_x_event_handlers[SelectionNotify]  = _ecore_x_event_handle_selection_notify;
+   _ecore_x_event_handlers[ColormapNotify]   = _ecore_x_event_handle_colormap_notify;
+   _ecore_x_event_handlers[ClientMessage]    = _ecore_x_event_handle_client_message;
+   _ecore_x_event_handlers[MappingNotify]    = _ecore_x_event_handle_mapping_notify;
+   if (_ecore_x_event_shape_id)
+     _ecore_x_event_handlers[_ecore_x_event_shape_id] = _ecore_x_event_handle_shape_change;
+   if (_ecore_x_event_screensaver_id)
+     _ecore_x_event_handlers[_ecore_x_event_screensaver_id] = _ecore_x_event_handle_screensaver_notify;
+   if (_ecore_x_event_sync_id)
+     {
+       _ecore_x_event_handlers[_ecore_x_event_sync_id + XSyncCounterNotify] =
+          _ecore_x_event_handle_sync_counter;
+       _ecore_x_event_handlers[_ecore_x_event_sync_id + XSyncAlarmNotify] =
+          _ecore_x_event_handle_sync_alarm;
+     }
+#ifdef ECORE_XRANDR
+   if (_ecore_x_event_randr_id)
+     _ecore_x_event_handlers[_ecore_x_event_randr_id] = _ecore_x_event_handle_randr_change;
+#endif
+#ifdef ECORE_XFIXES
+   if (_ecore_x_event_fixes_selection_id)
+     _ecore_x_event_handlers[_ecore_x_event_fixes_selection_id] = _ecore_x_event_handle_fixes_selection_notify;
+#endif
+#ifdef ECORE_XDAMAGE
+   if (_ecore_x_event_damage_id)
+     _ecore_x_event_handlers[_ecore_x_event_damage_id] = _ecore_x_event_handle_damage_notify;
+#endif
+
+   if (!ECORE_X_EVENT_KEY_DOWN)
+     {
+       ECORE_X_EVENT_KEY_DOWN                 = ecore_event_type_new();
+       ECORE_X_EVENT_KEY_UP                   = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_BUTTON_DOWN        = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_BUTTON_UP          = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_MOVE               = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_IN                 = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_OUT                = ecore_event_type_new();
+       ECORE_X_EVENT_MOUSE_WHEEL              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_FOCUS_IN          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_FOCUS_OUT         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_KEYMAP            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_DAMAGE            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CREATE            = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_DESTROY           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_HIDE              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHOW              = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHOW_REQUEST      = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_REPARENT          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CONFIGURE         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_GRAVITY           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_RESIZE_REQUEST    = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STACK             = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STACK_REQUEST     = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROPERTY          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_COLORMAP          = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_MAPPING           = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_CLEAR          = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_REQUEST        = ecore_event_type_new();
+       ECORE_X_EVENT_SELECTION_NOTIFY         = ecore_event_type_new();
+       ECORE_X_EVENT_CLIENT_MESSAGE           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_SHAPE             = ecore_event_type_new();
+       ECORE_X_EVENT_SCREENSAVER_NOTIFY       = ecore_event_type_new();
+       ECORE_X_EVENT_SYNC_COUNTER             = ecore_event_type_new();
+       ECORE_X_EVENT_SYNC_ALARM               = ecore_event_type_new();
+       ECORE_X_EVENT_SCREEN_CHANGE            = ecore_event_type_new();
+       ECORE_X_EVENT_DAMAGE_NOTIFY            = ecore_event_type_new();
+       
+       ECORE_X_EVENT_WINDOW_DELETE_REQUEST                = ecore_event_type_new();
+       /*
+       ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE             = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE     = ecore_event_type_new();
+        ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE        = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE         = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE    = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE               = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_PROP_DESKTOP_CHANGE           = ecore_event_type_new();
+       */
+
+       ECORE_X_EVENT_DESKTOP_CHANGE           = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = ecore_event_type_new();
+       ECORE_X_EVENT_WINDOW_STATE_REQUEST     = ecore_event_type_new();
+       ECORE_X_EVENT_FRAME_EXTENTS_REQUEST    = ecore_event_type_new();
+       ECORE_X_EVENT_PING                     = ecore_event_type_new();
+
+       ECORE_X_EVENT_STARTUP_SEQUENCE_NEW     = ecore_event_type_new();
+       ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE  = ecore_event_type_new();
+       ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE  = ecore_event_type_new();
+     }
+   
+   /* everything has these... unless its like a pda... :) */
+   ECORE_X_MODIFIER_SHIFT = _ecore_x_key_mask_get(XK_Shift_L);
+   ECORE_X_MODIFIER_CTRL  = _ecore_x_key_mask_get(XK_Control_L);
+   
+   /* apple's xdarwin has no alt!!!! */
+   ECORE_X_MODIFIER_ALT   = _ecore_x_key_mask_get(XK_Alt_L);
+   if (!ECORE_X_MODIFIER_ALT) 
+     ECORE_X_MODIFIER_ALT = _ecore_x_key_mask_get(XK_Meta_L);
+   if (!ECORE_X_MODIFIER_ALT) 
+     ECORE_X_MODIFIER_ALT = _ecore_x_key_mask_get(XK_Super_L);   
+   
+   /* the windows key... a valid modifier :) */
+   ECORE_X_MODIFIER_WIN   = _ecore_x_key_mask_get(XK_Super_L);
+   if (!ECORE_X_MODIFIER_WIN) 
+     ECORE_X_MODIFIER_WIN = _ecore_x_key_mask_get(XK_Mode_switch);
+   if (!ECORE_X_MODIFIER_WIN) 
+     ECORE_X_MODIFIER_WIN = _ecore_x_key_mask_get(XK_Meta_L);
+   
+   if (ECORE_X_MODIFIER_WIN == ECORE_X_MODIFIER_ALT)
+     ECORE_X_MODIFIER_WIN = 0;
+   if (ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_CTRL)
+     ECORE_X_MODIFIER_ALT = 0;
+   
+   ECORE_X_LOCK_SCROLL    = _ecore_x_key_mask_get(XK_Scroll_Lock);
+   ECORE_X_LOCK_NUM       = _ecore_x_key_mask_get(XK_Num_Lock);
+   ECORE_X_LOCK_CAPS      = _ecore_x_key_mask_get(XK_Caps_Lock);
+   
+   _ecore_x_fd_handler_handle = 
+     ecore_main_fd_handler_add(ConnectionNumber(_ecore_x_disp),
+                              ECORE_FD_READ,
+                              _ecore_x_fd_handler, _ecore_x_disp,
+                              _ecore_x_fd_handler_buf, _ecore_x_disp);
+   if (!_ecore_x_fd_handler_handle)
+     {
+       XCloseDisplay(_ecore_x_disp);
+       free(_ecore_x_event_handlers);
+       _ecore_x_fd_handler_handle = NULL;
+       _ecore_x_disp = NULL;
+       _ecore_x_event_handlers = NULL;
+       return 0;
+     }
+
+   _ecore_x_atoms_init();
+
+   /* Set up the ICCCM hints */
+   ecore_x_icccm_init();
+
+   /* Set up the _NET_... hints */
+   ecore_x_netwm_init();
+
+   /* old e hints init */
+   ecore_x_e_init();
+   
+   /* This is just to be anal about naming conventions */
+
+   _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = ECORE_X_ATOM_WM_DELETE_WINDOW;
+   _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = ECORE_X_ATOM_WM_TAKE_FOCUS;
+   _ecore_x_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_PING] = ECORE_X_ATOM_NET_WM_PING;
+   _ecore_x_atoms_wm_protocols[ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+
+   _ecore_x_selection_data_init();
+   _ecore_x_dnd_init();
+   _ecore_x_fixes_init();
+   _ecore_x_damage_init();
+   _ecore_x_composite_init();
+   _ecore_x_dpms_init();
+   
+   _ecore_x_init_count++;
+   
+   _ecore_x_private_win = ecore_x_window_override_new(0, -77, -777, 123, 456);
+   
+   return _ecore_x_init_count;
+}
+
+static int
+_ecore_x_shutdown(int close_display)
+{
+   _ecore_x_init_count--;
+   if (_ecore_x_init_count > 0) return _ecore_x_init_count;
+   if (!_ecore_x_disp) return _ecore_x_init_count;
+   if (close_display)
+      XCloseDisplay(_ecore_x_disp);
+   else
+      close(ConnectionNumber(_ecore_x_disp));
+   free(_ecore_x_event_handlers);
+   ecore_main_fd_handler_del(_ecore_x_fd_handler_handle);
+   _ecore_x_fd_handler_handle = NULL;
+   _ecore_x_disp = NULL;
+   _ecore_x_event_handlers = NULL;
+   _ecore_x_selection_shutdown();
+   _ecore_x_dnd_shutdown();
+   ecore_x_netwm_shutdown();
+   if (_ecore_x_init_count < 0) _ecore_x_init_count = 0;
+   return _ecore_x_init_count;
+}
+
+/**
+ * Shuts down the Ecore X library.
+ *
+ * In shutting down the library, the X display connection is terminated
+ * and any event handlers for it are removed.
+ *
+ * @return  The number of times the library has been initialized without
+ *          being shut down.
+ * @ingroup Ecore_X_Init_Group
+ */
+EAPI int
+ecore_x_shutdown(void)
+{
+   return _ecore_x_shutdown(1);
+}
+
+/**
+ * Shuts down the Ecore X library.
+ *
+ * As ecore_x_shutdown, except do not close Display, only connection.
+ *
+ * @ingroup Ecore_X_Init_Group
+ */
+EAPI int
+ecore_x_disconnect(void)
+{
+   return _ecore_x_shutdown(0);
+}
+
+/**
+ * @defgroup Ecore_X_Display_Attr_Group X Display Attributes
+ *
+ * Functions that set and retrieve X display attributes.
+ */
+
+/**
+ * Retrieves the Ecore_X_Display handle used for the current X connection.
+ * @return  The current X display.
+ * @ingroup Ecore_X_Display_Attr_Group
+ */
+EAPI Ecore_X_Display *
+ecore_x_display_get(void)
+{
+   return (Ecore_X_Display *)_ecore_x_disp;
+}
+
+/**
+ * Retrieves the X display file descriptor.
+ * @return  The current X display file descriptor.
+ * @ingroup Ecore_X_Display_Attr_Group
+ */
+EAPI int
+ecore_x_fd_get(void)
+{
+   return ConnectionNumber(_ecore_x_disp);
+}
+
+/**
+ * Sets the timeout for a double and triple clicks to be flagged.
+ * 
+ * This sets the time between clicks before the double_click flag is
+ * set in a button down event. If 3 clicks occur within double this
+ * time, the triple_click flag is also set.
+ *
+ * @param   t The time in seconds
+ * @ingroup Ecore_X_Display_Attr_Group
+ */
+EAPI void
+ecore_x_double_click_time_set(double t)
+{
+   if (t < 0.0) t = 0.0;
+   _ecore_x_double_click_time = t;
+}
+
+/**
+ * Retrieves the double and triple click flag timeout.
+ *
+ * See @ref ecore_x_double_click_time_set for more information.
+ *
+ * @return  The timeout for double clicks in seconds.
+ * @ingroup Ecore_X_Display_Attr_Group
+ */
+EAPI double
+ecore_x_double_click_time_get(void)
+{
+   return _ecore_x_double_click_time;
+}
+
+/**
+ * @defgroup Ecore_X_Flush_Group X Synchronization Functions
+ *
+ * Functions that ensure that all commands that have been issued by the
+ * Ecore X library have been sent to the server.
+ */
+
+/**
+ * Sends all X commands in the X Display buffer.
+ * @ingroup Ecore_X_Flush_Group
+ */
+EAPI void
+ecore_x_flush(void)
+{
+   XFlush(_ecore_x_disp);
+}
+
+/**
+ * Flushes the command buffer and waits until all requests have been
+ * processed by the server.
+ * @ingroup Ecore_X_Flush_Group
+ */
+EAPI void
+ecore_x_sync(void)
+{
+   XSync(_ecore_x_disp, False);
+}
+
+/**
+ * Kill all clients with subwindows under a given window.
+ *
+ * You can kill all clients connected to the X server by using
+ * @ref ecore_x_window_root_list to get a list of root windows, and
+ * then passing each root window to this function.
+ *
+ * @param root The window whose children will be killed.
+ */
+EAPI void
+ecore_x_killall(Ecore_X_Window root)
+{
+   unsigned int j;
+   Window root_r;
+   Window parent_r;
+   Window *children_r = NULL;
+   unsigned int num_children = 0;
+   
+   XGrabServer(_ecore_x_disp);
+   /* Tranverse window tree starting from root, and drag each
+    * before the firing squad */
+   while (XQueryTree(_ecore_x_disp, root, &root_r, &parent_r,
+                    &children_r, &num_children) && (num_children > 0))
+     {
+       for (j = 0; j < num_children; ++j)
+         {
+            XKillClient(_ecore_x_disp, children_r[j]);
+         }
+       
+       XFree(children_r);
+     }
+   XUngrabServer(_ecore_x_disp);
+   XSync(_ecore_x_disp, False);
+}
+
+/**
+ * Kill a specific client
+ *
+ * You can kill a specific client owning window @p win
+ *
+ * @param win Window of the client to be killed
+ */
+EAPI void
+ecore_x_kill(Ecore_X_Window win)
+{
+   XKillClient(_ecore_x_disp, win);
+}
+
+/**
+ * Return the last event time
+ */
+EAPI Ecore_X_Time
+ecore_x_current_time_get(void)
+{
+   return _ecore_x_event_last_time;
+}
+
+static int
+_ecore_x_fd_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   Display *d;
+   
+   d = data;
+   while (XPending(d))
+     {
+       XEvent ev;
+       
+       XNextEvent(d, &ev);
+
+       /* Filter event for XIM */
+       if (XFilterEvent(&ev, ev.xkey.window)) continue;
+
+       if ((ev.type >= 0) && (ev.type < _ecore_x_event_handlers_num))
+         {
+            if (_ecore_x_event_handlers[ev.type])
+              _ecore_x_event_handlers[ev.type] (&ev);
+         }
+     }
+   return 1;
+}
+
+static int
+_ecore_x_fd_handler_buf(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
+{
+   Display *d;
+
+   d = data;
+   if (XPending(d)) return 1;
+   return 0;
+}
+
+static int
+_ecore_x_key_mask_get(KeySym sym)
+{
+   XModifierKeymap    *mod;
+   KeySym              sym2;
+   int                 i, j;
+   const int           masks[8] = 
+     {
+       ShiftMask, LockMask, ControlMask, 
+         Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask
+     };
+   
+   mod = XGetModifierMapping(_ecore_x_disp);
+   if ((mod) && (mod->max_keypermod > 0))
+     {
+       for (i = 0; i < (8 * mod->max_keypermod); i++)
+         {
+            for (j = 0; j < 8; j++)
+              {
+                 sym2 = XKeycodeToKeysym(_ecore_x_disp, mod->modifiermap[i], j);
+                 if (sym2 != 0) break;
+              }
+            if (sym2 == sym)
+              {
+                 int mask;
+                 
+                 mask = masks[i / mod->max_keypermod];
+                 if (mod->modifiermap) XFree(mod->modifiermap);
+                 XFree(mod);
+                 return mask;
+              }
+         }
+     }
+   if (mod)
+     {
+       if (mod->modifiermap) XFree(mod->modifiermap);
+       XFree(mod);
+     }
+  return 0;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+/* FIXME: these funcs need categorising */
+/*****************************************************************************/
+
+/**
+ * Get a list of all the root windows on the server.
+ *
+ * @note   The returned array will need to be freed after use.
+ * @param  num_ret Pointer to integer to put number of windows returned in.
+ * @return An array of all the root windows.  @c NULL is returned if memory
+ *         could not be allocated for the list, or if @p num_ret is @c NULL.
+ */
+EAPI Ecore_X_Window *
+ecore_x_window_root_list(int *num_ret)
+{
+   int num, i;
+   Ecore_X_Window *roots;
+#ifdef ECORE_XPRINT
+   int xp_base, xp_err_base;
+#endif
+   
+   if (!num_ret) return NULL;
+   *num_ret = 0;
+
+#ifdef ECORE_XPRINT
+   num = ScreenCount(_ecore_x_disp);
+   if (XpQueryExtension(_ecore_x_disp, &xp_base, &xp_err_base))
+     {
+       Screen **ps = NULL;
+       int psnum = 0;
+       
+       ps = XpQueryScreens(_ecore_x_disp, &psnum);
+       if (ps)
+         {
+            int overlap, j;
+            
+            overlap = 0;
+            for (i = 0; i < num; i++)
+              {
+                 for (j = 0; j < psnum; j++)
+                   {
+                      if (ScreenOfDisplay(_ecore_x_disp, i) == ps[j])
+                        overlap++;
+                   }
+              }
+            roots = malloc((num - overlap) * sizeof(Window));
+            if (roots)
+              {
+                 int k;
+                 
+                 k = 0;
+                 for (i = 0; i < num; i++)
+                   {
+                      int is_print;
+                      
+                      is_print = 0;
+                      for (j = 0; j < psnum; j++)
+                        {
+                           if (ScreenOfDisplay(_ecore_x_disp, i) == ps[j])
+                             {
+                                is_print = 1;
+                                break;
+                             }
+                        }
+                      if (!is_print)
+                        {
+                           roots[k] = RootWindow(_ecore_x_disp, i);
+                           k++;
+                        }
+                   }
+                 *num_ret = k;
+              }
+            XFree(ps);
+         }
+       else
+         {
+            roots = malloc(num * sizeof(Window));
+            if (!roots) return NULL;
+            *num_ret = num;
+            for (i = 0; i < num; i++)
+              roots[i] = RootWindow(_ecore_x_disp, i);
+         }
+     }
+   else
+     {
+       roots = malloc(num * sizeof(Window));
+       if (!roots) return NULL;
+       *num_ret = num;
+       for (i = 0; i < num; i++)
+         roots[i] = RootWindow(_ecore_x_disp, i);
+     }
+#else   
+   num = ScreenCount(_ecore_x_disp);
+   roots = malloc(num * sizeof(Window));
+   if (!roots) return NULL;
+   *num_ret = num;
+   for (i = 0; i < num; i++)
+     roots[i] = RootWindow(_ecore_x_disp, i);
+#endif   
+   return roots;
+}
+
+EAPI Ecore_X_Window
+ecore_x_window_root_first_get(void)
+{
+   int num;
+   Ecore_X_Window root, *roots = NULL;
+
+   roots = ecore_x_window_root_list(&num);
+   if(!(roots)) return 0;
+   
+   if (num > 0)
+      root = roots[0];
+   else
+      root = 0;
+
+   free(roots);
+   return root;
+}
+
+
+static void _ecore_x_window_manage_error(void *data);
+
+static int _ecore_x_window_manage_failed = 0;
+static void
+_ecore_x_window_manage_error(void *data __UNUSED__)
+{
+   if ((ecore_x_error_request_get() == X_ChangeWindowAttributes) &&
+       (ecore_x_error_code_get() == BadAccess))
+     _ecore_x_window_manage_failed = 1;
+}
+
+EAPI int
+ecore_x_window_manage(Ecore_X_Window win)
+{
+   XWindowAttributes   att;
+   
+   if (XGetWindowAttributes(_ecore_x_disp, win, &att) != True) return 0;
+   ecore_x_sync();
+   _ecore_x_window_manage_failed = 0;
+   ecore_x_error_handler_set(_ecore_x_window_manage_error, NULL);
+   XSelectInput(_ecore_x_disp, win, 
+               EnterWindowMask | 
+               LeaveWindowMask | 
+               PropertyChangeMask | 
+               ResizeRedirectMask |
+               SubstructureRedirectMask | 
+               SubstructureNotifyMask |
+               StructureNotifyMask |
+               KeyPressMask | 
+               KeyReleaseMask |
+               att.your_event_mask);
+   ecore_x_sync();
+   ecore_x_error_handler_set(NULL, NULL);
+   if (_ecore_x_window_manage_failed)
+     {
+       _ecore_x_window_manage_failed = 0;
+       return 0;
+     }
+   return 1;
+}
+
+EAPI void
+ecore_x_window_container_manage(Ecore_X_Window win)
+{
+   XSelectInput(_ecore_x_disp, win, 
+               SubstructureRedirectMask | 
+               SubstructureNotifyMask);
+}
+
+EAPI void
+ecore_x_window_client_manage(Ecore_X_Window win)
+{
+   XSelectInput(_ecore_x_disp, win, 
+               PropertyChangeMask | 
+//             ResizeRedirectMask |
+               FocusChangeMask |
+               ColormapChangeMask |
+               VisibilityChangeMask |
+               StructureNotifyMask
+               );
+   XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
+}
+
+EAPI void
+ecore_x_window_sniff(Ecore_X_Window win)
+{
+   XSelectInput(_ecore_x_disp, win,
+               PropertyChangeMask |
+               SubstructureNotifyMask);
+}
+
+EAPI void
+ecore_x_window_client_sniff(Ecore_X_Window win)
+{
+   XSelectInput(_ecore_x_disp, win,
+               PropertyChangeMask |
+               FocusChangeMask |
+               ColormapChangeMask |
+               VisibilityChangeMask |
+               StructureNotifyMask);
+   XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
+}
+
+/**
+ * Retrieves the atom value associated with the given name.
+ * @param  name The given name.
+ * @return Associated atom value.
+ */
+EAPI Ecore_X_Atom    
+ecore_x_atom_get(const char *name)
+{
+   if (!_ecore_x_disp) return 0;
+   return XInternAtom(_ecore_x_disp, name, False);
+}
+
+EAPI void
+ecore_x_atoms_get(const char **names, int num, Ecore_X_Atom *atoms)
+{
+   Atom *atoms_int;
+   int i;
+   
+   if (!_ecore_x_disp) return;
+   atoms_int = alloca(num * sizeof(Atom));
+   XInternAtoms(_ecore_x_disp, (char **)names, num, False, atoms_int);
+   for (i = 0; i < num; i++)
+     atoms[i] = atoms_int[i];
+}
+
+
+
+
+
+
+EAPI int
+ecore_x_window_attributes_get(Ecore_X_Window win, Ecore_X_Window_Attributes *att_ret)
+{
+   XWindowAttributes att;
+   
+   if (!XGetWindowAttributes(_ecore_x_disp, win, &att)) return 0;
+   memset(att_ret, 0, sizeof(Ecore_X_Window_Attributes));
+   att_ret->root = att.root;
+   att_ret->x = att.x;
+   att_ret->y = att.y;
+   att_ret->w = att.width;
+   att_ret->h = att.height;
+   att_ret->border = att.border_width;
+   att_ret->depth = att.depth;
+   if (att.map_state != IsUnmapped) att_ret->visible = 1;
+   if (att.map_state == IsViewable) att_ret->viewable = 1;
+   if (att.override_redirect) att_ret->override = 1;
+   if (att.class == InputOnly) att_ret->input_only = 1;
+   if (att.save_under) att_ret->save_under = 1;
+   att_ret->event_mask.mine = att.your_event_mask;
+   att_ret->event_mask.all = att.all_event_masks;
+   att_ret->event_mask.no_propagate = att.do_not_propagate_mask;
+   att_ret->window_gravity = att.win_gravity;
+   att_ret->pixel_gravity = att.bit_gravity;
+   att_ret->colormap = att.colormap;
+   att_ret->visual = att.visual;
+   return 1;
+}
+
+EAPI void
+ecore_x_window_save_set_add(Ecore_X_Window win)
+{
+   XAddToSaveSet(_ecore_x_disp, win);
+}
+
+EAPI void
+ecore_x_window_save_set_del(Ecore_X_Window win)
+{
+   XRemoveFromSaveSet(_ecore_x_disp, win);
+}
+
+EAPI Ecore_X_Window *
+ecore_x_window_children_get(Ecore_X_Window win, int *num)
+{
+   Ecore_X_Window     *windows = NULL;
+   Window              root_ret = 0, parent_ret = 0, *children_ret = NULL;
+   unsigned int        children_ret_num = 0;
+   
+   if (!XQueryTree(_ecore_x_disp, win, &root_ret, &parent_ret, &children_ret,
+                  &children_ret_num))
+     {
+       return NULL;
+     }
+   if (children_ret)
+     {
+       windows = malloc(children_ret_num * sizeof(Ecore_X_Window));
+       if (windows)
+         {
+            unsigned int i;
+            
+            for (i = 0; i < children_ret_num; i++)
+              windows[i] = children_ret[i];
+            *num = children_ret_num;
+         }
+       XFree(children_ret);
+     }
+   return windows;
+}
+
+EAPI int
+ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold)
+{
+   return XChangePointerControl(_ecore_x_disp, 1, 1, 
+                               accel_num, accel_denom, threshold);
+}
+
+
+EAPI int
+ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold)
+{
+   return XGetPointerControl(_ecore_x_disp, 
+                               accel_num, accel_denom, threshold);
+}
+
+EAPI int
+ecore_x_pointer_grab(Ecore_X_Window win)
+{
+   if (XGrabPointer(_ecore_x_disp, win, False,
+                   ButtonPressMask | ButtonReleaseMask | 
+                   EnterWindowMask | LeaveWindowMask | PointerMotionMask,
+                   GrabModeAsync, GrabModeAsync,
+                   None, None, CurrentTime) == GrabSuccess) return 1;
+   return 0;
+}
+
+EAPI int
+ecore_x_pointer_confine_grab(Ecore_X_Window win)
+{
+   if (XGrabPointer(_ecore_x_disp, win, False,
+                   ButtonPressMask | ButtonReleaseMask | 
+                   EnterWindowMask | LeaveWindowMask | PointerMotionMask,
+                   GrabModeAsync, GrabModeAsync,
+                   win, None, CurrentTime) == GrabSuccess) return 1;
+   return 0;
+}
+
+EAPI void
+ecore_x_pointer_ungrab(void)
+{
+   XUngrabPointer(_ecore_x_disp, CurrentTime);
+}
+
+EAPI int
+ecore_x_pointer_warp(Ecore_X_Window win, int x, int y)
+{
+   return XWarpPointer(_ecore_x_disp, None, win, 0, 0, 0, 0, x, y);
+}
+
+EAPI int
+ecore_x_keyboard_grab(Ecore_X_Window win)
+{
+   if (XGrabKeyboard(_ecore_x_disp, win, False,
+                    GrabModeAsync, GrabModeAsync,
+                    CurrentTime) == GrabSuccess) return 1;
+   return 0;
+}
+
+EAPI void
+ecore_x_keyboard_ungrab(void)
+{
+   XUngrabKeyboard(_ecore_x_disp, CurrentTime);   
+}
+
+EAPI void
+ecore_x_grab(void)
+{
+   _ecore_x_grab_count++;
+   
+   if (_ecore_x_grab_count == 1)
+      XGrabServer(_ecore_x_disp);
+}
+
+EAPI void
+ecore_x_ungrab(void)
+{
+   _ecore_x_grab_count--;
+   if (_ecore_x_grab_count < 0)
+      _ecore_x_grab_count = 0;
+
+   if (_ecore_x_grab_count == 0)
+   {
+      XUngrabServer(_ecore_x_disp);
+      XSync(_ecore_x_disp, False);
+   }
+}
+
+int      _ecore_window_grabs_num = 0;
+Window  *_ecore_window_grabs = NULL;
+int    (*_ecore_window_grab_replay_func) (void *data, int event_type, void *event);
+void    *_ecore_window_grab_replay_data;
+
+EAPI void
+ecore_x_passive_grab_replay_func_set(int (*func) (void *data, int event_type, void *event), void *data)
+{
+   _ecore_window_grab_replay_func = func;
+   _ecore_window_grab_replay_data = data;
+}
+
+EAPI void
+ecore_x_window_button_grab(Ecore_X_Window win, int button, 
+                          Ecore_X_Event_Mask event_mask,
+                          int mod, int any_mod)
+{
+   unsigned int        b;
+   unsigned int        m;
+   unsigned int        locks[8];
+   int                 i, ev;
+   
+   b = button;
+   if (b == 0) b = AnyButton;
+   m = mod;
+   if (any_mod) m = AnyModifier;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   ev = event_mask;
+   for (i = 0; i < 8; i++)
+     XGrabButton(_ecore_x_disp, b, m | locks[i],
+                win, False, ev, GrabModeSync, GrabModeAsync, None, None);
+   _ecore_window_grabs_num++;
+   _ecore_window_grabs = realloc(_ecore_window_grabs, 
+                                _ecore_window_grabs_num * sizeof(Window));
+   _ecore_window_grabs[_ecore_window_grabs_num - 1] = win;
+}
+
+void
+_ecore_x_sync_magic_send(int val, Ecore_X_Window swin)
+{
+   XEvent xev;
+   
+   xev.xclient.type = ClientMessage;
+   xev.xclient.serial = 0;
+   xev.xclient.send_event = True;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = _ecore_x_private_win;
+   xev.xclient.format = 32;
+   xev.xclient.message_type = 27777;
+   xev.xclient.data.l[0] = 0x7162534;
+   xev.xclient.data.l[1] = 0x10000000 + val;
+   xev.xclient.data.l[2] = swin;
+   XSendEvent(_ecore_x_disp, _ecore_x_private_win, False, NoEventMask, &xev);
+}
+
+void
+_ecore_x_window_grab_remove(Ecore_X_Window win)
+{
+   int i, shuffle = 0;
+   
+   if (_ecore_window_grabs_num > 0)
+     {
+       for (i = 0; i < _ecore_window_grabs_num; i++)
+         {
+            if (shuffle) _ecore_window_grabs[i - 1] = _ecore_window_grabs[i];
+            if ((!shuffle) && (_ecore_window_grabs[i] == win))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_window_grabs_num--;
+            _ecore_window_grabs = realloc(_ecore_window_grabs, 
+                                          _ecore_window_grabs_num * sizeof(Window));
+         }
+     }
+}
+
+EAPI void
+ecore_x_window_button_ungrab(Ecore_X_Window win, int button, 
+                            int mod, int any_mod)
+{
+   unsigned int        b;
+   unsigned int        m;
+   unsigned int        locks[8];
+   int                 i;
+   
+   b = button;
+   if (b == 0) b = AnyButton;
+   m = mod;
+   if (any_mod) m = AnyModifier;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     XUngrabButton(_ecore_x_disp, b, m | locks[i], win);
+   _ecore_x_sync_magic_send(1, win);
+}
+
+int      _ecore_key_grabs_num = 0;
+Window  *_ecore_key_grabs = NULL;
+
+EAPI void
+ecore_x_window_key_grab(Ecore_X_Window win, const char *key, 
+                       int mod, int any_mod)
+{
+   KeyCode             keycode = 0;
+   KeySym              keysym;
+   unsigned int        m;
+   unsigned int        locks[8];
+   int                 i;
+   
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   else
+     {
+       keysym = XStringToKeysym(key);
+       if (keysym == NoSymbol) return;
+       keycode  = XKeysymToKeycode(_ecore_x_disp, XStringToKeysym(key));
+     }
+   if (keycode == 0) return;
+   
+   m = mod;
+   if (any_mod) m = AnyModifier;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     XGrabKey(_ecore_x_disp, keycode, m | locks[i],
+             win, False, GrabModeSync, GrabModeAsync);
+   _ecore_key_grabs_num++;
+   _ecore_key_grabs = realloc(_ecore_key_grabs,
+                             _ecore_key_grabs_num * sizeof(Window));
+   _ecore_key_grabs[_ecore_key_grabs_num - 1] = win;
+}
+
+void
+_ecore_x_key_grab_remove(Ecore_X_Window win)
+{
+   int i, shuffle = 0;
+   
+   if (_ecore_key_grabs_num > 0)
+     {
+       for (i = 0; i < _ecore_key_grabs_num; i++)
+         {
+            if (shuffle) _ecore_key_grabs[i - 1] = _ecore_key_grabs[i];
+            if ((!shuffle) && (_ecore_key_grabs[i] == win))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_key_grabs_num--;
+            _ecore_key_grabs = realloc(_ecore_key_grabs, 
+                                       _ecore_key_grabs_num * sizeof(Window));
+         }
+     }
+}
+
+EAPI void
+ecore_x_window_key_ungrab(Ecore_X_Window win, const char *key,
+                         int mod, int any_mod)
+{
+   KeyCode             keycode = 0;
+   KeySym              keysym;
+   unsigned int        m;
+   unsigned int        locks[8];
+   int                 i;
+
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   else
+     {
+       keysym = XStringToKeysym(key);
+       if (keysym == NoSymbol) return;
+       keycode  = XKeysymToKeycode(_ecore_x_disp, XStringToKeysym(key));
+     }
+   if (keycode == 0) return;
+   
+   m = mod;
+   if (any_mod) m = AnyModifier;
+   locks[0] = 0;
+   locks[1] = ECORE_X_LOCK_CAPS;
+   locks[2] = ECORE_X_LOCK_NUM;
+   locks[3] = ECORE_X_LOCK_SCROLL;
+   locks[4] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM;
+   locks[5] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_SCROLL;
+   locks[6] = ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
+   for (i = 0; i < 8; i++)
+     XUngrabKey(_ecore_x_disp, keycode, m | locks[i], win);
+   _ecore_x_sync_magic_send(2, win);
+}
+
+/**
+ * Send client message with given type and format 32.
+ *
+ * @param win     The window the message is sent to.
+ * @param type    The client message type.
+ * @param d0      The client message data item 1
+ * @param d1      The client message data item 2
+ * @param d2      The client message data item 3
+ * @param d3      The client message data item 4
+ * @param d4      The client message data item 5
+ *
+ * @return !0 on success.
+ */
+EAPI int
+ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type,
+                             Ecore_X_Event_Mask mask,
+                             long d0, long d1, long d2, long d3, long d4)
+{
+    XEvent xev;
+
+    xev.xclient.window = win;
+    xev.xclient.type = ClientMessage;
+    xev.xclient.message_type = type;
+    xev.xclient.format = 32;
+    xev.xclient.data.l[0] = d0;
+    xev.xclient.data.l[1] = d1;
+    xev.xclient.data.l[2] = d2;
+    xev.xclient.data.l[3] = d3;
+    xev.xclient.data.l[4] = d4;
+
+    return XSendEvent(_ecore_x_disp, win, False, mask, &xev);
+}
+
+/**
+ * Send client message with given type and format 8.
+ *
+ * @param win     The window the message is sent to.
+ * @param type    The client message type.
+ * @param data    Data to be sent.
+ * @param len     Number of data bytes, max 20.
+ *
+ * @return !0 on success.
+ */
+EAPI int
+ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type,
+                            const void *data, int len)
+{
+    XEvent xev;
+
+    xev.xclient.window = win;
+    xev.xclient.type = ClientMessage;
+    xev.xclient.message_type = type;
+    xev.xclient.format = 8;
+    if (len > 20)
+        len = 20;
+    memcpy(xev.xclient.data.b, data, len);
+    memset(xev.xclient.data.b + len, 0, 20 - len);
+
+    return XSendEvent(_ecore_x_disp, win, False, NoEventMask, &xev);
+}
+
+EAPI int
+ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y)
+{
+   XEvent xev;
+   XWindowAttributes att;
+   Window tw;
+   int rx, ry;
+
+   XGetWindowAttributes(_ecore_x_disp, win, &att);
+   XTranslateCoordinates(_ecore_x_disp, win, att.root, x, y, &rx, &ry, &tw);
+   xev.xmotion.type = MotionNotify;
+   xev.xmotion.window = win;
+   xev.xmotion.root = att.root;
+   xev.xmotion.subwindow = win;
+   xev.xmotion.time = _ecore_x_event_last_time;
+   xev.xmotion.x = x;
+   xev.xmotion.y = y;
+   xev.xmotion.x_root = rx;
+   xev.xmotion.y_root = ry;
+   xev.xmotion.state = 0;
+   xev.xmotion.is_hint = 0;
+   xev.xmotion.same_screen = 1;
+   return XSendEvent(_ecore_x_disp, win, True, PointerMotionMask, &xev);
+}
+
+EAPI int
+ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b)
+{
+   XEvent xev;
+   XWindowAttributes att;
+   Window tw;
+   int rx, ry;
+
+   XGetWindowAttributes(_ecore_x_disp, win, &att);
+   XTranslateCoordinates(_ecore_x_disp, win, att.root, x, y, &rx, &ry, &tw);
+   xev.xbutton.type = ButtonPress;
+   xev.xbutton.window = win;
+   xev.xbutton.root = att.root;
+   xev.xbutton.subwindow = win;
+   xev.xbutton.time = _ecore_x_event_last_time;
+   xev.xbutton.x = x;
+   xev.xbutton.y = y;
+   xev.xbutton.x_root = rx;
+   xev.xbutton.y_root = ry;
+   xev.xbutton.state = 1 << b;
+   xev.xbutton.button = b;
+   xev.xbutton.same_screen = 1;
+   return XSendEvent(_ecore_x_disp, win, True, ButtonPressMask, &xev);
+}
+
+EAPI int
+ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b)
+{
+   XEvent xev;
+   XWindowAttributes att;
+   Window tw;
+   int rx, ry;
+
+   XGetWindowAttributes(_ecore_x_disp, win, &att);
+   XTranslateCoordinates(_ecore_x_disp, win, att.root, x, y, &rx, &ry, &tw);
+   xev.xbutton.type = ButtonRelease;
+   xev.xbutton.window = win;
+   xev.xbutton.root = att.root;
+   xev.xbutton.subwindow = win;
+   xev.xbutton.time = _ecore_x_event_last_time;
+   xev.xbutton.x = x;
+   xev.xbutton.y = y;
+   xev.xbutton.x_root = rx;
+   xev.xbutton.y_root = ry;
+   xev.xbutton.state = 0;
+   xev.xbutton.button = b;
+   xev.xbutton.same_screen = 1;
+   return XSendEvent(_ecore_x_disp, win, True, ButtonReleaseMask, &xev);
+}
+
+EAPI void
+ecore_x_focus_reset(void)
+{
+   XSetInputFocus(_ecore_x_disp, PointerRoot, RevertToPointerRoot, CurrentTime);
+}
+
+EAPI void
+ecore_x_events_allow_all(void)
+{
+   XAllowEvents(_ecore_x_disp, AsyncBoth, CurrentTime);
+}
+
+EAPI void
+ecore_x_pointer_last_xy_get(int *x, int *y)
+{
+   if (x) *x = _ecore_x_event_last_root_x;
+   if (y) *y = _ecore_x_event_last_root_y;
+}
+
+EAPI void
+ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y)
+{
+   Window rwin, cwin;
+   int rx, ry, wx, wy, ret;
+   unsigned int mask;
+   
+   ret = XQueryPointer(_ecore_x_disp, win, &rwin, &cwin, &rx, &ry, &wx, &wy, &mask);
+   if (!ret) wx = wy = -1;
+   if (x) *x = wx;
+   if (y) *y = wy;
+}
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
diff --git a/src/lib/ecore_x/xlib/ecore_x_atoms.c b/src/lib/ecore_x/xlib/ecore_x_atoms.c
new file mode 100644 (file)
index 0000000..0ca85c1
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "config.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+#include "ecore_x_atoms_decl.h"
+
+typedef struct
+{
+   const char   *name;
+   Ecore_X_Atom *atom;
+} Atom_Item;
+
+void
+_ecore_x_atoms_init(void)
+{
+   const Atom_Item items[] =
+     {
+       { "ATOM", &ECORE_X_ATOM_ATOM },
+       { "CARDINAL", &ECORE_X_ATOM_CARDINAL },
+       { "COMPOUND_TEXT", &ECORE_X_ATOM_COMPOUND_TEXT },
+       { "FILE_NAME", &ECORE_X_ATOM_FILE_NAME },
+       { "STRING", &ECORE_X_ATOM_STRING },
+       { "TEXT", &ECORE_X_ATOM_TEXT },
+       { "UTF8_STRING", &ECORE_X_ATOM_UTF8_STRING },
+       { "WINDOW", &ECORE_X_ATOM_WINDOW },
+
+       { "JXSelectionWindowProperty", &ECORE_X_ATOM_SELECTION_PROP_XDND },
+       { "XdndSelection", &ECORE_X_ATOM_SELECTION_XDND },
+       { "XdndAware", &ECORE_X_ATOM_XDND_AWARE },
+       { "XdndEnter", &ECORE_X_ATOM_XDND_ENTER },
+       { "XdndTypeList", &ECORE_X_ATOM_XDND_TYPE_LIST },
+       { "XdndPosition", &ECORE_X_ATOM_XDND_POSITION },
+       { "XdndActionCopy", &ECORE_X_ATOM_XDND_ACTION_COPY },
+       { "XdndActionMove", &ECORE_X_ATOM_XDND_ACTION_MOVE },
+       { "XdndActionPrivate", &ECORE_X_ATOM_XDND_ACTION_PRIVATE },
+       { "XdndActionAsk", &ECORE_X_ATOM_XDND_ACTION_ASK },
+       { "XdndActionList", &ECORE_X_ATOM_XDND_ACTION_LIST },
+       { "XdndActionLink", &ECORE_X_ATOM_XDND_ACTION_LINK },
+       { "XdndActionDescription", &ECORE_X_ATOM_XDND_ACTION_DESCRIPTION },
+       { "XdndProxy", &ECORE_X_ATOM_XDND_PROXY },
+       { "XdndStatus", &ECORE_X_ATOM_XDND_STATUS },
+       { "XdndLeave", &ECORE_X_ATOM_XDND_LEAVE },
+       { "XdndDrop", &ECORE_X_ATOM_XDND_DROP },
+       { "XdndFinished", &ECORE_X_ATOM_XDND_FINISHED },
+
+       { "XdndActionCopy", &ECORE_X_DND_ACTION_COPY },
+       { "XdndActionMove", &ECORE_X_DND_ACTION_MOVE },
+       { "XdndActionLink", &ECORE_X_DND_ACTION_LINK },
+       { "XdndActionAsk", &ECORE_X_DND_ACTION_ASK },
+       { "XdndActionPrivate", &ECORE_X_DND_ACTION_PRIVATE },
+
+       { "_E_FRAME_SIZE", &ECORE_X_ATOM_E_FRAME_SIZE },
+
+       { "_WIN_LAYER", &ECORE_X_ATOM_WIN_LAYER },
+
+       { "WM_NAME", &ECORE_X_ATOM_WM_NAME },
+       { "WM_ICON_NAME", &ECORE_X_ATOM_WM_ICON_NAME },
+       { "WM_NORMAL_HINTS", &ECORE_X_ATOM_WM_NORMAL_HINTS },
+       { "WM_SIZE_HINTS", &ECORE_X_ATOM_WM_SIZE_HINTS },
+       { "WM_HINTS", &ECORE_X_ATOM_WM_HINTS },
+       { "WM_CLASS", &ECORE_X_ATOM_WM_CLASS },
+       { "WM_TRANSIENT_FOR", &ECORE_X_ATOM_WM_TRANSIENT_FOR },
+       { "WM_PROTOCOLS", &ECORE_X_ATOM_WM_PROTOCOLS },
+       { "WM_COLORMAP_WINDOWS", &ECORE_X_ATOM_WM_COLORMAP_WINDOWS },
+       { "WM_COMMAND", &ECORE_X_ATOM_WM_COMMAND },
+       { "WM_CLIENT_MACHINE", &ECORE_X_ATOM_WM_CLIENT_MACHINE },
+
+       { "WM_STATE", &ECORE_X_ATOM_WM_STATE },
+       { "WM_ICON_SIZE", &ECORE_X_ATOM_WM_ICON_SIZE },
+
+       { "WM_CHANGE_STATE", &ECORE_X_ATOM_WM_CHANGE_STATE },
+
+       { "WM_TAKE_FOCUS", &ECORE_X_ATOM_WM_TAKE_FOCUS },
+       { "WM_SAVE_YOURSELF", &ECORE_X_ATOM_WM_SAVE_YOURSELF },
+       { "WM_DELETE_WINDOW", &ECORE_X_ATOM_WM_DELETE_WINDOW },
+
+       { "WM_COLORMAP_NOTIFY", &ECORE_X_ATOM_WM_COLORMAP_NOTIFY },
+
+       { "SM_CLIENT_ID", &ECORE_X_ATOM_SM_CLIENT_ID },
+       { "WM_CLIENT_LEADER", &ECORE_X_ATOM_WM_CLIENT_LEADER },
+       { "WM_WINDOW_ROLE", &ECORE_X_ATOM_WM_WINDOW_ROLE },
+
+       { "_MOTIF_WM_HINTS", &ECORE_X_ATOM_MOTIF_WM_HINTS },
+
+       { "_NET_SUPPORTED", &ECORE_X_ATOM_NET_SUPPORTED },
+       { "_NET_CLIENT_LIST", &ECORE_X_ATOM_NET_CLIENT_LIST },
+       { "_NET_CLIENT_LIST_STACKING", &ECORE_X_ATOM_NET_CLIENT_LIST_STACKING },
+       { "_NET_NUMBER_OF_DESKTOPS", &ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS },
+       { "_NET_DESKTOP_GEOMETRY", &ECORE_X_ATOM_NET_DESKTOP_GEOMETRY },
+       { "_NET_DESKTOP_VIEWPORT", &ECORE_X_ATOM_NET_DESKTOP_VIEWPORT },
+       { "_NET_CURRENT_DESKTOP", &ECORE_X_ATOM_NET_CURRENT_DESKTOP },
+       { "_NET_DESKTOP_NAMES", &ECORE_X_ATOM_NET_DESKTOP_NAMES },
+       { "_NET_ACTIVE_WINDOW", &ECORE_X_ATOM_NET_ACTIVE_WINDOW },
+       { "_NET_WORKAREA", &ECORE_X_ATOM_NET_WORKAREA },
+       { "_NET_SUPPORTING_WM_CHECK", &ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK },
+       { "_NET_VIRTUAL_ROOTS", &ECORE_X_ATOM_NET_VIRTUAL_ROOTS },
+       { "_NET_DESKTOP_LAYOUT", &ECORE_X_ATOM_NET_DESKTOP_LAYOUT },
+       { "_NET_SHOWING_DESKTOP", &ECORE_X_ATOM_NET_SHOWING_DESKTOP },
+
+       { "_NET_CLOSE_WINDOW", &ECORE_X_ATOM_NET_CLOSE_WINDOW },
+       { "_NET_MOVERESIZE_WINDOW", &ECORE_X_ATOM_NET_MOVERESIZE_WINDOW },
+       { "_NET_WM_MOVERESIZE", &ECORE_X_ATOM_NET_WM_MOVERESIZE },
+       { "_NET_RESTACK_WINDOW", &ECORE_X_ATOM_NET_RESTACK_WINDOW },
+
+       { "_NET_REQUEST_FRAME_EXTENTS", &ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS },
+
+       { "_NET_WM_NAME", &ECORE_X_ATOM_NET_WM_NAME },
+       { "_NET_WM_VISIBLE_NAME", &ECORE_X_ATOM_NET_WM_VISIBLE_NAME },
+       { "_NET_WM_ICON_NAME", &ECORE_X_ATOM_NET_WM_ICON_NAME },
+       { "_NET_WM_VISIBLE_ICON_NAME", &ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME },
+       { "_NET_WM_DESKTOP", &ECORE_X_ATOM_NET_WM_DESKTOP },
+
+       { "_NET_WM_WINDOW_TYPE", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE },
+       { "_NET_WM_WINDOW_TYPE_DESKTOP", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP },
+       { "_NET_WM_WINDOW_TYPE_DOCK", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK },
+       { "_NET_WM_WINDOW_TYPE_TOOLBAR", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR },
+       { "_NET_WM_WINDOW_TYPE_MENU", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU },
+       { "_NET_WM_WINDOW_TYPE_UTILITY", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY },
+       { "_NET_WM_WINDOW_TYPE_SPLASH", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH },
+       { "_NET_WM_WINDOW_TYPE_DIALOG", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG },
+       { "_NET_WM_WINDOW_TYPE_NORMAL", &ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL },
+
+       { "_NET_WM_STATE", &ECORE_X_ATOM_NET_WM_STATE },
+       { "_NET_WM_STATE_MODAL", &ECORE_X_ATOM_NET_WM_STATE_MODAL },
+       { "_NET_WM_STATE_STICKY", &ECORE_X_ATOM_NET_WM_STATE_STICKY },
+       { "_NET_WM_STATE_MAXIMIZED_VERT", &ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT },
+       { "_NET_WM_STATE_MAXIMIZED_HORZ", &ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ },
+       { "_NET_WM_STATE_SHADED", &ECORE_X_ATOM_NET_WM_STATE_SHADED },
+       { "_NET_WM_STATE_SKIP_TASKBAR", &ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR },
+       { "_NET_WM_STATE_SKIP_PAGER", &ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER },
+       { "_NET_WM_STATE_HIDDEN", &ECORE_X_ATOM_NET_WM_STATE_HIDDEN },
+       { "_NET_WM_STATE_FULLSCREEN", &ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN },
+       { "_NET_WM_STATE_ABOVE", &ECORE_X_ATOM_NET_WM_STATE_ABOVE },
+       { "_NET_WM_STATE_BELOW", &ECORE_X_ATOM_NET_WM_STATE_BELOW },
+       { "_NET_WM_STATE_DEMANDS_ATTENTION", &ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION },
+
+       { "_NET_WM_ALLOWED_ACTIONS", &ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS },
+       { "_NET_WM_ACTION_MOVE", &ECORE_X_ATOM_NET_WM_ACTION_MOVE },
+       { "_NET_WM_ACTION_RESIZE", &ECORE_X_ATOM_NET_WM_ACTION_RESIZE },
+       { "_NET_WM_ACTION_MINIMIZE", &ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE },
+       { "_NET_WM_ACTION_SHADE", &ECORE_X_ATOM_NET_WM_ACTION_SHADE },
+       { "_NET_WM_ACTION_STICK", &ECORE_X_ATOM_NET_WM_ACTION_STICK },
+       { "_NET_WM_ACTION_MAXIMIZE_HORZ", &ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ },
+       { "_NET_WM_ACTION_MAXIMIZE_VERT", &ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT },
+       { "_NET_WM_ACTION_FULLSCREEN", &ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN },
+       { "_NET_WM_ACTION_CHANGE_DESKTOP", &ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP },
+       { "_NET_WM_ACTION_CLOSE", &ECORE_X_ATOM_NET_WM_ACTION_CLOSE },
+
+       { "_NET_WM_STRUT", &ECORE_X_ATOM_NET_WM_STRUT },
+       { "_NET_WM_STRUT_PARTIAL", &ECORE_X_ATOM_NET_WM_STRUT_PARTIAL },
+       { "_NET_WM_ICON_GEOMETRY", &ECORE_X_ATOM_NET_WM_ICON_GEOMETRY },
+       { "_NET_WM_ICON", &ECORE_X_ATOM_NET_WM_ICON },
+       { "_NET_WM_PID", &ECORE_X_ATOM_NET_WM_PID },
+       { "_NET_WM_HANDLED_ICONS", &ECORE_X_ATOM_NET_WM_HANDLED_ICONS },
+       { "_NET_WM_USER_TIME", &ECORE_X_ATOM_NET_WM_USER_TIME },
+       { "_NET_STARTUP_ID", &ECORE_X_ATOM_NET_STARTUP_ID },
+       { "_NET_FRAME_EXTENTS", &ECORE_X_ATOM_NET_FRAME_EXTENTS },
+
+       { "_NET_WM_PING", &ECORE_X_ATOM_NET_WM_PING },
+       { "_NET_WM_SYNC_REQUEST", &ECORE_X_ATOM_NET_WM_SYNC_REQUEST },
+       { "_NET_WM_SYNC_REQUEST_COUNTER", &ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER },
+
+       { "_NET_WM_WINDOW_OPACITY", &ECORE_X_ATOM_NET_WM_WINDOW_OPACITY },
+       { "_NET_WM_WINDOW_SHADOW", &ECORE_X_ATOM_NET_WM_WINDOW_SHADOW },
+       { "_NET_WM_WINDOW_SHADE", &ECORE_X_ATOM_NET_WM_WINDOW_SHADE },
+
+       { "TARGETS", &ECORE_X_ATOM_SELECTION_TARGETS },
+       { "CLIPBOARD", &ECORE_X_ATOM_SELECTION_PRIMARY },
+       { "PRIMARY", &ECORE_X_ATOM_SELECTION_SECONDARY },
+       { "SECONDARY", &ECORE_X_ATOM_SELECTION_CLIPBOARD },
+       { "_ECORE_SELECTION_PRIMARY", &ECORE_X_ATOM_SELECTION_PROP_PRIMARY },
+       { "_ECORE_SELECTION_SECONDARY", &ECORE_X_ATOM_SELECTION_PROP_SECONDARY },
+       { "_ECORE_SELECTION_CLIPBOARD", &ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD },
+
+       { "_E_VIRTUAL_KEYBOARD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD },
+       { "_E_VIRTUAL_KEYBOARD_STATE", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE },
+       { "_E_VIRTUAL_KEYBOARD_ON", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON },
+       { "_E_VIRTUAL_KEYBOARD_OFF", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF },
+       { "_E_VIRTUAL_KEYBOARD_ALPHA", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA },
+       { "_E_VIRTUAL_KEYBOARD_NUMERIC", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC },
+       { "_E_VIRTUAL_KEYBOARD_PIN", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN },
+       { "_E_VIRTUAL_KEYBOARD_PHONE_NUMBER", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER },
+       { "_E_VIRTUAL_KEYBOARD_HEX", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX },
+       { "_E_VIRTUAL_KEYBOARD_TERMINAL", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL },
+       { "_E_VIRTUAL_KEYBOARD_PASSWORD", &ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD }
+     };
+   Atom *atoms;
+   char **names;
+   int i, num;
+
+   num = sizeof(items) / sizeof(Atom_Item);
+   atoms = alloca(num * sizeof(Atom));
+   names = alloca(num * sizeof(char *));
+   for (i = 0; i < num; i++) names[i] = (char *)items[i].name;
+   XInternAtoms(_ecore_x_disp, names, num, False, atoms);
+   for (i = 0; i < num; i++) *(items[i].atom) = atoms[i];
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_composite.c b/src/lib/ecore_x/xlib/ecore_x_composite.c
new file mode 100644 (file)
index 0000000..486d042
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static int _composite_available;
+
+void
+_ecore_x_composite_init(void)
+{
+   _composite_available = 0;
+
+#ifdef ECORE_XCOMPOSITE
+   int major, minor;
+
+   if (XCompositeQueryVersion(_ecore_x_disp, &major, &minor))
+     _composite_available = 1;
+#endif
+}
+
+EAPI int
+ecore_x_composite_query(void)
+{
+   return _composite_available;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_cursor.c b/src/lib/ecore_x/xlib/ecore_x_cursor.c
new file mode 100644 (file)
index 0000000..d420a48
--- /dev/null
@@ -0,0 +1,223 @@
+#include "ecore_x_private.h"
+
+
+EAPI int
+ecore_x_cursor_color_supported_get(void)
+{
+   return _ecore_x_xcursor;
+}
+
+EAPI Ecore_X_Cursor
+ecore_x_cursor_new(Ecore_X_Window win, int *pixels, int w, int h, int hot_x, int hot_y)
+{
+#ifdef ECORE_XCURSOR
+   if (_ecore_x_xcursor)
+     {
+       Cursor c;
+       XcursorImage *xci;
+
+       xci = XcursorImageCreate(w, h);
+       if (xci)
+         {
+            int i;
+
+            xci->xhot = hot_x;
+            xci->yhot = hot_y;
+            xci->delay = 0;
+            for (i = 0; i < (w * h); i++)
+              {
+//               int r, g, b, a;
+//
+//               a = (pixels[i] >> 24) & 0xff;
+//               r = (((pixels[i] >> 16) & 0xff) * a) / 0xff;
+//               g = (((pixels[i] >> 8 ) & 0xff) * a) / 0xff;
+//               b = (((pixels[i]      ) & 0xff) * a) / 0xff;
+                 xci->pixels[i] = pixels[i];
+//                 (a << 24) | (r << 16) | (g << 8) | (b);
+              }
+            c = XcursorImageLoadCursor(_ecore_x_disp, xci);
+            XcursorImageDestroy(xci);
+            return c;
+         }
+     }
+   else
+#endif
+     {
+       XColor c1, c2;
+       Cursor c;
+       Pixmap pmap, mask;
+       GC gc;
+       XGCValues gcv;
+       XImage *xim;
+       unsigned int *pix;
+       int fr, fg, fb, br, bg, bb;
+       int brightest = 0;
+       int darkest = 255 * 3;
+       int x, y;
+       const int dither[2][2] =
+         {
+              {0, 2},
+              {3, 1}
+         };
+
+       pmap = XCreatePixmap(_ecore_x_disp, win, w, h, 1);
+       mask = XCreatePixmap(_ecore_x_disp, win, w, h, 1);
+       xim = XCreateImage(_ecore_x_disp,
+                          DefaultVisual(_ecore_x_disp, 0),
+                          1, ZPixmap, 0, NULL, w, h, 32, 0);
+       xim->data = malloc(xim->bytes_per_line * xim->height);
+
+       fr = 0x00; fg = 0x00; fb = 0x00;
+       br = 0xff; bg = 0xff; bb = 0xff;
+       pix = (unsigned int*)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 int r, g, b, a;
+
+                 a = (pix[0] >> 24) & 0xff;
+                 r = (pix[0] >> 16) & 0xff;
+                 g = (pix[0] >> 8 ) & 0xff;
+                 b = (pix[0]      ) & 0xff;
+                 if (a > 0)
+                   {
+                      if ((r + g + b) > brightest)
+                        {
+                           brightest = r + g + b;
+                           br = r;
+                           bg = g;
+                           bb = b;
+                        }
+                      if ((r + g + b) < darkest)
+                        {
+                           darkest = r + g + b;
+                           fr = r;
+                           fg = g;
+                           fb = b;
+                        }
+                   }
+                 pix++;
+              }
+         }
+
+       pix = (unsigned int*)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 int v;
+                 int r, g, b;
+                 int d1, d2;
+
+                 r = (pix[0] >> 16) & 0xff;
+                 g = (pix[0] >> 8 ) & 0xff;
+                 b = (pix[0]      ) & 0xff;
+                 d1 =
+                   ((r - fr) * (r - fr)) +
+                   ((g - fg) * (g - fg)) +
+                   ((b - fb) * (b - fb));
+                 d2 =
+                   ((r - br) * (r - br)) +
+                   ((g - bg) * (g - bg)) +
+                   ((b - bb) * (b - bb));
+                 if (d1 + d2)
+                   {
+                      v = (((d2 * 255) / (d1 + d2)) * 5) / 256;
+                      if (v > dither[x & 0x1][y & 0x1]) v = 1;
+                      else v = 0;
+                   }
+                 else
+                   {
+                      v = 0;
+                   }
+                 XPutPixel(xim, x, y, v);
+                 pix++;
+              }
+         }
+       gc = XCreateGC(_ecore_x_disp, pmap, 0, &gcv);
+       XPutImage(_ecore_x_disp, pmap, gc, xim, 0, 0, 0, 0, w, h);
+       XFreeGC(_ecore_x_disp, gc);
+
+       pix = (unsigned int*)pixels;
+       for (y = 0; y < h; y++)
+         {
+            for (x = 0; x < w; x++)
+              {
+                 int v;
+
+                 v = (((pix[0] >> 24) & 0xff) * 5) / 256;
+                 if (v > dither[x & 0x1][y & 0x1]) v = 1;
+                 else v = 0;
+                 XPutPixel(xim, x, y, v);
+                 pix++;
+              }
+         }
+       gc = XCreateGC(_ecore_x_disp, mask, 0, &gcv);
+       XPutImage(_ecore_x_disp, mask, gc, xim, 0, 0, 0, 0, w, h);
+       XFreeGC(_ecore_x_disp, gc);
+
+       free(xim->data);
+       xim->data = NULL;
+       XDestroyImage(xim);
+
+       c1.pixel = 0;
+       c1.red   = fr << 8 | fr;
+       c1.green = fg << 8 | fg;
+       c1.blue  = fb << 8 | fb;
+       c1.flags = DoRed | DoGreen | DoBlue;
+
+       c2.pixel = 0;
+       c2.red   = br << 8 | br;
+       c2.green = bg << 8 | bg;
+       c2.blue  = bb << 8 | bb;
+       c2.flags = DoRed | DoGreen | DoBlue;
+
+       c = XCreatePixmapCursor(_ecore_x_disp,
+                               pmap, mask,
+                               &c1, &c2,
+                               hot_x, hot_y);
+       XFreePixmap(_ecore_x_disp, pmap);
+       XFreePixmap(_ecore_x_disp, mask);
+       return c;
+     }
+   return 0;
+}
+
+EAPI void
+ecore_x_cursor_free(Ecore_X_Cursor c)
+{
+   XFreeCursor(_ecore_x_disp, c);
+}
+
+/*
+ * Returns the cursor for the given shape.
+ * Note that the return value must not be freed with
+ * ecore_x_cursor_free()!
+ */
+EAPI Ecore_X_Cursor
+ecore_x_cursor_shape_get(int shape)
+{
+   /* Shapes are defined in Ecore_X_Cursor.h */
+   return XCreateFontCursor(_ecore_x_disp, shape);
+}
+
+EAPI void
+ecore_x_cursor_size_set(int size)
+{
+#ifdef ECORE_XCURSOR
+   XcursorSetDefaultSize(_ecore_x_disp, size);
+#else
+   size = 0;
+#endif
+}
+
+EAPI int
+ecore_x_cursor_size_get(void)
+{
+#ifdef ECORE_XCURSOR
+   return XcursorGetDefaultSize(_ecore_x_disp);
+#else
+   return 0;
+#endif
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_damage.c b/src/lib/ecore_x/xlib/ecore_x_damage.c
new file mode 100644 (file)
index 0000000..3507ce2
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static int _damage_available;
+#ifdef ECORE_XDAMAGE
+static int _damage_major, _damage_minor;
+#endif
+
+void
+_ecore_x_damage_init(void)
+{
+#ifdef ECORE_XDAMAGE
+   _damage_major = 1;
+   _damage_minor = 0;
+
+   if (XDamageQueryVersion(_ecore_x_disp, &_damage_major, &_damage_minor))
+     _damage_available = 1;
+   else
+     _damage_available = 0;
+#else
+   _damage_available = 0;
+#endif
+}
+
+EAPI int
+ecore_x_damage_query(void)
+{
+   return _damage_available;
+}
+
+EAPI Ecore_X_Damage
+ecore_x_damage_new(Ecore_X_Drawable d, Ecore_X_Damage_Report_Level level)
+{
+#ifdef ECORE_XDAMAGE
+   Ecore_X_Damage damage;
+
+   damage = XDamageCreate(_ecore_x_disp, d, level);
+   return damage;
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+ecore_x_damage_del(Ecore_X_Damage damage)
+{
+#ifdef ECORE_XDAMAGE
+   XDamageDestroy(_ecore_x_disp, damage);
+#endif
+}
+
+EAPI void
+ecore_x_damage_subtract(Ecore_X_Damage damage, Ecore_X_Region repair, Ecore_X_Region parts)
+{
+#ifdef ECORE_XDAMAGE
+   XDamageSubtract(_ecore_x_disp, damage, repair, parts);
+#endif
+}
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_dnd.c b/src/lib/ecore_x/xlib/ecore_x_dnd.c
new file mode 100644 (file)
index 0000000..61a64df
--- /dev/null
@@ -0,0 +1,568 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+EAPI int ECORE_X_EVENT_XDND_ENTER = 0;
+EAPI int ECORE_X_EVENT_XDND_POSITION = 0;
+EAPI int ECORE_X_EVENT_XDND_STATUS = 0;
+EAPI int ECORE_X_EVENT_XDND_LEAVE = 0;
+EAPI int ECORE_X_EVENT_XDND_DROP = 0;
+EAPI int ECORE_X_EVENT_XDND_FINISHED = 0;
+
+static Ecore_X_DND_Source *_source = NULL;
+static Ecore_X_DND_Target *_target = NULL;
+static int _ecore_x_dnd_init_count = 0;
+
+typedef struct _Version_Cache_Item
+{
+   Ecore_X_Window win;
+   int ver;
+} Version_Cache_Item;
+static Version_Cache_Item *_version_cache = NULL;
+static int _version_cache_num = 0, _version_cache_alloc = 0;
+
+void
+_ecore_x_dnd_init(void)
+{
+   if (!_ecore_x_dnd_init_count)
+     {
+       _source = calloc(1, sizeof(Ecore_X_DND_Source));
+       _source->version = ECORE_X_DND_VERSION;
+       _source->win = None;
+       _source->dest = None;
+       _source->state = ECORE_X_DND_SOURCE_IDLE;
+
+       _target = calloc(1, sizeof(Ecore_X_DND_Target));
+       _target->win = None;
+       _target->source = None;
+       _target->state = ECORE_X_DND_TARGET_IDLE;
+       
+       ECORE_X_EVENT_XDND_ENTER              = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_POSITION           = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_STATUS             = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_LEAVE              = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_DROP               = ecore_event_type_new();
+       ECORE_X_EVENT_XDND_FINISHED           = ecore_event_type_new();
+     }
+
+   _ecore_x_dnd_init_count++;
+}
+
+void
+_ecore_x_dnd_shutdown(void)
+{
+   _ecore_x_dnd_init_count--;
+   if (_ecore_x_dnd_init_count > 0)
+     return;
+
+   if (_source)
+     free(_source);
+   _source = NULL;
+
+   if (_target)
+     free(_target);
+   _target = NULL;
+
+   _ecore_x_dnd_init_count = 0;
+}
+
+static int
+_ecore_x_dnd_converter_copy(char *target, void *data, int size, void **data_ret, int *size_ret)
+{
+   XTextProperty text_prop;
+   char *mystr;
+   XICCEncodingStyle style = XTextStyle;
+
+   if (!data || !size)
+     return 0;
+
+   mystr = calloc(1, size + 1);
+   if (!mystr) return 0;
+   memcpy(mystr, data, size);
+
+   if (XmbTextListToTextProperty(_ecore_x_disp, &mystr, 1, style, &text_prop) == Success)
+     {
+       int bufsize = strlen(text_prop.value) + 1;
+       *data_ret = malloc(bufsize);
+       memcpy(*data_ret, text_prop.value, bufsize);
+       *size_ret = bufsize;
+       XFree(text_prop.value);
+       free(mystr);
+       return 1;
+     }
+   else
+     {
+       free(mystr);
+       return 0;
+     }
+}
+
+EAPI void
+ecore_x_dnd_aware_set(Ecore_X_Window win, int on)
+{
+   Ecore_X_Atom prop_data = ECORE_X_DND_VERSION;
+
+   if (on)
+     ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_AWARE,
+                                     XA_ATOM, 32, &prop_data, 1);
+   else
+     ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_AWARE);
+}
+
+EAPI int
+ecore_x_dnd_version_get(Ecore_X_Window win)
+{
+   unsigned char *prop_data;
+   int num;
+
+   // this looks hacky - and it is, but we need a way of caching info about
+   // a window while dragging, because we literally query this every mouse
+   // move and going to and from x multiple times per move is EXPENSIVE
+   // and slows things down, puts lots of load on x etc.
+   if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
+     {
+       if (_version_cache)
+         {
+            int i;
+            
+            for (i = 0; i < _version_cache_num; i++)
+              {
+                 if (_version_cache[i].win == win)
+                   return _version_cache[i].ver;
+              }
+         }
+     }
+     
+   if (ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_AWARE,
+                                        XA_ATOM, 32, &prop_data, &num))
+     {
+       int version = (int) *prop_data;
+       free(prop_data);
+       if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
+         {
+            _version_cache_num++;
+            if (_version_cache_num > _version_cache_alloc)
+              _version_cache_alloc += 16;
+            _version_cache = realloc(_version_cache, _version_cache_alloc * sizeof(Version_Cache_Item));
+            _version_cache[_version_cache_num - 1].win = win;
+            _version_cache[_version_cache_num - 1].ver = version;
+         }
+       return version;
+     }
+   if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
+     {
+       _version_cache_num++;
+       if (_version_cache_num > _version_cache_alloc)
+         _version_cache_alloc += 16;
+       _version_cache = realloc(_version_cache, _version_cache_alloc * sizeof(Version_Cache_Item));
+       _version_cache[_version_cache_num - 1].win = win;
+       _version_cache[_version_cache_num - 1].ver = 0;
+     }
+   return 0;
+}
+
+EAPI int
+ecore_x_dnd_type_isset(Ecore_X_Window win, const char *type)
+{
+   int                  num, i, ret = 0;
+   unsigned char       *data;
+   Ecore_X_Atom        *atoms, atom;
+
+   if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                        XA_ATOM, 32, &data, &num))
+     return ret;
+
+   atom = ecore_x_atom_get(type);
+   atoms = (Ecore_X_Atom *)data;
+
+   for (i = 0; i < num; ++i)
+     {
+       if (atom == atoms[i])
+         {
+            ret = 1;
+            break;
+         }
+     }
+
+   XFree(data);
+   return ret;
+}
+
+EAPI void
+ecore_x_dnd_type_set(Ecore_X_Window win, const char *type, int on)
+{
+   Ecore_X_Atom      atom;
+   Ecore_X_Atom      *oldset = NULL, *newset = NULL;
+   int               i, j = 0, num = 0;
+   unsigned char     *data = NULL;
+   unsigned char     *old_data = NULL;
+
+   atom = ecore_x_atom_get(type);
+   ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                    XA_ATOM, 32, &old_data, &num);
+   oldset = (Ecore_X_Atom *)old_data;
+
+   if (on)
+     {
+       if (ecore_x_dnd_type_isset(win, type))
+         {
+            XFree(old_data);
+            return;
+         }
+       newset = calloc(num + 1, sizeof(Ecore_X_Atom));
+       if (!newset) return;
+       data = (unsigned char *)newset;
+
+       for (i = 0; i < num; i++)
+         newset[i + 1] = oldset[i];
+       /* prepend the new type */
+       newset[0] = atom;
+
+       ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                        XA_ATOM, 32, data, num + 1);
+     }
+   else
+     {
+       if (!ecore_x_dnd_type_isset(win, type))
+         {
+            XFree(old_data);
+            return;
+         }
+       newset = calloc(num - 1, sizeof(Ecore_X_Atom));
+       if (!newset)
+         {
+            XFree(old_data);
+            return;
+         }
+       data = (unsigned char *)newset;
+       for (i = 0; i < num; i++)
+         if (oldset[i] != atom)
+           newset[j++] = oldset[i];
+
+       ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                        XA_ATOM, 32, data, num - 1);
+     }
+   XFree(oldset);
+   free(newset);
+}
+
+EAPI void
+ecore_x_dnd_types_set(Ecore_X_Window win, char **types, unsigned int num_types)
+{
+   Ecore_X_Atom      *newset = NULL;
+   unsigned int      i;
+   unsigned char     *data = NULL;
+
+   if (!num_types)
+     {
+       ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_TYPE_LIST);
+     }
+   else
+     {
+       newset = calloc(num_types, sizeof(Ecore_X_Atom));
+       if (!newset) return;
+       data = (unsigned char *)newset;
+       for (i = 0; i < num_types; i++)
+         {
+            newset[i] = ecore_x_atom_get(types[i]);
+            ecore_x_selection_converter_atom_add(newset[i], _ecore_x_dnd_converter_copy);
+         }
+       ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                        XA_ATOM, 32, data, num_types);
+       free(newset);
+     }
+}
+
+EAPI void
+ecore_x_dnd_actions_set(Ecore_X_Window win, Ecore_X_Atom *actions, unsigned int num_actions)
+{
+   unsigned int      i;
+   unsigned char     *data = NULL;
+
+   if (!num_actions)
+     {
+       ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_ACTION_LIST);
+     }
+   else
+     {
+       data = (unsigned char *)actions;
+       for (i = 0; i < num_actions; i++)
+         {
+            ecore_x_selection_converter_atom_add(actions[i], _ecore_x_dnd_converter_copy);
+         }
+       ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_ACTION_LIST,
+                                        XA_ATOM, 32, data, num_actions);
+     }
+}
+
+Ecore_X_DND_Source *
+_ecore_x_dnd_source_get(void)
+{
+   return _source;
+}
+
+Ecore_X_DND_Target *
+_ecore_x_dnd_target_get(void)
+{
+   return _target;
+}
+
+EAPI int
+ecore_x_dnd_begin(Ecore_X_Window source, unsigned char *data, int size)
+{
+
+   if (!ecore_x_dnd_version_get(source))
+     return 0;
+
+   /* Take ownership of XdndSelection */
+   if (!ecore_x_selection_xdnd_set(source, data, size))
+     return 0;
+
+   if (_version_cache)
+     {
+       free(_version_cache);
+       _version_cache = NULL;
+       _version_cache_num = 0;
+       _version_cache_alloc = 0;
+     }
+   ecore_x_window_shadow_tree_flush();
+   
+   _source->win = source;
+   ecore_x_window_ignore_set(_source->win, 1);
+   _source->state = ECORE_X_DND_SOURCE_DRAGGING;
+   _source->time = _ecore_x_event_last_time;
+
+   /* Default Accepted Action: move */
+   _source->action = ECORE_X_ATOM_XDND_ACTION_MOVE;
+   _source->accepted_action = None;
+   _source->dest = None;
+
+   return 1;
+}
+
+EAPI int
+ecore_x_dnd_drop(void)
+{
+   XEvent xev;
+   int status = 0;
+
+   if (_source->dest)
+     {
+       xev.xany.type = ClientMessage;
+       xev.xany.display = _ecore_x_disp;
+       xev.xclient.format = 32;
+       xev.xclient.window = _source->dest;
+
+       if (_source->will_accept)
+         {
+            xev.xclient.message_type = ECORE_X_ATOM_XDND_DROP;
+            xev.xclient.data.l[0] = _source->win;
+            xev.xclient.data.l[1] = 0;
+            xev.xclient.data.l[2] = _source->time;
+            XSendEvent(_ecore_x_disp, _source->dest, False, 0, &xev);
+            _source->state = ECORE_X_DND_SOURCE_DROPPED;
+            status = 1;
+         }
+       else
+         {
+            xev.xclient.message_type = ECORE_X_ATOM_XDND_LEAVE;
+            xev.xclient.data.l[0] = _source->win;
+            xev.xclient.data.l[1] = 0;
+            XSendEvent(_ecore_x_disp, _source->dest, False, 0, &xev);
+            _source->state = ECORE_X_DND_SOURCE_IDLE;
+         }
+     }
+   else
+     {
+       /* Dropping on nothing */
+       ecore_x_selection_xdnd_clear();
+       _source->state = ECORE_X_DND_SOURCE_IDLE;
+     }
+   ecore_x_window_ignore_set(_source->win, 0);
+
+   return status;
+}
+
+EAPI void
+ecore_x_dnd_send_status(int will_accept, int suppress, Ecore_X_Rectangle rectangle, Ecore_X_Atom action)
+{
+   XEvent xev;
+
+   if (_target->state == ECORE_X_DND_TARGET_IDLE)
+     return;
+
+   memset(&xev, 0, sizeof(XEvent));
+
+   _target->will_accept = will_accept;
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.message_type = ECORE_X_ATOM_XDND_STATUS;
+   xev.xclient.format = 32;
+   xev.xclient.window = _target->source;
+
+   xev.xclient.data.l[0] = _target->win;
+   xev.xclient.data.l[1] = 0;
+   if (will_accept)
+     xev.xclient.data.l[1] |= 0x1UL;
+   if (!suppress)
+     xev.xclient.data.l[1] |= 0x2UL;
+
+   /* Set rectangle information */
+   xev.xclient.data.l[2] = rectangle.x;
+   xev.xclient.data.l[2] <<= 16;
+   xev.xclient.data.l[2] |= rectangle.y;
+   xev.xclient.data.l[3] = rectangle.width;
+   xev.xclient.data.l[3] <<= 16;
+   xev.xclient.data.l[3] |= rectangle.height;
+
+   if (will_accept)
+     {
+       xev.xclient.data.l[4] = action;
+       _target->accepted_action = action;
+     }
+   else
+     {
+       xev.xclient.data.l[4] = None;
+       _target->accepted_action = action;
+     }
+
+   XSendEvent(_ecore_x_disp, _target->source, False, 0, &xev);
+}
+
+EAPI void
+ecore_x_dnd_send_finished(void)
+{
+   XEvent   xev;
+
+   if (_target->state == ECORE_X_DND_TARGET_IDLE)
+     return;
+
+   xev.xany.type = ClientMessage;
+   xev.xany.display = _ecore_x_disp;
+   xev.xclient.message_type = ECORE_X_ATOM_XDND_FINISHED;
+   xev.xclient.format = 32;
+   xev.xclient.window = _target->source;
+
+   xev.xclient.data.l[0] = _target->win;
+   xev.xclient.data.l[1] = 0;
+   xev.xclient.data.l[2] = 0;
+   if (_target->will_accept)
+     {
+       xev.xclient.data.l[1] |= 0x1UL;
+       xev.xclient.data.l[2] = _target->accepted_action;
+     }
+   XSendEvent(_ecore_x_disp, _target->source, False, 0, &xev);
+
+   _target->state = ECORE_X_DND_TARGET_IDLE;
+}
+
+void
+_ecore_x_dnd_drag(Ecore_X_Window root, int x, int y)
+{
+   XEvent          xev;
+   Ecore_X_Window  win;
+   Ecore_X_Window *skip;
+   int             num;
+
+   if (_source->state != ECORE_X_DND_SOURCE_DRAGGING)
+     return;
+
+   /* Preinitialize XEvent struct */
+   memset(&xev, 0, sizeof(XEvent));
+   xev.xany.type = ClientMessage;
+   xev.xany.display = _ecore_x_disp;
+   xev.xclient.format = 32;
+
+   /* Attempt to find a DND-capable window under the cursor */
+   skip = ecore_x_window_ignore_list(&num);
+// WARNING - this function is HEAVY. it goes to and from x a LOT walking the
+// window tree - use the SHADOW version - makes a 1-off tree copy, then uses
+// that instead.
+//   win = ecore_x_window_at_xy_with_skip_get(x, y, skip, num);
+   win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x, y, skip, num);
+
+// NOTE: This now uses the shadow version to find parent windows
+//   while ((win) && !(ecore_x_dnd_version_get(win)))
+//     win = ecore_x_window_parent_get(win);
+   while ((win) && !(ecore_x_dnd_version_get(win)))
+     win = ecore_x_window_shadow_parent_get(root, win);
+
+   /* Send XdndLeave to current destination window if we have left it */
+   if ((_source->dest) && (win != _source->dest))
+     {
+       xev.xclient.window = _source->dest;
+       xev.xclient.message_type = ECORE_X_ATOM_XDND_LEAVE;
+       xev.xclient.data.l[0] = _source->win;
+       xev.xclient.data.l[1] = 0;
+
+       XSendEvent(_ecore_x_disp, _source->dest, False, 0, &xev);
+       _source->suppress = 0;
+     }
+
+   if (win)
+     {
+       int x1, x2, y1, y2;
+
+       _source->version = MIN(ECORE_X_DND_VERSION,
+                            ecore_x_dnd_version_get(win));
+       if (win != _source->dest)
+         {
+            int i;
+            unsigned char *data;
+            Ecore_X_Atom *types;
+
+            ecore_x_window_prop_property_get(_source->win, ECORE_X_ATOM_XDND_TYPE_LIST,
+                                             XA_ATOM, 32, &data, &num);
+            types = (Ecore_X_Atom *)data;
+
+            /* Entered new window, send XdndEnter */
+            xev.xclient.window = win;
+            xev.xclient.message_type = ECORE_X_ATOM_XDND_ENTER;
+            xev.xclient.data.l[0] = _source->win;
+            xev.xclient.data.l[1] = 0;
+            if (num > 3)
+              xev.xclient.data.l[1] |= 0x1UL;
+            else
+              xev.xclient.data.l[1] &= 0xfffffffeUL;
+            xev.xclient.data.l[1] |= ((unsigned long) _source->version) << 24;
+
+            for (i = 2; i < 5; i++)
+              xev.xclient.data.l[i] = 0;
+            for (i = 0; i < MIN(num, 3); ++i)
+              xev.xclient.data.l[i + 2] = types[i];
+            XFree(data);
+            XSendEvent(_ecore_x_disp, win, False, 0, &xev);
+            _source->await_status = 0;
+            _source->will_accept = 0;
+         }
+
+       /* Determine if we're still in the rectangle from the last status */
+       x1 = _source->rectangle.x;
+       x2 = _source->rectangle.x + _source->rectangle.width;
+       y1 = _source->rectangle.y;
+       y2 = _source->rectangle.y + _source->rectangle.height;
+
+       if ((!_source->await_status) ||
+           (!_source->suppress) ||
+           ((x < x1) || (x > x2) || (y < y1) || (y > y2)))
+         {
+            xev.xclient.window = win;
+            xev.xclient.message_type = ECORE_X_ATOM_XDND_POSITION;
+            xev.xclient.data.l[0] = _source->win;
+            xev.xclient.data.l[1] = 0; /* Reserved */
+            xev.xclient.data.l[2] = ((x << 16) & 0xffff0000) | (y & 0xffff);
+            xev.xclient.data.l[3] = _source->time; /* Version 1 */
+            xev.xclient.data.l[4] = _source->action; /* Version 2, Needs to be pre-set */
+            XSendEvent(_ecore_x_disp, win, False, 0, &xev);
+
+            _source->await_status = 1;
+         }
+     }
+
+   _source->dest = win;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_dpms.c b/src/lib/ecore_x/xlib/ecore_x_dpms.c
new file mode 100644 (file)
index 0000000..d4dac43
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+
+static int _dpms_available;
+
+void
+_ecore_x_dpms_init(void)
+{
+#ifdef ECORE_XDPMS
+   int _dpms_major, _dpms_minor;
+
+   _dpms_major = 1;
+   _dpms_minor = 0;
+
+   if (DPMSGetVersion(_ecore_x_disp, &_dpms_major, &_dpms_minor))
+     _dpms_available = 1;
+   else
+     _dpms_available = 0;
+#else
+   _dpms_available = 0;
+#endif
+}
+
+/**
+ * @defgroup Ecore_X_DPMS_Group X DPMS Extension Functions
+ *
+ * Functions related to the X DPMS extension.
+ */
+
+/**
+ * Checks if the X DPMS extension is available on the server.
+ * @return @c 1 if the X DPMS extension is available, @c 0 otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_query(void)
+{
+   return _dpms_available;
+}
+
+/**
+ * Checks if the X server is capable of DPMS.
+ * @return @c 1 if the X server is capable of DPMS, @c 0 otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_capable_get(void)
+{
+#ifdef ECORE_XDPMS
+   return DPMSCapable(_ecore_x_disp);
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Checks the DPMS state of the display.
+ * @return @c 1 if DPMS is enabled, @c 0 otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_enabled_get(void)
+{
+#ifdef ECORE_XDPMS
+   unsigned char state;
+   unsigned short power_lvl;
+
+   DPMSInfo(_ecore_x_disp, &power_lvl, &state);
+   return state;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Sets the DPMS state of the display.
+ * @param enabled @c 0 to disable DPMS characteristics of the server, enable it otherwise.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_enabled_set(int enabled)
+{
+#ifdef ECORE_XDPMS
+   if (enabled)
+     DPMSEnable(_ecore_x_disp);
+   else
+     DPMSDisable(_ecore_x_disp);
+#endif
+}
+
+/**
+ * Gets the timeouts. The values are in unit of seconds.
+ * @param standby Amount of time of inactivity before standby mode will be invoked.
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeouts_get(unsigned int *standby, unsigned int *suspend, unsigned int *off)
+{
+#ifdef ECORE_XDPMS
+   DPMSGetTimeouts(_ecore_x_disp, (unsigned short *)standby, 
+                  (unsigned short *)suspend, (unsigned short *)off);
+#endif
+}
+
+/**
+ * Sets the timeouts. The values are in unit of seconds.
+ * @param standby Amount of time of inactivity before standby mode will be invoked.
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI int
+ecore_x_dpms_timeouts_set(unsigned int standby, unsigned int suspend, unsigned int off)
+{
+#ifdef ECORE_XDPMS
+   return DPMSSetTimeouts(_ecore_x_disp, standby, suspend, off);
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Returns the amount of time of inactivity before standby mode is invoked.
+ * @return The standby timeout value.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_standby_get()
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   return standby;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Returns the amount of time of inactivity before the second level of
+ * power saving is invoked.
+ * @return The suspend timeout value.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_suspend_get()
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   return suspend;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Returns the amount of time of inactivity before the third and final
+ * level of power saving is invoked.
+ * @return The off timeout value.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI unsigned int
+ecore_x_dpms_timeout_off_get()
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   return off;
+#else
+   return 0;
+#endif
+}
+
+/**
+ * Sets the standby timeout (in unit of seconds).
+ * @param new_standby Amount of time of inactivity before standby mode will be invoked.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_standby_set(unsigned int new_timeout)
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   DPMSSetTimeouts(_ecore_x_disp, new_timeout, suspend, off);
+#endif
+}
+
+/**
+ * Sets the suspend timeout (in unit of seconds).
+ * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout)
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   DPMSSetTimeouts(_ecore_x_disp, standby, new_timeout, off);
+#endif
+}
+
+/**
+ * Sets the off timeout (in unit of seconds).
+ * @param off     Amount of time of inactivity before the monitor is shut off.
+ * @ingroup Ecore_X_DPMS_Group
+ */
+EAPI void
+ecore_x_dpms_timeout_off_set(unsigned int new_timeout)
+{
+#ifdef ECORE_XDPMS
+   unsigned short standby, suspend, off;
+
+   DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
+   DPMSSetTimeouts(_ecore_x_disp, standby, suspend, new_timeout);
+#endif
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_drawable.c b/src/lib/ecore_x/xlib/ecore_x_drawable.c
new file mode 100644 (file)
index 0000000..efc1c9c
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+
+
+/**
+ * @defgroup Ecore_X_Drawable_Group X Drawable Functions
+ *
+ * Functions that operate on drawables.
+ */
+
+
+/**
+ * Retrieves the geometry of the given drawable.
+ * @param d The given drawable.
+ * @param x Pointer to an integer into which the X position is to be stored.
+ * @param y Pointer to an integer into which the Y position is to be stored.
+ * @param w Pointer to an integer into which the width is to be stored.
+ * @param h Pointer to an integer into which the height is to be stored.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI void
+ecore_x_drawable_geometry_get(Ecore_X_Drawable d, int *x, int *y, int *w, int *h)
+{
+   Window         dummy_win;
+   int            ret_x, ret_y;
+   unsigned int   ret_w, ret_h, dummy_border, dummy_depth;
+
+   if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &ret_x, &ret_y,
+                     &ret_w, &ret_h, &dummy_border, &dummy_depth))
+   {
+      ret_x = 0;
+      ret_y = 0;
+      ret_w = 0;
+      ret_h = 0;
+   }
+
+   if (x) *x = ret_x;
+   if (y) *y = ret_y;
+   if (w) *w = (int) ret_w;
+   if (h) *h = (int) ret_h;
+}
+
+/**
+ * Retrieves the width of the border of the given drawable.
+ * @param  d The given drawable.
+ * @return The border width of the given drawable.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI int
+ecore_x_drawable_border_width_get(Ecore_X_Drawable d)
+{
+   Window         dummy_win;
+   int            dummy_x, dummy_y;
+   unsigned int   dummy_w, dummy_h, border_ret, dummy_depth;
+
+   if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &dummy_x, &dummy_y,
+                     &dummy_w, &dummy_h, &border_ret, &dummy_depth))
+      border_ret = 0;
+
+   return (int) border_ret;
+}
+
+/**
+ * Retrieves the depth of the given drawable.
+ * @param  d The given drawable.
+ * @return The depth of the given drawable.
+ * @ingroup Ecore_X_Drawable_Group
+ */
+EAPI int
+ecore_x_drawable_depth_get(Ecore_X_Drawable d)
+{
+   Window         dummy_win;
+   int            dummy_x, dummy_y;
+   unsigned int   dummy_w, dummy_h, dummy_border, depth_ret;
+
+   if (!XGetGeometry(_ecore_x_disp, d, &dummy_win, &dummy_x, &dummy_y,
+                     &dummy_w, &dummy_h, &dummy_border, &depth_ret))
+      depth_ret = 0;
+
+   return (int) depth_ret;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_e.c b/src/lib/ecore_x/xlib/ecore_x_e.c
new file mode 100644 (file)
index 0000000..e36d04a
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * OLD E hints
+ */
+#include "config.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+EAPI void
+ecore_x_e_init(void)
+{
+}
+
+EAPI void
+ecore_x_e_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb)
+{
+   unsigned int frames[4];
+
+   frames[0] = fl;
+   frames[1] = fr;
+   frames[2] = ft;
+   frames[3] = fb;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4);
+}
+
+EAPI void
+ecore_x_e_virtual_keyboard_set(Ecore_X_Window win, int is_keyboard)
+{
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
+                                 &is_keyboard, 1);
+}
+
+EAPI int
+ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
+{
+   unsigned int val;
+   
+   if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD, &val, 1))
+     return 0;
+   return val;
+}
+
+static Ecore_X_Virtual_Keyboard_State
+_ecore_x_e_vkbd_state_get(Ecore_X_Atom atom)
+{
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON) return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF) return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA) return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC) return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN) return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER) return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX) return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL) return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL;
+   if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD) return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD;
+   return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
+}
+
+static Ecore_X_Atom
+_ecore_x_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
+{
+   switch (state)
+     {
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
+      case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD: return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
+      default: return 0;
+     }
+   return 0;
+}
+
+EAPI void
+ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
+{
+   Ecore_X_Atom atom = 0;
+
+   atom = _ecore_x_e_vkbd_atom_get(state);
+   ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
+                               &atom, 1);
+}
+
+EAPI Ecore_X_Virtual_Keyboard_State
+ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
+{
+   Ecore_X_Atom atom;
+   int num;
+   
+   if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
+                                    &atom, 1))
+     return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
+   return _ecore_x_e_vkbd_state_get(atom);
+}
+
+EAPI void
+ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win, Ecore_X_Virtual_Keyboard_State state)
+{
+   ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
+                                ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+                                _ecore_x_e_vkbd_atom_get(state),
+                                0, 0, 0, 0);
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_error.c b/src/lib/ecore_x/xlib/ecore_x_error.c
new file mode 100644 (file)
index 0000000..3de31d6
--- /dev/null
@@ -0,0 +1,95 @@
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static void _ecore_x_error_handle(Display * d, XErrorEvent * ev);
+static int  _ecore_x_io_error_handle(Display *d);
+
+static void (*_error_func) (void *data) = NULL;
+static void *_error_data = NULL;
+static void (*_io_error_func) (void *data) = NULL;
+static void *_io_error_data = NULL;
+static int   _error_request_code = 0;
+static int   _error_code = 0;
+
+/**
+ * Set the error handler.
+ * @param func The error handler function
+ * @param data The data to be passed to the handler function
+ * 
+ * Set the X error handler function
+ */
+EAPI void
+ecore_x_error_handler_set(void (*func) (void *data), const void *data)
+{
+   _error_func = func;
+   _error_data = (void *)data;
+}
+
+/**
+ * Set the I/O error handler.
+ * @param func The I/O error handler function
+ * @param data The data to be passed to the handler function
+ * 
+ * Set the X I/O error handler function
+ */
+EAPI void
+ecore_x_io_error_handler_set(void (*func) (void *data), const void *data)
+{
+   _io_error_func = func;
+   _io_error_data = (void *)data;
+}
+
+/**
+ * Get the request code that caused the error.
+ * @return The request code causing the X error
+ * 
+ * Return the X request code that caused the last X error
+ */
+EAPI int
+ecore_x_error_request_get(void)
+{
+   return _error_request_code;
+}
+
+/**
+ * Get the error code from the error.
+ * @return The error code from the X error
+ * 
+ * Return the error code from the last X error
+ */
+EAPI int
+ecore_x_error_code_get(void)
+{
+   return _error_code;
+}
+
+void
+_ecore_x_error_handler_init(void)
+{
+   XSetErrorHandler((XErrorHandler)_ecore_x_error_handle);
+   XSetIOErrorHandler((XIOErrorHandler)_ecore_x_io_error_handle);   
+}
+
+static void
+_ecore_x_error_handle(Display *d, XErrorEvent *ev)
+{
+    if (d == _ecore_x_disp)
+     {
+       _error_request_code = ev->request_code;
+       _error_code = ev->error_code;
+       if (_error_func) _error_func(_error_data);
+     }
+}
+
+static int
+_ecore_x_io_error_handle(Display *d)
+{
+    if (d == _ecore_x_disp)
+     {
+       if (_io_error_func) _io_error_func(_io_error_data);
+       else exit(-1);
+     }
+   return 0;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_events.c b/src/lib/ecore_x/xlib/ecore_x_events.c
new file mode 100644 (file)
index 0000000..59bacb2
--- /dev/null
@@ -0,0 +1,1783 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include <langinfo.h>
+
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+/** OpenBSD does not define CODESET
+ * FIXME ??
+ */
+
+#ifndef CODESET
+#define CODESET "INVALID"
+#endif
+
+#if 0
+static void _ecore_x_event_free_window_prop_name_class_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_title_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev);
+static void _ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev);
+#endif
+static void _ecore_x_event_free_key_down(void *data, void *ev);
+static void _ecore_x_event_free_key_up(void *data, void *ev);
+
+static Window _ecore_x_mouse_down_last_win = 0;
+static Window _ecore_x_mouse_down_last_last_win = 0;
+static Window _ecore_x_mouse_down_last_event_win = 0;
+static Window _ecore_x_mouse_down_last_last_event_win = 0;
+static Time _ecore_x_mouse_down_last_time = 0;
+static Time _ecore_x_mouse_down_last_last_time = 0;
+static int _ecore_x_mouse_up_count = 0;
+static int _ecore_x_mouse_down_did_triple = 0;
+
+EAPI void
+ecore_x_event_mask_set(Ecore_X_Window w, Ecore_X_Event_Mask mask)
+{
+   XWindowAttributes attr;
+   XSetWindowAttributes s_attr;
+
+   if (!w)
+      w = DefaultRootWindow(_ecore_x_disp);
+
+   memset(&attr, 0, sizeof(XWindowAttributes));
+   XGetWindowAttributes(_ecore_x_disp, w, &attr);
+   s_attr.event_mask = mask | attr.your_event_mask;
+   XChangeWindowAttributes(_ecore_x_disp, w, CWEventMask, &s_attr);
+}
+
+EAPI void
+ecore_x_event_mask_unset(Ecore_X_Window w, Ecore_X_Event_Mask mask)
+{
+   XWindowAttributes attr;
+   XSetWindowAttributes s_attr;
+
+   if (!w)
+      w = DefaultRootWindow(_ecore_x_disp);
+
+   memset(&attr, 0, sizeof(XWindowAttributes));
+   XGetWindowAttributes(_ecore_x_disp, w, &attr);
+   s_attr.event_mask = attr.your_event_mask & ~mask;
+   XChangeWindowAttributes(_ecore_x_disp, w, CWEventMask, &s_attr);
+}
+
+#if 0
+static void
+_ecore_x_event_free_window_prop_name_class_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Name_Class_Change *e;
+   
+   e = ev;
+   if (e->name) free(e->name);
+   if (e->clas) free(e->clas);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_title_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Title_Change *e;
+   
+   e = ev;
+   if (e->title) free(e->title);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Visible_Title_Change *e;
+   
+   e = ev;
+   if (e->title) free(e->title);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Icon_Name_Change *e;
+   
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e;
+   
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev)
+{
+   Ecore_X_Event_Window_Prop_Client_Machine_Change *e;
+   
+   e = ev;
+   if (e->name) free(e->name);
+   free(e);
+}
+#endif
+
+static void
+_ecore_x_event_free_key_down(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Key_Down *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_key_up(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Key_Up *e;
+
+   e = ev;
+   if (e->keyname) free(e->keyname);
+   if (e->keysymbol) free(e->keysymbol);
+   if (e->key_compose) free(e->key_compose);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_xdnd_enter(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Xdnd_Enter *e;
+   int i;
+
+   e = ev;
+   for (i = 0; i < e->num_types; i++)
+     XFree(e->types[i]);
+   free(e->types);
+   free(e);
+}
+
+static void
+_ecore_x_event_free_selection_notify(void *data __UNUSED__, void *ev)
+{
+   Ecore_X_Event_Selection_Notify *e;
+   Ecore_X_Selection_Data *sel;
+
+   e = ev;
+   sel = e->data;
+   if (sel->free)
+     sel->free(sel);
+   free(e->target);
+   free(e);
+}
+
+void
+_ecore_x_event_handle_key_press(XEvent *xevent)
+{
+   Ecore_X_Event_Key_Down *e;
+   char                   *keyname;
+   int                     val;
+   char                    buf[256];
+   KeySym                  sym;
+   XComposeStatus          status;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Key_Down));
+   if (!e) return;
+   keyname = XKeysymToString(XKeycodeToKeysym(xevent->xkey.display, 
+                                             xevent->xkey.keycode, 0));
+   if (!keyname)
+     {
+       snprintf(buf, sizeof(buf), "Keycode-%i", xevent->xkey.keycode);
+       keyname = buf;
+     }
+   e->keyname = strdup(keyname);
+   if (!e->keyname)
+     {
+       free(e);
+       return;
+     }
+   val = XLookupString((XKeyEvent *)xevent, buf, sizeof(buf), &sym, &status);
+   if (val > 0)
+     {
+       buf[val] = 0;
+       e->key_compose = ecore_txt_convert(nl_langinfo(CODESET), "UTF-8", buf);
+     }
+   else e->key_compose = NULL;
+   keyname = XKeysymToString(sym);
+   if (keyname) e->keysymbol = strdup(keyname);
+   else e->keysymbol = strdup(e->keyname);
+   if (!e->keysymbol)
+     {
+       if (e->keyname) free(e->keyname);
+       if (e->key_compose) free(e->key_compose);
+       free(e);
+       return;
+     }
+   if (xevent->xkey.subwindow) e->win = xevent->xkey.subwindow;
+   else e->win = xevent->xkey.window;
+   e->event_win = xevent->xkey.window;
+   e->time = xevent->xkey.time;
+   e->modifiers = xevent->xkey.state;
+   e->same_screen = xevent->xkey.same_screen;
+   e->root_win = xevent->xkey.root;
+   _ecore_x_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_KEY_DOWN, e, _ecore_x_event_free_key_down, NULL);
+}
+
+void
+_ecore_x_event_handle_key_release(XEvent *xevent)
+{
+   Ecore_X_Event_Key_Up *e;
+   char                   *keyname;
+   int                     val;
+   char                    buf[256];
+   KeySym                  sym;
+   XComposeStatus          status;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Key_Up));
+   if (!e) return;
+   keyname = XKeysymToString(XKeycodeToKeysym(xevent->xkey.display, 
+                                             xevent->xkey.keycode, 0));
+   if (!keyname)
+     {
+       snprintf(buf, sizeof(buf), "Keycode-%i", xevent->xkey.keycode);
+       keyname = buf;
+     }
+   e->keyname = strdup(keyname);
+   if (!e->keyname)
+     {
+       free(e);
+       return;
+     }
+   val = XLookupString((XKeyEvent *)xevent, buf, sizeof(buf), &sym, &status);
+   if (val > 0)
+     {
+       buf[val] = 0;
+       e->key_compose = ecore_txt_convert("ISO8859-1", "UTF-8", buf);
+     }
+   else e->key_compose = NULL;
+   keyname = XKeysymToString(sym);
+   if (keyname) e->keysymbol = strdup(keyname);
+   else e->keysymbol = strdup(e->keyname);
+   if (!e->keysymbol)
+     {
+       if (e->keyname) free(e->keyname);
+       if (e->key_compose) free(e->key_compose);
+       free(e);
+       return;
+     }
+   if (xevent->xkey.subwindow) e->win = xevent->xkey.subwindow;
+   else e->win = xevent->xkey.window;
+   e->event_win = xevent->xkey.window;
+   e->time = xevent->xkey.time;
+   e->modifiers = xevent->xkey.state;
+   e->same_screen = xevent->xkey.same_screen;
+   e->root_win = xevent->xkey.root;
+   _ecore_x_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_KEY_UP, e, _ecore_x_event_free_key_up, NULL);
+}
+
+void
+_ecore_x_event_handle_button_press(XEvent *xevent)
+{
+   int i;
+
+   if ((xevent->xbutton.button > 3) && (xevent->xbutton.button < 8))
+     {
+       Ecore_X_Event_Mouse_Wheel *e;
+       
+       e = malloc(sizeof(Ecore_X_Event_Mouse_Wheel));
+       
+       if (!e)
+         return;
+       
+       e->modifiers = xevent->xbutton.state;
+       e->direction = 0;
+       e->z = 0;
+       if      (xevent->xbutton.button == 4)
+         {
+            e->direction = 0;
+            e->z = -1;
+         }
+       else if (xevent->xbutton.button == 5)
+         {
+            e->direction = 0;
+            e->z = 1;
+         }
+       else if (xevent->xbutton.button == 6)
+         {
+            e->direction = 1;
+            e->z = -1;
+         }
+       else if (xevent->xbutton.button == 7)
+         {
+            e->direction = 1;
+            e->z = 1;
+         }
+       e->x = xevent->xbutton.x;
+       e->y = xevent->xbutton.y;
+       e->root.x = xevent->xbutton.x_root;
+       e->root.y = xevent->xbutton.y_root;
+       
+       if (xevent->xbutton.subwindow)
+         e->win = xevent->xbutton.subwindow;
+       else
+         e->win = xevent->xbutton.window;
+       
+       e->event_win = xevent->xbutton.window;
+       e->same_screen = xevent->xbutton.same_screen;
+       e->root_win = xevent->xbutton.root;
+       e->time = xevent->xbutton.time;
+       _ecore_x_event_last_time = e->time;
+       _ecore_x_event_last_win = e->win;
+       _ecore_x_event_last_root_x = e->root.x;
+       _ecore_x_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_WHEEL, e, NULL, NULL);
+       for (i = 0; i < _ecore_window_grabs_num; i++)
+         {
+            if ((_ecore_window_grabs[i] == xevent->xbutton.window) ||
+                (_ecore_window_grabs[i] == xevent->xbutton.subwindow))
+              {
+                 int replay = 0;
+                 
+                 if (_ecore_window_grab_replay_func)
+                   replay = _ecore_window_grab_replay_func(_ecore_window_grab_replay_data, 
+                                                           ECORE_X_EVENT_MOUSE_WHEEL,
+                                                           e);
+                 if (replay)
+                   XAllowEvents(xevent->xbutton.display,
+                                ReplayPointer,
+                                xevent->xbutton.time);
+                 else
+                   XAllowEvents(xevent->xbutton.display,
+                                AsyncPointer,
+                                xevent->xbutton.time);
+                 break;
+              }
+         }
+     }
+   else
+     {
+         {
+            Ecore_X_Event_Mouse_Move *e;
+            
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+            if (!e) return;
+            e->modifiers = xevent->xbutton.state;
+            e->x = xevent->xbutton.x;
+            e->y = xevent->xbutton.y;
+            e->root.x = xevent->xbutton.x_root;
+            e->root.y = xevent->xbutton.y_root;
+            if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
+            else e->win = xevent->xbutton.window;
+            e->same_screen = xevent->xbutton.same_screen;
+            e->root_win = xevent->xbutton.root;
+            e->event_win = xevent->xbutton.window;
+            e->time = xevent->xbutton.time;
+            _ecore_x_event_last_time = e->time;
+            _ecore_x_event_last_win = e->win;
+            _ecore_x_event_last_root_x = e->root.x;
+            _ecore_x_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+         {
+            Ecore_X_Event_Mouse_Button_Down *e;
+             
+            if (_ecore_x_mouse_down_did_triple)
+              {
+                 _ecore_x_mouse_down_last_win = 0;
+                 _ecore_x_mouse_down_last_last_win = 0;
+                 _ecore_x_mouse_down_last_event_win = 0;
+                 _ecore_x_mouse_down_last_last_event_win = 0;
+                 _ecore_x_mouse_down_last_time = 0;
+                 _ecore_x_mouse_down_last_last_time = 0;
+              }
+            
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Button_Down));
+            if (!e) return;
+            e->button = xevent->xbutton.button;
+            e->modifiers = xevent->xbutton.state;
+            e->x = xevent->xbutton.x;
+            e->y = xevent->xbutton.y;
+            e->root.x = xevent->xbutton.x_root;
+            e->root.y = xevent->xbutton.y_root;
+            if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
+            else e->win = xevent->xbutton.window;
+            e->same_screen = xevent->xbutton.same_screen;
+            e->root_win = xevent->xbutton.root;
+            e->event_win = xevent->xbutton.window;
+            e->time = xevent->xbutton.time;
+            if (e->win == e->event_win)
+              {
+                 if (((int)(e->time - _ecore_x_mouse_down_last_time) <= 
+                      (int)(1000 * _ecore_x_double_click_time)) &&
+                     (e->win == _ecore_x_mouse_down_last_win) &&
+                     (e->event_win == _ecore_x_mouse_down_last_event_win)
+                     )
+                   e->double_click = 1;
+                 if (((int)(e->time - _ecore_x_mouse_down_last_last_time) <= 
+                      (int)(2 * 1000 * _ecore_x_double_click_time)) &&
+                     (e->win == _ecore_x_mouse_down_last_win) &&
+                      (e->win == _ecore_x_mouse_down_last_last_win) &&
+                     (e->event_win == _ecore_x_mouse_down_last_event_win) &&
+                      (e->event_win == _ecore_x_mouse_down_last_last_event_win)
+                     )
+                   {
+                        e->triple_click = 1;
+                      _ecore_x_mouse_down_did_triple = 1;
+                   }
+                  else
+                    _ecore_x_mouse_down_did_triple = 0;
+              }
+             if (!e->double_click && !e->triple_click)
+               _ecore_x_mouse_up_count = 0;
+            _ecore_x_event_last_time = e->time;
+            _ecore_x_event_last_win = e->win;
+            _ecore_x_event_last_root_x = e->root.x;
+            _ecore_x_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, e, NULL, NULL);
+            for (i = 0; i < _ecore_window_grabs_num; i++)
+              {
+                 if ((_ecore_window_grabs[i] == xevent->xbutton.window) ||
+                     (_ecore_window_grabs[i] == xevent->xbutton.subwindow))
+                   {
+                      int replay = 0;
+                      
+                      if (_ecore_window_grab_replay_func)
+                        replay = _ecore_window_grab_replay_func(_ecore_window_grab_replay_data, 
+                                                                ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
+                                                                e);
+                      if (replay)
+                        XAllowEvents(xevent->xbutton.display,
+                                     ReplayPointer,
+                                     xevent->xbutton.time);
+                      else
+                        XAllowEvents(xevent->xbutton.display,
+                                     AsyncPointer,
+                                     xevent->xbutton.time);
+                      break;
+                   }
+              }
+            if (e->win == e->event_win)
+              {
+                 if (!_ecore_x_mouse_down_did_triple)
+                   {
+                      _ecore_x_mouse_down_last_last_win = _ecore_x_mouse_down_last_win;
+                      if (xevent->xbutton.subwindow)
+                        _ecore_x_mouse_down_last_win = xevent->xbutton.subwindow;
+                      else
+                        _ecore_x_mouse_down_last_win = xevent->xbutton.window;
+                      _ecore_x_mouse_down_last_last_event_win = _ecore_x_mouse_down_last_event_win;
+                      _ecore_x_mouse_down_last_event_win = xevent->xbutton.window;
+                      _ecore_x_mouse_down_last_last_time = _ecore_x_mouse_down_last_time;
+                      _ecore_x_mouse_down_last_time = xevent->xbutton.time;
+                   }
+              }
+         }
+     }
+}
+
+void
+_ecore_x_event_handle_button_release(XEvent *xevent)
+{
+   /* filter out wheel buttons */
+   if ((xevent->xbutton.button <= 3) || (xevent->xbutton.button > 7))
+     {
+         {
+            Ecore_X_Event_Mouse_Move *e;
+            
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+            if (!e) return;
+            e->modifiers = xevent->xbutton.state;
+            e->x = xevent->xbutton.x;
+            e->y = xevent->xbutton.y;
+            e->root.x = xevent->xbutton.x_root;
+            e->root.y = xevent->xbutton.y_root;
+            if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
+            else e->win = xevent->xbutton.window;
+            e->same_screen = xevent->xbutton.same_screen;
+            e->root_win = xevent->xbutton.root;
+            e->event_win = xevent->xbutton.window;
+            e->time = xevent->xbutton.time;
+            _ecore_x_event_last_time = e->time;
+            _ecore_x_event_last_win = e->win;
+            _ecore_x_event_last_root_x = e->root.x;
+            _ecore_x_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+         }
+         {
+            Ecore_X_Event_Mouse_Button_Up *e;
+            
+            e = calloc(1, sizeof(Ecore_X_Event_Mouse_Button_Up));
+            if (!e) return;
+            e->button = xevent->xbutton.button;
+            e->modifiers = xevent->xbutton.state;
+            e->x = xevent->xbutton.x;
+            e->y = xevent->xbutton.y;
+            e->root.x = xevent->xbutton.x_root;
+            e->root.y = xevent->xbutton.y_root;
+            if (xevent->xbutton.subwindow) e->win = xevent->xbutton.subwindow;
+            else e->win = xevent->xbutton.window;
+            e->same_screen = xevent->xbutton.same_screen;
+            e->root_win = xevent->xbutton.root;
+            e->event_win = xevent->xbutton.window;
+            e->time = xevent->xbutton.time;
+             _ecore_x_mouse_up_count++;
+            if (e->win == e->event_win)
+              {
+                 if ((_ecore_x_mouse_up_count >= 2) &&
+                      ((int)(e->time - _ecore_x_mouse_down_last_time) <= 
+                      (int)(1000 * _ecore_x_double_click_time)) &&
+                     (e->win == _ecore_x_mouse_down_last_win) &&
+                     (e->event_win == _ecore_x_mouse_down_last_event_win)
+                     )
+                   e->double_click = 1;
+                 if ((_ecore_x_mouse_up_count >= 3) &&
+                     ((int)(e->time - _ecore_x_mouse_down_last_last_time) <= 
+                      (int)(2 * 1000 * _ecore_x_double_click_time)) &&
+                     (e->win == _ecore_x_mouse_down_last_win) &&
+                      (e->win == _ecore_x_mouse_down_last_last_win) &&
+                     (e->event_win == _ecore_x_mouse_down_last_event_win) &&
+                      (e->event_win == _ecore_x_mouse_down_last_last_event_win)
+                     )
+                    e->triple_click = 1;
+              }
+            _ecore_x_event_last_time = e->time;
+            _ecore_x_event_last_win = e->win;
+            _ecore_x_event_last_root_x = e->root.x;
+            _ecore_x_event_last_root_y = e->root.y;
+            ecore_event_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, e, NULL, NULL);
+         }
+     }
+}
+
+void
+_ecore_x_event_handle_motion_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Mouse_Move     *e;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+   if (!e) return;
+   e->modifiers = xevent->xmotion.state;
+   e->x = xevent->xmotion.x;
+   e->y = xevent->xmotion.y;
+   e->root.x = xevent->xmotion.x_root;
+   e->root.y = xevent->xmotion.y_root;
+   if (xevent->xmotion.subwindow) e->win = xevent->xmotion.subwindow;
+   else e->win = xevent->xmotion.window;
+   e->same_screen = xevent->xmotion.same_screen;
+   e->root_win = xevent->xmotion.root;
+   e->event_win = xevent->xmotion.window;
+   e->time = xevent->xmotion.time;
+   _ecore_x_event_last_time = e->time;
+   _ecore_x_event_last_win = e->win;
+   _ecore_x_event_last_root_x = e->root.x;
+   _ecore_x_event_last_root_y = e->root.y;
+
+   /* Xdnd handling */
+   _ecore_x_dnd_drag(xevent->xmotion.root, e->root.x, e->root.y);
+
+   ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_enter_notify(XEvent *xevent)
+{
+     {
+       Ecore_X_Event_Mouse_Move *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+       if (!e) return;
+       e->modifiers = xevent->xcrossing.state;
+       e->x = xevent->xcrossing.x;
+       e->y = xevent->xcrossing.y;
+       e->root.x = xevent->xcrossing.x_root;
+       e->root.y = xevent->xcrossing.y_root;
+       if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
+       else e->win = xevent->xcrossing.window;
+       e->same_screen = xevent->xcrossing.same_screen;
+       e->root_win = xevent->xcrossing.root;
+       e->event_win = xevent->xcrossing.window;
+       e->time = xevent->xcrossing.time;
+       _ecore_x_event_last_time = e->time;
+       _ecore_x_event_last_win = e->win;
+       _ecore_x_event_last_root_x = e->root.x;
+       _ecore_x_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+     }
+     {
+       Ecore_X_Event_Mouse_In *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_In));
+       if (!e) return;
+       e->modifiers = xevent->xcrossing.state;
+       e->x = xevent->xcrossing.x;
+       e->y = xevent->xcrossing.y;
+       e->root.x = xevent->xcrossing.x_root;
+       e->root.y = xevent->xcrossing.y_root;
+       if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
+       else e->win = xevent->xcrossing.window;
+       e->same_screen = xevent->xcrossing.same_screen;
+       e->root_win = xevent->xcrossing.root;
+       e->event_win = xevent->xcrossing.window;
+       if      (xevent->xcrossing.mode == NotifyNormal) e->mode = ECORE_X_EVENT_MODE_NORMAL;
+       else if (xevent->xcrossing.mode == NotifyGrab)   e->mode = ECORE_X_EVENT_MODE_GRAB;
+       else if (xevent->xcrossing.mode == NotifyUngrab) e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+       if      (xevent->xcrossing.detail == NotifyAncestor)         e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+       else if (xevent->xcrossing.detail == NotifyVirtual)          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+       else if (xevent->xcrossing.detail == NotifyInferior)         e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+       else if (xevent->xcrossing.detail == NotifyNonlinear)        e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+       else if (xevent->xcrossing.detail == NotifyNonlinearVirtual) e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+       e->time = xevent->xcrossing.time;
+       _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_IN, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_leave_notify(XEvent *xevent)
+{
+     {
+       Ecore_X_Event_Mouse_Move *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Move));
+       if (!e) return;
+       e->modifiers = xevent->xcrossing.state;
+       e->x = xevent->xcrossing.x;
+       e->y = xevent->xcrossing.y;
+       e->root.x = xevent->xcrossing.x_root;
+       e->root.y = xevent->xcrossing.y_root;
+       if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
+       else e->win = xevent->xcrossing.window;
+       e->same_screen = xevent->xcrossing.same_screen;
+       e->root_win = xevent->xcrossing.root;
+       e->event_win = xevent->xcrossing.window;
+       e->time = xevent->xcrossing.time;
+       _ecore_x_event_last_time = e->time;
+       _ecore_x_event_last_win = e->win;
+       _ecore_x_event_last_root_x = e->root.x;
+       _ecore_x_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_MOVE, e, NULL, NULL);
+     }
+     {
+       Ecore_X_Event_Mouse_Out *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Mouse_Out));
+       if (!e) return;
+       e->modifiers = xevent->xcrossing.state;
+       e->x = xevent->xcrossing.x;
+       e->y = xevent->xcrossing.y;
+       e->root.x = xevent->xcrossing.x_root;
+       e->root.y = xevent->xcrossing.y_root;
+       if (xevent->xcrossing.subwindow) e->win = xevent->xcrossing.subwindow;
+       else e->win = xevent->xcrossing.window;
+       e->same_screen = xevent->xcrossing.same_screen;
+       e->root_win = xevent->xcrossing.root;
+       e->event_win = xevent->xcrossing.window;
+       if      (xevent->xcrossing.mode == NotifyNormal) e->mode = ECORE_X_EVENT_MODE_NORMAL;
+       else if (xevent->xcrossing.mode == NotifyGrab)   e->mode = ECORE_X_EVENT_MODE_GRAB;
+       else if (xevent->xcrossing.mode == NotifyUngrab) e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+       if      (xevent->xcrossing.detail == NotifyAncestor)         e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+       else if (xevent->xcrossing.detail == NotifyVirtual)          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+       else if (xevent->xcrossing.detail == NotifyInferior)         e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+       else if (xevent->xcrossing.detail == NotifyNonlinear)        e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+       else if (xevent->xcrossing.detail == NotifyNonlinearVirtual) e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+       e->time = xevent->xcrossing.time;
+       _ecore_x_event_last_time = e->time;
+       _ecore_x_event_last_win = e->win;
+       _ecore_x_event_last_root_x = e->root.x;
+       _ecore_x_event_last_root_y = e->root.y;
+       ecore_event_add(ECORE_X_EVENT_MOUSE_OUT, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_focus_in(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Focus_In *e;
+       
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_In));
+   if (!e) return;
+   e->win = xevent->xfocus.window;
+   if      (xevent->xfocus.mode == NotifyNormal)       e->mode = ECORE_X_EVENT_MODE_NORMAL;
+   else if (xevent->xfocus.mode == NotifyWhileGrabbed) e->mode = ECORE_X_EVENT_MODE_WHILE_GRABBED;
+   else if (xevent->xfocus.mode == NotifyGrab)         e->mode = ECORE_X_EVENT_MODE_GRAB;
+   else if (xevent->xfocus.mode == NotifyUngrab)       e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+   if      (xevent->xfocus.detail == NotifyAncestor)         e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+   else if (xevent->xfocus.detail == NotifyVirtual)          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+   else if (xevent->xfocus.detail == NotifyInferior)         e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+   else if (xevent->xfocus.detail == NotifyNonlinear)        e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+   else if (xevent->xfocus.detail == NotifyNonlinearVirtual) e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+   else if (xevent->xfocus.detail == NotifyPointer)          e->detail = ECORE_X_EVENT_DETAIL_POINTER;
+   else if (xevent->xfocus.detail == NotifyPointerRoot)      e->detail = ECORE_X_EVENT_DETAIL_POINTER_ROOT;
+   else if (xevent->xfocus.detail == NotifyDetailNone)       e->detail = ECORE_X_EVENT_DETAIL_DETAIL_NONE;
+   e->time = _ecore_x_event_last_time;
+   _ecore_x_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_focus_out(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Focus_Out *e;
+       
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_Out));
+   if (!e) return;
+   e->win = xevent->xfocus.window;
+   if      (xevent->xfocus.mode == NotifyNormal)       e->mode = ECORE_X_EVENT_MODE_NORMAL;
+   else if (xevent->xfocus.mode == NotifyWhileGrabbed) e->mode = ECORE_X_EVENT_MODE_WHILE_GRABBED;
+   else if (xevent->xfocus.mode == NotifyGrab)         e->mode = ECORE_X_EVENT_MODE_GRAB;
+   else if (xevent->xfocus.mode == NotifyUngrab)       e->mode = ECORE_X_EVENT_MODE_UNGRAB;
+   if      (xevent->xfocus.detail == NotifyAncestor)         e->detail = ECORE_X_EVENT_DETAIL_ANCESTOR;
+   else if (xevent->xfocus.detail == NotifyVirtual)          e->detail = ECORE_X_EVENT_DETAIL_VIRTUAL;
+   else if (xevent->xfocus.detail == NotifyInferior)         e->detail = ECORE_X_EVENT_DETAIL_INFERIOR;
+   else if (xevent->xfocus.detail == NotifyNonlinear)        e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR;
+   else if (xevent->xfocus.detail == NotifyNonlinearVirtual) e->detail = ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
+   else if (xevent->xfocus.detail == NotifyPointer)          e->detail = ECORE_X_EVENT_DETAIL_POINTER;
+   else if (xevent->xfocus.detail == NotifyPointerRoot)      e->detail = ECORE_X_EVENT_DETAIL_POINTER_ROOT;
+   else if (xevent->xfocus.detail == NotifyDetailNone)       e->detail = ECORE_X_EVENT_DETAIL_DETAIL_NONE;
+   e->time = _ecore_x_event_last_time;
+   _ecore_x_event_last_time = e->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_keymap_notify(XEvent *xevent __UNUSED__)
+{
+   /* FIXME: handle this event type */   
+}
+
+void
+_ecore_x_event_handle_expose(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Damage *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Damage));
+   if (!e) return;
+   e->win = xevent->xexpose.window;
+   e->time = _ecore_x_event_last_time;
+   e->x = xevent->xexpose.x;
+   e->y = xevent->xexpose.y;
+   e->w = xevent->xexpose.width;
+   e->h = xevent->xexpose.height;
+   e->count = xevent->xexpose.count;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);   
+}
+
+void
+_ecore_x_event_handle_graphics_expose(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Damage *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Damage));
+   if (!e) return;
+   e->win = xevent->xgraphicsexpose.drawable;
+   e->time = _ecore_x_event_last_time;
+   e->x = xevent->xgraphicsexpose.x;
+   e->y = xevent->xgraphicsexpose.y;
+   e->w = xevent->xgraphicsexpose.width;
+   e->h = xevent->xgraphicsexpose.height;
+   e->count = xevent->xgraphicsexpose.count;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);   
+}
+
+void
+_ecore_x_event_handle_visibility_notify(XEvent *xevent)
+{
+//   if (xevent->xvisibility.state != VisibilityPartiallyObscured)
+   {
+      Ecore_X_Event_Window_Visibility_Change *e;
+      
+      e = calloc(1, sizeof(Ecore_X_Event_Window_Visibility_Change));
+      if (!e) return;
+      e->win = xevent->xvisibility.window;
+      e->time = _ecore_x_event_last_time;
+      if (xevent->xvisibility.state == VisibilityFullyObscured)
+        e->fully_obscured = 1;
+      else
+        e->fully_obscured = 0;     
+      ecore_event_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, e, NULL, NULL);
+   }
+}
+
+void
+_ecore_x_event_handle_create_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Create *e;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Create));
+   if (!e) return;
+   e->win = xevent->xcreatewindow.window;
+   if (xevent->xcreatewindow.override_redirect)
+      e->override = 1;
+   else
+      e->override = 0;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CREATE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_destroy_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Destroy *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Destroy));
+   if (!e) return;
+   e->win =  xevent->xdestroywindow.window;
+   e->time = _ecore_x_event_last_time;
+   if (e->win == _ecore_x_event_last_win) _ecore_x_event_last_win = 0;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_DESTROY, e, NULL, NULL);   
+}
+
+void
+_ecore_x_event_handle_unmap_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Hide *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Hide));
+   if (!e) return;
+   e->win = xevent->xunmap.window;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_HIDE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_map_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Show *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Show));
+   if (!e) return;
+   e->win = xevent->xmap.window;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_map_request(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Show_Request *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Show_Request));
+   if (!e) return;
+   e->win = xevent->xmaprequest.window;
+   e->time = _ecore_x_event_last_time;
+   e->parent = xevent->xmaprequest.parent;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_reparent_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Reparent *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Reparent));
+   if (!e) return;
+   e->win = xevent->xreparent.window;
+   e->parent = xevent->xreparent.parent;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_REPARENT, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_configure_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Configure *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Configure));
+   if (!e) return;
+   e->win = xevent->xconfigure.window;
+   e->abovewin = xevent->xconfigure.above;
+   e->x = xevent->xconfigure.x;
+   e->y = xevent->xconfigure.y;
+   e->w = xevent->xconfigure.width;
+   e->h = xevent->xconfigure.height;
+   e->border = xevent->xconfigure.border_width;
+   e->override = xevent->xconfigure.override_redirect;
+   e->from_wm = xevent->xconfigure.send_event;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE, e, NULL, NULL);      
+}
+
+void
+_ecore_x_event_handle_configure_request(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Configure_Request *e;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Configure_Request));
+   if (!e) return;
+   e->win = xevent->xconfigurerequest.window;
+   e->abovewin = xevent->xconfigurerequest.above;
+   e->x = xevent->xconfigurerequest.x;
+   e->y = xevent->xconfigurerequest.y;
+   e->w = xevent->xconfigurerequest.width;
+   e->h = xevent->xconfigurerequest.height;
+   e->border = xevent->xconfigurerequest.border_width;
+   e->value_mask = xevent->xconfigurerequest.value_mask;
+   e->time = _ecore_x_event_last_time;
+   if (xevent->xconfigurerequest.detail == Above)
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+   else if (xevent->xconfigurerequest.detail == Below)
+     e->detail = ECORE_X_WINDOW_STACK_BELOW;
+   else if (xevent->xconfigurerequest.detail == TopIf)
+     e->detail = ECORE_X_WINDOW_STACK_TOP_IF;
+   else if (xevent->xconfigurerequest.detail == BottomIf)
+     e->detail = ECORE_X_WINDOW_STACK_BOTTOM_IF;
+   else if (xevent->xconfigurerequest.detail == Opposite)
+     e->detail = ECORE_X_WINDOW_STACK_OPPOSITE;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_gravity_notify(XEvent *xevent __UNUSED__)
+{
+   /* FIXME: handle this event type */
+}
+
+void
+_ecore_x_event_handle_resize_request(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Resize_Request *e;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Resize_Request));
+   if (!e) return;
+   e->win = xevent->xresizerequest.window;
+   e->w = xevent->xresizerequest.width;
+   e->h = xevent->xresizerequest.height;
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_RESIZE_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_circulate_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Stack *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Stack));
+   if (!e) return;
+   e->win = xevent->xcirculate.window;
+   e->event_win = xevent->xcirculate.event;
+   if (xevent->xcirculate.place == PlaceOnTop)
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+   else
+     e->detail = ECORE_X_WINDOW_STACK_BELOW; 
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_STACK, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_circulate_request(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Stack_Request *e;
+   
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Stack_Request));
+   if (!e) return;
+   e->win = xevent->xcirculaterequest.window;
+   e->parent = xevent->xcirculaterequest.parent;
+   if (xevent->xcirculaterequest.place == PlaceOnTop)
+     e->detail = ECORE_X_WINDOW_STACK_ABOVE;
+   else
+     e->detail = ECORE_X_WINDOW_STACK_BELOW; 
+   e->time = _ecore_x_event_last_time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_STACK_REQUEST, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_property_notify(XEvent *xevent)
+{
+#if 0 /* for now i disabled this. nice idea though this is - it leaves a lot
+       * to be desired for efficiency that is better left to the app layer
+       */
+   if (xevent->xproperty.atom == ECORE_X_ATOM_WM_CLASS)
+     {
+       Ecore_X_Event_Window_Prop_Name_Class_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Name_Class_Change));
+       if (!e) return;
+       ecore_x_window_prop_name_class_get(xevent->xproperty.window, 
+                                          &(e->name), &(e->clas));
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, e, _ecore_x_event_free_window_prop_name_class_change, NULL);
+     }
+   else if ((xevent->xproperty.atom == ECORE_X_ATOM_WM_NAME) || (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_NAME))
+     {
+       Ecore_X_Event_Window_Prop_Title_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Title_Change));
+       if (!e) return;
+       e->title = ecore_x_window_prop_title_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_title_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_VISIBLE_NAME)
+     {
+       Ecore_X_Event_Window_Prop_Visible_Title_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Title_Change));
+       if (!e) return;
+       e->title = ecore_x_window_prop_visible_title_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_visible_title_change, NULL);
+     }
+   else if ((xevent->xproperty.atom == ECORE_X_ATOM_WM_ICON_NAME) || (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_ICON_NAME))
+     {
+       Ecore_X_Event_Window_Prop_Icon_Name_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Icon_Name_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_icon_name_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_icon_name_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME)
+     {
+       Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_visible_icon_name_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_visible_icon_name_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_WM_CLIENT_MACHINE)
+     {
+       Ecore_X_Event_Window_Prop_Client_Machine_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Client_Machine_Change));
+       if (!e) return;
+       e->name = ecore_x_window_prop_client_machine_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, e, _ecore_x_event_free_window_prop_client_machine_change, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_PID)
+     {
+       Ecore_X_Event_Window_Prop_Pid_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Pid_Change));
+       if (!e) return;
+       e->pid = ecore_x_window_prop_pid_get(xevent->xproperty.window);
+   e->time = xevent->xproperty.time;
+   _ecore_x_event_last_time = e->time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, e, NULL, NULL);
+     }
+   else if (xevent->xproperty.atom == ECORE_X_ATOM_NET_WM_DESKTOP)
+     {
+       Ecore_X_Event_Window_Prop_Desktop_Change *e;
+       
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Desktop_Change));
+       if (!e) return;
+       e->desktop = ecore_x_window_prop_desktop_get(xevent->xproperty.window);
+       ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, e, NULL, NULL);
+     }
+   else 
+#endif     
+   {
+      Ecore_X_Event_Window_Property *e;
+
+      e = calloc(1,sizeof(Ecore_X_Event_Window_Property));
+      if (!e) return;
+      e->win = xevent->xproperty.window;
+      e->atom = xevent->xproperty.atom;
+      e->time = xevent->xproperty.time;
+      _ecore_x_event_last_time = e->time;
+      ecore_event_add(ECORE_X_EVENT_WINDOW_PROPERTY, e, NULL, NULL);
+   }
+}
+
+void
+_ecore_x_event_handle_selection_clear(XEvent *xevent)
+{
+   Ecore_X_Selection_Intern *d;
+   Ecore_X_Event_Selection_Clear *e;
+   Ecore_X_Atom sel;
+
+   if (!(d = _ecore_x_selection_get(xevent->xselectionclear.selection)))
+     return;
+   if (xevent->xselectionclear.time > d->time)
+     {
+       _ecore_x_selection_set(None, NULL, 0, 
+                              xevent->xselectionclear.selection);
+     }
+
+   /* Generate event for app cleanup */
+   e = malloc(sizeof(Ecore_X_Event_Selection_Clear));
+   e->win = xevent->xselectionclear.window;
+   e->time = xevent->xselectionclear.time;
+   sel = xevent->xselectionclear.selection;
+   if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
+     e->selection = ECORE_X_SELECTION_PRIMARY;
+   else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
+     e->selection = ECORE_X_SELECTION_SECONDARY;
+   else
+     e->selection = ECORE_X_SELECTION_CLIPBOARD;
+   ecore_event_add(ECORE_X_EVENT_SELECTION_CLEAR, e, NULL, NULL);
+
+}
+
+void
+_ecore_x_event_handle_selection_request(XEvent *xevent)
+{
+   Ecore_X_Event_Selection_Request  *e;
+   Ecore_X_Selection_Intern         *sd;
+   void                             *data;
+
+   /*
+    * Generate a selection request event.
+    */
+   e = malloc(sizeof(Ecore_X_Event_Selection_Request));
+   e->owner = xevent->xselectionrequest.owner;
+   e->requestor = xevent->xselectionrequest.requestor;
+   e->time = xevent->xselectionrequest.time;
+   e->selection = xevent->xselectionrequest.selection;
+   e->target = xevent->xselectionrequest.target;
+   e->property = xevent->xselectionrequest.property;
+   ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, NULL, NULL);
+
+   if ((sd = _ecore_x_selection_get(xevent->xselectionrequest.selection)) &&
+       (sd->win == xevent->xselectionrequest.owner))
+     {
+       Ecore_X_Selection_Intern *si;
+
+       si = _ecore_x_selection_get(xevent->xselectionrequest.selection);
+       if (si->data)
+         {
+            Ecore_X_Atom property;
+
+            if (!ecore_x_selection_convert(xevent->xselectionrequest.selection,
+                                           xevent->xselectionrequest.target,
+                                           &data))
+              {
+                 /* Refuse selection, conversion to requested target failed */
+                 property = None;
+              }
+            else
+              {
+                 /* FIXME: This does not properly handle large data transfers */
+                 ecore_x_window_prop_property_set(xevent->xselectionrequest.requestor,
+                                                  xevent->xselectionrequest.property,
+                                                  xevent->xselectionrequest.target,
+                                                  8, data, sd->length);
+                 property = xevent->xselectionrequest.property;
+                 free(data);
+              }
+
+            ecore_x_selection_notify_send(xevent->xselectionrequest.requestor,
+                                          xevent->xselectionrequest.selection,
+                                          xevent->xselectionrequest.target,
+                                          property,
+                                          xevent->xselectionrequest.time);
+         }
+     }
+   return;
+}
+
+void
+_ecore_x_event_handle_selection_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Selection_Notify   *e;
+   unsigned char                    *data = NULL;
+   Ecore_X_Atom                     selection;
+   int                              num_ret;
+   int                              format;
+
+   selection = xevent->xselection.selection;
+
+   if (xevent->xselection.target == ECORE_X_ATOM_SELECTION_TARGETS)
+     {
+       format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
+                                               xevent->xselection.property,
+                                               XA_ATOM, 32, &data, &num_ret);
+       if (!format)
+         return;
+     }
+   else
+     {
+       format = ecore_x_window_prop_property_get(xevent->xselection.requestor,
+                                               xevent->xselection.property,
+                                               AnyPropertyType, 8, &data,
+                                               &num_ret);
+       if (!format)
+         return;
+     }
+
+   e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
+   if (!e) return;
+   e->win = xevent->xselection.requestor;
+   e->time = xevent->xselection.time;
+   e->target = _ecore_x_selection_target_get(xevent->xselection.target);
+
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     e->selection = ECORE_X_SELECTION_PRIMARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     e->selection = ECORE_X_SELECTION_SECONDARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     e->selection = ECORE_X_SELECTION_XDND;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     e->selection = ECORE_X_SELECTION_CLIPBOARD;
+   else
+     {
+       free(e);
+       return;
+     }
+   e->data = _ecore_x_selection_parse(e->target, data, num_ret, format);
+
+   ecore_event_add(ECORE_X_EVENT_SELECTION_NOTIFY, e, _ecore_x_event_free_selection_notify, NULL);
+}
+
+void
+_ecore_x_event_handle_colormap_notify(XEvent *xevent)
+{
+   Ecore_X_Event_Window_Colormap *e;
+
+   e = calloc(1,sizeof(Ecore_X_Event_Window_Colormap));
+   if (!e) return;
+   e->win = xevent->xcolormap.window;
+   e->cmap = xevent->xcolormap.colormap;
+   e->time = _ecore_x_event_last_time;
+   if (xevent->xcolormap.state == ColormapInstalled)
+      e->installed = 1;
+   else
+      e->installed = 0;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_COLORMAP, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_client_message(XEvent *xevent)
+{
+   /* Special client message event handling here. need to put LOTS of if */
+   /* checks here and generate synthetic events per special message known */
+   /* otherwise generate generic client message event. this would handle*/
+   /* netwm, ICCCM, gnomewm, old kde and mwm hint client message protocols */
+   if ((xevent->xclient.message_type == ECORE_X_ATOM_WM_PROTOCOLS) &&
+       (xevent->xclient.format == 32) &&
+       (xevent->xclient.data.l[0] == (long)ECORE_X_ATOM_WM_DELETE_WINDOW))
+     {
+       Ecore_X_Event_Window_Delete_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Delete_Request));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->time = _ecore_x_event_last_time;
+       ecore_event_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
+     }
+
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_WM_MOVERESIZE) &&
+           (xevent->xclient.format == 32) &&
+           /* Ignore move and resize with keyboard */
+           (xevent->xclient.data.l[2] < 9))
+     {
+       Ecore_X_Event_Window_Move_Resize_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_Move_Resize_Request));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->x = xevent->xclient.data.l[0];
+       e->y = xevent->xclient.data.l[1];
+       e->direction = xevent->xclient.data.l[2];
+       e->button = xevent->xclient.data.l[3];
+       e->source = xevent->xclient.data.l[4];
+       ecore_event_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST, e, NULL, NULL);
+     }
+
+   /* Xdnd Client Message Handling Begin */
+   /* Message Type: XdndEnter target */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_ENTER)
+     {
+       Ecore_X_Event_Xdnd_Enter *e;
+       Ecore_X_DND_Target *target;
+       unsigned long three;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Enter));
+       if (!e) return;
+
+       target = _ecore_x_dnd_target_get();
+       target->state = ECORE_X_DND_TARGET_ENTERED;
+       target->source = xevent->xclient.data.l[0];
+       target->win = xevent->xclient.window;
+       target->version = (int) (xevent->xclient.data.l[1] >> 24);
+       if (target->version > ECORE_X_DND_VERSION)
+         {
+            printf("DND: Requested version %d, we only support up to %d\n", target->version,
+                                                                            ECORE_X_DND_VERSION);
+            return;
+         }
+
+       if ((three = xevent->xclient.data.l[1] & 0x1UL))
+         {
+            /* source supports more than 3 types, fetch property */
+            unsigned char *data;
+            Ecore_X_Atom *types;
+            int i, num_ret;
+            if (!(ecore_x_window_prop_property_get(target->source, 
+                                                   ECORE_X_ATOM_XDND_TYPE_LIST,
+                                                   XA_ATOM,
+                                                   32,
+                                                   &data,
+                                                   &num_ret)))
+              {
+                 printf("DND: Could not fetch data type list from source window, aborting.\n");
+                 return;
+              }
+            types = (Ecore_X_Atom *)data;
+            e->types = calloc(num_ret, sizeof(char *));
+            if (e->types)
+              {
+                 for (i = 0; i < num_ret; i++)
+                   e->types[i] = XGetAtomName(_ecore_x_disp, types[i]);
+              }
+            e->num_types = num_ret;
+         }
+       else
+         {
+            int i = 0;
+
+            e->types = calloc(3, sizeof(char *));
+            if (e->types)
+              {
+                 while ((i < 3) && (xevent->xclient.data.l[i + 2]))
+                   {
+                      e->types[i] = XGetAtomName(_ecore_x_disp, xevent->xclient.data.l[i + 2]);
+                      i++;
+                   }
+              }
+            e->num_types = i;
+         }
+
+       e->win = target->win;
+       e->source = target->source;
+       ecore_event_add(ECORE_X_EVENT_XDND_ENTER, e, _ecore_x_event_free_xdnd_enter, NULL);
+     }
+
+   /* Message Type: XdndPosition target */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_POSITION)
+     {
+       Ecore_X_Event_Xdnd_Position *e;
+       Ecore_X_DND_Target *target;
+
+       target = _ecore_x_dnd_target_get();
+       if ((target->source != (Ecore_X_Window)xevent->xclient.data.l[0]) ||
+           (target->win != xevent->xclient.window))
+         return;
+
+       target->pos.x = xevent->xclient.data.l[2] >> 16;
+       target->pos.y = xevent->xclient.data.l[2] & 0xFFFFUL;
+       target->action = xevent->xclient.data.l[4]; /* Version 2 */
+
+       target->time = (target->version >= 1) ? 
+          (Time)xevent->xclient.data.l[3] : CurrentTime;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Position));
+       if (!e) return;
+       e->win = target->win;
+       e->source = target->source;
+       e->position.x = target->pos.x;
+       e->position.y = target->pos.y;
+       e->action = target->action;
+       ecore_event_add(ECORE_X_EVENT_XDND_POSITION, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndStatus source */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_STATUS)
+     {
+       Ecore_X_Event_Xdnd_Status *e;
+       Ecore_X_DND_Source *source;
+
+       source = _ecore_x_dnd_source_get();
+       /* Make sure source/target match */
+       if ((source->win != xevent->xclient.window ) ||
+           (source->dest != (Window)xevent->xclient.data.l[0]))
+         return;
+
+       source->await_status = 0;
+
+       source->will_accept = xevent->xclient.data.l[1] & 0x1UL;
+       source->suppress = (xevent->xclient.data.l[1] & 0x2UL) ? 0 : 1;
+
+       source->rectangle.x = xevent->xclient.data.l[2] >> 16;
+       source->rectangle.y = xevent->xclient.data.l[2] & 0xFFFFUL;
+       source->rectangle.width = xevent->xclient.data.l[3] >> 16;
+       source->rectangle.height = xevent->xclient.data.l[3] & 0xFFFFUL;
+
+       source->accepted_action = xevent->xclient.data.l[4];
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Status));
+       if (!e) return;
+       e->win = source->win;
+       e->target = source->dest;
+       e->will_accept = source->will_accept;
+       e->rectangle.x = source->rectangle.x;
+       e->rectangle.y = source->rectangle.y;
+       e->rectangle.width = source->rectangle.width;
+       e->rectangle.height = source->rectangle.height;
+       e->action = source->accepted_action;
+
+       ecore_event_add(ECORE_X_EVENT_XDND_STATUS, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndLeave target */
+   /* Pretend the whole thing never happened, sort of */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_LEAVE)
+     {
+       Ecore_X_Event_Xdnd_Leave *e;
+       Ecore_X_DND_Target *target;
+
+       target = _ecore_x_dnd_target_get();
+       if ((target->source != (Ecore_X_Window)xevent->xclient.data.l[0]) ||
+           (target->win != xevent->xclient.window))
+         return;
+
+       target->state = ECORE_X_DND_TARGET_IDLE;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Leave));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->source = (Window)xevent->xclient.data.l[0];
+       ecore_event_add(ECORE_X_EVENT_XDND_LEAVE, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndDrop target */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_DROP)
+     {
+       Ecore_X_Event_Xdnd_Drop *e;
+       Ecore_X_DND_Target *target;
+
+       target = _ecore_x_dnd_target_get();
+       /* Match source/target */
+       if ((target->source != (Window)xevent->xclient.data.l[0]) ||
+           (target->win != xevent->xclient.window))
+         return;
+
+       target->time = (target->version >= 1) ? 
+          (Time)xevent->xclient.data.l[2] : _ecore_x_event_last_time;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Drop));
+       if (!e) return;
+       e->win = target->win;
+       e->source = target->source;
+       e->action = target->action;
+       e->position.x = target->pos.x;
+       e->position.y = target->pos.y;
+       ecore_event_add(ECORE_X_EVENT_XDND_DROP, e, NULL, NULL);
+     }
+
+   /* Message Type: XdndFinished source */
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_XDND_FINISHED)
+     {
+       Ecore_X_Event_Xdnd_Finished *e;
+       Ecore_X_DND_Source *source;
+       int completed = 1;
+
+       source = _ecore_x_dnd_source_get();
+       /* Match source/target */
+       if ((source->win != xevent->xclient.window) ||
+           (source->dest != (Window)xevent->xclient.data.l[0]))
+         return;
+
+       if ((source->version < 5) || (xevent->xclient.data.l[1] & 0x1UL))
+         {
+            /* Target successfully performed drop action */
+            ecore_x_selection_xdnd_clear();
+            source->state = ECORE_X_DND_SOURCE_IDLE;
+         }
+       else if (source->version >= 5)
+         {
+              completed = 0;
+              source->state = ECORE_X_DND_SOURCE_CONVERTING;
+
+              /* FIXME: Probably need to add a timer to switch back to idle 
+               * and discard the selection data */
+         } 
+
+       e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Finished));
+       if (!e) return;
+       e->win = source->win;
+       e->target = source->dest;
+       e->completed = completed;
+       if (source->version >= 5)
+         {
+            source->accepted_action = xevent->xclient.data.l[2];
+            e->action = source->accepted_action;
+         }
+       else
+         {
+            source->accepted_action = 0;
+            e->action = source->action;
+         }
+
+       ecore_event_add(ECORE_X_EVENT_XDND_FINISHED, e, NULL, NULL);
+     }
+   else if (xevent->xclient.message_type == ECORE_X_ATOM_NET_WM_STATE)
+     {
+       Ecore_X_Event_Window_State_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       if (xevent->xclient.data.l[0] == 0)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_REMOVE;
+       else if (xevent->xclient.data.l[0] == 1)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
+       else if (xevent->xclient.data.l[0] == 2)
+         e->action = ECORE_X_WINDOW_STATE_ACTION_TOGGLE;
+       else
+         {
+            free(e);
+            return;
+         }
+       e->state[0] = _ecore_x_netwm_state_get(xevent->xclient.data.l[1]);
+       if (e->state[0] == ECORE_X_WINDOW_STATE_UNKNOWN)
+         {
+            char *name;
+            name = XGetAtomName(_ecore_x_disp, xevent->xclient.data.l[1]);
+            if (name)
+              printf("Unknown state: %s\n", name);
+            XFree(name);
+         }
+       e->state[1] = _ecore_x_netwm_state_get(xevent->xclient.data.l[2]);
+       if (e->state[1] == ECORE_X_WINDOW_STATE_UNKNOWN)
+         {
+            char *name;
+            name = XGetAtomName(_ecore_x_disp, xevent->xclient.data.l[2]);
+            if (name)
+              printf("Unknown state: %s\n", name);
+            XFree(name);
+         }
+       e->source = xevent->xclient.data.l[3];
+
+       ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_WM_CHANGE_STATE)
+           && (xevent->xclient.format == 32)
+           && (xevent->xclient.data.l[0] == IconicState))
+     {
+       Ecore_X_Event_Window_State_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
+       e->state[0] = ECORE_X_WINDOW_STATE_ICONIFIED;
+
+       ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_WM_DESKTOP)
+           && (xevent->xclient.format == 32))
+     {
+       Ecore_X_Event_Desktop_Change *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Desktop_Change));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->desk = xevent->xclient.data.l[0];
+       e->source = xevent->xclient.data.l[1];
+
+       ecore_event_add(ECORE_X_EVENT_DESKTOP_CHANGE, e, NULL, NULL);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS))
+     {
+       Ecore_X_Event_Frame_Extents_Request *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Frame_Extents_Request));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+
+       ecore_event_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, e, NULL, NULL);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_WM_PROTOCOLS)
+           && ((Ecore_X_Atom)xevent->xclient.data.l[0] == ECORE_X_ATOM_NET_WM_PING)
+           && (xevent->xclient.format == 32))
+     {
+       Ecore_X_Event_Ping *e;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Ping));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->time = xevent->xclient.data.l[1];
+       e->event_win = xevent->xclient.data.l[2];
+
+       ecore_event_add(ECORE_X_EVENT_PING, e, NULL, NULL);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) &&
+           (xevent->xclient.format == 8))
+     {
+       _ecore_x_netwm_startup_info_begin(xevent->xclient.window, xevent->xclient.data.b);
+     }
+   else if ((xevent->xclient.message_type == ECORE_X_ATOM_NET_STARTUP_INFO) &&
+           (xevent->xclient.format == 8))
+     {
+       _ecore_x_netwm_startup_info(xevent->xclient.window, xevent->xclient.data.b);
+     }
+   else if ((xevent->xclient.message_type == 27777)
+           && (xevent->xclient.data.l[0] == 0x7162534)
+           && (xevent->xclient.format == 32)
+           && (xevent->xclient.window == _ecore_x_private_win))
+     {
+       /* a grab sync marker */
+       if (xevent->xclient.data.l[1] == 0x10000001)
+         _ecore_x_window_grab_remove(xevent->xclient.data.l[2]);
+       else if (xevent->xclient.data.l[1] == 0x10000002)
+         _ecore_x_key_grab_remove(xevent->xclient.data.l[2]);
+     }
+   else
+     {
+       Ecore_X_Event_Client_Message *e;
+       int i;
+
+       e = calloc(1, sizeof(Ecore_X_Event_Client_Message));
+       if (!e) return;
+       e->win = xevent->xclient.window;
+       e->message_type = xevent->xclient.message_type;
+       e->format = xevent->xclient.format;
+       for (i = 0; i < 5; i++) 
+         e->data.l[i] = xevent->xclient.data.l[i];
+
+       ecore_event_add(ECORE_X_EVENT_CLIENT_MESSAGE, e, NULL, NULL);
+     }
+}
+
+void
+_ecore_x_event_handle_mapping_notify(XEvent *xevent __UNUSED__)
+{
+   /* FIXME: handle this event type */
+}
+
+void
+_ecore_x_event_handle_shape_change(XEvent *xevent)
+{
+   XShapeEvent *shape_event;
+   Ecore_X_Event_Window_Shape *e;
+   
+   shape_event = (XShapeEvent *)xevent;
+   e = calloc(1, sizeof(Ecore_X_Event_Window_Shape));
+   if (!e) return;
+   e->win = shape_event->window;
+   e->time = shape_event->time;
+   ecore_event_add(ECORE_X_EVENT_WINDOW_SHAPE, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_screensaver_notify(XEvent *xevent)
+{
+#ifdef ECORE_XSS
+   XScreenSaverNotifyEvent *screensaver_event;
+   Ecore_X_Event_Screensaver_Notify *e;
+   
+   screensaver_event = (XScreenSaverNotifyEvent *)xevent;
+   e = calloc(1, sizeof(Ecore_X_Event_Screensaver_Notify));
+   if (!e) return;
+   e->win = screensaver_event->window;
+   if (screensaver_event->state == ScreenSaverOn)
+     e->on = 1;
+  else 
+     e->on = 0;
+   e->time = screensaver_event->time;
+   ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
+#else
+   xevent = NULL;
+#endif   
+}
+
+void
+_ecore_x_event_handle_sync_counter(XEvent *xevent)
+{
+   XSyncCounterNotifyEvent *sync_counter_event;
+   Ecore_X_Event_Sync_Counter *e;
+   
+   sync_counter_event = (XSyncCounterNotifyEvent *)xevent;
+   e = calloc(1, sizeof(Ecore_X_Event_Sync_Counter));
+   if (!e) return;
+   e->time = sync_counter_event->time;
+   ecore_event_add(ECORE_X_EVENT_SYNC_COUNTER, e, NULL, NULL);
+}
+
+void
+_ecore_x_event_handle_sync_alarm(XEvent *xevent)
+{
+   XSyncAlarmNotifyEvent *sync_alarm_event;
+   Ecore_X_Event_Sync_Alarm *e;
+
+   sync_alarm_event = (XSyncAlarmNotifyEvent *)xevent;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Sync_Alarm));
+   if (!e) return;
+   e->time = sync_alarm_event->time;
+   e->alarm = sync_alarm_event->alarm;
+   ecore_event_add(ECORE_X_EVENT_SYNC_ALARM, e, NULL, NULL);
+}
+
+#ifdef ECORE_XRANDR
+void
+_ecore_x_event_handle_randr_change(XEvent *xevent)
+{
+   XRRScreenChangeNotifyEvent *randr_event;
+   Ecore_X_Event_Screen_Change *e;
+
+   randr_event = (XRRScreenChangeNotifyEvent *)xevent;
+   if (!XRRUpdateConfiguration(xevent))
+     printf("ERROR: Can't update RR config!\n");
+
+   e = calloc(1, sizeof(Ecore_X_Event_Screen_Change));
+   if (!e) return;
+   e->win = randr_event->window;
+   e->root = randr_event->root;
+   e->width = randr_event->width;
+   e->height = randr_event->height;
+   ecore_event_add(ECORE_X_EVENT_SCREEN_CHANGE, e, NULL, NULL);
+}
+#endif
+
+#ifdef ECORE_XFIXES
+void
+_ecore_x_event_handle_fixes_selection_notify(XEvent *event)
+{
+   /* Nothing here yet */
+   event = NULL;
+}
+#endif
+
+#ifdef ECORE_XDAMAGE
+void
+_ecore_x_event_handle_damage_notify(XEvent *event)
+{
+   XDamageNotifyEvent *damage_event;
+   Ecore_X_Event_Damage *e;
+
+   damage_event = (XDamageNotifyEvent *)event;
+
+   e = calloc(1, sizeof(Ecore_X_Event_Damage));
+   if (!e) return;
+
+   e->level = damage_event->level;
+   e->drawable = damage_event->drawable;
+   e->damage = damage_event->damage;
+   e->more = damage_event->more;
+   e->time = damage_event->timestamp;
+   e->area.x = damage_event->area.x;
+   e->area.y = damage_event->area.y;
+   e->area.width = damage_event->area.width;
+   e->area.height = damage_event->area.height;
+   e->geometry.x = damage_event->geometry.x;
+   e->geometry.y = damage_event->geometry.y;
+   e->geometry.width = damage_event->geometry.width;
+   e->geometry.height = damage_event->geometry.height;
+
+   ecore_event_add(ECORE_X_EVENT_DAMAGE_NOTIFY, e, NULL, NULL);
+}
+#endif
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_fixes.c b/src/lib/ecore_x/xlib/ecore_x_fixes.c
new file mode 100644 (file)
index 0000000..d4645a7
--- /dev/null
@@ -0,0 +1,267 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+static int _fixes_available;
+#ifdef ECORE_XFIXES
+static int _fixes_major, _fixes_minor;
+#endif
+
+void
+_ecore_x_fixes_init(void)
+{
+#ifdef ECORE_XFIXES
+   _fixes_major = 3;
+   _fixes_minor = 0;
+
+   if (XFixesQueryVersion(_ecore_x_disp, &_fixes_major, &_fixes_minor))
+     _fixes_available = 1;
+   else
+     _fixes_available = 0;
+#else
+   _fixes_available = 0;
+#endif
+}
+
+#ifdef ECORE_XFIXES
+/* I don't know what to call this function. */
+static XRectangle *
+_ecore_x_rectangle_ecore_to_x(Ecore_X_Rectangle *rects, int num)
+{
+   XRectangle *xrect;
+   int i;
+
+   if (num == 0) return NULL;
+
+   xrect = malloc(sizeof(XRectangle) * num);
+   if (!xrect) return NULL;
+   for (i = 0; i < num; i++)
+     {
+       xrect[i].x = rects[i].x;
+       xrect[i].y = rects[i].y;
+       xrect[i].width = rects[i].width;
+       xrect[i].height = rects[i].height;
+     }
+   return xrect;
+}
+
+static Ecore_X_Rectangle *
+_ecore_x_rectangle_x_to_ecore(XRectangle *xrect, int num)
+{
+   Ecore_X_Rectangle *rects;
+   int i;
+
+   if (num == 0) return NULL;
+   rects = malloc(sizeof(Ecore_X_Rectangle) * num);
+   if (!rects) return NULL;
+   for (i = 0; i < num; i++)
+     {
+       rects[i].x = xrect[i].x;
+       rects[i].y = xrect[i].y;
+       rects[i].width = xrect[i].width;
+       rects[i].height = xrect[i].height;
+     }
+   return rects;
+}
+#endif
+
+EAPI Ecore_X_Region
+ecore_x_region_new(Ecore_X_Rectangle *rects, int num)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+   XRectangle *xrect;
+
+   xrect = _ecore_x_rectangle_ecore_to_x(rects, num);
+   region = XFixesCreateRegion(_ecore_x_disp, xrect, num);
+   free(xrect);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromBitmap(_ecore_x_disp, bitmap);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_window(Ecore_X_Window win, Ecore_X_Region_Type type)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromWindow(_ecore_x_disp, win, type);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_gc(Ecore_X_GC gc)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromGC(_ecore_x_disp, gc);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Region
+ecore_x_region_new_from_picture(Ecore_X_Picture picture)
+{
+#ifdef ECORE_XFIXES
+   Ecore_X_Region region;
+
+   region = XFixesCreateRegionFromPicture(_ecore_x_disp, picture);
+   return region;
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+ecore_x_region_del(Ecore_X_Region region)
+{
+#ifdef ECORE_XFIXES
+   XFixesDestroyRegion(_ecore_x_disp, region);
+#endif
+}
+
+EAPI void
+ecore_x_region_set(Ecore_X_Region region, Ecore_X_Rectangle *rects, int num)
+{
+#ifdef ECORE_XFIXES
+   XRectangle *xrect = _ecore_x_rectangle_ecore_to_x(rects, num);
+   XFixesSetRegion(_ecore_x_disp, region, xrect, num);
+#endif
+}
+
+EAPI void
+ecore_x_region_copy(Ecore_X_Region dest, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XFixesCopyRegion(_ecore_x_disp, dest, source);
+#endif
+}
+
+EAPI void
+ecore_x_region_combine(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesUnionRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesIntersectRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_subtract(Ecore_X_Region dest, Ecore_X_Region source1, Ecore_X_Region source2)
+{
+#ifdef ECORE_XFIXES
+   XFixesSubtractRegion(_ecore_x_disp, dest, source1, source2);
+#endif
+}
+
+EAPI void
+ecore_x_region_invert(Ecore_X_Region dest, Ecore_X_Rectangle *bounds, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XRectangle *xbound;
+   int num = 0;
+
+   while(bounds + num) num++;
+   xbound = _ecore_x_rectangle_ecore_to_x(bounds, num);
+
+   XFixesInvertRegion(_ecore_x_disp, dest, xbound, source);
+#endif
+}
+
+EAPI void
+ecore_x_region_translate(Ecore_X_Region region, int dx, int dy)
+{
+#ifdef ECORE_XFIXES
+   XFixesTranslateRegion(_ecore_x_disp, region, dx, dy);
+#endif
+}
+
+EAPI void
+ecore_x_region_extents(Ecore_X_Region dest, Ecore_X_Region source)
+{
+#ifdef ECORE_XFIXES
+   XFixesRegionExtents(_ecore_x_disp, dest, source);
+#endif
+}
+
+EAPI Ecore_X_Rectangle *
+ecore_x_region_fetch(Ecore_X_Region region, int *num, Ecore_X_Rectangle *bounds){
+#ifdef ECORE_XFIXES
+     Ecore_X_Rectangle *rects;
+     XRectangle *xrect, xbound;
+
+     xrect = XFixesFetchRegionAndBounds(_ecore_x_disp, region, num, &xbound);
+     rects = _ecore_x_rectangle_x_to_ecore(xrect, *num);
+     (*bounds).x = xbound.x;
+     (*bounds).y = xbound.y;
+     (*bounds).width = xbound.width;
+     (*bounds).height = xbound.height;
+     return rects;
+#else
+     return NULL;
+#endif
+}
+
+EAPI void
+ecore_x_region_expand(Ecore_X_Region dest, Ecore_X_Region source, unsigned int left, unsigned int right, unsigned int top, unsigned int bottom)
+{
+#ifdef ECORE_XFIXES
+   XFixesExpandRegion(_ecore_x_disp, dest, source, left, right, top, bottom);
+#endif
+}
+
+EAPI void
+ecore_x_region_gc_clip_set(Ecore_X_Region region, Ecore_X_GC gc, int x_origin, int y_origin)
+{
+#ifdef ECORE_XFIXES
+   XFixesSetGCClipRegion(_ecore_x_disp, gc, x_origin, y_origin, region);
+#endif
+}
+
+EAPI void
+ecore_x_region_window_shape_set(Ecore_X_Region region, Ecore_X_Window win, Ecore_X_Shape_Type type, int x_offset, int y_offset)
+{
+#ifdef ECORE_XFIXES
+   XFixesSetWindowShapeRegion(_ecore_x_disp, win, type, x_offset, y_offset, region);
+#endif
+}
+
+EAPI void
+ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore_X_Picture picture, int x_origin, int y_origin)
+{
+#ifdef ECORE_XFIXES
+   XFixesSetPictureClipRegion(_ecore_x_disp, picture, x_origin, y_origin, region);
+#endif
+}
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_gc.c b/src/lib/ecore_x/xlib/ecore_x_gc.c
new file mode 100644 (file)
index 0000000..56224f0
--- /dev/null
@@ -0,0 +1,29 @@
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+/**
+ * Creates a new default graphics context associated with the given
+ * drawable.
+ * @param  draw Drawable to create graphics context with.  If @c 0 is
+ *              given instead, the default root window is used.
+ * @return The new default graphics context.
+ */
+EAPI Ecore_X_GC
+ecore_x_gc_new(Ecore_X_Drawable draw)
+{
+   XGCValues           gcv;
+
+   if (!draw) draw = DefaultRootWindow(_ecore_x_disp);   
+   return XCreateGC(_ecore_x_disp, draw, 0, &gcv);   
+}
+
+/**
+ * Deletes and frees the given graphics context.
+ * @param gc The given graphics context.
+ */
+EAPI void
+ecore_x_gc_del(Ecore_X_GC gc)
+{
+   XFreeGC(_ecore_x_disp, gc);   
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_icccm.c b/src/lib/ecore_x/xlib/ecore_x_icccm.c
new file mode 100644 (file)
index 0000000..399ca92
--- /dev/null
@@ -0,0 +1,1055 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * Various ICCCM related functions.
+ * 
+ * This is ALL the code involving anything ICCCM related. for both WM and
+ * client.
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+
+EAPI void
+ecore_x_icccm_init(void)
+{
+}
+
+EAPI void
+ecore_x_icccm_state_set(Ecore_X_Window win, Ecore_X_Window_State_Hint state)
+{
+   unsigned long       c[2];
+
+   if (state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
+      c[0] = WithdrawnState;
+   else if (state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
+      c[0] = NormalState;
+   else if (state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
+      c[0] = IconicState;
+   c[1] = None;
+   XChangeProperty(_ecore_x_disp, win, ECORE_X_ATOM_WM_STATE,
+                  ECORE_X_ATOM_WM_STATE, 32, PropModeReplace,
+                  (unsigned char *)c, 2);
+}
+
+EAPI Ecore_X_Window_State_Hint
+ecore_x_icccm_state_get(Ecore_X_Window win)
+{
+   unsigned char *prop_ret = NULL;
+   Atom           type_ret;
+   unsigned long  bytes_after, num_ret;
+   int            format_ret;
+   Ecore_X_Window_State_Hint hint;
+
+   hint = ECORE_X_WINDOW_STATE_HINT_NONE;
+   XGetWindowProperty(_ecore_x_disp, win, ECORE_X_ATOM_WM_STATE,
+                     0, 0x7fffffff, False, ECORE_X_ATOM_WM_STATE,
+                     &type_ret, &format_ret, &num_ret, &bytes_after,
+                     &prop_ret);
+   if ((prop_ret) && (num_ret == 2))
+     {
+       if (prop_ret[0] == WithdrawnState)
+         hint = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+       else if (prop_ret[0] == NormalState)
+         hint = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+       else if (prop_ret[0] == IconicState)
+         hint = ECORE_X_WINDOW_STATE_HINT_ICONIC;
+     }
+
+   if (prop_ret)
+     XFree(prop_ret);
+   
+   return hint;
+}
+
+EAPI void
+ecore_x_icccm_delete_window_send(Ecore_X_Window win, Ecore_X_Time t)
+{
+   ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
+                                ECORE_X_EVENT_MASK_NONE,
+                                ECORE_X_ATOM_WM_DELETE_WINDOW,
+                                t, 0, 0, 0);
+}
+
+EAPI void
+ecore_x_icccm_take_focus_send(Ecore_X_Window win, Ecore_X_Time t)
+{
+   ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
+                                ECORE_X_EVENT_MASK_NONE,
+                                ECORE_X_ATOM_WM_TAKE_FOCUS,
+                                t, 0, 0, 0);
+}
+
+EAPI void
+ecore_x_icccm_save_yourself_send(Ecore_X_Window win, Ecore_X_Time t)
+{
+   ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
+                                ECORE_X_EVENT_MASK_NONE,
+                                ECORE_X_ATOM_WM_SAVE_YOURSELF,
+                                t, 0, 0, 0);
+}
+
+EAPI void
+ecore_x_icccm_move_resize_send(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XEvent              ev;
+
+   ev.type = ConfigureNotify;
+   ev.xconfigure.display = _ecore_x_disp;
+   ev.xconfigure.event = win;
+   ev.xconfigure.window = win;
+   ev.xconfigure.x = x;
+   ev.xconfigure.y = y;
+   ev.xconfigure.width = w;
+   ev.xconfigure.height = h;
+   ev.xconfigure.border_width = 0;
+   ev.xconfigure.above = None;
+   ev.xconfigure.override_redirect = False;
+   XSendEvent(_ecore_x_disp, win, False, StructureNotifyMask, &ev);
+}
+
+EAPI void
+ecore_x_icccm_hints_set(Ecore_X_Window win,
+                       int accepts_focus,
+                       Ecore_X_Window_State_Hint initial_state,
+                       Ecore_X_Pixmap icon_pixmap,
+                       Ecore_X_Pixmap icon_mask,
+                       Ecore_X_Window icon_window,
+                       Ecore_X_Window window_group, int is_urgent)
+{
+   XWMHints           *hints;
+
+   hints = XAllocWMHints();
+   if (!hints)
+      return;
+
+   hints->flags = InputHint | StateHint;
+   hints->input = accepts_focus;
+   if (initial_state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
+      hints->initial_state = WithdrawnState;
+   else if (initial_state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
+      hints->initial_state = NormalState;
+   else if (initial_state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
+      hints->initial_state = IconicState;
+   if (icon_pixmap != 0)
+     {
+       hints->icon_pixmap = icon_pixmap;
+       hints->flags |= IconPixmapHint;
+     }
+   if (icon_mask != 0)
+     {
+       hints->icon_mask = icon_mask;
+       hints->flags |= IconMaskHint;
+     }
+   if (icon_window != 0)
+     {
+       hints->icon_window = icon_window;
+       hints->flags |= IconWindowHint;
+     }
+   if (window_group != 0)
+     {
+       hints->window_group = window_group;
+       hints->flags |= WindowGroupHint;
+     }
+   if (is_urgent)
+      hints->flags |= XUrgencyHint;
+   XSetWMHints(_ecore_x_disp, win, hints);
+   XFree(hints);
+}
+
+EAPI int
+ecore_x_icccm_hints_get(Ecore_X_Window win,
+                       int *accepts_focus,
+                       Ecore_X_Window_State_Hint *initial_state,
+                       Ecore_X_Pixmap *icon_pixmap,
+                       Ecore_X_Pixmap *icon_mask,
+                       Ecore_X_Window *icon_window,
+                       Ecore_X_Window *window_group, int *is_urgent)
+{
+   XWMHints *hints;
+
+   if (accepts_focus)
+      *accepts_focus = 1;
+   if (initial_state)
+      *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+   if (icon_pixmap)
+      *icon_pixmap = 0;
+   if (icon_mask)
+      *icon_mask = 0;
+   if (icon_window)
+      *icon_window = 0;
+   if (window_group)
+      *window_group = 0;
+   if (is_urgent)
+      *is_urgent = 0;
+   hints = XGetWMHints(_ecore_x_disp, win);
+   if (hints)
+     {
+       if ((hints->flags & InputHint) && (accepts_focus))
+         {
+            if (hints->input)
+               *accepts_focus = 1;
+            else
+               *accepts_focus = 0;
+         }
+       if ((hints->flags & StateHint) && (initial_state))
+         {
+            if (hints->initial_state == WithdrawnState)
+               *initial_state = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
+            else if (hints->initial_state == NormalState)
+               *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
+            else if (hints->initial_state == IconicState)
+               *initial_state = ECORE_X_WINDOW_STATE_HINT_ICONIC;
+         }
+       if ((hints->flags & IconPixmapHint) && (icon_pixmap))
+         {
+            *icon_pixmap = hints->icon_pixmap;
+         }
+       if ((hints->flags & IconMaskHint) && (icon_mask))
+         {
+            *icon_mask = hints->icon_mask;
+         }
+       if ((hints->flags & IconWindowHint) && (icon_window))
+         {
+            *icon_window = hints->icon_window;
+         }
+       if ((hints->flags & WindowGroupHint) && (window_group))
+         {
+            *window_group = hints->window_group;
+         }
+       if ((hints->flags & XUrgencyHint) && (is_urgent))
+         {
+            *is_urgent = 1;
+         }
+       XFree(hints);
+       return 1;
+     }
+   return 0;
+}
+
+EAPI void
+ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
+                                int request_pos,
+                                Ecore_X_Gravity gravity,
+                                int min_w, int min_h,
+                                int max_w, int max_h,
+                                int base_w, int base_h,
+                                int step_x, int step_y,
+                                double min_aspect, double max_aspect)
+{
+   XSizeHints  hint;
+   long        mask;
+
+   if (!XGetWMNormalHints(_ecore_x_disp, win, &hint, &mask))
+     {
+       memset(&hint, 0, sizeof(XSizeHints));
+     }
+
+   hint.flags = 0;
+   if (request_pos)
+     {
+       hint.flags |= USPosition;
+     }
+   if (gravity != ECORE_X_GRAVITY_NW)
+     {
+       hint.flags |= PWinGravity;
+       hint.win_gravity = gravity;
+     }
+   if ((min_w > 0) || (min_h > 0))
+     {
+       hint.flags |= PMinSize;
+       hint.min_width = min_w;
+       hint.min_height = min_h;
+     }
+   if ((max_w > 0) || (max_h > 0))
+     {
+       hint.flags |= PMaxSize;
+       hint.max_width = max_w;
+       hint.max_height = max_h;
+     }
+   if ((base_w > 0) || (base_h > 0))
+     {
+       hint.flags |= PBaseSize;
+       hint.base_width = base_w;
+       hint.base_height = base_h;
+     }
+   if ((step_x > 1) || (step_y > 1))
+     {
+       hint.flags |= PResizeInc;
+       hint.width_inc = step_x;
+       hint.height_inc = step_y;
+     }
+   if ((min_aspect > 0.0) || (max_aspect > 0.0))
+     {
+       hint.flags |= PAspect;
+       hint.min_aspect.x = min_aspect * 10000;
+       hint.min_aspect.y = 10000;
+       hint.max_aspect.x = max_aspect * 10000;
+       hint.max_aspect.y = 10000;
+     }
+   XSetWMNormalHints(_ecore_x_disp, win, &hint);
+}
+
+EAPI int
+ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
+                                int *request_pos,
+                                Ecore_X_Gravity *gravity,
+                                int *min_w, int *min_h,
+                                int *max_w, int *max_h,
+                                int *base_w, int *base_h,
+                                int *step_x, int *step_y,
+                                double *min_aspect, double *max_aspect)
+{
+   XSizeHints          hint;
+   long                mask;
+
+   int                 minw = 0, minh = 0;
+   int                 maxw = 32767, maxh = 32767;
+   int                 basew = -1, baseh = -1;
+   int                 stepx = -1, stepy = -1;
+   double              mina = 0.0, maxa = 0.0;
+
+   if (!XGetWMNormalHints(_ecore_x_disp, win, &hint, &mask))
+     return 0;
+
+   if ((hint.flags & USPosition) || ((hint.flags & PPosition)))
+     {
+       if (request_pos)
+          *request_pos = 1;
+     }
+   else
+     {
+       if (request_pos)
+          *request_pos = 0;
+     }
+   if (hint.flags & PWinGravity)
+     {
+       if (gravity)
+          *gravity = hint.win_gravity;
+     }
+   else
+     {
+       if (gravity)
+          *gravity = ECORE_X_GRAVITY_NW;
+     }
+   if (hint.flags & PMinSize)
+     {
+       minw = hint.min_width;
+       minh = hint.min_height;
+     }
+   if (hint.flags & PMaxSize)
+     {
+       maxw = hint.max_width;
+       maxh = hint.max_height;
+       if (maxw < minw)
+          maxw = minw;
+       if (maxh < minh)
+          maxh = minh;
+     }
+   if (hint.flags & PBaseSize)
+     {
+       basew = hint.base_width;
+       baseh = hint.base_height;
+       if (basew > minw)
+          minw = basew;
+       if (baseh > minh)
+          minh = baseh;
+     }
+   if (hint.flags & PResizeInc)
+     {
+       stepx = hint.width_inc;
+       stepy = hint.height_inc;
+       if (stepx < 1)
+          stepx = 1;
+       if (stepy < 1)
+          stepy = 1;
+     }
+   if (hint.flags & PAspect)
+     {
+       if (hint.min_aspect.y > 0)
+          mina = ((double)hint.min_aspect.x) / ((double)hint.min_aspect.y);
+       if (hint.max_aspect.y > 0)
+          maxa = ((double)hint.max_aspect.x) / ((double)hint.max_aspect.y);
+     }
+   if (min_w)
+      *min_w = minw;
+   if (min_h)
+      *min_h = minh;
+   if (max_w)
+      *max_w = maxw;
+   if (max_h)
+      *max_h = maxh;
+   if (base_w)
+      *base_w = basew;
+   if (base_h)
+      *base_h = baseh;
+   if (step_x)
+      *step_x = stepx;
+   if (step_y)
+      *step_y = stepy;
+   if (min_aspect)
+      *min_aspect = mina;
+   if (max_aspect)
+      *max_aspect = maxa;
+   return 1;
+}
+
+EAPI void
+ecore_x_icccm_title_set(Ecore_X_Window win, const char *t)
+{
+   char               *list[1];
+   XTextProperty       xprop;
+   int                 ret;
+
+   xprop.value = NULL;
+#ifdef X_HAVE_UTF8_STRING
+   list[0] = strdup(t);
+   ret =
+      Xutf8TextListToTextProperty(_ecore_x_disp, list, 1, XUTF8StringStyle,
+                                 &xprop);
+#else
+   list[0] = strdup(t);
+   ret =
+      XmbTextListToTextProperty(_ecore_x_disp, list, 1, XStdICCTextStyle,
+                               &xprop);
+#endif
+   if (ret >= Success)
+     {
+       XSetWMName(_ecore_x_disp, win, &xprop);
+       if (xprop.value) XFree(xprop.value);
+     }
+   else
+     {
+       if (XStringListToTextProperty(list, 1, &xprop) >= Success)
+         {
+            XSetWMName(_ecore_x_disp, win, &xprop);
+            if (xprop.value) XFree(xprop.value);
+         }
+     }
+   free(list[0]);
+}
+
+EAPI char               *
+ecore_x_icccm_title_get(Ecore_X_Window win)
+{
+   XTextProperty       xprop;
+
+   xprop.value = NULL;
+   if (XGetWMName(_ecore_x_disp, win, &xprop) >= Success)
+     {
+       if (xprop.value)
+         {
+            char              **list = NULL;
+            char               *t = NULL;
+            int                 num = 0;
+            int                 ret;
+
+            if (xprop.encoding == ECORE_X_ATOM_UTF8_STRING)
+              {
+                 t = strdup((char *)xprop.value);
+              }
+            else
+              {
+
+                 /* convert to utf8 */
+#ifdef X_HAVE_UTF8_STRING
+                 ret = Xutf8TextPropertyToTextList(_ecore_x_disp, &xprop,
+                                                   &list, &num);
+#else
+                 ret = XmbTextPropertyToTextList(_ecore_x_disp, &xprop,
+                                                 &list, &num);
+#endif
+
+                 if ((ret == XLocaleNotSupported) ||
+                     (ret == XNoMemory) || (ret == XConverterNotFound))
+                   {
+                      t = strdup((char *)xprop.value);
+                   }
+                 else if ((ret >= Success) && (num > 0))
+                   {
+                      t = strdup(list[0]);
+                   }
+                 if (list)
+                   XFreeStringList(list);
+              }
+            
+            if (xprop.value) XFree(xprop.value);
+            return t;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Set or unset a wm protocol property.
+ * @param win The Window
+ * @param protocol The protocol to enable/disable
+ * @param on On/Off
+ */
+EAPI void
+ecore_x_icccm_protocol_set(Ecore_X_Window win,
+                          Ecore_X_WM_Protocol protocol, int on)
+{
+   Atom               *protos = NULL;
+   Atom                proto;
+   int                 protos_count = 0;
+   int                 already_set = 0;
+   int                 i;
+
+   /* Check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+      return;
+
+   proto = _ecore_x_atoms_wm_protocols[protocol];
+
+   if (!XGetWMProtocols(_ecore_x_disp, win, &protos, &protos_count))
+     {
+       protos = NULL;
+       protos_count = 0;
+     }
+
+   for (i = 0; i < protos_count; i++)
+     {
+       if (protos[i] == proto)
+         {
+            already_set = 1;
+            break;
+         }
+     }
+
+   if (on)
+     {
+       Atom *new_protos = NULL;
+
+       if (already_set)
+          goto leave;
+       new_protos = malloc((protos_count + 1) * sizeof(Atom));
+       if (!new_protos)
+          goto leave;
+       for (i = 0; i < protos_count; i++)
+          new_protos[i] = protos[i];
+       new_protos[protos_count] = proto;
+       XSetWMProtocols(_ecore_x_disp, win, new_protos, protos_count + 1);
+       free(new_protos);
+     }
+   else
+     {
+       if (!already_set)
+          goto leave;
+       for (i = 0; i < protos_count; i++)
+         {
+            if (protos[i] == proto)
+              {
+                 int                 j;
+
+                 for (j = i + 1; j < protos_count; j++)
+                    protos[j - 1] = protos[j];
+                 if (protos_count > 1)
+                    XSetWMProtocols(_ecore_x_disp, win, protos,
+                                    protos_count - 1);
+                 else
+                    XDeleteProperty(_ecore_x_disp, win,
+                                    ECORE_X_ATOM_WM_PROTOCOLS);
+                 goto leave;
+              }
+         }
+     }
+
+ leave:
+   if (protos)
+     XFree(protos);
+
+}
+
+/**
+ * Determines whether a protocol is set for a window.
+ * @param win The Window
+ * @param protocol The protocol to query
+ * @return 1 if the protocol is set, else 0.
+ */
+EAPI int
+ecore_x_icccm_protocol_isset(Ecore_X_Window win, Ecore_X_WM_Protocol protocol)
+{
+   Atom                proto, *protos = NULL;
+   int                 i, ret = 0, protos_count = 0;
+
+   /* check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+      return 0;
+
+   proto = _ecore_x_atoms_wm_protocols[protocol];
+
+   if (!XGetWMProtocols(_ecore_x_disp, win, &protos, &protos_count))
+      return 0;
+
+   for (i = 0; i < protos_count; i++)
+      if (protos[i] == proto)
+       {
+          ret = 1;
+          break;
+       }
+
+   if (protos) XFree(protos);
+   return ret;
+
+}
+
+/**
+ * Set a window name & class.
+ * @param win The window
+ * @param n The name string
+ * @param c The class string
+ * 
+ * Set a window name * class
+ */
+EAPI void
+ecore_x_icccm_name_class_set(Ecore_X_Window win, const char *n, const char *c)
+{
+   XClassHint         *xch;
+
+   xch = XAllocClassHint();
+   if (!xch)
+      return;
+   xch->res_name = (char *)n;
+   xch->res_class = (char *)c;
+   XSetClassHint(_ecore_x_disp, win, xch);
+   XFree(xch);
+}
+
+/**
+ * Get a window name & class.
+ * @param win The window
+ * @param n The name string
+ * @param c The class string
+ * 
+ * Get a window name * class
+ */
+EAPI void
+ecore_x_icccm_name_class_get(Ecore_X_Window win, char **n, char **c)
+{
+   XClassHint          xch;
+   
+   if (n) *n = NULL;
+   if (c) *c = NULL;
+   xch.res_name = NULL;
+   xch.res_class = NULL;
+   if (XGetClassHint(_ecore_x_disp, win, &xch))
+     {
+       if (n)
+         {
+            if (xch.res_name) *n = strdup(xch.res_name);
+         }
+       if (c)
+         {
+            if (xch.res_class) *c = strdup(xch.res_class);
+         }
+       XFree(xch.res_name);
+       XFree(xch.res_class);
+     }
+}
+
+/**
+ * Get a window client machine string.
+ * @param win The window
+ * @return The windows client machine string
+ * 
+ * Return the client machine of a window. String must be free'd when done with.
+ */
+EAPI char               *
+ecore_x_icccm_client_machine_get(Ecore_X_Window win)
+{
+   char               *name;
+
+   name = ecore_x_window_prop_string_get(win, ECORE_X_ATOM_WM_CLIENT_MACHINE);
+   return name;
+}
+
+/**
+ * Sets the WM_COMMAND property for @a win.
+ * 
+ * @param win  The window.
+ * @param argc Number of arguments.
+ * @param argv Arguments.
+ */
+EAPI void
+ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv)
+{
+   XSetCommand(_ecore_x_disp, win, argv, argc);
+}
+
+/**
+ * Get the WM_COMMAND property for @a win.
+ *
+ * Return the command of a window. String must be free'd when done with.
+ *
+ * @param win  The window.
+ * @param argc Number of arguments.
+ * @param argv Arguments.
+ */
+EAPI void
+ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv)
+{
+   int i, c;
+   char **v;
+
+   if (argc) *argc = 0;
+   if (argv) *argv = NULL;
+
+   if (!XGetCommand(_ecore_x_disp, win, &v, &c))
+     return;
+   if (c < 1)
+     {
+       if (v)
+         XFreeStringList(v);
+               return;
+     }
+
+   if (argc) *argc = c;
+   if (argv)
+     {
+       (*argv) = malloc(c * sizeof(char *));
+       if (!*argv)
+         { 
+            XFreeStringList(v);
+            if (argc) *argc = 0;
+            return;
+         }
+       for (i = 0; i < c; i++)
+         {
+            if (v[i])
+              (*argv)[i] = strdup(v[i]);
+            else
+              (*argv)[i] = strdup("");
+         }
+     }
+   XFreeStringList(v);
+}
+
+/**
+ * Set a window icon name.
+ * @param win The window
+ * @param t The icon name string
+ * 
+ * Set a window icon name
+ */
+EAPI void
+ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t)
+{
+   char               *list[1];
+   XTextProperty       xprop;
+   int                 ret;
+
+   xprop.value = NULL;
+#ifdef X_HAVE_UTF8_STRING
+   list[0] = strdup(t);
+   ret = Xutf8TextListToTextProperty(_ecore_x_disp, list, 1,
+                                    XUTF8StringStyle, &xprop);
+#else
+   list[0] = strdup(t);
+   ret = XmbTextListToTextProperty(_ecore_x_disp, list, 1,
+                                  XStdICCTextStyle, &xprop);
+#endif
+   if (ret >= Success)
+     {
+       XSetWMIconName(_ecore_x_disp, win, &xprop);
+       if (xprop.value) XFree(xprop.value);
+     }
+   else
+     {
+       if (XStringListToTextProperty(list, 1, &xprop) >= Success)
+         {
+            XSetWMIconName(_ecore_x_disp, win, &xprop);
+            if (xprop.value) XFree(xprop.value);
+         }
+     }
+   free(list[0]);
+}
+
+/**
+ * Get a window icon name.
+ * @param win The window
+ * @return The windows icon name string
+ * 
+ * Return the icon name of a window. String must be free'd when done with.
+ */
+EAPI char               *
+ecore_x_icccm_icon_name_get(Ecore_X_Window win)
+{
+   XTextProperty       xprop;
+
+   xprop.value = NULL;
+   if (XGetWMIconName(_ecore_x_disp, win, &xprop) >= Success)
+     {
+       if (xprop.value)
+         {
+            char              **list = NULL;
+            char               *t = NULL;
+            int                 num = 0;
+            int                 ret;
+
+            if (xprop.encoding == ECORE_X_ATOM_UTF8_STRING)
+              {
+                 t = strdup((char *)xprop.value);
+              }
+            else
+              {
+
+                 /* convert to utf8 */
+#ifdef X_HAVE_UTF8_STRING
+                 ret = Xutf8TextPropertyToTextList(_ecore_x_disp, &xprop,
+                                                   &list, &num);
+#else
+                 ret = XmbTextPropertyToTextList(_ecore_x_disp, &xprop,
+                                                 &list, &num);
+#endif
+
+                 if ((ret == XLocaleNotSupported) ||
+                     (ret == XNoMemory) || (ret == XConverterNotFound))
+                   {
+                      t = strdup((char *)xprop.value);
+                   }
+                 else if (ret >= Success)
+                   {
+                      if ((num >= 1) && (list))
+                        {
+                           t = strdup(list[0]);
+                        }
+                      if (list)
+                        XFreeStringList(list);
+                   }
+              }
+            
+            if (xprop.value) XFree(xprop.value);
+            return t;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Add a subwindow to the list of windows that need a different colormap installed.
+ * @param win The toplevel window
+ * @param subwin The subwindow to be added to the colormap windows list
+ */
+EAPI void
+ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin)
+{
+   int                 num = 0, i;
+   unsigned char      *old_data = NULL;
+   unsigned char      *data = NULL;
+   Window             *oldset = NULL;
+   Window             *newset = NULL;
+
+   if (!ecore_x_window_prop_property_get(win,
+                                        ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                        XA_WINDOW, 32, &old_data, &num))
+     {
+       newset = calloc(1, sizeof(Window));
+       if (!newset)
+          return;
+       newset[0] = subwin;
+       num = 1;
+       data = (unsigned char *)newset;
+     }
+   else
+     {
+       newset = calloc(num + 1, sizeof(Window));
+       oldset = (Window *) old_data;
+       if (!newset)
+          return;
+       for (i = 0; i < num; ++i)
+         {
+            if (oldset[i] == subwin)
+              {
+                 if (old_data) XFree(old_data);
+                 old_data = NULL;
+                 free(newset);
+                 return;
+              }
+
+            newset[i] = oldset[i];
+         }
+
+       newset[num++] = subwin;
+       if (old_data) XFree(old_data);
+       data = (unsigned char *)newset;
+     }
+
+   ecore_x_window_prop_property_set(win,
+                                   ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                   XA_WINDOW, 32, data, num);
+   free(newset);
+}
+
+/**
+ * Remove a window from the list of colormap windows.
+ * @param win The toplevel window
+ * @param subwin The window to be removed from the colormap window list.
+ */
+EAPI void
+ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin)
+{
+   int                 num = 0, i, j, k = 0;
+   unsigned char      *old_data = NULL;
+   unsigned char      *data = NULL;
+   Window             *oldset = NULL;
+   Window             *newset = NULL;
+
+   if (!ecore_x_window_prop_property_get(win,
+                                        ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                        XA_WINDOW, 32, &old_data, &num))
+      return;
+
+   oldset = (Window *) old_data;
+   for (i = 0; i < num; i++)
+     {
+       if (oldset[i] == subwin)
+         {
+            if (num == 1)
+              {
+                 XDeleteProperty(_ecore_x_disp,
+                                 win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS);
+                 if (old_data) XFree(old_data);
+                 old_data = NULL;
+                 return;
+              }
+            else
+              {
+                 newset = calloc(num - 1, sizeof(Window));
+                 data = (unsigned char *)newset;
+                 for (j = 0; j < num; ++j)
+                    if (oldset[j] != subwin)
+                       newset[k++] = oldset[j];
+                 ecore_x_window_prop_property_set(win,
+                                                  ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
+                                                  XA_WINDOW, 32, data, k);
+                 if (old_data) XFree(old_data);
+                 old_data = NULL;
+                 free(newset);
+                 return;
+              }
+         }
+     }
+
+   if (old_data) XFree(old_data);
+}
+
+/**
+ * Specify that a window is transient for another top-level window and should be handled accordingly.
+ * @param win the transient window
+ * @param forwin the toplevel window
+ */
+EAPI void
+ecore_x_icccm_transient_for_set(Ecore_X_Window win, Ecore_X_Window forwin)
+{
+   XSetTransientForHint(_ecore_x_disp, win, forwin);
+}
+
+/**
+ * Remove the transient_for setting from a window.
+ * @param The window
+ */
+EAPI void
+ecore_x_icccm_transient_for_unset(Ecore_X_Window win)
+{
+   XDeleteProperty(_ecore_x_disp, win, ECORE_X_ATOM_WM_TRANSIENT_FOR);
+}
+
+/**
+ * Get the window this window is transient for, if any.
+ * @param win The window to check
+ * @return The window ID of the top-level window, or 0 if the property does not exist.
+ */
+EAPI Ecore_X_Window
+ecore_x_icccm_transient_for_get(Ecore_X_Window win)
+{
+   Window              forwin;
+
+   if (XGetTransientForHint(_ecore_x_disp, win, &forwin))
+      return (Ecore_X_Window) forwin;
+   else
+      return 0;
+
+}
+
+/**
+ * Set the window role hint.
+ * @param win The window
+ * @param role The role string
+ */
+EAPI void
+ecore_x_icccm_window_role_set(Ecore_X_Window win, const char *role)
+{
+   ecore_x_window_prop_string_set(win, ECORE_X_ATOM_WM_WINDOW_ROLE,
+                                 (char *)role);
+}
+
+/**
+ * Get the window role.
+ * @param win The window
+ * @return The window's role string.
+ */
+EAPI char               *
+ecore_x_icccm_window_role_get(Ecore_X_Window win)
+{
+   return ecore_x_window_prop_string_get(win, ECORE_X_ATOM_WM_WINDOW_ROLE);
+}
+
+/**
+ * Set the window's client leader.
+ * @param win The window
+ * @param l The client leader window
+ *
+ * All non-transient top-level windows created by an app other than
+ * the main window must have this property set to the app's main window.
+ */
+EAPI void
+ecore_x_icccm_client_leader_set(Ecore_X_Window win, Ecore_X_Window l)
+{
+   ecore_x_window_prop_window_set(win, ECORE_X_ATOM_WM_CLIENT_LEADER,
+                                 &l, 1);
+}
+
+/**
+ * Get the window's client leader.
+ * @param win The window
+ * @return The window's client leader window, or 0 if unset */
+EAPI Ecore_X_Window
+ecore_x_icccm_client_leader_get(Ecore_X_Window win)
+{
+   Ecore_X_Window      l;
+
+   if (ecore_x_window_prop_window_get(win, ECORE_X_ATOM_WM_CLIENT_LEADER,
+                                     &l, 1) > 0)
+      return l;
+   return 0;
+}
+
+EAPI void
+ecore_x_icccm_iconic_request_send(Ecore_X_Window win, Ecore_X_Window root)
+{
+   XEvent xev;
+
+   if (!win) return;
+   if (!root) root = DefaultRootWindow(_ecore_x_disp);
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.serial = 0;
+   xev.xclient.send_event = True;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.format = 32;
+   xev.xclient.message_type = ECORE_X_ATOM_WM_CHANGE_STATE;
+   xev.xclient.data.l[0] = IconicState;
+
+   XSendEvent(_ecore_x_disp, root, False,
+              SubstructureNotifyMask | SubstructureRedirectMask, &xev);
+}
+
+/* FIXME: there are older E hints, gnome hints and mwm hints and new netwm */
+/*        hints. each should go in their own file/section so we know which */
+/*        is which. also older kde hints too. we should try support as much */
+/*        as makese sense to support */
diff --git a/src/lib/ecore_x/xlib/ecore_x_mwm.c b/src/lib/ecore_x/xlib/ecore_x_mwm.c
new file mode 100644 (file)
index 0000000..c009c7a
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Various MWM related functions.
+ * 
+ * This is ALL the code involving anything MWM related. for both WM and
+ * client.
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+#define ECORE_X_MWM_HINTS_FUNCTIONS           (1 << 0)
+#define ECORE_X_MWM_HINTS_DECORATIONS         (1 << 1)
+#define ECORE_X_MWM_HINTS_INPUT_MODE          (1 << 2)
+#define ECORE_X_MWM_HINTS_STATUS              (1 << 3)
+
+typedef struct _mwmhints
+{
+   CARD32              flags;
+   CARD32              functions;
+   CARD32              decorations;
+   INT32               inputmode;
+   CARD32              status;
+}
+MWMHints;
+
+EAPI int
+ecore_x_mwm_hints_get(Ecore_X_Window win,
+                     Ecore_X_MWM_Hint_Func * fhint,
+                     Ecore_X_MWM_Hint_Decor * dhint,
+                     Ecore_X_MWM_Hint_Input * ihint)
+{
+   unsigned char      *p = NULL;
+   MWMHints           *mwmhints = NULL;
+   int                 num;
+   int                 ret;
+
+   ret = 0;
+   if (!ecore_x_window_prop_property_get(win,
+                                        ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                        ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                        32, &p, &num))
+      return 0;
+   mwmhints = (MWMHints *) p;
+   if (mwmhints)
+     {
+       if (num >= 4)
+         {
+            if (dhint)
+              {
+                 if (mwmhints->flags & ECORE_X_MWM_HINTS_DECORATIONS)
+                    *dhint = mwmhints->decorations;
+                 else
+                    *dhint = ECORE_X_MWM_HINT_DECOR_ALL;
+              }
+            if (fhint)
+              {
+                 if (mwmhints->flags & ECORE_X_MWM_HINTS_FUNCTIONS)
+                    *fhint = mwmhints->functions;
+                 else
+                    *fhint = ECORE_X_MWM_HINT_FUNC_ALL;
+              }
+            if (ihint)
+              {
+                 if (mwmhints->flags & ECORE_X_MWM_HINTS_INPUT_MODE)
+                    *ihint = mwmhints->inputmode;
+                 else
+                    *ihint = ECORE_X_MWM_HINT_INPUT_MODELESS;
+              }
+            ret = 1;
+         }
+       free(mwmhints);
+     }
+   return ret;
+}
+
+EAPI void
+ecore_x_mwm_borderless_set(Ecore_X_Window win, int borderless)
+{
+   unsigned int data[5] = {0, 0, 0, 0, 0};
+
+   data[0] = 2; /* just set the decorations hint! */
+   data[2] = !borderless;
+   
+   ecore_x_window_prop_property_set(win, 
+                                   ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                   ECORE_X_ATOM_MOTIF_WM_HINTS,
+                                   32, (void *)data, 5);
+}
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_netwm.c b/src/lib/ecore_x/xlib/ecore_x_netwm.c
new file mode 100644 (file)
index 0000000..dacd7f8
--- /dev/null
@@ -0,0 +1,1520 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * _NET_WM... aka Extended Window Manager Hint (EWMH) functions.
+ */
+#include "config.h"
+#include "Ecore.h"
+#include "Ecore_Data.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+typedef struct _Ecore_X_Startup_Info Ecore_X_Startup_Info;
+
+struct _Ecore_X_Startup_Info
+{
+   Ecore_X_Window win;
+
+   int   init;
+
+   int   buffer_size;
+   char *buffer;
+
+   int   length;
+
+   /* These are the sequence info fields */
+   char *id;
+   char *name;
+   int   screen;
+   char *bin;
+   char *icon;
+   int   desktop;
+   int   timestamp;
+   char *description;
+   char *wmclass;
+   int   silent;
+};
+
+static void  _ecore_x_window_prop_string_utf8_set(Ecore_X_Window win, Ecore_X_Atom atom, const char *str);
+static char *_ecore_x_window_prop_string_utf8_get(Ecore_X_Window win, Ecore_X_Atom atom);
+#if 0 /* Unused */
+static int   _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info);
+static int   _ecore_x_netwm_startup_info_parse(Ecore_X_Startup_Info *info, char *data);
+#endif
+static void  _ecore_x_netwm_startup_info_free(void *data);
+
+/*
+ * Convenience macros
+ */
+#define _ATOM_SET_UTF8_STRING_LIST(win, atom, string, cnt) \
+   XChangeProperty(_ecore_x_disp, win, atom, ECORE_X_ATOM_UTF8_STRING, 8, PropModeReplace, \
+                   (unsigned char *)string, cnt)
+
+/*
+ * Local variables
+ */
+
+static Ecore_Hash *startup_info = NULL;
+
+EAPI void
+ecore_x_netwm_init(void)
+{
+   startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
+   if (startup_info)
+     ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
+}
+
+EAPI void
+ecore_x_netwm_shutdown(void)
+{
+   if (startup_info)
+     ecore_hash_destroy(startup_info);
+   startup_info = NULL;
+}
+
+/*
+ * WM identification
+ */
+EAPI void
+ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check,
+                         const char *wm_name)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK, &check, 1);
+   ecore_x_window_prop_window_set(check, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK, &check, 1);
+   _ecore_x_window_prop_string_utf8_set(check, ECORE_X_ATOM_NET_WM_NAME, wm_name);
+   /* This one isn't mandatory */
+   _ecore_x_window_prop_string_utf8_set(root, ECORE_X_ATOM_NET_WM_NAME, wm_name);
+}
+
+/*
+ * Set supported atoms
+ */
+EAPI void
+ecore_x_netwm_supported_set(Ecore_X_Window root, Ecore_X_Atom *supported, int num)
+{
+   ecore_x_window_prop_atom_set(root, ECORE_X_ATOM_NET_SUPPORTED, supported, num);
+}
+
+EAPI int
+ecore_x_netwm_supported_get(Ecore_X_Window root, Ecore_X_Atom **supported, int *num)
+{
+   int            num_ret;
+
+   if (num) *num = 0;
+   if (supported) *supported = NULL;
+
+   num_ret = ecore_x_window_prop_atom_list_get(root, ECORE_X_ATOM_NET_SUPPORTED,
+                                              supported);
+   if (num_ret <= 0)
+      return 0;
+
+   if (num) *num = num_ret;
+   return 1;
+}
+
+/*
+ * Desktop configuration and status
+ */
+EAPI void
+ecore_x_netwm_desk_count_set(Ecore_X_Window root, unsigned int n_desks)
+{
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS,
+                                 &n_desks, 1);
+}
+
+EAPI void
+ecore_x_netwm_desk_roots_set(Ecore_X_Window root,
+                            Ecore_X_Window *vroots, unsigned int n_desks)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_VIRTUAL_ROOTS, vroots, n_desks);
+}
+
+EAPI void
+ecore_x_netwm_desk_names_set(Ecore_X_Window root,
+                            const char **names, unsigned int n_desks)
+{
+   char                ss[32], *buf;
+   const char         *s;
+   unsigned int        i;
+   int                 l, len;
+
+   buf = NULL;
+   len = 0;
+
+   for (i = 0; i < n_desks; i++)
+     {
+       s = (names) ? names[i] : NULL;
+       if (!s)
+         {
+            /* Default to "Desk-<number>" */
+            sprintf(ss, "Desk-%d", i);
+            s = ss;
+         }
+
+       l = strlen(s) + 1;
+       buf = realloc(buf, len + l);
+       memcpy(buf + len, s, l);
+       len += l;
+     }
+
+   _ATOM_SET_UTF8_STRING_LIST(root, ECORE_X_ATOM_NET_DESKTOP_NAMES, buf, len);
+
+   free(buf);
+}
+
+EAPI void
+ecore_x_netwm_desk_size_set(Ecore_X_Window root, unsigned int width,
+                           unsigned int height)
+{
+   unsigned int        size[2];
+
+   size[0] = width;
+   size[1] = height;
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_GEOMETRY, size,
+                                 2);
+}
+
+EAPI void
+ecore_x_netwm_desk_viewports_set(Ecore_X_Window root,
+                                unsigned int *origins, unsigned int n_desks)
+{
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_VIEWPORT,
+                                 origins, 2 * n_desks);
+}
+
+EAPI void
+ecore_x_netwm_desk_layout_set(Ecore_X_Window root, int orientation,
+                             int columns, int rows,
+                             int starting_corner)
+{
+   unsigned int layout[4];
+
+   layout[0] = orientation;
+   layout[1] = columns;
+   layout[2] = rows;
+   layout[3] = starting_corner;
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_LAYOUT,
+                                 layout, 4);
+}
+
+EAPI void
+ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
+                                unsigned int *areas, unsigned int n_desks)
+{
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_WORKAREA, areas,
+                                 4 * n_desks);
+}
+
+EAPI void
+ecore_x_netwm_desk_current_set(Ecore_X_Window root, unsigned int desk)
+{
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_CURRENT_DESKTOP, &desk,
+                                 1);
+}
+
+EAPI void
+ecore_x_netwm_showing_desktop_set(Ecore_X_Window root, int on)
+{
+   unsigned int val;
+
+   val = (on) ? 1 : 0;
+   ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_SHOWING_DESKTOP, &val,
+                                 1);
+}
+
+/*
+ * Client status
+ */
+
+/* Mapping order */
+EAPI void
+ecore_x_netwm_client_list_set(Ecore_X_Window root,
+                             Ecore_X_Window *p_clients, unsigned int n_clients)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_CLIENT_LIST,
+                                 p_clients, n_clients);
+}
+
+/* Stacking order */
+EAPI void
+ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root,
+                                      Ecore_X_Window *p_clients,
+                                      unsigned int n_clients)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_CLIENT_LIST_STACKING,
+                                 p_clients, n_clients);
+}
+
+EAPI void
+ecore_x_netwm_client_active_set(Ecore_X_Window root, Ecore_X_Window win)
+{
+   ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_ACTIVE_WINDOW,
+                                 &win, 1);
+}
+
+EAPI void
+ecore_x_netwm_client_active_request(Ecore_X_Window root, Ecore_X_Window win, int type, Ecore_X_Window current_win)
+{
+   XEvent xev;
+
+   if (!root) root = DefaultRootWindow(_ecore_x_disp);
+   
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.message_type = ECORE_X_ATOM_NET_ACTIVE_WINDOW;
+   xev.xclient.format = 32;
+   xev.xclient.data.l[0] = type;
+   xev.xclient.data.l[1] = CurrentTime;
+   xev.xclient.data.l[2] = current_win;
+   xev.xclient.data.l[3] = 0;
+   xev.xclient.data.l[4] = 0;
+   xev.xclient.data.l[5] = 0;
+
+   XSendEvent(_ecore_x_disp, root, False, 
+             SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+}
+
+EAPI void
+ecore_x_netwm_name_set(Ecore_X_Window win, const char *name)
+{
+   _ecore_x_window_prop_string_utf8_set(win, ECORE_X_ATOM_NET_WM_NAME, name);
+}
+
+EAPI int
+ecore_x_netwm_name_get(Ecore_X_Window win, char **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(win, ECORE_X_ATOM_NET_WM_NAME);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_startup_id_set(Ecore_X_Window win, const char *id)
+{
+   _ecore_x_window_prop_string_utf8_set(win, ECORE_X_ATOM_NET_STARTUP_ID, id);
+}
+
+EAPI int
+ecore_x_netwm_startup_id_get(Ecore_X_Window win, char **id)
+{
+   if (id)
+     *id = _ecore_x_window_prop_string_utf8_get(win, ECORE_X_ATOM_NET_STARTUP_ID);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_visible_name_set(Ecore_X_Window win, const char *name)
+{
+   _ecore_x_window_prop_string_utf8_set(win, ECORE_X_ATOM_NET_WM_VISIBLE_NAME,
+                                       name);
+}
+
+EAPI int
+ecore_x_netwm_visible_name_get(Ecore_X_Window win, char **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(win,
+                                                 ECORE_X_ATOM_NET_WM_VISIBLE_NAME);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_icon_name_set(Ecore_X_Window win, const char *name)
+{
+   _ecore_x_window_prop_string_utf8_set(win, ECORE_X_ATOM_NET_WM_ICON_NAME,
+                                       name);
+}
+
+EAPI int
+ecore_x_netwm_icon_name_get(Ecore_X_Window win, char **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(win,
+                                                 ECORE_X_ATOM_NET_WM_ICON_NAME);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win, const char *name)
+{
+   _ecore_x_window_prop_string_utf8_set(win,
+                                       ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME,
+                                       name);
+}
+
+EAPI int
+ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win, char **name)
+{
+   if (name)
+     *name = _ecore_x_window_prop_string_utf8_get(win,
+                                                 ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_desktop_set(Ecore_X_Window win, unsigned int desk)
+{
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_DESKTOP, &desk, 1);
+}
+
+EAPI int
+ecore_x_netwm_desktop_get(Ecore_X_Window win, unsigned int *desk)
+{
+   int ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_DESKTOP,
+                                       &tmp, 1);
+
+   if (desk) *desk = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+/*
+ * _NET_WM_STRUT is deprecated
+ */
+EAPI void
+ecore_x_netwm_strut_set(Ecore_X_Window win, int left, int right,
+                       int top, int bottom)
+{
+   unsigned int strut[4];
+
+   strut[0] = left;
+   strut[1] = right;
+   strut[2] = top;
+   strut[3] = bottom;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
+}
+
+/*
+ * _NET_WM_STRUT is deprecated
+ */
+EAPI int
+ecore_x_netwm_strut_get(Ecore_X_Window win, int *left, int *right,
+                       int *top, int *bottom)
+{
+   int ret = 0;
+   unsigned int strut[4];
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
+   if (ret != 4)
+     return 0;
+
+   if (left) *left = strut[0];
+   if (right) *right = strut[1];
+   if (top) *top = strut[2];
+   if (bottom) *bottom = strut[3];
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_strut_partial_set(Ecore_X_Window win, int left, int right,
+                               int top, int bottom, int left_start_y, int left_end_y,
+                               int right_start_y, int right_end_y, int top_start_x,
+                               int top_end_x, int bottom_start_x, int bottom_end_x)
+{
+   unsigned int strut[12];
+
+   strut[0] = left;
+   strut[1] = right;
+   strut[2] = top;
+   strut[3] = bottom;
+   strut[4] = left_start_y;
+   strut[5] = left_end_y;
+   strut[6] = right_start_y;
+   strut[7] = right_end_y;
+   strut[8] = top_start_x;
+   strut[9] = top_end_x;
+   strut[10] = bottom_start_x;
+   strut[11] = bottom_end_x;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, strut, 12);
+}
+
+EAPI int
+ecore_x_netwm_strut_partial_get(Ecore_X_Window win, int *left, int *right,
+                               int *top, int *bottom, int *left_start_y, int *left_end_y,
+                               int *right_start_y, int *right_end_y, int *top_start_x,
+                               int *top_end_x, int *bottom_start_x, int *bottom_end_x)
+{
+   int ret = 0;
+   unsigned int strut[12];
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, strut, 12);
+   if (ret != 12)
+     return 0;
+
+   if (left) *left = strut[0];
+   if (right) *right = strut[1];
+   if (top) *top = strut[2];
+   if (bottom) *bottom = strut[3];
+   if (left_start_y) *left_start_y = strut[4];
+   if (left_end_y) *left_end_y = strut[5];
+   if (right_start_y) *right_start_y = strut[6];
+   if (right_end_y) *right_end_y = strut[7];
+   if (top_start_x) *top_start_x = strut[8];
+   if (top_end_x) *top_end_x = strut[9];
+   if (bottom_start_x) *bottom_start_x = strut[10];
+   if (bottom_end_x) *bottom_end_x = strut[11];
+   return 1;
+}
+
+EAPI int
+ecore_x_netwm_icons_get(Ecore_X_Window win, Ecore_X_Icon **icon, int *num)
+{
+   unsigned int  *data, *p;
+   unsigned int  *src;
+   unsigned int   len, icons, i;
+   int            num_ret;
+
+   if (num) *num = 0;
+   if (icon) *icon = NULL;
+
+   num_ret = ecore_x_window_prop_card32_list_get(win, ECORE_X_ATOM_NET_WM_ICON,
+                                                &data);
+   if (num_ret <= 0)
+     return 0;
+   if (!data) return 0;
+   if (num_ret < 2)
+     {
+       free(data);
+       return 0;
+     }
+
+   /* Check how many icons there are */
+   icons = 0;
+   p = data;
+   while (p)
+     {
+       len = p[0] * p[1];
+       p += (len + 2);
+       if ((p - data) > num_ret)
+         {
+            free(data);
+            return 0;
+         }
+       icons++;
+
+       if ((p - data) == num_ret)
+         p = NULL;
+     }
+   if (num) *num = icons;
+
+   /* If the user doesn't want the icons, return */
+   if (!icon)
+     {
+       free(data);
+       return 1;
+     }
+
+   /* Allocate memory */
+   *icon = malloc(icons * sizeof(Ecore_X_Icon));
+   if (!(*icon))
+     {
+       free(data);
+       return 0;
+     }
+
+   /* Fetch the icons */
+   p = data;
+   for (i = 0; i < icons; i++)
+     {
+       unsigned int *ps, *pd, *pe;
+       
+       len = p[0] * p[1];
+       ((*icon)[i]).width = p[0];
+       ((*icon)[i]).height = p[1];
+       src = &(p[2]);
+       ((*icon)[i]).data = malloc(len * sizeof(unsigned int));
+       if (!((*icon)[i]).data)
+         {
+            while (i)
+              free(((*icon)[--i]).data);
+            free(*icon);
+            free(data);
+            return 0;
+         }
+
+       pd = ((*icon)[i]).data;
+       ps = src;
+       pe = ps + len;
+       for (; ps < pe; ps++)
+         {
+            unsigned int r, g, b, a;
+            
+            a = (*ps >> 24) & 0xff;
+            r = (((*ps >> 16) & 0xff) * a) / 255;
+            g = (((*ps >>  8) & 0xff) * a) / 255;
+            b = (((*ps      ) & 0xff) * a) / 255;
+            *pd = (a << 24) | (r << 16) | (g << 8) | (b);
+            pd++;
+         }
+       p += (len + 2);
+     }
+
+   free(data);
+
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_icon_geometry_set(Ecore_X_Window win, int x, int y, int width, int height)
+{
+   unsigned int geometry[4];
+
+   geometry[0] = x;
+   geometry[1] = y;
+   geometry[2] = width;
+   geometry[3] = height;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, geometry, 4);
+}
+
+EAPI int
+ecore_x_netwm_icon_geometry_get(Ecore_X_Window win, int *x, int *y, int *width, int *height)
+{
+   int ret;
+   unsigned int geometry[4];
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY, geometry, 4);
+   if (ret != 4)
+     return 0;
+
+   if (x) *x = geometry[0];
+   if (y) *y = geometry[1];
+   if (width) *width = geometry[2];
+   if (height) *height = geometry[3];
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_pid_set(Ecore_X_Window win, int pid)
+{
+   unsigned int tmp;
+
+   tmp = pid;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_PID,
+                                 &tmp, 1);
+}
+
+EAPI int
+ecore_x_netwm_pid_get(Ecore_X_Window win, int *pid)
+{
+   int ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_PID,
+                                       &tmp, 1);
+   if (pid) *pid = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+EAPI void
+ecore_x_netwm_handled_icons_set(Ecore_X_Window win)
+{
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
+                                 NULL, 0);
+}
+
+EAPI int
+ecore_x_netwm_handled_icons_get(Ecore_X_Window win)
+{
+   int ret = 0;
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
+                                       NULL, 0);
+   return ret == 0 ? 1 : 0;
+}
+
+EAPI void
+ecore_x_netwm_user_time_set(Ecore_X_Window win, unsigned int time)
+{
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_USER_TIME,
+                                 &time, 1);
+}
+
+EAPI int
+ecore_x_netwm_user_time_get(Ecore_X_Window win, unsigned int *time)
+{
+   int ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_USER_TIME,
+                                       &tmp, 1);
+   if (time) *time = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+Ecore_X_Window_State
+_ecore_x_netwm_state_get(Ecore_X_Atom a)
+{
+   if (a == ECORE_X_ATOM_NET_WM_STATE_MODAL)
+     return ECORE_X_WINDOW_STATE_MODAL;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_STICKY)
+     return ECORE_X_WINDOW_STATE_STICKY;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT)
+     return ECORE_X_WINDOW_STATE_MAXIMIZED_VERT;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ)
+     return ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SHADED)
+     return ECORE_X_WINDOW_STATE_SHADED;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR)
+     return ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER)
+     return ECORE_X_WINDOW_STATE_SKIP_PAGER;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_HIDDEN)
+     return ECORE_X_WINDOW_STATE_HIDDEN;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN)
+     return ECORE_X_WINDOW_STATE_FULLSCREEN;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_ABOVE)
+     return ECORE_X_WINDOW_STATE_ABOVE;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_BELOW)
+     return ECORE_X_WINDOW_STATE_BELOW;
+   else if (a == ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION)
+     return ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION;
+   else
+     return ECORE_X_WINDOW_STATE_UNKNOWN;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_state_atom_get(Ecore_X_Window_State s)
+{
+   switch(s)
+     {
+      case ECORE_X_WINDOW_STATE_MODAL:
+        return ECORE_X_ATOM_NET_WM_STATE_MODAL;
+      case ECORE_X_WINDOW_STATE_STICKY:
+        return ECORE_X_ATOM_NET_WM_STATE_STICKY;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
+        return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
+      case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
+        return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
+      case ECORE_X_WINDOW_STATE_SHADED:
+        return ECORE_X_ATOM_NET_WM_STATE_SHADED;
+      case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
+        return ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR;
+      case ECORE_X_WINDOW_STATE_SKIP_PAGER:
+        return ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER;
+      case ECORE_X_WINDOW_STATE_HIDDEN:
+        return ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
+      case ECORE_X_WINDOW_STATE_FULLSCREEN:
+        return ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
+      case ECORE_X_WINDOW_STATE_ABOVE:
+        return ECORE_X_ATOM_NET_WM_STATE_ABOVE;
+      case ECORE_X_WINDOW_STATE_BELOW:
+        return ECORE_X_ATOM_NET_WM_STATE_BELOW;
+      case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
+        return ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
+      default:
+        return 0;
+     }
+}
+
+EAPI void
+ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State *state, unsigned int num)
+{
+   Ecore_X_Atom  *set;
+   unsigned int   i;
+
+   if (!num)
+     {
+       ecore_x_window_prop_property_del(win, ECORE_X_ATOM_NET_WM_STATE);
+       return;
+     }
+
+   set = malloc(num * sizeof(Ecore_X_Atom));
+   if (!set) return;
+
+   for (i = 0; i < num; i++)
+     set[i] = _ecore_x_netwm_state_atom_get(state[i]);
+
+   ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_NET_WM_STATE, set, num);
+
+   free(set);
+}
+
+EAPI int
+ecore_x_netwm_window_state_get(Ecore_X_Window win, Ecore_X_Window_State **state, unsigned int *num)
+{
+   int                   num_ret, i;
+   Ecore_X_Atom         *atoms;
+
+   if (num) *num = 0;
+   if (state) *state = NULL;
+
+   num_ret = ecore_x_window_prop_atom_list_get(win, ECORE_X_ATOM_NET_WM_STATE,
+                                              &atoms);
+   if (num_ret <= 0)
+      return 0;
+
+   if (state)
+     {
+       *state = malloc(num_ret * sizeof(Ecore_X_Window_State));
+       if (*state)
+         for (i = 0; i < num_ret; ++i)
+           (*state)[i] = _ecore_x_netwm_state_get(atoms[i]);
+
+       if (num) *num = num_ret;
+     }
+
+   free(atoms);
+   return 1;
+}
+
+static Ecore_X_Window_Type
+_ecore_x_netwm_window_type_type_get(Ecore_X_Atom atom)
+{
+   if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP)
+     return ECORE_X_WINDOW_TYPE_DESKTOP;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK)
+     return ECORE_X_WINDOW_TYPE_DOCK;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR)
+     return ECORE_X_WINDOW_TYPE_TOOLBAR;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU)
+     return ECORE_X_WINDOW_TYPE_MENU;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY)
+     return ECORE_X_WINDOW_TYPE_UTILITY;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH)
+     return ECORE_X_WINDOW_TYPE_SPLASH;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG)
+     return ECORE_X_WINDOW_TYPE_DIALOG;
+   else if (atom == ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL)
+     return ECORE_X_WINDOW_TYPE_NORMAL;
+   else
+     return ECORE_X_WINDOW_TYPE_UNKNOWN;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_window_type_atom_get(Ecore_X_Window_Type type)
+{
+   switch (type)
+     {
+      case ECORE_X_WINDOW_TYPE_DESKTOP:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
+      case ECORE_X_WINDOW_TYPE_DOCK:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
+      case ECORE_X_WINDOW_TYPE_TOOLBAR:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
+      case ECORE_X_WINDOW_TYPE_MENU:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
+      case ECORE_X_WINDOW_TYPE_UTILITY:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
+      case ECORE_X_WINDOW_TYPE_SPLASH:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
+      case ECORE_X_WINDOW_TYPE_DIALOG:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
+      case ECORE_X_WINDOW_TYPE_NORMAL:
+        return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
+      default:
+        return 0;
+     }
+}
+
+/*
+ * FIXME: We should set WM_TRANSIENT_FOR if type is ECORE_X_WINDOW_TYPE_TOOLBAR
+ * , ECORE_X_WINDOW_TYPE_MENU or ECORE_X_WINDOW_TYPE_DIALOG
+ */
+EAPI void
+ecore_x_netwm_window_type_set(Ecore_X_Window win, Ecore_X_Window_Type type)
+{
+   Ecore_X_Atom atom;
+
+   atom = _ecore_x_netwm_window_type_atom_get(type);
+   ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                               &atom, 1);
+}
+
+/* FIXME: Maybe return 0 on some conditions? */
+EAPI int
+ecore_x_netwm_window_type_get(Ecore_X_Window win, Ecore_X_Window_Type *type)
+{
+   int                  num;
+   Ecore_X_Atom        *atoms = NULL;
+
+   if (type) *type = ECORE_X_WINDOW_TYPE_NORMAL;
+
+   num = ecore_x_window_prop_atom_list_get(win, 
+                                          ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                                          &atoms);
+   if ((type) && (num >= 1) && (atoms))
+     *type = _ecore_x_netwm_window_type_type_get(atoms[0]);
+
+   free(atoms);
+   if (num >= 1) return 1;
+   return 0;
+}
+
+EAPI int
+ecore_x_netwm_window_types_get(Ecore_X_Window win, Ecore_X_Window_Type **types)
+{
+   int                  num, i;
+   Ecore_X_Atom        *atoms = NULL;
+   Ecore_X_Window_Type *atoms2 = NULL;
+   
+   if (types) *types = NULL;
+   num = ecore_x_window_prop_atom_list_get(win,
+                                          ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                                          &atoms);
+   if ((num <= 0) || (!atoms))
+     {
+       if (atoms) free(atoms);
+       return 0;
+     }
+   atoms2 = malloc(num * sizeof(Ecore_X_Window_Type));
+   if (!atoms2) return 0;
+   for (i = 0; i < num; i++)
+     atoms2[i] = _ecore_x_netwm_window_type_type_get(atoms[i]);
+   free(atoms);
+   if (types) *types = atoms2;
+   else free(atoms2);
+   return num;
+}
+
+static Ecore_X_Atom
+_ecore_x_netwm_action_atom_get(Ecore_X_Action action)
+{
+   switch (action)
+     {
+      case ECORE_X_ACTION_MOVE:
+        return ECORE_X_ATOM_NET_WM_ACTION_MOVE;
+      case ECORE_X_ACTION_RESIZE:
+        return ECORE_X_ATOM_NET_WM_ACTION_RESIZE;
+      case ECORE_X_ACTION_MINIMIZE:
+        return ECORE_X_ATOM_NET_WM_ACTION_MINIMIZE;
+      case ECORE_X_ACTION_SHADE:
+        return ECORE_X_ATOM_NET_WM_ACTION_SHADE;
+      case ECORE_X_ACTION_STICK:
+        return ECORE_X_ATOM_NET_WM_ACTION_STICK;
+      case ECORE_X_ACTION_MAXIMIZE_HORZ:
+        return ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_HORZ;
+      case ECORE_X_ACTION_MAXIMIZE_VERT:
+        return ECORE_X_ATOM_NET_WM_ACTION_MAXIMIZE_VERT;
+      case ECORE_X_ACTION_FULLSCREEN:
+        return ECORE_X_ATOM_NET_WM_ACTION_FULLSCREEN;
+      case ECORE_X_ACTION_CHANGE_DESKTOP:
+        return ECORE_X_ATOM_NET_WM_ACTION_CHANGE_DESKTOP;
+      case ECORE_X_ACTION_CLOSE:
+        return ECORE_X_ATOM_NET_WM_ACTION_CLOSE;
+      default:
+        return 0;
+     }
+}
+
+/* FIXME: Get complete list */
+EAPI int
+ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action)
+{
+   int                  num, i, ret = 0;
+   Ecore_X_Atom        *atoms, atom;
+
+   num = ecore_x_window_prop_atom_list_get(win, ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
+                                          &atoms);
+   if (num <= 0)
+     return ret;
+
+   atom = _ecore_x_netwm_action_atom_get(action);
+
+   for (i = 0; i < num; ++i)
+     {
+       if (atom == atoms[i])
+         {
+            ret = 1;
+            break;
+         }
+     }
+
+   free(atoms);
+   return ret;
+}
+
+/* FIXME: Set complete list */
+EAPI void
+ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action *action, unsigned int num)
+{
+   Ecore_X_Atom  *set;
+   unsigned int   i;
+
+   if (!num)
+     {
+       ecore_x_window_prop_property_del(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS);
+       return;
+     }
+
+   set = malloc(num * sizeof(Ecore_X_Atom));
+   if (!set) return;
+
+   for (i = 0; i < num; i++)
+     set[i] = _ecore_x_netwm_action_atom_get(action[i]);
+
+   ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS, set, num);
+
+   free(set);
+}
+
+EAPI int
+ecore_x_netwm_allowed_action_get(Ecore_X_Window win, Ecore_X_Action **action, unsigned int *num)
+{
+   int                   num_ret, i;
+   Ecore_X_Atom         *atoms;
+
+   if (num) *num = 0;
+   if (action) *action = NULL;
+
+   num_ret = ecore_x_window_prop_atom_list_get(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
+                                              &atoms);
+   if (num_ret <= 0)
+      return 0;
+
+   if (action)
+     {
+       *action = malloc(num_ret * sizeof(Ecore_X_Action));
+       if (*action)
+         for (i = 0; i < num_ret; ++i)
+           (*action)[i] = _ecore_x_netwm_action_atom_get(atoms[i]);
+
+       if (num) *num = num_ret;
+     }
+
+   free(atoms);
+   return 1;
+}
+
+EAPI void
+ecore_x_netwm_opacity_set(Ecore_X_Window win, unsigned int opacity)
+{
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
+                                 &opacity, 1);
+}
+
+EAPI int
+ecore_x_netwm_opacity_get(Ecore_X_Window win, unsigned int *opacity)
+{
+   int ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
+                                       &tmp, 1);
+   if (opacity) *opacity = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+EAPI void
+ecore_x_netwm_frame_size_set(Ecore_X_Window win, int fl, int fr, int ft, int fb)
+{
+   unsigned int frames[4];
+
+   frames[0] = fl;
+   frames[1] = fr;
+   frames[2] = ft;
+   frames[3] = fb;
+   ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_FRAME_EXTENTS, frames, 4);
+}
+
+EAPI int
+ecore_x_netwm_frame_size_get(Ecore_X_Window win, int *fl, int *fr, int *ft, int *fb)
+{
+   int ret = 0;
+   unsigned int frames[4];
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_FRAME_EXTENTS, frames, 4);
+   if (ret != 4)
+     return 0;
+
+   if (fl) *fl = frames[0];
+   if (fr) *fr = frames[1];
+   if (ft) *ft = frames[2];
+   if (fb) *fb = frames[3];
+   return 1;
+}
+
+EAPI int
+ecore_x_netwm_sync_counter_get(Ecore_X_Window win, Ecore_X_Sync_Counter *counter)
+{
+   int          ret;
+   unsigned int tmp;
+
+   ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_SYNC_REQUEST_COUNTER,
+                                       &tmp, 1);
+
+   if (counter) *counter = tmp;
+   return ret == 1 ? 1 : 0;
+}
+
+EAPI void
+ecore_x_netwm_ping_send(Ecore_X_Window win)
+{
+   XEvent xev;
+
+   if (!win) return;
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.message_type = ECORE_X_ATOM_WM_PROTOCOLS;
+   xev.xclient.format = 32;
+   xev.xclient.data.l[0] = ECORE_X_ATOM_NET_WM_PING;
+   xev.xclient.data.l[1] = CurrentTime;
+   xev.xclient.data.l[2] = win;
+   xev.xclient.data.l[3] = 0;
+   xev.xclient.data.l[4] = 0;
+   xev.xclient.data.l[5] = 0;
+
+   XSendEvent(_ecore_x_disp, win, False, NoEventMask, &xev);
+}
+
+EAPI void
+ecore_x_netwm_sync_request_send(Ecore_X_Window win, unsigned int serial)
+{
+   XSyncValue value;
+   XEvent xev;
+
+   if (!win) return;
+
+   XSyncIntToValue(&value, (int)serial);
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.message_type = ECORE_X_ATOM_WM_PROTOCOLS;
+   xev.xclient.format = 32;
+   xev.xclient.data.l[0] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
+   xev.xclient.data.l[1] = CurrentTime;
+   xev.xclient.data.l[2] = XSyncValueLow32(value);
+   xev.xclient.data.l[3] = XSyncValueHigh32(value);
+   xev.xclient.data.l[4] = 0;
+
+   XSendEvent(_ecore_x_disp, win, False, NoEventMask, &xev);
+}
+
+EAPI void
+ecore_x_netwm_state_request_send(Ecore_X_Window win, Ecore_X_Window root,
+                                Ecore_X_Window_State s1, Ecore_X_Window_State s2, int set)
+{
+   XEvent xev;
+
+   if (!win) return;
+   if (!root) root = DefaultRootWindow(_ecore_x_disp);
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.serial = 0;
+   xev.xclient.send_event = True;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.format = 32;
+   xev.xclient.message_type = ECORE_X_ATOM_NET_WM_STATE;
+   xev.xclient.data.l[0] = !!set;
+   xev.xclient.data.l[1] = _ecore_x_netwm_state_atom_get(s1);
+   xev.xclient.data.l[2] = _ecore_x_netwm_state_atom_get(s2);
+   /* 1 == normal client, if someone wants to use this
+    * function in a pager, this should be 2 */
+   xev.xclient.data.l[3] = 1;
+   xev.xclient.data.l[4] = 0;
+
+   XSendEvent(_ecore_x_disp, root, False,
+             SubstructureNotifyMask | SubstructureRedirectMask, &xev);
+}
+
+EAPI void
+ecore_x_netwm_desktop_request_send(Ecore_X_Window win, Ecore_X_Window root, unsigned int desktop)
+{
+   XEvent xev;
+
+   if (!win) return;
+   if (!root) root = DefaultRootWindow(_ecore_x_disp);
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.serial = 0;
+   xev.xclient.send_event = True;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.format = 32;
+   xev.xclient.message_type = ECORE_X_ATOM_NET_WM_DESKTOP;
+   xev.xclient.data.l[0] = desktop;
+
+   XSendEvent(_ecore_x_disp, root, False,
+             SubstructureNotifyMask | SubstructureRedirectMask, &xev);
+}
+
+int
+_ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data)
+{
+#if 0
+   Ecore_X_Startup_Info *info;
+
+   if (!startup_info) return 0;
+   info = ecore_hash_get(startup_info, (void *)win);
+   if (info)
+     {
+       printf("Already got info for win: 0x%x\n", win);
+       _ecore_x_netwm_startup_info_free(info);
+     }
+   info = calloc(1, sizeof(Ecore_X_Startup_Info));
+   if (!info) return 0;
+   info->win = win;
+   info->length = 0;
+   info->buffer_size = 161;
+   info->buffer = calloc(info->buffer_size, sizeof(char));
+   if (!info->buffer)
+     {
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+   memcpy(info->buffer, data, 20);
+   info->length += 20;
+   info->buffer[info->length] = 0;
+   ecore_hash_set(startup_info, (void *)info->win, info);
+   if (strlen(info->buffer) != 20)
+     {
+       /* We have a '\0' in there, the message is done */
+       _ecore_x_netwm_startup_info_process(info);
+     }
+#else
+   win = 0;
+   data = NULL;
+#endif
+   return 1;
+}
+
+int
+_ecore_x_netwm_startup_info(Ecore_X_Window win, char *data)
+{
+#if 0
+   Ecore_X_Startup_Info *info;
+   char *p;
+
+   if (!startup_info) return 0;
+   info = ecore_hash_get(startup_info, (void *)win);
+   if (!info) return 0;
+   if ((info->length + 20) > info->buffer_size)
+     {
+       info->buffer_size += 160;
+       info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
+       if (!info->buffer)
+         {
+            ecore_hash_remove(startup_info, (void *)info->win);
+            _ecore_x_netwm_startup_info_free(info);
+            return 0;
+         }
+     }
+   memcpy(info->buffer + info->length, data, 20);
+   p = info->buffer + info->length;
+   info->length += 20;
+   info->buffer[info->length] = 0;
+   if (strlen(p) != 20)
+     {
+       /* We have a '\0' in there, the message is done */
+       _ecore_x_netwm_startup_info_process(info);
+     }
+#else
+   win = 0;
+   data = NULL;
+#endif
+   return 1;
+}
+
+/*
+ * Set UTF-8 string property
+ */
+static void
+_ecore_x_window_prop_string_utf8_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                                    const char *str)
+{
+   XChangeProperty(_ecore_x_disp, win, atom, ECORE_X_ATOM_UTF8_STRING, 8,
+                  PropModeReplace, (unsigned char *)str, strlen(str));
+}
+
+/*
+ * Get UTF-8 string property
+ */
+static char *
+_ecore_x_window_prop_string_utf8_get(Ecore_X_Window win, Ecore_X_Atom atom)
+{
+   char               *str;
+   unsigned char      *prop_ret;
+   Atom                type_ret;
+   unsigned long       bytes_after, num_ret;
+   int                 format_ret;
+
+   str = NULL;
+   prop_ret = NULL;
+   XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+                     ECORE_X_ATOM_UTF8_STRING, &type_ret,
+                     &format_ret, &num_ret, &bytes_after, &prop_ret);
+   if (prop_ret && num_ret > 0 && format_ret == 8)
+     {
+       str = malloc(num_ret + 1);
+       if (str)
+         {
+            memcpy(str, prop_ret, num_ret);
+            str[num_ret] = '\0';
+         }
+     }
+   if (prop_ret)
+      XFree(prop_ret);
+
+   return str;
+}
+
+#if 0 /* Unused */
+/*
+ * Process startup info
+ */
+static int
+_ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
+{
+   Ecore_X_Event_Startup_Sequence *e;
+   int                             event;
+   char                           *p;
+
+   p = strchr(info->buffer, ':');
+   if (!p)
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+   *p = 0;
+   if (!strcmp(info->buffer, "new"))
+     {
+       if (info->init)
+         event = ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
+       else
+         event = ECORE_X_EVENT_STARTUP_SEQUENCE_NEW;
+       info->init = 1;
+     }
+   else if (!strcmp(info->buffer, "change"))
+     {
+       event = ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE;
+     }
+   else if (!strcmp(info->buffer, "remove"))
+     event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
+   else
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+
+   p++;
+
+   if (!_ecore_x_netwm_startup_info_parse(info, p))
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+       return 0;
+     }
+
+   if (info->init)
+     {
+       e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
+       if (!e)
+         {
+            ecore_hash_remove(startup_info, (void *)info->win);
+            _ecore_x_netwm_startup_info_free(info);
+            return 0;
+         }
+       e->win = info->win;
+       ecore_event_add(event, e, NULL, NULL);
+     }
+
+   if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
+     {
+       ecore_hash_remove(startup_info, (void *)info->win);
+       _ecore_x_netwm_startup_info_free(info);
+     }
+   else
+     {
+       /* Discard buffer */
+       info->length = 0;
+       info->buffer[0] = 0;
+     }
+   return 1;
+}
+
+/*
+ * Parse startup info
+ */
+static int
+_ecore_x_netwm_startup_info_parse(Ecore_X_Startup_Info *info, char *data)
+{
+
+   while (*data)
+     {
+       int in_quot_sing, in_quot_dbl, escaped;
+       char *p, *pp;
+       char *key;
+       char value[1024];
+
+       /* Skip space */
+       while (*data == ' ') data++;
+       /* Get key */
+       key = data;
+       data = strchr(key, '=');
+       if (!data) return 0;
+       *data = 0;
+       data++;
+
+       /* Get value */
+       p = data;
+       pp = value;
+       in_quot_dbl = 0;
+       in_quot_sing = 0;
+       escaped = 0;
+       while (*p)
+         {
+            if ((pp - value) >= 1024) return 0;
+            if (escaped)
+              {
+                 *pp = *p;
+                 pp++;
+                 escaped = 0;
+              }
+            else if (in_quot_sing)
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\'')
+                   in_quot_sing = 0;
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            else if (in_quot_dbl)
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\"')
+                   in_quot_dbl = 0;
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            else
+              {
+                 if (*p == '\\')
+                   escaped = 1;
+                 else if (*p == '\'')
+                   in_quot_sing = 1;
+                 else if (*p == '\"')
+                   in_quot_dbl = 1;
+                 else if (*p == ' ')
+                   {
+                      break;
+                   }
+                 else
+                   {
+                      *pp = *p;
+                      pp++;
+                   }
+              }
+            p++;
+         }
+       if ((in_quot_dbl) || (in_quot_sing)) return 0;
+       data = p;
+       *pp = 0;
+
+       /* Parse info */
+       if (!strcmp(key, "ID"))
+         {
+            if ((info->id) && (strcmp(info->id, value))) return 0;
+            info->id = strdup(value);
+            p = strstr(value, "_TIME");
+            if (p)
+              {
+                 info->timestamp = atoi(p + 5);
+              }
+         }
+       else if (!strcmp(key, "NAME"))
+         {
+            if (info->name) free(info->name);
+            info->name = strdup(value);
+         }
+       else if (!strcmp(key, "SCREEN"))
+         {
+            info->screen = atoi(value);
+         }
+       else if (!strcmp(key, "BIN"))
+         {
+            if (info->bin) free(info->bin);
+            info->bin = strdup(value);
+         }
+       else if (!strcmp(key, "ICON"))
+         {
+            if (info->icon) free(info->icon);
+            info->icon = strdup(value);
+         }
+       else if (!strcmp(key, "DESKTOP"))
+         {
+            info->desktop = atoi(value);
+         }
+       else if (!strcmp(key, "TIMESTAMP"))
+         {
+            if (!info->timestamp)
+              info->timestamp = atoi(value);
+         }
+       else if (!strcmp(key, "DESCRIPTION"))
+         {
+            if (info->description) free(info->description);
+            info->description = strdup(value);
+         }
+       else if (!strcmp(key, "WMCLASS"))
+         {
+            if (info->wmclass) free(info->wmclass);
+            info->wmclass = strdup(value);
+         }
+       else if (!strcmp(key, "SILENT"))
+         {
+            info->silent = atoi(value);
+         }
+       else
+         {
+            printf("Ecore X Sequence, Unknown: %s=%s\n", key, value);
+         }
+     }
+   if (!info->id) return 0;
+   return 1;
+}
+#endif
+
+/*
+ * Free startup info struct
+ */
+static void
+_ecore_x_netwm_startup_info_free(void *data)
+{
+   Ecore_X_Startup_Info *info;
+
+   info = data;
+   if (!info) return;
+   if (info->buffer) free(info->buffer);
+   if (info->id) free(info->id);
+   if (info->name) free(info->name);
+   if (info->bin) free(info->bin);
+   if (info->icon) free(info->icon);
+   if (info->description) free(info->description);
+   if (info->wmclass) free(info->wmclass);
+   free(info);
+}
+
+/*
+ * Is screen composited?
+ */
+EAPI int
+ecore_x_screen_is_composited(int screen)
+{
+   Ecore_X_Window      win;
+   Ecore_X_Atom        atom;
+   char                buf[32];
+
+   snprintf(buf, sizeof(buf), "_NET_WM_CM_S%d", screen);
+   atom = XInternAtom(_ecore_x_disp, buf, True);
+   if (atom == None) return 0;
+
+   win = XGetSelectionOwner(_ecore_x_disp, atom);
+
+   return win != None;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_pixmap.c b/src/lib/ecore_x/xlib/ecore_x_pixmap.c
new file mode 100644 (file)
index 0000000..9911200
--- /dev/null
@@ -0,0 +1,95 @@
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+/**
+ * @defgroup Ecore_X_Pixmap_Group X Pixmap Functions
+ *
+ * Functions that operate on pixmaps.
+ */
+
+/**
+ * Creates a new pixmap.
+ * @param   win Window used to determine which screen of the display the
+ *              pixmap should be created on.  If 0, the default root window
+ *              is used.
+ * @param   w   Width of the new pixmap.
+ * @param   h   Height of the new pixmap.
+ * @param   dep Depth of the pixmap.  If 0, the default depth of the default
+ *              screen is used.
+ * @return  New pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI Ecore_X_Pixmap
+ecore_x_pixmap_new(Ecore_X_Window win, int w, int h, int dep)
+{
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);
+   if (dep == 0) dep = DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp));
+   return XCreatePixmap(_ecore_x_disp, win, w, h, dep);
+}
+
+/**
+ * Deletes the reference to the given pixmap.
+ *
+ * If no other clients have a reference to the given pixmap, the server
+ * will destroy it.
+ *
+ * @param   pmap The given pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_del(Ecore_X_Pixmap pmap)
+{
+   XFreePixmap(_ecore_x_disp, pmap);
+}
+
+/**
+ * Pastes a rectangular area of the given pixmap onto the given drawable.
+ * @param   pmap The given pixmap.
+ * @param   dest The given drawable.
+ * @param   gc   The graphics context which governs which operation will
+ *               be used to paste the area onto the drawable.
+ * @param   sx   The X position of the area on the pixmap.
+ * @param   sy   The Y position of the area on the pixmap.
+ * @param   w    The width of the area.
+ * @param   h    The height of the area.
+ * @param   dx   The X position at which to paste the area on @p dest.
+ * @param   dy   The Y position at which to paste the area on @p dest.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, Ecore_X_Drawable dest, 
+                    Ecore_X_GC gc, int sx, int sy, 
+                    int w, int h, int dx, int dy)
+{
+   XCopyArea(_ecore_x_disp, pmap, dest, gc, sx, sy, w, h, dx, dy);
+}
+
+/**
+ * Retrieves the size of the given pixmap.
+ * @param   pmap The given pixmap.
+ * @param   x    Pointer to an integer in which to store the X position.
+ * @param   y    Pointer to an integer in which to store the Y position.
+ * @param   w    Pointer to an integer in which to store the width.
+ * @param   h    Pointer to an integer in which to store the height.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI void
+ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, int *x, int *y, int *w, int *h)
+{
+   if (pmap)
+      ecore_x_drawable_geometry_get(pmap, x, y, w, h);
+}
+
+/**
+ * Retrieves the depth of the given pixmap.
+ * @param   pmap The given pixmap.
+ * @return  The depth of the pixmap.
+ * @ingroup Ecore_X_Pixmap_Group
+ */
+EAPI int
+ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap)
+{
+   return ecore_x_drawable_depth_get(pmap);
+}
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_private.h b/src/lib/ecore_x/xlib/ecore_x_private.h
new file mode 100644 (file)
index 0000000..9fcb649
--- /dev/null
@@ -0,0 +1,238 @@
+#ifndef _ECORE_X_PRIVATE_H
+#define _ECORE_X_PRIVATE_H
+
+#include "config.h"
+
+#include <sys/param.h>
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 256
+#endif
+
+#define XK_MISCELLANY 1
+#include <X11/Xlib.h>
+#include <X11/Xproto.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xresource.h>
+#include <X11/keysymdef.h>
+#include <X11/extensions/XShm.h>
+#include <X11/extensions/shape.h>
+#include <X11/extensions/sync.h>
+#include <X11/extensions/dpms.h>
+#ifdef ECORE_XCURSOR
+#include <X11/Xcursor/Xcursor.h>
+#endif
+#ifdef ECORE_XPRINT
+#include <X11/extensions/Print.h>
+#endif
+#ifdef ECORE_XINERAMA
+#include <X11/extensions/Xinerama.h>
+#endif
+#ifdef ECORE_XRANDR
+#include <X11/extensions/Xrandr.h>
+#endif
+#ifdef ECORE_XSS
+#include <X11/extensions/scrnsaver.h>
+#endif
+#ifdef ECORE_XRENDER
+#include <X11/extensions/Xrender.h>
+#endif
+#ifdef ECORE_XFIXES
+#include <X11/extensions/Xfixes.h>
+#endif
+#ifdef ECORE_XCOMPOSITE
+#include <X11/extensions/Xcomposite.h>
+#endif
+#ifdef ECORE_XDAMAGE
+#include <X11/extensions/Xdamage.h>
+#endif
+#ifdef ECORE_XDPMS
+#include <X11/extensions/dpms.h>
+#endif
+
+#include "ecore_private.h"
+#include "Ecore_X.h"
+
+/* FIXME: this is for simulation only */
+#include "Ecore_Txt.h"
+
+typedef struct _Ecore_X_Selection_Intern Ecore_X_Selection_Intern;
+
+struct _Ecore_X_Selection_Intern
+{
+   Ecore_X_Window    win;
+   Ecore_X_Atom      selection;
+   unsigned char     *data;
+   int               length;
+   Time              time;
+};
+
+typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
+
+struct _Ecore_X_Selection_Converter
+{
+   Ecore_X_Atom target;
+   int (*convert)(char *target, void *data, int size, 
+                  void **data_ret, int *size_ret);
+   Ecore_X_Selection_Converter *next;
+};
+
+typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
+
+struct _Ecore_X_Selection_Parser
+{
+   char     *target;
+   void *(*parse)(const char *target, void *data, int size, int format);
+   Ecore_X_Selection_Parser *next;
+};
+
+typedef struct _Ecore_X_DND_Source 
+{
+   int version;
+   Ecore_X_Window win, dest;
+   
+   enum {
+      ECORE_X_DND_SOURCE_IDLE,
+      ECORE_X_DND_SOURCE_DRAGGING,
+      ECORE_X_DND_SOURCE_DROPPED,
+      ECORE_X_DND_SOURCE_CONVERTING
+   } state;
+
+   struct {
+      short x, y;
+      unsigned short width, height;
+   } rectangle;
+
+   Time time;
+
+   Ecore_X_Atom action, accepted_action;
+   
+   int will_accept;
+   int suppress;
+
+   int await_status;
+} Ecore_X_DND_Source;
+
+typedef struct _Ecore_X_DND_Target 
+{
+   int version;
+   Ecore_X_Window win, source;
+   
+   enum {
+      ECORE_X_DND_TARGET_IDLE,
+      ECORE_X_DND_TARGET_ENTERED
+   } state;
+
+   struct {
+      int x, y;
+   } pos;
+   
+   Time time;
+
+   Ecore_X_Atom action, accepted_action;
+   
+   int will_accept;
+} Ecore_X_DND_Target;
+
+extern Display *_ecore_x_disp;
+extern double   _ecore_x_double_click_time;
+extern Time     _ecore_x_event_last_time;
+extern Window   _ecore_x_event_last_win;
+extern int      _ecore_x_event_last_root_x;
+extern int      _ecore_x_event_last_root_y;
+extern int      _ecore_x_xcursor;
+
+extern Ecore_X_Atom     _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM];
+
+extern int      _ecore_window_grabs_num;
+extern Window  *_ecore_window_grabs;
+extern int    (*_ecore_window_grab_replay_func) (void *data, int event_type, void *event);
+extern void    *_ecore_window_grab_replay_data;
+
+extern Ecore_X_Window _ecore_x_private_win;
+
+void _ecore_x_error_handler_init(void);
+void _ecore_x_event_handle_key_press(XEvent *xevent);
+void _ecore_x_event_handle_key_release(XEvent *xevent);
+void _ecore_x_event_handle_button_press(XEvent *xevent);
+void _ecore_x_event_handle_button_release(XEvent *xevent);
+void _ecore_x_event_handle_motion_notify(XEvent *xevent);
+void _ecore_x_event_handle_enter_notify(XEvent *xevent);
+void _ecore_x_event_handle_leave_notify(XEvent *xevent);
+void _ecore_x_event_handle_focus_in(XEvent *xevent);
+void _ecore_x_event_handle_focus_out(XEvent *xevent);
+void _ecore_x_event_handle_keymap_notify(XEvent *xevent);    
+void _ecore_x_event_handle_expose(XEvent *xevent);
+void _ecore_x_event_handle_graphics_expose(XEvent *xevent);
+void _ecore_x_event_handle_visibility_notify(XEvent *xevent);
+void _ecore_x_event_handle_create_notify(XEvent *xevent);
+void _ecore_x_event_handle_destroy_notify(XEvent *xevent);
+void _ecore_x_event_handle_unmap_notify(XEvent *xevent);
+void _ecore_x_event_handle_map_notify(XEvent *xevent);
+void _ecore_x_event_handle_map_request(XEvent *xevent);
+void _ecore_x_event_handle_reparent_notify(XEvent *xevent);
+void _ecore_x_event_handle_configure_notify(XEvent *xevent);
+void _ecore_x_event_handle_configure_request(XEvent *xevent);
+void _ecore_x_event_handle_gravity_notify(XEvent *xevent);
+void _ecore_x_event_handle_resize_request(XEvent *xevent);
+void _ecore_x_event_handle_circulate_notify(XEvent *xevent);
+void _ecore_x_event_handle_circulate_request(XEvent *xevent);
+void _ecore_x_event_handle_property_notify(XEvent *xevent);
+void _ecore_x_event_handle_selection_clear(XEvent *xevent);
+void _ecore_x_event_handle_selection_request(XEvent *xevent);
+void _ecore_x_event_handle_selection_notify(XEvent *xevent);
+void _ecore_x_event_handle_colormap_notify(XEvent *xevent);
+void _ecore_x_event_handle_client_message(XEvent *xevent);
+void _ecore_x_event_handle_mapping_notify(XEvent *xevent);
+void _ecore_x_event_handle_shape_change(XEvent *xevent);
+void _ecore_x_event_handle_screensaver_notify(XEvent *xevent);
+void _ecore_x_event_handle_sync_counter(XEvent *xevent);
+void _ecore_x_event_handle_sync_alarm(XEvent *xevent);
+#ifdef ECORE_XRANDR
+void _ecore_x_event_handle_randr_change(XEvent *xevent);
+#endif
+#ifdef ECORE_XFIXES
+void _ecore_x_event_handle_fixes_selection_notify(XEvent *xevent);
+#endif
+#ifdef ECORE_XDAMAGE
+void _ecore_x_event_handle_damage_notify(XEvent *xevent);
+#endif
+
+void  _ecore_x_selection_data_init(void);
+void  _ecore_x_selection_shutdown(void);
+Ecore_X_Atom
+      _ecore_x_selection_target_atom_get(const char *target);
+char *_ecore_x_selection_target_get(Ecore_X_Atom target);
+Ecore_X_Selection_Intern * 
+      _ecore_x_selection_get(Ecore_X_Atom selection);
+int   _ecore_x_selection_set(Window w, const void *data, int len, Ecore_X_Atom selection);
+int   _ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret);
+void *_ecore_x_selection_parse(const char *target, void *data, int size, int format);
+
+void _ecore_x_sync_magic_send(int val, Ecore_X_Window swin);
+void _ecore_x_window_grab_remove(Ecore_X_Window win);
+void _ecore_x_key_grab_remove(Ecore_X_Window win);
+
+/* from dnd */
+void _ecore_x_dnd_init(void);
+Ecore_X_DND_Source *_ecore_x_dnd_source_get(void);
+Ecore_X_DND_Target *_ecore_x_dnd_target_get(void);
+void _ecore_x_dnd_drag(Ecore_X_Window root, int x, int y);
+void _ecore_x_dnd_shutdown(void);
+
+/* from netwm */
+Ecore_X_Window_State _ecore_x_netwm_state_get(Ecore_X_Atom a);
+int                  _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data);
+int                  _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data);
+
+/* Fixes * Damage * Composite * DPMS */
+void _ecore_x_fixes_init(void);
+void _ecore_x_damage_init(void);
+void _ecore_x_composite_init(void);
+void _ecore_x_dpms_init(void);
+
+void _ecore_x_atoms_init(void);
+    
+/* from sync */
+
+#endif
diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c b/src/lib/ecore_x/xlib/ecore_x_randr.c
new file mode 100644 (file)
index 0000000..3509957
--- /dev/null
@@ -0,0 +1,264 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+
+EAPI int
+ecore_x_randr_query()
+{
+#ifdef ECORE_XRANDR
+   int randr_base = 0;
+   int randr_err_base = 0;
+
+   if (XRRQueryExtension(_ecore_x_disp, &randr_base, &randr_err_base))
+     return 1;
+   else
+     return 0;
+#else
+   return 0;
+#endif
+}
+
+EAPI int
+ecore_x_randr_events_select(Ecore_X_Window win, int on)
+{
+#ifdef ECORE_XRANDR
+   if (on)
+     XRRSelectInput(_ecore_x_disp, win, RRScreenChangeNotifyMask);
+   else
+     XRRSelectInput(_ecore_x_disp, win, 0);
+
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Randr_Rotation
+ecore_x_randr_screen_rotations_get(Ecore_X_Window root)
+{
+#ifdef ECORE_XRANDR
+   Rotation rot, crot;
+   
+   rot = XRRRotations(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &crot);
+   return rot;
+#else
+   return 0;
+#endif   
+}
+
+EAPI Ecore_X_Randr_Rotation
+ecore_x_randr_screen_rotation_get(Ecore_X_Window root)
+{
+#ifdef ECORE_XRANDR
+   Rotation rot, crot = 0;
+   
+   rot = XRRRotations(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &crot);
+   return crot;
+#else
+   return 0;
+#endif   
+}
+
+EAPI void
+ecore_x_randr_screen_rotation_set(Ecore_X_Window root, Ecore_X_Randr_Rotation rot)
+{
+#ifdef ECORE_XRANDR
+   XRRScreenConfiguration *xrrcfg;
+   SizeID sizeid;
+   Rotation crot;
+   
+   xrrcfg = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (!xrrcfg) return;
+   sizeid = XRRConfigCurrentConfiguration(xrrcfg, &crot);
+   XRRSetScreenConfig(_ecore_x_disp, xrrcfg, root, sizeid, rot, CurrentTime);
+   XRRFreeScreenConfigInfo(xrrcfg);
+#endif   
+}
+
+EAPI Ecore_X_Screen_Size *
+ecore_x_randr_screen_sizes_get(Ecore_X_Window root, int *num)
+{
+#ifdef ECORE_XRANDR
+   Ecore_X_Screen_Size *ret;
+   XRRScreenSize *sizes;
+   int i, n;
+
+   if (num) *num = 0;
+
+   /* we don't have to free sizes, no idea why not */
+   sizes = XRRSizes(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &n);
+   ret = calloc(n, sizeof(Ecore_X_Screen_Size));
+   if (!ret) return NULL;
+
+   if (num) *num = n;
+   for (i = 0; i < n; i++)
+     {
+       ret[i].width = sizes[i].width;
+       ret[i].height = sizes[i].height;
+     }
+   return ret;
+#else
+   if (num) *num = 0;
+   return NULL;
+#endif
+}
+
+EAPI Ecore_X_Screen_Size
+ecore_x_randr_current_screen_size_get(Ecore_X_Window root)
+{
+   Ecore_X_Screen_Size ret = { -1, -1 };
+#ifdef ECORE_XRANDR
+   XRRScreenSize *sizes;
+   XRRScreenConfiguration *sc;
+   SizeID size_index;
+   Rotation rotation;
+   int n;
+
+   sc = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (!sc)
+     {
+       printf("ERROR: Couldn't get screen information for %d\n", root);
+       return ret;
+     }
+   size_index = XRRConfigCurrentConfiguration(sc, &rotation);
+
+   sizes = XRRSizes(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &n);
+   if (size_index < n)
+     {
+       ret.width = sizes[size_index].width;
+       ret.height = sizes[size_index].height;
+     }
+   XRRFreeScreenConfigInfo(sc);
+#endif
+   return ret;
+}
+
+EAPI int
+ecore_x_randr_screen_size_set(Ecore_X_Window root, Ecore_X_Screen_Size size)
+{
+#ifdef ECORE_XRANDR
+   XRRScreenConfiguration *sc;
+   XRRScreenSize *sizes;
+   int i, n, size_index = -1;
+
+   sizes = XRRSizes(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &n);
+   for (i = 0; i < n; i++)
+     {
+       if ((sizes[i].width == size.width) && (sizes[i].height == size.height))
+         {
+            size_index = i;
+            break;
+         }
+     }
+   if (size_index == -1) return 0;
+   
+   sc = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (XRRSetScreenConfig(_ecore_x_disp, sc,
+                         root, size_index,
+                         RR_Rotate_0, CurrentTime))
+     {
+       printf("ERROR: Can't set new screen size!\n");
+       XRRFreeScreenConfigInfo(sc);
+       return 0;
+     }
+   XRRFreeScreenConfigInfo(sc);
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+EAPI Ecore_X_Screen_Refresh_Rate
+ecore_x_randr_current_screen_refresh_rate_get(Ecore_X_Window root)
+{
+   Ecore_X_Screen_Refresh_Rate ret = { -1 };
+#ifdef ECORE_XRANDR
+   XRRScreenConfiguration *sc;
+
+   sc = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (!sc)
+     {
+       printf("ERROR: Couldn't get screen information for %d\n", root);
+       return ret;
+     }
+   ret.rate = XRRConfigCurrentRate(sc);
+   XRRFreeScreenConfigInfo(sc);   
+#endif
+   return ret;
+}
+
+EAPI Ecore_X_Screen_Refresh_Rate *
+ecore_x_randr_screen_refresh_rates_get(Ecore_X_Window root, int size_id, int *num)
+{
+#ifdef ECORE_XRANDR
+   Ecore_X_Screen_Refresh_Rate *ret = NULL;
+   XRRScreenConfiguration *sc;   
+   short *rates;
+   int i, n;
+
+   if (num) *num = 0;
+
+   sc = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (!sc)
+     {
+       printf("ERROR: Couldn't get screen information for %d\n", root);
+       return ret;
+     }
+   
+   rates = XRRRates(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), size_id, &n);
+   ret = calloc(n, sizeof(Ecore_X_Screen_Refresh_Rate));
+   if (!ret) 
+     { 
+       XRRFreeScreenConfigInfo(sc);
+       return NULL;
+     }
+   
+   if (num) *num = n;
+   for (i = 0; i < n; i++)
+     {
+       ret[i].rate = rates[i];
+     }
+   XRRFreeScreenConfigInfo(sc);   
+   return ret;
+#else
+   if (num) *num = 0;   
+   return NULL;
+#endif
+}
+
+EAPI int
+ecore_x_randr_screen_refresh_rate_set(Ecore_X_Window root, Ecore_X_Screen_Size size, Ecore_X_Screen_Refresh_Rate rate)
+{
+#ifdef ECORE_XRANDR
+   XRRScreenConfiguration *sc;
+   XRRScreenSize *sizes;
+   int i, n, size_index = -1;
+
+   sizes = XRRSizes(_ecore_x_disp, XRRRootToScreen(_ecore_x_disp, root), &n);
+   for (i = 0; i < n; i++)
+     {
+       if ((sizes[i].width == size.width) && (sizes[i].height == size.height))
+         {
+            size_index = i;
+            break;
+         }
+     }
+   if (size_index == -1) return 0;
+   
+   sc = XRRGetScreenInfo(_ecore_x_disp, root);
+   if (XRRSetScreenConfigAndRate(_ecore_x_disp, sc,
+                                root, size_index,
+                                RR_Rotate_0, rate.rate, CurrentTime))
+     {
+       printf("ERROR: Can't set new screen size and refresh rate!\n");
+       XRRFreeScreenConfigInfo(sc);
+       return 0;
+     }
+   XRRFreeScreenConfigInfo(sc);
+   return 1;
+#else
+   return 1;
+#endif
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_screensaver.c b/src/lib/ecore_x/xlib/ecore_x_screensaver.c
new file mode 100644 (file)
index 0000000..6559cad
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * Screensaver code
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+static int _screensaver_available = -1;
+
+EAPI int
+ecore_x_screensaver_event_available_get(void)
+{
+   if (_screensaver_available >= 0) return _screensaver_available;
+#ifdef ECORE_XSS
+   int _screensaver_major, _screensaver_minor;
+
+   _screensaver_major = 1;
+   _screensaver_minor = 0;
+
+   if (XScreenSaverQueryVersion(_ecore_x_disp, &_screensaver_major, &_screensaver_minor))
+     _screensaver_available = 1;
+   else
+     _screensaver_available = 0;
+#else
+   _screensaver_available = 0;
+#endif
+   return _screensaver_available;
+}
+
+EAPI int
+ecore_x_screensaver_idle_time_get(void)
+{
+#ifdef ECORE_XSS
+   XScreenSaverInfo *xss;
+   int idle;
+
+   xss = XScreenSaverAllocInfo();
+   XScreenSaverQueryInfo(_ecore_x_disp, RootWindow(_ecore_x_disp, DefaultScreen(_ecore_x_disp)), xss); 
+   idle = xss->idle / 1000;
+   XFree(xss);
+
+   return idle;
+#endif
+
+   return 0;
+}
+
+EAPI void
+ecore_x_screensaver_set(int timeout, int interval, int prefer_blanking, int allow_exposures)
+{
+   XSetScreenSaver(_ecore_x_disp, timeout, interval, prefer_blanking, allow_exposures);
+}
+
+EAPI void
+ecore_x_screensaver_timeout_set(int timeout)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   XSetScreenSaver(_ecore_x_disp, timeout, pint, pblank, pexpo);
+}
+
+EAPI int
+ecore_x_screensaver_timeout_get(void)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   return pto;
+}
+
+EAPI void
+ecore_x_screensaver_blank_set(int blank)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   XSetScreenSaver(_ecore_x_disp, pto, pint, blank, pexpo);
+}
+
+EAPI int
+ecore_x_screensaver_blank_get(void)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   return pblank;
+}
+
+EAPI void
+ecore_x_screensaver_expose_set(int expose)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   XSetScreenSaver(_ecore_x_disp, pto, pint, pblank, expose);
+}
+
+EAPI int
+ecore_x_screensaver_expose_get(void)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   return pexpo;
+}
+
+EAPI void
+ecore_x_screensaver_interval_set(int interval)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   XSetScreenSaver(_ecore_x_disp, pto, interval, pblank, pexpo);
+}
+
+EAPI int
+ecore_x_screensaver_interval_get(void)
+{
+   int pto, pint, pblank, pexpo;
+
+   XGetScreenSaver(_ecore_x_disp, &pto, &pint, &pblank, &pexpo);
+   return pint;
+}
+
+EAPI void
+ecore_x_screensaver_event_listen_set(int on)
+{
+#ifdef ECORE_XSS
+   Ecore_X_Window root;
+
+   root = DefaultRootWindow(_ecore_x_disp);
+   if (on)
+     XScreenSaverSelectInput(_ecore_x_disp, root, ScreenSaverNotifyMask);
+   else
+     XScreenSaverSelectInput(_ecore_x_disp, root, 0);
+#else
+   on = 0;
+#endif
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_selection.c b/src/lib/ecore_x/xlib/ecore_x_selection.c
new file mode 100644 (file)
index 0000000..de45c23
--- /dev/null
@@ -0,0 +1,805 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "ecore_private.h"
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+static Ecore_X_Selection_Intern selections[4];
+static Ecore_X_Selection_Converter *converters = NULL;
+static Ecore_X_Selection_Parser *parsers = NULL;
+
+static int _ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret);
+static int _ecore_x_selection_data_default_free(void *data);
+static void *_ecore_x_selection_parser_files(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_files_free(void *data);
+static void *_ecore_x_selection_parser_text(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_text_free(void *data);
+static void *_ecore_x_selection_parser_targets(const char *target, void *data, int size, int format);
+static int _ecore_x_selection_data_targets_free(void *data);
+
+#define ECORE_X_SELECTION_DATA(x) ((Ecore_X_Selection_Data *)(x))
+
+void
+_ecore_x_selection_data_init(void)
+{
+   /* Initialize global data */
+   memset(selections, 0, sizeof(selections));
+
+   /* Initialize converters */
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_TEXT, 
+                                       _ecore_x_selection_converter_text);
+#ifdef X_HAVE_UTF8_STRING
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_UTF8_STRING, 
+                                       _ecore_x_selection_converter_text);
+#endif
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_COMPOUND_TEXT,
+                                       _ecore_x_selection_converter_text);
+   ecore_x_selection_converter_atom_add(ECORE_X_ATOM_STRING,
+                                       _ecore_x_selection_converter_text);
+
+   /* Initialize parsers */
+   ecore_x_selection_parser_add("text/plain",
+                               _ecore_x_selection_parser_text);
+   ecore_x_selection_parser_add(ECORE_X_SELECTION_TARGET_UTF8_STRING,
+                               _ecore_x_selection_parser_text);
+   ecore_x_selection_parser_add("text/uri-list",
+                               _ecore_x_selection_parser_files);
+   ecore_x_selection_parser_add("_NETSCAPE_URL",
+                               _ecore_x_selection_parser_files);
+   ecore_x_selection_parser_add(ECORE_X_SELECTION_TARGET_TARGETS,
+                               _ecore_x_selection_parser_targets);
+}
+
+void
+_ecore_x_selection_shutdown(void)
+{
+   Ecore_X_Selection_Converter *cnv;
+   Ecore_X_Selection_Parser *prs;
+
+   /* free the selection converters */
+   cnv = converters;
+   while (cnv)
+     {
+       Ecore_X_Selection_Converter *tmp;
+
+       tmp = cnv->next;
+       free(cnv);
+       cnv = tmp;
+     }
+   converters = NULL;
+
+   /* free the selection parsers */
+   prs = parsers;
+   while (prs)
+     {
+       Ecore_X_Selection_Parser *tmp;
+
+       tmp = prs;
+       prs = prs->next;
+       free(tmp->target);
+       free(tmp);
+     }
+   parsers = NULL;
+}
+
+Ecore_X_Selection_Intern *
+_ecore_x_selection_get(Ecore_X_Atom selection)
+{
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     return &selections[0];
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     return &selections[1];
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     return &selections[2];
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     return &selections[3];
+   else
+     return NULL;
+}
+
+int 
+_ecore_x_selection_set(Window w, const void *data, int size, Ecore_X_Atom selection)
+{
+   int in;
+   unsigned char *buf = NULL;
+   
+   XSetSelectionOwner(_ecore_x_disp, selection, w, _ecore_x_event_last_time);
+   if (XGetSelectionOwner(_ecore_x_disp, selection) != w)
+     return 0;
+   
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     in = 0;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     in = 1;
+   else if (selection == ECORE_X_ATOM_SELECTION_XDND)
+     in = 2;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     in = 3;
+   else
+     return 0;
+
+   if (data)
+     {
+       selections[in].win = w;
+       selections[in].selection = selection;
+       selections[in].length = size;
+       selections[in].time = _ecore_x_event_last_time;
+
+       buf = malloc(size);
+       memcpy(buf, data, size);
+       selections[in].data = buf;
+     }
+   else
+     {
+       if (selections[in].data)
+         {
+            free(selections[in].data);
+            memset(&selections[in], 0, sizeof(Ecore_X_Selection_Data));
+         }
+     }
+
+   return 1;
+}
+
+/**
+ * Claim ownership of the PRIMARY selection and set its data.
+ * @param w    The window to which this selection belongs
+ * @param data The data associated with the selection
+ * @param size The size of the data buffer in bytes
+ * @return     Returns 1 if the ownership of the selection was successfully 
+ *             claimed, or 0 if unsuccessful.
+ */
+EAPI int 
+ecore_x_selection_primary_set(Ecore_X_Window w, const void *data, int size)
+{
+   return _ecore_x_selection_set(w, data, size, ECORE_X_ATOM_SELECTION_PRIMARY);
+}
+
+/**
+ * Release ownership of the primary selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ */
+EAPI int 
+ecore_x_selection_primary_clear(void)
+{
+   return _ecore_x_selection_set(None, NULL, 0, ECORE_X_ATOM_SELECTION_PRIMARY);
+}
+
+/**
+ * Claim ownership of the SECONDARY selection and set its data.
+ * @param w    The window to which this selection belongs
+ * @param data The data associated with the selection
+ * @param size The size of the data buffer in bytes
+ * @return     Returns 1 if the ownership of the selection was successfully 
+ *             claimed, or 0 if unsuccessful.
+ */
+EAPI int 
+ecore_x_selection_secondary_set(Ecore_X_Window w, const void *data, int size)
+{
+   return _ecore_x_selection_set(w, data, size, ECORE_X_ATOM_SELECTION_SECONDARY);
+}
+
+/**
+ * Release ownership of the secondary selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ */
+EAPI int 
+ecore_x_selection_secondary_clear(void)
+{
+   return _ecore_x_selection_set(None, NULL, 0, ECORE_X_ATOM_SELECTION_SECONDARY);
+}
+
+/**
+ * Claim ownership of the XDND selection and set its data.
+ * @param w    The window to which this selection belongs
+ * @param data The data associated with the selection
+ * @param size The size of the data buffer in bytes
+ * @return     Returns 1 if the ownership of the selection was successfully 
+ *             claimed, or 0 if unsuccessful.
+ */
+EAPI int 
+ecore_x_selection_xdnd_set(Ecore_X_Window w, const void *data, int size)
+{
+   return _ecore_x_selection_set(w, data, size, ECORE_X_ATOM_SELECTION_XDND);
+}
+
+/**
+ * Release ownership of the XDND selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ */
+EAPI int 
+ecore_x_selection_xdnd_clear(void)
+{
+   return _ecore_x_selection_set(None, NULL, 0, ECORE_X_ATOM_SELECTION_XDND);
+}
+
+/**
+ * Claim ownership of the CLIPBOARD selection and set its data.
+ * @param w    The window to which this selection belongs
+ * @param data The data associated with the selection
+ * @param size The size of the data buffer in bytes
+ * @return     Returns 1 if the ownership of the selection was successfully 
+ *             claimed, or 0 if unsuccessful.
+ *
+ * Get the converted data from a previous CLIPBOARD selection
+ * request. The buffer must be freed when done with.
+ */
+EAPI int 
+ecore_x_selection_clipboard_set(Ecore_X_Window w, const void *data, int size)
+{
+   return _ecore_x_selection_set(w, data, size, ECORE_X_ATOM_SELECTION_CLIPBOARD);
+}
+
+/**
+ * Release ownership of the clipboard selection
+ * @return     Returns 1 if the selection was successfully cleared,
+ *             or 0 if unsuccessful.
+ *
+ */
+EAPI int 
+ecore_x_selection_clipboard_clear(void)
+{
+   return _ecore_x_selection_set(None, NULL, 0, ECORE_X_ATOM_SELECTION_CLIPBOARD);
+}
+
+Ecore_X_Atom
+_ecore_x_selection_target_atom_get(const char *target)
+{
+   Ecore_X_Atom x_target;
+
+   if (!strcmp(target, ECORE_X_SELECTION_TARGET_TEXT))
+     x_target = ECORE_X_ATOM_TEXT;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_COMPOUND_TEXT))
+     x_target = ECORE_X_ATOM_COMPOUND_TEXT;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_STRING))
+     x_target = ECORE_X_ATOM_STRING;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_UTF8_STRING))
+     x_target = ECORE_X_ATOM_UTF8_STRING;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_FILENAME))
+     x_target = ECORE_X_ATOM_FILE_NAME;
+   else
+     {
+       x_target = ecore_x_atom_get(target);
+     }
+
+   return x_target;
+}
+
+char *
+_ecore_x_selection_target_get(Ecore_X_Atom target)
+{
+   /* FIXME: Should not return mem allocated with strdup or X mixed,
+    * one should use free to free, the other XFree */
+   if (target == ECORE_X_ATOM_FILE_NAME)
+     return strdup(ECORE_X_SELECTION_TARGET_FILENAME);
+   else if (target == ECORE_X_ATOM_STRING)
+     return strdup(ECORE_X_SELECTION_TARGET_STRING);
+   else if (target == ECORE_X_ATOM_UTF8_STRING)
+     return strdup(ECORE_X_SELECTION_TARGET_UTF8_STRING);
+   else if (target == ECORE_X_ATOM_TEXT)
+     return strdup(ECORE_X_SELECTION_TARGET_TEXT);
+   else
+     return XGetAtomName(_ecore_x_disp, target);
+}
+
+static void 
+_ecore_x_selection_request(Ecore_X_Window w, Ecore_X_Atom selection, const char *target_str) 
+{
+   Ecore_X_Atom target, prop;
+
+   target = _ecore_x_selection_target_atom_get(target_str);
+
+   if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
+     prop = ECORE_X_ATOM_SELECTION_PROP_PRIMARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
+     prop = ECORE_X_ATOM_SELECTION_PROP_SECONDARY;
+   else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
+     prop = ECORE_X_ATOM_SELECTION_PROP_CLIPBOARD;
+   else
+     return;
+
+   XConvertSelection(_ecore_x_disp, selection, target, prop,
+                    w, CurrentTime);
+}
+
+EAPI void 
+ecore_x_selection_primary_request(Ecore_X_Window w, const char *target)
+{
+   _ecore_x_selection_request(w, ECORE_X_ATOM_SELECTION_PRIMARY, target);
+}
+
+EAPI void 
+ecore_x_selection_secondary_request(Ecore_X_Window w, const char *target)
+{
+   _ecore_x_selection_request(w, ECORE_X_ATOM_SELECTION_SECONDARY, target);
+}
+
+EAPI void 
+ecore_x_selection_xdnd_request(Ecore_X_Window w, const char *target)
+{
+   Ecore_X_Atom atom;
+   Ecore_X_DND_Target *_target;
+
+   _target = _ecore_x_dnd_target_get();
+   atom = _ecore_x_selection_target_atom_get(target);
+   XConvertSelection(_ecore_x_disp, ECORE_X_ATOM_SELECTION_XDND, atom,
+                    ECORE_X_ATOM_SELECTION_PROP_XDND, w,
+                    _target->time);
+}
+
+EAPI void 
+ecore_x_selection_clipboard_request(Ecore_X_Window w, const char *target)
+{
+   _ecore_x_selection_request(w, ECORE_X_ATOM_SELECTION_CLIPBOARD, target);
+}
+
+EAPI void
+ecore_x_selection_converter_atom_add(Ecore_X_Atom target,
+      int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret))
+{
+   Ecore_X_Selection_Converter *cnv;
+
+   cnv = converters;
+   if (converters) 
+     {
+       while (1)
+         {
+            if (cnv->target == target)
+              {
+                 cnv->convert = func;
+                 return;
+              }
+            if (cnv->next)
+              cnv = cnv->next;
+            else
+              break;
+         }
+
+       cnv->next = calloc(1, sizeof(Ecore_X_Selection_Converter));
+       cnv = cnv->next;
+     }
+   else
+     {
+       converters = calloc(1, sizeof(Ecore_X_Selection_Converter));
+       cnv = converters;
+     }
+   cnv->target = target;
+   cnv->convert = func;
+}
+
+EAPI void
+ecore_x_selection_converter_add(char *target, 
+      int (*func)(char *target, void *data, int size, void **data_ret, int *size_ret))
+{
+   Ecore_X_Atom x_target;
+
+   if (!func || !target)
+     return;
+
+   x_target = _ecore_x_selection_target_atom_get(target);
+
+   ecore_x_selection_converter_atom_add(x_target, func);
+}
+
+EAPI void
+ecore_x_selection_converter_atom_del(Ecore_X_Atom target)
+{
+   Ecore_X_Selection_Converter *cnv, *prev_cnv;
+
+   prev_cnv = NULL;
+   cnv = converters;
+
+   while (cnv)
+     {
+       if (cnv->target == target)
+         {
+            if (prev_cnv)
+              prev_cnv->next = cnv->next;
+            else
+              converters = cnv->next; /* This was the first converter */
+            free(cnv);
+
+            return;
+         }
+       prev_cnv = cnv;
+       cnv = cnv->next;
+     }
+}
+
+EAPI void
+ecore_x_selection_converter_del(char *target)
+{
+   Ecore_X_Atom x_target;
+
+   if (!target)
+     return;
+
+   x_target = _ecore_x_selection_target_atom_get(target);
+   ecore_x_selection_converter_atom_del(x_target);
+}
+
+EAPI int
+ecore_x_selection_notify_send(Ecore_X_Window requestor, Ecore_X_Atom selection, Ecore_X_Atom target, Ecore_X_Atom property, Ecore_X_Time time)
+{
+   XEvent          xev;
+   XSelectionEvent xnotify;
+
+   xnotify.type = SelectionNotify;
+   xnotify.display = _ecore_x_disp;
+   xnotify.requestor = requestor;
+   xnotify.selection = selection;
+   xnotify.target = target;
+   xnotify.property = property;
+   xnotify.time = time;
+   xnotify.send_event = True;
+   xnotify.serial = 0;
+
+   xev.xselection = xnotify;
+   return ((XSendEvent(_ecore_x_disp, requestor, False, 0, &xev) > 0) ? 1 : 0);
+}
+
+/* Locate and run conversion callback for specified selection target */
+EAPI int
+ecore_x_selection_convert(Ecore_X_Atom selection, Ecore_X_Atom target, void **data_ret)
+{
+   Ecore_X_Selection_Intern *sel;
+   Ecore_X_Selection_Converter *cnv;
+   void *data;
+   int size;
+   char *tgt_str;
+   
+   sel = _ecore_x_selection_get(selection);
+   tgt_str = _ecore_x_selection_target_get(target);
+
+   for (cnv = converters; cnv; cnv = cnv->next)
+     {
+       if (cnv->target == target)
+         {
+            int r;
+            r = cnv->convert(tgt_str, sel->data, sel->length, &data, &size);
+            free(tgt_str);
+            if (r)
+              {
+                 *data_ret = data;
+                 return r;
+              }
+            else
+              return 0;
+         }
+     }
+
+   /* ICCCM says "If the selection cannot be converted into a form based on the target (and parameters, if any), the owner should refuse the SelectionRequest as previously described." */
+   return 0; 
+
+   /* Default, just return the data 
+   *data_ret = malloc(sel->length);
+   memcpy(*data_ret, sel->data, sel->length);
+   free(tgt_str);
+   return 1;
+   */
+}
+
+/* TODO: We need to work out a mechanism for automatic conversion to any requested
+ * locale using Ecore_Txt functions */
+/* Converter for standard non-utf8 text targets */
+static int
+_ecore_x_selection_converter_text(char *target, void *data, int size, void **data_ret, int *size_ret)
+{
+   XTextProperty text_prop;
+   char *mystr;
+   XICCEncodingStyle style;
+
+   if (!data || !size)
+     return 0;
+
+   if (!strcmp(target, ECORE_X_SELECTION_TARGET_TEXT))
+     style = XTextStyle;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_COMPOUND_TEXT))
+     style = XCompoundTextStyle;
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_STRING))
+     style = XStringStyle;
+#ifdef X_HAVE_UTF8_STRING
+   else if (!strcmp(target, ECORE_X_SELECTION_TARGET_UTF8_STRING))
+     style = XUTF8StringStyle;
+#endif
+   else
+     return 0;
+
+   if (!(mystr = strdup(data)))
+     return 0;
+
+#ifdef X_HAVE_UTF8_STRING
+   if (Xutf8TextListToTextProperty(_ecore_x_disp, &mystr, 1, style, &text_prop) == Success)
+     {
+       int bufsize = strlen((char *)text_prop.value) + 1;
+       *data_ret = malloc(bufsize);
+       memcpy(*data_ret, text_prop.value, bufsize);
+       *size_ret = bufsize;
+       XFree(text_prop.value);
+       free(mystr);
+       return 1;
+     }
+#else
+   if (XmbTextListToTextProperty(_ecore_x_disp, &mystr, 1, style, &text_prop) == Success)
+     {
+       int bufsize = strlen(text_prop.value) + 1;
+       *data_ret = malloc(bufsize);
+       memcpy(*data_ret, text_prop.value, bufsize);
+       *size_ret = bufsize;
+       XFree(text_prop.value);
+       free(mystr);
+       return 1;
+     }
+#endif
+   else
+     {
+       free(mystr);
+       return 0;
+     }
+}
+
+EAPI void
+ecore_x_selection_parser_add(const char *target,
+      void *(*func)(const char *target, void *data, int size, int format))
+{
+   Ecore_X_Selection_Parser *prs;
+
+   if (!target)
+     return;
+
+   prs = parsers;
+   if (parsers) 
+     {
+       while (prs->next)
+         {
+            if (!strcmp(prs->target, target))
+              {
+                 prs->parse = func;
+                 return;
+              }
+            prs = prs->next;
+         }
+
+       prs->next = calloc(1, sizeof(Ecore_X_Selection_Parser));
+       prs = prs->next;
+     }
+   else
+     {
+       parsers = calloc(1, sizeof(Ecore_X_Selection_Parser));
+       prs = parsers;
+     }
+   prs->target = strdup(target);
+   prs->parse = func;
+}
+
+EAPI void
+ecore_x_selection_parser_del(const char *target)
+{
+   Ecore_X_Selection_Parser *prs, *prev_prs;
+
+   if (!target)
+     return;
+
+   prev_prs = NULL;
+   prs = parsers;
+
+   while (prs)
+     {
+       if (!strcmp(prs->target, target))
+         {
+            if (prev_prs)
+              prev_prs->next = prs->next;
+            else
+              parsers = prs->next; /* This was the first parser */
+            free(prs->target);
+            free(prs);
+
+            return;
+         }
+       prev_prs = prs;
+       prs = prs->next;
+     }
+}
+
+/* Locate and run conversion callback for specified selection target */
+void *
+_ecore_x_selection_parse(const char *target, void *data, int size, int format)
+{
+   Ecore_X_Selection_Parser *prs;
+   Ecore_X_Selection_Data *sel;
+   
+   for (prs = parsers; prs; prs = prs->next)
+     {
+       if (!strcmp(prs->target, target))
+         {
+            sel = prs->parse(target, data, size, format);
+            return sel;
+         }
+     }
+
+   /* Default, just return the data */
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data));
+   sel->free = _ecore_x_selection_data_default_free;
+   sel->length = size;
+   sel->format = format;
+   sel->data = data;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_default_free(void *data)
+{
+   Ecore_X_Selection_Data *sel;
+
+   sel = data;
+   free(sel->data);
+   free(sel);
+   return 1;
+}
+
+static void *
+_ecore_x_selection_parser_files(const char *target, void *_data, int size, int format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Files *sel;
+   char *data = _data;
+   int i, is;
+   char *tmp;
+
+   if (strcmp(target, "text/uri-list") &&
+       strcmp(target, "_NETSCAPE_URL"))
+     return NULL;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Files));
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_files_free;
+
+   if (data[size - 1])
+     {
+       /* Isn't nul terminated */
+       size++;
+       data = realloc(data, size);
+       data[size - 1] = 0;
+     }
+
+   tmp = malloc(size);
+   i = 0;
+   is = 0;
+   while ((is < size) && (data[is]))
+     {
+       if ((i == 0) && (data[is] == '#'))
+         {
+            for (; ((data[is]) && (data[is] != '\n')); is++);
+         }
+       else
+         {
+            if ((data[is] != '\r') &&
+                (data[is] != '\n'))
+              {
+                 tmp[i++] = data[is++];
+              }
+            else
+              {
+                 while ((data[is] == '\r') || (data[is] == '\n')) is++;
+                 tmp[i] = 0;
+                 sel->num_files++;
+                 sel->files = realloc(sel->files, sel->num_files * sizeof(char *));
+                 sel->files[sel->num_files - 1] = strdup(tmp);
+                 tmp[0] = 0;
+                 i = 0;
+              }
+         }
+     }
+   if (i > 0)
+     {
+       tmp[i] = 0;
+       sel->num_files++;
+       sel->files = realloc(sel->files, sel->num_files * sizeof(char *));
+       sel->files[sel->num_files - 1] = strdup(tmp);
+     }
+   free(tmp);
+   free(data);
+
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_FILES;
+   ECORE_X_SELECTION_DATA(sel)->length = sel->num_files;
+
+   return ECORE_X_SELECTION_DATA(sel);
+}
+
+static int
+_ecore_x_selection_data_files_free(void *data)
+{
+   Ecore_X_Selection_Data_Files *sel;
+   int i;
+
+   sel = data;
+   if (sel->files)
+     {
+       for (i = 0; i < sel->num_files; i++)
+         free(sel->files[i]);
+       free(sel->files);
+     }
+   free(sel);
+   return 0;
+}
+
+static void *
+_ecore_x_selection_parser_text(const char *target __UNUSED__, void *_data, int size, int format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Text *sel;
+   char *data = _data;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Text));
+
+   if (data[size - 1])
+     {
+       /* Isn't nul terminated */
+       size++;
+       data = realloc(data, size);
+       data[size - 1] = 0;
+     }
+
+   sel->text = (char *)data;
+   ECORE_X_SELECTION_DATA(sel)->length = size;
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_TEXT;
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_text_free;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_text_free(void *data)
+{
+   Ecore_X_Selection_Data_Text *sel;
+
+   sel = data;
+   free(sel->text);
+   free(sel);
+   return 1;
+}
+
+static void *
+_ecore_x_selection_parser_targets(const char *target __UNUSED__, void *data, int size, int format __UNUSED__)
+{
+   Ecore_X_Selection_Data_Targets *sel;
+   unsigned long *targets;
+   int i;
+
+   sel = calloc(1, sizeof(Ecore_X_Selection_Data_Targets));
+   targets = (unsigned long *)data;
+
+   sel->num_targets = size - 2;
+   sel->targets = malloc((size - 2) * sizeof(char *));
+   for (i = 2; i < size; i++)
+     sel->targets[i - 2] = XGetAtomName(_ecore_x_disp, targets[i]);
+   free(data);
+
+   ECORE_X_SELECTION_DATA(sel)->free = _ecore_x_selection_data_targets_free;
+   ECORE_X_SELECTION_DATA(sel)->content = ECORE_X_SELECTION_CONTENT_TARGETS;
+   ECORE_X_SELECTION_DATA(sel)->length = size;
+   return sel;
+}
+
+static int
+_ecore_x_selection_data_targets_free(void *data)
+{
+   Ecore_X_Selection_Data_Targets *sel;
+   int i;
+
+   sel = data;
+
+   if (sel->targets)
+     {
+       for (i = 0; i < sel->num_targets; i++)
+         XFree(sel->targets[i]);
+       free(sel->targets);
+     }
+   free(sel);
+   return 1;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_sync.c b/src/lib/ecore_x/xlib/ecore_x_sync.c
new file mode 100644 (file)
index 0000000..feaaa27
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * XSync code
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+EAPI Ecore_X_Sync_Alarm
+ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter)
+{
+   Ecore_X_Sync_Alarm alarm;
+   XSyncAlarmAttributes values;
+   XSyncValue init;
+
+   XSyncIntToValue(&init, 0);
+   XSyncSetCounter(_ecore_x_disp, counter, init);
+   
+   values.trigger.counter = counter;
+   values.trigger.value_type = XSyncAbsolute;
+   XSyncIntToValue(&values.trigger.wait_value, 1);
+   values.trigger.test_type = XSyncPositiveComparison;
+
+   XSyncIntToValue(&values.delta, 1);
+
+   values.events = True;
+
+   alarm = XSyncCreateAlarm(_ecore_x_disp,
+                           XSyncCACounter |
+                           XSyncCAValueType |
+                           XSyncCAValue |
+                           XSyncCATestType |
+                           XSyncCADelta |
+                           XSyncCAEvents,
+                           &values);
+
+   ecore_x_sync();
+   return alarm;
+}
+
+EAPI int
+ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm)
+{
+   return XSyncDestroyAlarm(_ecore_x_disp, alarm);
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_test.c b/src/lib/ecore_x/xlib/ecore_x_test.c
new file mode 100644 (file)
index 0000000..f80a28a
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+
+EAPI int
+ecore_x_test_fake_key_down(const char *key)
+{
+#ifdef ECORE_XTEST
+   KeyCode             keycode = 0;
+   KeySym              keysym;
+   
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   else
+     {
+       keysym = XStringToKeysym(key);
+       if (keysym == NoSymbol) return 0;
+       keycode  = XKeysymToKeycode(_ecore_x_disp, keysym);
+     }
+   if (keycode == 0) return 0;
+   return XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
+#else
+   return 0;
+#endif
+}
+
+EAPI int
+ecore_x_test_fake_key_up(const char *key)
+{
+#ifdef ECORE_XTEST
+   KeyCode             keycode = 0;
+   KeySym              keysym;
+   
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   else
+     {
+       keysym = XStringToKeysym(key);
+       if (keysym == NoSymbol) return 0;
+       keycode  = XKeysymToKeycode(_ecore_x_disp, keysym);
+     }
+   if (keycode == 0) return 0;
+   return XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
+#else
+   return 0;
+#endif
+}
+
+EAPI int
+ecore_x_test_fake_key_press(const char *key)
+{
+#ifdef ECORE_XTEST
+   KeyCode             keycode = 0;
+   KeySym              keysym = 0;
+   int                 shift = 0;
+   
+   if (!strncmp(key, "Keycode-", 8))
+     keycode = atoi(key + 8);
+   else
+     {
+       keysym = XStringToKeysym(key);
+       if (keysym == NoSymbol) return 0;
+       keycode = XKeysymToKeycode(_ecore_x_disp, keysym);
+       if (XKeycodeToKeysym(_ecore_x_disp, keycode, 0) != keysym)
+         {  
+            if (XKeycodeToKeysym(_ecore_x_disp, keycode, 1) == keysym)
+              shift = 1;
+            else
+              keycode = 0;
+         }
+       else
+         shift = 0;
+     }
+   if (keycode == 0)
+     {
+       static int mod;
+       static KeySym *keysyms;
+       static int keycode_min, keycode_max, keycode_num;
+       int i;  
+
+       XDisplayKeycodes(_ecore_x_disp, &keycode_min, &keycode_max);
+       keysyms = XGetKeyboardMapping(_ecore_x_disp, keycode_min,
+                                     keycode_max - keycode_min + 1,
+                                     &keycode_num);
+       mod = (mod + 1) & 0x7;
+       i = (keycode_max - keycode_min - mod - 1) * keycode_num;
+       
+       keysyms[i] = keysym;
+       XChangeKeyboardMapping(_ecore_x_disp, keycode_min, keycode_num,
+                              keysyms, (keycode_max - keycode_min));
+       XSync(_ecore_x_disp, False);
+       keycode = keycode_max - mod - 1;
+     }
+   if (shift)
+     XTestFakeKeyEvent(_ecore_x_disp, 
+                      XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 1, 0);
+   XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
+   XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
+   if (shift)
+     XTestFakeKeyEvent(_ecore_x_disp, 
+                      XKeysymToKeycode(_ecore_x_disp, XK_Shift_L), 0, 0);
+   return 1;
+#else
+   return 0;
+#endif
+}
+
+EAPI const char *
+ecore_x_keysym_string_get(int keysym)
+{
+   return XKeysymToString(keysym);
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_window.c b/src/lib/ecore_x/xlib/ecore_x_window.c
new file mode 100644 (file)
index 0000000..517fcac
--- /dev/null
@@ -0,0 +1,1410 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+static int             ignore_num = 0;
+static Ecore_X_Window *ignore_list = NULL;
+
+/**
+ * @defgroup Ecore_X_Window_Create_Group X Window Creation Functions
+ *
+ * Functions that can be used to create an X window.
+ */
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+   Window               win;
+   XSetWindowAttributes attr;
+   
+   if (parent == 0) parent = DefaultRootWindow(_ecore_x_disp);
+   attr.backing_store         = NotUseful;
+   attr.override_redirect     = False;
+   attr.border_pixel          = 0;
+   attr.background_pixmap     = None;
+   attr.bit_gravity            = NorthWestGravity;
+   attr.win_gravity            = NorthWestGravity;
+   attr.save_under            = False;
+   attr.do_not_propagate_mask = NoEventMask;
+   attr.event_mask            = KeyPressMask |
+                                KeyReleaseMask |
+                                ButtonPressMask |
+                                ButtonReleaseMask |
+                                EnterWindowMask |
+                                LeaveWindowMask |
+                                PointerMotionMask |
+                                ExposureMask |
+                                VisibilityChangeMask |
+                                StructureNotifyMask |
+                                FocusChangeMask |
+                                PropertyChangeMask |
+                                ColormapChangeMask;
+   win = XCreateWindow(_ecore_x_disp, parent,
+                      x, y, w, h, 0,
+                      CopyFromParent, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/
+                      InputOutput, 
+                      CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/
+                      CWBackingStore |
+                      CWOverrideRedirect | 
+/*                    CWColormap | */
+                      CWBorderPixel |
+                      CWBackPixmap | 
+                      CWSaveUnder | 
+                      CWDontPropagate | 
+                      CWEventMask |
+                      CWBitGravity |
+                      CWWinGravity,
+                      &attr);
+
+   if (parent == DefaultRootWindow(_ecore_x_disp)) ecore_x_window_defaults_set(win);
+   return win;
+}
+
+/**
+ * Creates a window with the override redirect attribute set to @c True.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+   Window               win;
+   XSetWindowAttributes attr;
+   
+   if (parent == 0) parent = DefaultRootWindow(_ecore_x_disp);
+   attr.backing_store         = NotUseful;
+   attr.override_redirect     = True;
+   attr.border_pixel          = 0;
+   attr.background_pixmap     = None;
+   attr.bit_gravity           = NorthWestGravity;
+   attr.win_gravity           = NorthWestGravity;
+   attr.save_under            = False;
+   attr.do_not_propagate_mask = NoEventMask;
+   attr.event_mask            = KeyPressMask |
+                                KeyReleaseMask |
+                                ButtonPressMask |
+                                ButtonReleaseMask |
+                                EnterWindowMask |
+                                LeaveWindowMask |
+                                PointerMotionMask |
+                                ExposureMask |
+                                VisibilityChangeMask |
+                                StructureNotifyMask |
+                                FocusChangeMask |
+                                PropertyChangeMask |
+                                ColormapChangeMask;
+   win = XCreateWindow(_ecore_x_disp, parent,
+                      x, y, w, h, 0,
+                      CopyFromParent, /*DefaultDepth(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/
+                      InputOutput, 
+                      CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/
+                      CWBackingStore |
+                      CWOverrideRedirect | 
+/*                    CWColormap | */
+                      CWBorderPixel |
+                      CWBackPixmap | 
+                      CWSaveUnder | 
+                      CWDontPropagate | 
+                      CWEventMask |
+                      CWBitGravity |
+                      CWWinGravity,
+                      &attr);
+   return win;
+}
+
+/**
+ * Creates a new input window.
+ * @param   parent The parent window to use.    If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+   Window               win;
+   XSetWindowAttributes attr;
+   
+   if (parent == 0) parent = DefaultRootWindow(_ecore_x_disp);
+   attr.override_redirect     = True;
+   attr.do_not_propagate_mask = NoEventMask;
+   attr.event_mask            = KeyPressMask |
+                                KeyReleaseMask |
+                                ButtonPressMask |
+                                ButtonReleaseMask |
+                                EnterWindowMask |
+                                LeaveWindowMask |
+                                PointerMotionMask |
+                                ExposureMask |
+                                VisibilityChangeMask |
+                                StructureNotifyMask |
+                                FocusChangeMask |
+                                PropertyChangeMask |
+                                ColormapChangeMask;
+   win = XCreateWindow(_ecore_x_disp, parent,
+                      x, y, w, h, 0,
+                      CopyFromParent, 
+                      InputOnly,
+                      CopyFromParent, /*DefaultVisual(_ecore_x_disp, DefaultScreen(_ecore_x_disp)),*/
+                      CWOverrideRedirect | 
+                      CWDontPropagate | 
+                      CWEventMask,
+                      &attr);
+
+   if (parent == DefaultRootWindow(_ecore_x_disp))
+     {
+     }
+   return win;
+}
+
+/**
+ * @defgroup Evas_X_Window_Properties_Group X Window Property Functions
+ *
+ * Functions that set window properties.
+ */
+
+/**
+ * Sets the default properties for the given window.
+ *
+ * The default properties set for the window are @c WM_CLIENT_MACHINE and
+ * @c _NET_WM_PID.
+ *
+ * @param   win The given window.
+ * @ingroup Evas_X_Window_Properties_Groups
+ */
+EAPI void
+ecore_x_window_defaults_set(Ecore_X_Window win)
+{
+   long pid;
+   char buf[MAXHOSTNAMELEN];
+   char *hostname[1];
+   int argc;
+   char **argv;
+   XTextProperty xprop;
+
+   /*
+    * Set WM_CLIENT_MACHINE.
+    */
+   gethostname(buf, MAXHOSTNAMELEN);
+   buf[MAXHOSTNAMELEN - 1] = '\0';
+   hostname[0] = buf;
+   /* The ecore function uses UTF8 which Xlib may not like (especially
+    * with older clients) */
+   /* ecore_x_window_prop_string_set(win, ECORE_X_ATOM_WM_CLIENT_MACHINE,
+                                 (char *)buf); */
+   if (XStringListToTextProperty(hostname, 1, &xprop))
+     {
+       XSetWMClientMachine(_ecore_x_disp, win, &xprop);
+       XFree(xprop.value);
+     }
+
+   /*
+    * Set _NET_WM_PID
+    */
+   pid = getpid();
+   ecore_x_netwm_pid_set(win, pid);
+
+   ecore_x_netwm_window_type_set(win, ECORE_X_WINDOW_TYPE_NORMAL);
+
+   ecore_app_args_get(&argc, &argv);
+   ecore_x_icccm_command_set(win, argc, argv);
+}
+
+EAPI void
+ecore_x_window_configure(Ecore_X_Window win,
+                         Ecore_X_Window_Configure_Mask mask,
+                         int x, int y, int w, int h,
+                         int border_width, Ecore_X_Window sibling,
+                         int stack_mode)
+{
+   XWindowChanges xwc;
+
+   if (!win)
+      return;
+
+   xwc.x = x;
+   xwc.y = y;
+   xwc.width = w;
+   xwc.height = h;
+   xwc.border_width = border_width;
+   xwc.sibling = sibling;
+   xwc.stack_mode = stack_mode;
+
+   XConfigureWindow(_ecore_x_disp, win, mask, &xwc);
+}
+
+/**
+ * @defgroup Evas_X_Window_Destroy_Group X Window Destroy Functions
+ *
+ * Functions to destroy X windows.
+ */
+
+/**
+ * Deletes the given window.
+ * @param   win The given window.
+ * @ingroup Evas_X_Window_Destroy_Group
+ */
+EAPI void
+ecore_x_window_del(Ecore_X_Window win)
+{
+   /* sorry sir, deleting the root window doesn't sound like
+    * a smart idea.
+    */
+   if (win)
+      XDestroyWindow(_ecore_x_disp, win);
+}
+
+/**
+ * Set if a window should be ignored.
+ * @param   win The given window.
+ * @param   ignore if to ignore
+ */
+EAPI void
+ecore_x_window_ignore_set(Ecore_X_Window win, int ignore)
+{
+   int i, j;
+
+   if (ignore)
+     {
+       if (ignore_list)
+         {
+            for (i = 0; i < ignore_num; i++)
+              {
+                 if (win == ignore_list[i])
+                   return;
+              }
+            ignore_list = realloc(ignore_list, (ignore_num + 1) * sizeof(Ecore_X_Window));
+            if (!ignore_list) return;
+            ignore_list[ignore_num++] = win;
+         }
+       else
+         {
+            ignore_num = 0;
+            ignore_list = malloc(sizeof(Ecore_X_Window));
+            ignore_list[ignore_num++] = win;
+         }
+     }
+   else
+     {
+       if (!ignore_list) return;
+       for (i = 0, j = 0; i < ignore_num; i++)
+         {
+            if (win != ignore_list[i])
+              ignore_list[i] = ignore_list[j++];
+            else
+              ignore_num--;
+         }
+       ignore_list = realloc(ignore_list, ignore_num * sizeof(Ecore_X_Window));
+     }
+}
+
+/**
+ * Get the ignore list
+ * @param   num number of windows in the list
+ * @return  list of windows to ignore
+ */
+EAPI Ecore_X_Window *
+ecore_x_window_ignore_list(int *num)
+{
+   if (num) *num = ignore_num;
+   return ignore_list;
+}
+
+/**
+ * Sends a delete request to the given window.
+ * @param   win The given window.
+ * @ingroup Evas_X_Window_Destroy_Group
+ */
+EAPI void
+ecore_x_window_delete_request_send(Ecore_X_Window win)
+{
+   XEvent xev;
+
+   /* sorry sir, deleting the root window doesn't sound like
+    * a smart idea.
+    */
+   if (!win)
+      return;
+
+   xev.xclient.type = ClientMessage;
+   xev.xclient.display = _ecore_x_disp;
+   xev.xclient.window = win;
+   xev.xclient.message_type = ECORE_X_ATOM_WM_PROTOCOLS;
+   xev.xclient.format = 32;
+   xev.xclient.data.l[0] = ECORE_X_ATOM_WM_DELETE_WINDOW;
+   xev.xclient.data.l[1] = CurrentTime;
+
+   XSendEvent(_ecore_x_disp, win, False, NoEventMask, &xev);
+}
+
+/**
+ * @defgroup Evas_X_Window_Visibility_Group X Window Visibility Functions
+ *
+ * Functions to access and change the visibility of X windows.
+ */
+
+/**
+ * Shows a window.
+ *
+ * Synonymous to "mapping" a window in X Window System terminology.
+ *
+ * @param   win The window to show.
+ * @ingroup Evas_X_Window_Visibility
+ */
+EAPI void
+ecore_x_window_show(Ecore_X_Window win)
+{
+   XMapWindow(_ecore_x_disp, win);
+}
+
+/**
+ * Hides a window.
+ *
+ * Synonymous to "unmapping" a window in X Window System terminology.
+ *
+ * @param   win The window to hide.
+ * @ingroup Evas_X_Window_Visibility
+ */
+EAPI void
+ecore_x_window_hide(Ecore_X_Window win)
+{
+   XEvent xev;
+   Window root;
+   int idum;
+   unsigned int uidum;
+
+   /* ICCCM: SEND unmap event... */
+   root = win;
+   if (ScreenCount(_ecore_x_disp) == 1)
+     root = DefaultRootWindow(_ecore_x_disp);
+   else
+     XGetGeometry(_ecore_x_disp, win, &root, &idum, &idum, &uidum, &uidum, &uidum, &uidum);
+   xev.xunmap.type = UnmapNotify;
+   xev.xunmap.serial = 0;
+   xev.xunmap.send_event = True;
+   xev.xunmap.display = _ecore_x_disp;
+   xev.xunmap.event = root;
+   xev.xunmap.window = win;
+   xev.xunmap.from_configure = False;
+   XSendEvent(_ecore_x_disp, xev.xunmap.event, False,
+             SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+   XUnmapWindow(_ecore_x_disp, win);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Geometry_Group X Window Geometry Functions
+ *
+ * Functions that change or retrieve the geometry of X windows.
+ */
+
+/**
+ * Moves a window to the position @p x, @p y.
+ *
+ * The position is relative to the upper left hand corner of the
+ * parent window.
+ *
+ * @param   win The window to move.
+ * @param   x   X position.
+ * @param   y   Y position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_move(Ecore_X_Window win, int x, int y)
+{
+   XMoveWindow(_ecore_x_disp, win, x, y);
+}
+
+/**
+ * Resizes a window.
+ * @param   win The window to resize.
+ * @param   w   New width of the window.
+ * @param   h   New height of the window.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_resize(Ecore_X_Window win, int w, int h)
+{
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   XResizeWindow(_ecore_x_disp, win, w, h);
+}
+
+/**
+ * Moves and resizes a window.
+ * @param   win The window to move and resize.
+ * @param   x   New X position of the window.
+ * @param   y   New Y position of the window.
+ * @param   w   New width of the window.
+ * @param   h   New height of the window.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_move_resize(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   XMoveResizeWindow(_ecore_x_disp, win, x, y, w, h);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Focus_Functions X Window Focus Functions
+ *
+ * Functions that give the focus to an X Window.
+ */
+
+/**
+ * Sets the focus to the window @p win.
+ * @param   win The window to focus.
+ * @ingroup Ecore_X_Window_Focus_Functions
+ */
+EAPI void
+ecore_x_window_focus(Ecore_X_Window win)
+{
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);   
+//   XSetInputFocus(_ecore_x_disp, win, RevertToNone, CurrentTime);
+   XSetInputFocus(_ecore_x_disp, win, RevertToPointerRoot, CurrentTime);
+}
+
+/**
+ * Sets the focus to the given window at a specific time.
+ * @param   win The window to focus.
+ * @param   t   When to set the focus to the window.
+ * @ingroup Ecore_X_Window_Focus_Functions
+ */
+EAPI void
+ecore_x_window_focus_at_time(Ecore_X_Window win, Ecore_X_Time t)
+{
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);   
+//   XSetInputFocus(_ecore_x_disp, win, RevertToNone, t);
+   XSetInputFocus(_ecore_x_disp, win, PointerRoot, t);
+}
+
+/**
+ * gets the focus to the window @p win.
+ * @return  The window that has focus.
+ * @ingroup Ecore_X_Window_Focus_Functions
+ */
+EAPI Ecore_X_Window
+ecore_x_window_focus_get(void)
+{
+   Window win;
+   int revert_mode;
+   
+   win = 0;
+   
+   XGetInputFocus(_ecore_x_disp, &win, &revert_mode);
+   return win;
+}
+
+/**
+ * @defgroup Ecore_X_Window_Z_Order_Group X Window Z Order Functions
+ *
+ * Functions that change the Z order of X windows.
+ */
+
+/**
+ * Raises the given window.
+ * @param   win The window to raise.
+ * @ingroup Ecore_X_Window_Z_Order_Group
+ */
+EAPI void
+ecore_x_window_raise(Ecore_X_Window win)
+{
+   XRaiseWindow(_ecore_x_disp, win);
+}
+
+/**
+ * Lowers the given window.
+ * @param   win The window to lower.
+ * @ingroup Ecore_X_Window_Z_Order_Group
+ */
+EAPI void
+ecore_x_window_lower(Ecore_X_Window win)
+{
+   XLowerWindow(_ecore_x_disp, win);
+}
+
+/**
+ * @defgroup Ecore_X_Window_Parent_Group X Window Parent Functions
+ *
+ * Functions that retrieve or changes the parent window of a window.
+ */
+
+/**
+ * Moves a window to within another window at a given position.
+ * @param   win        The window to reparent.
+ * @param   new_parent The new parent window.
+ * @param   x          X position within new parent window.
+ * @param   y          Y position within new parent window.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI void
+ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y)
+{
+   if (new_parent == 0) new_parent = DefaultRootWindow(_ecore_x_disp);   
+   XReparentWindow(_ecore_x_disp, win, new_parent, x, y);
+}
+
+/**
+ * Retrieves the size of the given window.
+ * @param   win The given window.
+ * @param   w   Pointer to an integer into which the width is to be stored.
+ * @param   h   Pointer to an integer into which the height is to be stored.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h)
+{
+   int dummy_x, dummy_y;
+   
+   if (win == 0) 
+      win = DefaultRootWindow(_ecore_x_disp);
+
+   ecore_x_drawable_geometry_get(win, &dummy_x, &dummy_y, w, h);
+}
+
+/**
+ * Retrieves the geometry of the given window.
+ * @param   win The given window.
+ * @param   x   Pointer to an integer in which the X position is to be stored.
+ * @param   y   Pointer to an integer in which the Y position is to be stored.
+ * @param   w   Pointer to an integer in which the width is to be stored.
+ * @param   h   Pointer to an integer in which the height is to be stored.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_geometry_get(Ecore_X_Window win, int *x, int *y, int *w, int *h)
+{
+   if (!win)
+      win = DefaultRootWindow(_ecore_x_disp);
+
+   ecore_x_drawable_geometry_get(win, x, y, w, h);
+}
+
+/**
+ * Retrieves the width of the border of the given window.
+ * @param   win The given window.
+ * @return  Width of the border of @p win.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI int
+ecore_x_window_border_width_get(Ecore_X_Window win)
+{
+   /* doesn't make sense to call this on a root window */
+   if (!win)
+      return 0;
+
+   return ecore_x_drawable_border_width_get(win);
+}
+
+/**
+ * Sets the width of the border of the given window.
+ * @param   win The given window.
+ * @param   width The new border width.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_border_width_set(Ecore_X_Window win, int width)
+{
+   /* doesn't make sense to call this on a root window */
+   if (!win)
+      return;
+
+   XSetWindowBorderWidth (_ecore_x_disp, win, width);
+}
+
+/**
+ * Retrieves the depth of the given window.
+ * @param  win The given window.
+ * @return Depth of the window.
+ */
+EAPI int
+ecore_x_window_depth_get(Ecore_X_Window win)
+{
+   return ecore_x_drawable_depth_get(win);
+}
+  
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_x_window_cursor_show(Ecore_X_Window win, int show)
+{
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);
+   if (!show)
+     {
+       Cursor              c;
+       XColor              cl;
+       Pixmap              p, m;
+       GC                  gc;
+       XGCValues           gcv;
+       
+       p = XCreatePixmap(_ecore_x_disp, win, 1, 1, 1);
+       m = XCreatePixmap(_ecore_x_disp, win, 1, 1, 1);
+       gc = XCreateGC(_ecore_x_disp, m, 0, &gcv);
+       XSetForeground(_ecore_x_disp, gc, 0);
+       XDrawPoint(_ecore_x_disp, m, gc, 0, 0);
+       XFreeGC(_ecore_x_disp, gc);
+       c = XCreatePixmapCursor(_ecore_x_disp, p, m, &cl, &cl, 0, 0);
+       XDefineCursor(_ecore_x_disp, win, c);
+       XFreeCursor(_ecore_x_disp, c);
+       XFreePixmap(_ecore_x_disp, p);
+       XFreePixmap(_ecore_x_disp, m);
+     }
+   else
+     {
+       XDefineCursor(_ecore_x_disp, win, 0);   
+     }
+}
+
+EAPI void
+ecore_x_window_cursor_set(Ecore_X_Window win, Ecore_X_Cursor c)
+{
+   if (c == 0)
+     XUndefineCursor(_ecore_x_disp, win);
+   else
+     XDefineCursor(_ecore_x_disp, win, c);
+}
+
+/**
+ * Finds out whether the given window is currently visible.
+ * @param   win The given window.
+ * @return  1 if the window is visible, otherwise 0.
+ * @ingroup Ecore_X_Window_Visibility_Group
+ */
+EAPI int
+ecore_x_window_visible_get(Ecore_X_Window win)
+{
+   XWindowAttributes attr;
+
+   return (XGetWindowAttributes(_ecore_x_disp, win, &attr) &&
+           (attr.map_state == IsViewable));
+}
+
+
+
+typedef struct _Shadow Shadow;
+struct _Shadow
+{
+   Shadow         *parent;
+   Shadow        **children;
+   Window          win;
+   int             children_num;
+   short           x, y;
+   unsigned short  w, h;
+};
+
+static int shadow_count = 0;
+static Shadow **shadow_base = NULL;
+static int shadow_num = 0;
+
+static Shadow *
+_ecore_x_window_tree_walk(Window win)
+{
+   Window           *list = NULL;
+   Window            parent_win = 0, root_win = 0;
+   int               i, j;
+   unsigned int      num;
+   Shadow           *s, **sl;
+   XWindowAttributes att;
+
+   if (!XGetWindowAttributes(_ecore_x_disp, win, &att)) return NULL;
+//   if (att.class == InputOnly) return NULL;
+   if (att.map_state != IsViewable) return NULL;
+   
+   s = calloc(1, sizeof(Shadow));
+   if (!s) return NULL;
+   s->win = win;
+   s->x = att.x;
+   s->y = att.y;
+   s->w = att.width;
+   s->h = att.height;
+   if (XQueryTree(_ecore_x_disp, s->win, &root_win, &parent_win,
+                  &list, &num))
+     {
+       s->children = calloc(1, sizeof(Shadow *) * num);
+       if (s->children)
+         {
+            s->children_num = num;
+            for (i = 0; i < num; i++)
+              {
+                 s->children[i] = _ecore_x_window_tree_walk(list[i]);
+                 if (s->children[i]) s->children[i]->parent = s;
+              }
+            /* compress list down */
+            j = 0;
+            for (i = 0; i < num; i++)
+              {
+                 if (s->children[i])
+                   {
+                      s->children[j] = s->children[i];
+                      j++;
+                   }
+              }
+            if (j == 0)
+              {
+                 free(s->children);
+                 s->children = NULL;
+                 s->children_num = 0;
+              }
+            else
+              {
+                 s->children_num = j;
+                 sl = realloc(s->children, sizeof(Shadow *) * j);
+                 if (sl) s->children = sl;
+              }
+         }
+     }
+   return s;
+}
+
+static void
+_ecore_x_window_tree_shadow_free1(Shadow *s)
+{
+   int i;
+
+   if (!s) return;
+   if (s->children)
+     {
+       for (i = 0; i < s->children_num; i++)
+         {
+            if (s->children[i])
+              _ecore_x_window_tree_shadow_free1(s->children[i]);
+         }
+       free(s->children);
+     }
+   free(s);
+}
+
+static void
+_ecore_x_window_tree_shadow_free(void)
+{
+   int i;
+   
+   if (!shadow_base) return;
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       _ecore_x_window_tree_shadow_free1(shadow_base[i]);
+     }
+   free(shadow_base);
+   shadow_base = NULL;
+   shadow_num = 0;
+}
+
+static void
+_ecore_x_window_tree_shadow_populate(void)
+{
+   Ecore_X_Window   *roots;
+   int               i, num;
+   
+   roots = ecore_x_window_root_list(&num);
+   if (roots)
+     {
+       shadow_base = calloc(1, sizeof(Shadow *) * num);
+       if (shadow_base)
+         {
+            shadow_num = num;
+            for (i = 0; i < num; i++)
+              shadow_base[i] = _ecore_x_window_tree_walk(roots[i]);
+         }
+       free(roots);
+     }
+}
+
+static void
+_ecore_x_window_tree_shadow_start(void)
+{
+   shadow_count++;
+   if (shadow_count > 1) return;
+   _ecore_x_window_tree_shadow_populate();
+}
+
+static void
+_ecore_x_window_tree_shadow_stop(void)
+{
+   shadow_count--;
+   if (shadow_count != 0) return;
+   _ecore_x_window_tree_shadow_free();
+}
+
+Shadow *
+_ecore_x_window_shadow_tree_find_shadow(Shadow *s, Window win)
+{
+   Shadow *ss;
+   int i;
+
+   if (s->win == win) return s;
+   if (s->children)
+     {
+       for (i = 0; i < s->children_num; i++)
+         {
+            if (!s->children[i]) continue;
+            if ((ss = _ecore_x_window_shadow_tree_find_shadow(s->children[i], win)))
+              return ss;
+         }
+     }
+   return NULL;
+}
+
+Shadow *
+_ecore_x_window_shadow_tree_find(Window base)
+{
+   Shadow *s;
+   int i;
+
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       if ((s = _ecore_x_window_shadow_tree_find_shadow(shadow_base[i], base)))
+         return s;
+     }
+   return NULL;
+}
+
+static Window
+_ecore_x_window_shadow_tree_at_xy_get_shadow(Shadow *s, int bx, int by, int x, int y,
+                                            Ecore_X_Window *skip, int skip_num)
+{
+   Window child;
+   int i, j;
+   int wx, wy;
+   
+   wx = s->x + bx;
+   wy = s->y + by;
+   if (!((x >= wx) && (y >= wy) && (x < (wx + s->w)) && (y < (wy + s->h))))
+     return 0;
+   if (s->children)
+     {
+       int skipit = 0;
+       
+       for (i = s->children_num - 1; i >= 0; --i)
+         {
+            if (!s->children[i]) continue;
+            skipit = 0;
+            if (skip)
+              {
+                 for (j = 0; j < skip_num; j++)
+                   {
+                      if (s->children[i]->win == skip[j])
+                        {
+                           skipit = 1;
+                           goto onward;
+                        }
+                   }
+              }
+            onward:
+            if (!skipit)
+              {
+                 if ((child = _ecore_x_window_shadow_tree_at_xy_get_shadow(s->children[i], wx, wy, x, y, skip, skip_num)))
+                   {
+                      return child;
+                   }
+              }
+         }
+     }
+   return s->win;
+}
+
+static Window
+_ecore_x_window_shadow_tree_at_xy_get(Window base, int bx, int by, int x, int y,
+                                     Ecore_X_Window *skip, int skip_num)
+{
+   Shadow *s;
+   
+   if (!shadow_base)
+     {
+       _ecore_x_window_tree_shadow_populate();
+       if (!shadow_base) return 0;
+     }
+   s = _ecore_x_window_shadow_tree_find(base);
+   if (!s) return 0;
+   return _ecore_x_window_shadow_tree_at_xy_get_shadow(s, bx, by, x, y, skip, skip_num);
+}
+
+/**
+ * Retrieves the top, visible window at the given location,
+ * but skips the windows in the list. This uses a shadow tree built from the
+ * window tree that is only updated the first time
+ * ecore_x_window_shadow_tree_at_xy_with_skip_get() is called, or the next time
+ * it is called after a  ecore_x_window_shadow_tree_flush()
+ * @param   base The base window to start searching from (normally root).
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return  The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base, int x, int y, Ecore_X_Window *skip, int skip_num)
+{
+   return _ecore_x_window_shadow_tree_at_xy_get(base, 0, 0, x, y, skip, skip_num);
+}
+
+/**
+ * Retrieves the parent window a given window has. This uses the shadow window
+ * tree.
+ * @param   root The root window of @p win - if 0, this will be automatically determined with extra processing overhead
+ * @param   win The window to get the parent window of
+ * @return  The parent window of @p win
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_shadow_parent_get(Ecore_X_Window root, Ecore_X_Window win)
+{
+   Shadow *s;
+   int i;
+   
+   if (!shadow_base)
+     {
+       _ecore_x_window_tree_shadow_populate();
+       if (!shadow_base) return 0;
+     }
+   for (i = 0; i < shadow_num; i++)
+     {
+       if (!shadow_base[i]) continue;
+       s = _ecore_x_window_shadow_tree_find_shadow(shadow_base[i], win);
+       if (s)
+         {
+            if (!s->parent) return 0;
+            return s->parent->win;
+         }
+     }
+   return 0;
+}
+
+/**
+ * Flushes the window shadow tree so nothing is stored.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI void
+ecore_x_window_shadow_tree_flush(void)
+{
+   _ecore_x_window_tree_shadow_free();
+}
+
+/**
+ * Retrieves the root window a given window is on.
+ * @param   win The window to get the root window of
+ * @return  The root window of @p win
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_root_get(Ecore_X_Window win)
+{
+   XWindowAttributes att;
+
+   if (!XGetWindowAttributes(_ecore_x_disp, win, &att)) return 0;
+   return att.root;
+}
+
+static Window
+_ecore_x_window_at_xy_get(Window base, int bx, int by, int x, int y,
+                         Ecore_X_Window *skip, int skip_num)
+{
+   Window           *list = NULL;
+   Window            parent_win = 0, child = 0, root_win = 0;
+   int               i, j, wx, wy, ww, wh;
+   unsigned int      num;
+
+   if (!ecore_x_window_visible_get(base))
+     return 0;
+
+   ecore_x_window_geometry_get(base, &wx, &wy, &ww, &wh);
+   wx += bx;
+   wy += by;
+
+   if (!((x >= wx) && (y >= wy) && (x < (wx + ww)) && (y < (wy + wh))))
+     return 0;
+
+   if (!XQueryTree(_ecore_x_disp, base, &root_win, &parent_win, &list, &num))
+     return base;
+
+   if (list)
+     {
+       int skipit = 0;
+       
+       for (i = num - 1; i >= 0; --i)
+         {
+            skipit = 0;
+            
+            if (skip)
+              {
+                 for (j = 0; j < skip_num; j++)
+                   {
+                      if (list[i] == skip[j])
+                        {
+                           skipit = 1;
+                           goto onward;
+                        }
+                   }
+              }
+            onward:
+            if (!skipit)
+              {
+                 if ((child = _ecore_x_window_at_xy_get(list[i], wx, wy, x, y, skip, skip_num)))
+                   {
+                      XFree(list);
+                      return child;
+                   }
+              }
+         }
+       XFree(list);
+     }
+   return base;
+}
+
+/**
+ * Retrieves the top, visible window at the given location.
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return  The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_get(int x, int y)
+{
+   Ecore_X_Window    win, root;
+   
+   /* FIXME: Proper function to determine current root/virtual root
+    * window missing here */
+   root = DefaultRootWindow(_ecore_x_disp);
+   
+   ecore_x_grab();
+   win = _ecore_x_window_at_xy_get(root, 0, 0, x, y, NULL, 0);
+   ecore_x_ungrab();
+   
+   return win ? win : root;
+}
+
+/**
+ * Retrieves the top, visible window at the given location,
+ * but skips the windows in the list.
+ * @param   x The given X position.
+ * @param   y The given Y position.
+ * @return  The window at that position.
+ * @ingroup Ecore_X_Window_Geometry_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_with_skip_get(int x, int y, Ecore_X_Window *skip, int skip_num)
+{
+   Ecore_X_Window    win, root;
+   
+   /* FIXME: Proper function to determine current root/virtual root
+    * window missing here */
+   root = DefaultRootWindow(_ecore_x_disp);
+   
+   ecore_x_grab();
+   win = _ecore_x_window_at_xy_get(root, 0, 0, x, y, skip, skip_num);
+   ecore_x_ungrab();
+   
+   return win ? win : root;
+}
+
+EAPI Ecore_X_Window
+ecore_x_window_at_xy_begin_get(Ecore_X_Window begin, int x, int y)
+{
+   Ecore_X_Window    win;
+   
+   ecore_x_grab();
+   win = _ecore_x_window_at_xy_get(begin, 0, 0, x, y, NULL, 0);
+   ecore_x_ungrab();
+   
+   return win ? win : begin;
+}
+
+/**
+ * Retrieves the parent window of the given window.
+ * @param   win The given window.
+ * @return  The parent window of @p win.
+ * @ingroup Ecore_X_Window_Parent_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_parent_get(Ecore_X_Window win)
+{
+   Window         root, parent, *children = NULL;
+   unsigned int   num;
+
+   if (!XQueryTree(_ecore_x_disp, win, &root, &parent, &children, &num))
+      return 0;
+   if (children)
+      XFree(children);
+
+   return parent;
+}
+
+/**
+ * Sets the background color of the given window.
+ * @param win   The given window
+ * @param r     red value (0...65536, 16 bits)
+ * @param g     green value (0...65536, 16 bits)
+ * @param b     blue value (0...65536, 16 bits)
+ */
+EAPI void
+ecore_x_window_background_color_set(Ecore_X_Window win, unsigned short r,
+                                   unsigned short g, unsigned short b)
+{
+   XSetWindowAttributes attr;
+   Colormap map;
+   XColor col;
+
+   col.red = r;
+   col.green = g;
+   col.blue = b;
+
+   map = DefaultColormap(_ecore_x_disp, DefaultScreen(_ecore_x_disp));
+   XAllocColor(_ecore_x_disp, map, &col);
+
+   attr.background_pixel = col.pixel;
+   XChangeWindowAttributes(_ecore_x_disp, win, CWBackPixel, &attr);
+}
+
+EAPI void
+ecore_x_window_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav)
+{
+   XSetWindowAttributes att;
+   
+   att.win_gravity = grav;
+   XChangeWindowAttributes(_ecore_x_disp, win, CWWinGravity, &att);
+}
+
+EAPI void
+ecore_x_window_pixel_gravity_set(Ecore_X_Window win, Ecore_X_Gravity grav)
+{
+   XSetWindowAttributes att;
+   
+   att.bit_gravity = grav;
+   XChangeWindowAttributes(_ecore_x_disp, win, CWBitGravity, &att);
+}
+
+EAPI void
+ecore_x_window_pixmap_set(Ecore_X_Window win, Ecore_X_Pixmap pmap)
+{
+   XSetWindowBackgroundPixmap(_ecore_x_disp, win, pmap);
+}
+
+EAPI void
+ecore_x_window_area_clear(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XClearArea(_ecore_x_disp, win, x, y, w, h, False);
+}
+
+EAPI void
+ecore_x_window_area_expose(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XClearArea(_ecore_x_disp, win, x, y, w, h, True);
+}
+
+EAPI void
+ecore_x_window_override_set(Ecore_X_Window win, int override)
+{
+   XSetWindowAttributes att;
+   
+   att.override_redirect = override;
+   XChangeWindowAttributes(_ecore_x_disp, win, CWOverrideRedirect, &att);
+}
+
+#ifdef ECORE_XRENDER   
+static Ecore_X_Window
+_ecore_x_window_argb_internal_new(Ecore_X_Window parent, int x, int y, int w, int h, int override, int saveunder)
+{
+   Window                win;
+   XSetWindowAttributes  attr;
+   XWindowAttributes     att;
+   XVisualInfo          *xvi;
+   XVisualInfo           vi_in;
+   int                   nvi, i, scr = 0;
+   XRenderPictFormat    *fmt;
+   Visual               *vis;
+   
+   if (parent == 0)
+     {
+       parent = DefaultRootWindow(_ecore_x_disp);
+       scr = DefaultScreen(_ecore_x_disp);
+     }
+   else
+     {
+       /* ewww - round trip */
+       XGetWindowAttributes(_ecore_x_disp, parent, &att);
+       for (i = 0; i < ScreenCount(_ecore_x_disp); i++)
+         {
+            if (att.screen == ScreenOfDisplay(_ecore_x_disp, i))
+              {
+                 scr = i;
+                 break;
+              }
+         }
+     }
+   vi_in.screen = scr;
+   vi_in.depth = 32;
+   vi_in.class = TrueColor;
+   xvi = XGetVisualInfo(_ecore_x_disp,
+                       VisualScreenMask |
+                       VisualDepthMask |
+                       VisualClassMask,
+                       &vi_in,
+                       &nvi);
+   if (xvi == NULL) return 0;
+   vis = NULL;
+   for (i = 0; i < nvi; i++)
+     {
+       fmt = XRenderFindVisualFormat(_ecore_x_disp, xvi[i].visual);
+       if ((fmt->type == PictTypeDirect) && (fmt->direct.alphaMask))
+         {
+            vis = xvi[i].visual;
+            break;
+         }
+     }
+   XFree (xvi);
+   
+   attr.backing_store         = NotUseful;
+   attr.override_redirect     = override;
+   attr.colormap              = XCreateColormap(_ecore_x_disp, parent,
+                                               vis, AllocNone);
+   attr.border_pixel          = 0;
+   attr.background_pixmap     = None;
+   attr.bit_gravity           = NorthWestGravity;
+   attr.win_gravity           = NorthWestGravity;
+   attr.save_under            = saveunder;
+   attr.do_not_propagate_mask = NoEventMask;
+   attr.event_mask            = KeyPressMask |
+                                KeyReleaseMask |
+                                ButtonPressMask |
+                                ButtonReleaseMask |
+                                EnterWindowMask |
+                                LeaveWindowMask |
+                                PointerMotionMask |
+                                ExposureMask |
+                                VisibilityChangeMask |
+                                StructureNotifyMask |
+                                FocusChangeMask |
+                                PropertyChangeMask |
+                                ColormapChangeMask;
+   win = XCreateWindow(_ecore_x_disp, parent,
+                      x, y, w, h, 0,
+                      32, 
+                      InputOutput, 
+                      vis,
+                      CWBackingStore |
+                      CWOverrideRedirect | 
+                      CWColormap |
+                      CWBorderPixel |
+                      CWBackPixmap | 
+                      CWSaveUnder | 
+                      CWDontPropagate | 
+                      CWEventMask |
+                      CWBitGravity |
+                      CWWinGravity,
+                      &attr);
+   XFreeColormap(_ecore_x_disp, attr.colormap);
+
+   if (parent == DefaultRootWindow(_ecore_x_disp)) ecore_x_window_defaults_set(win);
+   return win;
+}
+#endif
+
+EAPI int
+ecore_x_window_argb_get(Ecore_X_Window win)
+{
+#ifdef ECORE_XRENDER   
+   XWindowAttributes att;
+   XRenderPictFormat *fmt;
+   
+   XGetWindowAttributes(_ecore_x_disp, win, &att);
+   fmt = XRenderFindVisualFormat(_ecore_x_disp, att.visual);
+   if (!fmt) return 0;
+   if ((fmt->type == PictTypeDirect) && (fmt->direct.alphaMask)) return 1;
+   return 0;
+#else
+   return 0;
+#endif   
+}
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_manager_argb_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+#ifdef ECORE_XRENDER   
+   return _ecore_x_window_argb_internal_new(parent, x, y, w, h, 1, 0);
+#else
+   return 0;
+#endif   
+}
+
+/**
+ * Creates a new window.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_argb_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+#ifdef ECORE_XRENDER   
+   return _ecore_x_window_argb_internal_new(parent, x, y, w, h, 0, 0);
+#else
+   return 0;
+#endif   
+}
+
+/**
+ * Creates a window with the override redirect attribute set to @c True.
+ * @param   parent The parent window to use.  If @p parent is @c 0, the root
+ *                 window of the default display is used.
+ * @param   x      X position.
+ * @param   y      Y position.
+ * @param   w      Width.
+ * @param   h      Height.
+ * @return  The new window handle.
+ * @ingroup Ecore_X_Window_Create_Group
+ */
+EAPI Ecore_X_Window
+ecore_x_window_override_argb_new(Ecore_X_Window parent, int x, int y, int w, int h)
+{
+#ifdef ECORE_XRENDER   
+   return _ecore_x_window_argb_internal_new(parent, x, y, w, h, 1, 0);
+#else
+   return 0;
+#endif   
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_window_prop.c b/src/lib/ecore_x/xlib/ecore_x_window_prop.c
new file mode 100644 (file)
index 0000000..6081680
--- /dev/null
@@ -0,0 +1,654 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+#include <inttypes.h>
+#include <limits.h>
+
+#define _ATOM_SET_CARD32(win, atom, p_val, cnt) \
+   XChangeProperty(_ecore_x_disp, win, atom, XA_CARDINAL, 32, PropModeReplace, \
+                   (unsigned char *)p_val, cnt)
+
+/*
+ * Set CARD32 (array) property
+ */
+EAPI void
+ecore_x_window_prop_card32_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                              unsigned int *val, unsigned int num)
+{
+#if SIZEOF_INT == SIZEOF_LONG
+   _ATOM_SET_CARD32(win, atom, val, num);
+#else
+   long               *v2;
+   unsigned int        i;
+
+   v2 = malloc(num * sizeof(long));
+   if (!v2)
+      return;
+   for (i = 0; i < num; i++)
+      v2[i] = val[i];
+   _ATOM_SET_CARD32(win, atom, v2, num);
+   free(v2);
+#endif
+}
+
+/*
+ * Get CARD32 (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_card32_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                              unsigned int *val, unsigned int len)
+{
+   unsigned char      *prop_ret;
+   Atom                type_ret;
+   unsigned long       bytes_after, num_ret;
+   int                 format_ret;
+   unsigned int        i;
+   int                 num;
+
+   prop_ret = NULL;
+   XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+                     XA_CARDINAL, &type_ret, &format_ret, &num_ret,
+                     &bytes_after, &prop_ret);
+   if (prop_ret && type_ret == XA_CARDINAL && format_ret == 32)
+     {
+       if (num_ret < len)
+          len = num_ret;
+
+       for (i = 0; i < len; i++)
+          val[i] = ((unsigned long*)prop_ret)[i];
+       
+       num = len;
+     }
+   else
+     {
+       num = -1;
+     }
+   if (prop_ret)
+      XFree(prop_ret);
+
+   return num;
+}
+
+/*
+ * Get CARD32 (array) property of any length
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_card32_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                                   unsigned int **plst)
+{
+   unsigned char      *prop_ret;
+   Atom                type_ret;
+   unsigned long       bytes_after, num_ret;
+   int                 format_ret;
+   unsigned int        i, *val;
+   int                 num;
+
+   prop_ret = NULL;
+   if (XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+                         XA_CARDINAL, &type_ret, &format_ret, &num_ret,
+                         &bytes_after, &prop_ret) != Success)
+      return -1;
+
+   if (type_ret == None || num_ret == 0)
+     {
+       num = 0;
+       *plst = NULL;
+     }
+   else if (prop_ret && type_ret == XA_CARDINAL && format_ret == 32)
+     {
+       val = malloc(num_ret * sizeof(unsigned int));
+       for (i = 0; i < num_ret; i++)
+          val[i] = ((unsigned long *)prop_ret)[i];
+       num = num_ret;
+       *plst = val;
+     }
+   else
+     {
+       num = -1;
+       *plst = NULL;
+     }
+   if (prop_ret)
+      XFree(prop_ret);
+
+   return num;
+}
+
+/*
+ * Set X ID (array) property
+ */
+EAPI void
+ecore_x_window_prop_xid_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                           Ecore_X_Atom type, Ecore_X_ID * lst,
+                           unsigned int num)
+{
+#if SIZEOF_INT == SIZEOF_LONG
+   XChangeProperty(_ecore_x_disp, win, atom, type, 32, PropModeReplace,
+                  (unsigned char *)lst, num);
+#else
+   unsigned long      *pl;
+   unsigned int        i;
+
+   pl = malloc(num * sizeof(long));
+   if (!pl)
+      return;
+   for (i = 0; i < num; i++)
+      pl[i] = lst[i];
+   XChangeProperty(_ecore_x_disp, win, atom, type, 32, PropModeReplace,
+                  (unsigned char *)pl, num);
+   free(pl);
+#endif
+}
+
+/*
+ * Get X ID (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_xid_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                           Ecore_X_Atom type, Ecore_X_ID * lst,
+                           unsigned int len)
+{
+   unsigned char      *prop_ret;
+   Atom                type_ret;
+   unsigned long       bytes_after, num_ret;
+   int                 format_ret;
+   int                 num;
+   unsigned            i;
+
+   prop_ret = NULL;
+   if (XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+                         type, &type_ret, &format_ret, &num_ret,
+                         &bytes_after, &prop_ret) != Success)
+      return -1;
+
+   if (type_ret == None)
+     {
+       num = 0;
+     }
+   else if (prop_ret && type_ret == type && format_ret == 32)
+     {
+       if (num_ret < len)
+          len = num_ret;
+       for (i = 0; i < len; i++)
+          lst[i] = ((unsigned long *)prop_ret)[i];
+       num = len;
+     }
+   else
+     {
+       num = -1;
+     }
+   if (prop_ret)
+      XFree(prop_ret);
+
+   return num;
+}
+
+/*
+ * Get X ID (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_xid_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                                Ecore_X_Atom type, Ecore_X_ID ** val)
+{
+   unsigned char      *prop_ret;
+   Atom                type_ret;
+   unsigned long       bytes_after, num_ret;
+   int                 format_ret;
+   Ecore_X_Atom       *alst;
+   int                 num;
+   unsigned            i;
+
+   *val = NULL;
+   prop_ret = NULL;
+   if (XGetWindowProperty(_ecore_x_disp, win, atom, 0, 0x7fffffff, False,
+                         type, &type_ret, &format_ret, &num_ret,
+                         &bytes_after, &prop_ret) != Success)
+      return -1;
+
+   if (type_ret == None || num_ret == 0)
+     {
+       num = 0;
+     }
+   else if (prop_ret && type_ret == type && format_ret == 32)
+     {
+       alst = malloc(num_ret * sizeof(Ecore_X_ID));
+       for (i = 0; i < num_ret; i++)
+          alst[i] = ((unsigned long *)prop_ret)[i];
+       *val = alst;
+       num = num_ret;
+     }
+   else
+     {
+       num = -1;
+     }
+   if (prop_ret)
+      XFree(prop_ret);
+
+   return num;
+}
+
+/*
+ * Remove/add/toggle X ID list item.
+ */
+EAPI void
+ecore_x_window_prop_xid_list_change(Ecore_X_Window win, Ecore_X_Atom atom,
+                                   Ecore_X_Atom type, Ecore_X_ID item, int op)
+{
+   Ecore_X_ID         *lst;
+   int                 i, num;
+
+   num = ecore_x_window_prop_xid_list_get(win, atom, type, &lst);
+   if (num < 0)
+      return;                  /* Error - assuming invalid window */
+
+   /* Is it there? */
+   for (i = 0; i < num; i++)
+     {
+       if (lst[i] == item)
+          break;
+     }
+
+   if (i < num)
+     {
+       /* Was in list */
+       if (op == ECORE_X_PROP_LIST_ADD)
+          goto done;
+       /* Remove it */
+       num--;
+       for (; i < num; i++)
+          lst[i] = lst[i + 1];
+     }
+   else
+     {
+       /* Was not in list */
+       if (op == ECORE_X_PROP_LIST_REMOVE)
+          goto done;
+       /* Add it */
+       num++;
+       lst = realloc(lst, num * sizeof(Ecore_X_ID));
+       lst[i] = item;
+     }
+
+   ecore_x_window_prop_xid_set(win, atom, type, lst, num);
+
+ done:
+   if (lst)
+      free(lst);
+}
+
+/*
+ * Set Atom (array) property
+ */
+EAPI void
+ecore_x_window_prop_atom_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                            Ecore_X_Atom * lst, unsigned int num)
+{
+   ecore_x_window_prop_xid_set(win, atom, XA_ATOM, lst, num);
+}
+
+/*
+ * Get Atom (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_atom_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                            Ecore_X_Atom * lst, unsigned int len)
+{
+   return ecore_x_window_prop_xid_get(win, atom, XA_ATOM, lst, len);
+}
+
+/*
+ * Get Atom (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_atom_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                                 Ecore_X_Atom ** plst)
+{
+   return ecore_x_window_prop_xid_list_get(win, atom, XA_ATOM, plst);
+}
+
+/*
+ * Remove/add/toggle atom list item.
+ */
+EAPI void
+ecore_x_window_prop_atom_list_change(Ecore_X_Window win, Ecore_X_Atom atom,
+                                    Ecore_X_Atom item, int op)
+{
+   ecore_x_window_prop_xid_list_change(win, atom, XA_ATOM, item, op);
+}
+
+/*
+ * Set Window (array) property
+ */
+EAPI void
+ecore_x_window_prop_window_set(Ecore_X_Window win, Ecore_X_Atom atom,
+                              Ecore_X_Window * lst, unsigned int num)
+{
+   ecore_x_window_prop_xid_set(win, atom, XA_WINDOW, lst, num);
+}
+
+/*
+ * Get Window (array) property
+ *
+ * At most len items are returned in val.
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_window_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                              Ecore_X_Window * lst, unsigned int len)
+{
+   return ecore_x_window_prop_xid_get(win, atom, XA_WINDOW, lst, len);
+}
+
+/*
+ * Get Window (array) property
+ *
+ * If the property was successfully fetched the number of items stored in
+ * val is returned, otherwise -1 is returned.
+ * The returned array must be freed with free().
+ * Note: Return value 0 means that the property exists but has no elements.
+ */
+EAPI int
+ecore_x_window_prop_window_list_get(Ecore_X_Window win, Ecore_X_Atom atom,
+                                   Ecore_X_Window ** plst)
+{
+   return ecore_x_window_prop_xid_list_get(win, atom, XA_WINDOW, plst);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_Atom
+ecore_x_window_prop_any_type(void)
+{
+   return AnyPropertyType;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI void
+ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size, void *data, int number)
+{
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);
+   if (size != 32)
+     XChangeProperty(_ecore_x_disp, win, property, type, size, PropModeReplace,
+                    (unsigned char *)data, number);
+   else
+     {
+       unsigned long *dat;
+       int            i, *ptr;
+       
+       dat = malloc(sizeof(unsigned long) * number);
+       if (dat)
+         {
+            for (ptr = (int *)data, i = 0; i < number; i++) dat[i] = ptr[i];
+            XChangeProperty(_ecore_x_disp, win, property, type, size, 
+                            PropModeReplace, (unsigned char *)dat, number);
+            free(dat);
+         }
+     }
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI int
+ecore_x_window_prop_property_get(Ecore_X_Window win, Ecore_X_Atom property, Ecore_X_Atom type, int size __UNUSED__, unsigned char **data, int *num)
+{
+   Atom type_ret = 0;
+   int ret, size_ret = 0;
+   unsigned long num_ret = 0, bytes = 0, i;
+   unsigned char *prop_ret = NULL;
+
+   /* make sure these are initialized */
+   if (num) *num = 0;
+
+   if (data)
+     *data = NULL;
+   else /* we can't store the retrieved data, so just return */
+     return 0;
+
+   if (!win) win = DefaultRootWindow(_ecore_x_disp);
+
+   ret = XGetWindowProperty(_ecore_x_disp, win, property, 0, LONG_MAX,
+                            False, type, &type_ret, &size_ret,
+                            &num_ret, &bytes, &prop_ret);
+
+   if (ret != Success)
+       return 0;
+
+   if (!num_ret) {
+      XFree(prop_ret);
+      return 0;
+   }
+   
+   if (!(*data = malloc(num_ret * size_ret / 8))) {
+      XFree(prop_ret);
+      return 0;
+   }
+   
+   switch (size_ret) {
+      case 8:
+        for (i = 0; i < num_ret; i++)
+          (*data)[i] = prop_ret[i];
+        break;
+      case 16:
+        for (i = 0; i < num_ret; i++)
+          ((unsigned short *) *data)[i] = ((unsigned short *) prop_ret)[i];
+        break;
+      case 32:
+        for (i = 0; i < num_ret; i++)
+          ((unsigned int *) *data)[i] = ((unsigned long *) prop_ret)[i];
+        break;
+   }
+
+   XFree(prop_ret);
+
+   if (num) *num = num_ret;
+   return size_ret;
+}
+
+EAPI void
+ecore_x_window_prop_property_del(Ecore_X_Window win, Ecore_X_Atom property)
+{
+   XDeleteProperty(_ecore_x_disp, win, property);
+}
+
+EAPI Ecore_X_Atom *
+ecore_x_window_prop_list(Ecore_X_Window win, int *num_ret)
+{
+   Ecore_X_Atom *atoms;
+   Atom *atom_ret;
+   int num = 0, i;
+       
+   if (num_ret) *num_ret = 0;
+
+   atom_ret = XListProperties(_ecore_x_disp, win, &num);
+   if (!atom_ret) return NULL;
+
+   atoms = malloc(num * sizeof(Ecore_X_Atom));
+   if (atoms)
+     {
+       for (i = 0; i < num; i++) atoms[i] = atom_ret[i];
+       if (num_ret) *num_ret = num;
+     }
+   XFree(atom_ret);
+   return atoms;
+}
+
+/**
+ * Set a window string property.
+ * @param win The window
+ * @param type The property
+ * @param str The string
+ * 
+ * Set a window string property
+ */
+EAPI void
+ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, const char *str)
+{
+   XTextProperty       xtp;
+
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);
+   xtp.value = (unsigned char *)str;
+   xtp.format = 8;
+   xtp.encoding = ECORE_X_ATOM_UTF8_STRING;
+   xtp.nitems = strlen(str);
+   XSetTextProperty(_ecore_x_disp, win, &xtp, type);
+}
+
+/**
+ * Get a window string property.
+ * @param win The window
+ * @param type The property
+ * 
+ * Return window string property of a window. String must be free'd when done.
+ */
+EAPI char *
+ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type)
+{
+   XTextProperty       xtp;
+   char               *str = NULL;
+
+   if (win == 0) win = DefaultRootWindow(_ecore_x_disp);
+   if (XGetTextProperty(_ecore_x_disp, win, &xtp, type))
+     {
+       int      items;
+       char   **list = NULL;
+       Status   s;
+       
+       if (xtp.encoding == ECORE_X_ATOM_UTF8_STRING)
+         {
+            str = strdup((char *)xtp.value);
+         }
+       else
+         {
+#ifdef X_HAVE_UTF8_STRING
+            s = Xutf8TextPropertyToTextList(_ecore_x_disp, &xtp,
+                                            &list, &items);
+#else
+            s = XmbTextPropertyToTextList(_ecore_x_disp, &xtp,
+                                          &list, &items);
+#endif
+            if ((s == XLocaleNotSupported) ||
+                (s == XNoMemory) || (s == XConverterNotFound))
+              {
+                 str = strdup((char *)xtp.value);
+              }
+            else if ((s >= Success) && (items > 0))
+              {
+                 str = strdup(list[0]);
+              }
+            if (list)
+              XFreeStringList(list);
+         }
+       XFree(xtp.value);
+     }
+   return str;
+}
+
+EAPI int
+ecore_x_window_prop_protocol_isset(Ecore_X_Window win,
+                                   Ecore_X_WM_Protocol protocol)
+{
+   Atom proto, *protos = NULL;
+   int i, ret = 0, protos_count = 0;
+
+   /* check for invalid values */
+   if (protocol >= ECORE_X_WM_PROTOCOL_NUM)
+       return 0;
+
+   proto = _ecore_x_atoms_wm_protocols[protocol];
+
+   if (!XGetWMProtocols(_ecore_x_disp, win, &protos, &protos_count))
+       return ret;
+
+   for (i = 0; i < protos_count; i++)
+       if (protos[i] == proto)
+         {
+            ret = 1;
+            break;
+         }
+
+   XFree(protos);
+
+   return ret;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ */
+EAPI Ecore_X_WM_Protocol *
+ecore_x_window_prop_protocol_list_get(Ecore_X_Window win, int *num_ret)
+{
+   Atom *protos = NULL;
+   int i, protos_count = 0;
+   Ecore_X_WM_Protocol *prot_ret = NULL;
+   
+   if (!XGetWMProtocols(_ecore_x_disp, win, &protos, &protos_count))
+     return NULL;
+
+   if ((!protos) || (protos_count <= 0)) return NULL;
+   prot_ret = calloc(1, protos_count * sizeof(Ecore_X_WM_Protocol));
+   if (!prot_ret)
+     {
+       XFree(protos);
+       return NULL;
+     }
+   for (i = 0; i < protos_count; i++)
+     {
+       Ecore_X_WM_Protocol j;
+       
+       prot_ret[i] = -1;
+       for (j = 0; j < ECORE_X_WM_PROTOCOL_NUM; j++)
+         {
+            if (_ecore_x_atoms_wm_protocols[j] == protos[i])
+              prot_ret[i] = j;
+         }
+     }
+   XFree(protos);
+   *num_ret = protos_count;
+   return prot_ret;
+}
diff --git a/src/lib/ecore_x/xlib/ecore_x_window_shape.c b/src/lib/ecore_x/xlib/ecore_x_window_shape.c
new file mode 100644 (file)
index 0000000..2e30587
--- /dev/null
@@ -0,0 +1,189 @@
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+
+/**
+ * @defgroup Ecore_X_Window_Shape X Window Shape Functions
+ *
+ * These functions use the shape extension of the X server to change
+ * shape of given windows.
+ */
+
+/**
+ * Sets the shape of the given window to that given by the pixmap @p mask.
+ * @param   win  The given window.
+ * @param   mask A 2-bit depth pixmap that provides the new shape of the
+ *               window.
+ * @ingroup Ecore_X_Window_Shape
+ */
+EAPI void
+ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask)
+{
+   XShapeCombineMask(_ecore_x_disp, win, ShapeBounding, 0, 0, mask, ShapeSet);
+}
+
+EAPI void
+ecore_x_window_shape_window_set(Ecore_X_Window win, Ecore_X_Window shape_win)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, 0, 0, shape_win, ShapeBounding, ShapeSet);
+}
+
+EAPI void
+ecore_x_window_shape_window_set_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, x, y, shape_win, ShapeBounding, ShapeSet);
+}
+
+EAPI void
+ecore_x_window_shape_rectangle_set(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, &rect, 1, ShapeSet, Unsorted);
+}
+
+EAPI void
+ecore_x_window_shape_rectangles_set(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num)
+{
+   XRectangle *rect = NULL;
+   int i;
+   
+   if (num > 0)
+     {
+       rect = malloc(sizeof(XRectangle) * num);
+       if (rect)
+         {
+            for (i = 0; i < num; i++)
+              {
+                 rect[i].x = rects[i].x;
+                 rect[i].y = rects[i].y;
+                 rect[i].width = rects[i].width;
+                 rect[i].height = rects[i].height;
+              }
+         }
+       else
+         num = 0;
+     }
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, rect, num, ShapeSet, Unsorted);
+   if (rect) free(rect);
+}
+
+EAPI void
+ecore_x_window_shape_window_add(Ecore_X_Window win, Ecore_X_Window shape_win)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, 0, 0, shape_win, ShapeBounding, ShapeUnion);
+}
+
+EAPI void
+ecore_x_window_shape_window_add_xy(Ecore_X_Window win, Ecore_X_Window shape_win, int x, int y)
+{
+   XShapeCombineShape(_ecore_x_disp, win, ShapeBounding, x, y, shape_win, ShapeBounding, ShapeUnion);
+}
+
+EAPI void
+ecore_x_window_shape_rectangle_add(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, &rect, 1, ShapeUnion, Unsorted);
+}
+
+EAPI void
+ecore_x_window_shape_rectangle_clip(Ecore_X_Window win, int x, int y, int w, int h)
+{
+   XRectangle rect;
+   
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, &rect, 1, ShapeIntersect, Unsorted);
+}
+
+EAPI void
+ecore_x_window_shape_rectangles_add(Ecore_X_Window win, Ecore_X_Rectangle *rects, int num)
+{
+   XRectangle *rect = NULL;
+   int i;
+   
+   if (num > 0)
+     {
+       rect = malloc(sizeof(XRectangle) * num);
+       if (rect)
+         {
+            for (i = 0; i < num; i++)
+              {
+                 rect[i].x = rects[i].x;
+                 rect[i].y = rects[i].y;
+                 rect[i].width = rects[i].width;
+                 rect[i].height = rects[i].height;
+              }
+         }
+       else
+         num = 0;
+     }
+   XShapeCombineRectangles(_ecore_x_disp, win, ShapeBounding, 0, 0, rect, num, ShapeUnion, Unsorted);
+   if (rect) free(rect);
+}
+
+EAPI Ecore_X_Rectangle *
+ecore_x_window_shape_rectangles_get(Ecore_X_Window win, int *num_ret)
+{
+   XRectangle *rect;
+   Ecore_X_Rectangle *rects = NULL;
+   int i, num = 0, ord;
+   
+   rect = XShapeGetRectangles(_ecore_x_disp, win, ShapeBounding, &num, &ord);
+   if (rect)
+     {
+       rects = malloc(sizeof(Ecore_X_Rectangle) * num);
+       if (rects)
+         {
+            for (i = 0; i < num; i++)
+              {
+                 rects[i].x = rect[i].x;
+                 rects[i].y = rect[i].y;
+                 rects[i].width = rect[i].width;
+                 rects[i].height = rect[i].height;
+              }
+         }
+       XFree(rect);
+     }
+   if (num_ret) *num_ret = num;
+   return rects;
+}
+
+EAPI void
+ecore_x_window_shape_events_select(Ecore_X_Window win, int on)
+{
+   if (on)
+     XShapeSelectInput(_ecore_x_disp, win, ShapeNotifyMask);
+   else
+     XShapeSelectInput(_ecore_x_disp, win, 0);
+}
+
+/**
+ * Sets the input shape of the given window to that given by the pixmap @p mask.
+ * @param   win  The given window.
+ * @param   mask A 2-bit depth pixmap that provides the new input shape of the
+ *               window.
+ * @ingroup Ecore_X_Window_Shape
+ */
+EAPI void
+ecore_x_window_shape_input_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask)
+{
+#ifdef ShapeInput
+   XShapeCombineMask(_ecore_x_disp, win, ShapeInput, 0, 0, mask, ShapeSet);
+#else   
+   XShapeCombineMask(_ecore_x_disp, win, ShapeBounding, 0, 0, mask, ShapeSet);
+#endif
+}
+
diff --git a/src/lib/ecore_x/xlib/ecore_x_xinerama.c b/src/lib/ecore_x/xlib/ecore_x_xinerama.c
new file mode 100644 (file)
index 0000000..4c7353d
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+/*
+ * Xinerama code
+ */
+#include "Ecore.h"
+#include "ecore_x_private.h"
+#include "Ecore_X.h"
+#include "Ecore_X_Atoms.h"
+
+#ifdef ECORE_XINERAMA
+static XineramaScreenInfo *_xin_info = NULL;
+static int _xin_scr_num = 0;
+#endif
+
+EAPI int
+ecore_x_xinerama_screen_count_get(void)
+{
+#ifdef ECORE_XINERAMA
+   int event_base, error_base;
+
+   if (_xin_info) XFree(_xin_info);
+   _xin_info = NULL;
+   if (XineramaQueryExtension(_ecore_x_disp, &event_base, &error_base))
+     {
+       _xin_info = XineramaQueryScreens(_ecore_x_disp, &_xin_scr_num);
+       if (_xin_info) return _xin_scr_num;
+     }
+#endif
+   return 0;
+}
+
+EAPI int
+ecore_x_xinerama_screen_geometry_get(int screen, int *x, int *y, int *w, int *h)
+{
+#ifdef ECORE_XINERAMA
+   if (_xin_info)
+     {
+       int i;
+       
+       for (i = 0; i < _xin_scr_num; i++)
+         {
+            if (_xin_info[i].screen_number == screen)
+              {
+                 if (x) *x = _xin_info[i].x_org;
+                 if (y) *y = _xin_info[i].y_org;
+                 if (w) *w = _xin_info[i].width;
+                 if (h) *h = _xin_info[i].height;
+                 return 1;
+              }
+         }
+     }
+#endif
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = DisplayWidth(_ecore_x_disp, 0);
+   if (h) *h = DisplayHeight(_ecore_x_disp, 0);
+   return 0;
+}