From 7d0f5c0e91e2f947cf95738bb0cd133ce4fb76e6 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 22 Feb 2016 08:29:11 -0800 Subject: [PATCH 1/5] Always use https in submodule urls --- .gitmodules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index 68bb1a9..19950a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,7 +15,7 @@ url = https://github.com/ghcjs/ghcjs-base.git [submodule "boot/directory"] path = boot/directory - url = http://git.haskell.org/packages/directory.git/ + url = https://git.haskell.org/packages/directory.git/ [submodule "boot/unix"] path = boot/unix url = https://github.com/ghc/packages-unix.git @@ -39,10 +39,10 @@ url = https://github.com/ekmett/mtl.git [submodule "boot/filepath"] path = boot/filepath - url = http://git.haskell.org/packages/filepath.git + url = https://git.haskell.org/packages/filepath.git [submodule "boot/old-locale"] path = boot/old-locale - url = http://git.haskell.org/packages/old-locale.git + url = https://git.haskell.org/packages/old-locale.git [submodule "boot/primitive"] path = boot/primitive url = https://github.com/haskell/primitive @@ -69,7 +69,7 @@ url = https://git.haskell.org/packages/old-time.git [submodule "boot/random"] path = boot/random - url = http://git.haskell.org/packages/random.git + url = https://git.haskell.org/packages/random.git [submodule "boot/text"] path = boot/text url = https://github.com/bos/text @@ -81,19 +81,19 @@ url = https://github.com/tibbe/hashable.git [submodule "boot/extensible-exceptions"] path = boot/extensible-exceptions - url = http://git.haskell.org/packages/extensible-exceptions.git + url = https://git.haskell.org/packages/extensible-exceptions.git [submodule "boot/transformers"] path = boot/transformers - url = http://git.haskell.org/darcs-mirrors/transformers.git + url = https://git.haskell.org/darcs-mirrors/transformers.git [submodule "boot/async"] path = boot/async url = https://github.com/simonmar/async.git [submodule "boot/parallel"] path = boot/parallel - url = http://git.haskell.org/packages/parallel.git + url = https://git.haskell.org/packages/parallel.git [submodule "boot/stm"] path = boot/stm - url = http://git.haskell.org/packages/stm.git + url = https://git.haskell.org/packages/stm.git [submodule "boot/case-insensitive"] path = boot/case-insensitive url = https://github.com/basvandijk/case-insensitive.git From 6741d304f69726db4f349cd4895e3935db2b9a73 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 22 Feb 2016 08:49:15 -0800 Subject: [PATCH 2/5] Point to forks --- .gitmodules | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index 19950a2..4ad0fe9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,22 +15,22 @@ url = https://github.com/ghcjs/ghcjs-base.git [submodule "boot/directory"] path = boot/directory - url = https://git.haskell.org/packages/directory.git/ + url = https://github.com/forked-upstream-packages-for-ghcjs/directory.git [submodule "boot/unix"] path = boot/unix - url = https://github.com/ghc/packages-unix.git + url = https://github.com/forked-upstream-packages-for-ghcjs/unix.git [submodule "boot/Win32"] path = boot/Win32 - url = https://github.com/ghc/packages-Win32.git + url = https://github.com/forked-upstream-packages-for-ghcjs/win32.git [submodule "boot/time"] path = boot/time url = https://github.com/ghc/packages-time.git [submodule "boot/process"] path = boot/process - url = https://github.com/ghc/packages-process.git + url = https://github.com/forked-upstream-packages-for-ghcjs/process.git [submodule "boot/bytestring"] path = boot/bytestring - url = https://github.com/haskell/bytestring.git + url = https://github.com/forked-upstream-packages-for-ghcjs/bytestring.git [submodule "boot/dlist"] path = boot/dlist url = https://github.com/spl/dlist.git @@ -39,13 +39,13 @@ url = https://github.com/ekmett/mtl.git [submodule "boot/filepath"] path = boot/filepath - url = https://git.haskell.org/packages/filepath.git + url = https://github.com/forked-upstream-packages-for-ghcjs/filepath.git [submodule "boot/old-locale"] path = boot/old-locale url = https://git.haskell.org/packages/old-locale.git [submodule "boot/primitive"] path = boot/primitive - url = https://github.com/haskell/primitive + url = https://github.com/forked-upstream-packages-for-ghcjs/primitive.git [submodule "boot/scientific"] path = boot/scientific url = https://github.com/basvandijk/scientific.git @@ -66,7 +66,7 @@ url = https://github.com/bos/aeson.git [submodule "boot/old-time"] path = boot/old-time - url = https://git.haskell.org/packages/old-time.git + url = https://github.com/forked-upstream-packages-for-ghcjs/old-time.git [submodule "boot/random"] path = boot/random url = https://git.haskell.org/packages/random.git @@ -78,7 +78,7 @@ url = https://github.com/haskell/cabal.git [submodule "boot/hashable"] path = boot/hashable - url = https://github.com/tibbe/hashable.git + url = https://github.com/forked-upstream-packages-for-ghcjs/hashable.git [submodule "boot/extensible-exceptions"] path = boot/extensible-exceptions url = https://git.haskell.org/packages/extensible-exceptions.git From db8b040758165ad958d590d506494961fbba8769 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 22 Feb 2016 08:50:24 -0800 Subject: [PATCH 3/5] Apply patches to submodules and commit --- boot/Win32 | 2 +- boot/bytestring | 2 +- boot/directory | 2 +- boot/filepath | 2 +- boot/hashable | 2 +- boot/old-time | 2 +- boot/primitive | 2 +- boot/process | 2 +- boot/unix | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/boot/Win32 b/boot/Win32 index 9bfd4e7..0878e1e 160000 --- a/boot/Win32 +++ b/boot/Win32 @@ -1 +1 @@ -Subproject commit 9bfd4e7c2b0729c67a2336bf0235441e1a8bcc90 +Subproject commit 0878e1e588e1682f827ff656b32212e2b5ebfcc2 diff --git a/boot/bytestring b/boot/bytestring index c2ddcf9..2e9abca 160000 --- a/boot/bytestring +++ b/boot/bytestring @@ -1 +1 @@ -Subproject commit c2ddcf96cdc6bf83206457a781801f6ff45a1aa6 +Subproject commit 2e9abca44a0ab73c432994c9820afd6f73af2fe0 diff --git a/boot/directory b/boot/directory index 7233248..1a5f556 160000 --- a/boot/directory +++ b/boot/directory @@ -1 +1 @@ -Subproject commit 7233248952648ed4dd213f91ed52af2317a3f23b +Subproject commit 1a5f5568c5644968579cbe81ac5025c032c55b4f diff --git a/boot/filepath b/boot/filepath index 81375ae..0c0c48a 160000 --- a/boot/filepath +++ b/boot/filepath @@ -1 +1 @@ -Subproject commit 81375ae0c892b5951f2c1184c655a8f3a5193c9c +Subproject commit 0c0c48a16532477ac736e47c80af9c7f34f08cb3 diff --git a/boot/hashable b/boot/hashable index 7409adb..38361bd 160000 --- a/boot/hashable +++ b/boot/hashable @@ -1 +1 @@ -Subproject commit 7409adbd314a1ef8f5aefc643879b6f1c06e02c0 +Subproject commit 38361bda4974dc7d7ef0bccd2d13091f74ecc721 diff --git a/boot/old-time b/boot/old-time index 30aeb3b..f59b747 160000 --- a/boot/old-time +++ b/boot/old-time @@ -1 +1 @@ -Subproject commit 30aeb3b8463fdaca120a62768774aa7b3ab7ec6d +Subproject commit f59b74780bd88eef14969b59cc980b60b4ce7d8d diff --git a/boot/primitive b/boot/primitive index deaa6d6..ed67936 160000 --- a/boot/primitive +++ b/boot/primitive @@ -1 +1 @@ -Subproject commit deaa6d6decc2808669b6566dce6a1e0154ddffce +Subproject commit ed67936aa2dbed12e2b4d8c71b8263e9fc12844e diff --git a/boot/process b/boot/process index 67efaf5..66a6f57 160000 --- a/boot/process +++ b/boot/process @@ -1 +1 @@ -Subproject commit 67efaf599a03f454a98a3905820ce40aa80825c7 +Subproject commit 66a6f57933466dfc8a55435ba9aee2ba8b683def diff --git a/boot/unix b/boot/unix index 49aede1..badcd64 160000 --- a/boot/unix +++ b/boot/unix @@ -1 +1 @@ -Subproject commit 49aede104bf3ed1f89f0c27652f913a91f3bc66e +Subproject commit badcd64f1431fe34ce1fccfd417172179ff67896 From 07205eb9d07c812454ffeefcf86f046e0b4e2a56 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 22 Feb 2016 08:53:07 -0800 Subject: [PATCH 4/5] Remove applied patches --- patches/Win32.patch | 683 ---------------------------------- patches/bytestring.patch | 14 - patches/directory.patch | 440 ---------------------- patches/filepath.patch | 74 ---- patches/hashable.patch | 40 -- patches/old-time.patch | 188 ---------- patches/primitive.patch | 64 ---- patches/process-1.2.0.0.patch | 365 ------------------ patches/process.patch | 396 -------------------- patches/unix.patch | 73 ---- 10 files changed, 2337 deletions(-) delete mode 100755 patches/Win32.patch delete mode 100644 patches/bytestring.patch delete mode 100755 patches/directory.patch delete mode 100644 patches/filepath.patch delete mode 100644 patches/hashable.patch delete mode 100644 patches/old-time.patch delete mode 100644 patches/primitive.patch delete mode 100644 patches/process-1.2.0.0.patch delete mode 100755 patches/process.patch delete mode 100644 patches/unix.patch diff --git a/patches/Win32.patch b/patches/Win32.patch deleted file mode 100755 index 262d772..0000000 --- a/patches/Win32.patch +++ /dev/null @@ -1,683 +0,0 @@ -diff --git a/Graphics/Win32/Control.hsc b/Graphics/Win32/Control.hsc -index 6e680ab..4ac8d01 100644 ---- a/Graphics/Win32/Control.hsc -+++ b/Graphics/Win32/Control.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Control where - -+##ifndef ghcjs_HOST_OS -+ - import Data.Bits ((.|.)) - import Graphics.Win32.GDI.Types (HMENU, HWND) - import Graphics.Win32.Message (WindowMessage) -@@ -346,3 +348,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h InitCommonControls" - -- % , PBM_SETBARCOLOR - -- % , PBM_SETBKCOLOR - -- % , PBM_SETRANGE32 -+ -+##endif -diff --git a/Graphics/Win32/Dialogue.hsc b/Graphics/Win32/Dialogue.hsc -index 1750c55..f544ee7 100644 ---- a/Graphics/Win32/Dialogue.hsc -+++ b/Graphics/Win32/Dialogue.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Dialogue where - -+##ifndef ghcjs_HOST_OS -+ - import Graphics.Win32.GDI.Types - import Graphics.Win32.Control - import Graphics.Win32.Message -@@ -332,3 +334,5 @@ foreign import WINDOWS_CCONV "windows.h SetDlgItemTextW" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/GDI/Bitmap.hsc b/Graphics/Win32/GDI/Bitmap.hsc -index 4d1c092..602558c 100644 ---- a/Graphics/Win32/GDI/Bitmap.hsc -+++ b/Graphics/Win32/GDI/Bitmap.hsc -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module Graphics.Win32.GDI.Bitmap( -+##ifdef ghcjs_HOST_OS -+ ) where -+##else - RasterOp3, - RasterOp4, - sRCCOPY, -@@ -419,3 +422,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h CreateDIBitmap" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/GDI/Brush.hsc b/Graphics/Win32/GDI/Brush.hsc -index 2a16f6e..c4eb6d6 100644 ---- a/Graphics/Win32/GDI/Brush.hsc -+++ b/Graphics/Win32/GDI/Brush.hsc -@@ -17,6 +17,7 @@ - - module Graphics.Win32.GDI.Brush where - -+##ifndef ghcjs_HOST_OS - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -75,3 +76,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h GetStockObject" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/GDI/Clip.hsc b/Graphics/Win32/GDI/Clip.hsc -index e0f317a..bef0873 100644 ---- a/Graphics/Win32/GDI/Clip.hsc -+++ b/Graphics/Win32/GDI/Clip.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.GDI.Clip where - -+##ifndef ghcjs_HOST_OS -+ - import Control.Monad - import Graphics.Win32.GDI.Types - import System.Win32.Types -@@ -155,3 +157,5 @@ setClipboardViewer wnd = - failIfNull "SetClipboardViewer" $ c_SetClipboardViewer wnd - foreign import WINDOWS_CCONV unsafe "windows.h SetClipboardViewer" - c_SetClipboardViewer :: HWND -> IO HWND -+ -+##endif -\ No newline at end of file -diff --git a/Graphics/Win32/GDI/Font.hsc b/Graphics/Win32/GDI/Font.hsc -index c9f9896..c29c071 100644 ---- a/Graphics/Win32/GDI/Font.hsc -+++ b/Graphics/Win32/GDI/Font.hsc -@@ -33,6 +33,8 @@ module Graphics.Win32.GDI.Font - -} - where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -205,3 +207,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h GetStockObject" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -\ No newline at end of file -diff --git a/Graphics/Win32/GDI/Graphics2D.hs b/Graphics/Win32/GDI/Graphics2D.hs -index f61ca21..2523b7f 100644 ---- a/Graphics/Win32/GDI/Graphics2D.hs -+++ b/Graphics/Win32/GDI/Graphics2D.hs -@@ -18,6 +18,8 @@ - module Graphics.Win32.GDI.Graphics2D - where - -+#ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -224,3 +226,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h GetTextExtentPoint32W" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif -diff --git a/Graphics/Win32/GDI/HDC.hs b/Graphics/Win32/GDI/HDC.hs -index e99b505..d460480 100644 ---- a/Graphics/Win32/GDI/HDC.hs -+++ b/Graphics/Win32/GDI/HDC.hs -@@ -19,6 +19,8 @@ module Graphics.Win32.GDI.HDC - ( module Graphics.Win32.GDI.HDC - ) where - -+#ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -318,3 +320,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h DeleteDC" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif -diff --git a/Graphics/Win32/GDI/Palette.hsc b/Graphics/Win32/GDI/Palette.hsc -index cd8030d..f9bf742 100644 ---- a/Graphics/Win32/GDI/Palette.hsc -+++ b/Graphics/Win32/GDI/Palette.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.GDI.Palette where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -48,3 +50,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h DeleteObject" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/GDI/Path.hs b/Graphics/Win32/GDI/Path.hs -index e210edf..b23a15f 100644 ---- a/Graphics/Win32/GDI/Path.hs -+++ b/Graphics/Win32/GDI/Path.hs -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module Graphics.Win32.GDI.Path -+#ifdef ghcjs_HOST_OS -+ ( ) where -+#else - ( beginPath, closeFigure, endPath, fillPath, flattenPath - , pathToRegion, strokeAndFillPath, strokePath, widenPath - ) where -@@ -89,3 +92,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h WidenPath" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif -diff --git a/Graphics/Win32/GDI/Pen.hsc b/Graphics/Win32/GDI/Pen.hsc -index 9cc84d2..d8a87f4 100644 ---- a/Graphics/Win32/GDI/Pen.hsc -+++ b/Graphics/Win32/GDI/Pen.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.GDI.Pen where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -105,3 +107,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h CreatePen" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/GDI/Region.hs b/Graphics/Win32/GDI/Region.hs -index 385e845..978d976 100644 ---- a/Graphics/Win32/GDI/Region.hs -+++ b/Graphics/Win32/GDI/Region.hs -@@ -17,6 +17,8 @@ - - module Graphics.Win32.GDI.Region where - -+#ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import Graphics.Win32.GDI.Types - -@@ -148,3 +150,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h RectInRegion" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif -diff --git a/Graphics/Win32/GDI/Types.hsc b/Graphics/Win32/GDI/Types.hsc -index f514e42..2c4ba06 100644 ---- a/Graphics/Win32/GDI/Types.hsc -+++ b/Graphics/Win32/GDI/Types.hsc -@@ -54,6 +54,8 @@ module Graphics.Win32.GDI.Types - -} - where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - - import Control.Monad( zipWithM_ ) -@@ -395,3 +397,5 @@ foreign import ccall unsafe "HsGDI.h" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/Icon.hs b/Graphics/Win32/Icon.hs -index 53c1268..9a0136b 100644 ---- a/Graphics/Win32/Icon.hs -+++ b/Graphics/Win32/Icon.hs -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Icon where - -+#ifndef ghcjs_HOST_OS -+ - import Graphics.Win32.GDI.Types - import System.Win32.Types - -@@ -47,3 +49,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h DestroyIcon" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif -diff --git a/Graphics/Win32/Key.hsc b/Graphics/Win32/Key.hsc -index e1c414b..97395cf 100644 ---- a/Graphics/Win32/Key.hsc -+++ b/Graphics/Win32/Key.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Key where - -+##ifndef ghcjs_HOST_OS -+ - import Control.Monad (liftM) - import Graphics.Win32.GDI.Types (HWND) - import System.Win32.Types (DWORD, UINT, WORD, ptrToMaybe) -@@ -122,3 +124,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h GetKBCodePage" - - foreign import WINDOWS_CCONV unsafe "windows.h IsWindowEnabled" - isWindowEnabled :: HWND -> IO Bool -+ -+##endif -diff --git a/Graphics/Win32/Menu.hsc b/Graphics/Win32/Menu.hsc -index 6d744dc..a5a6071 100644 ---- a/Graphics/Win32/Menu.hsc -+++ b/Graphics/Win32/Menu.hsc -@@ -63,6 +63,8 @@ module Graphics.Win32.Menu - - ) -} where - -+##ifndef ghcjs_HOST_OS -+ - import Graphics.Win32.GDI.Types - import System.Win32.Types - -@@ -474,3 +476,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h RemoveMenu" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/Message.hsc b/Graphics/Win32/Message.hsc -index 083d602..5e7c0b7 100644 ---- a/Graphics/Win32/Message.hsc -+++ b/Graphics/Win32/Message.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Message where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - - ##include "windows_cconv.h" -@@ -176,3 +178,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h RegisterWindowMessageW" - ---------------------------------------------------------------- - -- Phew! - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/Misc.hsc b/Graphics/Win32/Misc.hsc -index d06be81..db2e6a5 100644 ---- a/Graphics/Win32/Misc.hsc -+++ b/Graphics/Win32/Misc.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Misc where - -+##ifndef ghcjs_HOST_OS -+ - import Graphics.Win32.GDI.Types - import System.Win32.Types - -@@ -296,3 +298,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h timeGetTime" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/Graphics/Win32/Resource.hsc b/Graphics/Win32/Resource.hsc -index cf22f38..c4ea6e7 100644 ---- a/Graphics/Win32/Resource.hsc -+++ b/Graphics/Win32/Resource.hsc -@@ -17,6 +17,8 @@ - - module Graphics.Win32.Resource where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - - import Foreign -@@ -146,3 +148,5 @@ updateResource h ty name lang p_data data_len = - c_UpdateResource h ty c_name lang p_data data_len - foreign import WINDOWS_CCONV unsafe "windows.h UpdateResourceW" - c_UpdateResource :: HANDLE -> LPCTSTR -> LPCTSTR -> WORD -> Addr -> DWORD -> IO Bool -+ -+##endif -diff --git a/Graphics/Win32/Window.hsc b/Graphics/Win32/Window.hsc -index abb9e15..3c74b95 100644 ---- a/Graphics/Win32/Window.hsc -+++ b/Graphics/Win32/Window.hsc -@@ -18,6 +18,8 @@ - - module Graphics.Win32.Window where - -+##ifndef ghcjs_HOST_OS -+ - import Control.Monad (liftM) - import Data.Maybe (fromMaybe) - import Data.Word (Word32) -@@ -706,3 +708,5 @@ foreign import WINDOWS_CCONV "windows.h SendMessageW" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/System/Win32/Console.hsc b/System/Win32/Console.hsc -index b6b5368..57bf2c1 100644 ---- a/System/Win32/Console.hsc -+++ b/System/Win32/Console.hsc -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module System.Win32.Console ( -+##ifdef ghcjs_HOST_OS -+ ) where -+##else - -- * Console code pages - getConsoleCP, - setConsoleCP, -@@ -58,3 +61,5 @@ foreign import WINDOWS_CCONV safe "windows.h GenerateConsoleCtrlEvent" - c_GenerateConsoleCtrlEvent :: CtrlEvent -> DWORD -> IO BOOL - - -- ToDo: lots more -+ -+##endif -diff --git a/System/Win32/DLL.hsc b/System/Win32/DLL.hsc -index 74c567d..88b3f72 100644 ---- a/System/Win32/DLL.hsc -+++ b/System/Win32/DLL.hsc -@@ -17,6 +17,8 @@ - - module System.Win32.DLL where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - - import Foreign -@@ -84,3 +86,5 @@ loadLibraryEx name h flags = - failIfNull "LoadLibraryEx" $ c_LoadLibraryEx c_name h flags - foreign import WINDOWS_CCONV unsafe "windows.h LoadLibraryExW" - c_LoadLibraryEx :: LPCTSTR -> HANDLE -> LoadLibraryFlags -> IO HINSTANCE -+ -+##endif -diff --git a/System/Win32/DebugApi.hsc b/System/Win32/DebugApi.hsc -index 6b7242f..160c2f2 100644 ---- a/System/Win32/DebugApi.hsc -+++ b/System/Win32/DebugApi.hsc -@@ -16,6 +16,8 @@ - ----------------------------------------------------------------------------- - module System.Win32.DebugApi where - -+##ifndef ghcjs_HOST_OS -+ - import Control.Exception( bracket_ ) - import Data.Word ( Word8, Word32 ) - import Foreign ( Ptr, nullPtr, ForeignPtr, mallocForeignPtrBytes -@@ -407,3 +409,5 @@ foreign import WINDOWS_CCONV "windows.h IsDebuggerPresent" - - foreign import WINDOWS_CCONV "windows.h DebugBreak" - debugBreak :: IO () -+ -+##endif -\ No newline at end of file -diff --git a/System/Win32/File.hsc b/System/Win32/File.hsc -index 0b921c4..5ca64ef 100644 ---- a/System/Win32/File.hsc -+++ b/System/Win32/File.hsc -@@ -24,6 +24,8 @@ module System.Win32.File - -} - where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - import System.Win32.Time - -@@ -653,3 +655,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h SetVolumeLabelW" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/System/Win32/FileMapping.hsc b/System/Win32/FileMapping.hsc -index 9bfd6e4..19c0188 100644 ---- a/System/Win32/FileMapping.hsc -+++ b/System/Win32/FileMapping.hsc -@@ -16,6 +16,8 @@ - ----------------------------------------------------------------------------- - module System.Win32.FileMapping where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types ( HANDLE, DWORD, BOOL, SIZE_T, LPCTSTR, withTString - , failIf, failIfNull, DDWORD, ddwordToDwords - , iNVALID_HANDLE_VALUE ) -@@ -172,3 +174,5 @@ foreign import WINDOWS_CCONV "windows.h UnmapViewOfFile" - {-# CFILES cbits/HsWin32.c #-} - foreign import ccall "HsWin32.h &UnmapViewOfFileFinaliser" - c_UnmapViewOfFileFinaliser :: FunPtr (Ptr a -> IO ()) -+ -+##endif -diff --git a/System/Win32/Info.hsc b/System/Win32/Info.hsc -index 23e2eac..8bfc3b8 100644 ---- a/System/Win32/Info.hsc -+++ b/System/Win32/Info.hsc -@@ -17,6 +17,8 @@ - - module System.Win32.Info where - -+##ifndef ghcjs_HOST_OS -+ - import Control.Exception (catch) - import Foreign.Marshal.Alloc (alloca) - import Foreign.Marshal.Array (allocaArray) -@@ -392,3 +394,5 @@ type SMSetting = UINT - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+##endif -diff --git a/System/Win32/Mem.hsc b/System/Win32/Mem.hsc -index 8a49d8a..4ae33e3 100644 ---- a/System/Win32/Mem.hsc -+++ b/System/Win32/Mem.hsc -@@ -17,6 +17,8 @@ - - module System.Win32.Mem where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types - - import Foreign -@@ -270,3 +272,5 @@ virtualUnlock addr size = - failIfFalse_ "VirtualUnlock" $ c_VirtualUnlock addr size - foreign import WINDOWS_CCONV unsafe "windows.h VirtualUnlock" - c_VirtualUnlock :: Addr -> DWORD -> IO Bool -+ -+##endif -\ No newline at end of file -diff --git a/System/Win32/NLS.hsc b/System/Win32/NLS.hsc -index d861592..4baf1d0 100644 ---- a/System/Win32/NLS.hsc -+++ b/System/Win32/NLS.hsc -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module System.Win32.NLS ( -+##ifdef ghcjs_HOST_OS -+ ) where -+##else - module System.Win32.NLS, - - -- defined in System.Win32.Types -@@ -381,3 +384,4 @@ foreign import WINDOWS_CCONV unsafe "MultiByteToWideChar" - -> LPWSTR -- lpWideCharStr - -> CInt -- cchWideChar - -> IO CInt -+##endif -diff --git a/System/Win32/Process.hsc b/System/Win32/Process.hsc -index cffc482..2cd4b20 100644 ---- a/System/Win32/Process.hsc -+++ b/System/Win32/Process.hsc -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module System.Win32.Process where -+ -+##ifndef ghcjs_HOST_OS -+ - import Control.Exception ( bracket ) - import Control.Monad ( liftM5 ) - import Foreign ( Ptr, peekByteOff, allocaBytes, pokeByteOff -@@ -128,3 +131,5 @@ th32SnapEnumProcesses h = allocaBytes (#size PROCESSENTRY32W) $ \pe -> do - entry <- peekProcessEntry32 pe - ok' <- c_Process32Next h pe - readAndNext ok' pe (entry:res) -+ -+##endif -diff --git a/System/Win32/Registry.hsc b/System/Win32/Registry.hsc -index cb9cd8e..5a7ae4f 100644 ---- a/System/Win32/Registry.hsc -+++ b/System/Win32/Registry.hsc -@@ -16,6 +16,11 @@ - ----------------------------------------------------------------------------- - - module System.Win32.Registry -+ -+##ifdef ghcjs_HOST_OS -+ () where -+##else -+ - ( module System.Win32.Registry - ) where - {- What's really on offer: -@@ -523,3 +528,5 @@ regUnLoadKey key subkey = - failUnlessSuccess "RegUnLoadKey" $ c_RegUnLoadKey p_key c_subkey - foreign import WINDOWS_CCONV unsafe "windows.h RegUnLoadKeyW" - c_RegUnLoadKey :: PKEY -> LPCTSTR -> IO ErrCode -+ -+##endif -diff --git a/System/Win32/Security.hsc b/System/Win32/Security.hsc -index f00d251..31328e7 100644 ---- a/System/Win32/Security.hsc -+++ b/System/Win32/Security.hsc -@@ -22,7 +22,10 @@ - -- - ----------------------------------------------------------------------------- - --module System.Win32.Security ( -+module System.Win32.Security ( -+##ifdef ghcjs_HOST_OS -+ ) where -+##else - -- * Types - SID, PSID, - ACL, PACL, -@@ -235,3 +238,5 @@ foreign import WINDOWS_CCONV unsafe "windows.h GetFileSecurityW" - -- -> BOOL -- OpenAsSelf - -- -> PHANDLE -- TokenHandle - -- -> IO BOOL -+ -+##endif -diff --git a/System/Win32/Shell.hsc b/System/Win32/Shell.hsc -index f25e32e..7423bab 100644 ---- a/System/Win32/Shell.hsc -+++ b/System/Win32/Shell.hsc -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module System.Win32.Shell ( -+##ifdef ghcjs_HOST_OS -+ ) where -+##else - sHGetFolderPath, - CSIDL, - cSIDL_PROFILE, -@@ -81,3 +84,5 @@ raiseUnsupported loc = - foreign import WINDOWS_CCONV unsafe "SHGetFolderPathW" - c_SHGetFolderPath :: HWND -> CInt -> HANDLE -> DWORD -> LPTSTR - -> IO HRESULT -+ -+##endif -diff --git a/System/Win32/SimpleMAPI.hsc b/System/Win32/SimpleMAPI.hsc -index faa8a9f..5946103 100644 ---- a/System/Win32/SimpleMAPI.hsc -+++ b/System/Win32/SimpleMAPI.hsc -@@ -17,6 +17,8 @@ - module System.Win32.SimpleMAPI - where - -+##ifndef ghcjs_HOST_OS -+ - -- I am not sure why exactly, but with mingw64 mapi.h does not define - -- some of the values we use, e.g. MAPI_LOGOFF_SHARED. - -- mapix.h does define MAPI_LOGOFF_SHARED, but the various flags -@@ -413,3 +415,6 @@ mapiSendMail f ses hwnd msg flag = withMessage f ses msg $ \msg -> - - handleIOException :: (IOException -> IO a) -> IO a -> IO a - handleIOException = handle -+ -+##endif -+ -diff --git a/System/Win32/Time.hsc b/System/Win32/Time.hsc -index a977975..9f29ece 100644 ---- a/System/Win32/Time.hsc -+++ b/System/Win32/Time.hsc -@@ -16,6 +16,8 @@ - ----------------------------------------------------------------------------- - module System.Win32.Time where - -+##ifndef ghcjs_HOST_OS -+ - import System.Win32.Types ( DWORD, WORD, LONG, BOOL, failIf, failIf_, HANDLE - , peekTStringLen, LCID, LPTSTR, LPCTSTR, DDWORD - , LARGE_INTEGER, ddwordToDwords, dwordsToDdword ) -@@ -307,3 +309,5 @@ getTimeFormat locale flags st fmt = - size <- failIf (==0) "getTimeFormat: GetTimeFormat" $ - c_GetTimeFormat locale flags st fmt (castPtr out) size - peekTStringLen (out,fromIntegral size) -+ -+##endif -diff --git a/System/Win32/Types.hs b/System/Win32/Types.hs -old mode 100755 -new mode 100644 -index c09a22f..e935cb1 ---- a/System/Win32/Types.hs -+++ b/System/Win32/Types.hs -@@ -16,6 +16,9 @@ - ----------------------------------------------------------------------------- - - module System.Win32.Types -+#ifdef ghcjs_HOST_OS -+ ( ) where -+#else - ( module System.Win32.Types - , nullPtr - ) where -@@ -326,3 +329,5 @@ foreign import ccall unsafe "HsWin32.h prim_SUBLANGID" - ---------------------------------------------------------------- - -- End - ---------------------------------------------------------------- -+ -+#endif diff --git a/patches/bytestring.patch b/patches/bytestring.patch deleted file mode 100644 index 9c0151e..0000000 --- a/patches/bytestring.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/Data/ByteString/Builder/ASCII.hs b/Data/ByteString/Builder/ASCII.hs -index e5370fa..62b7d83 100644 ---- a/Data/ByteString/Builder/ASCII.hs -+++ b/Data/ByteString/Builder/ASCII.hs -@@ -95,6 +95,9 @@ import Foreign.C.Types - import qualified Data.ByteString.Builder.Prim.Internal as P - import Data.ByteString.Builder.Prim.Internal.UncheckedShifts - ( caseWordSize_32_64 ) -+#if defined(ghcjs_HOST_OS) -+import GHC.Num (quotRemInteger) -+#endif - - # if __GLASGOW_HASKELL__ < 710 - import GHC.Num (quotRemInteger) diff --git a/patches/directory.patch b/patches/directory.patch deleted file mode 100755 index dffdea4..0000000 --- a/patches/directory.patch +++ /dev/null @@ -1,440 +0,0 @@ -diff --git a/System/Directory.hs b/System/Directory.hs -index be8379d..e27ff17 100644 ---- a/System/Directory.hs -+++ b/System/Directory.hs -@@ -2,6 +2,9 @@ - #ifdef __GLASGOW_HASKELL__ - {-# LANGUAGE Trustworthy #-} - #endif -+#ifdef __GHCJS__ -+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, UnliftedFFITypes, MagicHash #-} -+#endif - - ----------------------------------------------------------------------------- - -- | -@@ -104,7 +107,9 @@ import Data.Time.Clock.POSIX ( posixSecondsToUTCTime ) - - import GHC.IO.Exception ( IOErrorType(InappropriateType) ) - --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+import GHCJS.Prim -+#elif defined(mingw32_HOST_OS) - import System.Posix.Types - import System.Posix.Internals - import qualified System.Win32 as Win32 -@@ -195,9 +200,56 @@ The operation may fail with: - - #ifdef __GLASGOW_HASKELL__ - -+#ifdef ghcjs_HOST_OS -+ -+type JSObject = JSVal -+type JSString = JSVal -+type JSArray = JSVal -+ -+throwErrnoIfJSNull :: String -> IO JSVal -> IO JSVal -+throwErrnoIfJSNull msg m = do -+ r <- m -+ if isNull r then throwErrno msg -+ else return r -+ -+-------------------------------------------------------------- -+ -+foreign import javascript interruptible "h$directory_getPermissions($1,$c);" js_getPermissions :: JSString -> IO Int -+foreign import javascript interruptible "h$directory_setPermissions($1,$2,$c);" js_setPermissions :: JSString -> Int -> IO Int -+foreign import javascript interruptible "h$directory_copyPermissions($1,$2,$c);" js_copyPermissions :: JSString -> JSString -> IO Int -+foreign import javascript interruptible "h$directory_createDirectory($1,$c);" js_createDirectory :: JSString -> IO Int -+foreign import javascript interruptible "h$directory_removeDirectory($1,$c);" js_removeDirectory :: JSString -> IO Int -+foreign import javascript interruptible "h$directory_removeFile($1,$c);" js_removeFile :: JSString -> IO Int -+foreign import javascript interruptible "h$directory_renameDirectory($1,$c);" js_renameDirectory :: JSString -> JSString -> IO Int -+foreign import javascript interruptible "h$directory_renameFile($1,$2,$c);" js_renameFile :: JSString -> JSString -> IO Int -+foreign import javascript unsafe "h$directory_canonicalizePath($1)" js_canonicalizePath :: JSString -> IO JSString -+foreign import javascript interruptible "h$directory_findExecutables($1,$c);" js_findExecutables :: JSString -> IO JSArray -+foreign import javascript interruptible "h$directory_getDirectoryContents($1,$c);" js_getDirectoryContents :: JSString -> IO JSArray -+foreign import javascript unsafe "h$directory_getCurrentDirectory()" js_getCurrentDirectory :: IO JSString -+foreign import javascript unsafe "h$directory_setCurrentDirectory($1)" js_setCurrentDirectory :: JSString -> IO Int -+foreign import javascript unsafe "h$directory_getHomeDirectory()" js_getHomeDirectory :: IO JSString -+foreign import javascript unsafe "h$directory_getAppUserDataDirectory($1)" js_getAppUserDataDirectory :: JSString -> IO JSString -+foreign import javascript unsafe "h$directory_getUserDocumentsDirectory()" js_getUserDocumentsDirectory :: IO JSString -+foreign import javascript unsafe "h$directory_getTemporaryDirectory()" js_getTemporaryDirectory :: IO JSString -+foreign import javascript unsafe "h$directory_exeExtension()" js_exeExtension :: JSString -+foreign import javascript interruptible "h$directory_getFileStatus($1,$c);" js_getFileStatus :: JSString -> IO JSObject -+foreign import javascript interruptible "h$directory_getFileOrSymlinkStatus($1,$c);" js_getFileOrSymlinkStatus :: JSString -> IO JSObject -+foreign import javascript unsafe "h$directory_getFileStatusModificationTime($1)" js_getFileStatusModificationTime :: JSObject -> IO Double -+foreign import javascript unsafe "h$directory_getFileStatusIsDirectory($1)" js_getFileStatusIsDirectory :: JSObject -> IO Bool -+#endif -+ -+ -+ - getPermissions :: FilePath -> IO Permissions - getPermissions name = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ perms <- throwErrnoIfMinus1 "getPermissions" $ js_getPermissions (toJSString name) -+ return (Permissions { readable = testBit perms 0 -+ , writable = testBit perms 1 -+ , executable = testBit perms 2 -+ , searchable = testBit perms 3 -+ }) -+#elif defined(mingw32_HOST_OS) - -- issue #9: Windows doesn't like trailing path separators - withFilePath (dropTrailingPathSeparator name) $ \s -> do - -- stat() does a better job of guessing the permissions on Windows -@@ -251,7 +303,11 @@ The operation may fail with: - - setPermissions :: FilePath -> Permissions -> IO () - setPermissions name (Permissions r w e s) = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ let bitIf b i = if b then bit i else 0 -+ throwErrnoIfMinus1_ "setPermissions" $ -+ js_setPermissions (toJSString name) (bitIf r 0 .|. bitIf w 1 .|. bitIf e 2 .|. bitIf s 3) -+#elif defined(mingw32_HOST_OS) - allocaBytes sizeof_stat $ \ p_stat -> do - withFilePath name $ \p_name -> do - throwErrnoIfMinus1_ "setPermissions" $ -@@ -287,7 +343,10 @@ foreign import ccall unsafe "_wchmod" - - copyPermissions :: FilePath -> FilePath -> IO () - copyPermissions source dest = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "copyPermissions" $ -+ js_copyPermissions (toJSString source) (toJSString dest) -+#elif defined(mingw32_HOST_OS) - allocaBytes sizeof_stat $ \ p_stat -> do - withFilePath source $ \p_source -> do - withFilePath dest $ \p_dest -> do -@@ -342,7 +401,10 @@ The path refers to an existing non-directory object. - - createDirectory :: FilePath -> IO () - createDirectory path = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "createDirectory" $ -+ js_createDirectory (toJSString path) -+#elif defined(mingw32_HOST_OS) - Win32.createDirectory path Nothing - #else - Posix.createDirectory path 0o777 -@@ -397,7 +459,9 @@ createDirectoryIfMissing create_parents path0 - -- directory. - | isAlreadyExistsError e - || isPermissionError e -> do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ canIgnore <- fmap isDirectory (getFileStatus "createDirectoryIfMissing" dir) -+#elif defined(mingw32_HOST_OS) - canIgnore <- (withFileStatus "createDirectoryIfMissing" dir isDirectory) - #else - canIgnore <- (Posix.isDirectory `fmap` Posix.getFileStatus dir) -@@ -421,7 +485,13 @@ data DirectoryType = NotDirectory - getDirectoryType :: FilePath -> IO DirectoryType - getDirectoryType path = - (`ioeSetLocation` "getDirectoryType") `modifyIOError` do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ stat <- js_getFileOrSymlinkStatus (toJSString path) -+ isDir <- js_getFileStatusIsDirectory stat -+ return $ if isDir -+ then Directory -+ else NotDirectory -+#elif defined(mingw32_HOST_OS) - fmap classify (Win32.getFileAttributes path) - where fILE_ATTRIBUTE_REPARSE_POINT = 0x400 - classify attr -@@ -478,7 +548,9 @@ The operand refers to an existing non-directory object. - - removeDirectory :: FilePath -> IO () - removeDirectory path = --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "removeDirectory" $ js_removeDirectory (toJSString path) -+#elif defined(mingw32_HOST_OS) - Win32.removeDirectory path - #else - Posix.removeDirectory path -@@ -557,7 +629,9 @@ The operand refers to an existing directory. - - removeFile :: FilePath -> IO () - removeFile path = --#if mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "removeFile" $ js_removeFile (toJSString path) -+#elif defined(mingw32_HOST_OS) - Win32.deleteFile path - #else - Posix.removeLink path -@@ -614,8 +688,12 @@ Either path refers to an existing non-directory object. - - renameDirectory :: FilePath -> FilePath -> IO () - renameDirectory opath npath = do -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "renameDirectory" $ -+ js_renameDirectory (toJSString opath) (toJSString npath) -+#else - -- XXX this test isn't performed atomically with the following rename --#ifdef mingw32_HOST_OS -+#if defined(mingw32_HOST_OS) - -- ToDo: use Win32 API - withFileStatus "renameDirectory" opath $ \st -> do - is_dir <- isDirectory st -@@ -628,11 +706,14 @@ renameDirectory opath npath = do - (mkIOError InappropriateType "renameDirectory" Nothing (Just opath)) - "not a directory") - else do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ return () -- fixme -+#elif defined(mingw32_HOST_OS) - Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING - #else - Posix.rename opath npath - #endif -+#endif - - {- |@'renameFile' old new@ changes the name of an existing file system - object from /old/ to /new/. If the /new/ object already -@@ -682,6 +763,10 @@ renameFile :: FilePath -> FilePath -> IO () - renameFile opath npath = (`ioeSetLocation` "renameFile") `modifyIOError` do - -- XXX the tests are not performed atomically with the rename - checkNotDir opath -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "renameFile" $ -+ js_renameFile (toJSString opath) (toJSString npath) -+#else - #ifdef mingw32_HOST_OS - Win32.moveFileEx opath npath Win32.mOVEFILE_REPLACE_EXISTING - #else -@@ -696,6 +781,7 @@ renameFile opath npath = (`ioeSetLocation` "renameFile") `modifyIOError` do - `catchIOError` \ err -> do - checkNotDir npath - ioError err -+#endif - where checkNotDir path = do - dirType <- getDirectoryType path - `catchIOError` \ _ -> return NotDirectory -@@ -761,6 +847,9 @@ copyFile fromFPath toFPath = - canonicalizePath :: FilePath -> IO FilePath - canonicalizePath "" = canonicalizePath "." - canonicalizePath fpath = -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` js_canonicalizePath (toJSString fpath) -+#else - #if defined(mingw32_HOST_OS) - do path <- Win32.getFullPathName fpath - #else -@@ -781,6 +870,7 @@ foreign import ccall unsafe "realpath" - -> CString - -> IO CString - #endif -+#endif - - -- | Make a path absolute by prepending the current directory (if it isn't - -- already absolute) and applying @'normalise'@ to the result. -@@ -829,7 +919,9 @@ findExecutable fileName = do - -- /Since: 1.2.2.0/ - findExecutables :: String -> IO [FilePath] - findExecutables binary = do --#if defined(mingw32_HOST_OS) -+#if defined(ghcjs_HOST_OS) -+ fmap (map fromJSString) $ fromJSArray =<< js_findExecutables (toJSString binary) -+#elif defined(mingw32_HOST_OS) - file <- Win32.searchPath Nothing binary ('.':exeExtension) - return $ maybeToList file - #else -@@ -906,7 +998,10 @@ getDirectoryContents :: FilePath -> IO [FilePath] - getDirectoryContents path = - modifyIOError ((`ioeSetFileName` path) . - (`ioeSetLocation` "getDirectoryContents")) $ do --#ifndef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ fmap (map fromJSString) $ fromJSArray =<< throwErrnoIfJSNull "getDirectoryContents" -+ (js_getDirectoryContents (toJSString path)) -+#elif !defined(mingw32_HOST_OS) - bracket - (Posix.openDirStream path) - Posix.closeDirStream -@@ -937,6 +1032,7 @@ getDirectoryContents path = - else return (filename:acc) - -- no need to reverse, ordering is undefined - #endif /* mingw32 */ -+{-# NOINLINE getDirectoryContents #-} - - #endif /* __GLASGOW_HASKELL__ */ - -@@ -974,7 +1070,9 @@ recommended to use absolute rather than relative `FilePath`s. - #ifdef __GLASGOW_HASKELL__ - getCurrentDirectory :: IO FilePath - getCurrentDirectory = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` throwErrnoIfJSNull "getCurrentDirectory" js_getCurrentDirectory -+#elif defined(mingw32_HOST_OS) - Win32.getCurrentDirectory - #else - Posix.getWorkingDirectory -@@ -1019,7 +1117,10 @@ recommended to use absolute rather than relative `FilePath`s. - - setCurrentDirectory :: FilePath -> IO () - setCurrentDirectory path = --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ throwErrnoIfMinus1_ "setCurrentDirectory" $ -+ js_setCurrentDirectory (toJSString path) -+#elif defined(mingw32_HOST_OS) - Win32.setCurrentDirectory path - #else - Posix.changeWorkingDirectory path -@@ -1035,7 +1136,9 @@ and 'False' otherwise. - - doesDirectoryExist :: FilePath -> IO Bool - doesDirectoryExist name = --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ fmap isDirectory (getFileStatus "doesDirectoryExist" name) -+#elif defined(mingw32_HOST_OS) - (withFileStatus "doesDirectoryExist" name $ \st -> isDirectory st) - #else - (do stat <- Posix.getFileStatus name -@@ -1049,7 +1152,9 @@ if the argument file exists and is not a directory, and 'False' otherwise. - - doesFileExist :: FilePath -> IO Bool - doesFileExist name = --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ fmap (not . isDirectory) (getFileStatus "doesFileExist" name) -+#elif defined(mingw32_HOST_OS) - (withFileStatus "doesFileExist" name $ \st -> do b <- isDirectory st; return (not b)) - #else - (do stat <- Posix.getFileStatus name -@@ -1076,7 +1181,10 @@ such high resolution timestamps. - - getModificationTime :: FilePath -> IO UTCTime - getModificationTime name = do --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+ st <- getFileStatus "getModificationTime" name -+ return (modificationTime st) -+#elif defined(mingw32_HOST_OS) - #if MIN_VERSION_Win32(2,3,1) - fad <- Win32.getFileAttributesExStandard name - let win32_epoch_adjust = 116444736000000000 -@@ -1094,12 +1202,12 @@ getModificationTime name = do - #else - let mod_time = realToFrac $ Posix.modificationTime stat - #endif --#endif - return $ posixSecondsToUTCTime mod_time -+#endif - - #endif /* __GLASGOW_HASKELL__ */ - --#ifdef mingw32_HOST_OS -+#if defined(mingw32_HOST_OS) && !defined(ghcjs_HOST_OS) - withFileStatus :: String -> FilePath -> (Ptr CStat -> IO a) -> IO a - withFileStatus loc name f = do - modifyIOError (`ioeSetFileName` name) $ -@@ -1121,9 +1229,30 @@ foreign import ccall unsafe "HsDirectory.h __hscore_S_IRUSR" s_IRUSR :: CMode - foreign import ccall unsafe "HsDirectory.h __hscore_S_IWUSR" s_IWUSR :: CMode - foreign import ccall unsafe "HsDirectory.h __hscore_S_IXUSR" s_IXUSR :: CMode - foreign import ccall unsafe "__hscore_S_IFDIR" s_IFDIR :: CMode -+#elif defined(ghcjs_HOST_OS) -+ -+data FileStatus = FileStatus { isDirectory :: Bool -+ , modificationTime :: UTCTime -+ } -+ -+getFileStatus :: String -> FilePath -> IO FileStatus -+getFileStatus msg path = -+ convertStatus =<< throwErrnoIfJSNull msg -+ (js_getFileStatus (toJSString path)) -+ -+getFileOrSymlinkStatus :: String -> FilePath -> IO FileStatus -+getFileOrSymlinkStatus msg path = -+ convertStatus =<< throwErrnoIfJSNull "getFileOrSymlinkStatus" -+ (js_getFileOrSymlinkStatus (toJSString path)) -+ -+convertStatus :: JSObject -> IO FileStatus -+convertStatus s = do -+ mtime <- js_getFileStatusModificationTime s -+ isDir <- js_getFileStatusIsDirectory s -+ return (FileStatus isDir (posixSecondsToUTCTime $ realToFrac mtime)) - #endif - --#ifndef mingw32_HOST_OS -+#if !defined(mingw32_HOST_OS) && !defined(ghcjs_HOST_OS) - #ifdef __GLASGOW_HASKELL__ - foreign import ccall unsafe "__hscore_long_path_size" - long_path_size :: Int -@@ -1157,7 +1286,9 @@ cannot be found. - getHomeDirectory :: IO FilePath - getHomeDirectory = - modifyIOError ((`ioeSetLocation` "getHomeDirectory")) $ do --#if defined(mingw32_HOST_OS) -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` throwErrnoIfJSNull "getHomeDirectory" js_getHomeDirectory -+#elif defined(mingw32_HOST_OS) - r <- E.try $ Win32.sHGetFolderPath nullPtr Win32.cSIDL_PROFILE nullPtr 0 - case (r :: Either IOException String) of - Right s -> return s -@@ -1200,7 +1331,10 @@ cannot be found. - getAppUserDataDirectory :: String -> IO FilePath - getAppUserDataDirectory appName = do - modifyIOError ((`ioeSetLocation` "getAppUserDataDirectory")) $ do --#if defined(mingw32_HOST_OS) -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` throwErrnoIfJSNull "getAppUserDataDirectory" -+ (js_getAppUserDataDirectory (toJSString appName)) -+#elif defined(mingw32_HOST_OS) - s <- Win32.sHGetFolderPath nullPtr Win32.cSIDL_APPDATA nullPtr 0 - return (s++'\\':appName) - #else -@@ -1232,7 +1366,10 @@ cannot be found. - getUserDocumentsDirectory :: IO FilePath - getUserDocumentsDirectory = do - modifyIOError ((`ioeSetLocation` "getUserDocumentsDirectory")) $ do --#if defined(mingw32_HOST_OS) -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` throwErrnoIfJSNull "getUserDocumentsDirectory" -+ js_getUserDocumentsDirectory -+#elif defined(mingw32_HOST_OS) - Win32.sHGetFolderPath nullPtr Win32.cSIDL_PERSONAL nullPtr 0 - #else - getEnv "HOME" -@@ -1266,7 +1403,9 @@ The function doesn\'t verify whether the path exists. - -} - getTemporaryDirectory :: IO FilePath - getTemporaryDirectory = do --#if defined(mingw32_HOST_OS) -+#if defined(ghcjs_HOST_OS) -+ fromJSString `fmap` throwErrnoIfJSNull "getTemporaryDirectory" js_getTemporaryDirectory -+#elif defined(mingw32_HOST_OS) - Win32.getTemporaryDirectory - #else - getEnv "TMPDIR" -@@ -1278,7 +1417,9 @@ getTemporaryDirectory = do - -- | Extension for executable files - -- (typically @\"\"@ on Unix and @\"exe\"@ on Windows or OS\/2) - exeExtension :: String --#ifdef mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+exeExtension = fromJSString js_exeExtension -+#elif defined(mingw32_HOST_OS) - exeExtension = "exe" - #else - exeExtension = "" -diff --git a/directory.cabal b/directory.cabal -index 52e0116..ff1817f 100644 ---- a/directory.cabal -+++ b/directory.cabal -@@ -74,6 +74,8 @@ Library - base >= 4.5 && < 4.9, - time >= 1.4 && < 1.6, - filepath >= 1.3 && < 1.5 -+ if impl(ghcjs) -+ build-depends: ghcjs-prim - if os(windows) - build-depends: Win32 >= 2.2.2 && < 2.4 - else diff --git a/patches/filepath.patch b/patches/filepath.patch deleted file mode 100644 index 86a054c..0000000 --- a/patches/filepath.patch +++ /dev/null @@ -1,74 +0,0 @@ -diff --git a/System/FilePath.hs b/System/FilePath.hs -index 331ae81..0c75d25 100644 ---- a/System/FilePath.hs -+++ b/System/FilePath.hs -@@ -20,7 +20,10 @@ functions. - -} - - --#if defined(mingw32_HOST_OS) || defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+module System.FilePath (module System.FilePath.Current) where -+import System.FilePath.Current -+#elif defined(mingw32_HOST_OS) || defined(__MINGW32__) - module System.FilePath(module System.FilePath.Windows) where - import System.FilePath.Windows - #else -diff --git a/System/FilePath/Current.hs b/System/FilePath/Current.hs -new file mode 100644 -index 0000000..0355326 ---- /dev/null -+++ b/System/FilePath/Current.hs -@@ -0,0 +1,4 @@ -+{-# LANGUAGE CPP #-} -+#define MODULE_NAME Current -+#define IS_CURRENT 1 -+#include "Internal.hs" -diff --git a/System/FilePath/Internal.hs b/System/FilePath/Internal.hs -index 051e44c..6d7d61f 100644 ---- a/System/FilePath/Internal.hs -+++ b/System/FilePath/Internal.hs -@@ -1,4 +1,6 @@ --#if __GLASGOW_HASKELL__ >= 704 -+#ifdef IS_CURRENT -+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, Trustworthy #-} -+#elif __GLASGOW_HASKELL__ >= 704 - {-# LANGUAGE Safe #-} - #endif - {-# LANGUAGE PatternGuards #-} -@@ -63,6 +65,8 @@ - -- [1] (Microsoft MSDN) - module System.FilePath.MODULE_NAME - ( -+ isWindows, isPosix, -+ - -- * Separator predicates - FilePath, - pathSeparator, pathSeparators, isPathSeparator, -@@ -124,8 +128,11 @@ isPosix = not isWindows - - -- | Is the operating system Windows like - isWindows :: Bool -+#ifdef IS_CURRENT -+foreign import javascript unsafe "h$filepath_isWindows()" isWindows :: Bool -+#else - isWindows = IS_WINDOWS -- -+#endif - - --------------------------------------------------------------------- - -- The basic functions -diff --git a/filepath.cabal b/filepath.cabal -index 0841a0d..9c1295a 100644 ---- a/filepath.cabal -+++ b/filepath.cabal -@@ -40,6 +40,9 @@ library - System.FilePath - System.FilePath.Posix - System.FilePath.Windows -+ if impl(GHCJS>=0.1) -+ Exposed-modules: -+ System.FilePath.Current - - build-depends: - base >= 4 && < 4.9 diff --git a/patches/hashable.patch b/patches/hashable.patch deleted file mode 100644 index 625b0d6..0000000 --- a/patches/hashable.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/Data/Hashable/Class.hs b/Data/Hashable/Class.hs -index f290f6f..367c1e5 100644 ---- a/Data/Hashable/Class.hs -+++ b/Data/Hashable/Class.hs -@@ -89,7 +89,7 @@ import qualified Data.ByteString.Lazy.Internal as BL -- foldlChunks - import qualified Data.ByteString.Short.Internal as BSI - #endif - --#ifdef VERSION_integer_gmp -+#if defined(VERSION_integer_gmp) && !defined(ghcjs_HOST_OS) - - # if MIN_VERSION_integer_gmp(1,0,0) - # define MIN_VERSION_integer_gmp_1_0_0 -@@ -258,7 +258,7 @@ instance Hashable Char where - hash = fromEnum - hashWithSalt = defaultHashWithSalt - --#if defined(MIN_VERSION_integer_gmp_1_0_0) -+#if defined(MIN_VERSION_integer_gmp_1_0_0) && !defined(ghcjs_HOST_OS) - instance Hashable BigNat where - hashWithSalt salt (BN# ba) = hashByteArrayWithSalt ba 0 numBytes salt - `hashWithSalt` size -@@ -269,7 +269,7 @@ instance Hashable BigNat where - - #if MIN_VERSION_base(4,8,0) - instance Hashable Natural where --# if defined(MIN_VERSION_integer_gmp_1_0_0) -+# if defined(MIN_VERSION_integer_gmp_1_0_0) && !defined(ghcjs_HOST_OS) - hash (NatS# n) = hash (W# n) - hash (NatJ# bn) = hash bn - -@@ -283,7 +283,7 @@ instance Hashable Natural where - #endif - - instance Hashable Integer where --#if defined(VERSION_integer_gmp) -+#if defined(VERSION_integer_gmp) && !defined(ghcjs_HOST_OS) - # if defined(MIN_VERSION_integer_gmp_1_0_0) - hash (S# n) = (I# n) - hash (Jp# bn) = hash bn diff --git a/patches/old-time.patch b/patches/old-time.patch deleted file mode 100644 index b0daa95..0000000 --- a/patches/old-time.patch +++ /dev/null @@ -1,188 +0,0 @@ -diff --git a/System/Time.hsc b/System/Time.hsc -index 8074783..89a9d82 100644 ---- a/System/Time.hsc -+++ b/System/Time.hsc -@@ -1,3 +1,4 @@ -+{-# LANGUAGE CPP #-} - #if __GLASGOW_HASKELL__ >= 701 - {-# LANGUAGE Trustworthy #-} - #endif -@@ -230,6 +231,17 @@ realToInteger ct = round (realToFrac ct :: Double) - -- so we must convert to Double before we can round it - - getClockTime :: IO ClockTime -+##ifdef ghcjs_HOST_OS -+type Timeval_tv_sec = Int -+type Timeval_tv_usec = Int -+ -+getClockTime = do -+ allocaBytes 8 $ \ p_timeval -> do -+ throwErrnoIfMinus1_ "getClockTime" $ gettimeofday p_timeval nullPtr -+ sec <- peekByteOff p_timeval 0 :: IO Timeval_tv_sec -+ usec <- peekByteOff p_timeval 4 :: IO Timeval_tv_usec -+ return (TOD (realToInteger sec) ((realToInteger usec) * 1000000)) -+##else - #ifdef __HUGS__ - getClockTime = do - (sec,usec) <- getClockTimePrim -@@ -266,6 +278,7 @@ getClockTime = do - return (TOD (realToInteger secs) 0) - - #endif -+##endif - - -- ----------------------------------------------------------------------------- - -- | @'addToClockTime' d t@ adds a time difference @d@ and a -@@ -357,6 +370,10 @@ normalizeTimeDiff td = - - zone :: Ptr CTm -> IO (Ptr CChar) - gmtoff :: Ptr CTm -> IO CLong -+##ifdef ghcjs_HOST_OS -+zone x = peekByteOff x 36 -+gmtoff x = peekByteOff x 40 -+##else - #if HAVE_TM_ZONE - zone x = (#peek struct tm,tm_zone) x - gmtoff x = (#peek struct tm,tm_gmtoff) x -@@ -407,6 +424,7 @@ gmtoff x = do - return (- (if dst then tz - 3600 else tz)) - # endif /* ! HAVE_DECL_ALTZONE */ - #endif /* ! HAVE_TM_ZONE */ -+##endif - #endif /* ! __HUGS__ */ - - -- ----------------------------------------------------------------------------- -@@ -416,6 +434,9 @@ gmtoff x = do - -- 'toCalendarTime' is in the 'IO' monad. - - toCalendarTime :: ClockTime -> IO CalendarTime -+##ifdef ghcjs_HOST_OS -+toCalendarTime = clockToCalendarTime_reentrant (_throwAwayReturnPointer localtime_r) False -+##else - #ifdef __HUGS__ - toCalendarTime = toCalTime False - #elif HAVE_LOCALTIME_R -@@ -423,11 +444,15 @@ toCalendarTime = clockToCalendarTime_reentrant (_throwAwayReturnPointer localti - #else - toCalendarTime = clockToCalendarTime_static localtime False - #endif -+##endif - - -- | converts an internal clock time into a 'CalendarTime' in standard - -- UTC format. - - toUTCTime :: ClockTime -> CalendarTime -+##ifdef ghcjs_HOST_OS -+toUTCTime = unsafePerformIO . clockToCalendarTime_reentrant (_throwAwayReturnPointer gmtime_r) True -+##else - #ifdef __HUGS__ - toUTCTime = unsafePerformIO . toCalTime True - #elif HAVE_GMTIME_R -@@ -435,6 +460,7 @@ toUTCTime = unsafePerformIO . clockToCalendarTime_reentrant (_throwAwayRet - #else - toUTCTime = unsafePerformIO . clockToCalendarTime_static gmtime True - #endif -+##endif - - #ifdef __HUGS__ - toCalTime :: Bool -> ClockTime -> IO CalendarTime -@@ -464,6 +490,15 @@ _throwAwayReturnPointer :: (Ptr CTime -> Ptr CTm -> IO (Ptr CTm)) - -> (Ptr CTime -> Ptr CTm -> IO ( )) - _throwAwayReturnPointer fun x y = fun x y >> return () - -+##ifdef ghcjs_HOST_OS -+clockToCalendarTime_reentrant :: (Ptr CTime -> Ptr CTm -> IO ()) -> Bool -> ClockTime -+ -> IO CalendarTime -+clockToCalendarTime_reentrant fun is_utc (TOD secs psec) = do -+ with (fromIntegral secs :: CTime) $ \ p_timer -> do -+ allocaBytes 44 $ \ p_tm -> do -+ fun p_timer p_tm -+ clockToCalendarTime_aux is_utc p_tm psec -+##else - #if !HAVE_LOCALTIME_R || !HAVE_GMTIME_R - clockToCalendarTime_static :: (Ptr CTime -> IO (Ptr CTm)) -> Bool -> ClockTime - -> IO CalendarTime -@@ -482,9 +517,23 @@ clockToCalendarTime_reentrant fun is_utc (TOD secs psec) = do - fun p_timer p_tm - clockToCalendarTime_aux is_utc p_tm psec - #endif -+##endif - - clockToCalendarTime_aux :: Bool -> Ptr CTm -> Integer -> IO CalendarTime - clockToCalendarTime_aux is_utc p_tm psec = do -+##ifdef ghcjs_HOST_OS -+ sec <- peekByteOff p_tm 0 :: IO CInt -+ minute <- peekByteOff p_tm 4 :: IO CInt -+ hour <- peekByteOff p_tm 8 :: IO CInt -+ mday <- peekByteOff p_tm 12 :: IO CInt -+ mon <- peekByteOff p_tm 16 :: IO CInt -+ year <- peekByteOff p_tm 20 :: IO CInt -+ wday <- peekByteOff p_tm 24 :: IO CInt -+ yday <- peekByteOff p_tm 28 :: IO CInt -+ isdst <- peekByteOff p_tm 32 :: IO CInt -+ zone' <- zone p_tm -+ tz <- gmtoff p_tm -+##else - sec <- (#peek struct tm,tm_sec ) p_tm :: IO CInt - minute <- (#peek struct tm,tm_min ) p_tm :: IO CInt - hour <- (#peek struct tm,tm_hour ) p_tm :: IO CInt -@@ -496,7 +545,7 @@ clockToCalendarTime_aux is_utc p_tm psec = do - isdst <- (#peek struct tm,tm_isdst) p_tm :: IO CInt - zone' <- zone p_tm - tz <- gmtoff p_tm -- -+##endif - tzname' <- peekCString zone' - - let month | mon >= 0 && mon <= 11 = toEnum (fromIntegral mon) -@@ -545,6 +594,16 @@ toClockTime (CalendarTime year mon mday hour minute sec psec - error "Time.toClockTime: timezone offset out of range" - else - unsafePerformIO $ do -+##ifdef ghcjs_HOST_OS -+ allocaBytes 44 $ \p_tm -> do -+ pokeByteOff p_tm 0 (fromIntegral sec :: CInt) -+ pokeByteOff p_tm 4 (fromIntegral minute :: CInt) -+ pokeByteOff p_tm 8 (fromIntegral hour :: CInt) -+ pokeByteOff p_tm 12 (fromIntegral mday :: CInt) -+ pokeByteOff p_tm 16 (fromIntegral (fromEnum mon) :: CInt) -+ pokeByteOff p_tm 20 (fromIntegral year - 1900 :: CInt) -+ pokeByteOff p_tm 28 isDst -+##else - allocaBytes (#const sizeof(struct tm)) $ \ p_tm -> do - (#poke struct tm,tm_sec ) p_tm (fromIntegral sec :: CInt) - (#poke struct tm,tm_min ) p_tm (fromIntegral minute :: CInt) -@@ -553,6 +612,7 @@ toClockTime (CalendarTime year mon mday hour minute sec psec - (#poke struct tm,tm_mon ) p_tm (fromIntegral (fromEnum mon) :: CInt) - (#poke struct tm,tm_year ) p_tm (fromIntegral year - 1900 :: CInt) - (#poke struct tm,tm_isdst) p_tm isDst -+##endif - t <- throwIf (== -1) (\_ -> "Time.toClockTime: invalid input") - (mktime p_tm) - -- -@@ -730,6 +790,19 @@ formatTimeDiff l fmt (TimeDiff year month day hour minute sec _) - - type CTm = () -- struct tm - -+##ifdef ghcjs_HOST_OS -+type CTimeVal = () -+type CTimeZone = () -+foreign import ccall unsafe "HsTime.h __hscore_gettimeofday" -+ gettimeofday :: Ptr CTimeVal -> Ptr CTimeZone -> IO CInt -+foreign import ccall unsafe "HsTime.h __hscore_localtime_r" -+ localtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) -+foreign import ccall unsafe "HsTime.h __hscore_gmtime_r" -+ gmtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) -+foreign import ccall unsafe "time.h mktime" -+ mktime :: Ptr CTm -> IO CTime -+##else -+ - #if HAVE_LOCALTIME_R - foreign import ccall unsafe "HsTime.h __hscore_localtime_r" - localtime_r :: Ptr CTime -> Ptr CTm -> IO (Ptr CTm) -@@ -762,4 +835,5 @@ foreign import ccall unsafe "time.h ftime" ftime :: Ptr CTimeB -> IO () - #else - foreign import ccall unsafe "time.h time" time :: Ptr CTime -> IO CTime - #endif -+##endif - #endif /* ! __HUGS__ */ diff --git a/patches/primitive.patch b/patches/primitive.patch deleted file mode 100644 index cae5342..0000000 --- a/patches/primitive.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/Data/Primitive/Internal/Operations.hs b/Data/Primitive/Internal/Operations.hs -index 091e11f..7410a09 100644 ---- a/Data/Primitive/Internal/Operations.hs -+++ b/Data/Primitive/Internal/Operations.hs -@@ -1,4 +1,4 @@ --{-# LANGUAGE MagicHash, UnliftedFFITypes #-} -+{-# LANGUAGE MagicHash, UnliftedFFITypes, CPP #-} - - -- | - -- Module : Data.Primitive.Internal.Operations -@@ -30,6 +30,44 @@ import Data.Primitive.MachDeps (Word64_#, Int64_#) - import Foreign.C.Types - import GHC.Prim - -+#ifdef ghcjs_HOST_OS -+ -+-- the GHCJS calling convention for ByteArray# is different from Addr# -+-- only one argument, whereas Addr# has two, data and offset -+ -+-- so we import the ByteArray# variant with different names here -+ -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word8" -+ setWord8Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word16" -+ setWord16Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word32" -+ setWord32Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word64" -+ setWord64Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word64_# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word" -+ setWordArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word8" -+ setInt8Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Int# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word16" -+ setInt16Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Int# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word32" -+ setInt32Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Int# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word64" -+ setInt64Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Int64_# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Word" -+ setIntArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Int# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Ptr" -+ setAddrArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Addr# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Float" -+ setFloatArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Float# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Double" -+ setDoubleArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Double# -> IO () -+foreign import ccall unsafe "primitive-memops.h hsprimitive_memsetba_Char" -+ setWideCharArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Char# -> IO () -+ -+#else -+ - foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" - setWord8Array# :: MutableByteArray# s -> CPtrdiff -> CSize -> Word# -> IO () - foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" -@@ -59,6 +97,8 @@ foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Double" - foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Char" - setWideCharArray# :: MutableByteArray# s -> CPtrdiff -> CSize -> Char# -> IO () - -+#endif -+ - foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word8" - setWord8OffAddr# :: Addr# -> CPtrdiff -> CSize -> Word# -> IO () - foreign import ccall unsafe "primitive-memops.h hsprimitive_memset_Word16" diff --git a/patches/process-1.2.0.0.patch b/patches/process-1.2.0.0.patch deleted file mode 100644 index cccfada..0000000 --- a/patches/process-1.2.0.0.patch +++ /dev/null @@ -1,365 +0,0 @@ -diff --git a/System/Process.hs b/System/Process.hs -index 26dab2a..11c074b 100644 ---- a/System/Process.hs -+++ b/System/Process.hs -@@ -4,6 +4,10 @@ - {-# LANGUAGE InterruptibleFFI #-} - #endif - -+#ifdef ghcjs_HOST_OS -+{-# LANGUAGE JavaScriptFFI #-} -+#endif -+ - ----------------------------------------------------------------------------- - -- | - -- Module : System.Process -@@ -84,7 +88,7 @@ import System.Process.Internals - import Control.Exception (SomeException, mask, try, throwIO) - import Control.DeepSeq (rnf) - import System.IO.Error (mkIOError, ioeSetErrorString) --#if !defined(mingw32_HOST_OS) -+#if !defined(mingw32_HOST_OS) && !defined(ghcjs_HOST_OS) - import System.Posix.Types - import System.Posix.Process (getProcessGroupIDOf) - #endif -@@ -103,7 +107,7 @@ import GHC.IO.Exception ( ioException, IOErrorType(..), IOException(..) ) - #if defined(mingw32_HOST_OS) - import System.Win32.Process (getProcessId) - import System.Win32.Console (generateConsoleCtrlEvent, cTRL_BREAK_EVENT) --#else -+#elif !defined(ghcjs_HOST_OS) - import System.Posix.Signals - #endif - #endif -@@ -680,7 +684,8 @@ interruptProcessGroupOf ph = do - case p_ of - ClosedHandle _ -> return () - OpenHandle h -> do --#if mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+#elif defined(mingw32_HOST_OS) - pid <- getProcessId h - generateConsoleCtrlEvent cTRL_BREAK_EVENT pid - -- We can't use an #elif here, because MIN_VERSION_unix isn't defined -@@ -696,6 +701,23 @@ interruptProcessGroupOf ph = do - -- ---------------------------------------------------------------------------- - -- Interface to C bits - -+#if defined(ghcjs_HOST_OS) -+ -+ -+foreign import javascript unsafe -+ "h$process_terminateProcess($1)" -+ c_terminateProcess :: PHANDLE -> IO CInt -+ -+foreign import javascript unsafe -+ "h$process_getProcessExitCode($1,$2_1,$2_2)" -+ c_getProcessExitCode :: PHANDLE -> Ptr CInt -> IO CInt -+ -+foreign import javascript interruptible -+ "h$process_waitForProcess($1,$2_1,$2_2,$c);" -+ c_waitForProcess :: PHANDLE -> Ptr CInt -> IO CInt -+ -+#else -+ - foreign import ccall unsafe "terminateProcess" - c_terminateProcess - :: PHANDLE -@@ -713,6 +735,7 @@ foreign import ccall interruptible "waitForProcess" -- NB. safe - can block - -> Ptr CInt - -> IO CInt - -+#endif - - -- ---------------------------------------------------------------------------- - -- Old deprecated variants -diff --git a/System/Process/Internals.hs b/System/Process/Internals.hs -index c4f8797..13dc073 100644 ---- a/System/Process/Internals.hs -+++ b/System/Process/Internals.hs -@@ -5,6 +5,10 @@ - {-# LANGUAGE InterruptibleFFI #-} - #endif - -+#ifdef __GHCJS__ -+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, UnliftedFFITypes, MagicHash #-} -+#endif -+ - ----------------------------------------------------------------------------- - -- | - -- Module : System.Process.Internals -@@ -31,7 +35,7 @@ module System.Process.Internals ( - #endif - startDelegateControlC, - endDelegateControlC, --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - pPrPr_disableITimers, c_execvpe, - ignoreSignal, defaultSignal, - #endif -@@ -40,7 +44,7 @@ module System.Process.Internals ( - fdToHandle, - ) where - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - import Control.Monad - import Data.Char - import System.Posix.Types -@@ -68,12 +72,14 @@ import GHC.IO.Handle.Internals - import GHC.IO.Handle.Types hiding (ClosedHandle) - import System.IO.Error - import Data.Typeable --#if defined(mingw32_HOST_OS) -+# if defined(mingw32_HOST_OS) || defined(ghcjs_HOST_OS) - import GHC.IO.IOMode -+# endif -+# if defined(mingw32_HOST_OS) - import System.Win32.DebugApi (PHANDLE) --#else -+# elif !defined(ghcjs_HOST_OS) - import System.Posix.Signals as Sig --#endif -+# endif - #endif - - #if defined(mingw32_HOST_OS) -@@ -82,6 +88,11 @@ import System.Environment ( getEnv ) - import System.FilePath - #endif - -+#if defined(ghcjs_HOST_OS) -+import Control.Applicative -+import GHCJS.Prim -+#endif -+ - #include "HsProcessConfig.h" - #include "processFlags.h" - -@@ -95,6 +106,46 @@ import System.FilePath - # endif - #endif - -+#if defined(ghcjs_HOST_OS) -+ -+type JSArray = JSVal () -+type JSObject = JSVal () -+type JSString = JSVal () -+ -+fromJSStrings :: JSVal a -> IO [String] -+fromJSStrings x = fmap (map fromJSString) (fromJSArray x) -+ -+fromJSInts :: JSVal a -> IO [Int] -+fromJSInts x = map fromJSInt <$> fromJSArray x -+ -+toJSStrings :: [String] -> IO (JSVal a) -+toJSStrings xs = toJSArray (map toJSString xs) -+ -+throwErrnoIfJSNull :: String -> IO (JSVal a) -> IO (JSVal a) -+throwErrnoIfJSNull msg m = do -+ r <- m -+ if isNull r then throwErrno msg -+ else return r -+ -+foreign import javascript safe -+ "h$process_runInteractiveProcess($1,$2,$3,$4,$5,$6,$7,$8,$9,$10)" -+ js_runInteractiveProcess :: JSString -- ^ $1 command or program -+ -> JSArray -- ^ $2 arguments, null if it's a raw command -+ -> JSString -- ^ $3 working dir, null for current -+ -> JSArray -- ^ $4 environment, null for existing -+ -> CInt -- ^ $5 stdin fd -+ -> CInt -- ^ $6 stdout fd -+ -> CInt -- ^ $7 stderr fd -+ -> Bool -- ^ $8 close handles -+ -> Bool -- ^ $9 -+ -> Bool -- ^ $10 delegate ctrl-c -+ -> IO (JSVal a) -- ^ process handle -+ -+foreign import javascript safe -+ "h$process_commandToProcess($1,$2)" -+ js_commandToProcess :: JSString -> JSArray -> IO JSArray -+#endif -+ - -- ---------------------------------------------------------------------------- - -- ProcessHandle type - -@@ -120,7 +171,19 @@ withProcessHandle - -> IO a - withProcessHandle (ProcessHandle m _) io = withMVar m io - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+type PHANDLE = Int -+ -+mkProcessHandle :: PHANDLE -> Bool -> IO ProcessHandle -+mkProcessHandle p mb_delegate_ctlc = do -+ m <- newMVar (OpenHandle p) -+ return (ProcessHandle m mb_delegate_ctlc) -+ -+closePHANDLE :: PHANDLE -> IO () -+closePHANDLE _ = return () -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - type PHANDLE = CPid - -@@ -201,7 +264,50 @@ createProcess_ - -> CreateProcess - -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+createProcess_ fun CreateProcess{ cmdspec = cmdsp, -+ cwd = mb_cwd, -+ env = mb_env, -+ std_in = mb_stdin, -+ std_out = mb_stdout, -+ std_err = mb_stderr, -+ close_fds = mb_close_fds, -+ create_group = mb_create_group, -+ delegate_ctlc = mb_delegate_ctlc } -+ = do -+ (cmd,args) <- commandToProcess cmdsp -+ withFilePathException cmd $ do -+ fdin <- mbFd fun fd_stdin mb_stdin -+ fdout <- mbFd fun fd_stdout mb_stdout -+ fderr <- mbFd fun fd_stderr mb_stderr -+ env' <- maybe (return jsNull) (toJSStrings . concatMap (\(x,y) -> [x,y])) mb_env -+ let cwd' = maybe jsNull toJSString mb_cwd -+ (c1,c2) <- case cmdsp of -+ ShellCommand xs -> return (toJSString xs, jsNull) -+ RawCommand xs args -> (,) (toJSString xs) <$> toJSStrings args -+ -+ r <- js_runInteractiveProcess c1 c2 cwd' env' fdin fdout fderr -+ mb_close_fds mb_create_group mb_delegate_ctlc -+ -+ proc_handle <- fromJSInt <$> getProp r "pid" -+ fds@[fdin_r, fdout_r, fderr_r] <- map fromIntegral <$> (fromJSInts =<< getProp r "fds") -+ -+ hndStdInput <- mbPipe mb_stdin fdin_r WriteMode -+ hndStdOutput <- mbPipe mb_stdout fdout_r ReadMode -+ hndStdError <- mbPipe mb_stderr fderr_r ReadMode -+ -+ ph <- mkProcessHandle proc_handle mb_delegate_ctlc -+ return (hndStdInput, hndStdOutput, hndStdError, ph) -+ -+startDelegateControlC :: IO () -+startDelegateControlC = return () -+ -+endDelegateControlC :: ExitCode -> IO () -+endDelegateControlC _ = return () -+ -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - #ifdef __GLASGOW_HASKELL__ - -@@ -447,6 +553,31 @@ fd_stdin = 0 - fd_stdout = 1 - fd_stderr = 2 - -+#ifdef ghcjs_HOST_OS -+ -+mbFd :: String -> FD -> StdStream -> IO FD -+mbFd _ _std CreatePipe = return (-1) -+mbFd _fun std Inherit = return std -+mbFd fun _std (UseHandle hdl) = -+ withHandle fun hdl $ \x@Handle__{haDevice=dev,..} -> -+ case cast dev of -+ Just fd -> return (x, fd) -+ Nothing -> ioError (mkIOError illegalOperationErrorType "createProcess" (Just hdl) Nothing -+ `ioeSetErrorString` "handle is not a file descriptor") -+ -+mbPipe :: StdStream -> FD -> IOMode -> IO (Maybe Handle) -+mbPipe CreatePipe fd mode = do -+ (fD,fd_type) <- FD.mkFD (fromIntegral fd) mode -+ (Just (Stream,0,0)) -- avoid calling fstat() -+ False {-is_socket-} -+ False {-non-blocking-} -+ enc <- getLocaleEncoding -+ fmap Just (mkHandleFromFD fD fd_type ("fd: " ++ show fd) mode False {-is_socket-} (Just enc)) -+mbPipe _ _ _ = return Nothing -+ -+ -+#else -+ - mbFd :: String -> FD -> StdStream -> IO FD - mbFd _ _std CreatePipe = return (-1) - mbFd _fun std Inherit = return std -@@ -463,6 +594,7 @@ mbFd fun _std (UseHandle hdl) = - "createProcess" (Just hdl) Nothing - `ioeSetErrorString` "handle is not a file descriptor") - -+ - mbPipe :: StdStream -> Ptr FD -> IOMode -> IO (Maybe Handle) - mbPipe CreatePipe pfd mode = fmap Just (pfdToHandle pfd mode) - mbPipe _std _pfd _mode = return Nothing -@@ -483,6 +615,9 @@ pfdToHandle pfd mode = do - #endif - mkHandleFromFD fD' fd_type filepath mode False {-is_socket-} (Just enc) - -+#endif -+ -+ - -- ---------------------------------------------------------------------------- - -- commandToProcess - -@@ -500,7 +635,21 @@ pfdToHandle pfd mode = do - Windows isn't required (or desirable) here. - -} - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+commandToProcess :: CmdSpec -> IO (FilePath, [String]) -+commandToProcess (ShellCommand xs) = do -+ r <- js_commandToProcess (toJSString xs) jsNull -+ if isNull r -+ then ioError (mkIOError doesNotExistErrorType "commandToProcess" Nothing Nothing) -+ else (\(x:xs) -> (x,xs)) <$> fromJSStrings r -+commandToProcess (RawCommand cmd args) = do -+ r <- js_commandToProcess (toJSString cmd) =<< toJSStrings args -+ if isNull r -+ then ioError (mkIOError doesNotExistErrorType "commandToProcess" Nothing Nothing) -+ else (\(x:xs) -> (x,xs)) <$> fromJSStrings r -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - commandToProcess :: CmdSpec -> (FilePath, [String]) - commandToProcess (ShellCommand string) = ("/bin/sh", ["-c", string]) -@@ -619,7 +768,9 @@ use lpCommandLine alone, which CreateProcess supports. - -} - - translate :: String -> String --#if mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+translate = id -+#elif defined(mingw32_HOST_OS) - translate xs = '"' : snd (foldr escape (True,"\"") xs) - where escape '"' (_, str) = (True, '\\' : '"' : str) - escape '\\' (True, str) = (True, '\\' : '\\' : str) -@@ -676,7 +827,7 @@ runGenProcess_ - -> Maybe CLong -- ^ handler for SIGINT - -> Maybe CLong -- ^ handler for SIGQUIT - -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - runGenProcess_ fun c (Just sig) (Just sig') | sig == defaultSignal && sig == sig' - = createProcess_ fun c { delegate_ctlc = True } - runGenProcess_ fun c _ _ = createProcess_ fun c -diff --git a/process.cabal b/process.cabal -index e8d07b5..b8b534e 100644 ---- a/process.cabal -+++ b/process.cabal -@@ -65,7 +65,8 @@ library - build-depends: base >= 4.4 && < 4.8, - directory >= 1.1 && < 1.3, - filepath >= 1.2 && < 1.4, -- deepseq >= 1.1 && < 1.4 -+ deepseq >= 1.1 && < 1.4, -+ ghcjs-prim - if os(windows) - build-depends: Win32 >=2.2 && < 2.4 - extra-libraries: kernel32 diff --git a/patches/process.patch b/patches/process.patch deleted file mode 100755 index f8e418f..0000000 --- a/patches/process.patch +++ /dev/null @@ -1,396 +0,0 @@ -diff --git a/System/Process.hsc b/System/Process.hsc -index 32ad6af..cd66d50 100644 ---- a/System/Process.hsc -+++ b/System/Process.hsc -@@ -8,6 +8,10 @@ - {-# LANGUAGE InterruptibleFFI #-} - #endif - -+##ifdef ghcjs_HOST_OS -+{-# LANGUAGE JavaScriptFFI #-} -+##endif -+ - ----------------------------------------------------------------------------- - -- | - -- Module : System.Process -@@ -88,10 +92,12 @@ import System.IO - import System.IO.Error (mkIOError, ioeSetErrorString) - - #if defined(mingw32_HOST_OS) -+##if !defined(ghcjs_HOST_OS) - # include /* for _close and _pipe */ - # include /* for _O_BINARY */ - import Control.Exception (onException) - import Foreign.C.Types (CInt(..), CUInt(..)) -+##endif - #else - import System.Posix.Process (getProcessGroupIDOf) - import qualified System.Posix.IO as Posix -@@ -101,10 +107,14 @@ import System.Posix.Types - #ifdef __GLASGOW_HASKELL__ - import GHC.IO.Exception ( ioException, IOErrorType(..), IOException(..) ) - # if defined(mingw32_HOST_OS) -+##if !defined(ghcjs_HOST_OS) - import System.Win32.Console (generateConsoleCtrlEvent, cTRL_BREAK_EVENT) - import System.Win32.Process (getProcessId) -+##endif - # else -+##if !defined(ghcjs_HOST_OS) - import System.Posix.Signals -+##endif - # endif - #endif - -@@ -697,7 +707,8 @@ interruptProcessGroupOf ph = do - case p_ of - ClosedHandle _ -> return () - OpenHandle h -> do --#if mingw32_HOST_OS -+##if !defined(ghcjs_HOST_OS) -+#if defined(mingw32_HOST_OS) - pid <- getProcessId h - generateConsoleCtrlEvent cTRL_BREAK_EVENT pid - -- We can't use an #elif here, because MIN_VERSION_unix isn't defined -@@ -707,12 +718,30 @@ interruptProcessGroupOf ph = do - pgid <- getProcessGroupIDOf h - signalProcessGroup sigINT pgid - #endif -+##endif - return () - - - -- ---------------------------------------------------------------------------- - -- Interface to C bits - -+##if defined(ghcjs_HOST_OS) -+ -+ -+foreign import javascript unsafe -+ "h$process_terminateProcess($1)" -+ c_terminateProcess :: PHANDLE -> IO CInt -+ -+foreign import javascript unsafe -+ "h$process_getProcessExitCode($1,$2_1,$2_2)" -+ c_getProcessExitCode :: PHANDLE -> Ptr CInt -> IO CInt -+ -+foreign import javascript interruptible -+ "h$process_waitForProcess($1,$2_1,$2_2,$c);" -+ c_waitForProcess :: PHANDLE -> Ptr CInt -> IO CInt -+ -+##else -+ - foreign import ccall unsafe "terminateProcess" - c_terminateProcess - :: PHANDLE -@@ -730,6 +759,7 @@ foreign import ccall interruptible "waitForProcess" -- NB. safe - can block - -> Ptr CInt - -> IO CInt - -+##endif - - -- ---------------------------------------------------------------------------- - -- Old deprecated variants -@@ -931,6 +961,9 @@ rawSystem cmd args = system (showCommandForUser cmd args) - -- - -- /Since: 1.2.1.0/ - createPipe :: IO (Handle, Handle) -+##if ghcjs_HOST_OS -+createPipe = error "System.Process.createPipe: not yet supported on GHCJS" -+##else - #if !mingw32_HOST_OS - createPipe = do - (readfd, writefd) <- Posix.createPipe -@@ -957,3 +990,4 @@ foreign import ccall "io.h _pipe" c__pipe :: - foreign import ccall "io.h _close" c__close :: - CInt -> IO CInt - #endif -+##endif -\ No newline at end of file -diff --git a/System/Process/Internals.hs b/System/Process/Internals.hs -index 9d2be0a..7e2a96f 100644 ---- a/System/Process/Internals.hs -+++ b/System/Process/Internals.hs -@@ -5,6 +5,10 @@ - {-# LANGUAGE InterruptibleFFI #-} - #endif - -+#ifdef __GHCJS__ -+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, UnliftedFFITypes, MagicHash #-} -+#endif -+ - ----------------------------------------------------------------------------- - -- | - -- Module : System.Process.Internals -@@ -34,7 +38,7 @@ module System.Process.Internals ( - startDelegateControlC, - endDelegateControlC, - stopDelegateControlC, --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - pPrPr_disableITimers, c_execvpe, - ignoreSignal, defaultSignal, - #endif -@@ -53,7 +57,7 @@ import Foreign.Ptr - import Foreign.Storable - import System.IO.Unsafe - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - import Control.Monad - import Data.Char - import System.IO -@@ -72,10 +76,12 @@ import GHC.IO.Handle.Internals - import GHC.IO.Handle.Types hiding (ClosedHandle) - import System.IO.Error - import Data.Typeable --# if defined(mingw32_HOST_OS) -+# if defined(mingw32_HOST_OS) || defined(ghcjs_HOST_OS) - import GHC.IO.IOMode -+# endif -+# if defined(mingw32_HOST_OS) - import System.Win32.DebugApi (PHANDLE) --# else -+# elif !defined(ghcjs_HOST_OS) - import System.Posix.Signals as Sig - # endif - #endif -@@ -86,6 +92,11 @@ import System.Environment ( getEnv ) - import System.FilePath - #endif - -+#if defined(ghcjs_HOST_OS) -+import Control.Applicative -+import GHCJS.Prim -+#endif -+ - #include "HsProcessConfig.h" - #include "processFlags.h" - -@@ -99,6 +110,46 @@ import System.FilePath - # endif - #endif - -+#if defined(ghcjs_HOST_OS) -+ -+type JSArray = JSVal -+type JSObject = JSVal -+type JSString = JSVal -+ -+fromJSStrings :: JSVal -> IO [String] -+fromJSStrings x = fmap (map fromJSString) (fromJSArray x) -+ -+fromJSInts :: JSVal -> IO [Int] -+fromJSInts x = map fromJSInt <$> fromJSArray x -+ -+toJSStrings :: [String] -> IO JSVal -+toJSStrings xs = toJSArray (map toJSString xs) -+ -+throwErrnoIfJSNull :: String -> IO JSVal -> IO JSVal -+throwErrnoIfJSNull msg m = do -+ r <- m -+ if isNull r then throwErrno msg -+ else return r -+ -+foreign import javascript safe -+ "h$process_runInteractiveProcess($1,$2,$3,$4,$5,$6,$7,$8,$9,$10)" -+ js_runInteractiveProcess :: JSString -- ^ $1 command or program -+ -> JSArray -- ^ $2 arguments, null if it's a raw command -+ -> JSString -- ^ $3 working dir, null for current -+ -> JSArray -- ^ $4 environment, null for existing -+ -> CInt -- ^ $5 stdin fd -+ -> CInt -- ^ $6 stdout fd -+ -> CInt -- ^ $7 stderr fd -+ -> Bool -- ^ $8 close handles -+ -> Bool -- ^ $9 -+ -> Bool -- ^ $10 delegate ctrl-c -+ -> IO JSVal -- ^ process handle -+ -+foreign import javascript safe -+ "h$process_commandToProcess($1,$2)" -+ js_commandToProcess :: JSString -> JSArray -> IO JSArray -+#endif -+ - -- ---------------------------------------------------------------------------- - -- ProcessHandle type - -@@ -124,7 +175,19 @@ withProcessHandle - -> IO a - withProcessHandle (ProcessHandle m _) io = withMVar m io - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+type PHANDLE = Int -+ -+mkProcessHandle :: PHANDLE -> Bool -> IO ProcessHandle -+mkProcessHandle p mb_delegate_ctlc = do -+ m <- newMVar (OpenHandle p) -+ return (ProcessHandle m mb_delegate_ctlc) -+ -+closePHANDLE :: PHANDLE -> IO () -+closePHANDLE _ = return () -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - type PHANDLE = CPid - -@@ -243,7 +306,52 @@ createProcess_ - -> CreateProcess - -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+createProcess_ fun CreateProcess{ cmdspec = cmdsp, -+ cwd = mb_cwd, -+ env = mb_env, -+ std_in = mb_stdin, -+ std_out = mb_stdout, -+ std_err = mb_stderr, -+ close_fds = mb_close_fds, -+ create_group = mb_create_group, -+ delegate_ctlc = mb_delegate_ctlc } -+ = do -+ (cmd,args) <- commandToProcess cmdsp -+ withFilePathException cmd $ do -+ fdin <- mbFd fun fd_stdin mb_stdin -+ fdout <- mbFd fun fd_stdout mb_stdout -+ fderr <- mbFd fun fd_stderr mb_stderr -+ env' <- maybe (return jsNull) (toJSStrings . concatMap (\(x,y) -> [x,y])) mb_env -+ let cwd' = maybe jsNull toJSString mb_cwd -+ (c1,c2) <- case cmdsp of -+ ShellCommand xs -> return (toJSString xs, jsNull) -+ RawCommand xs args -> (,) (toJSString xs) <$> toJSStrings args -+ -+ r <- js_runInteractiveProcess c1 c2 cwd' env' fdin fdout fderr -+ mb_close_fds mb_create_group mb_delegate_ctlc -+ -+ proc_handle <- fromJSInt <$> getProp r "pid" -+ fds@[fdin_r, fdout_r, fderr_r] <- map fromIntegral <$> (fromJSInts =<< getProp r "fds") -+ -+ hndStdInput <- mbPipe mb_stdin fdin_r WriteMode -+ hndStdOutput <- mbPipe mb_stdout fdout_r ReadMode -+ hndStdError <- mbPipe mb_stderr fderr_r ReadMode -+ -+ ph <- mkProcessHandle proc_handle mb_delegate_ctlc -+ return (hndStdInput, hndStdOutput, hndStdError, ph) -+ -+startDelegateControlC :: IO () -+startDelegateControlC = return () -+ -+stopDelegateControlC :: IO () -+stopDelegateControlC = return () -+ -+endDelegateControlC :: ExitCode -> IO () -+endDelegateControlC _ = return () -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - #ifdef __GLASGOW_HASKELL__ - -@@ -500,6 +608,31 @@ fd_stdin = 0 - fd_stdout = 1 - fd_stderr = 2 - -+#ifdef ghcjs_HOST_OS -+ -+mbFd :: String -> FD -> StdStream -> IO FD -+mbFd _ _std CreatePipe = return (-1) -+mbFd _fun std Inherit = return std -+mbFd fun _std (UseHandle hdl) = -+ withHandle fun hdl $ \x@Handle__{haDevice=dev,..} -> -+ case cast dev of -+ Just fd -> return (x, fd) -+ Nothing -> ioError (mkIOError illegalOperationErrorType "createProcess" (Just hdl) Nothing -+ `ioeSetErrorString` "handle is not a file descriptor") -+ -+mbPipe :: StdStream -> FD -> IOMode -> IO (Maybe Handle) -+mbPipe CreatePipe fd mode = do -+ (fD,fd_type) <- FD.mkFD (fromIntegral fd) mode -+ (Just (Stream,0,0)) -- avoid calling fstat() -+ False {-is_socket-} -+ False {-non-blocking-} -+ enc <- getLocaleEncoding -+ fmap Just (mkHandleFromFD fD fd_type ("fd: " ++ show fd) mode False {-is_socket-} (Just enc)) -+mbPipe _ _ _ = return Nothing -+ -+ -+#else -+ - mbFd :: String -> FD -> StdStream -> IO FD - mbFd _ _std CreatePipe = return (-1) - mbFd _fun std Inherit = return std -@@ -516,6 +649,7 @@ mbFd fun _std (UseHandle hdl) = - "createProcess" (Just hdl) Nothing - `ioeSetErrorString` "handle is not a file descriptor") - -+ - mbPipe :: StdStream -> Ptr FD -> IOMode -> IO (Maybe Handle) - mbPipe CreatePipe pfd mode = fmap Just (pfdToHandle pfd mode) - mbPipe _std _pfd _mode = return Nothing -@@ -536,6 +670,9 @@ pfdToHandle pfd mode = do - #endif - mkHandleFromFD fD' fd_type filepath mode False {-is_socket-} (Just enc) - -+#endif -+ -+ - -- ---------------------------------------------------------------------------- - -- commandToProcess - -@@ -553,7 +690,21 @@ pfdToHandle pfd mode = do - Windows isn't required (or desirable) here. - -} - --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if defined(ghcjs_HOST_OS) -+ -+commandToProcess :: CmdSpec -> IO (FilePath, [String]) -+commandToProcess (ShellCommand xs) = do -+ r <- js_commandToProcess (toJSString xs) jsNull -+ if isNull r -+ then ioError (mkIOError doesNotExistErrorType "commandToProcess" Nothing Nothing) -+ else (\(x:xs) -> (x,xs)) <$> fromJSStrings r -+commandToProcess (RawCommand cmd args) = do -+ r <- js_commandToProcess (toJSString cmd) =<< toJSStrings args -+ if isNull r -+ then ioError (mkIOError doesNotExistErrorType "commandToProcess" Nothing Nothing) -+ else (\(x:xs) -> (x,xs)) <$> fromJSStrings r -+ -+#elif !defined(mingw32_HOST_OS) && !defined(__MINGW32__) - - commandToProcess :: CmdSpec -> (FilePath, [String]) - commandToProcess (ShellCommand string) = ("/bin/sh", ["-c", string]) -@@ -672,7 +823,9 @@ use lpCommandLine alone, which CreateProcess supports. - -} - - translate :: String -> String --#if mingw32_HOST_OS -+#if defined(ghcjs_HOST_OS) -+translate = id -+#elif defined(mingw32_HOST_OS) - translate xs = '"' : snd (foldr escape (True,"\"") xs) - where escape '"' (_, str) = (True, '\\' : '"' : str) - escape '\\' (True, str) = (True, '\\' : '\\' : str) -@@ -729,7 +882,7 @@ runGenProcess_ - -> Maybe CLong -- ^ handler for SIGINT - -> Maybe CLong -- ^ handler for SIGQUIT - -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) --#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) -+#if !defined(mingw32_HOST_OS) && !defined(__MINGW32__) && !defined(ghcjs_HOST_OS) - runGenProcess_ fun c (Just sig) (Just sig') | sig == defaultSignal && sig == sig' - = createProcess_ fun c { delegate_ctlc = True } - runGenProcess_ fun c _ _ = createProcess_ fun c -diff --git a/process.cabal b/process.cabal -index 9898648..0a7b029 100644 ---- a/process.cabal -+++ b/process.cabal -@@ -63,6 +63,8 @@ library - directory >= 1.1 && < 1.3, - filepath >= 1.2 && < 1.5, - deepseq >= 1.1 && < 1.5 -+ if impl(ghcjs) -+ build-depends: ghcjs-prim - if os(windows) - build-depends: Win32 >=2.2 && < 2.4 - extra-libraries: kernel32 diff --git a/patches/unix.patch b/patches/unix.patch deleted file mode 100644 index 56cb3b1..0000000 --- a/patches/unix.patch +++ /dev/null @@ -1,73 +0,0 @@ -diff --git a/System/Posix/Files/Common.hsc b/System/Posix/Files/Common.hsc -index 586b417..1de76e6 100644 ---- a/System/Posix/Files/Common.hsc -+++ b/System/Posix/Files/Common.hsc -@@ -528,7 +528,7 @@ foreign import ccall unsafe "fchown" - -- Note: calls @ftruncate@. - setFdSize :: Fd -> FileOffset -> IO () - setFdSize (Fd fd) off = -- throwErrnoIfMinus1_ "setFdSize" (c_ftruncate fd off) -+ throwErrnoIfMinus1_ "setFdSize" (c_ftruncate fd (fromIntegral off)) - - -- ----------------------------------------------------------------------------- - -- pathconf()/fpathconf() support -diff --git a/System/Posix/IO/Common.hsc b/System/Posix/IO/Common.hsc -index 198b3f1..eb0f631 100644 ---- a/System/Posix/IO/Common.hsc -+++ b/System/Posix/IO/Common.hsc -@@ -298,7 +298,7 @@ mode2Int SeekFromEnd = (#const SEEK_END) - -- | May throw an exception if this is an invalid descriptor. - fdSeek :: Fd -> SeekMode -> FileOffset -> IO FileOffset - fdSeek (Fd fd) mode off = -- throwErrnoIfMinus1 "fdSeek" (Base.c_lseek fd off (mode2Int mode)) -+ throwErrnoIfMinus1 "fdSeek" (fmap fromIntegral $ Base.c_lseek fd (fromIntegral off) (mode2Int mode)) - - -- ----------------------------------------------------------------------------- - -- Locking -diff --git a/System/Posix/Process/Internals.hs b/System/Posix/Process/Internals.hs -index 19dc1c1..cfce525 100644 ---- a/System/Posix/Process/Internals.hs -+++ b/System/Posix/Process/Internals.hs -@@ -11,7 +11,12 @@ import Foreign - import Foreign.C - import System.Exit - import System.IO.Error -+ -+#ifdef ghcjs_HOST_OS -+type Signal = CInt -+#else - import GHC.Conc (Signal) -+#endif - - -- | The exit status of a process - data ProcessStatus -diff --git a/System/Posix/Signals.hsc b/System/Posix/Signals.hsc -index d4c6d51..cabdda8 100644 ---- a/System/Posix/Signals.hsc -+++ b/System/Posix/Signals.hsc -@@ -357,11 +357,13 @@ installHandler :: Signal - -> Maybe SignalSet -- ^ other signals to block - -> IO Handler -- ^ old handler - --#ifdef __PARALLEL_HASKELL__ -+##if defined(__PARALLEL_HASKELL__) - installHandler = - error "installHandler: not available for Parallel Haskell" --#else -- -+##elif defined(ghcjs_HOST_OS) -+installHandler = -+ error "installHandler: not available for GHCJS" -+##else - installHandler sig handler _maybe_mask = do - ensureIOManagerIsRunning -- for the threaded RTS - -@@ -449,7 +451,7 @@ unmarshalSigInfo fp = do - siginfoError = Errno errno, - siginfoSpecific = extra } - --#endif /* !__PARALLEL_HASKELL__ */ -+##endif /* !__PARALLEL_HASKELL__ */ - #endif /* __GLASGOW_HASKELL__ */ - - -- ----------------------------------------------------------------------------- From 29c9c90ea216f9a2762bed584ccf07b4b69b319d Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 22 Feb 2016 18:03:01 -0800 Subject: [PATCH 5/5] Document workflow for forks --- README.markdown | 73 ++++++++++++++++++++++++++++++---------------- docs/git-demo.png | Bin 0 -> 157950 bytes 2 files changed, 48 insertions(+), 25 deletions(-) create mode 100644 docs/git-demo.png diff --git a/README.markdown b/README.markdown index 21a400d..c74ce3c 100644 --- a/README.markdown +++ b/README.markdown @@ -21,31 +21,54 @@ removes any existing version. ## Developing the libraries -All libraries are included as git submodules. Most of them directly refer -to the upstream repository, since maintaining our own fork is rather -heavyweight and most packages can be used unchanged or almost unchanged. - -`ghcjs-boot` applies the patches under -`/patches` after initializing the submodules when the repository is first -cloned. After that, you're on your own, `ghcjs-boot` does not try to -re-apply updated patches. - -to update a patched submodule: - - $ git reset --hard - $ git checkout branch - $ git pull - $ patch -p1 < ../../patches/package.patch - - now fix any issues with the patch. to quickly get a new patch without - making a commit, add all untracked files using `git add -N`, and then: - - $ git diff > ../../patches/package.patch - - and add the changes to the commit (from the root of the repository): - - $ git add patches/package.patch - $ git add boot/package +All libraries are included as git submodules. The submodules either point to a +fork of ours or the upstream repository if the library can be used as-is. Our +forks have branches that share names with the the GHCJS branch name that uses +them. The forks' branches should never be forced-pushed, even if upstream's +branches are forced-pushed, so that older GHCJS's submodules still work. + +### Fork cheatsheet + +See `docs/git-demo.png` for a valid (hypothetical) fork of ours with these +guidelines in action. + + - **Add upstream remote**: + ```sh + $ git remote add upstream + ``` + Unfortunately the submodule can not be made to keep track of this extra + remote. + + - **Use newer version of upstream**: + ```sh + $ git merge + ``` + If upstream doesn't tag their releases, shame on them! Try comparing the + Hackage release tarball with their repo to find the right commit. + + - **Change patch (nothing to do with upstream)**: + ```sh + # make changes + $ git commit + ``` + Just like normal. + + - **Tag for GHCJS release**: + ```sh + $ git tag ghcjs- + ``` + Local tags and tags from remotes all live in the same namespace, hence we use + the `ghcjs-` prefix to distinugish our releases from upstream's. + + + - **Clean up history for PR**: + ```sh + $ git checkout -b pull-request-for-upstream + $ git rebase -i upstream/master + ``` + Do this only in the case that our merge history makes for an unreadable diff. + Merge with upstream after PR is merged just like one was merging an upstream + release. ## Preparing a release diff --git a/docs/git-demo.png b/docs/git-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed5d59483d351b44bcc4cb4877c69dd98ceeba55 GIT binary patch literal 157950 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%0D$b?y_h1p3wa!0XNcC8XnXh3>5{yI0soH zL+Qcux&B!5E{@K9glTR?_R@_Vw?-3@x51@IOp3uZkG%#6t zxEK_u&EY@d%42E`g8zyjp}Es(i>iu`1HOFuhbH-1IW;M@@Y zu0P2DGtx0uazAYEt<1@mp~Byj2T}X~<-}Vz7p%0{cZ z%bKIp{;y+Av>)aP%8FfqQAZ9vbp zR=nK@1(l2fLwQS8C5j}jS3@FO5xDg zg-wtv??kBe0(joDsKlkFRv&!F7;%ipU(oR7tXYYky^;1xE(g~GdVH)^#Xv4T;?(g8 zgluMOo_d)^Xe7I`*k)mSs2njXmV_5S%IMly*FW>`5RQ&k(W?fp$KH{ei^0DnUamHC zjf4Oy8Q`)qi=Hpa&la+lz^vITb=Qzf`Uu1tr)yx#V(=2sB0@UzC=hThDY3XHpzK+6 z1cfJ~x-i0ZwvEr$byysun+O1@8COz`z+PW69{uZEZxRit0p1x6wEXYZ1BK$T32 zs}T`&nzq$h)f+hxjycN@fM6VIIB#8L%1YD7+^wGgCbGA{S(s@DDmK9||G?J%js%6zk!Q|;u&0QA)t?>>gJ zPgZLMi;KSEYBivMhQO<* zw6^q%gpZ9dNhaNl-L(@L($-CXdbT5w zz)-sef)ODevLQnEJpO@DFo+j|4$Ui?LNHkjQ-Z`c8?H*w&{xI zBG>m#$*anT(=EOy6&dI+beQxhS%3~$DQ!j*YeXZe%yoah{jLYSx;uXIeWLbXBvB&8 zH~7ak3ywUUc5nDJ@(+2<4HGx-G@d(nt0h&ucaa_DaQBu}U21!55y|!ad0WJRxNQ_1 zek3P5Tg6}uNjC)gfD{K=YioeVR&p%w&=dJ#BXx?N4fhvQdmGXolPsn98J>=kC$kZ> zR6iq`nC!Mq9Xr<9&~Ps*!dmW@+v}GLUYBW1`A?aVr4q4k%y_OZqq*Im zpH@{&l@?^J1YaG;Wo5N0yoOr+VQ6iJZ5+`$E)?I&!MSU`x>TsPHUf@~4EgTXP){IN z5i^`;|3%*-f~Ed<^vz1@KhQVyve^GMeJfg~moimX_pH0TU8`@QTr=jvMoh*;QzBlC z%v_c5fE^0Keoe_VpN{v1tgXGghq{1C;vr+#A$$awm%BC$>kjV1l6)wY(e8W*uaW{V zlf@hw6jR!LS;O(>Omut6Pw0+Ob7NmuwcXyNt1Ro#*7}dR^i7#G<4j4WOB|gY$p`Ffk^y>^3eihfia3UEPFSm>QoosHW57Xz*a0P24<*RXg?_C zA>Y8T&hd(Z7|9Sd&<}tJX4kn4k_~`ZC1L<^+9d!(bT&2bchDbbJ&*gW?e7MQ+5tTk zyqdFp1E7Yaq$J?U^s#8WpzOnyQ_l|)X0Jz&LMPS5N+LI!B1vX;yO+}Gn!y^fk&n9 z!j&TCq)^Z$rQnPX9iNrDOr!*_Vg9p9QM6eNJ|aDL+j(a!_il)C3kvfcRmd97=*rB> ziX?V}tzPy@nGpN__;&)Ud0)FSW{z=ATj}=t=!@z#e#vk-`ik#4yJm+l;WshnJ^C%` zbM~Qj`ZCOk&X9v&MF7qHJxgXE~Br3Cx)-zh6uL@TopO zcZMC5tn(M(3yI8dBXd-a5Nn(Rp@WqRkTJlfn@Z&xX;nZ!*j zrj1=iT)X)8T6%dfz2tWGie8nh6f=0Ml}&2Iu|m#`xT>pqY8ux|)JX#)j()E#$joO^ zReEjp6$daGg-Rm2sgKs__&>W7W&Yt#bO#K1dtU%NGiRMtrS|A=h4-4g-(EL5Mh)1* zKaKkTrMT1(#?t>In{g1X$ke-pAdOK#UjezTwAR5<3^tgI<3YZ^R>X?1h8=0v0^oP z(Nc8z-j-_XO?M!YGUtq|nsbiU0#p92?{qGnR-G(Ji9agEwrA?{{z9w?kz*j}sdRpm zc0oKUYsCHw3e@NF^9 zv?K`;$U98>|?J`hb|ysr~VIRZ^qE zQ5RF;>PWES8?1{cgqgq5EHe%~>(0P(_F`$22;;^cE?$BBgA4tiNGQ#JC!yTM?f*Mxr`2NpzdRVXX!&{a~ zSNxoWsQC+iq299oO^eeQH`agH$d4T#EKQ+u!T9`lK3cztY804%i4yjV9!*?h`xyb# zNeq7&TG(J2&qO=>A;{u7`l600pF?ZJV`ZR@NU%@(!C|mM8H)|V9 zdKdP5gBC1ylx{O%TfJR3UX<{foVnMVnnow@LX0>f^89>or_;kzKD@<7 zP^mNFyfxlb>drwXehmy7+4Q$w9Fv&20M1AKf6TpQa2!FCEh^iR1s1c#%*-rn#LP?< zTg=QBvt%(dGg~;an3E4dkC~oQRd#oEXJzI&nTtQqQf=WK zE>Fh_f?Vb?L#0}7@%WrqvZp&W5}!V!hUqK4(u1u79)K|aZ?6R3zq}H4y{byX&QmYA zBmNdDJ&4qQd_bU?9?*arlFYGZ=+#R%4s*|&+2QWj4QMKFwf`m;!sq+0f%F)Wuz-y3 zsr~Ln`ERGe@uz=*Q|B0MV><{9t3EhxEfL&hIrA@h5U{mHTZQPmHLHK~$gdq%d9j)|>fwzQf;jgJDO$N<&AB~1u#zlvy$+GQm zq6F75KDHF+-B6rotq9BjQ|Qn68cx|{c>5nEv!$2n$W9lRbd-`nq{iT)%UA>JVhhhl zx4Xm?bdn4STB6W2|4*Oo6ixXdV`hy^iwcnds0%?D;1Me}EkjRFMC=iV-KGP-?^FHi z2JD!%F2~*7jv3_}>a<&mSRve*k-FW< z{;W}M8xPspW8tnWodf}rf(K zELC@ey)YRZ7JgYAO;9)D$k57-*U>!n)PZYjgmV{B{9}ahwge>qAR&mBvrk@*7i9e}nPS zXhFk=`qvb_rB>{l@B-5mugg7~tpX22&cG8mPNCatf%dWxe7A(^p>{Tn5uJ7Ku+hk64+3q5^`)(iR23-%yKw_# z5F-^P2}>7_##g9A0iB<^!civs_S0`)4CT=0U0k>#)!LNoV6zikJ!o>586y)JL=+a#lUnh_Cg8g?xq=Odm|~O0ycjqjcL-yvyg4uDbxW!lVjk_|{Wf6o z{-T^mYj}R=ZdA9G-u!lu!mqKQTxY|)$Snocv(_yO0R-XbS;%jJC}98arTaN^(r$EU z&fH9DAvQcsAu^ygR(*t2Z{bDKHU*dip;7^I>D=!4Lt@cS%2w(;7w(2u{~Nz6R(SRp zYU@a=h9UthUAyl|?YbLv%&P%yBjlI2S^pw?n{ob)?Csp0snsKzyU1-}w0^1IbGeVq zRp*(j&TaXm(eATYuUHyyKE(_Ed(NG$yf9~0dTxxhP-#~QSezB^PY!1QTBodf(^Pmz zbnZtk?6?9^Tuvu8zmt7SdNO|y;59M+*?4=-gWYm9=XAiCtY*SOt}U*8NP5I z1gnk~R+50wej$r_>WfK4ptt*_bPTd|-xA{%I$Q_mtPdR{ee(%LZ`aR$mX&xAyqSy@ zVsGkxtBW;Vbxx}kUf3Bi?BuB_yKiPz9s;Ip1QD=9mGFhg;t~3@<3`WfT)InM8B7v6@MWy&z2F$* zhw}N6QWJwh{WJji_4dk2{a1CN$c#OIJtw#f22=fa_2z{t)N>{7Nl%eyCX~R2m(n)p z5;h9Sr<d>W&n(32`QO2CuR%; zLr9maI$y$B5WD3!NP6z%*~mzk8$JbV{`L4Z{@qK(h&NEzbovzt|0XT@a*`ozt_5Mu zemo=#*xWr$UgWk+tc+?o*kVQ^uUT~G4wl`W@i4jm?_kc3R+%PSQ-#F!dTUS2OO@K6 z&HCKr_1CBUDvxyHNGdL<_11o{a--fKLc(KF08wAO3)IDG4Q34mLLIh^v#-5hD-ia;d%! zvH~odA!n@SODaW3M`2QzmbNO}arc?n2Dq?O$!e2ZZJQd~XSIuz;pT8X>$ zqlNV~kPZ0tJKq?2Jzm=#bKRc}XI3WEv_(+JH2djV zSPwD*^)YLzYf>ez!_;^p!*|-YL!S1V7tWRp#N1$``mdRzMk?KdhnaIs{|)9l53zCR zy3GW{KVunbI`2bRJC#L?TJ&<;`?*+nMe)CbZnwQw(#Gu7oUBPXWsjBPT_m)5-gVG# zrP}l;Zu6LKxPRbA*XC?DnVN(~0djb(v3z?tE9~0kx=7LaJjiqZ)W5>Km~ZXveft=^ z1UPG2iahfMVgpGJ7v{O%lU=jv)ht4e!JLlIW2dTpIaw^;8LU6ROB;>#;`O$8F;v}& z?=PC4lAlY)V`fVWUSVq{)&%JTDoBl%22))VJyqRe&M-N$N#D_U=2+$kZO;>7e<+Km zR-@iY$En2vsi(VJQ7`UjuD70|i#0OT5{(?!@(a^))2fv?ZAw#lej3bEqTx2%o5lLl zV$(+aes0*LD{Z04k)(QGbZM@_j{4-PEeVb5s84~;dwfl)8E&*UvnyH+Q~f*KWBD0c z%YL#@@>3G=DGZeGrI*w_9o{RtPe4tM8c2F_)*UkmyUU&Jr!p(TD>f0bOts|?sy**s z(J&7V4xF5vD8O4MB#`-UFEn*8M??Ij+ubN2zYMwIF>7L7+du4|m$rO|m4gQ>x;Mur z^3JWSnoB{KpN;*Yf{W|zPd`aCo$Lrbd zWEE1xSF^Bb^Alng1R8k--kpwG?^gH{XG!GN8t!7UUkcb4w6q?7_N3?4Q_9s}VYka{ zm{o>P1ypv|uK&aWG;(h_z4u8V8ESIcSv(Pqds!!Kk$vN7<{ecB`vMo<^P4&AgC1D> zPj}{Tujapeo4>#O3jqHgzWh&*{T=8(kN1Cm>>soLPlfoO_WM5dO9KEA0QZg8lz@70<1^i2Rq^J+TA+Jj)5;zaM(b$n^9T^Ho6FuXjSA5Qk4gAq2CQ zn%aCHzV~tsH4d{eY$VdN`F}!NJtwx+!UyX=ZQie>TYiN;KqoOeKvn97KRzuCK5^f@ zD%4-E<<1BR2pOzxK@vhlLKONUckm<7$iT_lTTb#6nQHUlnfP>cmGdsm{>)>q7ZwZ| zgva>Z?#q4ZlTL#7#xnhWA0f$mvA%l;7M=9P{nykKN*d@8K|**qtj%||=jUfHdjyt- zEf^lfKIXM9LV`cIu=U0%HQb&PaPy@=S;TApC;-O9B`0W9??|_Ul zkLj37FxoOhId5g!QBy8OpCJjlA3Q8aD7bN5xzdaE_-uYnL~FHLMp*o?o)azo3MZg| zOKgXWVvq+uW6=f&Mc6IPvGdTk>)xb|p$#AQ6nB2RTt|m0E=xQrCUd!!i;XUg^=(Z! zMy9tY-GrxTOQ;%BEH3GXe+%nOTpqa2Vs3ivV{-A}_&27(^zz4%`3nxeIg!t#poI8x zVV8H@THG~9TR!c#NPdT@o%p6VB(T3T9~uDvre^%~}EU6~hseM?D7`etSz zh{qY5UBX;QhZNp>tTwRi_LhU%F7t^xB&*xq0y1N(()VE+c2bt1Iu*x83v1kUd4BF6 z3A@MO`P!^zgLRzHwOeW|v_4Af)a)5c5xx@BT246O^Uz;D9@MgD0$IzDLkcEg3Lq=A`r27@IO{xLmGM!k?1ePFgr9BHav~kT%AKe~L&bj3Qyt*9w#VPzIQheOu~&>yZl)a9g1>M^ z3sbyCLqhmh6!E<=ue4DK*IPjZs_w|_l3aXpwJh=Fj@ub$gHy1`mDOuER)`7zQtjfC z0Ft1vY%NMTL!nnLy0Z^SqWnPT%B7iv+2h(G?i_FWFuR{gaE@^@@)ipH}Ur`JxnvkL*D?L8{usfXgV0LSXPXcxE9y|An z9z|2pP92o|xkD=dj#B>JJKdQU?rj*0Sz%&>sk(h*O>P(`&A#{c!s>=Id|qpoX zr_)T7+DA8a@iZQxhtnhL%+C~S#Sccb-`&FA(d<@^%sPrr;G0)xxa$`)8Q#l9g=B)>@geE2>yy=rNyP(Pp-WwNB z_kmuaRczqCJR)E-0#)<(-2^4&kA961%o-SAPN8n?#txypQ{TgPo9~s-M6BwtTDP@Y zA?n5>xb0P(v}tTj*_8YWTsmnw6>sXvoU5?LT~;%m>sb(Iq9ZkwJ z*sJjdTv@MBb}Rq6i6!)!xlF}wT`Kt4-UoSy#4EM zRXE6~-mR}=bvnI+lPo21IRbYBsi$PBy0_v|Hz}+5ghEPHj%O>$8VQ$tO=ZSq4-sRX zuLXk&ET0{Rkj$+~*(F)dYxq4W*O{-i%alv31oN6XFqxoRzYo99Ac2Ic`S6la5Chxy z!l{)QjtEHlan!2rH2Gj%u`F3q6_AQ&W7oEah>a`!nJb%^OdSd87+z)QWD7&38>O6?6>*5o+r>?CI31neF^ zb@$Y03$=0()ih_IOP=HK^XHY6VPo1sJ z(doz3;DVod@zWozCIjL%iG~v^@w1iRstT|xNk)LCvJLG)NUG8ySTa|SMQ(6=CI>@i z@u1iFr#T~is+GXI@w{_8{@$I?TaxEA#5G6emGp8oV;b{By$o#n_HuQrPT6*rE*%FA zrD#w0_S)i*hYsl(6yS3uM!`bz%>@kA;|wWTacp&Zd?f7bqJdC=>hsjNg=s=qjDzSM zY$ZXhkK{~U?NnKNI&tYz%l=eA+H=|ud^Yt}tq}DDOyu++Vt=T~2I>l))*bJY+jRH4 zvlVyb>%;c5+a6-I%kngtUgqysZ6g>&{tTbtXkD2AVrrPKPr_!n$uf;<&$>42D`BDy zwAc#`$S4ENWlfLQt{p>JbJjX9jRwt@OIeD(@MtU+Lkt~O!a>^=2i0S za#6)0BIhUvT;PFTjF+=228L?l=)+yBsAHzXrDB(76#@U|>lHmt$&U&JBd+*9oV0zu zw{O8dGnG-XO=gb=$y<#*7o z>#3ukL_Y$Dd@3e?;K-$%Qx*7(4@}PFH8U!*;HEizBZba}Mr+fv-G5bHvi6FvJ>mb^ z7-sKGp5EEFRCt~4!qK3`L`)s1`o8UH>1SmtqG036+S0=6sKUw8iF9eCXgupQP)O%8 zjA{;xrPO;zu0`$d$|6X)Xl+U6(fJi5X+MJ5E#r9`h;eR%vuCuLZXy*=f=|M9$-S3% zZ`0VEqAy7i;f@n0!Q_N*HXP;caWELRkB}{^(>tT-Hr*VK99xIH*zx4%Snr%Q+DSVF zdla=NKJAif@w&+!t#ZqtUrH$;!&aMegFPxcooJa0DifjC!_Vp(V`s3_y`cGG07XW( zf|Hg8dw)h}d7adJ>$OAhNj$_TS9;VPKTS<#XL|geh;Y+LIIvK~DK$T{i$9SO?xdxo z|Jw^?pe(&kA@i`Cy5r&bl3YK`Aq=XFnVOo0W9+U;E3}0ERGme+lJ~rag+2KogacF%uXbK1BN$XveI@b5dOufKmABcOb0$D5azKBe zveUI~?xE~V-PX$%(&lRN@+YdJr7%nezT3B+n3@pH1Si#5#cY`Nylx|#Wwau(-U)7k znQ^)7#mr-8Y;AX|MP~+=OJJKJDFbr$Bs({T6~eX#9nkeDb5#N@5l;ZbiMgnO123jH zey)#lF^LL+w^J4r*N;Fw3Q}3}VJK*(0ze(8J1P^QTqtKzGmRxMA~~YS;M2BKEOz5`Bw4;$NVk!@jde zeP%KWxoeMA#rOB3GqYQ+XE@KCuxcx@!RDDG4_rClo=7Bj&XJ@-Etn!8?|U6RH1vVDCIop@Z&}8krS|xO{of#I;&w7 z3y`WASXh|Iw`?@qjt&*!Q^>$RQR)^_rTbGAIrJHaRuk))&;lVw%$9FeMJ#0fN#W|= zbnA-m5c*spE}{^ItMv2Mw7Iu3ReRz^<=}Wn`MFQ@w4QG-raBU%PQmjiIifNc=5rnu zR<7SY=cEBL5OasdUGZgUZn#{HyPjz)=cR-{BXm{@eUuD4LYtw??G2%RXdi<3x@y|wbp!2cb+VUN z{qlG$8~@VA-$gyfT5*7^tGC(o0%eUPfyjS;z&gi{fmQMo>pVbd?2Yo5uP%ci2z0f! zQ6ETh3z|2(IFZPZeArmWh3nkTUVTyaAy`DTHrkdbYeUqUjY zP{#DHDz(pAowWTFMalh#EXNXL_`jD1f-^kLZ8FQ((VkFc>m5@@@qqWqbZqJ74VO%H z>Wf6!?u_}TwdgW7r!;~>!4$b`=BwF5+>oW`n{=mbiSmq6+OHS;+kE!;2W71&y8T^E z3zg1yVw^l}V@29A@wSNWUuNnh3tLi?bH2xz%eFP&$vmg2ilW0B7Kw9%~X!j$6*1JrYaym_26izzNl>O?ZX{0nIPCffk;51hHtwm|o z`=sP`5Y7>Z%%a0MqFY9;xz;7NZpO$-Y0Ij)YO{#HJbdo6-oL-UkHC0l(2n{8uGgBs zy`WKIW+s>CMNopWpu1)Q-I5d56H<{AAg`|^A*`8jXp!4T5sL7j6bcT34~X^Wa=L9; z8RkZ7M+m1EeoiZDq~w7}h~@k6&T&_aSqIVs`S8wWn&1t7W`}I;GNt-j!d3T-x-!?m zAXm`p7;BC4czyXovchBMm4P~iKTd`@$!?#24bJ5&>nt2%rbA&xlkqk(4$jd+K>_8l{S^PNS%7RPt;4!`#_Qi}TrSz|Du5rOSd~ z-5;u*eM%os;YM~g>nYz{I_g*RqbPFE8rIJt=!fd;hY}u0uaJ=A65~EGQ27xd>x7Ty zv6K1_aCwSq4#9jv=>#Sa`VShsre6V5Ti-3g(;eiJOAD!yrzX22xML->^ZeWsZU={q zPLilGd_PKOyfq1r{l3<26&EWzB-AeK0m^{kGbW&j#$&0UFib{d2tmi5ktix?D=jVB zuZwj6@J^Q?u3OAM5iM?0NTNKHZFcpC)nof`Obrfuv$^yd_3H1pM?IWnG{R=Y^C>5# zz|SR)6YQVniOR-55Cv9ifUYBA7*oR|QYz8-Z*<8kWS>dNOnVmP9*xHanK@;sTSd*; zmrYq3FJ`S@^?4T_@kClndv*+KODJu-kkX$bQG!T9&Zyugh_2lfaEgRfDD~;*3tcK^f)YQh+ezxS66Ys8; zL47DaDZkgShO*=G=%>y-scr;!if>^m=3hfq3{;MR*CZs@3-yZbv!l3H{ZQ!FWwkiz&GjUV_AtPsTB z=-5v1WeqgT?OW2@!w2>NJ13N&&!K$&%4sp1r3-G@8tDkgm=7=Z3Klbt23HAY&G4lGcD&cV7pYQwQek_ZINtJ#?OqS6kTA;XFq%e|Ny!5V= z)SPxXV)16ou<%46o}JORui>1rQ0Xe3jkLTM$?PrCDPCw*PJ%+pcW@tBYu8KCSeJ)lW;+~i7;JV5lf*kIn0v1 zza)D!m+E-(NQq2WFN_4vS2e*fb3d!oh)xaUGru?&S(yUl9Qf2nI<*{35DLDUj<|F;d&PmZGJ|3mOD>naIQs{|0c!6)*s&i&hwwXo>Wz6N;s;BCFT53Y)F(5;Z zLI~hrbf|q}6w(u7%|CZMMkDF{)TH#Bb#JY?Bcg$vwRd1I{f*SlX5h6jq=2NDa*vV zA2lJ5#L!mQ&`O_7Q%q%Cj-XLMBt%w&kqvQYWZA8SV|IPAF*6<+dgA6W5^G=Ix~3isFX>MD)|YQXPRUtxxqQH zQ7^JQge<6k6=Q*6PwVEWS<9|p!w<>p`AQa$XI)AjfT-TnsS$g3uv3d6zW}cMiTY+u zFRQ{8%Jn#{R8Fa_%Le5X4rD0M%fu*%5=N}CGF}j!MYrgjM2t^_i`imX5 z_1=}Zef>!O%lUQu_2uafpT+BBrH;*0r=V=>nvpE8GBKeNn5eE;l|?~#K5(Q25BUD< zJZIhdLS`r9wd*%xURemeqs|*{gb1inIi)LE#ss2_)lhAAO8;zqlQA2iAKW}!@gTnB z;^1NbdMA;I8JRW`%*Tc5FE(hbg2i&%S4y6t!v84_*M8?Xm8d4AJd989`CV|)q^AeH zqu2A!2X<;JWbh{XNE`&(gxb%%U!uMvit9*9!|ZrMiI+5&*lc>RXFPT!%!~O)mvz-m zkmZeGs9L%H(2k8+u5(7J*BMqpb$WHZZ@yuA#wej1O-{hLXg!aGvoI{7&|JL< zGlPS_SjRT|val-AV<39TDwRMxK8tQ+I16nnVFI=@0FeBFZs1g8}~O!)dxTg$KP&e zYUmujJ*+ln0<*>F3B*EP_4t~n?2}rHMUGF|pCH7C@VaQ)yTTwUUB>X-AHJ{!f%TE> zF|;#BA%}td(Nh9ipn5F9GWMn)WGNo5D-XHxs-H3su>O+Hlncc0gc^#L&okPXX@ns+ zj=&q3V`NhyPDHQPyXh+eZzDrMf-h2?%n{(A+Zk}8u$?Ya9SHtdJ zyA3mKeP2DI+e)sv(iL1@FrS9HBwF9F(cROdye~;ioZH|jVw}1^1cTdw#r@{B^iE`%|`G(k+rS}Y2B;@gQeS%Iid5zg2`;;Cl zS6EYfqVF;NLk;lS22`t#hzCkVx&2N0xlXV8R+79ocXn-0ooT0`adKcOkF?bkkY-#S zb0)OC<|&+O9g(v2yTar;1|-FYOJC5GOW(e$JJCWDX5ebwNZ{8rJUyb6o(L^LaqG|B zAMjn^kPN%KQ&Sj>Q%J)?e?rlL2xu#<=ZH=Hd`p5t=-=;Jz^OG22%+4@FfpFah$fHb zR+n9^^0c*{!M`s1kOR1LL|ElIS*sel8|~^_yGK2cX-0q98~e=OrGZ5#)wWjS{W{zF zbZ*+eG$w3;C$F(mSJ~GMoTb?>RaZ9An0wf>o}4RR@H}`mh%Ad)8s2K*euBO7P;|sS z;c}Y2-+Uqjg^PBpZKX6u>h8)YC1;1vwA=(URn;@~E*nWtN&P zUNSwY5s=)$07_d6duKydw~HH3+XtHO6vtd=ec`Z;)s^erOv%quF-#?AGh5r8Qh?!+ z5l?1sGrMzv?cqP>`>9j|I8Rrqj*in?5Uv844nNMmsM1_8RN}R674mRgk)+SNt_nQ` z-i8M=DttFlc`~(yd6%tY!6ZCRLd4?b)5q^#C!w0QR?|-dLFs`G@p}Y7- z3m%(?g{x~OsdmXmey4IB{zj7?`}0KtP<2Vr$|T7;=#~7D^$>Prc;t?0JA;}TtN&QU z_Kjmr(5NB3T?mTMZcopCdCWBpXnVhVFSzB{Z&<#eNncbAkJECwZ6rsSNiw(KbbPpQ z)w?w7^^Dn8%PTpsXVCn9sOM*mDdLXw$xU9y_68T5Huo?<%IdbSXn#KK&}iE9jCc|e z;7>DRK?i^hi4q{KmIc^vAAd|@_QoDVG&*_Xvh6+J9vF%eTnq4|#`uw(qWv_A#ctob zUQxqOCjd2K<>I2Z9M*#HK_^JG&+{=QMt2Yek#cg-jRr(Qk1c3Uoh!qqhhJbA+){wS zC;Yyd<=5z}%s+;40o1w1Ji%4?j+j%6o_?2Zem~;9idpI7K?qRtOD?3Rtu>sMKZYci zeZ3Rp1b}}Inn{e3og}>ire!kjX0pSby%8QsT{blrRL`}ueN!6=0wug6K!n0f1|-fg zFzBgs-eI%V1-+|vQW{)6!My7mkj3%GM3AzW(aK0La=afTU*4dmiSM7aOn}RPb=)feo13Gl6yy|Dr9z6#J@7J#_2!AK}7w%vm6S?+yWi&fMCHE~tukp~~ zds(VIj&wQ(FXcCBN|8U!azB8L{#-RXqVq9K?%qRPRl2zcq&G7+HyLSt&E)%N68HRAKav|_bqyAZ1(vrS9<#2x6Y2a9LV0$Vs7XgS?Mhq z+%IcKDKwqP>Z*JiJmlBlGoYgo_waC-fpx|(w`Wd>R|HmHwR-y1mY|p&Uy3sp!(E7&Ui%q ze&JW4iY)&0$PXjqgK_K58o@DPsjs3Se7h;9ovzE~l;maVu01Aq0pnoSztX9&FDUuShUq=%&beO^~SA(FQ%k`ze6Kgrk6 zbhJxny{2`=DSHDODBo=eGrqnJWA1mN{CvHIs##AxZC%ZJsjk#GLQtT4jB)x%F$zdF=H{2zFJxZ@#7!U==+UDjbx% zP-N+)_Dd0?>rmAF*I@?nz|+sp=_+XE+bB>pIHsu1jCvz`)@9*f2|u@^drG;jvX_p(&H` zigvn1nI$c2sO|&Jo54Ykkc{$!L#^wcpuT=*#mks@Q*W_Sr#@8dTDaZ_83jie|;RmD+Fh_fvWwP|PZ?^LjA2c;Llq&PbWw_gw1= zz%U~Q8j%MW%dG4HmxYl8p=|jxGr4W2N{5`0gN7LkK;^i27o5*cGfJKkm{UI%$08oC zEw!DEe*QETNBD4COkc`h#*vi_s$bmN@v_=3512jP3PPW!R;pk_tOD+A!1|w;{f7uf zD;)%(KS!p=p7e^7J*Xb_-c2MEkq+EYs_purJ~;#|A$O`EM3~447x)-9R4!t2N`{mdi*c zC+$^@u@sOxYfsBDfzKf3LUpa$EG&_rc9bvTkD3~}+$EFnNvARqulZ%dr)x--8rZc7pvRLu9TU3nIM`fUos1j z;d(2s%Vray2#MNab65hwIkVYyO=2T@=`ag4^W}@QMd&fJgYx;V5a^L_N))2hr*Nsl zI^xnlE;u0D1s5ptxKXKkh{QGSn^Xe&!@M(f%rVP)_$?rMV&+cCH&gr)UAbnIQYdmw zx)g|r{pT}vz`b@T@6tF2vo84p@)oQ$ye(;%_nnla^Pw-DwgQz_2fk9td{D1xZLQ-G zpHqrPYYE<$^hcB)YAz)jlzony3m5%VKl+i86jgW?ewg3@F5|dFMUO(=q{C2k<|8^U z3PVbGII16^Ffme=^Y2UMrDqnQKj^UJQXX@{2PZJaFl93PO-V{a-dAQFZ5Mq@44zsx zOq!0gG%2|>1or9cW$!FkIJxek3X+6Z5(y;BQ5DvFvAlSX5Ggykr`w0MghFpI%APni zw#A$^rfXcO9T|S9a0$J;V~raK=@lhek?B&HNfMZ;qA(9>H8G}8CX&{&Dk(W?9NHJX zp$+36vh5A2y;Bh;IIpn*nZe!3I@oEUkDd9~C)fENeu_WZFSL@-o{TBd9azn1$fGGR zHxoUmdt=gsii7vsT0G9zt`Iu;_Uyqs&GrTpt853>q8BBwQ)u3eg}!Of#5L3*hVW^x z$fZXjAED*2KipppjMM+#Yyf%6)x*R|)!-U$!f>^OtdQ&V+`D_knTnPKs@{KVBn%fF92V;c_9vxH$7@9ZJq93XjHDI4VKOYVIvR17&7T{G=3SNLz>>T|9w*8aWSy&}N&nuaJUaf%Lzkz!+W3q-~Dqm;CLA*fu! z-O@rOEO0vI5TG;h>9$}a;ffXM9D*4-Uj&qmLYAu}p8#}0(V&m9z88{Lk`Hk1f`Ne> zMgbt97lbX+#A37Ga`ZpsG9DyF5ACw@P=!t;!y*gF>2wyO*}tPh)K{XUnnfo=4bZ)g z+Dvu9lzWWbHRVZPQwa2sJOCZ7m{#Mw{Tbz}OT*1s;~M zxYM+|dy(WPR#)VcF`OT4M!JxjLf&wjGlI>3M%EcO#99!DQ;Nm9Kr9IV;8T<6)$a!L zq`4U#&Hc4zMl~|@h?qJg3N>-#&Sf53tDDw(TdZJsIhB#-evYPk!ZzQk9^adXmREI| zHpZF8l{r*G$td@$us<%P?}Ik~_FKqQg~sP8{opVx{)5q;j$;`53q^cg*nW$zJejF3 zPR7pW)P2=YIbVE!Ki)v5wKHLtB#BJmZi}$Xng%Q3MRQxaYhhY6`8(5+1~&!Y2U_at zM_T}##8_qpBbpX^c{+0A_4S0hpe~oXUdUxko`Tv~GVKQ%i&vTUK>dqqESmB+&Ktu#xeiKN zgTyThIy(P9>K`m*fdDm~v1ODJXYumP``6uAz`(%*!qeXM&&v@54JyW?(&5{i0#T_6 zqvA2nt6IK2t2Wqswf?TW>G0!^GC0!#k)T|L|4XZvO8=w~2KLjKcLK%<-`jEj_n;@6 zY^}@>&UbgFmnT1j)R!R0Uueg0cwAo|!a9hu<7%u_F{1c;F_nj33lFx`XdNrb`>upgAhOphO>2QhZb-o$#>7ld$=J|;%J@tqYyfUUC!jjuj(3kr7K z-@Ax&S&7r!U0q#WUYaev?~A~`OC^Wn$iA`JjFe7wDYEE1kQ}15yoZLSw49kM0WWCvN*?g$KgaOIeFaRIDS85 zU?IQvhIQcl{QS^S!~OkW&LEwFT)T2J%3u1WV|*MDggcMe*x4Z+(EEoGO9$GkkbtX^ z{3g%*{#RNdo8M~acl#%j{qLZl13umV=;ed1=q$>4jQaX6*wcjTPvfARAB3>`w8e}DL| zCVpP%O^fX+WEcpE+9D}Z9g>$4_tLn5 zdjU9F=W`dB!{e)yD%C|exi+y@7FQlOUR%W@r&xv{d#sS3*KM4?F|2$FEVlF7gQ=e2 z^0dNL&o))o8n28_;}Z}6x1hdP3g5_vhH5+VTp7dn02izE42U5a;p!b}oOIj=j{+jn zy%)bvcaPyV3NgjcGo>pTL446I-;SJ=2@^@%T53!;*ashYbL+n5feOZeT9&7{6p7_x zpU%!i+gpOG4Os;4eAmFNl6J`|eCA|u?rI^j15YHb#(tI@qg615|LI+l^W%ERMB6Nv z7_q-t3h^yJUSFO8s{)hD-SER+ly=&F!?c2-Fgf>u;G z?S}18e2YP4uZbZQH*xsJZ^7Y|mdN-kccyaU}Cj%JR$fmpX zey`F~X#Wz!`iLb{JvQH@} z1i$z94maK*p(`e1#|3H+-l0yFgfzykhkYz;d4Jd67yE}-1lrE+@`BT!e5T449kE%B z@@KikYr=djs1L`B@d8JYmUtC{0!AT(_%Qct8D;xM4LPS#&@c|IrK-fSG>t%F^bRo2!C8bPdn^cZS!;Kb zp2L*Z9hYcUQXzyKuVpTj_=N<~AK?21iu3OqU|hY0HuZs`F#QoZ680Bup^vK1 z1OMJWs;T|)pMi}dkr<0_Hwj|sdeWk$5A|LFMsYrY62Q>SHY-3O#cLPBPxjPg9Itw^ zD_`?&xCjhiWo_GmfN2czJN?Vy!NGM@(gRO!=0I!15b&#cA>lrGtCa7uiH*3QMlg`7 zIa-1v1pkT(R>!&KPD{p5ew}u=>)q%)$vhFiTm1k|m41I>AZ1rAH@Z=|)8!}zvN4TV zo!dl@H*?ul;Sqp_`QkKtM96+h=NBvFlUZGJ>Gh^iif4Q!L1z0ayvzl?(&>k4cn*6T zQ&8`Q#2X3JS|v!Re$r@glUf}dr;;xCadE4ix_iQLtY#y_fc& zo@w8x^U;H5TTj7E#OVV${Na0RvENQvkjvH`%GTC4=Z&3(B|It$66nDX^1On)xa5xm zS9@c;ApOn!r=J66@cQ4S1loT8UDE%B-UFiz1gHCkU}$LQ^H*7cG-BQ7|KJ4%=}=e( zdH6p={##2fvcpNmJv}`5>i**gbj7<9zQ3Qr#wGr`ZpQ_D)PKSpwiaOi(dVFFi%Od@ zv9Q>V?m;`0e(-;aWtofh^8DP|+S;N0#U0Ek?jO49pH#8F{(h)5(9}Xu*)`7GK^htn zuk3-^H_$q$CylRBgmi4X1qEc0wbq6(SWi{B3P7$KM8lP|t#5~|`{KVUP5IBw!LpCR ztR9pfd9&IMB;}HUoWj1P%frV7X)m2eF37Pc-X5(H;t&M|1==IS zQ`o;+LQ!t&v(vmFXi=%KMfT`jN^;P={t4DPy@ArIV{@Y z`>*R8Y~GQB8Da!D&v~vCRoqdGH{}fMv;52blHT5436LR9)DP3tdejr~7Ff>Ts#nC8 z?+4y)#jyxEGQ#VBpB&{`A$7zEq<(3%>^fnNTTd`P$Nhikdh570n5JzMhvLQEiWGNu zcXxMpFW%x(+}+*Xt+-n#4#nLiI48aD=Xu}nob&tgS3)*nvpYL-T{An+{NJ;kfK>sg zB{YoH1%*o%^8 zjs9Kc(D==G@}B>+#jw5JA?5o)r*)pr5O=s53?`{q?Yz}%!!H&AZFK`3KroD;UA9^I zvTm#MuEh0XKkH@f?Oji5znfm2>5HA@&^XPtE5wKX4e%P@_E06=vP%!MJ_hx%W7~@O zxdFGoVw7K;(89TDD<1aC1G46b{{qK4vgjuVYa;uNOK><+>zCdSpKj5319l?1uZSC* zt{2ytVKp)595YG3f7})C(KH^1h5jmJ`_Xb4h7ZE3x~EB6u5eq@?3R>mA8K*)Xyp8y zj@DlqD)8?!ij|9vGhwy4zUj#i$Zk3i+BtyW(392+Z6Qcv80^*%GhsLoeH2lxpuLwK z1XPKeE{i7n8v(1hXxF(`cZUACjea{6Wb0{&N_}_R3jEBVae&prA3C#f|227S?^s5p z`z2Gi;I%9=qRU)d<0}5_dK^2<>-!3|N5S)vce@(wM#=I`tEEeIy&vWEhf? z3h>*xjPN_3lDDUNBzHpng|PYJm@Qb+8bmSi)7*N^?@t>y{u}!8{V!#|?1@j;`kV_J zE0N~I4Ia1$?bkbNdUMC|C+Oz?Uk)OWBTdZOp^nC=j?(KvWzxs%NsR4$*z2Aw z>)F)01~isBVfO!2spM0rkN9>oO-)zDYASsWzQN9q(Iu~LXv1MAjFP}GL*KTlW3}tr zLQf(W5a_T8?Tl(}$DJ52-vSY+@dWhbgwikz#Z^<}ilq_rRaVH6AGk7Id_SqybetpOc1c4Zhg_*f*H~QL+XO=$k2h zF4BdR4A1T-Qg%v)EgI%z3EsKK1Bg~xdxt<%*;7AR)~t)$(XGlbh#dhor2pmu#8(Jf z9A?+0r7c-nq-U~UCOjpWP821W1 zvjwB(V7v6W-t2r~j9R3(udb%6{)sEi+2W<}yj9(#Bfk42%*%&G6uUQWi?6$a<4%Uo z^~n<3r-q++nw_9w&u}X{M^qniR9f*e)SNSGvMULnmTG$Qgjkfx`S{?^o>^ajr*+{7 zpc%MeOB{RHyL#S!CH7NDxwSGn8HRUfyd=c7rnJeS*!ea{J=@Br+ftF~i{Fi)Q{mj= z^p3BTiph#q;_W6Zl?KfqD39}6Tx4(}5>c_b3n$qh`9p7*t?7~sDgQO(v!?kqvyBDa zU|3=QbX~kZ$_&!_IrH(1pXUy>el{VYo;Q#wKfudr+kmVydPm_mPS?YqkM$(x$cHQY z)_+)zU$2_WGO~YgBj34d1$|h0_1-KmZwUzg`dU<-@7Ibc=gr?1kEVZ0$Q}f63ocF% zx(sfXU3M|bDq*~^utm!%&#HX~|412lJ8S*6ldvls!UKtAcY|lD@;++oEvm`mY%hP~ zR=q|nvzZ!6COxr#DDYx=a6_x@ZMtNy&!^V=I;CB!9W_Itwh@1|kW0jWL>zR=g@p5G zXSO;l1aR2dc_6RtCkfaq!MB#B!`3W;+DsXBkuIQ=zO!A52c-2>X{0C2q%8&3*jknx zp=Y9hP@}ZQSJ1D3sz!KJbtEGcNG6Umt)xFkNXe_hlLnvoFIyxO>$I`)eA3Oq`mIXdTD%DgV8D)A`Z<9QkA|95`qz0D|sGGqJejKAhbhu?$m z;OwG@$~_9|rD#VCz3kIyb$Ga2jXE~GNdU6nhx{-=nv|Q8?it^q>PP-gEMvjVarU|V zegx{cAr7-T7IEQC(a2PI2>CzSN{ehC`U3b6jn-g6EZEf7GcQ1H6fiM>Yme!PTU~QN zd4fnb3}6Ptk&y)#0oXo^6gv)CGHP4yRTTHD{sv_g4ve|E3T}6w>pGgdo%B8h3^a|w z#p6@sUiZ3=n)<$PK9UfQNUh(+erkux-gc$TU>2foxuc}N-QEny#V$kIy6CL$r3sxy z1(xUgSWe!TdluVvRI^j*pWcNfn45N=c9PS#zS@3!NZUyL-9c>%hjg@i(PI5<=r8HH ze&lYI#qo(W;UN4ic7*wuJqqGB$a5wu;C*>0!a61c(6=Wvpkz=B1_+ZLXFHkyeg@oo* z)b>j4Ww4)V8nV-3K1p!orh$JP-8qwWSG9<{gOQ7d=tlGyZY^2r>6lne=MjK^e-ppJg`6fOKv@6?=l!a zB(Q~5X)#N2zie)b0v*oRZm%*kUdH!>0Ma`qH^3DiPLF876N70~)?`_$@*MMAeEg>; z6^(#1{&RknK0s`;T`HMk^_BM5ap2*b>pk}clzjEi1cXxL)e^c0h z-2A?2THaG>h)i!UgX-Ulu6D-()u(bpEY-H=T+ZcnUPcjij*$dgcK6`tFxm^$g<;{6 zs-@uE?`O*+pOg^DzkOR_99BtD9$9h&qzSbxc zj>?Xz-{AeS?r=dzK7+E7PWopCX4FB5=$Vt=e*uKt_rhHUuLl#Gx0G6M!sfm4NcHel zud_{xZuP-pG-aL6%4;A(yWZuSFfl4x5@nbHZ-e_sL;BMxvLjBxy==u~?uX9k&E0a6 zN`s6hE9PfdwEdq|&Bw95Y=zbAU-VD!!={d8GuNV2*y%cGBEq%h<^VE5SXpR^Dxq#^ zaHRgzr;R=+hF(}t#otv69lvI?B7B2W9%P?S(cW}RPvEd|PLai8zn-hrlvKG7=@L#} zaq)}z7NQ-(CuTy!65wm=AkxOBL&%~k9`m!|cHy>7s_}=G%Ps3odpKPsjb^WauZJ=> zabl`DKt}tg@?lWuO^>5skSc7@g&3B*tMLwQ?S%ve6Fp4373doMaKjA4aVlG6gU*0+ zxI~^Qa7Nm_a5>9_BbJ}5LC|i$y9UDckqLSpub#L2Xv5&dLPO8%R%qYx=9=Fr;%68b zMwqR&%U8vX+$bT@ldv1bi9X5vWeOd%K8ZmHf5m_c7G%+Kk7vo{>Ry|2SM;s%J=<2c zWfEf{PDs-Jt+N*n?2jxpfhJL)S42g$)2ri$R(@L9Ew+ zFrwht=WzCfV?GtGzPBf0dWd>lLVvH`V*xL-0$F}xz6d=c^X9-_N0hgJB5_O1?E33? zNy+#<1!cr^QT!DsVCqtsPl{N}lU+F7*h)*meKd5c`JRjSjj=&$+NCZLPh;he*%3}| z5XR!EVGro!iFAJgOGtQAyHo`l^dhwTc)uht(+TetBSmrWkM-l%8UDj$7Q18V{HLaZ zs-@LvvG&LBKVGKM!S$&zd}ZBsIwHjL?q`$9S9jszMZuiPTWJRy(M1t1CCJagjE)7p z!%$r_rN_(Z?!QQq2ys4{l6%puauDDIjrBbiKNY`T`W9e;E+7fMIxF?@T%Rf$l}6ZM zuoEQSs(Elw1<=s}q`c;YKNZJa&`&|(g*HZ==pQdn`Cy1Q&NnLrELZh3d39TL%X0KK z)ge-;6qk$r-+-~`ug+iW)A!|5spq19K&7;*-<>YTYaJFCRI}(7Gkz9)yDmS?w*db~2iVa$YUU5Z&W@q0V5yD8V>w5Jg*h48%8~S)Bda9MOWoNXtVbDwe(T zL_E-&5^;X-=7Yp!yw}r?p76fE-(7|Vok<#_?kej>@9Kw}1bonN^03XJ2pV(qZ~|%t zSS{@_XlZ;i648cy$o#kJVeD*m;JN-uswJu&t9t{w@<*oHf-|c==B;5)7Y@DmTO1%v zMgJ^1?QBL^F}GKm^my$=np6ywSp0j>&->|2T#Z9`@s~_CeE!)e8>_^Q>0HZpo^8hI z7@P}P5c5gCEyw;7#B^1iWjQ2ob2zN4js(Y|ZnWuDB`#pWFO z>IW((BSogX2Fpo-7Hih1d;m77_nc!#e9Pob$wU&AG@WDR(Ng7?`uF6& z)}?wr6@&x?e9%1~3S%kT_H|Jo2)f@IxYLuD$0Q8_+TYlM4d1%o1@OoUSf03rKNx^L z$r1p<7N-Pj(J@7}|ASo)1N#rV9C0~5y2=lmF1_E~?f*1>j$$6^5d`8Z94x}eYgA#6 zO|%s~E_-xO>%sm-Dk)*%+E$3sdm;|%^Sa8?zL3nB9chU^{I~Srt(oSu?f;~p2aMQf zoy#6_`1^k*J#KCDQnPml7YUG$r>~weM{Yjp`!fRS*;PT{yPLjGiim&QWiwX{#Keja zyvRy^Jh{YFr1)BBP}vdJxV-As@lA_qenIWw-*ka4Bt@|Vl{m_4crndT>9p>yBwbxk zzEO3;8{o~4XDn8Z$refpLPHFW3FOkn#Nli6 z?R7uy+nc;x(kBoA6=@mpbHYs3J5AUr4H>o1T zyqf)e5yb6Kj(Xz@34(>yRrxJM{z-Vef(%)M;keC(ckJ?zq+<;Mk^h)XqSmxHIZXMV z-A=_K;jmg>Th8}L_y^crZO|q4+8k939s1dm*MDd=FQH1uxN2}5#;s=GhXRnk^Gikov>T{M@bgRVBU#OVuf@+u54987qlWKw>KD zA3^xjV0E6A%vMDW{tqUSV%p7@FPQJtyn_v<}{( z^-1@4pO&=mgG=wDq~T$1~(q5O)6&7#2?Yk+4W6^9B7GjP9!`a{fm z`l0(u6TgRFRqJ(o=i@g6R>jeg?HGdWGE`D3YO1zG++~Z~lTx+eE4>T|Xa2CfLb(e}-ooo6#kGMwx&)bZEs&1-Ahl2;+GYz+HVwv)V^?pU zvlJ_O`gLPuLcaIvVSo8hf~e)S4Xq+p+X~oaHK8M8ec)2f7wyPE#9n`y#=Jq!Jfa{; zwSVi^tHlL~1P2p?{iw^KY@M-B=VP|t8AK^s`si}wmfkyig z>kbn~!wf2QJY_XG3y&!DS%cSE>FjI3t3TGfo_6$n^}qd9>*;3i7h3afophJ^d5@YB zwS-?}-Mw}MV`0iC*vZRCGgU%IllL z0A=it%4^TsoCsb|i28dvp8IFBX)0o9UN*xEa~(uopHaa5OZP}&tv;hFlbd~)1jC!z zfmJQ=*e~4;vUhBkzu@<9>X#||(dKJsc2E{!$nxS$`^B}HTepHh%j=Ozak8bQU*J5( zV2y9(=xw6oUhe}Z18bw)TnR?vx@5+)NaqC!;;X!`Gwx71s((qX!!VR)Vu$5jYb&!QUU9x8rOV^s;<9yxVez*QyGJqTS z9Lz4M8F2V=o7#;OZsCLVDi2)y>FvwsSTVNPrVCVcr74EznHjAa3GYv|_<3pk>lIt9 z$2;XoV@qMWg|OK;*JvpPGGH+GgF<-ex8+dZOx(rZtG7I+sTD692N5Qy|J9zreyvkv(~E$RaH|V^<;-WyRx!!; zW5t(V1-F;QZk!nAHum)~{_W*?r|71QVxUAagPzCVD3Bd}hV0ynn3!qEhzSSr;B7az zO|&RUjco-|EAi=NGm4vzH^9*K)nqz=AI~TEhka=O-*KT3m`lBghPr=t4j1X`a6jaq0lA9O3}8fmdg6{puk;tf(o@ zx(}nr($1RwF?Q5E%9r_R^MwJQ&NTQm#6S`^?<&Q3lit7U3ln6``FJi+{mUcm=H+(C zf~Tnhjasr(Uz5rnj%M6{{8`5##sHo@Gr0~ge zHNH)Uurl+033wmPkr#(h?_abx1OeMPow$Fu1?Ojqbyw6_L;BV2#?Q&g$)5mO+KwnI zu)ccY)>|7J2@4B}`G}S5_7Cw}IJqe|955)uSVgNwQ|;9s(3uWNU#+W#}Z{hEmSwzc4e1AOtV2{&mZ8DLz_zimk*5WTwF!V*g>sm z7<^-W;laD|dX5oB@b{syosZzVT%A@7b8lQcbbWlrBJ>NJ+VJOY?UB~LbAydpmH5FK z`!afK(mI2;XH9=lzoPeJdA)h2Y^J9-qcktgSfJf$M&0go-P>dnNk;wuwj z^;9`2+&{C|qf{C+(s6T@Bfx?g`gL@@YT}30w_ghUWGNC&Eqx(`b z8d#a!^83_fz!)mi&sPikP2k(1pI8XvIOZxw+6`*O%^6?g*o!HHJ&xTpgiLn%m#HO!ES*3uIk-t<1S_p264mx>;NN|#_09OaM4qPZB^}Yg0 z(qT_g@v>JZ4-T&)8fPuPNpm84wQhN-#W@zFJBIVtI~q+rpP{K; zTQnOFy+}QRyg{uFE?@dG-e`&4<^pE)c(@iilc)w@>#meMJc(R(wAijV*-@c}$V1m7 z^y4QYJnA5X6wtxF`m9c$l;9G91_sAa`v}0;N-wPt)T-wVmj%36>XetO7sdLgHQwpv zBrx2)yDi*JKmI2FM@y##U?E+a(7^8m=&^OAMzte{jTxarwJvlmyMQUFVWiN4mLi@C zIxk`!=E;);3{1=cvICbxwZ%LG$smB5o1XvtV!K=+gJ7{l07~C%X)yx8gg>wLw#)vr zBPfM)`jZuFw4#Aao7GC)*Th9})Nuu8>gfdFv)ta#T^)MSq_fy8UK4q-pXOiW> zST60)1bnz1-36tqq^KVO50T{>20WSmwJ5K*Rxa3$dnXSc6zXN)8P0CTKF|=%Wr|f2 zI#znO0iUv`Oc%hx#%wXl1gNTLYUXzg($#0|&@=G1VBbwmEamQ7YIcTJ z7(*2{Q$cm9$Xou`sj-C4{(o&U$RY5PWj2S_o}o+>Y!v<=QA0tZ{1QO)7x`x?&B z;KF1AnK$1_ReM+o21Y|Hu`%UHd92d)Q;(ISOfgsBt@JI)pzuc4b>(8 z3Pg|>J~ib;-?W|(?DvzOvWJ(cG{QMABaz{|E76{)A^M>Yjb`AZjj?_l?)Te`Bb;*C z4Ts9E*3o>IztbD%>g(&7nLo8>5ag8zh)rDaghgM^7Y9|)IXvYF-}-lGk}>wU{<#$v zfNU*NIW6B=-RbjB)OhoKaxO;`(oR6b&sBv43l>roDj%O}I48a+mW17}1T~`4etStr zN)+5oHGpKRS@`q$0s=lXp~wzj(D*c)g(83L8ZzoI;MJd=ot5_Q<5u}*7lNBYb*W3L zBQqmCIo+G~!T$#Ym>DB_fn$kc zLt9cFb#ky&?o3%(*$j(#k1IAZANMUFD#OxJGe!_W=n4r5y5Uvkd~v*)8LIR4XSSgs z()+7j&D~S7J+Y7DOB=`i*@<*LWN?M6!)pi2!BX-`0L5KrG~S8WIfWEm>DcKZF~Z}C z_i@yy`WG^Au09CS-x3HI)vy8b{JMke&Q^ipcbMmuiW@kLI z`T0s&_jj+mY7i82wwQU_5=mpn{v545DeC#~+`QxyUfFv5JJBxS?EL&Z$p0*n&wOZg ztDWS=xZppQ6F@`Za=N?|L)hWRFF3oAyZqtPu*Wx3TVtSq(LV(K&yFF&h$8DxykX{M ze&#y6C1#*1!BpGdc=S4MqQFK_6GG>@KeLhQq7p5$sjyW8Bbn)JFday@;|9|onOnd+ zO#P3q3YhiK#u|f9_~7z-imkQ@D0I$}pwF6(zwJR(cJVhUtxF7v4lvSz3H3SoWAx9_ zh6&0KZMigYA%vBOyIdR-8#Mpy7FcY$;@)>RWm(vY!ff6pDGH#fVGAt0T=sl!Da?e; zMCH=@_xBoowNMVYH29B?k24v7!o$(F)9Cr%TmbNYtO{surT^osXPNZq(>O}FZ6o+; zY*hNE7OCvNvW&(tAq%Pp(?3n~o`RAj&Yp5e^pVg zEOV4X2!1cs66SFbQulp&@bEm1ELwm*->)Tw+z|^;#SM()wW|z#^OfDGPVCsz zQ=6Ir<9cWb1^y9#FYkO|d=PhRa?T^}N>UxSj#oW-|pC4?51Cr_%*!iA5qR zfC5b3E(BYQkg^g2mve-_JNcCPt#*szi(i}N`|ui?$bxQt!b_$|P|DC)RR{3QoSxJz zeWv!k%W5=vkC^ci-+T;8dORjp!q-bO-|^gN*G{OgaDEScOQ8!j`E_k&(eDl)rV!N5 zNFNDv{+Uy=;fx30`W}x``iX(f%Giu_WU~MF7|s}lIm!%iFOQ$ack0AI!ml>hzk}_* zjCVEWLjPPzoOU}~sb!QOE-@du$eR1Os4PQ}?YJpBNImwEyw85IOfPRWB-U&>8(Zvl z6(LFz%Z_zAR0afg!NMyc{#^-v%vc7hKi?kEwt1bAufD6I1< zM&LtT=z5PrMzf|_GL}LlJLXhAdWlLnV&wBm9srR|$?|yM4@PmPC)jxF;?fTPC*Y zrv!yq@+l<2s0o(mpDdK?t&p;?f5L1)9bVMKF&fBAg8LL>G0~lG6>NCDYB6uCC#G@gY>sC`D~()68t(GTzGiqafiMQy27dwI9G%SwMF< zKV07LKq#gcGdnu%+IL4E&)s}JzKimjQ0A7|czYU$JPBIl1}ypsAq#065fx`oS<$aI zXeO*QPc?zg{iK%F@*wz7E@4QB#1sUSts;grMdjyBYs9=?eTX(DkG`4rh37_1^(fh?ocV2 z^LY4uDNK&!bCXBGjM3gGWtyNSaW)mAI}15Q&lL1BvCNV3GoE&C1lL+| zDr{Qtyyy3W+08;wThrFt%k#sfwV9H=*9xW&XIPd~Y>9aowKzfEdN=i~#VkiE?uJaq ztEGHg^xu@n-yYzJ0Q#J}gQ>=(pOr&sz`#o46T8!tvoSq^>V9JlG`AW$+yj%f0hYoD z>cj&UBZ(ZGQqS$9WX&RemqUmhzFU$Rn4}+C@K@h$hat5z=*GKoY z*^Ek*%DbsPe{H%~c>4r4*5oV|upo1s4>QiGb5}BX>k&ns@XKs)?ytPyo!wFdwF3^) zYc!pt1bd0zdo;|IPpP0{HtwZ#PS<|omlw170XGTpeJ5Bh4{V3ZC)=`>rNt5EiN02> z*z`4VR{YrIyVc9lGkCrlMZ_l37c@HUUR}xbbSPoX)LBl1qEF8+SCe9>=Z=2W26-122p&t6@a7JhST&lEZo^5|*|2N;6FsEj`~Z z?S9h&nu4s2`Dfdy%)L-D6z-`~L6Gk1vR}j|&SoBck%+0n(iK;TXw$o(P{q0@zf{w(a%h{phS(~FGAM&kD3o2$_qUw&{r zhimX$wMt7Nx`&G9{OBLi@C06YQGJ|0F@M>7;qTrJ_f+rGN*L**QX?j%o#W*-g2CuV z*?-FSp~Ec#m%k%OrNsoDW4K|xexdGS9Z4@MKRthR{9xBI@N;5{^7jpuAXLPsn3(0f z-J|nX_&q7*tj7fa0}rA@>5R!l`N|J91T6}h4EfgEyE1~!jTP~*S49l1G-DAuN6=OD5cAn^5c>5JDu zTccnA$PsYp#obS-DW#Vaq3PQ@**!E^nWfDgR5H4%OVg^gRPdv4A~?qo#fe<-6a)Tx z1(HA$8>pokMMmA}Q=eD^a*Eyrb-j;YA*By?SO%%#naK_Fsl_ZeFneY2g-dh-WJm@* z?6RdaHJeds?+$gT(U|{njKEtq+;Z2c`tle@oN&8!?>$gueD3HH6 zHd4E^GbaTEJkL0RZefn=AKC*R;J;=APO_N!?SkFFI%aETCbLI4LUAS*kRACyRG>+w zU|!-G*!W)lz9WWoD@^^sHtlmR2mMoo`CMmsJ!gtM7krr61IsNdfWz-D;^xl9 zflNeo_a6CjD;USSmp-R)oFv6G#J-&U6<|f>yd{hR zUoLwcUS7d;!3p8~W@1|}G7hxd?O#$VDdaJ|-JPW$sbFQjtGI7>L0ug9;=`>maW3+M z##t`-D`AwRX^UwBr%dM-DNxH1imDi@RpzzjGeG(A%xKKtOAd+7C~Y1KM~iEtVk*e_ znRP{0kgKhQ$so%qq(h2ME;O>B5gWI83l;rYf6M25J9b&GE|LL4hs931lP4kOYxRMB zKk+#gft})yE5L3zb5g0-E3cvs-x8S2ico{cgfI$6bWdX|E)prgaMQ&FR**O!I=Oyj ztWpB&N56)1p_lTpl2zkG!l4&q_X?Co`>P3TzQRwFMS(OydH-HWi+00X6b`f_$gg4B zV@v->^Y#>{vGE9(cDFm6Ucq7R=<1w)uKkFr9ibYa%sM1|b+4gK9gHC$jRlud{vzp)O=m9OELY4R+}Cr2ZibUvGbWyTVxoggPQe&Jvas_H7yp8Z8!TZE}5T^W_5_hFvz zc)u~Sk62%wod&Mt?YHz}%>@{~fDIH6ZaCuKVtM9YlOZUEhd+3d5&{-kKI zIQw*c%O5Nd$K)05dOX`Me+>-R8B(auTx-T5I<_>2D!VSOarzGfsu z{6B{aV|DM-6=&)vg%IMq?DYKi=15BgjnLR}B9xL+%Gzq>4@qd^+WzSTb2wF@1HTgh zgy<60-Hz8|ic}i+tmNIHn&v~LnqVW#(`iV37qcr0VFvN;K`P9^Pd(MKg>dQuGv6pwJBQ8orBPMwC@oZ)MJsjU#z3wd3n_JHXEJF=EN*~mbJbD;T)ww3u~bGmmfD4Jnb6F17sSdk*Xu zCY^Kt(d<1V4Qt8t#K6z67h?&%Pra*O#>s#))7^HjwGDJ{I)JG|6&WP9kolFh7uz>C zT<`8yfh4kEni@u@{W-7c+$=9;MiKXU9YKAV&TXNxy}1ixEWP}RCiIyMURd2^kBhtW zSBWP~Xid#~W)qe>$QJ$tvf#Lz{fK%jx|-Xcjb3I{HBe z?8Z0xg563Vmld6~eqzB2K#;_LUHKu0;DS3!2Qn|^ozh`KPFmOP5m<6RG*RKRE6_{#v`Ik9q`qJQB{CISuFS9ym+ViJ6{ksQV{{g@evbN+_6-pc;dqJDZ1Bn; z#+$C??XCj>%o_5%D9uik*H+XNC|oEaDv5H>X2L3FFtKy0VzIIiw0qtLC2F)t|25Au z_g(ba9bk$^P#i9`p$`oOvhGX=1E2E!eECkUKIMG8G-h;s0YXXIoo;rAd17+{ z89YolgzKhY{Bl?0UZquf5I8KD-LoJ=!=PY*mlnoG$5!LEWR~3&-z)?~C6F(c7|DIh zYK!xiZi1f?3~z?PzEFyqZMiCaeE%^Jq&G+xI%|LNbU<8v7fLAAOp^Kokgz9`(4OfF zH}>Y(iJ#u__;7WxbFyPcX@({T*~@4Oj~RV&K}Nz=vO!tH`+6HW2C0XHv=Qi?=8C5x z7hDwUfqc?u0$0_Ef`iJ!mRCrWNcy1bT6?|6R$e~lO`@DA($~aWA+1W=P*;l9WEM*1 zj0M^acy7u^bD2jI$(Ak%>(U!qdzH&tIiu|Bg_DaDXW6o!0wrdlK;)!ePPc( zTRxZoE7S1^;PY!7z1&dEsp`@-UE91=RpnX9}1Krb~g8YjT z2#!q4WoD;?8hmK^!e}*6u%M%wsM6OYSfQ&}J^Cw0XST)RE1IQpBuH6+B3>zGY5MXh z@v8LKSiXw#U;+hZW}Hc0Bzn+;lF|Z14u6{g`x|kCbch7)AIl2k|Dan=k^jQqp!cZ% zp`ic%{ePh>#J}J359`dtH8lA5)1ZNWFmAU*_vMd%!RD$fy$PUPUos_0@O_~F>K2}a zgaHq%K{dQ5z8UI_pn-+K4Rq$hFs9!O5PjqA0{tte$Q6f35VnOryj}WUzR1K2uQ440 zE@0FL9f*|3*ixKWN<}(}f7eFB5(M5z+EW+ep|U)SpC*>LXs8W??K#laV^jl4$AQD$ zzsyM5-cohtvc0D4QiQ`dSpwq7`x@+68i$LphlvRCU1dnKCVfH3YWY#rI%8PlvFmUY$bP z;p%N5kfM;B@U`6d5s2B^JZaT@tN|#X+qGqeuaE}Jg2*xThdCi z2+M=pg4aV5t|)s+Hiwm0yOZv`MbsNQ2oU2o?+-KG~OsK)|iH4ilgH=Z`qfe7*yQG<-0Ouo-C@ z_xD8RQHrZ8KD}&Y@DfK`1Ep|SG*S?R{t0av1AbzsuY&ik0Y(Hn$1p@(l;lZrnG-%u z?N<&!Ap^?3k$I&bvMVQ0#GbU3DL7L(&*_JP$oW5uvVfK0_hZjTXnTyQkfVpGdI!d3 zm-I5Ztb%a&aIlbfCJrs1wh=WfM4%&Y1vOHSZ5qCwevVPmHb4^lkW2s)+Ch?CURP#8 zDV!UR1*QEeUKz(`mh+ZN#|HzGy-TGA<{U-b4&q)biX87`ejc?*XS7i%4@X-;Y{;G+ z!=1&Gl%F!=>hLr`Q7>8y>Ly%h=>Bp`)*yCpQbJb6(^J;t8$z6SqME!Hu6Ox+hYLld zb|7e&LCA^0lvcFH3t0(KMgZ1W6M4%GH$1bI39X7}B3mAbnNJwWLctzHg9T|N^O4sZ ztqZLqsi(mFwPd+Uh4I!iYSE^hs9edV*s~nl5m-X2yWh8kOpt&q5M}tXGsM0%ebLG*T^JV{HFpiBoPIY=A(o}rWFOOsnu%ex zJb^uz4{&w`RvD!tlOankjoaR(40d$8Rz!|~F8DjywIlyi_XLCdzPpq)k+K-jcJjc2 z@}tl7>0UB`4&}CKcKc=!`AvX7OIwwyZ@0Sp4la=7=Pv~;5zyv*DZr{(I7@ShPOyd6 zTZ8xa=)?Z5kD`VD$;L+H3_Ohkt_tz{1Wf*?$JigH<#{zF=_ucH63$tzyux3(+OiO0 z3XRg(!N5>weJH;nkZg1D#h0gsZ7V^MxA#YGN4F~4)FXt6e-V}gd`t({X&d!_pX8lw zlT?O|RqQVkFd_%zASQS2u(Q&>(dF=Wod0>Eq?2SGkD+knl9!0ctv&pk#uTcBv zpC~nza?0AoQr&;m?fLeUyVm<&sv@O>)Ew}bkgu%s>Uvu|f1tNrwfC#~`euvSTe@Y3 zK|kr+tM}uJPO^A)E-IJD(wF1Yjl7DYslrhI>owP!bbTsLOXG{?qdgM}Ftx2Mf>ocp z4B35;_ioU~URIK_3^5M`FN8`~=PPI;b=d3nNv4 z#oBuHIK)5%_1omfn{&Bdx!U+`VXxD!O~I34n9(nt+3Vmx!g-nChM~e@YJL`~;A<&; z>6U*m5#L_>wy?(wj6_Jzyo=JEb#cjdVUp(ix;f$S7{Cwy*g_}c#wo8X4>Y3J(I6lA zBE;C;Y+JdJSP3!x(D+Dw$;<~@wW%S$clXzFE+_R>FyVOSNt=lAh}ni#OhGIdTYvrL zBYFhUmIgyJb+ScXa=PHw?!0A@#_CLnG2hh~pn#CXj!g7{?6M^788(nKJyvs>NsDTUI0+1WhU`XG zNX_uY;=;&~Feu>SJOtdx)F`CScuCak%Bt{dBfqNn^ISr}44J&ZiDN^3boj-^#YZ1R zN|R)XSIds&vc0c8#v1qKPq0F*l_7!M4Vv9PY1Rx0Ev~QxBXkmfw_%Nyk2*W`(Fg+oaxrZdUq@G z{|)Q`zW)D!y-)-4vD4RkE@ajMQ0-G0i@&v|KsM<`GiiHEPT?pw&v3$!`x9S{NM(qN zNU+96^%B`9_a)(u_pjnAnrbrgqVkJk0wQ}%=*c~Ey0jrT8lhacF>nGpc(E8mR%;kd z4=f22b11^$H9;IjfYf}~S#sXJdJJ_CVi?zzEmnKfQIdQ8u$YyUtWIUVT zBX28BN_J0Gru*ul@EIY2&tDDav?Bc7kh;tA0pBATb#5u4*-vFUJe9OO_s)YlJcWH> z(6|Z*6i?sXZJ@}0&JD|tDl1(wLZrjyFGEz=^l*hvrjJ_Vd6$>nZsZ7uOFIhCNk;*u zIP%EMc*97RL?Zp+B=sm89>l@Pm%+>pDP4oI{OTam%!MNE)KPy-znP;m<@JH-FY$ zwETh^qF1eLV7@(p_rfc@Za&Ht07RXtafCi$qS;(fHjCoEx)ES-)Nw!{MhruIZzN7@ z_{vTK6hGZ8sw!cF-Pzf`AZ$y95HaM!gD$K-y~x5$0#EAa+zK4g`KAupAi~9jOT#d5 z$F3wSKQ$=$2NPdH5fZ&%+Vjg{UP-@uiQfeh!tk@_sg;kRdQ>mNE+np_$)O0~0B&03`itEX{k`tr_3YaQ5lT9uR zSt!4DUXoC=imfQXWFLhA<_`ehE;Ho`q0spHGn@f(zr-HoSflZUR$D0oK2UVS100u} zBB%|VkoYa-&f*3a# zc}b$r6gW!YyUzpLRQC~Z5af_S@pYD1I85JXgQW3|3;4}mk)0_pn&L!G(3L**FO*z6 z^2yfiS-WZ^z^}a1aJOTrEVB|>h=~m5DpA5}3)o$J>J$jBlUK@oj}PV#A(iSbpSzoB zhf{8!rN&r?PFf0U-TA8!RVSB7+C&)g-z&pqzZPSnVS+4~E;f%9Xe+wo%)=5R_hroG zgSTm#~AcIjw zRsmVGP&>_r>PpnmVE+$uZy6j%w`7Y7EU?&OW@c_NGc$w5%*@Qp%oZ~JUAfmma0cJJb z7v>rR2#%x)U<|Ep6)gE;aMa@Rj~1Z#B@VUcvbrCs8uLW93anokYMl8ORg2uEBsnVn%?N|H6kW3^gS_It8mhmY6Kb4}qaB7N`plRoBN8@ToUvKn=Eb zLy)c!Jwed$hJ2|FdIlxT2QNS*unVz>wYTBcp({XoKn*3lE+JnaFt$H1qx>~cX8%i3 zpI|!>0NgP8lPHQ=p(E~Mr4buJWNb<^ov8o#l7^#zGh z95n$J)ba2OguJD#x>wSe18Yb8Dl?_21)kSyzk~zppsl#|+i=qI!cXv?e9*Lj7pR3H zWr0dVuAR(i)do=1`cFeqC@ZA&y&o#L6L59A&T)Jd`_e`qe7duoGLtM?XG&`A2X-6# zQ%Bv!D-Z!u1)8?{H@tEXK7k77zHq$d+@v}>!WE`JDq(3Vq20H%zKG zC>+yj#F&rZ&>|fE)mL}LtzAj-!h1;L9`kH#Am7=Lc~VE0p9P`Q3r>ahy&S58ysr?n z@;JJ50TfBXB)JL6QBV_{IpyU91i3nQhzPBrJKnM&IM|%>(BDnGSw$OUE9d*INBD&Q z2cNNl{FFkqd(z7t6v!9}M>Fq=LkL$QyV3t;P<0)~^TR z%zLzf$oG_gO~D8a2ZT^V>Og-jlz)6BM_y$DUEU6p_YG8i&n#iEws!*+`h<;dQDp{k@8%>9qk; zwrAYQN^XGyiH`fF!H!!sLGRp*{sm?R<6*mD*YYPT1({8Gy&u;F!7uh)1l}BlBztQK z5H!<=Y!_83DQ1JBJL7Xl9EifkgvJtjCEdwQinsIH_KfYmRB|Ej0D(maPi+v!zMrW1 zn7etbdi%Z~*!WUSfG_^_{CCG7$0NTc8?{jSmbUCW!FUGxQz81op2dH?+z;pNs0l%l zUv>7?G}gI+)qx1Wcnu4Q;L23VZ z1IyAE(gsg`i`N3r9q5l7&ys60v_$KgwDF#b;DI7G?GyG-SP+PdWGGt|gdz_C-=h-o zhJCi&DRo3CxX7qChL`Xb?9U>#tRTEb-K4WjMALnPl=~ByOTz&R3c_{wMPInBk)URO zr4+T?p7d)lUjIsTBDyYAPy}4;MVNZ?XG(v)O?=T3-u%8$3l1_J=C64)4rGpc0zGPM z@Po83-!lXA@QUjw04l&2I1iuz7aK(^m2k40^K04!Y3f1eokhx#+p}duoZ7^UN(jB&m^t_{e z)jSwz@{YWuE%%9xDZpc96$=t8n4KG4fMyag*Yq|Dq6Zsf5=B`l$WzY;tr?w#zh@K| zB3R5fJ@|~zgSxpA+`{`76ky#+M1Z)zK=A$%J&y!kAkM7_g^sLI1PVSo3-V(`#E{>) zHbi~4>v=IzTRPrffEbGPKp1r$%ENu}{mYE_jO7VF0HqTQs~&0O3p||g`%B@sfrKJ_ z!wtY^es(Ip)?y?&#Q;*jV9P~W7{Jj<+|^J7Y1A4?O4Z8`y1YO_c57WY3P}k0&c@C7 zB+%2HL>hS-1Z1A(3fNN>Zfz%TPGl1ghF&=~68hKnmm!p%yo2W;$c}Id^Um#&}f#>MYJZ zK_J%&QDD%|M-r-`Itn&a%~_=g$>7_XHCd|z14|X+$i;u78rw2VAp}(%pCjvY z+vtCx+Ln<)_&J6}rPfR{KX0@H3nIhDCrAWd{&nmu4-Y+x8b~T~A?PKZ-ZlfN_{#G5 zsa=?%gBl;PnGNq7!3d!wR1_i)y~zVaFD}fhHMl^z!+)ta->Mqs@C?`=OR>ST5J$-`>S?0RrWN&giX%hUm_t)H=xe8(DPDCn%3CX1R!b3Yq zKyj|&6o1J$7v+m)>~sx__yn%n!3g;Aa(elGll>}GA~d*5T+eyJf^EYWA%%+lBfZ)@ z!51|KR_I|kd_Y77q2W$op*26d#MW|4K}AM3(U5v}Nw!SijC7xnoq+RRj7C16x!Clg z#F0~+?dT^L>QUeq>p_6Pg`oLBNJ;H0iPdZ*!)Ui;iK#28)(z85gCH@VVMBZ_8}`%J zj=MJ(?X6cV_(!o0+`-))5KtvyBS3BZ z8b-Jz^Z@1q0Qb-!MnI_-9i@Y|Y5SqMngl0!AS=a0CC(2o2#1h~voI-MR)zS(6{!A6 ze-MzCmX3;u$Y8g@21y?AU8j2z-(slM)te8Avb*{xk7)f1Ue>>p9e}{5?uQeDQ~q4t z0uU!IVQYFtGW;9V$#gmYW8IWv80qQzC~OFKWquEbSx9<(AG( z@WBEOZ-O6RL`^O;(1-kDTfawwKN^oY^ce~N&IkeiLHZ+Lh?Wb@Rt7UHkJ{4>t+uPD zFGZg9r<=BW(G6Z=?Y|S2;6j6Z#}t3}z1Lz%X+AvdUJUKMbYz~|Ygh*)D9_aE<4e-p zsMH;d9lJD&Lp^h3L~_ug%kNwS&CWb-Q7iZneV27z%uR6`fxoH;{9^vvGPNI7OczVx zQ&-T+mz2*J^+(qK|3jKhq}7&30P){pLO6`nPmAD=Hj3^rtA ztk+|B0FHZ$gcvA9VI-^#$JneM!i&Ra4V*+wb;Bk%@)UkpI}%wSgpP%4$&MaCcp$Djjw~ci{Oqc}Ytu={*zjNT z+J#NQUJGb~f`MmDcS9KVQ*|im5yo(HOGWkXFX)x&c(gSguy)$fYq@#585RjJSl*IU zA7Fsw@^LFsXR<`KKImP}`E(VQRC4uZ-JRfu@v(x!F$2fOOCisDa@`Fn+uxb4xhRr{ z@~>Dd+93!hrG*nQMHtqh7ti%^*ti>&enimQWd8vU4kD1@XEHIbiZS6a+;Z@e-4Li2 zn#8xs;buRinS@dgfm45G`yYu|5BUYVkN3hJN=RzSUI&Ib*4gWin>Db(om)V`} za`VR$d_%N;&w5rg*OWeB0={=zFl&diX;&6|XMABvfv7qUK-)PjMtfiP`akMC6XE{9 zgry1xIq$UJCv%-kjAnd&ESTBpxLpsUKiu?1bv5Qwpg_(L@VB~h4=ScC@n8pTvJ@p@ z()4nIRStj>m-R7*g~!+v?#CHsWxHO!8tb*BO0UCU9?A$Vg5T3c#!xr-qd4CgFG)`r z;uo<)CD%-K?@{aoqbj)dJ-%kP5*_rKQCb{a zvsuNFqqB8AH#f4W6 zxg^j?>g`BRvO;fuw3URUA(mdkEt+A&b6u&(+33aJ=R^FrDpRo{bYoY-%YY_O$Xna_ zyQu0j(X#-w1xODqEa-OY*xA7~zsVb;@;~sZVWzH9<#zf>yxZ&2afHx6DbI|FP=TtX z3K}W<9Mh3x0N(K$!NdR$opT#cy>PEQqS-QQ`BYcO{DDj=$zQX{x&A_-G6YknOS9gioNmk9PoygJ)TWKxgoV*mNEiQspZxrmmknx*$1l3XyQnfG)I(9E>iW*B$SHsI%bVhcV0p++eexmagHbRE6JV zT@_GCadr4yuL37bKGB5h&wr-TVjt6!pYZqnzv@#}oLe|WD3qRc=aQ&y$j3$lb$-8i zU4HE~Q@(B z?s?yxbo_G0=bqB9y_>d6@MAk=I^NsyjbH$ru<@-13jTGHSzncB2XTf&W?XR}uF1@= zAOe^VxtvSd3W@e_Zzxz0+(13@I!KU*xJ3tt%Kwa|Q#Ds~{?FjILTzGsWFb0ymPf~W zg;ni`Z;9xNs|-#vSAnmfLKg=c_xGcp`bnI8M1tLKU4v_-YN5|DYiZYFT7eab>~YvH zLv}Omrmi`g*&*#Kg-KD(4csA#aMhNA?8u?{`_fFlCW@Y7kxs zu^h?c_b?YL10x$-O-E;$Wc;KnCS21EGa;SYKkq7_p{s1XUBAi4JP9TMC+qw3BMpX5?sf z(ahKmHzZ?geX6)DR@9-Q-g-WEDhQ35qgWOkuO{tpvuT**tw6#Ng3{=YNG6{g#%iFH zo)?PrFT28cOlzNKBdW(>7JBXjUclz1@|!PgZ-|Wjbl=|F52NGw^C>=AyD#&rO?WBd zZk4vy+r8bC&|>s%_uo=A!F8&*9`o9-7lRUe?ZkB_wyo2Vk10|^Up%~C!{}Fim}GfZ zYNet&atG}3c?LBT@Ll$wmXgC-i)xEgEC^{AM#uCf%cdhcUn_bPbW=QNsjA7#4THt(vKZcdl|_zqmDCH}6|q6J<5!r;3k%Z>km;H6Ef3LEz(u{=RLSxgpT z|2T)Xt%P=Pg%TegVM?Q~{JCvgXLk8B6;96+>YFEvcyfZsu%wd09SJJkXkn8(u|Zr&h?zPw`7?`ejh8Az`cX= z^C{<_cvW_V1pm&@%cD_P%0bfud;j(BM}?$>%Foewzd)oL&G99NsO~1KZTHvtTg$S| z#_rUM5T`C)pcR|Dk+;uO$JHV<%1`&JVc9)A2oWFHSdZD0RWJxutREKq!P-t4U{*W7 z{Byelp&rl6YOVP9v(nXJfJqSiYdEAOQJz(Pvli5mgHoDZOm z=#tdfi%Gi3jHB-U#aceif@#PY6OlW)$eLOB6i0nq4~SwlrC*h2{Z($9Xa|6~>`6ZAtQ!Ob+YD0Yv+OrL7*R8n$jD`ngBAy4G*+c|0ZC93`4y@wLitx!WQ6`Ou8R0ZWEG$p-&pLcd{|cXJYEA@@FD7fgs)sq%sxr|{~I zQrXp}qkQzkBA;&qn8ZRQ6xsU#bqd>AEvIsu-t}ubflV0<*G2P7KidU%$M==uyOQ5q z52%f7cFVShQCpqo3Y$reWJ2RNlM~z}?#C=&fprOh)b(vILEzvQadGQehr0)D2*)3k za&H!v737mCB5n?LxhRdIjvFyW9+1w~FH$lp5VUy%yZ_oz-GWVHzz3Yk}DQtDTz^S;}^v ziRR6LWS*oAX(sUn&Kch^Uax;G?jRU1}hO^@L zVo>4LtP(P3g-(zF$)JyHeOD4v+#ct6ysT^U1Y!bkJ(os}+i)@8N~cf7PiiI5Tad5% z0PQg7g@^)!6X?Iqd{u2jQ{F=>;XMr^hn2wDk~M+mikc_{N8-Vw7c_HNa|RJ2L`R~| z5GhfMHpO(0)w&VhFFFfLdzd^e?|9j&itpo0lWM9LtW*7a=Wp}4%w!O8i17UBn@(Ar z4(nrxhHsh%v}bx%KtcXDI%>*DN}nz>@4je>%5eULiG3-}kLoGjyvr9xLhA(|V5x`| z7so+LuRmLC0epf3P>>NtRv2Pa{PZ!v>yCc=@+GtTK(3n$NXsQb9l%Cqplz z`JSgV03N%=6ArD3)LR(1e9S8e3e3TVg3A3S^3!kL)&7@!)Ll-E^2bDZ7{4^9P!jF&|Z8&a?yDIZyAxWv~+ zGtKm{KbEkAg^l}t+nOV5vj-aSxT7#$Xk{fPxB4;YvE8qK*paw7@?G0|b}CTOo`ShJ z@TYEV;@#^E4J^r_>+Vuc6~?o#m%h@g4s^h4;vhB%R}LhIM6nQS;GFwn{2U5wy+KMda>j;2>gdu7Pnj>LnAmqrgy; ztcY5;{A?d=d>Na7$xJOyQ7b}K&UStfac&QNefr%})slljmnIXjG`*F=Oc;abkyVtIXwUsMwIGXgmyPI)Wqm?IN7vkLiG(@JM;1Ogj8l| zaX09mQLunoqB6BGYY%(g1Apbf=a+@mCCNB7Y`;CKh-N>=0^MGVEIIsKOIf;bzjVF# zF|ZJe_Glf)U#3dKjWnGHp1X*T47eATmUBMV3ZqlWFn=)6C>?gUBaD1~EV)h}8?9cC zkq?<~ZUP;#wvTWOZZW`QOMBkCIsjKEmn)iSp{uFy;_!DT2gauP{qd=2Dx=>fnv%Nf zh^Y=_-}_aH`6Vfu1wbNbWIAgREuq;Iom#yxZUW0ttV*9&GhFZTy8md^ZwM1D4r&0_bYYl6W zifK8ttAy@3D%MLp_~!kX#hjuICY0iEBU81Ub#gxxbE68+&E?5as9rGonU4_t_im-m z((72w#A3TUc#F(;nspX)&c!j4@mL{R;b(9lr3iF^g5>!{N-nUn?H49u#4Vhz%vDN$ z7;VjAP-7^iMl?1nBshI8PprqGivG?Spvd)kx)wq?y0X~a+}~8|WsW^%T%C!`^>R6_ z$8ecQAKlj3bb3hnIp~%h7RnXd#_GNFcJ8)QjUVvC?k7Ee<&RUY4r~^FRXjcvp|~+n zgr*gWAofr+R_}3Xr`_FKONLN3PI;6l6;sVW#aNnXFdef3K_BJdqG+oxGhg{I(sG`! z;!;THZfdM^_>BhMZx|>P64QwGpddvp<+;3lCy+?ip$61|ng%|_?gW8cx4kq~3`cv} z!|ey-ZNs1ET~~`aukaUdji&zJ@Eo|Ow*8)8`Xdky5QfL^C~7N_=C3lb%riRd<_@mB z+Z%|F7jFnYJ!MadFGy<`&wKdd5nW{GFF=REdTbw66;-P(FCJP*SzVnyC2LP!E_X4rJ+FqmHUO8 z*`Zl6CTkdh2e|G5xMDMR^D1-|#0P^Rs2PHJ5%2sOlMR1v17*IR_ply6VxJn3%0GKO z7Q2@tfk;FCrvp$eEyy;moL%G1K-gigKi)s?yhaMkf85%^6*qP& zS_lmcwOaYtuI>0);~d=2N+$KInUbnyteSUCy4R}o?D^-4iGQvGj8YGlQ$SmAGbD)X zT9(M1;=aw;^k?=-qr`rBzJq&YN=+W4PP!P{KSfw;Zfo^SL@%cNlQ)DDXX|3mY(R|^ zMJE~Mp*Mcp^wrqmA1%O>EwI}RMJ2dJ%3ME+H+w}7u#pa~DLxnLM1XsZxLS6ubSooD ze&nS3GcxIfynCYBTz@VFP;XlJ=Q~k8@t})-lhyTrzkXntOZ)kTa&Lu3`4~-vC*kYC z37$GQmr&u6OV8fr>HW#M;Q`NR99GL^-%bJb?8clj!HcJl#1pLoIG6;8}L-kXg1>ezre`WU}l}Jygjwb|q_zL*0BoO+}ge z?^`oX;>g&`VObQ~Q#l@sb%Ms;wdbbHVS^O3(UeGF+Vr&sy_hGTAQ6sudb78yqxGvN zmUXW$Q%_-SYu{e!LMQC-2ji%FH5?NhPw2hVs0^VK>VJ460$UA|dSpe#pQS{^i#sCo z3)dF%t^ApvM*8rW7bOcd#-+T~5lG0r96Ti7e{61UZ^!GYQVFYOFzh6g1O@bSo2{<6 zYGn?kyF|(H=(M;w&$MkX!;xiWdQj|=U2r^>mdDaEyZmaOfyef+eHk0rA28Cxjj0P^=sh+aiwwFi2 zn2VmV$G451W1FG@lX*t!6cg@RTOwwq34BQ>TL}64`jtP7nAUXCGfb5XJsx&8y}N!R zI15cLVLzIE={P+ke-7pF`<`1A*Nz#@YYHi^fHt~`?)T^`M7a?1z%*2HH~Y>JQ*SsJ z7(--mpym)1uc&~k6sX%5jw@NRWvl>XPcM!8jF{WG@O0iyt=n@o-O3X0q_Ykn+_|x= z95vxm`$p?8_hVL=trjuM9$uNjR9&r7*&55amh-aMG74T(<#BeG1=agZ=CQ10qiTXo zZMrjxwZbYWfEApfm%Lz)S@nLl7-VFfth(T1cf7lj`qrH#3F%NFt46A#Z&39%_T`3P zMfY6wM*{N=G4FKKN@3mI4IXH|TqXqctR^LCY!~GoCV=KRjq(GB}bkM7$eaL%TV_qv!N5 zov!*VPlxMRSe+31czGRW3+hg?YB+N#e?Qv=_)N&A(4MmyxY>retQUN1ZGl>qsY`hxydPfp&AQ(!1aibv z{ws*!Pu}0(4-XH|U@;SFfd?@+cj0ci?`Ap$mHY*#aX zeEl;yO_azFzU3*S;q+$E14l&45Dnj*MHFxZH1tPB0hwi&$+C;(h2Fs_!)W#LWFSEg zHINCiB{{f^33((1HfnN5gckxXMDPo)c^&8Di@z$~z=~r*2~^Wo7(?n_{&u30U;+g> z7yEO91FR9T3(biH>}>)f>#ZaJ%nSTGex(2Vs5IF^)y~|XT(iVaD*HgjE~C0QPS2ya zqB^(q8FAvf76TCw$N~!j(&tApWUYA}0^%dX|4Yar3-EL#@`%ChR1c|>Mux~&N?})- zSLJ$WBs+_DW7dK^9m7DU5P6dZK%j*^JGCY@W=iMb?cCn;<4RFjw)bZ{#sK(mFV|+} z6!;H)w{NQMhEK+a3KGy06kcAhtRw#ODE9d&o%D=uRg<7zYG&wLeWY7M>@|A=1 zMvtmpDQMhTq-%9F*+0#vjN$G%vy!K=K}hOfW<1~LH#)7xU9z)p=nB_ue9wV@q9vF9 zzUi@w7*-U87Q;u8Da7*B@gNaC4ZDlHxP)6fQ;Yk@wr0!}Hd+_b7w4u;Vy=P%DOJD_ z97OAo#dlMD)lFXtty*mQt(N{qW~JqL|71L#P{c^lY0oH%e?p5{mZzJ}q@q^u2i9ZV zLcXs7@G>Lw?{NP)%`@CzM`y=7bD>n}qWyg~EV*Jw_U7c#9mkGFq>|$9`Iw+EsUrT} zx@g9<(KrL(I)%`U<+VFpW6*3DriQw?-D7wj0~6a*9Kl}MRTr`)sTWKO7mI8pJ1DP+ z`+j&ZMP&AKw~_isxW%l+)tQTS8Um|{GiK*OXVJF_`C5LC(#!GbvyQ3aa=#C6M$pSP z`vo2hcAfd9ryOCrYRTW3ZZ69y(kC-Gp(#c9!p$4!xW}!eP2nciMi!-U6N7&kYI53H zylQHRa#ZjJ#CEy1_sS`9RD+dup~2sdOyl-&+fU+TfR@n5!j0~`B{ExawdQ`reyeu3xn zu*vdK)m6@PPs;6B>hZjG`Z{NJHUXWyzmx&rn;T2x`>52Bxi~-~n~`33So^j4GCDcs za6eLI`=XRGR^x)c@96^m@+8TaKQ?@~*2A?1OmyX%H1_Vs{r4bQ+OT)Vv4~f_ z?_^_PV%m4te+1ZP2YQuk~AiM#-z|;$eNd4jxWzpNl&4sh_5|Mb)>JgVTJw zS8Yp}Xdct|d!CP35p|!Q*-f*tKe$*C@JK>sck9MZV(&TwuWr?n`WIKrgN$$sI4(WV zXu#K&dMnY!#YQ*`GtQ!tT2EJWKfPg(WNjEKU9(9E;i?(*(#GgQ8=3Hbcr7=kpi!gaoWtMUO$i^Jg>EXt<_YLk`YT*-R z9rLom{XYD0Tey6*x5IuA(ZF*j*U#~B=DrbX&B~lBZp;4RAiyAz<@8}hm1xi@?{h(7 zZx=`Vk*B5#uj|?7eaG$#Uz9p9mZ}EkN^g-=njstmYe1Q?XnKRc>g}n$=V%m=`j{qg z0VH#}MEKTITDW`q>>G@3ph7Di@OY~V#`p8O1km%WX9FW?LD2D>?3=nhQx^)E2yEW4u$8SyS`u!FQcN zN5h<)M0j_C)MN}Jt?l|-?Zi(fh6!Vs5Fs_BmeCMdQ=n?N!nec5IIkYZR!!snWbeco^opF}dnVPK4l_rk6qn!xV z6L{3;C=b!`srM*xS9Ye`?7N8}XDYGhKycB5c}5tBqJ>O^zy{V2&%rG0l9~|uMmGIw z=II&@91A|bJ>!kXk18(T&l!ry?qxjf)6&|T-!cFkEY z&Zi8qmyhRGk4D!-D^5>+B|{~%<;u-e8Z+zW8`R_N$=bw1*W21)&m;|9h*pxX&1+YH+(9h(0i?dW+RODtnN<(lP7X4anR@h{quV8$<8=VeSVg<9 z>P_|Q8tZGpz}X+FR=J$^+c!~_)$aWpHI>vFGqY;ZO1UWSM16im-TMU%*$EYXeT zIPgo|LaW{17SqVZV#SdXg8^+{e!_z&42ZNJ%`vOf%NA+RRtLJ>f<-p`@KUt1vd0|} z{ky!Huk&f=ElnXwEchWZnlRIv1*h(E=s7z?6Ulo0nuFui!|Pnmi91GkCXtR+AF6WQ zvv?)&C85|9aPe<`a?JlKyYSdYQ=UmNURel?F+A`Nbw+&wF+_5!i_%FZEEH8$29KYy zfRZ^4u*QHa{M1EN8NJNZw9Pwfc54-ZLm;|#te6!*2-0zs0lD6Q9 zx4qWNGr$&JIyi054Be?Tb|$!)Hnf5GA!$1w%dtbJ9n@MT>q=_5`t-`$`J-~8DLlNb zCb4-rcOIqbZ5jU7W~ax)k?~~locn{a zT+hcuc$tT$E@nP zAT0O&E&Qe<_tm&M%-@3RrB8o{vwrQtsRpe~W@lxeoE&2UTXwkSeAsM#5}tv?!}Ob2 zqB%J8!ac#GRMg&0qFI`&H=rsBAGT=T{Xj2CEiatf{IttPTdUExFuMZAC<_tZSBKwB z*ZH>+k zcCU^0JwFd!b=K*&F_hCr^x^uqC#GuS&IdW4);P(*Mx%!7&NjUrAGT~BMm1HzeI5bm z3ufzW;Fj&04{C z=N%u=BAD~;O?WKmf(i_E+pa_`1TEH~2-QcjhJn#bu&TPV*(61mnP&qb6co@ijD(yNY zeO9geZPR*q=8Dd?AIU!D>p|+Y=cSd7ct)7cO-oAEj2jJR>fkELcZC9C=0?b8T%Ht^Cl{*Mi5io9)z_%>{}BS5^;tgo#<$C(k>B^j&DL({1ec{8BEK_LjwOqAc2<5n9=n@fJVU{~vL0HuGfc5BO#|HK?v_+zsU|q`x6ei4H zd9++^VJ8?o4+ z=be)3^)q~L>QVDP!N8}~Jjj69^NU!*{O0}i`iQ@U!yQOu4D^|SjB_N@%=%v z;n9*R>L)ubH`%p*^QQjg0JOAYqGK6)4!8X`YQMTqg>1E7AHD1`r^d@BC%H*DFBat= zpsKAqyTv_R64MUaS5E$%@7D1Rd zYKgdXM`%CkSgCG@rs4@aX)e#Q0d1deS;dxZ;mwn}%{;=~FxACDCgC=UZUCd`%j-!s&VE5)r6E^3tkEyQ5(h9-qrx#CK5F)K;eYMifb9#q;z0eF~VS62t}W&=T174S zgt#Nup)@4Ffl&+48SW^9kxZYK0_u9z;aDbmd$`Tl!}T6I)?I~HLJ!85aLP>Qf=yE) ztyNO6@Lb>5m#)l)9HEnWK8J7oH7TULY}=gga4Jp3D9gPodv-29PbpTi_oC2qrb$s+ zDvr(tM__owi?E3@732kkQGw53TIe_a0A+oO zf(BMH`lLzh(!{~;#x&hT_|+z}f?Be;NXGM;1=q7Y3vCy>nFsD-Xd)37{CbA7H-z>o(Ta$p@S+sd77>8nw{#y-{41LU2yWp=CloiP&(ImgV4>}Oi2DoE@G;t3Na$xJo zP*vNSvVPk$zcNP+X)C-oQK3@*g&8&S5_cyQO}GDDD%;Am;Mq5ZsfN7udWKRZT1s&x zmkP7{;&;NQ4(SFq@U;L;lV-BMAA7YRQypTk#eb{sm7BhYX9=P|q~Vv$Pj6wFCN<-G z_By8=P^VCfb_KAVGaLS{nTW9Q7TE12pcK9ChA*PHkZk?@J$MZ<{bdhRX5j+Ar0Hk+ z>>=p^TS_sNe4~hH0W8<@3;{F`fDdhj{4$Df+q1mF5m_SMXAzBD0|)qSLF zIa$aSQj`)gG@$`}&urs5o|nqgiJ|#4R!vFSPaa2#shukIiA{KO5BF5rLsa`e=L=OY zkgZd@y7F~G_c(|X5Ea;RULI~ww)-l3_04p#4YeN#*k&uUk}?7yg|*Zah{S0Z|jEZl!q$#-O*Hc5uOaLQ}MZ$ z;JusKwX0bJ9QOF@GmaDdYI0{~)p=o$k(x}!x5%NSD(CS_Rfto2Qut7a2Aj`JY5GJp z%c)y27EyoviE!vhtw)bYP}8AL`Q4_YLYvsVLqWwV#sW(ejy$a^nSy4f$Bs@-i?YR7e#X@iJ79PH*c)}oU4?D4Sj z*$i2L;ql34XJymaoBgM)!28N2yp=(Fq6+=r$r!TADhtz7dt7sLe;mhV?(;9>`OHOPNF$3S zdY4%xx*{^7U%7PFMpg*r-AHMpby_`CHJ9qcc=zr&oqLGw#`r|_I4-MPoFDDbz6&zU%4#1t4s~dG>HTlU2P)R+TT@M#& z<7LaF!wecq&l~2Z-SG5et-S*q{mCOqCQ=s#Q9N0z_%IL~a!&F%o2P`40PzWc z?_6)YvvlY91kK2WtgrH8yUfBlinIM5G>fIjSwMN?Fm;R#Zk6*@BsI0()0<{$c;Q~B z!@`$|4ix#!hmkWoSH9{J2MrSl$Ku`T8DXB(sDxa3h0)<}rgRkWxEnoskQ=r7(X~gX zbXQNucNc;6{BX>AG{SJ;aR%?W%qXL{A*Qu!d)&FO+rZx8r3W^P6E zU*^x{F(u~k)9-g-b9t6QU2mR5PQE2pzdUw$Xrvwd)~6tN778f>acrmBC^GE zhR`9;>0fR-;xb=e&eE)KDf4U??v7Bn=3O391>Dk$r=*}(8m)Mk1FNkkJoQICqwY#2 zlqpp;yqP@bKs?Y+e!mMrMDM8{dwM)n)Rl#hfm9zUc}&K0(+~NaP0;m2-RF{tN+4|p z1%d`oYbE$#mbZ4X@9yeaY%XuE&E)iQoZZB;wUy0$d7`Crn%JhgkW<^fG}a|9nn%pFg#nt6OcjxChPLM843*YCCWdiD>cJ35bjgkJ*0?+|eU5RIU z8(l2<#liWa`u9)P?=#vCtPR_DyW=ANe^ZKD5sBH^xZl1pIUUH1wt#|sDv$5h4ZVxu z4}-_)Y;(>hBY*;1Q+zT~2ZMlIW$45W3mFVho3FPsIy3 z19?6r84wV2oRTTP2!8M-{9@DwZ+F@^*a5~8!PalLkHbH`5G+p3oV8V{=>ZjjCW?&*p97MWpW7z5Kqm6r*z8$`f-jV&bxey(QCrA&~|}=J@ZEVf;DpB+*z? zg<#)0yUS>fIegl+>wtEL^>;S@YNhFguTeSe8sIe(iBN^1`ZP4iGc`H;d-*d)%;~r` z(tyth>4#7gX?~ZXD26XbMlYZkk^Gi{8J^Au$@(>Dob*rJOxT21}sdHp|uIm`S7RvXTaE+!I4h4p3a*Yz=uZ6|G018-`gk*s(f zUiW2G->Ayi80fA2lr|mA^Xw)W@6}}g;VplB&J-$VpyKOS%-Oy6s|rW+Khr_nyk*gd zNAIAMA!~50b7LuM@+A8{98y`ljQ|eT6tvWXXUE63$I^f9|5{UT`Ix-IUiR@nFk9aI zd$peYatxWz&G38qQHX*Su0#A|i)z^3q%ysYuTx)@4hiV>UYF!+>4y}O$v2}7kIVRf z_pO4l3t10;(sML4v<|VMriPLqF6=Z=&wQBuuELuer-x}|LcfXpAwahrQ`df7=Je9P)a;c*?wTAmrMxw zY0J@|lm&Wm_xwM!y=7Ef-L@@?yK92GYtRtf-Q5Z9?(Xgm!QI{6J-EADa43SmO1{1K zJ@37H&X3#LT|cR!YStKQ&NXKry^nrVKX-KNROuo6o9(`8{4J$unIegMp)cKA9IRDI#fba*iU ze)pOc1woe*(zd>GVNZ5>oYcwLedmBR<-T>9bABfUthFpUPbPJXvMP!ZOK{cwed%X) z&Z~0d3AYhZ+mWK4BXGI`=l$f7Lg}Yu650t`%VTiPdJf;I^xu}9wG}NNaRfMJroK3A zoF}UB^_MN$Ey=EtM)mb87jKPxr36z(M&e%Sg>+AQXdJwI&Kho)#z5pveiW`BtF882 zX>i0cBpQY*ndDx}{Rpt?ocNM~6-w~-E&e`{i|(aO?GE@!*d<4t_N8mx-@aQu#=AOK zdtdy{dA$g>^$unHn%#TGzB0W&AwzrDpP`_;k5shOsfVSD*<(FH@(`EHrIS3`$_PauljL7{>L%3TB`LRv4{XS6;H?&Xa z0Vd>PVdxf`wK)NpZGC{mJqsG78R>|EkQelXt2j;f?eghPX z3Kc7J?b$e;eJR|Z){ShD|6H+K=m5$kxu=Op^eet7nNoC5KJMp>4g+NoXZI#NL--Zz zpYV%|e^&-Sj6|YyrfVH%a&l6@cH9H}uzRLdcJ?;=^75GFY!kOTt)#)px3%+bso!R6 zE-@j}_JByMI**v}EAGbFa5|qmweEdv=ntRMz6yt6k3b6d%vaTZc6(OiieC$PE#P{( zDS$6M_W6^|w?K%k$u+jVAA5F|`R}EmFb#ipCtm%sMoBXCZH`0ij1WT&*zcF)PfUr1 z$Ux^E2w1&WoB66mi;Q`AnAasxJ8bQ*_s3N+dXFk%stl}nag`*6(TY4`U|C+z_*b@R zL(&iRw((i5g&93{tUK~7g&Y@?v8c-@gdOnqJ308piwrP=3l%pwbBZi+ESh~5$!Q`- zhA|co7oCG|Jgt2ds;GK8YDrJ6F!y1;vIe&bZfw1_Z~k4>fsaK#{=O4+$BF~_CxBj! z`d$J3l!qH%;63=dII&Gq81-QCcae@_C%)dsPtDHJaki5s-6-r2 z+OdZrcHLv)CGY`!m>udZb|_cAMorpZn^Vru*C zlpRBiayDCz^iB1|6-p^$_-m-DVW(|Q4Me^J#JYf!(eR*lFS#FXXV-yW1WNL}rL|b{ zr2owpMpmlL_)!urLesE!I~P?62dQJ0n^*h@VUG{>qA}}OW5WZ;x1p2!uPDJnJ$&>2 z;1hVX#dlYFgl;wEoS(aJ>0q`ZsQ&O!pC@uIv}!L+geqtx_iMD}%HEUyHU5}!zhuRv z+v&Y%u@)}QbSBKOp_IZQZpK4*FOG(eTA#@Jpq_x{*T%WYF$LtrU1ctv1k{`~+GWD} zBWOnAr>waqr#n~Vv(Jko2?7d6L3+OBPKax)oBrV_g7tg%+U>#VASy=P|KmZ@A_C`sBFlzk zxCn3%c6fgzHo|%?{r;A9x!_;XYtE{msU4v`GoqNe!B0K)>)aYTyAbjcj^M~?YgJJ^ zkBQT5Yu@y>=I0P%?VHoTf+OeP;2y-@#|jCz)*r z(h4YGsTJ@X*MpUORmWT1Zs6#CbQRcG#@&)*SdJ4x5{%?2He-00Su77Xa z|GlgJzqq~kaoTHjCICYi;EaJMr6tDu`~7-m5!Alkqk6alOd&v4RMAZD-#>p$01b@C zEL?e)5Q-1)GmTN`9~3df2%l|gBZ+f{_RiKGvzjkls-x}+C*TNj*6NvNS{j0}Li_X` zoGUwGf7^U?b;@b{J+Sc4o1p}xFj*JpOlX?W6)Go7s-MxfbNNh+`d5%hVFK$(l8RTa z-DF%e7Y9>WLI`85lEw?wA`^0lH0Se+bIY@-fI;mZj5@~qSn8!oImLf{D2^!eXMBqH z8?uMR3bnFu4z))Vc@#mq^ImUPG$p+*$!NZpD$*Az1mx)%b#Wn>eG3O>XDm7y-g>w5 zKt;%4gM*gmoXAWu4aZV9=ear+Ps0jvECGYhZP2f^`xYKe`CM;%5$_bza12wOt;C%5 zuZhWj<1*s_R8G`8)HeN^$qOv%s)$5|Ck{%Z*nII=(Q-M_Kb;v`ObbUzFbTz1XJ74+ zg0^M=-g|b9bnQqPU8Jv7;|CTp&*?*fKM;Q7Ax07;x@v#>2xP$?VCsH3qg*^IXC2d_ zn%GC0zObwqI5b;-rhh+fYE&Su@AQ1>ei$mDYKY0{T-lYOH&G-$9^r{RF} z`rR5!cXgTVF4V4RW}ha_E;li_YC8GYadj{zVUl*bJUyI5gIdhzHg7x8gLAvTD>QGN z27^th$BoWNq7;z(2v}(pD+xS)$z(yD_ZppsUVfO*CnBTu!pS0jVkQ6k%UP?O(GTmR zq)C@e9Buu)8is^ zd1NtnVQ#Wsc@Tl+=k2j+9ame2W->~4UbUt95ZM(wFdhH159VyF99aRF5l%s*GSFo} z>OX01T;f%Tfwg)&etkAI`yQ`MOfSpX)+-}ERFRFp?OTIEOct?qH_^tSh&OxRd1U>q z@kNYKV0Im@jf+;=1A9DTl6$`_l+?!Nvqe9@xCWLhaia~9QbMck&)dj!HqK!4y@nk- zX#s=&)u}tEwcBlS)qWpnMRK^{%IhV;V+tD-D&NjmI_Dt&(1_8m&1Mip5x zoI0F{%+i3#L*=`~xe08oFTPP?P;L(KdosYPu4JH2+<{SGZkE?d6cSNJgx;pM^eTzt zfdg*9D*0gytYpW6PqQ5vm0k6`dt;*)-^(>;*Gk0`d@_6XEV2W}T|aEjtwz|n%je(G z{$>d$p>)Zbfziv$=~Ug85}g>>>CfO($3C(vEzm?`JRk0B!a>oI1WG=PcF6sgeiT9R zoi8&&E#VSs?Kd-19Owy32{}K07%XRqHH}>b(A1t;^@+kTH%2vm0>b0cBuXSfNkwCI zpT7sisXy1d;Lmfpyha~hlzc{*aM z@}zE6xb;v;4-{7fW~Zne$8cHWb0&4aTLRRis*h>Y@I|k+$zd z;fi)tei0P|SydO8fkF(8D;;&#d9*K%;EVW&Q zO!MAI_A?Q-y`065sa6sATKWEiGF_QZQJI`(@r>-zCWnn*v7W1I$1CT_hoQGTcsx$R zB##*=q6)TFipDG-2dMx>YMt0h_#L^HIOfb$FuQEzZN}C*ra#QTnmoQuwoD7g+UoII z=Qc0|=3|h*HCe3&w-}kUr9(ASXwwKrjQ^ONTWep&Fu_3p6h7)}EaPOSOR(+H^DRX{2C z^4T}Y1|wE}dNpy%10ycBH&qkjO6MQDv!NqoHvdpUEf_fQ=7^DLGN<^@@Cg}*j84?k zuS;R_&K5G4vs0*n{Uf#)1x&x-ilRJag*>tt5|K^3zPx-sm(%5KFdn{-D=hvZuCY}h zl{#>_)rE_Snl+yRUHaz-;EgEkZ?Kk%YY?0<6!$vzB?ufJ>$+(r+PhB$O~4pv>*!=R@)vfu zIXM3cIOR0mZvXbqr~5PBXmg8g%6qwSZK1(YEdg@J%^485Z%GnUqwq#ue8Fteir z#Qdw+M)!Bi)%4@UR!H?57Y1<sPz%k zj>i>UWWH!QSA#9&ip&wvGW-XE+Tn}+50pI_tJq2MQUmfhmI`NAGNIIw~F@Kyn(-qC`v(jTW3OrzU{6(uz2r|{I1UI_!KQjo`3zz z!*yxsowP%KNqLzHRj|Hu-Lpk|Jc(EsbIqm6@AdCG?1$$pH?cR@ALKh7`q3eDXo``t znMRI|ul|v&lcbxuV88H`A3``Y^$hKVDQNn4#Um2iEJ(9jCq@VF{DuRwf)EwK9AuIO z{d3FZtJO4<(3-Cq_Cq)=q@npbAgk;AzBv!-lM~k8;U;J-jC5iD19f}3m!kYl)PF#0 zKa9J1G#-Sr!9!OqT&=gSi<0SY$0#~~#5Bypw+*(HA8uOzKcsmPd%+xbA4CTU1mxY7 z+61V+dHWbWjyPCN;azj8Tx?QF8phWHG?gT?13m67(_C(I>K;^ocBE3!jO%T2*3#A1 zG=#?u>EGV}@`(L7RTfOY-OQPoM}9UpyfV<7f}vNsyBTv33^e`y_4Bm`UAJ!NPamb0 zjq&98DDYhcuQSQ!w%7li9;S+};OOBgxd2!tS+(-7o9ML_BEY8BbjKJZZ_IVZFRtop zXQ-3p;c^^jT#mrQe#K9GrFj^;8Cyb7+|;F?+H^3CKTQluCUeK2AKZ0p6^%bxEbP#J z;X(icS!5rlu4Cf=Qms_sM_}@8a?RNq7cO*)+1kQ07Yj_c-;K-}w4ld?5aJk$itQbH zmUz7>MQN}17YBAB1xKWk|JdX_eXa`fWvF?a^=V;&TkfoAsMc2eIFbaaRZ38-Q+poqu@eMaE;efzMaBz_ zwl+CTdlO%^mQ!7i;-(mtkYY|db|l;KI#Od=scBEoj@ja56GW>%{LR`Xv*1BTV+MKWi6=-&@@3RCnP+fq?L) z0M%r1aVXj$ zZ%rpAiPb4_)m0?tv3*=s;TF!nJmiRV=Dl|h@yxaM_`NWKfK;pQ1nW%^=M4{J(BUgI zrxIa>7j*l66I=Rr*$*B@%h3zLY)6WjAAPL2Z^xF@e~#`u!(fyQGDQ&i1wah|%oEc5 zk*<#1vxP68O#A5|EqT>102vp(KrRe!WUCySYQnt&D=zdLkoU4owWll7J;AnY09-eG zWe+oJ?hlb{We^6K{sck(PdJ>>J*+xxNojDJY1{D31eXEd(ry8}{_gLxqF`830~^-A z0Ilucx|5O_87p&s8P<&a#n`(jtXeauRi-RpIf&Ts)85r)hTT$!D#X&*c|b@RTU+*V z8ELH<pF6CEo%+fSBbcO9yDtROKoG<4GuhzA?t)VrM;E0#Kv znLaNS93iq7h3gI##`jdnD4=$6-twBsGWm&#tOYWX6Q7_?AcHbVH5*wFR! zN~lZh6%a*$+mkK2pjuY5g@cP!PsE=x0c$8d1qt8hq(wspQzga|7#ZyMNr5}GW8IW7 z4B!cY$SQu~#a3>xVy`9obN5LOU2~m^7`CU+&#u}aG)UlC>$ExEd)TH`!(g!@HdT$V z2B~OyDdr5*?Lg%%INlEYi_vFOwaRGLoF4mn`i4`)tyebFy_%c;>aBMn53|DTH}i#^ zTrCkv;Irv`Rl{<&e4ZrdU|CK>waX((TYv?CvomUG5|ap|NMc0E7LomKoa@Z?!*nfvgvl1ww7*kG=cI4=R|6c+JlcawO9I7XhXbW8Ex4o!^ z2Bv)N_-eAdxThv;t+Q8rU*E|jtk;Wq#pw#nIso==%gqSr$a0P;RBSXV!bemvQbg`) z^e$-tfW=^ajwhQO1+AyOMGSgq`9%k5GvL=$2iJ18MD;qllV(1Dyg6OKf6bi}Dp0ur z%w6$B)1Thue$&4BoxitlhFNi>^x5s^2NK$;8Qsk_6>Sh>)I@3=_V2iUwgDRsMh8ct zvp>uktxm$y4%nmN#$~un@_t*DY?uHN>G806bZ6VbsYPfguGO{pFjetCq>zba3YJrj z_uAWvw!!FDoU(&UdTecNKk~fs8`&yD-_YV2ZEd(7cNMXbHthxpKi7x2%azkaS@W{~ zwts6(-MiQ}lsU2LNKbXJjI5M^{rp|LqV&nkwv!|C7X?BpN$MAA`{;^jl+TKz3#h+vEjp zeJt|wKxxJspeJFEGv;3^hN-QZf2kNME~frxp@2O`5IG7Vg+i!;SWR^fk?iL3Jp{8t z3+1myVSkc&^&s!U)m?ocLIxrsETEily+P)A%Z>{qE0-UVEGb%|K}WPsG`;^xfm~G; zH3h}}+U>7Et>AYkeEPG`x(#a*1RnL6km17=A^7|2C#MC z*xn5X>56>$O#7uv(0@N7LT%Txq{DokIcC4#6O%J$-)$^8yx2*1ImZyk=8>lB>t;fp z;&grO>XLNv)Q@WlbW4qATOZ9&Ql&-vOfJ&}f}a@}!(Y5bDT$*uZ(ceu5BB)oFd&?X zqR8yY!!v=;v~t5`mwm%m8${Qi;ppt1mb0Z--hv#8SnMMqWv304A`$!b_knLsr2zyz z6iK|>d*p?Rt4Q0MWmH^zlCk6Gw@S*GHwr)%?H*G&S5$_F^8_`8KnvwrRL$5uhh4eZn0_)Fvu zP8!PwJ1(GrTw=muqHquwMF}g|THQr*ug9XTM;AWX^lxd&Q#-rZ`q*p~!?b4+> z2<<>@f6Y4*P*WT?hBNOguT>4zHaae~n zZ;XUKYhHaiV>1HreEoY)VT&6+%C&Il7Il)`Asab;E; zCOsdV=Vt5AfkCoSDGiq-vQLA+7p3pYke}GhZk znSiY9nAPlD!UqEKT5~mIh1p)5cLe>IIw3+%^0k=HPE0voc{c6f@RC<>4-rO1#1@%L z^`yRR%=4;8GF&`gSUjQC6;Ll#51I*}yKg#BKrP;MUW<8Sv97qhSoJAs zya7GjRwrOO7dD?pOpWm|T^!pXCj3B2%ewu>;yAs<5^Q-otFbZT=I<@%nO9H5%++L|7LdQQv=)!28K-(d5)WvuGL)99zBN7dZLbh9#3l%@_c*KqAiwFJ_I zIy{;zLKTE+ii7Icm0UF?^QfXl7AdJ|B|NVc$7k~s@UsWaG#ga%sM_(~c4L7p$O(T$ zj_ETcCES)b>p~1LJKHaiMiOX8Fq)f!jh|V313W&w7lPV;_+5ICU01#aLVI|+%vN|d z&`e2qq)^(r6&H~itKChuXWW2{6@3XhID|Z;DM=cYa*#3#6R1Du&{89R<1|=!7BiXm z;q4k%i@p7drD}v($n78>W3eQnC*oB# zED@tuvToF177rI2S+#iAL+LKixj0%4n_f8%<)PAtvYM6lQa40ce||uepPtPb>Edj$ z9A6Z%D+6uZMsCxbIynCemT^vDCD~M;l+1*riyK;j^^|H*{)xi{Ef}!x`@4C@>ZKCi z*UgXtR~;;^ty>qux{vPE`o|B|1`&;e+Z?G?L|>Jp!i|X57g0f40j<2IN5HIyExlsL z6`%wyNPhJqSQbYbG1UBcdr2kli$PZl)>zp#ispmWRf!3A-u}Y;>C{DFm3X%k1A9x} z`)wy~#q(){IDSvoG#LzW;V3W9Qq+`Vn*A>RVvIxV5GswQK?Mupuqn_nO&oA`Z6}1a zeR@vo>|55+?j+ z%|2q{aRKi4#ot3)IwrfRDBFJ`PC-DRAhhGuQ9S;oK20-Kj?M$(_rnE; zewwYRHCA5}%-1x{7YL0x9sW2HtsZ7QX_&L)Q_V=zomam33d@!abnUuiscBt;%^y1L z8j)Wi`j|i83MqEosXZ8p<$`7wo$hdaul3#WBQR+{auLOeKGP@(3JE{1jTiFvh7Lt| z{Icw*N1*n&Ben6XWST^Ty(<*q8kd!%S7DMO_@^Tyhi~JYCzpJ4Ks!>Bq@r5F_{M^W zGLPo6()Q?VMXDGFr5H32KG#3>@WoALv}JPT0PSNtW40f-(NmMgIVmhT#+#W)(z^Oi zLgwD=8OEH6p$@>~w7a(J`ME}?_^S(GF!0k{vaHM@*Nh?>X?|B%=2TO`*^?_PMUo26 zP~lNxTvD+mASH6OJmD;RFyrM}Y_`JON%Pkq?_%GA$ndydItxpT9_wefU&;E694<_B z81qiQlLW~>WY)?gg8zsL!ef`CVs}2{@Yq^niH$tCM|au)dKc4mIGNx5CO9HNQk$qh z{*AaBUEP`3-PLV4Or+*W&k#9;n$8I=z2(H#z#w2h$cl^9@cFDWr93H7Y6P-%^%G1R zUBb}f7gu~%Z!KYy{pByWuW4@$ulP=Gc>Z~JwMC{jgl0!zV`ovcxZSs|tQdBjUYoKE zpi1mIV`iNGqPoAYmxD>U=^9(<*!6lMKN|5BRu$X-iLz5tp~BeGq>N4w_wjIwM7IuN zur_;Wjp?>)|Mb&1_L0Uv&Z+2)vCkg^D zCPdftBi-}zfbG&csVa98$iA98W5T~$tm;rz-ptl5vDN{`clInXDY;OZe_*IkSurb7 zo#ma-xu$sjur?BClF4iKX>4pvK|w*OM0Us$>R)!nOctOyWg)<60CWTj>|^+kV{ylS z>?Ho==I@L8Oe_C!EY`;cTGjmXPdbwy_~TcC9K3GT0pq@os2{k3P2n8a#Dn02IQ(ct zCrHeggz@ye(n;w|!pI1Mxgafj+l&hzA#BW_5L}qQN%yUyfcFy}{Q6k7N<#&uJ?`h1 zn>hsS^OrEV7&}<}3#&A5au}%C0$^9GAYNg3Hp(`+J zzHbbr6%Qr7x7Hm+?K<{s#{NXT;lV_;q%UL@Wd~N2M882`1SjAf{_!>gi)KbxbH6DE)G9a`%fdQe(dR9C&ikolRs; z#nw7PD87)eiJkme*28)4+OJq)!+Ox!uP`~@@DBL37ZB|T{6lsg_}bxqd<^`2S?p@X zt0ZRqEg+OUaif;LMp}WqT3LdN@&E+1h+bD*I>Nb=$oM_{*AZkuk)Mw3$utNOxXon< zC^FF=oYV4eG3OJQq@_YD6A`pmI~W)ilypB(#)0OyJnvdSgPrZ&R`)R`Q3Qa zRsy;}N6U9kja!-VU!&g3>;($==?cvJYz`Z95A-9C{Kgn$?L ziIl7>oh_uuu3P1>xnwXbf7XdO=ZQfmpJN+U2gM3 zF(C>nGvDAYj+F2ey5Jem%^AFuBMkYVHm*_-C=e!;t9!1Xg1bJah?-Ot*CqV^-G~>W&+X&$e#ceS3($9=&Duo zD@etK@e@?YUo1u?n?+-PH!pa?j#HLdRP7W9bjCFoF}I0;V5M1|B`MWZaDvpRk01JU zUwj#{aqBr69Lwr0pAclzV%r5HY1v#LSNuzqi;ndGC85dH$89?UIN#<`alF|Wx}Ka( zvqvo#7iqO90l&zO?uOWT^{l$yWtUK@ygct_BFcm|=$wMNk<`pic34cFt|W@aMRhHA zgYApyvi#ntZLcnY7VKtpdk#%>8)CMRH9Fr)=sbN~rjFn6?jg02^p=-QU)Q8Q&$T0~ z4Kg@l!fd2$`v8`2fygxh3tjmnWfh01?dF4$IS@?BtaCoAP}tZy>paKl^5kI!~4qTrx z#B1`bsG|~juF@D1mcVMn2DUsMw52UmY2?kdb+0T${dcP3%?B;o0H2bgUx_q*_k1z@ zWxP?ymC@3(>4a2Oe;kbQci-IAQ(TPJ24&=&xL=@t}Fxb?^F?q!C}~U!$}{`W|s2X zvz9d}nlJYcfXnmEvXk3#{T%yH-BRhQ@qndKsS??Q5_htoTmU{&@Zi+ksY zuCM)agHcit#+!$Fs0)v{dW&3%XhYCh_yb{m*7MY%;2=9YAdv7tz5<FlEsGRV>-0NNWV#8d1_O47c_1;g zK3nmqY+;g8H`2~~jnOi6E%z-AEisW*-6O;|{WhuDZZgk)6&`@4TWFu}(#R2yxEwX@ zg=}NKvMmLXwUONU<6dGdL0KG#Fyiw)@m zYT;%Ug&WVdCNwJBqA(WXu$_V;W^vsx7g^Es8sc<>Hw?eD472&fb|xo^=M9`T29ZOU zgezAd5zF7jim9WPO_5`9dTJq+Pd)=lE-mA?sVAulvoyqO!dCSR_X&m;&lNA#nz@}@uwW2oFr zcc;uJfUD8CAV5i>xpT?oC4>m8;mJngbD<48XqKc)EzFs!_>3HJ*oa_??r04M99{(1 zIZ>to6-~+PbDU~Bj|l308Ok1PAIeT?+ivvTJ~CAy!>kX!|(!L z0I{S_&m$s&;1x5g3Is$S*QE}=diSb7M27r@Z1Ld2VZkZ*bs2we$lnQ z79xr?l3)nIYXm(--2BV4Ir3B0kOM=B4w|FSZFre%xKJ{9t%488LVwbOf0aD8V)r8yF z7fV17V@~<^En7~}7y#D;I-=BcpFpfidVG=w%jfaC%U@YMGh^bt6qZZ;5pR!ONz~<% zw3!eMZcA^^>h_rj^xm0qX{7WWUA+o{X8Z+OCz}rD_Ad6`lX2Girezv>Y*3LxUk-}e z$Q_)UH*#rD%A}tGI{r$Kax9j<@vhJ&$PlEUacm|2VFue$^2!25g4QAn`n%vU?fTo; zl{leKcci@^F1sN&{D{lYQDkSp^C83HY%IN-ct5FT(>- zb}(HqVHla*bT4{ za-*cmz8E(!!G)EQupr6E91w`4+#h+iZ;8VN4y4r2Ixp@R zvO=&lHaX$AHvxrH6T)(O0DB3MF$iwLpULl{j!4B%@F54n=VU#EL=*MQo9?ww1zl1R zXxW}$9U~=^(R(TW+lOv+Z&#C*ENP&BpJ^EhgDeb^RZ~C+T7+Dg%CBm64+$*-BB?pI zk>bK+3EA@ez4rK1t5IJ7WE?Rxk$@gVFGwms$|5DYfUlT57SOakT9qnK8w>(^MS5`+ zRGBg|MzA0OA7D_X6@O3aZ!Tp$SSu>E?C{3iom_nmx!)aB#l80CB^s?;#meiIN>-Cf7>m6OJ&ZMBEhY}>)< z-_K?HO*q_`(jXFVx?jr61gKEAHxxTgl|`?co<7VbD#rO|55&NPxk3EaJ&9DIfHTZt zd95d+N}zO!WRRjaMKI({<9snL1zehU1=qhGhM>#;RcxkcOlTkB1bwFw#-^qMF^3vX z|3Z8v8R|~9Uz<{eM?eWY31*Uhm#0i16M0lf52%G`R90e#D{KQ}tu2!cmi-^I&yA;M&n zzy!()f<6bqjWh)aSa^~uZ4kG-a-eb<*EjxT&Br}?)%pVYWV2*q=1j%^)6Y z14|PqS#aRoz?Ft4PqU8VZ5J6tWqQX9&&<8wuH&ftwUL|e75vX~^PAoTy}TiZd%6Z$ zV&XO-=Xi`&x+CqDU-vgn*QfAro=z6mj5Lb2JT$pH^!Cy^cn_ob(5ZV;T)NIsfq6+u zYSimbH$TWm6FIom6cchYpmnA|4z6kN<34dK3yNcwU6=BEi-4@S`C|nHQI+cX(o6+- zekQ5~#RX+*%IjhDx|JB<`v93C^*4p=1Mh2)+JvQ0x!#9R|9~leL#Xh=?O?>SvxlgM zVHj%BcgqlIT#I-tbAzQe?qvf3$I;qZq-vr$47X#(MDP@Fm9fy8ne{gWi+Pq$0*Tc; zX~uvpwE_j6k2WVMZjVwx1VLaxddJa)VYUj(e;L$-q+Ws4^$JT@VCq!)Yd|6Evb|P+ z3A{YF$oMCuVE)Qb;z*E(SJY40SLRH*iZgovEoA2UCbci*Qvwr9-{!GE%4lD?FRjclYnOR2g zgJ2=`6AY8EbQ^tZ$H`VLtAPOlCp2X8^C{SJO@@DAJR-Lbn( zNZXeN`D#;p4E8Gr#0n&?x4RAn2N4~)znFNcGv@sO{zSSzJlO6Dzf>G?Ha<>6rUs^5 zwNN{RGkIMJ;Iw9HDMVP3QGBroFj#LR`ny9LG;%K>kOVFBv!)X(WbyEup}F%CBXejI0%Exo=v6!7tHW%bo0y&L$j_)$J>$4IFg_fL z75?WD%jOy=+&6{k{jdtLJmV~Xt-t*q$cH;SBAYo?mtO5)hPwT*z7o=*4#yD1Lf-TS z=$7xg6uP3@k8qFXF`UO)qQ1rHYm;)ILK&Go98f$JY!}= z*mhWyWf++aKOY@`C@x|i(}f8PSRMs$7QNSiPM!D)$}{s&aWstw{_N^eN04WhELBvP zJkySNW?Wdh*CuuynWl zc%k?!ebx>5)3$plw*QQ5}iaKD;)ChKgAYq69`a7@h-Hac(&@v{96-SS2vApe+EVt4~ zEHc+3_#P9-HW~&^fVdfVgNl?LAlgk^8IOz@giz(@O*%V%} zXo;AD=AXwoSN{t`@pU3*>W3!Z+JN-nu7$=!Ml1DgRm8b!);rME-o}IkDYM3M{bk~U zLr*(%Id~ZgXzdzQz8z$pfwyBsc2MgsSXZXhGke#Z?XFE`8~MMW;sGw7ynk~6{tIku z9vOLBhoG|-<&j2;gslM(#_h+|QBQrxhI0`jLE1ad-_py^WSr?_h*~H zpfd-X$#8Fy#DS3$hz#h&`317x$9+gUQPvD`^?XEyr-g7{srjugeDy>Rp@1eLCH{UF zw}SD28{M2OAacvznpV|Fa!7`Q?PrC6k{Yb8ZFCt?Y%7!=J+;s-?^IZ9$9#A)jCHV% z3ELJnAO`TB9iJ~1o@IBOcmGjf;baVc>naQe92!X~NaLyG{`q?;TH|+k3rj^d7E(O= zC%86OL7;_kU3@b+4lAOL_q=jNXiq*Wfp}!(ir2yr;YFB-T&SuR@wC{BDKRwuAS%(Z z!O7%Bu^N(MM&=h#WAbmh5XQ8HwzDyxM;GzzHNr>*e}bCLFE%@SMv#s>=&rA=X zjEOiFWIVxSJ^3p_12N%Km?$7YuC%nYOsNEn|8%Ox6M|sr8L-quzUlTGk`cHZ|AB#v zb(rcP{)G~Mdbpj{IqKEdFE9imotCAKe;tf#z z(f@D3=W<2Vj!6|FJ1v68n(oqHdP@=gk^58X-#@$=javr{^R7qxfdiQASstR}#Qo0y zDd-3NZ#!IFAJ07W95cVG&J)=uXyu-9Xj<+dVU`obuL)&?_>YF@k_xxnR#zPR&)?E5 z99HrCyS=aKwzI|QY|QkX*V+()4#sY4xZ$l<%^@)llmZ_-c8qclg1u)^VcxXIF}Nq@ z1rvs-KV%d8Bedw`Zrzmh@UaAZF(!21@QlWHS7o}=*3}=zTMsV?%uwIDU$zV0ODp`W58GO<unEG?o%hIpg45?I_Kf2hTzX)<#k@n)6=i477)g5JgTnB0}V=Fo#`i&HX8$bL8f1 zqEQbuYS~+-?boR~6=9ZVYPh`^tBuwxWuyK~MQS^Q4#ezkkBL2hlV7q0 zYChha7Gq;|Q08axR{+Xhgff_ zb5q1 zJKxlvhlkeSe=`0FCg0g{P1wWyqNwiD<^94^h$lKcwaEg-JsRFxU)TW!Vi%?3+1fL% z_<1qI#G}ZS6zw3!yB+2<3Vs}KVPCKK7vZAs#cJjs`e^xU^t%4sH}KK12w zi0&>t6;6vL?{*i5Q6{B%wi07hlF z=9HKus5*}W&eGFHWp9}GdrI|3_3a=rdc?qeMf1r z+_#buzyk0_ZCi|2eIBMVm;5n*I!NFXllkkA>NDUd4^t_$RpSKC9j|(3rq6Wpb~{n> zyZ~vcGD%UVo5H&r*wbGCCCKMG-D{K&y;2W1X=imhhQ?Z3@mX&oaC4H?9oVC7yC$}$ z)CMEd9kH@6uiw5nKGI-Uwywj5-yo-*0=@5Cy++;;&2?Q5zq?>kLchh?B>3Tm) zQ8|~@)A;n5uu|Xz_Guc|i`?s_a(Pg-yl*1XZD(u2#0Zj(Th)OfYJ?$vz0r+0HnYMb zXtT_9WuJ-BQ{)SyUb?^0VzAcJ@0vvWbR;oj=Vls5m3g<6ISos&+$ zT|Xx2Bu>wy%7JzU-*?@@_g^f?HUt_h-f@8`&GRQsB{i4$6knS>4@Xg?KD$8ed6p_IFjAcJs_rc;?-q^HsF<#=2%UpSr*n&{?i7M61~>p?(Zy1H3P++ZU1WOZZ{=Vtu5 zpvNITO+riVkLA(194AB{&o^y=L%(=D-rm$xg|Be-`Toi_Me|T_ozL}#9ZJ|caE#mt zCbG-=IKKOyE|?d0D9Ruooj?swg5}F~r(GoS$P3;X4QKPl>AaB9+72u54)|r&vm5Cn zb>M-7bh3ZJ@RPIS%Zlfu|H9)2nsR)t^TIWxZ|82hx~shlipge#G@bIq8HT2_SrcX> zT4^|z^G*k2M>=ET|I^%C2gUhy>w-iG5Hvs_L4&)yTW}5T1b6qwf(Hoh?(Pna1$TE3 z*0^g!H%#aE%{||#Q}@iRxivL2{YQ6K?RUSr_IlUe&sxv(QD_ZRJ_}J1*80>zJ7sHe zP)nZWm1EDOh>n{dfNY%%NzjDBjeQjaoTN8j!_9uzsVpj1Keu;ji9Bp=#?#KxVMB-8 z+4qjJf<@Nl$2%x}{TStCm<5e;Kgq>?XGX+XZbux+3!?j0UCskY0%SCKH_8ZgxTrPs zXSimsa)32Wd$P`>a6GD?P1Sz*kMyRR3c8s6v;^IjXw1U}T~3)IKOw20Gc8|hl6tv1 z-JXRGx!$cXo$%PE8uD@qO=SyfA6itVr^Ec=XL3{*2cQxBFhl z`sh8SDs#%bWpeX4-hsum>+i8~b7EYm58aV=lNmHdil>8pXtlSO%3^Dy#zf7aiE zjq;G$B_)ubV!N*tUomSyVnc?}Qp{BA@s87|?#lEgFaszIBmD6iE-VPU{{aIqJhenp z36@p{v{7q4i+)c@eNE{4WxXI);o-7vlGkT5l^|@K=d%-_fM#1jdaIz!A~slPZ!Xf2 zZ@tnx8laPfm#(cK26NKXFem*IF6`;*rtIWj@vX!pu{g$yq*~NJe%au#b9NA2*f~#3{u<)oDvnc^a7cn$PiM_6*x|J`) zHI7)bXomGxXLQ2;Y6a{5+Jv}K$BleiUmsp?I=IAwXx}VCglo9J0HD0gYV22K>*sIh7kr@f(rKnPuaEJ4zt~*)j8=a z`h@a)qi7Vk?=B-EjanY+80>W0y(BQxolryCoJ}+2Wfz)C7pCsHh1o{lPl$8=FR4ub z(Am9`t1Vh|l3cFcMJ^{*N59}UVXBKi);ywDJ%jtregYNgg2~_GUL&7}(M1h_nz-y% ziL4jkM^ei$_#<-DjgO2Lz~(}1|}&!gGax(%x0HrcxE_AV^;+k|gmb{hpzl zs&>!*oeSkVwpd1a5~P)cQP0#hKwlXZl`IYnqO#bEgY0{6k&2qmvvAK5_GR-x+zzdG z_0`D@6%yAwc?>)aQ1AyM;fpq=NSb8afs+i#-lO%oNnJzs>pnU8b9qJbxxa6rd_)vb zV2~Aqnd2^sPLx}h9*r^wFr}coc#!pDq=bdu_SKTxbpF?g^k16zG= z$@mL<2bVyV@{6|I5wB8X0Pib#+-skP$5WZ4rf;E1{KeZthnxgar@vMPpPsOTXt8?g`p%gm)v9;c?2gw^sDEZ88P%iPSjHM$N@g ztRSxfj1TG$jEWji6~Z9v;8M3Vw^_zrY9*E8g6(b@blY^x5B-R_BSE)oj0mev& z=x7SJQ#&yP>4&kd+tf}>lQsLX^k@;rcuu>G4X(&sY`rcfzBxSpN~)!5&MF^c{p=Dx z6c4N?m_zubLXG*z>OPTxj|2UAdx)&J)#xcl+x(19O@#OuI7Kc{fCvn0&K!k~_jX+o z%V`|eN!ROZUDui}+NG~a#1A8^g%sQt4L{)N?QhanUcUIg$H3B+ueIBsZado>j%jCp z-lth-m)1{yS)(sJ1?3%SP?@(J*I4sX(9{tU03hFDMfaZINp5t(Id*HR6m}5}sj}u>aVXN0r{rkt(OZUu~ZN`Wt_}S0zfUJP=NO zGfv8!g6_jWIrMKpKndF;ERR7g8}^H(&uxaMJd3jWzDGg?Pi z!~KoS;H&NANoTxj-Yu>BW8;3cmk7NySJ+xTJC;&D-*&XFI9Yhrc%5|}b6E$ksyPMu z-f*Md>r4(EDH0dFl||L0noE_gT4b&l@8^k#0Yg?-q!SSYg4Ep zNyG!~@{=Ig&-6Qo^FG%AI{T9pjwQc|c~Vz;44e5hj#038(b(tN^7t5}-`Lvs>8(%q zUV%Y`Shh+>*$8=->ff%sH$A#OZ{g(P zs>qnUw>;~p?ASa3_b_>k=F`H#Wz7~$ed7#Au!ah}kwAI>i2(ax+Rr#EKb{duhQbO6 zpkX`N|4Hwbob!z_04E8)fuGR=G&Q1n<8W;*sNeYT>*4Nd^?skJDp=7^Qm@u$Q&7E~ z^H7)!0f+=M2@eLdyfFpPUEMnY3=b+TUvLo8lGW=#(ka`)7yLL6kLq8+hoxn4VgYZuD z3H($x(nAgT;vEZFLXcpNwqQeshBG0r$y$58I$xcdKPK-8mua_~f}i8|8!gm+da|v4 z!7gkSpD#$tr9_%fy;Qv75D2}maMjZU`Mh(rg$$V;YP!#m{xCN(pIgc==IV9%?rSmo zc1F;7mKHX1XFXbY&H72M!~nNMwY_;z@>?7Mq1&F!L*^VNyiRd^ViX=_<3ir*2J|B=!Y?Fn}zxiOs8v9Agn|_n=ewWFnKp`!p@B(VL`5mHn4Xt=9 z_r+zcbEVU~Os~IEZ`BU_6nfw`Rk+R%m7ILC8P=92cAZiHM#c7#-H7G*?k32nJDBB0{e#Bju> zKo7Re_2{m!#ZPubD?(TjDdX!vFm6jqfAc*-cw%c%7BU|O-bu;u+b{hKnL#0FtD3)`6ODv~@ z7vrCl?8=0urrJbf9-IElRVHM*_gVVuF9v?=6?E3cA^Jn#p27r5EQJlrD}Qnxg^?FQ*tqFqNlb1sH$3%naVi6=5M*??Y9nX+#H zJ{Ix=RI-Q#n8+!o)(yvb+O8FmI z=WxGgSm%t`q}+_{vxiOK;$#ZgLEhqay1VhpRfUq~iOFlPpR(>mO+}1ctZYC2_j%@a zyGH5)d_L?|Uq_8k9Qf>>2E>nflya{R4>LkAq=z&66>d{&`YDZ?*oDXp_6R*)?X(p* z;_a>M`*L&NsG-gM9h95>3AmjyOcL7@M45OY7UD;hlBn(saNQpr5XHs6c|xnnwG`QC z(^Ks}p@hK1=jTBxJS_uv18Zemifn3~6v+Z@x9z{?>YSKOUI;OV-q(kl2)}m?+I`U> zd^Y%#(!zZdFOFmwZIJ;LvsiiZZQOe3mgXE=3u?1Wd`VFXTH>*o-YB1(AvRd!nMGb- zXY*@`NZq5#7rWP!r&04&6;=B$Ip{0NvB|qhLrVGfK@5s-VWk;99YU7BSA}xgh>-Z{ zUjF!RWJQ5Ov~4UM?Mew+%+?9mWwY1)^cGXX8xSlT&=7N2dR;txl>+BfL1zvhuGW_F z%R5iZ?H4E<9*aid@30o2m&{}gk3->?S%4!RsnDJ@y_+lQl&g9z`B8m46}+G--Cg5cS;7##Jc{=?HPRZ;;7_Okc)_B?1Ko z(U1DLeaXLFOTwq-(%)w&7Yqpnf0%a#vs}NmJkmPgcIMmzD5D{y0b{zvXKd5 z3r0$p^GR0of*0pQv&-ZPbXBPE<;53Hf9`X@w1qb!10{*OUOY&|fueP^d^~OA8UvSn z=x8-&rUollqq8f?0@ep$Ks3t&9PmcRV zl~53a-OHP3Ce_=O-$l>Fu2)4r?PK;ul^JWr1Rx=y8q+ipx3G&wt%e=7QS+riNiJ6J z&#!U60duo8sH;}YUR#6?NKVVEZFlE`4D4mI4E>=xL+b8ddp_tSS$%p;#V{-!*6&{+uw9no2a zpzZwdK55s>2@paqKx1=# z<(C(N*P+^)P|H0a^L?Upu>yGlGT##*b;^N7+Gp^La;5?Nrl@5_3^Ts=jnPH*4|Dm$R^)d-L0btRVbRG{5!$? zr_ZA*zAszeK$w3?^)o(KtTolPBY9J?Su;?E0Pee}=cU2E_uiax#C2ce2Rbv;h{ zLCSifUoIDYB;3(=^7=xC7a95{A@>H&XxE*`CF3BP*?3wx+s3S7u3@z$S7D}|-a$9T z)S?bkt)H186}qH#wX^y415$qk-S=9qchH0Hj$JFW!wNLj?@kt=1RW%NxOeK&vw8H2 zVB;-duMRI?niKZ#J!$<7KV|ZR%iB3c_Lo}TsUmv2>j&Rs)pPN;cKf9WXmZDLgvYTT z3ry?j$HkS>E=eU{*Jbn}Fv;@qAdVOa(P6tcVY9q?AVPLyY{$QXf()w`p@7e-*wl^i z!L{xt2D-p4qoLQ-(K@GGcTJs&_U6vTBCj%r*1i0q8QBS2X@)|sUnsCk_gT)`3#-L_$-uc^L~ zk+$-CUOQFvW&)cFbiwwMy&B&|0h3?mbAOa%V!^v+ZjCC{wFf(?XbQEQO(vI3;0I7; zv;u0|^G3*ORfa6}>89k|&T72SZd4Z6kVzuSQiwnZ*lj|pVD>#8n_TEV!iqAPxSE!y zcwxKp)rJi5duR8lH2U7oYd^5dZwL2vG#);}T1q%o0Re6baw)qln5ISk`5%%lc_MnLy;+a`p&PQ%+CzbS5TtmVTkfomrCw4h3t*A>HK3j6ZcqrQ^;G&%N}PqwnsBe76zKKPJnQ<}X))SdAx_t8oL z%(z{AT^$3)jeqki)fOMu2DbG2!GeY8(bhtE&QC${IQ>$`+_s7S6cnjCK}E;qqn1zJ zh^ES;MD_c-pb{Rjw(9>Jd7`?pX$exua`##dA~GYb3aN^mEFf&o%C^1Bz=bWrR~p1K1Vm_tY8-le#SSi5i6HIrCRMl$s8vhcX+ z@41_ei~^?wZP$TBR0A*{-g|C>PCKgPA2jJzCUcx>ac;i76)}QQlq=qh>2$1TD=*is z$!ulw)T)DE?jYKz6tiB-swh|EdR{W``?%_m7WWyfOCEYo#nl3nv`{ZS8yNYqpX^kn4GLuO3rA2Z`GyLD1H8l!8jQ#ZCBa0MZ*TZrh$uwsqz#q(_;TS?WX2AF>0 z|D=dRtq{X=B9bBAyAAJss|}jLWaoKMVsX4oTE+^w7xbF>P24dv*AcXro@Nl<6wONX zTbzf>r2~u>AT&RBaoG=)#TTiFUO441@vo=>T>?gfsH!?QSE^Fm9NGO{+w;W$qjiew z;0vDnK~K~dHXNL{e^IW=?mkQy)Wqu?9CdzQ?1mCc@Ogj388WhY1{#7B&bnuYm;v9G z|AUA9Q_phOT?^e#=3De7C?;3awdH}X7IV>sqSFqF$)Z85w z%j16ObUG)eL|}+$34JNZVtY0lRw3~&P)`n)3~rd>{YDJN20k_S+v*>@EtLvB3GQFm z+rKvX*MB#bRmrXXOEda^D#4cYQn-g8WR2|w~(8|V?;iVcQcOp0H0#4;~D zY;gcFFs2^duL}9DdK`U4IzY7Cl5CjCJ?832diCcTMWfn2TASwdv%VPZ`LET zcL)dUgzN;zG+UANv8KWHS(tw;sCS)$A2Wdnax2)e4EY8K;@=?lo8BPP%KUD_>xMBP zyuvbOY~drS!X2a4{*5q|7)f&P$5a<$&hziO{&~~Rc|20RlUCZI9E>H-O36I>nOZm} zhPmTAVR9KT>KT{}g+)AC0?(AxkM4#@bdR=ZvzK+6k0y;7*Y*OtsfEU?^!T6Ng(G#6+m8JQW}}i~nZ;vrLV2-88^% z8#JtB6oOix;prixvEz=`s2Shg?BF~TFMBkAx(X~8)PboBBfi(f&YI+?ZLH%Gt}BZx zPF7q`5uBa;DPE4I7TpAc(;||zZ%)<+>%ymuI$AG}w+$Du&<*&QM>61ZJlwa0e2wo4 zYfb=9cji(&zka2+nWK2bU^$vfyQ9MW`P6pj;Fnm)TE;PcBXcf6K1BHB@?qvPZURrq zV3*voP}$2`1ce0A1~h|vrUCzHAH`P}+mUBZJTM7u?jN7MqOgNZ{vz-f9@FSRuRKM1 zzFcYYP}6f}cZR78m$m{f#bVtPhGG27|KbHWcmvwOkh$8PTe+p$K|W$CELRZtWHLa) z?p3K+(aNT*9+#+B<+9k zzA|Jy{b0zRw1OP`TZ*nTBy91a(2G%!j#iGp(JRgtToMY2svB1Wezq;-Ft=f4 z^&XoCw`j?UCuv8~bVMj2_Eu7VGHwrY{E-;niONU#MlhNTTad%SQ3D~Z@NJ9>Q!evqH{d(LmA4`o zkKN{1BrkF`zP6%S(328nUL-4}Bmto|(6ukxBggo~=dL^DkcQaz!MFpdbuO>(irYKd z+|_gPYk!W;*EtY(Fm#IQZTQg1l(BO|tM_1OB5C}nwUy_Kg9fUL&|Ev|Z&WR6|Z{d^A0K0rIRpXTMdKOUc2J+}Yu2(LYCGhXWKP3Z-Lrx%gZUxi3(rIE@vz zwwZweZ4g^FThpE>ra`6^{4DK-Tvr0Z21<@Xme8m^x{Uo3eSxKv`7GWcCxdpzBx_Bt zHoQ6b-3LyAldmXRmu*I$e?aus#^;s;lBxJUSK2t1Tt~->3|eq-LHe7iD*SK79g7)@r7aJHGvAoLMkx}2 z#jqni2WtLyVq(!0muqi)ygUIdpFZkpw(S=8rJ4VPoGvf>_Toa5hHeQ6rUqB_G92AZ zYwlCtl-^#~-?%Pi+pn2<-y*SH?jJ%!ZI})PEHm1!HqQ3EuxJk`{xcGGz0oI{_U=@c zItiO9TW6Q?t^YAZC>wVa#(hK2<>b#6tpKZ58IjZpe2mifYMfgsu5NZWI9Cu))_{Nd z#dni;s3iIkNk%s(4GH*W z-wa+Wd0laxe;_%Fc}*7p_W$p|w&N?>i1k*J9k2_-{qOG1jSla2dKpqqg$v@g{nVf; zSW)jxTv}N^G?R@XP%G2TbG5=h3P%rNY|Z=5aeA{kugcVV0X-~XRyMF*fZsa+=L}U= z{q~kFj?B(H4oxhSXGn!qAp>~1YiYAvxf{o+np9|SPew^+AR#nVima;9-jb{{4rtJztXm19wXiSJxb))ui()ZGl9NvNh$?OnXz~BNbHm=T#N_1Qxdew=j0#R zTy!7ZaOU`cMFQ>gEqkT4rF-lyITQY@uioW{2z!D%>~$XslFTi>+WF`Te}kN;pR8I1 zVbFHrugC|^9l|0Q+aTezJLjLDLv1-I+7U?-{vr;gY!?nd0yRP1JreSp5XhrM6zy5H z1Mb0FB5#Ibxtzy<#y>sWD$1+&=g6gLZ}vVqj;;p>FtSaUErha^VRAiKINO?k#o@w! zS=7Xe+YKK>uxruL)M4?Q9yMP+4Z~~4r7l*gTycMrlicx-A1aj{b50?+>tXzw}tPYBOf^QI5sqV{fr$H710%|v)1Jv$Y~rN zt{%$o2fs$-s%e1^Co3EEk_QqN)k=M1k~UISwRV~BC6GiBrP-Jmh;538Nu{!C7ZVb% z0Y`jeVYH>Et?25v7>;8SX99PPWYPP~J5E(H51qVxG_Ar5)Suc$REBCZJu6c{LwTxk zw68K9pqqTNq~tInRo|z@Uf`iK5+zN|MOMqUg^iupPSa_vnO;st>HF^bPe7g`Mi_nU z9h+Fs_X7~a>8)dhe?&f2XB;IsyNx3S%1$8za$oyoLhqkqB10>Z6jzYtHkXc3}*g zva7^j%)$Y--fI}M>L$;ey4l~Yp3W>m)5@3}gZ`t9**+ZwrW|R+xVFQ&r<2hbZvr-b zEah6;na%chnHCMaV4}iM>@Q|k0DAyw?g9+m#}kJY(4i(I_d&dmQrl-!ZgV>Uw+6pc z($F@DBy8YHJOC^w!DALv0ZfFgjRvHA@IHh_@+Kj~(Ut4_k``%c;fUXl(~fJU8Q8E$ zUJ>ZA5k@s|w@Jy+b#KaBo-k2mGq)*bvHdQ1mPcB&o0?)gsnAKzW`FJs;hu2joPd69 zQ%4aU9qEp#jIu9ePk0Mgq;PI&3|uJqBIhj$u#$B)*e`9T&6N{2{_LqPXL8fq_l{_w zuhRxk-KH50Tj0GgO=X4p>%h`S!5`R%5mLAB#Xn#g@Jz3ctTF7SlTEt5V_b8;wH&Cw z$WHp@G)p05luNtg&bV}+v3M;+CpxC)8e=jbF}MaJx&m#)d*?1f;y*k|=*$pdg=dVG zCuLAbRHYqH_*MU&D``8wc|tj+d|d))a2UYE|AW2<>~f@~N3$%=C8xXs)VCIyqs88{fheQY7&5CAoX53SqnZi zDB!6zsDg`SP(7+?T;K)zl?hp8@lRCf!OF3 zCAfgYeFP3}x6qS9nYtAW1tL@(+wZH=6@byvU1XY1l3SV7K^a{TI(VvE{&@ z*3->BOdDgE_wPTmwWKq?f)mCAdaYj2VJg0W8|)ZD$q$zlo8Nz+CO1`+-%O@;t|H{l z9%vxs9MGFn_GgGhe&lHo*i}o@AQgjEn8XVRJ#5;eL+hLtfP8AOY;dITkr^5I#=p@& z&FjF!?>X(fbR;y2Ri~H-70VF3`2WE7o;ZUuz1(p|A`Ap4OE1w=ZHUs5ge@$t5Gm6K z4PRrtuKl4TQ(hpWjr43*V2_3ATwvOa%WYMX!IV4wcRCC+u$J27(fYH+!SM2DnW=A> za7*vplG1J|jcT~b#q`s3W@_AHSzmDg$)1PQ*z*on=-Vif^H<8>s71fV;6**Prj=cK zDBWBNPWKb^+ZW$qP6Y;8EiXsw@Z@avaqK&_`8M7{^0_RVqpQGWU5zo|SY(P(ZVva8 zd-O&L8^MQc%GCzfkZb^z2DM2)jRqGwJs-2(@0%T$MJt+XvPEBKQOp)^>73`M_p)_a zrYsC??%Qt?)|Q>W==0l6)}k5%Q`;0)T)iu+HE-X@32X*OKwU(twgm6nFp$;b&r#g( zCWsD9$iK(a${KuBD?=YqcgazWE1Dx@Y1TGdS*a%Z?{Gm5IipG)n8i$8r?Q&MRV#>6 z!l_uS+k?(FxzIUdD2O+Gd32EAq{85&DS%{tYh2}_j7ULEqxmk_LM@IP=r78vfAzlBc{*ljY`VPVLe zqVzH&UaB-Bd%;EapGubSy&Yb$j3MvO02;PQ1f%1yGq#wdt{u9u^ciT@wKKYgR6F& zN~^P5bZQyrh%#vgF?q}~ww>%?LQ|nd|wDQb^5~o74Pj|AE5+eka1b+CueVXfZ^TCJ*!{;0}L$w zR;cR_E1P;^It+fRs1m3|+Syv@Hj9VlZR@+U$pR~x%B_m~{I=ZfdZn2=#gpwde?JCu69fLK{!8e_4_xooa zm#NvE8>4$O6YhiJ_TwCz$zgHLpPqc27KYEw(5+m2*V7e4A0PPHzhBK%BDs48^a=Up z$$>*Rd;oothyK--I((&SgsUvOf`q-^c6p`Ti?Xp|!!PHM{l4LB z#gtgpc9UC;1d%j0@(UtP{jw2R(p-j>DVfSpMH`&ubgZH}F;_$6M*DI7fe6VRsYnbr zm`e>A1gHq(n=}!VyM;a$aU^GLJ}uuEZar^QK6P9TJ8JdKaY)wJ-A^K_tzRP)M>T>s z4eY!yQ>Aj7;t_F-gS$x)1LnGWMa;-z*EOGDNB&+qr=fj`kVkXgx3MXMEiW2qWxJ~m z?}Db3emzN`PziXiTwP*meMj}8U&J)2D0DU7ps+_ZnJAS3f!K3riB3`2YP#nwk+>XS zF<`sjx3*j(x;pwgiP??cMQ!K5Si1UPq{b)5S6o>w%xkX>(Ou0r(|wgW{~_T-2g+?j{NX`F-|0D3EFQW0elU|1X^?v1xVbelQmcAC z^|7I<*C$PdOs;hVPbODbwmxYt1ehI8?lNIu|1@g7o`y4nmTNwG{c0cpIaM5|IA^Me|cK1yBlhh+>XTH~dY6NTdj-N~8hn=7^2IUCU zJL*^!N+wgStk;ancmbfz<|BH%=;y1dZtmF;d{GXH3FEwtE;YM@gXDTb8aY=pVFqfX{RS+E0XZlD`VoV)dY>)a zFg08_789Fii(b!o_uYC!wEO!oS$0ONFh(jKNsUeT6TT>KTB$hj_*}EQZs~G|Iis{d z`+af*s*~Dqj}M!^zW2rBJXz4luMVBbBpJQHRe&0l`SV)cVoLZ!$#f5jvsSB~xHI{nQVSuc$Z1d$)JvFJEP&^KiA~9*r%;ja4Yr>~xSn9h#Y~ zbGrla&5G0E)X7|F0Gph?LHecP*1=^wOA%pQUgf{A*8g?c?urW`YL5G&w?Z&WS!CI) zhf2rYmzT7}F(#P@x*Ns^DULIwkBfn%mRiJ2kt>ZmzjjP}ppYVl2pwKS$cg==C8+__V$ePn zsVzy-vo6uN_l&UA*!FQW=qiCwM_~@wRdRULEk2!1p~}tA|D~>04&!aD`Jzas?x>MQ z<&uE_@*dKrA6B&*!tKefsko8Mn&^rrjmth~#Y(bqyMExNpKIRNl@gzpuFNlp0b1$K zrJ(P|z5VjjOjT0Y0a--2XPRCmaZ9f0$|ywZk~hFTqa^odT}`$g0Y8pbAy)F9*_5mG zI)>DDA{cM4=ikshySLA6ZFT!VO#Z_#G+@qqQQ{z>P$e4G*Iwi$^iI;vk!h5Ruk3vk zF~_ep-<--&Ri(ykcI&02t@3;_;7P>A4DM%{c(i^H@J@%f(OL`&WE`pd+u=-9F1Gz z8$0^0iEk-iHa}dndsyF#7o=HqU2Z)>f19nWwhB0q^_ywe#An{UVuDfw;lqVP zF+qiilE)5u$5SHc;o7UtyzQ2c`2*-IUL5FG?zIUCVf0-uZk#&SJD5D~8xCD%==!EB z$ygGMJbH|^D%g9U$BW*uJq35n1d>X$go^nH%;7;IE0!9k=E+$XvY^UM^HBRTBNIh4YO-=(tfZ^Y?56UlED%1O4=TFz%r~Zv+0c#fVmMD=LS}UG%M|Xb zcX&!f4Z?|99LFBj#Q6H%?d+^$EWW0Oq7@xbr08n%&u8U2aRd?K5r%=<7~zn=kbf*KIsk}5#*A%HFyX&oz&PI4d9l@f{iJVgsRO00@akQ2q^#8bZB(o2V!rRX@bmd$qSkMN z%l1vj<+-J;whPT>ClCG6mf4wAuqvq<_k-Y^d(U<@lllh4_VfMT+^gJ3LTu&KnMzYw z367By?eR4MEz`NdmC{ylcW0j0Y7Da8NYt0&^?j=(tDDFwSgy(i^+3>QAtcCX zR=$gtRq*_r@!MO4@YY+SBv)TXn8Em`gilsHO=8*Nm+m_8E#~Mm`8eGSl!q>`psW8< zx_>P!uuM)xHQ3kp3!f`$<=sUx>;8G>it``Z(VBUkWR#m&RuZ@ibV{T5a1i;p zduW{RV|7U5IluS9ig7E< zoJ|}49wi=h%r=30Fpp)1hkI7&o5;<_vBhu9q34=B+0KQ{p6Pb)bfKT&q~zdQ%t;H| zLSgRvySe?K4cu>`bL$M6ze*2bNU$%=zd{e>e}#*M|H>W14*EY@VqhxCa9{pvAOF+x zuZ>{)g9#}9N6UZe{!hz)>i*A;|K0sxE≺vBp&Kq6bDQuN%7QdS*u8*x;X$xgIsL zj$hzTD4O0iH6w&_I@ZNY_Zg|RarrUq2)uy_#hv%f5v8uk&{XBx2%MHQfd)ZwL8$fF z5r|G2!=_Gr=3RFkl5$TT=lvs3(7tOfR5#o<^o@j<;&*08X^u?o%{x{X1?NWblf_xO zPu^_HP=>XLHc<5G`ihD%oyL+^^P#{UbX=Ok4E6{gKXO=8sv+KDt{o7u_UH^GojoDo?7@3B;!NAn);m1M}CRLMHPbm!ZQuLi~ol z7FQto^V_?YrYt#lDlQvF^%YINzJbL-KaZZPiv$LtPApfSpDKL5Y9lYcac5}v#=r?K>5z_xy^~^m~X(h7y<0XQoG^}^j3pXmtX3x~VSjj4*L+2h~ z2f8l>SZC`kUml{D_8HaY_4h&hi)4?9+*|KHaS=pVwzRuXrwk>X(FW@t&hUFLW!P$Q zoeDB8@s8;n5!_mi>>1Nh-l1L2QDdV;uA*yskA&~=+=f{v+l(hQq_x-k3w%fDCWfIq3oj{_9XK-2TQSr##ER43{Q}{N{y-Vlbp>#V!)i0(QTnhWF z1$~ARqO|r)-Pmpu*3VaW3YNAynLoQGj)cBErei;q9B!U(GVg=J+t*BS>~>Y#)@HX7b`IlCiE2Y-jOU9{xn5y=xxniVhWo0un zH!95&-+X2`clsHky$;j4@Fy#s>`CK<0@+t;9Kp_$;TtLZ0HsB>O;c!;4g@*i=aq&5e#q0`ff92?Fg3=1!4eDB_&#S$YPD6 zy;YkWF+l2cy#SCJhh@!0uDK$&+Tx||#V3NnEASZpoqm|E88Dl!xpPQ@81QG2aY@Ze z<>2hx>y$+`vb_wC(`|XxTIHkO{^_b9&sW$cTRpg9ZIPR-?$5d1*%G{SMCI&u>rp?s z{1gBk`T3d{Z&khl$~HPCEa^tMGqud}Es2i&2C4L7pHB<)(`81hGCRn=wf$t$6`C&Q zXA{g{lbCG}d|8*U603wE6=WBGm-TWIUP^t;!d4b z8(3K#(E^Y*%O)^1>Tp{L;P&)f@s3wLL%Axr-ko~~U?Y`Yg)|rmmuW|(drh=$B?9UZ zUI8agVdiKDOM)$w3<#z_+i%vPZf}>eNN#tt z8{VE|C@qKE(wi9za3-mND9NF|KIwTh zLKGy$Jq!CG(20e-iT?_LQ=PU>`7sj_|3ht%F&g`~0voBt>lP4?-{g3c6( z?aNRs5L#NwlS+Ptr*_?MI+yBP9Y_GX9TS$!6x+PeOaliXvwxoqEG?zpVe?lqF7a4L zmT%%`ujVXfRxNI?2)xrv$9sSrCBa8H@00G{CpvXwh zU>>B9XBF2sRe!#*Uo^e);1{B1J4r7#|s0H~emj1%8&QaXsy zOL=?Cnx!XbIdPWOXhr*Lvx%(`;#>8v5!~24QXvmEJX+&G4is(QqZBbLSB!vGDt){g zX^Fawo5ho=KEtk5I4(u&@ZKt~)XvD&A)7JF zx>H}!t$nBGFi>ada|1xW9;ZrK1fzip^c78D`%Y?cp|kQ)V)&lX;BtNI^?C6=x(%g$ zj+V;*#Vom8?2SNB!(~i=c7`1O^K``q$!3#f8M_uartL~8c79P?cD*aU3`M6RgSI29 z?a~Z9RLs|A&)nXatiE2C$7kVTcRfJ?`)Kr8T=z2H_h zb-3Eh^oa;m9!p1%=0YTBKUsK8rVDk9Nk4Eq>BS{Kutqm+!K}A1Sp+f4w0@<>q|ugJ zGw?n|c)Ve_rbIi#+1@Kr9m2+&{6jQ3xgM)#SlT=?wiA}CHJ!~4@Dq|90+7xCRLZewp2d|OG@qLbZITViQzQ?o5s`c|2Az*o)xa*T zH+T}j7xvGzrdn$)<<`@{Jhluvwp5o!5{|{yc`a&E(q&V&jd|QRZ%N7`8U?*E@Xi2r_yb